60 lines
1.1 KiB
C
60 lines
1.1 KiB
C
#ifndef _HAL_SYSAES_H_
|
|
#define _HAL_SYSAES_H_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*----- AES Control Codes: Mode Parameters: Key length -----*/
|
|
|
|
|
|
|
|
enum SYSAES_KEY_LEN {
|
|
AES_KEY_LEN_BIT_128,
|
|
AES_KEY_LEN_BIT_192,
|
|
AES_KEY_LEN_BIT_256,
|
|
};
|
|
|
|
|
|
enum SYSAES_MODE {
|
|
AES_MODE_ECB,
|
|
AES_MODE_CBC,
|
|
AES_MODE_CTR,
|
|
// AES_MODE_CFB1,
|
|
// AES_MODE_CFB8,
|
|
// AES_MODE_CFB128,
|
|
// AES_MODE_OFB,
|
|
// AES_MODE_CTR,
|
|
};
|
|
|
|
#define AES_BLOCK_SIZE 16
|
|
|
|
struct sysaes_para {
|
|
uint8 mode; /* enum SYSAES_MODE */
|
|
uint8 key_len; /* enum SYSAES_KEY_LEN */
|
|
uint8 *src;
|
|
uint8 *dest;
|
|
uint32 aes_len; /* v1-v2 blocks, v3 bytes */
|
|
uint8 key[32];
|
|
uint8 *iv; /* AES_BLOCK_SIZE : 16 */
|
|
};
|
|
|
|
struct sysaes_dev {
|
|
struct dev_obj dev;
|
|
};
|
|
|
|
struct aes_hal_ops {
|
|
struct devobj_ops ops;
|
|
int32(*encrypt)(struct sysaes_dev *dev, struct sysaes_para *para);
|
|
int32(*decrypt)(struct sysaes_dev *dev, struct sysaes_para *para);
|
|
};
|
|
|
|
int32 sysaes_encrypt(struct sysaes_dev *dev, struct sysaes_para *para);
|
|
int32 sysaes_decrypt(struct sysaes_dev *dev, struct sysaes_para *para);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* _HAL_SYSAES_H_ */
|
|
|