CN / EN
文档反馈
感谢关注汇顶文档,期待您的宝贵建议!
感谢您的反馈,祝您愉快!
无匹配项 共计114个匹配页面

AES驱动API描述

AES驱动的API主要包括:

表 156 AES驱动的APIs
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

表 157 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

表 158 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

表 159 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

表 160 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

表 161 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

表 162 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

表 163 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

表 164 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

表 165 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

表 166 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

表 167 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

表 168 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

表 169 hal_aes_abort接口
函数原型

hal_status_t hal_aes_abort(aes_handle_t *p_aes)

功能说明

中止加解密,轮询方式。

输入参数

p_aes:指向aes_handle_t结构体变量的指针。

返回值

HAL状态。

备注

该接口用于中止非轮询方式的加解密过程。轮询式接口,中止操作完成后返回状态。

hal_aes_abort_it

表 170 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

表 171 hal_aes_irq_handler接口
函数原型

void hal_aes_irq_handler(aes_handle_t *p_aes)

功能说明

处理AES中断请求。

输入参数

p_aes:指向aes_handle_t结构体变量的指针。

返回值

备注

hal_aes_done_callback

表 172 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

表 173 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

表 174 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

表 175 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_STATE_RESET(未初始化)
  • HAL_AES_STATE_READY(已初始化且空闲)
  • HAL_AES_STATE_BUSY(忙)
  • HAL_AES_STATE_ERROR(运行错误)
  • HAL_AES_STATE_TIMEOUT(超时)
  • HAL_AES_STATE_SUSPENDED(已挂起)
备注

hal_aes_get_error

表 176 hal_aes_get_error接口
函数原型

uint32 hal_aes_get_error(aes_handle_t *p_aes)

功能说明

获取AES错误码。

输入参数

p_aes:指向aes_handle_t结构体变量的指针。

返回值

AES错误码,该参数的取值可能是下列值中的任意一个:

  • HAL_AES_ERROR_NONE(无错误)
  • HAL_AES_ERROR_TIMEOUT(超时)
  • HAL_AES_ERROR_TRANSFER(传输错误)
  • HAL_AES_ERROR_INVALID_PARAM(非法参数)
备注

hal_aes_set_timeout

表 177 hal_aes_set_timeout接口
函数原型

void hal_aes_set_timeout(aes_handle_t *p_aes)

功能说明

设置AES操作超时时间。

输入参数

p_aes:指向aes_handle_t结构体变量的指针。

返回值

备注

hal_aes_suspend_reg

表 178 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

表 179 hal_aes_resume_reg接口
函数原型

hal_status_t hal_aes_resume_reg(aes_handle_t *p_aes)

功能说明

唤醒时恢复AES配置相关的寄存器

输入参数

p_aes:指向aes_handle_t结构体变量的指针。

返回值

HAL状态。

备注

扫描关注

打开微信,使用“扫一扫”即可关注。