#ifndef AES_H_ #define AES_H_ #include #define BLOCK_LENGTH 16 typedef struct aes_padded_data_t { /// @brief original data, unmodified. uint8_t* data; /// @brief the last block, modified with padding added. uint8_t* padded_block; /// @brief original length. size_t data_length; /// @brief length when excluding the block to be modified. size_t data_length_before_pad; /// @brief `data_length_before_pad` + BLOCK_LENGTH size_t length; } aes_padded_data_t; aes_padded_data_t aes_create_padded_data_container(); typedef enum aes_encryption_mode_t { encryption, decryption, } aes_encryption_mode_t; int aes_pad_data(aes_padded_data_t* ptr, uint8_t* data, size_t length); int aes_ecb(aes_encryption_mode_t mode, aes_padded_data_t* data, uint8_t* key); int aes_cbc(aes_encryption_mode_t mode, aes_padded_data_t* data, uint8_t* key); #endif // AES_H_