keychain-uses-objects
quadrismegistus 4 years ago
parent 5f20c36acf
commit 99602b5300

@ -0,0 +1 @@
VUVDMgAAAC08IiR+AhgajdBJV9HCmGlGfW0MR9+oS0a/vzZPyO1rMwiDRzqf

@ -0,0 +1 @@
AAEBQAwAAAAQAAAALQAAAEDMioQYqkF/3sZF/A4rQ+oK6atM/NelMoCDHhHqsgD4cXiHc3+Vjk83TOEpRfLUgss82XBojdW2B4mALSv2WzGaqDOsh/QTlH4=

@ -0,0 +1 @@
VUVDMgAAAC1ed3WvArnYY/AVYYSoIP742FENh1qPWa2KZzj676ZKwnyjTYjA

@ -0,0 +1 @@
VUVDMgAAAC08IiR+AhgajdBJV9HCmGlGfW0MR9+oS0a/vzZPyO1rMwiDRzqf

@ -0,0 +1 @@
AAEBQAwAAAAQAAAALQAAAJj0NKWli8opRwW4jBkJo0/DdJzbhrN0xRYCJN48NjtcQetNEG88c48wSEMRWhbjjr0dE+XaoB4SO6FWUMq41XB4p6wytGqUSSc=

@ -0,0 +1 @@
VUVDMgAAAC1ed3WvArnYY/AVYYSoIP742FENh1qPWa2KZzj676ZKwnyjTYjA

@ -0,0 +1 @@
VUVDMgAAAC0UyaNjA7F7+uhXQ/VI0fVaNVGO8buXXaV4n2ERtZJNJwi1/izr

@ -0,0 +1 @@
VUVDMgAAAC0UyaNjA7F7+uhXQ/VI0fVaNVGO8buXXaV4n2ERtZJNJwi1/izr

@ -0,0 +1 @@
VUVDMgAAAC08IiR+AhgajdBJV9HCmGlGfW0MR9+oS0a/vzZPyO1rMwiDRzqf

@ -0,0 +1 @@
AAEBQAwAAAAQAAAALQAAAEDMioQYqkF/3sZF/A4rQ+oK6atM/NelMoCDHhHqsgD4cXiHc3+Vjk83TOEpRfLUgss82XBojdW2B4mALSv2WzGaqDOsh/QTlH4=

@ -0,0 +1 @@
VUVDMgAAAC08IiR+AhgajdBJV9HCmGlGfW0MR9+oS0a/vzZPyO1rMwiDRzqf

@ -0,0 +1 @@
VUVDMgAAAC0UyaNjA7F7+uhXQ/VI0fVaNVGO8buXXaV4n2ERtZJNJwi1/izr

@ -0,0 +1 @@
VUVDMgAAAC08IiR+AhgajdBJV9HCmGlGfW0MR9+oS0a/vzZPyO1rMwiDRzqf

@ -0,0 +1 @@
VUVDMgAAAC1ed3WvArnYY/AVYYSoIP742FENh1qPWa2KZzj676ZKwnyjTYjA

@ -0,0 +1 @@
VUVDMgAAAC1ed3WvArnYY/AVYYSoIP742FENh1qPWa2KZzj676ZKwnyjTYjA

@ -0,0 +1 @@
VUVDMgAAAC08IiR+AhgajdBJV9HCmGlGfW0MR9+oS0a/vzZPyO1rMwiDRzqf

@ -0,0 +1 @@
VUVDMgAAAC08IiR+AhgajdBJV9HCmGlGfW0MR9+oS0a/vzZPyO1rMwiDRzqf

@ -0,0 +1 @@
AAEBQAwAAAAQAAAALQAAAEDMioQYqkF/3sZF/A4rQ+oK6atM/NelMoCDHhHqsgD4cXiHc3+Vjk83TOEpRfLUgss82XBojdW2B4mALSv2WzGaqDOsh/QTlH4=

@ -0,0 +1 @@
VUVDMgAAAC0UyaNjA7F7+uhXQ/VI0fVaNVGO8buXXaV4n2ERtZJNJwi1/izr

@ -0,0 +1 @@
VUVDMgAAAC0UyaNjA7F7+uhXQ/VI0fVaNVGO8buXXaV4n2ERtZJNJwi1/izr

