3 from pyoram.crypto.aes import AES
5 class TestAES(unittest2.TestCase):
8 self.assertEqual(len(AES.key_sizes), 3)
9 self.assertEqual(len(set(AES.key_sizes)), 3)
10 for keysize in AES.key_sizes:
14 k = AES.KeyGen(keysize)
15 self.assertEqual(len(k), keysize)
18 self.assertEqual(len(key_list), 10)
19 # make sure every key is unique
20 self.assertEqual(len(key_list), len(key_set))
26 lambda i, size: bytes(bytearray([i]) * size))
32 lambda i, size: bytes(bytearray([i]) * size))
34 def _test_Enc_Dec(self,
38 blocksize_factor = [0.5, 1, 1.5, 2, 2.5]
40 for i, f in enumerate(blocksize_factor):
41 size = AES.block_size * f
42 size = int(round(size))
44 assert (size % AES.block_size) != 0
45 plaintext_blocks.append(get_plaintext(i, size))
47 assert len(AES.key_sizes) > 0
48 ciphertext_blocks = {}
50 for keysize in AES.key_sizes:
51 key = AES.KeyGen(keysize)
53 ciphertext_blocks[keysize] = []
54 for block in plaintext_blocks:
55 ciphertext_blocks[keysize].append(
58 self.assertEqual(len(ciphertext_blocks),
60 self.assertEqual(len(keys),
63 plaintext_decrypted_blocks = {}
66 plaintext_decrypted_blocks[keysize] = []
67 for block in ciphertext_blocks[keysize]:
68 plaintext_decrypted_blocks[keysize].append(
71 self.assertEqual(len(plaintext_decrypted_blocks),
74 for i in range(len(blocksize_factor)):
75 for keysize in AES.key_sizes:
78 plaintext_decrypted_blocks[keysize][i])
81 ciphertext_blocks[keysize][i])
82 if enc_func is AES.CTREnc:
84 len(ciphertext_blocks[keysize][i]),
85 len(plaintext_blocks[i]) + AES.block_size)
87 assert enc_func is AES.GCMEnc
89 len(ciphertext_blocks[keysize][i]),
90 len(plaintext_blocks[i]) + 2*AES.block_size)
93 alt_ciphertext = enc_func(key, plaintext_blocks[i])
95 ciphertext_blocks[keysize][i],
98 len(ciphertext_blocks[keysize][i]),
101 ciphertext_blocks[keysize][i][:AES.block_size],
102 alt_ciphertext[:AES.block_size])
104 ciphertext_blocks[keysize][i][AES.block_size:],
105 alt_ciphertext[AES.block_size:])
107 if __name__ == "__main__":
108 unittest2.main() # pragma: no cover