keys-on-cli
quadrismegistus 4 years ago
parent ff80e7e429
commit 7a83999e28

@ -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}.

@ -169,4 +169,15 @@ OPERATOR_ROUTES = [
'register_new_user'
]
OPERATOR_INTRO = 'Hello, this is the Operator speaking. '
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
}
Loading…
Cancel
Save