From e1af2f46eaef90e56fe1d871f23acd4d100cdbe2 Mon Sep 17 00:00:00 2001 From: quadrismegistus Date: Tue, 8 Sep 2020 16:31:16 +0100 Subject: [PATCH] updates --- komrade/backend/keymaker.py | 30 +++++++++++++++++------------- komrade/backend/operators.py | 3 +++ komrade/backend/the_telephone.py | 6 ++++-- 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/komrade/backend/keymaker.py b/komrade/backend/keymaker.py index 9560b18..01c86a4 100644 --- a/komrade/backend/keymaker.py +++ b/komrade/backend/keymaker.py @@ -93,35 +93,39 @@ class Keymaker(Logger): @property def pubkey(self): - if not self._pubkey: self._pubkey = self.crypt_keys.get(self.name, prefix='/pubkey/') - if not self._pubkey: self._pubkey = b64decode(self.load_qr.get(self.name, prefix='/pubkey/').encode()) - return self._pubkey + #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/') + if res: return res + + res = b64decode(self.load_qr(self.name).encode()) + if res: return res + + self.log('I don\'t know my public key!') + return None def keychain(self,look_for=KEYMAKER_DEFAULT_ALL_KEY_NAMES): - self._keychain = keys = {**{'pubkey':self.pubkey}, **self._keychain} + keys = self._keychain #self._keychain = keys = {**self._keychain} uri = self.uri_id # get from cache for keyname in look_for: if keyname in keys and keys[keyname]: continue - self.log('??',keyname) + # self.log('??',keyname) key = self.crypt_keys.get(uri,prefix=f'/{keyname}/') if key: keys[keyname]=key - self.log('keys 1!',self._keychain) + # self.log('keys 1!',self._keychain) # try to assemble keys = self.assemble(self.assemble(keys)) - self.log('keys 2!',self._keychain) + # self.log('keys 2!',self._keychain) return keys - @property - def pubkey(self): - if not self._pubkey: self._pubkey = self.crypt_keys.get(self.name, prefix='/pubkey/') - if not self._pubkey: self._pubkey = self.load_qr(self.name) - return self._pubkey @property def privkey(self): return self.keychain().get('privkey') @property @@ -133,7 +137,7 @@ class Keymaker(Logger): # try to load? contact_fnfn = os.path.join(PATH_QRCODES,name+'.png') print(contact_fnfn,os.path.exists(contact_fnfn)) - if not os.path.exists(contact_fnfn): return + if not os.path.exists(contact_fnfn): return '' # with open(contact_fnfn,'rb') as f: dat=f.read() from pyzbar.pyzbar import decode from PIL import Image diff --git a/komrade/backend/operators.py b/komrade/backend/operators.py index a1f14cb..751bf10 100644 --- a/komrade/backend/operators.py +++ b/komrade/backend/operators.py @@ -103,6 +103,9 @@ class Operator(Keymaker): def package_msg_to(self,msg,another): + self.log('KEYCHAINNN ',self.keychain()) + self.log('my privkey',self.privkey) + self.log('my pubkey',self.pubkey,self.keychain().get('pubkey','!!!?!!?!?!?!?')) if not self.privkey or not self.pubkey: self.log('why do I have no pub/privkey pair!?',self.privkey,self,self.name) return b'' diff --git a/komrade/backend/the_telephone.py b/komrade/backend/the_telephone.py index 42e7fe8..9c3ff45 100644 --- a/komrade/backend/the_telephone.py +++ b/komrade/backend/the_telephone.py @@ -32,8 +32,10 @@ class TheTelephone(Operator): print(type(self._keychain), self._keychain) - def send_and_receive(self,msg_b64_str_esc): - URL = OPERATOR_API_URL + msg_b64_str_esc + '/' + def send_and_receive(self,msg): + msg_b64_str = b64encode(msg).decode() + self.log('msg_b64_str',type(msg_b64_str),msg_b64_str) + URL = OPERATOR_API_URL + msg_b64_str + '/' self.log("DIALING THE OPERATOR:",URL) ringring=komrade_request(URL) if ringring.status_code==200: