From 0f0757c0151f082d64b50a10b7f56e017b963b7d Mon Sep 17 00:00:00 2001 From: quadrismegistus Date: Tue, 15 Sep 2020 08:04:01 +0100 Subject: [PATCH] updates --- komrade/backend/keymaker.py | 4 ++-- komrade/backend/komrades.py | 22 ++++++++++++++++++-- komrade/backend/messages.py | 3 +-- komrade/backend/the_operator.py | 37 ++++++++++++++++++++------------- 4 files changed, 45 insertions(+), 21 deletions(-) diff --git a/komrade/backend/keymaker.py b/komrade/backend/keymaker.py index 163a824..ddefe1e 100644 --- a/komrade/backend/keymaker.py +++ b/komrade/backend/keymaker.py @@ -465,12 +465,12 @@ class Keymaker(Logger): try: if decrypt: encr_key = keychain.get(encr_key_name) - self.log(f'about to decrypt {encr_key} with {decr_key} and {decr_key.cell}') + # self.log(f'about to decrypt {encr_key} with {decr_key} and {decr_key.cell}') unencr_key = decr_key.decrypt(encr_key.data) keychain[unencr_key_name] = get_key_obj(unencr_key_name,unencr_key) else: # unencr_key = keychain.get(unencr_key_name) - self.log(f'about to encrypt {unencr_key} with {decr_key}') + # self.log(f'about to encrypt {unencr_key} with {decr_key}') encr_key = decr_key.encrypt(unencr_key.data) keychain[encr_key_name] = get_key_obj(encr_key_name,encr_key) except ThemisError as e: diff --git a/komrade/backend/komrades.py b/komrade/backend/komrades.py index ff55d21..f8c9711 100644 --- a/komrade/backend/komrades.py +++ b/komrade/backend/komrades.py @@ -371,6 +371,23 @@ class KomradeX(Caller): 'unread':unread, 'inbox':inbox } + + def inbox(self): + inbox_encr = self.crypt_keys.get( + self.uri, + prefix='/inbox/', + ) + if not inbox_encr: + return [] + + inbox = Message( + msg=inbox_encr, + from_whom=self.op, + to_whom=self + ) + print(inbox) + inbox.decrypt() + print(inbox) def read_msg(self,post_id): # get post @@ -380,7 +397,7 @@ class KomradeX(Caller): 'success':False, 'status':'Post not found.' } - self.log('found encrypted post store:',pickle.loads(post_encr)) + self.log('found encrypted post store:',post_encr) # it should be twice decrypted @@ -442,7 +459,8 @@ def test_register(): def test_msg(): b = Komrade('bez') - b.read_msg(b'YWY3NDUxZjNjYjdhNDFmNmIyNDI2NzU3YTI4ZTA0OWM=') + b.inbox() + # b.read_msg(b'YWY3NDUxZjNjYjdhNDFmNmIyNDI2NzU3YTI4ZTA0OWM=') #b.login() #print(b.download_msgs()) diff --git a/komrade/backend/messages.py b/komrade/backend/messages.py index a33d679..6e25093 100644 --- a/komrade/backend/messages.py +++ b/komrade/backend/messages.py @@ -21,7 +21,7 @@ class Message(Logger): self.to_name=msg_d.get('to_name') if not to_whom else to_whom.name self.to_pubkey=msg_d.get('to') if not to_whom else to_whom.uri self.from_name=msg_d.get('from_name') if not from_whom else from_whom.name - self.from_pubkey=msg_d.get('from') if not to_whom else to_whom.uri + self.from_pubkey=msg_d.get('from') if not from_whom else from_whom.uri self.msg=msg_d.get('msg') if not msg else msg self._route=msg_d.get(ROUTE_KEYNAME) self._is_encrypted=None @@ -118,7 +118,6 @@ class Message(Logger): self.to_whom.privkey.data, b64dec(self.from_pubkey) ).unwrap(self.msg) - # self.log('Am I decrypted?',self) # unpickle self.msg = self.msg_d['msg'] = decr_msg = pickle.loads(decr_msg_b) diff --git a/komrade/backend/the_operator.py b/komrade/backend/the_operator.py index e342647..1510f5b 100644 --- a/komrade/backend/the_operator.py +++ b/komrade/backend/the_operator.py @@ -345,22 +345,29 @@ from_komrade = {from_komrade} ''') ## just deliver? - enclosed_msg = { - 'to':deliver_to, - 'from':deliver_from, - 'msg':deliver_msg - } - msg_from_op = { - 'to':deliver_to, - 'from':self.pubkey.data_b64, - 'msg':enclosed_msg - } - msg_from_op_b = pickle.dumps(msg_from_op) + + msg_from_op = Message( + { + 'to':deliver_to, + 'from':self.uri, + + 'msg':{ + 'to':deliver_to, + 'from':deliver_from, + 'msg':deliver_msg, + 'status':'Someone (marked "from") would like to send you (marked "to") this message (marked "msg").' + } + } + }) - msg_from_op_b_encr = SMessage( - self.privkey.data, - b64dec(deliver_to) - ).wrap(msg_from_op_b) + self.log(f'{self}: Prepared this msg for delivery:\n{msg_from_op}') + + # encrypt + msg_from_op.encrypt() + + msg_from_op_b_encr = msg_from_op.msg_d + self.log('got this:',msg_from_op_b_encr) + stop # save new post post_id = get_random_binary_id()