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

如何使用HMAC驱动

初始化

HMAC HAL驱动初始化的使用方法如下:
  1. 声明一个hmac_handle_t句柄结构,例如hmac_handle_t hmac_handle。
  2. 重写hal_hmac_msp_init()接口以初始化HMAC底层资源。若开发者要使用中断或DMA模式,则需通过调用相关的NVIC接口来配置:
    • 通过hal_nvic_set_priority()配置HMAC中断优先级。
    • 通过hal_nvic_enable_irq()使能HMAC中断。
  3. 配置hmac_handle句柄p_instance和init,包括HMAC外设实例、操作模式(HMAC或SHA)、密钥指针、用户初始化哈希值指针以及安全模式。
  4. 调用hal_hmac_init()初始化HMAC寄存器。

使用SHA-256计算消息摘要

SHA-256支持轮询、中断和DMA三种计算模式。这三种模式的区别在于计算数据的加载方式和计算完成的判断方式:轮询模式需要循环检测完成状态,而中断和DMA模式则通过计算完成中断来实现。三种计算模式的具体使用方法如下:

轮询模式IO操作
  1. 开发者可根据需要重载自定义哈希初始值p_user_hash。初始化HMAC时,需要禁止中断,禁止DMA,选择SHA模式;使用hal_hmac_sha256_digest()计算消息摘要。若数据流太长无法一次性计算完成,则需将数据分段处理。对于非首段数据的处理,需将自定义的哈希初始值p_user_hash重载为上一次的计算结果。
  2. 直至计算完成或超时返回。若返回错误,可调用hal_hmac_get_error()查看错误代码;计算数据较多时可重复步骤1
中断模式IO操作
  1. 开发者可根据需要实现hal_hmac_done_callback()和hal_hmac_error_callback()。
  2. 开发者可根据需要重载自定义哈希初始值p_user_hash。初始化HMAC时,需要使能中断,禁止DMA,选择SHA模式;使用hal_hmac_sha256_digest()计算摘要。若数据流太长无法一次性计算完成,则需将数据分段处理。对于非首段数据的处理,需将自定义的哈希初始值p_user_hash重载为上一次的计算结果。
  3. 计算完成时hal_hmac_done_callback()会被调用,计算出错时hal_hmac_error_callback()会被调用;计算数据较多时可重复步骤2
DMA模式IO操作
  1. 开发者可根据需要实现hal_hmac_done_callback()和hal_hmac_error_callback()。
  2. 开发者可根据需要重载自定义哈希初始值p_user_hash。初始化HMAC时,需要禁止中断,使能DMA,选择SHA模式;使用hal_hmac_sha256_digest()计算摘要。若数据流太长无法一次性计算完成,则需将数据分段处理。对于非首段数据的处理,需将自定义的哈希初始值p_user_hash重载为上一次的计算结果。
  3. 计算完成时hal_hmac_done_callback()会被调用,计算出错时hal_hmac_error_callback()会被调用;加解密数据较多时可重复步骤2

使用HMAC计算消息签名

HMAC支持轮询、中断和DMA三种计算模式。这三种模式的区别在于计算数据的加载方式和计算完成的判断方式:轮询模式需要循环检测完成状态,而中断和DMA模式则通过计算完成中断来实现。三种计算模式的具体使用方法如下:

轮询模式IO操作
  1. 开发者可根据需要重载自定义哈希初始值p_user_hash和密钥p_key。初始化HMAC时,需要禁止中断,禁止DMA,选择HMAC模式;使用hal_hmac_sha256_digest()计算签名。
  2. 计算完成时hal_hmac_done_callback()会被调用,计算出错时hal_hmac_error_callback()会被调用;加解密数据较多时可重复步骤1
  3. 直至计算完成或超时返回。若返回错误,可调用hal_hmac_get_error()查看错误代码。
中断模式IO操作
  1. 开发者可根据需要实现hal_hmac_done_callback()和hal_hmac_error_callback()。
  2. 开发者可根据需要重载自定义哈希初始值p_user_hash和密钥p_key。初始化HMAC时,需要使能中断,禁止DMA,选择HMAC模式;使用hal_hmac_sha256_digest()计算签名。
  3. 计算完成时hal_hmac_done_callback()会被调用,计算出错时hal_hmac_error_callback()会被调用。
DMA模式IO操作
  1. 开发者可根据需要实现hal_hmac_done_callback()和hal_hmac_error_callback()。
  2. 开发者可根据需要重载自定义哈希初始值p_user_hash和密钥p_key。初始化HMAC时,需要禁止中断,使能DMA,选择HMAC模式;使用hal_hmac_sha256_digest()计算签名。
  3. 每次计算完成时hal_hmac_done_callback()会被调用,计算出错时hal_hmac_error_callback()会被调用。

扫描关注

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