From 84a5dd33007e4ebdd9cdde5a573d34775bcb9bfa Mon Sep 17 00:00:00 2001 From: quadrismegistus Date: Sat, 12 Sep 2020 19:43:50 +0100 Subject: [PATCH] updates --- komrade/backend/messages.py | 14 +++++++++----- komrade/backend/operators.py | 12 +++++++----- komrade/backend/people.py | 10 +++++----- komrade/backend/phonelines.py | 1 + komrade/backend/switchboard.py | 2 -- komrade/utils.py | 2 +- 6 files changed, 23 insertions(+), 18 deletions(-) diff --git a/komrade/backend/messages.py b/komrade/backend/messages.py index ad57520..d6c77d4 100644 --- a/komrade/backend/messages.py +++ b/komrade/backend/messages.py @@ -43,9 +43,13 @@ class Message(Logger): else: msg=self.msg return f""" - from: {self.from_whom} - to: {self.to_whom} - msg: {msg} + from: {self.from_whom} + ({self.from_whom.pubkey.data_b64.decode()}) + + to: {self.to_whom} + ({self.to_whom.pubkey.data_b64.decode()}) + + msg: {msg} """ @@ -161,7 +165,7 @@ class Message(Logger): def encrypt(self): # each child message should already be encrypted before coming to its parent message ,recursive=False): if self._is_encrypted: return # self.log(f'attempting to encrypt msg {self.msg} from {self.from_whom} to {self.to_whom}') - self.log(f'I ({self.from_whom}) am about to encrypt my message to {self.to_whom},\n "end to end" so that only {self.to_whom} can read it.\n\n Before encryption, I look like:\n{self}') + self.log(f'Before encrypting the message from {self.from_whom} to {self.to_whom}, it looks like:\n{self}') # make sure msg is not meeta if self.has_embedded_msg: @@ -180,7 +184,7 @@ class Message(Logger): self.msg_decr = self.msg self.msg_d['msg'] = self.msg = b64encode(msg_encr) - self.log(f'I ({self.from_whom}) am about to encrypt my message to {self.to_whom}\n "end to end" so that only {self.to_whom} can read it.\n\n And after encryption, I look like:\n{self}') + self.log(f'After encrypting the message from {self.from_whom} to {self.to_whom}, it looks like:\n{self}') self.msg_d['msg'] = self.msg = msg_encr self._is_encrypted = True diff --git a/komrade/backend/operators.py b/komrade/backend/operators.py index 0aa035f..56ecd0d 100644 --- a/komrade/backend/operators.py +++ b/komrade/backend/operators.py @@ -107,7 +107,7 @@ class Operator(Keymaker): def seal_msg(self,msg_d): msg_b = pickle.dumps(msg_d) self.log('Message has being sealed in a final binary package:',b64encode(msg_b)) - return msg_b_encr + return msg_b def unseal_msg(self,msg_b_encr,from_whom=None,to_whom=None): # default to assumption that I am the recipient @@ -128,7 +128,7 @@ class Operator(Keymaker): def __repr__(self): clsname=(type(self)).__name__ #name = clsname+' '+ - name = 'Komrade @'+self.name # if self.name!=clsname else clsname + name = '@'+self.name # if self.name!=clsname else clsname # try: # keystr= 'on device: ' + ('+'.join(self.top_keys) if self.pubkey else '') # except TypeError: @@ -203,9 +203,11 @@ class Operator(Keymaker): # {dict_format(msg,tab=4)} # ''') if caller!=self: - self.log(f'ring ring! I ({self}) have received a message from {caller},\n which I will now encrypt and send on to {to_whom}.') + from komrade.cli.artcode import ART_PHONE_SM1 + self.log(f'ring ring! I the {self} have received a message from {caller},\n which I will now encrypt and send along to {to_whom}.\n {ART_PHONE_SM1} ') else: - self.log(f'I ({self}) will now compose and send an encrypted message to {to_whom}.') + pass + # self.log(f'I ({self}) will now compose and send an encrypted message to {to_whom}.') if route and type(msg)==dict and not ROUTE_KEYNAME in msg: msg[ROUTE_KEYNAME] = route @@ -216,7 +218,7 @@ class Operator(Keymaker): msg, to_whom ) - self.log(f'Here is the message object I ({self}) made, to send to {to_whom}: {msg_obj}') + self.log(f'Here is the message I will now encrypt and to send to {to_whom}:\n {msg_obj}') # encrypting msg_obj.encrypt() diff --git a/komrade/backend/people.py b/komrade/backend/people.py index 42e1985..c9fe023 100644 --- a/komrade/backend/people.py +++ b/komrade/backend/people.py @@ -60,7 +60,7 @@ class Persona(Caller): ## 2) Make pub public/private keys keypair = KomradeAsymmetricKey() pubkey,privkey = keypair.pubkey_obj,keypair.privkey_obj - self.log(f'@Keymaker has cut private and public keys:\n\n(1) {pubkey}\n\n(2) {privkey}') + self.log(f'Keymaker has cut private and public keys:\n\n(1) {pubkey}\n\n(2) {privkey}') ## 3) Have passphrase? if SHOW_STATUS and not passphrase: @@ -70,13 +70,13 @@ class Persona(Caller): ## 4) Get hashed password passhash = hasher(passphrase) - self.log(f'''@Keymaker has created a symmetric encryption cell using the disguised password:\n\n\t(2A) [Symmetric Encryption Key]\n\t({make_key_discreet_str(passhash)})''') + # self.log(f'''Keymaker has created a symmetric encryption cell using the disguised password:\n\n\t(2A) [Symmetric Encryption Key]\n\t({make_key_discreet_str(passhash)})''') ## 5) Encrypt private key privkey_decr = KomradeSymmetricKeyWithPassphrase(passphrase) privkey_encr = privkey_decr.encrypt(privkey.data) privkey_encr_obj = KomradeEncryptedAsymmetricPrivateKey(privkey_encr) - self.log(f"This pass-generated key has now transformed the private key (2) into the following encrypted form (redacted):\n\n\t(2B) [Encrypted Private Key]\n\t({make_key_discreet_str(privkey_encr_obj.data_b64)})") + self.log(f"For my private key, I will store it only on my device as it was encrypted by my password-generated key:\n\n[Encrypted Private Key]\n({make_key_discreet_str(privkey_encr_obj.data_b64)})") ## 6) Test keychain works privkey_decr2 = KomradeSymmetricKeyWithPassphrase(passphrase) @@ -88,7 +88,7 @@ class Persona(Caller): # we should be able to reassemble privkey now? assert 'privkey' in self.keychain() - self.log('My keychain now looks like:',dict_format(self.keychain())) + # self.log('My keychain now looks like:',dict_format(self.keychain())) ## 6) More narration? if SHOW_STATUS: @@ -99,7 +99,7 @@ class Persona(Caller): 'name':name, 'pubkey': pubkey.data, } - # self.log('I will be sending this data to @TheOperator, on the remote server:',dict_format(data,tab=2)) + self.log('For my public key, I will be sending it to @Operator on the remote server:',dict_format(data,tab=2)) # ring operator # call from phone since I don't have pubkey on record on Op yet diff --git a/komrade/backend/phonelines.py b/komrade/backend/phonelines.py index a84d351..b2a2331 100644 --- a/komrade/backend/phonelines.py +++ b/komrade/backend/phonelines.py @@ -19,6 +19,7 @@ def create_phonelines(): # save pub and priv op_uri = op_pubkey.data_b64 keycrypt.set(OPERATOR_NAME,op_pubkey.data,prefix='/pubkey/') + keycrypt.set(op_uri,op_privkey_encr.data,prefix='/privkey_encr/') diff --git a/komrade/backend/switchboard.py b/komrade/backend/switchboard.py index 7a75add..529f048 100644 --- a/komrade/backend/switchboard.py +++ b/komrade/backend/switchboard.py @@ -46,8 +46,6 @@ class TheSwitchboard(FlaskView, Logger): return resp_data_b64_str def run_forever(port='8080'): - global OPERATOR,TELEPHONE,TELEPHONE_KEYCHAIN,OPERATOR_KEYCHAIN,WORLD_KEYCHAIN,OMEGA_KEY - OPERATOR_KEYCHAIN,TELEPHONE_KEYCHAIN,WORLD_KEYCHAIN,OMEGA_KEY=connect_phonelines() TELEPHONE = TheTelephone() OPERATOR = TheOperator() app = Flask(__name__) diff --git a/komrade/utils.py b/komrade/utils.py index 8e260b2..f033532 100644 --- a/komrade/utils.py +++ b/komrade/utils.py @@ -39,7 +39,7 @@ def do_pause(): def dict_format(d, tab=0): def reppr(v): if type(v)==bytes and not isBase64(v): - return b64encode(v) + return b64encode(v).decode() return v s = ['{\n\n']