From 655ffd58516f462a22920b1e966053fb4290e992 Mon Sep 17 00:00:00 2001 From: quadrismegistus Date: Thu, 10 Sep 2020 15:45:48 +0100 Subject: [PATCH] updates --- komrade/backend/keymaker.py | 40 ++++++++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/komrade/backend/keymaker.py b/komrade/backend/keymaker.py index 367b2a4..75207b1 100644 --- a/komrade/backend/keymaker.py +++ b/komrade/backend/keymaker.py @@ -27,8 +27,6 @@ class KomradeSymmetricKey(KomradeKey): def decrypt(self,msg,**kwargs): return self.cell.decrypt(msg,**kwargs) - - class KomradeSymmetricKeyWithPassphrase(KomradeSymmetricKey): @@ -76,6 +74,38 @@ class KomradeAsymmetricPrivateKey(KomradeAsymmetricKey): def __repr__(self): return f'''[Asymmetric Private Key] ({b64encode(self.privkey).decode() if self.privkey else '?'})''' + +class KomradeEncryptedKey(object): + def __init__(self,data): self.data=data + def __repr__(self): return f'[Encrypted Key] ({self.data})' + +class KomradeEncryptedAsymmetricPrivateKey(KomradeEncryptedKey): + def __repr__(self): return f'[Encrypted Asymmetric Private Key] ({self.data})' +class KomradeEncryptedAsymmetricPublicKey(KomradeEncryptedKey): + def __repr__(self): return f'[Encrypted Asymmetric Public Key] ({self.data})' +class KomradeEncryptedSymmetricKey(KomradeEncryptedKey): + def __repr__(self): return f'[Encrypted Symmetric Key] ({self.data})' + +def get_encrypted_key_obj(data,name_of_encrypted_key): + if name_of_encrypted_key.startswith('privkey'): + return KomradeEncryptedAsymmetricPrivateKey(data) + elif name_of_encrypted_key.startswith('pubkey'): + return KomradeEncryptedAsymmetricPublicKey(data) + else: + return KomradeEncryptedSymmetricKey(data) + + + + + + + + + + + + + class Keymaker(Logger): def __init__(self, name=None, @@ -265,8 +295,12 @@ class Keymaker(Logger): _key = keychain[name_of_what_to_encrypt] # self.log(f'about to encrypt key {name_of_what_to_encrypt}, using {the_key_to_encrypt_it_with}, which is a type {KEYMAKER_DEFAULT_KEY_TYPES[the_key_to_encrypt_it_with]} and has value {keychain[the_key_to_encrypt_it_with]}') _key_encr = _key_decr.encrypt(_key) + + + _key_encr_obj = get_encrypted_key_obj(_key_encr, name_of_what_to_encrypt) + # self.log(f'{_key}\n-- encrypting ----->\n{_key_encr}') - keychain[key_name]=_key_encr + keychain[key_name]=_key_encr_obj return keychain