circuitpython/shared-bindings
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
..
2020-05-04 23:05:47 -04:00
2020-02-13 07:28:21 -08:00
2020-02-27 11:03:03 -06:00
2020-01-06 09:26:32 -06:00
2020-04-30 19:14:51 -05:00
2018-08-07 14:58:57 -07:00
2020-03-31 17:00:30 -07:00
2019-12-13 14:29:15 -05:00
2019-10-23 15:48:34 -07:00
2018-12-30 22:49:20 -05:00
2020-02-07 10:24:11 -05:00
2020-04-22 09:04:12 -05:00
2019-05-30 19:02:47 -07:00