lib_aes.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /***************************************************************
  2. *Copyright (C), 2017, Shanghai Eastsoft Microelectronics Co., Ltd
  3. *文件名: lib_aes.c
  4. *作 者: zoux
  5. *版 本: V1.00
  6. *日 期: 2017/07/14
  7. *描 述: AES模块库函数
  8. *备 注: 适用于 ES8P508x芯片
  9. 本软件仅供学习和演示使用,对用户直接引用代码所带来的风险或后果不承担任何法律责任。
  10. ***************************************************************/
  11. #ifndef __LIBAES_H__
  12. #define __LIBAES_H__
  13. #include "ES8P508x.h"
  14. #include "type.h"
  15. /* 加密解密模式选择位 */
  16. typedef enum {
  17. AES_MODE_DECRYPT = 0, /* 解密 */
  18. AES_MODE_ENCRYPT = 1, /* 加密 */
  19. }AES_TYPE_MODE;
  20. /* 加密/解密控制位 */
  21. typedef enum {
  22. AES_DONE_YES = 0, /* 加密完成 */
  23. AES_DONE_NO = 1, /* 正在加密 */
  24. }AES_TYPE_DONE;
  25. /* 加解密数据结构体 */
  26. typedef struct {
  27. uint32_t DATA[4];
  28. }AES_DATA_TypeDef;
  29. typedef enum {
  30. AES_IF_IF = 0x80,
  31. }AES_TYPE_IF;
  32. typedef enum {
  33. AES_IT_IT = 0x40,
  34. }AES_TYPE_IT;
  35. /* 加解密密钥结构体 */
  36. typedef struct {
  37. uint32_t KEY[4];
  38. }AES_KEY_TypeDef;
  39. /* 加解密初始结构体 */
  40. typedef struct {
  41. AES_TYPE_MODE MODE; /* 加密或者解密 */
  42. }AES_InitStruType;
  43. /* 加解密使能,开始加密 */
  44. #define AES_Enable() (AES->CON.GO_DONE = 1)
  45. /* 加密模块关闭 */
  46. #define AES_Disable() (AES->CON.GO_DONE = 0)
  47. /********************* ADC模块函数声明 *********************/
  48. void AES_Init(AES_InitStruType * AES_InitStruct);
  49. void AES_WriteKey(uint32_t *AES_KEY);
  50. void AES_ReadKey(uint32_t * AES_KEY);
  51. void AES_WriteData(uint32_t *AES_DATA);
  52. void AES_ReadData(uint32_t * AES_DATA);
  53. void AES_ITConfig(AES_TYPE_IT AES_IE, TYPE_FUNCEN NewState);
  54. void AES_ClearITPendingBit(void);
  55. FlagStatus AES_GetFlagStatus(AES_TYPE_IF Flag);
  56. AES_TYPE_DONE AES_GetDoneStatus(void);
  57. void AES_Reset(void);
  58. #endif