Hash
头文件清单
接口清单
接口名称 功能简述 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>
头文件清单
功能说明
- 向已创建的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>
头文件清单
功能说明
- 一次性完成SHA256计算,内部自动完成通道创建、数据输入、摘要获取、句柄销毁
- 适用于单次计算完整数据摘要的场景,无需手动管理句柄
- 输出缓冲区长度必须为 32 字节(SHA256_HASH_SIZE),否则返回 ERRCODE_INVALID_PARAM
前置条件
- 安全模块已初始化完成
buf指针不为 NULL,且指向的内存空间长度不小于lenout指针不为 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
头文件清单
功能说明
- 对输入数据进行 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
头文件清单
功能说明
- 向 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
使用说明:作为所有 hash 模块接口的返回值类型使用
SHA256_HASH_SIZE
使用说明:用于 uapi_drv_cipher_sha256 接口的 out_len 参数约束,以及 uapi_drv_cipher_sha256_finish 接口的输出缓冲区长度约束