2021-09-22 17:14:47 +08:00
|
|
|
/***********************************************************************
|
|
|
|
* All rights reserved.
|
|
|
|
* Filename : aes.h
|
|
|
|
* Description : aes driver header file
|
|
|
|
* Author(s) : Eric
|
|
|
|
* version : V1.0
|
|
|
|
* Modify date : 2016-03-24
|
|
|
|
***********************************************************************/
|
|
|
|
#ifndef __AES_H__
|
|
|
|
#define __AES_H__
|
|
|
|
|
|
|
|
#include "ACM32Fxx_HAL.h"
|
|
|
|
|
|
|
|
#define AES_ENCRYPTION 1
|
|
|
|
#define AES_DECRYPTION 0
|
|
|
|
#define AES_ECB_MODE 0
|
|
|
|
#define AES_CBC_MODE 1
|
|
|
|
#define AES_SWAP_ENABLE 1
|
|
|
|
#define AES_SWAP_DISABLE 0
|
|
|
|
|
|
|
|
#define AES_NORMAL_MODE 0x12345678
|
|
|
|
#define AES_SECURITY_MODE 0
|
|
|
|
|
|
|
|
#define AES_KEY_128 0
|
|
|
|
#define AES_KEY_192 1
|
|
|
|
#define AES_KEY_256 2
|
|
|
|
|
|
|
|
#define AES_FAIL 0x00
|
|
|
|
#define AES_PASS 0xa59ada68
|
|
|
|
|
|
|
|
#define BIT_AES (1<<28)
|
|
|
|
|
|
|
|
/************************************************************************
|
|
|
|
* function : delay
|
|
|
|
* Description: delay for a while.
|
|
|
|
* input :
|
|
|
|
* count: count to decrease
|
|
|
|
* return: none
|
|
|
|
************************************************************************/
|
|
|
|
extern void delay(uint32_t count);
|
|
|
|
|
|
|
|
|
|
|
|
/******************************************************************************
|
|
|
|
* Name: HAL_AES_SetKey
|
|
|
|
* Function: set key of AES
|
|
|
|
* Input:
|
|
|
|
keyin -- pointer to buffer of key
|
|
|
|
key_len -- select length of key(AES_KEY_128/ AES_KEY_192/ AES_KEY_256)
|
|
|
|
swap_en -- AES_SWAP_ENABLE, AES_SWAP_DISABLE
|
|
|
|
* Return: None
|
|
|
|
*******************************************************************************/
|
|
|
|
void HAL_AES_SetKey(UINT32 *keyin, UINT8 key_len, UINT8 swap_en);
|
|
|
|
void HAL_AES_SetKey_U8(UINT8 *keyin, UINT8 key_len, UINT8 swap_en);
|
|
|
|
|
|
|
|
|
|
|
|
/******************************************************************************
|
|
|
|
Name: HAL_AES_Crypt
|
|
|
|
Function: Function for AES encryption and decryption
|
|
|
|
Input:
|
|
|
|
indata -- pointer to buffer of input
|
|
|
|
outdata -- pointer to buffer of result
|
|
|
|
block_len -- block(128bit) length for aes cryption
|
|
|
|
operation -- AES_ENCRYPTION,AES_DECRYPTION
|
|
|
|
mode -- AES_ECB_MODE, AES_CBC_MODE,
|
|
|
|
iv -- initial vector for CBC mode
|
2023-04-02 00:07:10 +08:00
|
|
|
security_mode -- AES_NORMAL_MODE, AES_SECURITY_MODE
|
2021-09-22 17:14:47 +08:00
|
|
|
Return: None
|
|
|
|
|
|
|
|
*******************************************************************************/
|
|
|
|
uint32_t HAL_AES_Crypt(
|
|
|
|
uint32_t *indata,
|
|
|
|
uint32_t *outdata,
|
|
|
|
uint32_t block_len,
|
|
|
|
uint8_t operation,
|
|
|
|
uint8_t mode,
|
|
|
|
uint32_t *iv,
|
|
|
|
uint32_t security_mode
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
uint32_t HAL_AES_Crypt_U8(
|
|
|
|
uint8_t *indata,
|
|
|
|
uint8_t *outdata,
|
|
|
|
uint32_t block_len,
|
|
|
|
uint8_t operation,
|
|
|
|
uint8_t mode,
|
|
|
|
uint8_t *iv,
|
|
|
|
uint32_t security_mode
|
|
|
|
);
|
|
|
|
|
|
|
|
#endif
|
|
|
|
/******************************************************************************
|
|
|
|
* end of file
|
|
|
|
*******************************************************************************/
|