aes.h 911 B

123456789101112131415161718192021222324252627282930313233
  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. aes_padded_data_t aes_create_padded_data_container();
  18. typedef enum aes_encryption_mode_t {
  19. encryption,
  20. decryption,
  21. } aes_encryption_mode_t;
  22. int aes_pad_data(aes_padded_data_t* ptr, uint8_t* data, size_t length);
  23. int aes_ecb(aes_encryption_mode_t mode, aes_padded_data_t* data, uint8_t* key);
  24. int aes_cbc(aes_encryption_mode_t mode, aes_padded_data_t* data, uint8_t* key);
  25. #endif // AES_H_