summaryrefslogtreecommitdiff
path: root/shared-bindings/aesio
AgeCommit message (Collapse)Author
2020-08-07Modify some Python stubsTaku Fukada
2020-07-27Fix several type hintsTaku Fukada
2020-07-24Add and correct some type hintsTaku Fukada
2020-07-03Made most of the requested changesdherrada
2020-07-02Changed unions to ReadableBuffer and WriteableBufferdherrada
2020-07-02Made suggested changesdherrada
2020-07-02Changed bytearray to a uniondherrada
2020-07-02Did aesiodherrada
2020-06-03Fix up end of file and trailing whitespace.Diego Elio Pettenò
This can be enforced by pre-commit, but correct it separately to make it easier to review.
2020-05-15Merge pull request #2810 from dherrada/masterScott Shawcroft
Pyi integration
2020-05-15aesio: specify writable buffers for destination buffersSean Cross
When calling `AES.decrypt_into()` or `AES.encrypt_into()`, the destination buffers may be any buffer kind. However, we currently aren't checking to make sure the destination buffer is actually writable. Specify `MP_BUFFER_WRITE` for the destination buffers of both of these objects so we don't inadvertently write to immutable data. Signed-off-by: Sean Cross <sean@xobs.io>
2020-05-15aesio: use bufinfo rather than mp_str_bytesSean Cross
In order to accept both `bytes` objects and `bytearray` objects, use a `bufinfo` construct to retrieve the data rather than `mp_obj_str_get_data()`. Signed-off-by: Sean Cross <sean@xobs.io>
2020-05-12Swap sphinx to autoapi and the inline stubsScott Shawcroft
2020-05-06aesio: add basic AES encryption and decryptionSean Cross
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 https://github.com/Legrandin/pycryptodome/tree/39626a5b01ce5c1cf51d022be166ad0aea722177/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>