AES驱动API描述
AES驱动的API主要包括:
| API类别 | API名称 | 描述 |
|---|---|---|
|
初始化 |
hal_aes_init() |
初始化AES外设,配置密钥等参数。 |
|
hal_aes_deinit() |
反初始化AES外设。 |
|
|
hal_aes_msp_init() |
初始化AES外设所使用的NVIC中断。 |
|
|
hal_aes_msp_deinit() |
反初始化AES外设所使用的NVIC中断。 |
|
|
IO操作 |
hal_aes_ecb_encrypt() |
ECB模式加密,轮询方式。 |
|
hal_aes_ecb_decrypt() |
ECB模式解密,轮询方式。 |
|
|
hal_aes_cbc_encrypt() |
CBC模式加密,轮询方式。 |
|
|
hal_aes_cbc_decrypt() |
CBC模式解密,轮询方式。 |
|
|
hal_aes_ecb_encrypt_it() |
ECB模式加密,中断方式。 |
|
|
hal_aes_ecb_decrypt_it() |
ECB模式解密,中断方式。 |
|
|
hal_aes_cbc_encrypt_it() |
CBC模式加密,中断方式。 |
|
|
hal_aes_cbc_decrypt_it() |
CBC模式解密,中断方式。 |
|
|
hal_aes_abort() |
中止加解密,轮询方式。 |
|
|
hal_aes_abort_it() |
中止加解密,中断方式。 |
|
|
中断处理及回调函数 |
hal_aes_irq_handler() |
中断处理函数。 |
|
hal_aes_done_callback() |
加解密完成中断回调函数。 |
|
|
hal_aes_error_callback() |
错误中断回调函数。 |
|
|
hal_aes_abort_cplt_callback() |
中止完成中断回调函数。 |
|
|
状态及错误 |
hal_aes_get_state() |
获取驱动运行状态。 |
|
hal_aes_get_error() |
获取错误码。 |
|
|
控制 |
hal_aes_set_timeout() |
设置超时时间。 |
|
睡眠相关 |
hal_aes_suspend_reg() |
睡眠时挂起AES配置相关的寄存器。 |
|
hal_aes_resume_reg() |
唤醒时恢复AES配置相关的寄存器。 |
下面章节将对各API进行详细描述。
hal_aes_init
| 函数原型 | hal_status_t hal_aes_init(aes_handle_t *p_aes) |
|---|---|
| 功能说明 | 根据aes_init_t结构体里的参数初始化AES外设。 |
| 输入参数 | p_aes:指向aes_handle_t结构体变量的指针,该结构体变量包含指定的AES配置信息。 |
| 返回值 | HAL状态。 |
| 备注 |
hal_aes_deinit
| 函数原型 | hal_status_t hal_aes_deinit(aes_handle_t *p_aes) |
|---|---|
| 功能说明 | 反初始化AES外设,将AES模块的寄存器恢复为默认值。 |
| 输入参数 | p_aes:指向aes_handle_t结构体变量的指针,包含指定的寄存器基址。 |
| 返回值 | HAL状态。 |
| 备注 |
hal_aes_msp_init
| 函数原型 | void hal_aes_msp_init(aes_handle_t *p_aes) |
|---|---|
| 功能说明 | 初始化AES外设所使用的NVIC中断、DMA通道等配置。 |
| 输入参数 | p_aes:指向aes_handle_t结构体变量的指针。 |
| 返回值 | 无 |
| 备注 | 该函数为weak类型的空函数,开发者需重写该API完成NVIC中断、DMA通道的初始化。 |
hal_aes_msp_deinit
| 函数原型 | void hal_aes_msp_deinit(aes_handle_t *p_aes) |
|---|---|
| 功能说明 | 反初始化AES外设所使用的NVIC中断、DMA通道等配置。 |
| 输入参数 | p_aes:指向aes_handle_t结构体变量的指针。 |
| 返回值 | 无 |
| 备注 | 该函数为weak类型的空函数,开发者需重写该API完成NVIC中断、DMA通道的反初始化。 |
hal_aes_ecb_encrypt
| 函数原型 | hal_status_t hal_aes_ecb_encrypt(aes_handle_t *p_aes, uint32_t *p_plain_data, uint32_t number, uint32_t *p_cypher_data, uint32_t timeout) |
|---|---|
| 功能说明 | ECB模式加密,轮询方式。 |
| 输入参数 | p_aes:指向aes_handle_t结构体变量的指针。 p_plain_data:指向待加密数据的指针。 number:待加密数据的长度,单位byte,最大取值为32768,且必须为16的整数倍。 p_cypher_data:指向存储加密结果的内存空间的指针。 timeout:超时时间,单位ms。 |
| 返回值 | HAL状态。 |
| 备注 | 待加密数据流超过最大长度时,可分多次加密。 |
hal_aes_ecb_decrypt
| 函数原型 | hal_status_t hal_aes_ecb_decrypt(aes_handle_t *p_aes, uint32_t *p_cypher_data, uint32_t number, uint32_t *p_plain_data, uint32_t timeout) |
|---|---|
| 功能说明 | ECB模式解密,轮询方式。 |
| 输入参数 | p_aes:指向aes_handle_t结构体变量的指针。 p_cypher_data:指向待解密数据的指针。 number:待解密数据的长度,单位byte,最大取值为32768,且必须为16的整数倍。 p_plain_data:指向存储解密结果的内存空间的指针。 timeout:超时时间,单位ms。 |
| 返回值 | HAL状态 |
| 备注 | 待解密数据流超过最大长度时,可分多次解密 |
hal_aes_cbc_encrypt
| 函数原型 | hal_status_t hal_aes_cbc_encrypt(aes_handle_t *p_aes, uint32_t *p_plain_data, uint32_t number, uint32_t *p_cypher_data, uint32_t timeout) |
|---|---|
| 功能说明 | CBC模式加密,轮询方式。 |
| 输入参数 | p_aes:指向aes_handle_t结构体变量的指针。 p_plain_data:指向待加密数据的指针。 number:待加密数据的长度,单位byte,最大取值为32768,且必须为16的整数倍。 p_cypher_data:指向存储加密结果的内存空间的指针。 timeout:超时时间,单位ms。 |
| 返回值 | HAL状态。 |
| 备注 | 待加密数据流超过最大长度时,可分多次加密,并且从第二次开始需重载初始化向量(p_aes->init.p_init_vector)为上一次加密结果的最后16 bytes数据。 |
hal_aes_cbc_decrypt
| 函数原型 | hal_status_t hal_aes_cbc_decrypt(aes_handle_t *p_aes, uint32_t *p_cypher_data, uint32_t number, uint32_t *p_plain_data, uint32_t timeout) |
|---|---|
| 功能说明 | CBC模式解密,轮询方式。 |
| 输入参数 | p_aes:指向aes_handle_t结构体变量的指针。 p_cypher_data:指向待解密数据的指针。 number:待解密数据的长度,单位byte,最大取值为32768,且必须为16的整数倍。 p_plain_data:指向存储解密结果的内存空间的指针。 timeout:超时时间,单位ms。 |
| 返回值 | HAL状态。 |
| 备注 | 待解密数据流超过最大长度时,可分多次解密,从第二次开始需重载初始化向量(p_aes->init.p_init_vector)为上一次待解密数据的最后16 bytes数据。 |
hal_aes_ecb_encrypt_it
| 函数原型 | hal_status_t hal_aes_ecb_encrypt_it(aes_handle_t *p_aes, uint32_t *p_plain_data, uint32_t number, uint32_t *p_cypher_data) |
|---|---|
| 功能说明 | ECB模式加密,中断方式。 |
| 输入参数 | p_aes:指向aes_handle_t结构体变量的指针。 p_plain_data:指向待加密数据的指针。 number:待加密数据的长度,单位byte,最大取值为32768,且必须为16的整数倍。 p_cypher_data:指向存储加密结果的内存空间的指针。 |
| 返回值 | HAL状态。 |
| 备注 | 待加密数据流超过最大长度时,可分多次加密。 |
hal_aes_ecb_decrypt_it
| 函数原型 | hal_status_t hal_aes_ecb_decrypt_it(aes_handle_t *p_aes, uint32_t *p_cypher_data, uint32_t number, uint32_t *p_plain_data) |
|---|---|
| 功能说明 | ECB模式解密,中断方式。 |
| 输入参数 | p_aes:指向aes_handle_t结构体变量的指针。 p_cypher_data:指向待解密数据的指针。 number:待解密数据的长度,单位byte,最大取值为32768,且必须为16的整数倍。 p_plain_data:指向存储解密结果的内存空间的指针。 |
| 返回值 | HAL状态。 |
| 备注 | 待解密数据流超过最大长度时,可分多次解密。 |
hal_aes_cbc_encrypt_it
| 函数原型 | hal_status_t hal_aes_cbc_encrypt_it(aes_handle_t *p_aes, uint32_t *p_plain_data, uint32_t number, uint32_t *p_cypher_data) |
|---|---|
| 功能说明 | CBC模式加密,中断方式。 |
| 输入参数 | p_aes:指向aes_handle_t结构体变量的指针。 p_plain_data:指向待加密数据的指针。 number:待加密数据的长度,单位byte,最大取值为32768,且必须为16的整数倍。 p_cypher_data:指向存储加密结果的内存空间的指针。 |
| 返回值 | HAL状态。 |
| 备注 | 待加密数据流超过最大长度时,可分多次加密,从第二次开始需重载初始化向量(p_aes->init.p_init_vector)为上一次加密结果的最后16 bytes数据。 |
hal_aes_cbc_decrypt_it
| 函数原型 | hal_status_t hal_aes_cbc_decrypt_it(aes_handle_t *p_aes, uint32_t *p_cypher_data, uint32_t number, uint32_t *p_plain_data) |
|---|---|
| 功能说明 | CBC模式解密,中断方式。 |
| 输入参数 | p_aes:指向aes_handle_t结构体变量的指针。 p_cypher_data:指向待解密数据的指针。 number:待解密数据的长度,单位byte,最大取值为32768,且必须为16的整数倍。 p_plain_data:指向存储解密结果的内存空间的指针。 |
| 返回值 | HAL状态。 |
| 备注 | 待解密数据流超过最大长度时,可分多次解密,从第二次开始需重载初始化向量(p_aes->init.p_init_vector)为上一次待解密数据的最后16 bytes数据。 |
hal_aes_abort
| 函数原型 | hal_status_t hal_aes_abort(aes_handle_t *p_aes) |
|---|---|
| 功能说明 | 中止加解密,轮询方式。 |
| 输入参数 | p_aes:指向aes_handle_t结构体变量的指针。 |
| 返回值 | HAL状态。 |
| 备注 | 该接口用于中止非轮询方式的加解密过程。轮询式接口,中止操作完成后返回状态。 |
hal_aes_abort_it
| 函数原型 | hal_status_t hal_aes_abort_it(aes_handle_t *p_aes) |
|---|---|
| 功能说明 | 中止加解密,中断方式。 |
| 输入参数 | p_aes:指向aes_handle_t结构体变量的指针。 |
| 返回值 | HAL状态。 |
| 备注 | 该接口用于中止非轮询方式的加解密过程。非轮询式接口,立即返回状态,中止操作完成后调用hal_aes_abort_cplt_callback()。 |
hal_aes_irq_handler
| 函数原型 | void hal_aes_irq_handler(aes_handle_t *p_aes) |
|---|---|
| 功能说明 | 处理AES中断请求。 |
| 输入参数 | p_aes:指向aes_handle_t结构体变量的指针。 |
| 返回值 | 无 |
| 备注 |
hal_aes_done_callback
| 函数原型 | void hal_aes_done_callback(aes_handle_t *p_aes) |
|---|---|
| 功能说明 | AES加解密完成回调函数。 |
| 输入参数 | p_aes:指向aes_handle_t结构体变量的指针。 |
| 返回值 | 无 |
| 备注 | 中断或DMA方式下加解密操作完成时该接口会被调用。该函数为weak类型的空函数,当开发者需要使用该回调函数时,可重写该API。 |
hal_aes_error_callback
| 函数原型 | void hal_aes_error_callback(aes_handle_t *p_aes) |
|---|---|
| 功能说明 | AES加解密错误回调函数。 |
| 输入参数 | p_aes:指向aes_handle_t结构体变量的指针。 |
| 返回值 | 无 |
| 备注 | 中断或DMA方式下加解密操作出现错误时该接口会被调用。该函数为weak类型的空函数,当开发者需要使用该回调函数时,可重写该API。 |
hal_aes_abort_cplt_callback
| 函数原型 | void hal_aes_abort_cplt_callback(aes_handle_t *p_aes) |
|---|---|
| 功能说明 | AES加解密中止回调函数。 |
| 输入参数 | p_aes:指向aes_handle_t结构体变量的指针。 |
| 返回值 | 无 |
| 备注 | 中断或DMA方式下加解密操作被中止时该接口会被调用。该函数为weak类型的空函数,当开发者需要使用该回调函数时,可重写该API。 |
hal_aes_get_state
| 函数原型 | hal_aes_state_t hal_aes_get_state(aes_handle_t *p_aes) |
|---|---|
| 功能说明 | 获取AES运行状态。 |
| 输入参数 | p_aes:指向aes_handle_t结构体变量的指针。 |
| 返回值 |
AES运行状态,该参数的取值可能是下列值中的任意一个:
|
| 备注 |
hal_aes_get_error
| 函数原型 | uint32 hal_aes_get_error(aes_handle_t *p_aes) |
|---|---|
| 功能说明 | 获取AES错误码。 |
| 输入参数 | p_aes:指向aes_handle_t结构体变量的指针。 |
| 返回值 |
AES错误码,该参数的取值可能是下列值中的任意一个:
|
| 备注 |
hal_aes_set_timeout
| 函数原型 | void hal_aes_set_timeout(aes_handle_t *p_aes) |
|---|---|
| 功能说明 | 设置AES操作超时时间。 |
| 输入参数 | p_aes:指向aes_handle_t结构体变量的指针。 |
| 返回值 | 无 |
| 备注 |
hal_aes_suspend_reg
| 函数原型 | hal_status_t hal_aes_suspend_reg(aes_handle_t *p_aes) |
|---|---|
| 功能说明 | 睡眠时挂起AES配置相关的寄存器 |
| 输入参数 | p_aes:指向aes_handle_t结构体变量的指针。 |
| 返回值 | HAL状态 |
| 备注 |
hal_aes_resume_reg
| 函数原型 | hal_status_t hal_aes_resume_reg(aes_handle_t *p_aes) |
|---|---|
| 功能说明 | 唤醒时恢复AES配置相关的寄存器 |
| 输入参数 | p_aes:指向aes_handle_t结构体变量的指针。 |
| 返回值 | HAL状态。 |
| 备注 |