diff --git a/komrade/backend/the_operator.py b/komrade/backend/the_operator.py index 289e90e..f0642f5 100644 --- a/komrade/backend/the_operator.py +++ b/komrade/backend/the_operator.py @@ -96,12 +96,12 @@ class TheOperator(Operator): def register_new_user(self,name,passphrase,pubkey,**data): # self.log('setting pubkey under name') - success,ck,cv = self.crypt_keys.set(name,pubkey,prefix='/pubkey/') + success,ck,cv_b64 = self.crypt_keys.set(name,pubkey,prefix='/pubkey/') self.log(f''' got result from crypt: success = {success} ck = {ck} -cv = {cv} +cv = {cv_b64} ''') # check input back from crypt @@ -110,7 +110,7 @@ cv = {cv} res = { 'success':success, - 'pubkey':cv, + 'pubkey':b64decode(cv_b64), 'name':name, } if not success: @@ -127,16 +127,15 @@ cv = {cv} 'adminkey_encr', 'adminkey_decr' ], - keys_to_save=[ - 'adminkey_encr' - ], keys_to_return = [ - 'adminkey_decr' + 'adminkey', + 'adminkey_encr', + 'adminkey_decr', ], key_types = { 'adminkey':KomradeSymmetricKeyWithoutPassphrase(), 'adminkey_encr':ENCRYPTED_KEY, - 'adminkey_decr':KomradeSymmetricKeyWithPassphrase() + 'adminkey_decr':KomradeSymmetricKeyWithPassphrase(passphrase=passphrase) } ) self.log('generated admin keys:',admin_keys) @@ -145,12 +144,24 @@ cv = {cv} res['status']=self.status(f"{OPERATOR_INTRO}I'm sorry, but I couldn't register {name} right now.") return res - for key,val in admin_keys.items(): - res[key]=val + # 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) + + + # give back decryptor ## success msg # - cvb64=b64encode(cv).decode() + cvb64=cv_b64#b64encode(cv).decode() qrstr=self.qr_str(cvb64) res['status']=self.status(f'''{OPERATOR_INTRO}I have successfully registered Komrade {name}. diff --git a/komrade/constants.py b/komrade/constants.py index 4891492..bdad279 100644 --- a/komrade/constants.py +++ b/komrade/constants.py @@ -169,4 +169,15 @@ OPERATOR_ROUTES = [ 'register_new_user' ] -OPERATOR_INTRO = 'Hello, this is the Operator speaking. ' \ No newline at end of file +OPERATOR_INTRO = 'Hello, this is the Operator speaking. ' + + + + +VISIBILITY_TYPE_PUBLIC = 'VISIBILITY_TYPE_PUBLIC' # visible to the world +VISIBILITY_TYPE_SEMIPUBLIC = 'VISIBILITY_TYPE_SEMIPUBLIC' # visible to the world +VISIBILITY_TYPE_PRIVATE = 'VISIBILITY_TYPE_PRIVATE' # visible to the world + +DEFAULT_USER_SETTINGS = { + 'visibility':VISIBILITY_TYPE_SEMIPUBLIC +} \ No newline at end of file