32 lines
860 B
Python
32 lines
860 B
Python
from typing import Optional
|
|
|
|
from nacl.public import PublicKey, SealedBox
|
|
|
|
from ptvp35 import *
|
|
from v6d1tokens.config import myroot
|
|
|
|
__all__ = ('TDB',)
|
|
|
|
_tdbfile = myroot / 'tokens.db'
|
|
|
|
|
|
class TDB:
|
|
def __init__(self):
|
|
self.db = Db(_tdbfile, kvfactory=KVJson())
|
|
|
|
def _get(self, token_id: str) -> Optional[str]:
|
|
return self.db.get(token_id, None)
|
|
|
|
async def get_encrypted(self, requester: PublicKey, token_id: str) -> bytes:
|
|
token = self._get(token_id)
|
|
if token is None:
|
|
raise KeyError
|
|
return SealedBox(requester).encrypt(token.encode())
|
|
|
|
async def _reg(self, token_id: str, token: str) -> None:
|
|
await self.db.set(token_id, token)
|
|
|
|
async def reg(self, token_id: str, token: str) -> None:
|
|
assert type(token_id) == type(token) == str
|
|
await self._reg(token_id, token)
|