memory: add helper methods encryptValue and decryptValue

This commit is contained in:
souliane 2014-06-25 19:01:00 +02:00
commit 94d36a7d3e

View file

@ -517,6 +517,36 @@ class Memory(object):
except KeyError:
log.debug("Can't delete entity [%s]: not in cache" % entity.full())
def encryptValue(self, value, profile):
"""Encrypt a value for the given profile. The personal key must be loaded
already in the profile session, that should be the case if the profile is
already authenticated.
@param value (str): the value to encrypt
@param profile (str): %(doc_profile)s
@return: the deferred encrypted value
"""
try:
personal_key = self.host.memory.auth_sessions.profileGetUnique(profile)[C.MEMORY_CRYPTO_KEY]
except TypeError:
raise exceptions.InternalError(_('Trying to encrypt a value for %s while the personal key is undefined!') % profile)
return BlockCipher.encrypt(personal_key, value)
def decryptValue(self, value, profile):
"""Decrypt a value for the given profile. The personal key must be loaded
already in the profile session, that should be the case if the profile is
already authenticated.
@param value (str): the value to decrypt
@param profile (str): %(doc_profile)s
@return: the deferred decrypted value
"""
try:
personal_key = self.host.memory.auth_sessions.profileGetUnique(profile)[C.MEMORY_CRYPTO_KEY]
except TypeError:
raise exceptions.InternalError(_('Trying to decrypt a value for %s while the personal key is undefined!') % profile)
return BlockCipher.decrypt(personal_key, value)
def encryptPersonalData(self, data_key, data_value, crypto_key, profile):
"""Re-encrypt a personal data (saved to a PersistentDict).