RIOT provides a collection of block cipher ciphers, different operation modes and cryptographic hash algorithms. More...
RIOT provides a collection of block cipher ciphers, different operation modes and cryptographic hash algorithms.
RIOT supports the following block ciphers:
You can use them directly by adding crypto_aes_128, crypto_aes_192 or crypto_aes_256 to your USEMODULE-List. While you can use the ciphers functions directly, you should resort to the generic API for block ciphers whenever possible.
Depending on the selected block ciphers, a sufficient large buffer size of the cipher_context_t is used for en-/de-cryption operations.
Example:
Some aspects of the AES implementation can be fine tuned by pseudo-modules:
If you need to encrypt data of arbitrary size take a look at the different operation modes like: CBC, CTR or CCM.
Additional examples can be found in the test suite.
Modules | |
| HACL* High Assurance Cryptographic Library | |
| Support for HACL* (High Assurance Cryptographic Library) | |
| Lightweight ASN.1 decoding/encoding library | |
| Lightweight ASN.1 decoding/encoding library. | |
| Micro-ECC for RIOT | |
| Micro-ECC for RIOT. | |
| Relic toolkit for RIOT | |
| Provides the Relic cryptographic toolkit to RIOT. | |
| chacha20poly1305 AEAD cipher | |
| Provides RFC 8439 style chacha20poly1305. | |
| poly1305 | |
| Poly1305 one-time message authentication code. | |
Files | |
| file | aes.h |
| Headers for the implementation of the AES cipher-algorithm. | |
| file | chacha.h |
| ChaCha stream cipher. | |
| file | ciphers.h |
| Headers for the packet encryption class. | |
| file | helper.h |
| helper functions for sys_crypto_modes | |
| file | cbc.h |
| Cipher block chaining mode of operation for block ciphers. | |
| file | ccm.h |
| Counter with CBC-MAC mode of operation for block ciphers. | |
| file | ctr.h |
| Counter mode of operation for block ciphers. | |
| file | ecb.h |
| Electronic code book mode of operation for block ciphers. | |
| file | ocb.h |
| Offset Codebook (OCB3) AEAD mode as specified in RFC 7253. | |