def cipher_key(self, sender: ID, receiver: ID, generate: bool = False) -> Optional[SymmetricKey]: if receiver.is_broadcast: return SymmetricKey.generate(algorithm=PlainKey.PLAIN) # get key from cache key = self.__cipher_key(sender, receiver) if key is None and generate: key = SymmetricKey.generate(algorithm=SymmetricKey.AES) self.__cache_cipher_key(key=key, sender=sender, receiver=receiver) return key
def cipher_key(self, sender: ID, receiver: ID, generate: bool = False) -> Optional[SymmetricKey]: if receiver.is_broadcast: return plain_key # get key from cache key = self.__cipher_key(sender, receiver) if key is None and generate: # generate and cache it key = SymmetricKey.generate(algorithm=SymmetricKey.AES) assert key is not None, 'failed to generate key' self.cache_cipher_key(key=key, sender=sender, receiver=receiver) return key