From 4e6f065bf9fbfcef71e66a83107f9c5e812baa4a Mon Sep 17 00:00:00 2001 From: quadrismegistus Date: Sun, 13 Sep 2020 07:25:31 +0100 Subject: [PATCH] updates --- komrade/backend/keymaker.py | 2 +- komrade/backend/the_operator.py | 54 ++++++--------------------------- 2 files changed, 11 insertions(+), 45 deletions(-) diff --git a/komrade/backend/keymaker.py b/komrade/backend/keymaker.py index f001f6b..2109c0a 100644 --- a/komrade/backend/keymaker.py +++ b/komrade/backend/keymaker.py @@ -610,7 +610,7 @@ Keymaker ({self}) is forging new keys for {name} # self.log(encr_key_name,decr_key_name,unencr_key_name) if decrypt and unencr_key_name in keychain: continue if not decr_key_name in keychain: - keychain[decr_key_name] = KomradeSymmetricKeyWithPassphrase(passphrase if passphrase else self.passphrase) + keychain[decr_key_name] = KomradeSymmetricKeyWithPassphrase(passphrase=passphrase if passphrase else self.passphrase) else: continue decr_key = keychain.get(decr_key_name) diff --git a/komrade/backend/the_operator.py b/komrade/backend/the_operator.py index dc205d6..2f5aae0 100644 --- a/komrade/backend/the_operator.py +++ b/komrade/backend/the_operator.py @@ -98,16 +98,24 @@ class TheOperator(Operator): self.log(f'looking for {name}, found {pubkey} as pubkey') return bool(pubkey) - def register_new_user(self,name,passphrase,pubkey,**data): + def register_new_user(self,name,pubkey,**data): # self.log('setting pubkey under name') success,ck,cv_b64 = self.crypt_keys.set(name,pubkey,prefix='/pubkey/') + if not isBase64(pubkey): pubkey=b64encode(pubkey) + self.log(f''' got result from crypt: success = {success} ck = {ck} cv = {cv_b64} ''') - + success,ck,cv_b64 = self.crypt_keys.set(pubkey,name,prefix='/name/') + self.log(f''' + got result from crypt: + success = {success} + ck = {ck} + cv = {cv_b64} + ''') # check input back from crypt # if success and b64decode(cv)!=pubkey: success=False # if success and name!=self.crypt_keys.key2hash(name): success=False @@ -122,48 +130,6 @@ cv = {cv_b64} self.log('Operator returning result:',dict_format(res,tab=2)) return res - # generate these admin keys? - admin_keys = self.forge_new_keys( - name=name, - passphrase=passphrase, - keys_to_gen = [ - 'adminkey', - 'adminkey_encr', - 'adminkey_decr' - ], - keys_to_save=[], - keys_to_return = [ - 'adminkey', - 'adminkey_encr', - 'adminkey_decr', - ], - key_types = { - 'adminkey':KomradeSymmetricKeyWithoutPassphrase(), - 'adminkey_encr':KomradeEncryptedKey(), - 'adminkey_decr':KomradeSymmetricKeyWithPassphrase(passphrase=passphrase) - } - ) - self.log('generated admin keys:',admin_keys) - if not admin_keys: - res['res']=False - res['status']=self.status(f"{OPERATOR_INTRO}I'm sorry, but I couldn't register {name} right now.") - return res - - # get settings - settings = DEFAULT_USER_SETTINGS - settings_b = pickle.dumps(settings) - - # use admin key to encrypt - adminkey=admin_keys['adminkey'] - settings_b_encr = adminkey.encrypt(settings_b) - - # set in crypt - key_to_be_hashed = cv_b64 + passphrase - self.crypt_keys.set(key_to_be_hashed, settings_b_encr, prefix='/settings/') - self.crypt_keys.set(key_to_be_hashed, settings_b_encr, prefix='/adminkey_encr/') - - - # give back decryptor ## success msg