跳转至

Hash

头文件清单

#include "include/driver/security_unified/security_sha256.h"

接口清单

接口名称 功能简述
uapi_drv_cipher_sha256_start 创建SHA256通道,获取句柄
uapi_drv_cipher_sha256_update 向SHA256通道输入数据进行计算
uapi_drv_cipher_sha256_finish 获取SHA256摘要信息并销毁句柄
uapi_drv_cipher_sha256 一次性完成SHA256计算

Functions

uapi_drv_cipher_sha256_start

**头文件清单**  - include/driver/security_unified/security_sha256.h  **功能说明**  - 创建SHA256通道返回通道句柄 - 调用成功后可使用返回的句柄调用 `uapi_drv_cipher_sha256_update` 进行数据输入 - 需配合 `uapi_drv_cipher_sha256_finish` 完成计算并释放资源  **前置条件**  - 安全模块已初始化完成(`uapi_drv_cipher_env_init()` 已调用 - 传入的 `hash_handle` 指针不为 NULL且指向的内存空间已申请  **入参**  > | 名称 | 参数类型 | 详细说明 | 约束取值范围 | > | ---- | ---- | ---- | ---- | > | hash_handle | uint32_t * | 指向创建的SHA256通道句柄的指针 | 不为NULL |  **出参**  > | 名称 | 数据类型 | 输出说明 | > | ---- | ---- | ---- | > | hash_handle | uint32_t * | 创建成功后输出SHA256通道句柄 |  **返回值**  - 返回类型errcode_t  > | 返回值 | 文字含义 | 触发场景 | > | -------- | -------- | -------- | > | ERRCODE_SUCC(0x00) | 执行成功 | SHA256通道创建成功 | > | Other | 其他错误码参考errcode_t | 执行失败 |  #### uapi_drv_cipher_sha256_update <a id="uapi_drv_cipher_sha256_update"></a>

头文件清单

#include "include/driver/security_unified/security_sha256.h"

功能说明

  • 向已创建的SHA256通道输入数据,进行SHA256计算
  • 可单次调用,也可将数据拆分为多段多次调用,两种方式计算结果相同
  • 已调用 uapi_drv_cipher_sha256_finish 获取摘要后,不能再调用此接口进行计算

前置条件

  • 已通过 uapi_drv_cipher_sha256_start 创建SHA256句柄
  • buf 指针不为 NULL,且指向的内存空间长度不小于 len

入参

名称 参数类型 详细说明 约束取值范围
hash_handle uint32_t 已创建的SHA256通道句柄 uapi_drv_cipher_sha256_start 输出的有效句柄
buf const uint8_t * 源数据缓冲区指针 不为NULL
len uint32_t 缓冲区大小 > 0

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 SHA256计算数据输入成功
Other 其他错误码,参考errcode_t 执行失败

uapi_drv_cipher_sha256_finish

**头文件清单**  - include/driver/security_unified/security_sha256.h  **功能说明**  - 获取SHA256摘要信息计算成功时销毁SHA256句柄 - 必须已创建SHA256句柄后才能调用 - 输入为缓冲区长度输出为实际摘要长度  **前置条件**  - 已通过 `uapi_drv_cipher_sha256_start` 创建SHA256句柄 - `out` 指针不为 NULL且指向的内存空间不小于 32 字节 - `out_len` 指针不为 NULL输入值不小于 32  **入参**  > | 名称 | 参数类型 | 详细说明 | 约束取值范围 | > | ---- | ---- | ---- | ---- | > | hash_handle | uint32_t | 已创建的SHA256通道句柄 |  `uapi_drv_cipher_sha256_start` 输出的有效句柄 | > | out | uint8_t * | 存储摘要信息的缓冲区地址指针 | 不为NULL缓冲区长度  32 | > | out_len | uint32_t * | 存储摘要信息的缓冲区大小指针 | 不为NULL输入值  32 |  **出参**  > | 名称 | 数据类型 | 输出说明 | > | ---- | ---- | ---- | > | out | uint8_t * | 输出SHA256摘要数据长度为32字节 | > | out_len | uint32_t * | 输出实际摘要长度 |  **返回值**  - 返回类型errcode_t  > | 返回值 | 文字含义 | 触发场景 | > | -------- | -------- | -------- | > | ERRCODE_SUCC(0x00) | 执行成功 | SHA256摘要获取成功句柄已销毁 | > | Other | 其他错误码参考errcode_t | 执行失败 |  #### uapi_drv_cipher_sha256 <a id="uapi_drv_cipher_sha256"></a>

头文件清单

#include "include/driver/security_unified/security_sha256.h"

功能说明

  • 一次性完成SHA256计算,内部自动完成通道创建、数据输入、摘要获取、句柄销毁
  • 适用于单次计算完整数据摘要的场景,无需手动管理句柄
  • 输出缓冲区长度必须为 32 字节(SHA256_HASH_SIZE),否则返回 ERRCODE_INVALID_PARAM

前置条件

  • 安全模块已初始化完成
  • buf 指针不为 NULL,且指向的内存空间长度不小于 len
  • out 指针不为 NULL,且指向的内存空间长度为 32 字节
  • out_len 必须等于 32

入参

名称 参数类型 详细说明 约束取值范围
buf const uint8_t * 源数据缓冲区指针 不为NULL
len uint32_t 缓冲区大小 > 0
out uint8_t * 存储摘要信息的缓冲区地址指针 不为NULL,缓冲区长度 ≥ 32
out_len uint32_t 存储摘要信息的缓冲区大小 = 32

出参

名称 数据类型 输出说明
out uint8_t * 输出SHA256摘要数据,长度为32字节

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 SHA256计算完成
ERRCODE_INVALID_PARAM(0x80000001) 参数无效 out_len 不等于 32
Other 其他错误码,参考errcode_t 其他执行失败

参考案例

  • src/middleware/chips/ws63/nv/nv_porting/nv_crypto.c

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_SECURITY_UNIFIED 功能宏 支持 SECURITY_UNIFIED 接口功能 y
CONFIG_SECURITY_UNIFIED_SUPPORT_HASH 功能宏 支持 SHA256 Hash 功能 n

uapi_drv_cipher_sha256

errcode_t uapi_drv_cipher_sha256(const uint8_t *buf, uint32_t len, uint8_t *out, uint32_t out_len)

头文件清单

#include "include/driver/cipher.h"

功能说明

  • 对输入数据进行 SHA256 哈希计算
  • 单次调用完成完整哈希流程

前置条件

  • 驱动已初始化

入参

名称 参数类型 详细说明 约束取值范围
buf const uint8_t * 输入数据缓冲区 不为 NULL
len uint32_t 输入数据长度 > 0
out uint8_t * 哈希输出缓冲区 不为 NULL
out_len uint32_t 输出缓冲区长度 >= 32

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 哈希计算完成
Other 其他错误码 执行失败

uapi_drv_cipher_sha256_update

errcode_t uapi_drv_cipher_sha256_update(uint32_t hash_handle, const uint8_t *buf, uint32_t len)

头文件清单

#include "include/driver/cipher.h"

功能说明

  • 向 SHA256 哈希句柄追加数据进行增量哈希计算
  • 需配合 uapi_drv_cipher_sha256_start() 和 uapi_drv_cipher_sha256_finish() 使用

前置条件

  • 已通过 uapi_drv_cipher_sha256_start() 获取哈希句柄

入参

名称 参数类型 详细说明 约束取值范围
hash_handle uint32_t 哈希句柄 来自 sha256_start
buf const uint8_t * 输入数据缓冲区 不为 NULL
len uint32_t 输入数据长度 > 0

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 数据追加完成
Other 其他错误码 执行失败

Type definitions

errcode_t

typedef uint32_t errcode_t;

使用说明:作为所有 hash 模块接口的返回值类型使用

SHA256_HASH_SIZE

#define SHA256_HASH_SIZE    32

使用说明:用于 uapi_drv_cipher_sha256 接口的 out_len 参数约束,以及 uapi_drv_cipher_sha256_finish 接口的输出缓冲区长度约束