From 284eced9d8e9fd0edd0861843e96232ea104e802 Mon Sep 17 00:00:00 2001 From: quadrismegistus Date: Sat, 12 Sep 2020 14:11:39 +0100 Subject: [PATCH] updates --- komrade/backend/operators.py | 17 ++++++----- komrade/backend/people.py | 58 +++++++++++++----------------------- komrade/cli/artcode.py | 2 +- komrade/cli/cli.py | 12 ++++++++ 4 files changed, 43 insertions(+), 46 deletions(-) diff --git a/komrade/backend/operators.py b/komrade/backend/operators.py index e5685af..78cd98c 100644 --- a/komrade/backend/operators.py +++ b/komrade/backend/operators.py @@ -191,14 +191,15 @@ class Operator(Keymaker): def ring_ring(self,msg,to_whom,get_resp_from=None): # ring ring - self.log(f''' - ring ring! - I am {self}. - I have been told to pass onto {to_whom}, - by way of function {get_resp_from}, - the following msg: - {dict_format(msg,tab=5)} - ''') + from komrade.cli.artcode import ART_PHONE_SM1 + self.log(f'''ring ring! {ART_PHONE_SM1} ring ring! +I am {self}. + +I have been told to pass onto {to_whom}, +by way of function {get_resp_from}, +the following msg: +{dict_format(msg,tab=5)} +''') # get encr msg obj msg_obj = self.compose_msg_to( diff --git a/komrade/backend/people.py b/komrade/backend/people.py index 522557e..1884391 100644 --- a/komrade/backend/people.py +++ b/komrade/backend/people.py @@ -46,63 +46,43 @@ class Persona(Caller): # if keys.get('pubkey') and keys.get('privkey') def register(self, name = None, passphrase = None, is_group=None, show_intro=0,show_body=True): - # defaults + ## Defaults if name and not self.name: self.name=name if not name and self.name: name=self.name if not name and not self.name: name='' - clear_screen() - - # intro narration? + + ## 1) Have name? if SHOW_STATUS and show_intro: - name = self.cli.status_keymaker_part1(name) + name = self.cli.status_keymaker_part1(name) + else: + name = input('@Keymaker: What is the name for this new account?\n@?: ') - # 1) forge public/private keys + ## 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}') - # 2) make sure we have passphrase - # passphrase=self.crypt_keys.hash(b'boogywoogy') + ## 3) Have passphrase? if SHOW_STATUS and not passphrase: - passphrase = self.cli.status_keymaker_part2( - name, - passphrase, - pubkey, - privkey, - self.crypt_keys.hash, - self - ) + passphrase = self.cli.status_keymaker_part2(name,passphrase,pubkey,privkey,self.crypt_keys.hash,self) else: if not passphrase: passphrase=getpass('Enter a memorable password to encrypt your private key with: ') - # 2) hash password + ## 4) Get hashed password passhash = self.crypt_keys.hash(passphrase.encode()) - # self.log(f'Hasher has scrambled inputted password using SHA-256 hashing algorithm (partly redacted):\n\n[Hashed Password] {make_key_discreet_str(passhash)}') - self.log(f'''Keymaker has created a symmetric encryption cell using the disguised password: - - (2A) [Symmetric Encryption Key] - ({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)})''') - # 3) form an encryption key + ## 5) Encrypt private key privkey_decr = KomradeSymmetricKeyWithPassphrase(passhash) 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'''This pass-generated key has now transformed the private key (2) into the following encrypted form (redacted): - - (2B) [Encrypted Private Key] - ({make_key_discreet_str(privkey_encr_obj.data_b64)}''') - + ## 6) More narration? if SHOW_STATUS: - self.cli.status_keymaker_part3( - privkey, - privkey_decr, - privkey_encr, - passphrase, - ) + self.cli.status_keymaker_part3(privkey,privkey_decr,privkey_encr,passphrase) - - # save the ones we should on server + ## 7) Save data to server data = { 'name':name, 'pubkey': pubkey.data, @@ -113,7 +93,11 @@ class Persona(Caller): # ring operator # call from phone since I don't have pubkey on record on Op yet - resp_msg_obj = self.phone.ring_ring(data) + # self.log('my keychain:',self._keychain,pubkey,self.op._keychain) + self._keychain['pubkey']=pubkey.data + self._keychain['privkey']=privkey.data + + resp_msg_obj = self.ring_ring(data) self.log('register got back from op:',dict_format(resp_msg_obj,tab=2)) diff --git a/komrade/cli/artcode.py b/komrade/cli/artcode.py index a663bc6..b98a52b 100644 --- a/komrade/cli/artcode.py +++ b/komrade/cli/artcode.py @@ -32,7 +32,7 @@ ART_PHONE_SM1 = """ | LI LI LI | ,@' | LI LI LI | ,@' | LI LI LI |@@' -jgs \\ /' + \\ /' `----------' """ diff --git a/komrade/cli/cli.py b/komrade/cli/cli.py index 3e2da42..887bf05 100644 --- a/komrade/cli/cli.py +++ b/komrade/cli/cli.py @@ -358,6 +358,18 @@ class CLI(Logger): ) + def register(): + # Get name (narration part 1) + name = self.cli.status_keymaker_part1(name) + passphrase = self.cli.status_keymaker_part2( + name, + passphrase, + pubkey, + privkey, + self.crypt_keys.hash, + self + ) + # get passphrase (narration part 2)