Onionr/static-data/official-plugins/wot/wot/loadfromblocks.py

39 lines
1.2 KiB
Python
Raw Normal View History

2022-08-31 05:30:28 +00:00
from typing import Generator
import traceback
from nacl.signing import VerifyKey
import nacl.exceptions
from logger import log as logging
2022-08-31 05:30:28 +00:00
import blockdb
2022-09-26 20:06:05 +00:00
from wot.identity import Identity, identities
2022-09-17 05:02:49 +00:00
from wot.exceptions import IdentitySerializationError
from wot.getbykey import get_identity_by_key
2022-09-26 20:06:05 +00:00
from wot.identityprocessing import processtrustsignature
2022-11-22 05:57:14 +00:00
import wot.wotcommand
2022-08-31 05:30:28 +00:00
def load_identity_from_block(block) -> Identity:
return Identity.deserialize(block.data)
def load_identities_from_blocks() -> Generator[Identity, None, None]:
for block in blockdb.get_blocks_by_type(b'wotb'):
try:
yield load_identity_from_block(block)
except IdentitySerializationError:
pass
def load_signatures_from_blocks() -> None:
2022-11-22 05:57:14 +00:00
for block in blockdb.get_blocks_by_type(wot.wotcommand.block_type_map.trust):
try:
# If good signature,
# it adds the signature to the signed identity's trust set
# noop if already signed
processtrustsignature.process_trust_signature(block.data)
except nacl.exceptions.BadSignatureError:
logging.warn('Bad signature in block:')
logging.warn(traceback.format_exc())