def value_decode(self, val): log.debug("Got value to decode: %s" % val) encoded_data = val val = base64.b64decode(val.strip('"')) hashlength = get_hash_length(self.hashalg) / 4 sig, data = val[:hashlength], val[hashlength:] if verify_data(data, sig, self.sig_key, self.hashalg): return self.serializer.loads(data), encoded_data
def value_decode(self, val): encoded_data = val val = base64.b64decode(val.strip('"')) hashlength = get_hash_length(self.hashalg) / 4 sig, ciphertext = val[:hashlength], val[hashlength:] data = decrypt_authenticated(ciphertext, sig, self.enc_key, self.sig_key, self.hashalg) return self.serializer.loads(data), encoded_data
def test_get_hash_length(): for algname, length in [('md5', 128), ('sha1', 160), ('sha256', 256), ('sha512', 512)]: alg = getattr(hashlib, algname) assert get_hash_length(alg) == length