|
- from cryptography.hazmat.backends import default_backend
- from cryptography.hazmat.primitives.ciphers import (
- Cipher, algorithms, modes
- )
- from cryptography.exceptions import InvalidTag
-
- import random
- import unittest
-
- TAG_LENGTH = 16
-
- class TestAES(unittest.TestCase):
- def test_aesgcm_cav(self):
- pass
-
- def test_aesgcm(self):
- buf = bytes.fromhex('00000000000000000000000000000000')
-
- key = bytes.fromhex('00000000000000000000000000000000')
-
- iv = bytes.fromhex('000000000000000000000000')
-
- origdata = buf
-
- # encryption
- encryptor = Cipher(algorithms.AES(key),
- modes.GCM(iv), backend=default_backend()
- ).encryptor()
-
- last = True
- #if version == 'aes128gcm':
- data = encryptor.update(buf)
-
- self.assertEqual(data, bytes.fromhex('0388dace60b6a392f328c2b971b2fe78'))
- data += encryptor.finalize()
-
- self.assertEqual(encryptor.tag, bytes.fromhex('ab6e47d42cec13bdf53a67b21257bddf'))
-
- data += encryptor.tag
-
- encdata = data
-
- # decryption
- content = encdata
- decryptor = Cipher(algorithms.AES(key),
- modes.GCM(iv, tag=content[-TAG_LENGTH:]),
- backend=default_backend()
- ).decryptor()
- decdata = decryptor.update(content[:-TAG_LENGTH]) + decryptor.finalize()
-
- self.assertEqual(origdata, decdata)
-
- # decryption
- content = encdata
- decryptor = Cipher(algorithms.AES(key),
- modes.GCM(iv, tag=b'\x00' * TAG_LENGTH),
- backend=default_backend()
- ).decryptor()
- decdata = decryptor.update(content[:-TAG_LENGTH])
-
- self.assertRaises(InvalidTag, decryptor.finalize)
|