This repository has been archived on 2024-06-29. You can view files and clone it, but cannot push or open issues or pull requests.
v6d1tokens/v6d1tokens/tdb.py
2022-12-28 07:35:18 +00:00

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)