@ -0,0 +1 @@
AAEBQAwAAAAQAAAALQAAAEDMioQYqkF/3sZF/A4rQ+oK6atM/NelMoCDHhHqsgD4cXiHc3+Vjk83TOEpRfLUgss82XBojdW2B4mALSv2WzGaqDOsh/QTlH4=

@ -1 +1 @@
AqKr/dyY2DauVOg9s1E6ajdFZemS7aJNkIJ9r5jsVwB8fHx8fHx8fHx8AAEBQAwAAAAQAAAAogEAAJCIGy0W29KtMaQZvd/TWkM+OmHNBsf2j34wrE+adFEypBKCPsG1pSpimU95D7g0H6G8crLGtDTkXIGaqVb4yL3QFJ670xIKhr8Qo0NCLyTNnCXJn+w/XSA2Pl58Oh0oCFPLbbEdL3sfmZGBux8hwoXrbgpSiGbghpNFaE1IjLAnfMaYe4UYAx30wHwWfXmY6ONVuqddRyYH2uXx4crdxoAvFKccBqXBBeOqU01O9OykSE4BnGXvQHcgDiA5Kdha63vNHDapwFMdTHf78wMMAsXmwa70ybOHNbGdaH8OuYOWnGTQ5baW/us7EyE52d4dUh+FWMbnEuerZwrdmJ2NkPieojmwbj+ByWwvbPCRShLFRTHHpMKtqup/d7lom+tjGJxD+JMTdTMnU/idmS8tfyIrgP1/Upvlj5ubGFQkaVyQGsXZCvXujPC43AbgPYTyr2wev9N/LuqAh3nWe0TteRxaw/Nk2H4/L+hAhAqNb61hzFx3jZAH7e78cM9u0YWH1pPxCQ0UGtyHJbz9rSTaKCioEgFhigzYrTHsUwZ/qGOCdaV1VxSrygbz4qLZ2SJeeuJSaHxvGZMNmvNMCY29
ChVzFuYhnmZ3tDBgI+yZ6qnWRQxlKMzJ6gUsDNOzJSl8fHx8fHx8fHx8AAEBQAwAAAAQAAAAogEAAAIgfssgwCFuobYOb66zRHDDcIS8F4DmP4sBhfQNKssZwU60gspUoLHdEPIVSMovWX1HJZffmU5YqrGUXE8pN5Tpah6dWgED3pHmp/vARO1y782rFMCwTxuhpCYyAJts8gRRg/XKG8w2+F0pPRBGA2p3gAWmab2QNM5PWlyzHhxqXNcpAcigtZjSzXNGPmo5472eLSRZCTZf5OaUHx4+swe5LJfpYACWh+1B50W3o4uoycDHol5cvgwRkJkbzfaYbDYo4FwWzHYwh1WuL4d4Sf9r/lMD65oISKKvCSFASyFagmhFUyTPDed+EjGWdGXPFmVDlT9v949Yki4em37rfNPyEEqWoZLWTpbySLH1jrdb066LhaxqLX4dOgfmfmIPPIwC131FV/DTwAxFKYMW2SrWiT1QFJCtH213zbo9xSE2ktxi7izGH8y5RpOZktEm5Ca4SXqiuzqQ1z1hPsc5NsRoSX/u/0u7oDOxnVyBGvUG0JqjFmv54XmyMjU+5dLbeW99pD2YpdfrjhN5QNXjcZqJgiXPgMCxLbFb0A2LC3a70DYDLiWLYopQ6IVp/zk26WE5lUs0mTSjPLIk9O7n

@ -237,18 +237,17 @@ class Keymaker(Logger):
def find_pubkey(self):
global TELEPHONE_KEYCHAIN,OPERATOR_KEYCHAIN
#self.log('keychain?',self.keychain())
if 'pubkey' in self._keychain and self._keychain['pubkey']:
return self._keychain['pubkey']
res = self.crypt_keys.get(self.name, prefix='/pubkey/')
self.log('result from crypt for name:',res)
if res: return res
res = self.load_qr(self.name)
if res: return res
self.log('I don\'t know my public key! Do I need to register?',do_pause=False)
self.log('I don\'t know my public key! Do I need to register?')
# raise KomradeException(f'I don\'t know my public key!\n{self}\n{self._keychain}')
return None

