Sean Cross b168784fa0 aesio: add basic AES encryption and decryption
This adds initial support for an AES module named aesio.  This
implementation supports only a subset of AES modes, namely
ECB, CBC, and CTR modes.

Example usage:

```
>>> import aesio
>>>
>>> key = b'Sixteen byte key'
>>> cipher = aesio.AES(key, aesio.MODE_ECB)
>>> output = bytearray(16)
>>> cipher.encrypt_into(b'Circuit Python!!', output)
>>> output
bytearray(b'E\x14\x85\x18\x9a\x9c\r\x95>\xa7kV\xa2`\x8b\n')
>>>
```

This key is 16-bytes, so it uses AES128.  If your key is 24- or 32-
bytes long, it will switch to AES192 or AES256 respectively.

This has been tested with many of the official NIST test vectors,
such as those used in `pycryptodome` at
39626a5b01/lib/Crypto/SelfTest/Cipher/test_vectors/AES

CTR has not been tested as NIST does not provide test vectors for it.

Signed-off-by: Sean Cross <sean@xobs.io>
2020-05-06 17:40:06 +08:00
..
2018-07-12 14:13:51 -04:00
2018-07-12 14:13:51 -04:00
2018-07-12 14:13:51 -04:00
2018-07-12 14:13:51 -04:00
2018-08-09 13:29:30 -07:00
2020-02-27 11:03:03 -06:00
2018-08-16 17:41:35 -07:00
2018-07-28 13:29:47 -04:00
2020-03-03 10:55:50 -08:00
2019-04-05 21:38:32 +02:00
2018-07-11 16:45:30 -04:00
2018-07-11 16:45:30 -04:00
2018-10-18 10:37:42 -07:00
2018-10-07 19:37:49 +02:00
2018-11-13 22:04:44 +01:00
2017-07-18 11:57:39 +10:00
2018-07-12 14:13:51 -04:00
2019-12-13 14:29:15 -05:00
2019-01-18 11:53:09 -08:00
2019-01-14 18:09:02 -08:00
2020-02-04 16:55:56 -05:00
2020-02-14 15:12:20 -05:00
2020-01-30 10:59:16 -08:00
2020-01-02 18:03:18 -05:00
2019-12-13 14:29:15 -05:00
2020-01-02 18:03:18 -05:00
2019-12-13 14:29:15 -05:00
2019-12-13 14:29:15 -05:00
2019-12-05 13:06:10 -06:00
2018-08-07 14:58:57 -07:00
2018-05-14 17:41:17 -04:00
2018-05-14 17:41:17 -04:00
2020-04-21 22:40:12 -04:00
2020-04-21 22:40:12 -04:00
2018-07-11 16:45:30 -04:00
2020-02-04 16:19:40 -05:00
2018-07-11 16:45:30 -04:00
2020-01-08 16:36:43 -06:00