diff --git a/komrade/backend/keymaker.py b/komrade/backend/keymaker.py index c5ce247..354b048 100644 --- a/komrade/backend/keymaker.py +++ b/komrade/backend/keymaker.py @@ -396,26 +396,7 @@ class Keymaker(Logger): - def gen_encr_keys(self,keychain,keys_to_gen,passphrase=DEBUG_DEFAULT_PASSPHRASE): - """ - Encrypt other keys with still other keys! - """ - # generate encrypted keys too - for key_name in keys_to_gen: - if key_name.endswith('_encr') and key_name not in keychain: - - # get data to encrypt - name_of_what_to_encrypt = key_name[:-len('_encr')] - the_key_to_encrypt_it_with = name_of_what_to_encrypt + '_decr' - - if the_key_to_encrypt_it_with in keychain and name_of_what_to_encrypt in keychain: - _key_decr_obj = keychain[the_key_to_encrypt_it_with] - _key = keychain[name_of_what_to_encrypt] - _key_encr = _key_decr.encrypt(_key.data) - _key_encr_obj = get_encrypted_key_obj(_key_encr, name_of_what_to_encrypt) - - keychain[key_name]=_key_encr_obj - return keychain + def forge_new_keys(self, @@ -462,7 +443,7 @@ Keymaker ({self}) is forging new keys for {name} # gen encrypted keys! self.log('I built this keychain v1!',dict_format(keychain,tab=2)) - keychain = self.gen_encr_keys(keychain,keys_to_gen,passphrase=passphrase) + keychain = self.disassemble(keychain,passphrase=passphrase) self.log('I built this keychain v2!',dict_format(keychain,tab=2)) self.status('@Keymaker: I ended up building these keys:',keychain) @@ -559,7 +540,7 @@ Keymaker ({self}) is forging new keys for {name} return (uri_id,keys_saved_d,keychain) - def assemble(self,keychain,passphrase=None,key_types=KEYMAKER_DEFAULT_KEY_TYPES): + def assemble(self,keychain,passphrase=None,key_types=KEYMAKER_DEFAULT_KEY_TYPES,decrypt=True): encr_keys = [k for k in keychain.keys() if k.endswith('_encr')] for encr_key_name in encr_keys: decr_key_name = encr_key_name[:-5] + '_decr' @@ -573,12 +554,22 @@ Keymaker ({self}) is forging new keys for {name} else: continue decr_key = keychain.get(decr_key_name) - encr_key = keychain.get(encr_key_name) # self.log('?',decr_key,decr_key_name,encr_key_name,keychain[encr_key_name]) - unencr_key = decr_key.decrypt(encr_key) - keychain[unencr_key_name] = get_key_obj(unencr_key_name,unencr_key) + if decrypt: + encr_key = keychain.get(encr_key_name) + unencr_key = decr_key.decrypt(encr_key) + keychain[unencr_key_name] = get_key_obj(unencr_key_name,unencr_key) + else: + unencr_key = keychain.get(unencr_key_name) + encr_key = decr_key.encrypt(unencr_key) + keychain[encr_key_name] = get_key_obj(encr_key_name,encr_key) + return keychain + def disassemble(self,keychain,**kwargs): + return self.assemble(keychain,decrypt=False,**kwargs) + + if __name__ == '__main__': keymaker = Keymaker('marx69')