MCPcopy
hub / github.com/spaceandtimefdn/SxT-Python-SDK / SXTKeyManager

Class SXTKeyManager

src/spaceandtime/sxtkeymanager.py:16–243  ·  view source on GitHub ↗

Class to manage creation and maintenance of keys and biscuits.

Source from the content-addressed store, hash-verified

14#### SXT KEY MANAGER
15####
16class SXTKeyManager():
17 """Class to manage creation and maintenance of keys and biscuits."""
18
19 biscuits:list = []
20 logger:logging.Logger = None
21 warning_for_biscuit_length = 1800
22 keychange_callback_func_list = []
23 __pv:bytes = bytes(''.encode())
24 __pb:bytes = bytes(''.encode())
25 __en:SXTKeyEncodings = SXTKeyEncodings.HEX
26 ENCODINGS = SXTKeyEncodings
27
28
29 def __init__(self, private_key:str = None, new_keypair: bool = False, encoding:SXTKeyEncodings = None, keychange_callback_func = None, logger:logging.Logger = None) -> None:
30 """Class to manage creation and maintenance of keys and biscuits."""
31 if logger:
32 self.logger = logger
33 else:
34 self.logger = logging.getLogger()
35 self.logger.setLevel(logging.INFO)
36 if len(self.logger.handlers) == 0:
37 self.logger.addHandler( logging.StreamHandler() )
38 self.logger.info('new SXT KeyManager initiated')
39 self.keychange_callback_func_list = []
40 if keychange_callback_func: self.add_keychange_callback(keychange_callback_func)
41
42 if encoding: self.encoding = encoding
43 if new_keypair:
44 self.new_keypair()
45 return None
46 if private_key: self.private_key = private_key
47 return None
48
49
50 def __str__(self):
51 flds = self.__keydict__()
52 flds['private_key'] = flds['private_key'][:6]+'...'
53 return '\n'.join( [ f'\t{n} = {v}' for n,v in flds.items() ] )
54
55 def __repr__(self):
56 return '\n'.join( [ f'\t{n} = {v}' for n,v in self.__keydict__().items() ] )
57
58 def __keydict__(self, keychanged:str = None) -> dict:
59 rtn = {'private_key': self.private_key,
60 'public_key': self.public_key,
61 'encoding': self.encoding.name }
62 if keychanged: rtn['key_changed'] = keychanged
63 return rtn
64
65 def __callback__(self, keychanged:str ) -> None:
66 for func in self.keychange_callback_func_list:
67 func( self.__keydict__(keychanged) )
68
69 @property
70 def private_key(self):
71 return self.convert_key(self.__pv, SXTKeyEncodings.BYTES, self.encoding)
72 @private_key.setter
73 def private_key(self, value):

Callers 9

__init__Method · 0.90
clear_allMethod · 0.90
loadMethod · 0.90
__init__Method · 0.90
__init__Method · 0.90
test_resource_methodsFunction · 0.90
test_sxtbaseapi.pyFile · 0.90
test_authenticateFunction · 0.90
test_biscuits.pyFile · 0.90

Calls

no outgoing calls

Tested by 2

test_resource_methodsFunction · 0.72
test_authenticateFunction · 0.72