Skip to content

Commit

Permalink
Rename additional_data to associated_data.
Browse files Browse the repository at this point in the history
  • Loading branch information
Ayrx committed Dec 6, 2014
1 parent b414c5b commit 501c026
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 12 deletions.
20 changes: 10 additions & 10 deletions aead/__init__.py
Expand Up @@ -22,13 +22,13 @@ def __init__(self, key, backend=default_backend()):
def generate_key(cls):
return base64.urlsafe_b64encode(os.urandom(32))

def encrypt(self, data, additional_data):
def encrypt(self, data, associated_data):
iv = os.urandom(16)
return base64.urlsafe_b64encode(
self._encrypt_from_parts(data, additional_data, iv)
self._encrypt_from_parts(data, associated_data, iv)
)

def _encrypt_from_parts(self, data, additional_data, iv):
def _encrypt_from_parts(self, data, associated_data, iv):
padder = padding.PKCS7(algorithms.AES.block_size).padder()
padded_data = padder.update(data) + padder.finalize()

Expand All @@ -39,29 +39,29 @@ def _encrypt_from_parts(self, data, additional_data, iv):
encryptor = cipher.encryptor()
cipher_text = iv + encryptor.update(padded_data) + encryptor.finalize()

additional_data_length = struct.pack(">Q", len(additional_data) * 8)
associated_data_length = struct.pack(">Q", len(associated_data) * 8)

h = hmac.HMAC(self.mac_key, hashes.SHA256(), self.backend)
h.update(additional_data)
h.update(associated_data)
h.update(cipher_text)
h.update(additional_data_length)
h.update(associated_data_length)
mac = h.finalize()

return cipher_text + mac[:16]

def decrypt(self, data, additional_data):
def decrypt(self, data, associated_data):
decoded_data = base64.urlsafe_b64decode(data)
mac = decoded_data[-16:]
iv = decoded_data[0:16]
cipher_text = decoded_data[16:-16]

additional_data_length = struct.pack(">Q", len(additional_data) * 8)
associated_data_length = struct.pack(">Q", len(associated_data) * 8)

h = hmac.HMAC(self.mac_key, hashes.SHA256(), self.backend)
h.update(additional_data)
h.update(associated_data)
h.update(iv)
h.update(cipher_text)
h.update(additional_data_length)
h.update(associated_data_length)
if not constant_time.bytes_eq(mac, h.finalize()[:16]):
raise ValueError("data provided has an invalid signature.")

Expand Down
4 changes: 2 additions & 2 deletions tests/test_aead.py
Expand Up @@ -20,13 +20,13 @@ def test_vector():

iv = binascii.unhexlify(b"1af38c2dc2b96ffdd86694092341bc04")

additional_data = binascii.unhexlify(
associated_data = binascii.unhexlify(
b"546865207365636f6e64207072696e6369706c65206f66204175677573746520"
b"4b6572636b686f666673"
)

cryptor = AEAD(key)
foo = cryptor._encrypt_from_parts(data, additional_data, iv)
foo = cryptor._encrypt_from_parts(data, associated_data, iv)

assert binascii.hexlify(foo) == (
b"1af38c2dc2b96ffdd86694092341bc04c80edfa32ddf39d5ef00c0b468834279"
Expand Down

0 comments on commit 501c026

Please sign in to comment.