@ -30,13 +30,12 @@ class Operator(Keymaker):
super().__init__(name=name,passphrase=passphrase, keychain=keychain,
path_crypt_keys=path_crypt_keys, path_crypt_data=path_crypt_data)
# self.boot(create=False)
from komrade.backend.phonelines import check_phonelines
check_phonelines()
# connect phonelines?
from komrade.backend.phonelines import connect_phonelines
try:
self.operator_keychain,self.telephone_keychain,self.world_keychain,self.omega_key = connect_phonelines()
except KeyError:
pass
print(self.crypt_keys.get(OPERATOR_NAME,prefix='/pubkey/'))
# stop
# def boot(self,create=False):
# # Do I have my keys?

@ -100,7 +100,46 @@ def create_secret():
with open(PATH_CRYPT_SECRET,'wb') as of:
of.write(secret)
create_secret()
def check_phonelines():
# if needed
create_secret()
# is world there?
keycrypt = Crypt(PATH_CRYPT_OP_KEYS)
# builtins
with open(PATH_BUILTIN_KEYCHAIN,'rb') as f:
builtin_keys_encr_b64 = f.read()
builtin_keys_encr = b64decode(builtin_keys_encr_b64)
omega_key_b,builtin_keys_encr = builtin_keys_encr.split(BSEP)
omega_key = KomradeSymmetricKeyWithoutPassphrase(omega_key_b)
builtin_keys_b = omega_key.decrypt(builtin_keys_encr)
builtin_keys = pickle.loads(builtin_keys_b)
# print(builtin_keys)
for keyring in builtin_keys:
name = keyring.get('name')
keychain = dict((k,v) for k,v in keyring.items() if k!='name')
if not 'pubkey' in keyring: continue
uri = b64encode(keychain.get('pubkey'))
if not keycrypt.has(name,prefix='/pubkey/'):
keycrypt.set(name,keychain['pubkey'],prefix='/pubkey/')
for key in [k for k in keychain if k!='pubkey']:
if not keycrypt.has(uri,prefix=f'/{key}/'):
keycrypt.set(uri,keychain[key],prefix=f'/{key}/')
# make sure world's qr is there too
if name==WORLD_NAME:
import pyqrcode
qr = pyqrcode.create(uri)
ofnfn = os.path.join(PATH_QRCODES,name+'.png')
qr.png(ofnfn,scale=5)
# print('>> saved:',ofnfn)
return builtin_keys
@ -302,8 +341,16 @@ create_secret()
# # ##print('>>>> loaded TELEPHONE_KEYCHAIN',TELEPHONE_KEYCHAIN)
# return (OPERATOR_KEYCHAIN,TELEPHONE_KEYCHAIN,WORLD_KEYCHAIN,OMEGA_KEY)
def test_phonelines():
from komrade.backend.the_telephone import TheTelephone
from komrade.backend.the_operator import TheOperator
if __name__ == '__main__':
phone = TheTelephone()
op = TheOperator()
print('phone',dict_format(phone.keychain()))
print('op',dict_format(op.keychain()))
if __name__ == '__main__':
test_phonelines()

@ -33,7 +33,7 @@ class TheOperator(Operator):
path_crypt_keys=PATH_CRYPT_OP_KEYS,
path_crypt_data=PATH_CRYPT_OP_DATA
)
self._keychain = self.load_keychain_from_bytes(self.operator_keychain)
# self._keychain = self.load_keychain_from_bytes(self.operator_keychain)
def ring(self,
from_caller=None,
@ -79,8 +79,8 @@ class TheOperator(Operator):
return msg_sealed
def find_pubkey(self):
return self.operator_keychain['pubkey']
# def find_pubkey(self):
# return self.operator_keychain['pubkey']
def send(self,encr_data_b):

@ -12,10 +12,10 @@ class TheTelephone(Operator):
def __init__(self, caller=None):
super().__init__(name=TELEPHONE_NAME)
self.caller=caller
self._keychain = self.load_keychain_from_bytes(self.telephone_keychain)
# self._keychain = self.load_keychain_from_bytes(self.telephone_keychain)
def find_pubkey(self):
return self.telephone_keychain.get('pubkey')
# def find_pubkey(self):
# return self.telephone_keychain.get('pubkey')
def send_and_receive(self,msg_d):
# seal for transport

Loading…
Cancel
Save