diff --git a/komrade/backend/keymaker.py b/komrade/backend/keymaker.py index 014492e..9d63378 100644 --- a/komrade/backend/keymaker.py +++ b/komrade/backend/keymaker.py @@ -10,6 +10,15 @@ class KomradeKey(ABC): def decrypt(self,msg,**kwargs): pass @abstractmethod def data(self): pass + @property + def data_b64(self):return b64encode(self.data) + @property + def discreet(self,num_chars_on_either_side_to_show=7,ellipsis='...'): + if not self.data: return '?' + if not self.data_b64: return '?' + b64str=self.data_b64.decode() + dstr = b64str[:num_chars_on_either_side_to_show] + ellipsis + b64str[-num_chars_on_either_side_to_show:] + return f'{dstr} [len: {len(b64str)}]' class KomradeSymmetricKey(KomradeKey): @@ -37,14 +46,14 @@ class KomradeSymmetricKeyWithPassphrase(KomradeSymmetricKey): #return self.passphrase @property def data(self): return KEY_TYPE_SYMMETRIC_WITH_PASSPHRASE.encode('utf-8') - def __repr__(self): return f'[Symmetric Key] ({self.data})' + def __repr__(self): return f'[Symmetric Key] ({self.discreet})' class KomradeSymmetricKeyWithoutPassphrase(KomradeSymmetricKey): def __init__(self,key=None): self.key = GenerateSymmetricKey() if not key else key @property def data(self): return self.key - def __repr__(self): return f'[Symmetric Key] ({b64encode(self.key).decode()})' + def __repr__(self): return f'[Symmetric Key] ({self.discreet})' @@ -67,26 +76,31 @@ class KomradeAsymmetricKey(KomradeKey): class KomradeAsymmetricPublicKey(KomradeAsymmetricKey): @property def key(self): return self.pubkey - def __repr__(self): return f'''[Asymmetric Public Key] ({b64encode(self.pubkey).decode() if self.pubkey else '?'})''' + @property + def data(self): return self.pubkey + + def __repr__(self): return f'''[Asymmetric Public Key] ({self.discreet})''' class KomradeAsymmetricPrivateKey(KomradeAsymmetricKey): + @property + def data(self): return self.privkey @property def key(self): return self.privkey - def __repr__(self): return f'''[Asymmetric Private Key] ({b64encode(self.privkey).decode() if self.privkey else '?'})''' + def __repr__(self): return f'''[Asymmetric Private Key] ({self.discreet})''' class KomradeEncryptedKey(object): def __init__(self,data): self.data=data @property - def data_b64(self): return b64encode(self.data) - def __repr__(self): return f'[Encrypted Key] ({self.data_b64})' + def data_b64(self): return b64encode(self.data).decode() + def __repr__(self): return f'[Encrypted Key] ({self.discreet})' class KomradeEncryptedAsymmetricPrivateKey(KomradeEncryptedKey): - def __repr__(self): return f'[Encrypted Asymmetric Private Key] ({self.data_b64})' + def __repr__(self): return f'[Encrypted Asymmetric Private Key] ({self.discreet})' class KomradeEncryptedAsymmetricPublicKey(KomradeEncryptedKey): - def __repr__(self): return f'[Encrypted Asymmetric Public Key] ({self.data_b64})' + def __repr__(self): return f'[Encrypted Asymmetric Public Key] ({self.discreet})' class KomradeEncryptedSymmetricKey(KomradeEncryptedKey): - def __repr__(self): return f'[Encrypted Symmetric Key] ({self.data_b64})' + def __repr__(self): return f'[Encrypted Symmetric Key] ({self.discreet})' def get_encrypted_key_obj(data,name_of_encrypted_key): if name_of_encrypted_key.startswith('privkey'):