aes.h 979 B

12345678910111213141516171819202122232425262728293031323334
  1. #ifndef AES_H_
  2. #define AES_H_
  3. #include <stdlib.h>
  4. #define BLOCK_LENGTH 16
  5. typedef struct aes_padded_data_t {
  6. /// @brief original data, unmodified.
  7. uint8_t* data;
  8. /// @brief the last block, modified with padding added.
  9. uint8_t* padded_block;
  10. /// @brief original length.
  11. size_t data_length;
  12. /// @brief length when excluding the block to be modified.
  13. size_t data_length_before_pad;
  14. /// @brief `data_length_before_pad` + BLOCK_LENGTH
  15. size_t length;
  16. } aes_padded_data_t;
  17. typedef enum aes_encryption_mode_t {
  18. encryption,
  19. decryption,
  20. } aes_encryption_mode_t;
  21. aes_padded_data_t aes_create_padded_data_container();
  22. uint8_t* aes_drop_padded_data_container(aes_padded_data_t* data);
  23. int aes_pad_data(aes_padded_data_t* ptr, uint8_t* data, size_t length);
  24. void aes_ecb(aes_encryption_mode_t mode, aes_padded_data_t* data, uint8_t* key);
  25. void aes_cbc(aes_encryption_mode_t mode, aes_padded_data_t* data, uint8_t* key);
  26. #endif // AES_H_