Cipher
硬件加速对称加密引擎。提供对称加密(AES 等,多种工作模式)、MAC 消息认证码、Hash 哈希(SHA 系列)、密钥派生(PBKDF2/HKDF)功能。
完整操作流程:init → create_channel → set_config → attach_keyslot → encrypt/decrypt → get_tag → destroy_channel → deinit。硬件引擎执行加解密,释放 CPU 处理其他任务。
头文件清单
接口清单
Functions
uapi_drv_cipher_symc_init
头文件清单
功能说明
- 初始化对称加密(SYMC)模块,完成安全引擎通道资源分配与全局状态初始化
- 必须在调用其他symc相关接口之前完成初始化,否则后续接口返回错误
- 初始化后模块内部维护通道管理状态,支持后续创建加解密通道
前置条件
- 安全引擎硬件已上电就绪
- 未重复调用本接口,重复调用可能导致ERROR_SECURITY_COUNT_OVERFLOW
返回值
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 成功 初始化成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 DRIVER_SUPPORT_SECURITY_UNIFIED 功能宏 支持安全统一驱动接口功能 y SECURITY_UNIFIED_SUPPORT_SYMC 功能宏 支持对称加密功能 n
uapi_drv_cipher_symc_deinit
头文件清单
功能说明
- 对称加密模块去初始化,释放symc通道资源与全局状态
- 调用本接口后,所有已创建的symc通道不再可用,需重新初始化后方可使用
- 应确保所有symc通道已销毁后再调用去初始化
前置条件
- 已通过uapi_drv_cipher_symc_init()完成初始化
返回值
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 成功 去初始化成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 DRIVER_SUPPORT_SECURITY_UNIFIED 功能宏 支持安全统一驱动接口功能 y SECURITY_UNIFIED_SUPPORT_SYMC 功能宏 支持对称加密功能 n
uapi_drv_cipher_symc_create
errcode_t uapi_drv_cipher_symc_create(uint32_t *symc_handle, const uapi_drv_cipher_symc_attr_t *symc_attr)
头文件清单
功能说明
- 创建symc通道,并根据传入的属性参数设置通道类型、算法、工作模式及通道占用周期
- 创建成功后返回通道句柄,后续加解密操作均通过该句柄进行
- 支持长期通道与短期通道,长期通道占用资源直到显式销毁
前置条件
- 已通过uapi_drv_cipher_symc_init()完成初始化,返回成功状态
- symc_attr指针不为NULL,且指向合法的属性结构体
入参
名称 参数类型 详细说明 约束取值范围 symc_handle uint32_t * 指向创建的symc通道句柄的指针 不为NULL,用于输出通道句柄 symc_attr const uapi_drv_cipher_symc_attr_t * 指向symc通道属性结构体的指针 不为NULL
返回值
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 成功 通道创建成功 ERRCODE_INVALID_PARAM(0x80000001) 参数无效 symc_attr为NULL Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 DRIVER_SUPPORT_SECURITY_UNIFIED 功能宏 支持安全统一驱动接口功能 y SECURITY_UNIFIED_SUPPORT_SYMC 功能宏 支持对称加密功能 n
uapi_drv_cipher_symc_destroy
头文件清单
功能说明
- 销毁指定的symc通道,释放通道资源
- 销毁后该句柄不再可用,后续操作需重新创建通道
- 销毁时自动移除安全模块的睡眠否决,允许系统进入低功耗
前置条件
- 已通过uapi_drv_cipher_symc_init()完成初始化
- symc_handle为已通过uapi_drv_cipher_symc_create()创建的有效通道句柄
入参
名称 参数类型 详细说明 约束取值范围 symc_handle uint32_t 要销毁的symc通道号 有效的已创建通道句柄
返回值
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 成功 通道销毁成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 DRIVER_SUPPORT_SECURITY_UNIFIED 功能宏 支持安全统一驱动接口功能 y SECURITY_UNIFIED_SUPPORT_SYMC 功能宏 支持对称加密功能 n
uapi_drv_cipher_symc_set_config
errcode_t uapi_drv_cipher_symc_set_config(uint32_t symc_handle, const uapi_drv_cipher_symc_ctrl_t *symc_ctrl)
头文件清单
功能说明
- 设置指定symc通道的算法参数,包括算法类型、工作模式、密钥长度、IV等
- 在执行加密/解密操作前,必须调用本接口完成算法参数配置
- 对于CCM/GCM工作模式,还需通过param字段配置附加参数
前置条件
- 已通过uapi_drv_cipher_symc_init()完成初始化
- symc_handle为已创建的有效通道句柄
- symc_ctrl指针不为NULL
入参
名称 参数类型 详细说明 约束取值范围 symc_handle uint32_t 要设置的通道号 有效的已创建通道句柄 symc_ctrl const uapi_drv_cipher_symc_ctrl_t * 对称加密算法的参数 不为NULL
返回值
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 成功 设置成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 DRIVER_SUPPORT_SECURITY_UNIFIED 功能宏 支持安全统一驱动接口功能 y SECURITY_UNIFIED_SUPPORT_SYMC 功能宏 支持对称加密功能 n
uapi_drv_cipher_symc_get_config
errcode_t uapi_drv_cipher_symc_get_config(uint32_t symc_handle, const uapi_drv_cipher_symc_ctrl_t *symc_ctrl)
头文件清单
功能说明
- 获取指定symc通道的当前算法参数配置
- 返回的参数包括算法类型、工作模式、密钥长度、IV及其长度等
- 可用于确认当前通道配置状态
前置条件
- 已通过uapi_drv_cipher_symc_init()完成初始化
- symc_handle为已创建的有效通道句柄
- 已通过uapi_drv_cipher_symc_set_config()完成参数配置
入参
名称 参数类型 详细说明 约束取值范围 symc_handle uint32_t 要获取算法参数的通道号 有效的已创建通道句柄 symc_ctrl const uapi_drv_cipher_symc_ctrl_t * 对称加密算法的参数 不为NULL,用于输出当前配置
返回值
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 成功 获取成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 DRIVER_SUPPORT_SECURITY_UNIFIED 功能宏 支持安全统一驱动接口功能 y SECURITY_UNIFIED_SUPPORT_SYMC 功能宏 支持对称加密功能 n
uapi_drv_cipher_symc_attach
头文件清单
功能说明
- 将keyslot句柄关联到加解密句柄,使加解密操作使用指定keyslot中的密钥
- 关联后,加解密操作使用keyslot中存储的密钥而非明文密钥
- 执行加密/解密操作前,必须完成keyslot关联
前置条件
- 已通过uapi_drv_cipher_symc_init()完成初始化
- symc_handle为已创建且已配置算法参数的通道句柄
- keyslot_handle为已创建的有效keyslot句柄
入参
名称 参数类型 详细说明 约束取值范围 symc_handle uint32_t 加解密句柄 有效的已创建通道句柄 keyslot_handle uint32_t key的句柄 有效的keyslot句柄
返回值
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 成功 关联成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 DRIVER_SUPPORT_SECURITY_UNIFIED 功能宏 支持安全统一驱动接口功能 y SECURITY_UNIFIED_SUPPORT_SYMC 功能宏 支持对称加密功能 n
uapi_drv_cipher_symc_detach
头文件清单
功能说明
- 将keyslot句柄与加解密句柄解关联
- 解关联后,加解密操作不再使用该keyslot中的密钥
- 通常在加解密操作完成后调用
前置条件
- 已通过uapi_drv_cipher_symc_init()完成初始化
- symc_handle为已创建的有效通道句柄
- keyslot_handle为已关联到该通道的有效keyslot句柄
入参
名称 参数类型 详细说明 约束取值范围 symc_handle uint32_t 加解密句柄 有效的已创建通道句柄 keyslot_handle uint32_t key的句柄 有效的keyslot句柄
返回值
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 成功 解关联成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 DRIVER_SUPPORT_SECURITY_UNIFIED 功能宏 支持安全统一驱动接口功能 y SECURITY_UNIFIED_SUPPORT_SYMC 功能宏 支持对称加密功能 n
uapi_drv_cipher_symc_encrypt
errcode_t uapi_drv_cipher_symc_encrypt(uint32_t symc_handle, const uapi_drv_cipher_buf_attr_t *src_buf, const uapi_drv_cipher_buf_attr_t *dst_buf, uint32_t length)
头文件清单
功能说明
- 将源地址数据加密,输出到目的地址
- 支持AES/SM4/TDES/LEA等对称加密算法,具体算法由通道配置决定
- 加密数据长度需满足算法对齐要求(除CTR/CCM/GCM模式外需16字节对齐)
前置条件
- 已通过uapi_drv_cipher_symc_init()完成初始化
- symc_handle为已创建、已配置算法参数、已关联keyslot的通道句柄
- src_buf和dst_buf指向的缓冲区地址有效且长度不小于length
入参
名称 参数类型 详细说明 约束取值范围 symc_handle uint32_t 加密句柄 有效的已创建且已配置通道句柄 src_buf const uapi_drv_cipher_buf_attr_t * 源缓冲区属性 不为NULL dst_buf const uapi_drv_cipher_buf_attr_t * 目的缓冲区属性 不为NULL length uint32_t 加密数据长度 大于0,满足算法对齐要求
出参
名称 数据类型 输出说明 dst_buf uapi_drv_cipher_buf_attr_t 加密后的密文数据写入目的缓冲区
返回值
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 成功 加密成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 DRIVER_SUPPORT_SECURITY_UNIFIED 功能宏 支持安全统一驱动接口功能 y SECURITY_UNIFIED_SUPPORT_SYMC 功能宏 支持对称加密功能 n
uapi_drv_cipher_symc_decrypt
errcode_t uapi_drv_cipher_symc_decrypt(uint32_t symc_handle, const uapi_drv_cipher_buf_attr_t *src_buf, const uapi_drv_cipher_buf_attr_t *dst_buf, uint32_t length)
头文件清单
功能说明
- 将源地址数据解密,输出到目的地址
- 支持AES/SM4/TDES/LEA等对称解密算法,具体算法由通道配置决定
- 解密数据长度需满足算法对齐要求(除CTR/CCM/GCM模式外需16字节对齐)
前置条件
- 已通过uapi_drv_cipher_symc_init()完成初始化
- symc_handle为已创建、已配置算法参数、已关联keyslot的通道句柄
- src_buf和dst_buf指向的缓冲区地址有效且长度不小于length
入参
名称 参数类型 详细说明 约束取值范围 symc_handle uint32_t 解密句柄 有效的已创建且已配置通道句柄 src_buf const uapi_drv_cipher_buf_attr_t * 源缓冲区属性 不为NULL dst_buf const uapi_drv_cipher_buf_attr_t * 目的缓冲区属性 不为NULL length uint32_t 解密数据长度 大于0,满足算法对齐要求
出参
名称 数据类型 输出说明 dst_buf uapi_drv_cipher_buf_attr_t 解密后的明文数据写入目的缓冲区
返回值
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 成功 解密成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 DRIVER_SUPPORT_SECURITY_UNIFIED 功能宏 支持安全统一驱动接口功能 y SECURITY_UNIFIED_SUPPORT_SYMC 功能宏 支持对称加密功能 n
uapi_drv_cipher_symc_get_tag
头文件清单
功能说明
- 获取CCM或GCM模式的认证标签值
- 在加密完成后调用本接口获取认证标签,用于完整性校验
- 标签长度由算法配置决定,GCM模式典型标签长度为16字节
前置条件
- 已通过uapi_drv_cipher_symc_init()完成初始化
- symc_handle为已创建且工作模式为CCM/GCM的通道句柄
- 已完成加密操作
入参
名称 参数类型 详细说明 约束取值范围 symc_handle uint32_t 加解密句柄 有效的CCM/GCM通道句柄 tag uint8_t * 标签值缓冲区 不为NULL tag_length uint32_t 标签值缓冲区长度 大于0,与算法配置的tag_len一致
出参
名称 数据类型 输出说明 tag uint8_t * CCM/GCM认证标签值
返回值
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 成功 获取标签成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 DRIVER_SUPPORT_SECURITY_UNIFIED 功能宏 支持安全统一驱动接口功能 y SECURITY_UNIFIED_SUPPORT_SYMC 功能宏 支持对称加密功能 n
uapi_drv_cipher_mac_start
errcode_t uapi_drv_cipher_mac_start(uint32_t *symc_handle, const uapi_drv_cipher_symc_mac_attr_t *mac_attr)
头文件清单
功能说明
- 创建symc通道并设置MAC算法参数,启动MAC计算流程
- 支持CBC-MAC和CMAC工作模式
- 创建成功后返回通道句柄,后续通过uapi_drv_cipher_mac_update输入数据,通过uapi_drv_cipher_mac_finish获取结果
前置条件
- 已通过uapi_drv_cipher_symc_init()完成初始化,返回成功状态
- mac_attr指针不为NULL,且指向合法的MAC属性结构体
入参
名称 参数类型 详细说明 约束取值范围 symc_handle uint32_t * 指向创建的symc通道句柄的指针 不为NULL,用于输出通道句柄 mac_attr const uapi_drv_cipher_symc_mac_attr_t * 指向MAC算法参数结构体的指针 不为NULL
返回值
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 成功 通道创建成功 ERRCODE_INVALID_PARAM(0x80000001) 参数无效 mac_attr为NULL Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 DRIVER_SUPPORT_SECURITY_UNIFIED 功能宏 支持安全统一驱动接口功能 y SECURITY_UNIFIED_SUPPORT_SYMC 功能宏 支持对称加密功能 n
uapi_drv_cipher_mac_update
errcode_t uapi_drv_cipher_mac_update(uint32_t symc_handle, const uapi_drv_cipher_buf_attr_t *src_buf, uint32_t length)
头文件清单
功能说明
- 向MAC计算通道输入数据,进行MAC计算
- 支持多次调用,将数据分批输入,最终结果与一次性输入相同
- 输入数据长度需满足算法对齐要求
前置条件
- 已通过uapi_drv_cipher_mac_start()成功创建MAC通道
- src_buf指向的缓冲区有效且长度不小于length
入参
名称 参数类型 详细说明 约束取值范围 symc_handle uint32_t 计算MAC值的通道句柄 有效的MAC通道句柄 src_buf const uapi_drv_cipher_buf_attr_t * 输入数据的缓冲区 不为NULL length uint32_t 输入数据的缓冲区长度 大于0
返回值
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 成功 MAC计算更新成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 DRIVER_SUPPORT_SECURITY_UNIFIED 功能宏 支持安全统一驱动接口功能 y SECURITY_UNIFIED_SUPPORT_SYMC 功能宏 支持对称加密功能 n
uapi_drv_cipher_mac_finish
头文件清单
功能说明
- 获取MAC计算结果,并在计算成功时销毁MAC通道
- 输出MAC值到指定缓冲区,同时返回实际MAC长度
- 调用后通道句柄不再可用
前置条件
- 已通过uapi_drv_cipher_mac_start()成功创建MAC通道
- 已通过uapi_drv_cipher_mac_update()完成数据输入
入参
名称 参数类型 详细说明 约束取值范围 symc_handle uint32_t 计算MAC值的通道句柄 有效的MAC通道句柄 mac uint8_t * 输出结果的缓冲区 不为NULL,空间不小于MAC长度 mac_length uint32_t * 输出结果的缓冲区长度 不为NULL,输入为缓冲区长度,输出为实际MAC长度
出参
名称 数据类型 输出说明 mac uint8_t * MAC计算结果 mac_length uint32_t * 实际MAC长度
返回值
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 成功 获取MAC结果成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 DRIVER_SUPPORT_SECURITY_UNIFIED 功能宏 支持安全统一驱动接口功能 y SECURITY_UNIFIED_SUPPORT_SYMC 功能宏 支持对称加密功能 n
uapi_drv_cipher_hash_init
头文件清单
功能说明
- Hash计算模块初始化,完成Hash通道资源分配与全局状态初始化
- 必须在调用其他Hash相关接口之前完成初始化
- 初始化后模块内部维护Hash通道管理状态
前置条件
- 安全引擎硬件已上电就绪
- 未重复调用本接口
返回值
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 成功 初始化成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 DRIVER_SUPPORT_SECURITY_UNIFIED 功能宏 支持安全统一驱动接口功能 y SECURITY_UNIFIED_SUPPORT_HASH 功能宏 支持Hash计算功能 n
uapi_drv_cipher_hash_deinit
头文件清单
功能说明
- Hash计算模块去初始化,释放Hash通道资源与全局状态
- 调用后所有已创建的Hash通道不再可用
- 应确保所有Hash通道已销毁后再调用去初始化
前置条件
- 已通过uapi_drv_cipher_hash_init()完成初始化
返回值
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 成功 去初始化成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 DRIVER_SUPPORT_SECURITY_UNIFIED 功能宏 支持安全统一驱动接口功能 y SECURITY_UNIFIED_SUPPORT_HASH 功能宏 支持Hash计算功能 n
uapi_drv_cipher_hash_start
errcode_t uapi_drv_cipher_hash_start(uint32_t *hash_handle, const uapi_drv_cipher_hash_attr_t *hash_attr)
头文件清单
功能说明
- 创建Hash通道,并根据传入的属性参数设置Hash算法类型、密钥等
- 支持SHA1/SHA224/SHA256/SHA384/SHA512/SM3及对应HMAC算法
- 支持长期通道与短期通道,最大支持2个长期通道和8个短期通道
前置条件
- 已通过uapi_drv_cipher_hash_init()完成初始化,返回成功状态
- hash_attr指针不为NULL,且指向合法的Hash属性结构体
入参
名称 参数类型 详细说明 约束取值范围 hash_handle uint32_t * 指向创建的Hash通道句柄的指针 不为NULL,用于输出通道句柄 hash_attr const uapi_drv_cipher_hash_attr_t * 指向Hash算法参数结构体的指针 不为NULL
返回值
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 成功 通道创建成功 ERRCODE_INVALID_PARAM(0x80000001) 参数无效 hash_attr为NULL Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 DRIVER_SUPPORT_SECURITY_UNIFIED 功能宏 支持安全统一驱动接口功能 y SECURITY_UNIFIED_SUPPORT_HASH 功能宏 支持Hash计算功能 n
uapi_drv_cipher_hash_update
errcode_t uapi_drv_cipher_hash_update(uint32_t hash_handle, const uapi_drv_cipher_buf_attr_t *src_buf, const uint32_t len)
头文件清单
功能说明
- 向Hash通道输入数据,进行Hash计算
- 支持多次调用,将数据分批输入,最终结果与一次性输入相同
- 已调用uapi_drv_cipher_hash_finish获取摘要后,不能再调用本接口
前置条件
- 已通过uapi_drv_cipher_hash_start()成功创建Hash通道
- src_buf指向的缓冲区有效
入参
名称 参数类型 详细说明 约束取值范围 hash_handle uint32_t 已创建的Hash通道句柄 有效的Hash通道句柄 src_buf const uapi_drv_cipher_buf_attr_t * 源缓冲区属性,包括缓冲区地址与缓冲区安全类型 不为NULL len const uint32_t 缓冲区大小 大于0
返回值
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 成功 Hash计算更新成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 DRIVER_SUPPORT_SECURITY_UNIFIED 功能宏 支持安全统一驱动接口功能 y SECURITY_UNIFIED_SUPPORT_HASH 功能宏 支持Hash计算功能 n
uapi_drv_cipher_hash_finish
头文件清单
功能说明
- Hash计算获取摘要信息,并在计算成功时销毁hash句柄
- 输入为缓冲区长度,输出为实际摘要长度
- 调用成功后hash句柄不再可用
前置条件
- 已通过uapi_drv_cipher_hash_start()成功创建Hash通道
- 已通过uapi_drv_cipher_hash_update()完成数据输入
入参
名称 参数类型 详细说明 约束取值范围 hash_handle uint32_t 已创建的Hash通道句柄 有效的Hash通道句柄 out uint8_t * 存储摘要信息的缓冲区地址指针 不为NULL out_len uint32_t * 存储摘要信息的缓冲区大小指针 不为NULL,输入为缓冲区长度,输出为实际摘要长度
出参
名称 数据类型 输出说明 out uint8_t * Hash摘要信息 out_len uint32_t * 实际摘要长度
返回值
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 成功 获取摘要成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 DRIVER_SUPPORT_SECURITY_UNIFIED 功能宏 支持安全统一驱动接口功能 y SECURITY_UNIFIED_SUPPORT_HASH 功能宏 支持Hash计算功能 n
uapi_drv_cipher_hash_get
errcode_t uapi_drv_cipher_hash_get(uint32_t hash_handle, uapi_drv_cipher_hash_clone_ctx_t *hash_clone_ctx)
头文件清单
功能说明
- 获取Hash计算中间结果
- 中间结果通过uapi_drv_cipher_hash_set接口可恢复到其他Hash通道
- 该结构体无需用户构造,由接口自动填充
前置条件
- 已通过uapi_drv_cipher_hash_start()成功创建Hash通道
入参
名称 参数类型 详细说明 约束取值范围 hash_handle uint32_t 已创建的Hash通道句柄 有效的Hash通道句柄 hash_clone_ctx uapi_drv_cipher_hash_clone_ctx_t * 指向Hash计算中间结果结构体的指针 不为NULL
出参
名称 数据类型 输出说明 hash_clone_ctx uapi_drv_cipher_hash_clone_ctx_t Hash计算中间结果
返回值
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 成功 获取中间结果成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 DRIVER_SUPPORT_SECURITY_UNIFIED 功能宏 支持安全统一驱动接口功能 y SECURITY_UNIFIED_SUPPORT_HASH 功能宏 支持Hash计算功能 n
uapi_drv_cipher_hash_set
errcode_t uapi_drv_cipher_hash_set(uint32_t hash_handle, const uapi_drv_cipher_hash_clone_ctx_t *hash_clone_ctx)
头文件清单
功能说明
- 设置Hash计算中间结果,将之前通过uapi_drv_cipher_hash_get获取的中间状态恢复到Hash通道
- 可用于在不同通道间迁移Hash计算状态
- 设置后可继续调用uapi_drv_cipher_hash_update进行后续计算
前置条件
- 已通过uapi_drv_cipher_hash_start()成功创建Hash通道
- hash_clone_ctx为由uapi_drv_cipher_hash_get获取的有效中间结果
入参
名称 参数类型 详细说明 约束取值范围 hash_handle uint32_t 已创建的Hash通道句柄 有效的Hash通道句柄 hash_clone_ctx const uapi_drv_cipher_hash_clone_ctx_t * 指向Hash计算中间结果结构体的指针 不为NULL
返回值
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 成功 设置中间结果成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 DRIVER_SUPPORT_SECURITY_UNIFIED 功能宏 支持安全统一驱动接口功能 y SECURITY_UNIFIED_SUPPORT_HASH 功能宏 支持Hash计算功能 n
uapi_drv_cipher_hash_destroy
头文件清单
功能说明
- 销毁hash通道,释放通道资源
- 该接口只销毁hash通道,不启动计算和获取摘要结果
- 销毁时自动移除安全模块的睡眠否决,允许系统进入低功耗
前置条件
- 已通过uapi_drv_cipher_hash_start()成功创建Hash通道
入参
名称 参数类型 详细说明 约束取值范围 hash_handle uint32_t 已创建的Hash通道句柄 有效的Hash通道句柄
返回值
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 成功 通道销毁成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 DRIVER_SUPPORT_SECURITY_UNIFIED 功能宏 支持安全统一驱动接口功能 y SECURITY_UNIFIED_SUPPORT_HASH 功能宏 支持Hash计算功能 n
uapi_drv_cipher_pbkdf2
errcode_t uapi_drv_cipher_pbkdf2(const uapi_drv_cipher_kdf_pbkdf2_param_t *param, uint8_t *out, const uint32_t out_len)
头文件清单
功能说明
- 使用PBKDF2算法派生密钥
- 支持基于口令的密钥派生,输入口令和盐值,输出派生密钥
- 迭代次数由参数结构体中的count字段指定
前置条件
- Hash模块已通过uapi_drv_cipher_hash_init()完成初始化
- param指针不为NULL,且各字段合法
入参
名称 参数类型 详细说明 约束取值范围 param const uapi_drv_cipher_kdf_pbkdf2_param_t * PBKDF2算法的参数结构体 不为NULL out uint8_t * 输出密钥缓冲区 不为NULL out_len const uint32_t 输出密钥缓冲区长度 大于0
出参
名称 数据类型 输出说明 out uint8_t * PBKDF2派生的密钥
返回值
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 成功 密钥派生成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 DRIVER_SUPPORT_SECURITY_UNIFIED 功能宏 支持安全统一驱动接口功能 y SECURITY_UNIFIED_SUPPORT_HASH 功能宏 支持Hash计算功能 n
uapi_drv_cipher_hkdf_extract
errcode_t uapi_drv_cipher_hkdf_extract(uapi_drv_cipher_hkdf_extract_t *extract_param, uint8_t *prk, uint32_t *prk_length)
头文件清单
功能说明
- 提取密钥,执行HKDF-Extract阶段
- 使用HMAC算法和盐值对输入密钥材料进行提取,输出伪随机密钥
- 提取结果可作为uapi_drv_cipher_hkdf_expand的输入
前置条件
- Hash模块已通过uapi_drv_cipher_hash_init()完成初始化
- extract_param指针不为NULL,且各字段合法
入参
名称 参数类型 详细说明 约束取值范围 extract_param uapi_drv_cipher_hkdf_extract_t * 密钥提取的参数结构体 不为NULL prk uint8_t * 拓展密钥的伪随机密钥 不为NULL prk_length uint32_t * 拓展密钥的伪随机密钥长度 不为NULL,输入为缓冲区长度,输出为实际长度
出参
名称 数据类型 输出说明 prk uint8_t * HKDF-Extract输出的伪随机密钥 prk_length uint32_t * 伪随机密钥的实际长度
返回值
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 成功 密钥提取成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 DRIVER_SUPPORT_SECURITY_UNIFIED 功能宏 支持安全统一驱动接口功能 y SECURITY_UNIFIED_SUPPORT_HASH 功能宏 支持Hash计算功能 n
uapi_drv_cipher_hkdf_expand
errcode_t uapi_drv_cipher_hkdf_expand(const uapi_drv_cipher_hkdf_expand_t *expand_param, uint8_t *okm, uint32_t okm_length)
头文件清单
功能说明
- 拓展密钥,执行HKDF-Expand阶段
- 使用伪随机密钥和信息参数进行密钥拓展,输出指定长度的密钥材料
- 通常与uapi_drv_cipher_hkdf_extract配合使用
前置条件
- Hash模块已通过uapi_drv_cipher_hash_init()完成初始化
- expand_param指针不为NULL,且各字段合法
- prk为uapi_drv_cipher_hkdf_extract输出的有效伪随机密钥
入参
名称 参数类型 详细说明 约束取值范围 expand_param const uapi_drv_cipher_hkdf_expand_t * 密钥拓展的参数结构体 不为NULL okm uint8_t * 输出密钥材料 不为NULL okm_length uint32_t 输出密钥材料长度 大于0
出参
名称 数据类型 输出说明 okm uint8_t * HKDF-Expand输出的密钥材料
返回值
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 成功 密钥拓展成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 DRIVER_SUPPORT_SECURITY_UNIFIED 功能宏 支持安全统一驱动接口功能 y SECURITY_UNIFIED_SUPPORT_HASH 功能宏 支持Hash计算功能 n
uapi_drv_cipher_hkdf
errcode_t uapi_drv_cipher_hkdf(uapi_drv_cipher_hkdf_t *hkdf_param, uint8_t *okm, uint32_t okm_length)
头文件清单
功能说明
- HKDF密钥派生,包含提取密钥和拓展密钥两步
- 输入原始密钥材料、盐值和信息参数,直接输出指定长度的密钥材料
- 等效于依次调用uapi_drv_cipher_hkdf_extract和uapi_drv_cipher_hkdf_expand
前置条件
- Hash模块已通过uapi_drv_cipher_hash_init()完成初始化
- hkdf_param指针不为NULL,且各字段合法
入参
名称 参数类型 详细说明 约束取值范围 hkdf_param uapi_drv_cipher_hkdf_t * HKDF的参数结构体 不为NULL okm uint8_t * 输出密钥材料 不为NULL okm_length uint32_t 输出密钥材料长度 大于0
出参
名称 数据类型 输出说明 okm uint8_t * HKDF输出的密钥材料
返回值
返回值 文字含义 触发场景 ERRCODE_SUCC(0x0) 成功 密钥派生成功 Other 其他错误码,参考errcode_t 执行失败
Kconfig配置
配置项 宏类型 说明 默认值 DRIVER_SUPPORT_SECURITY_UNIFIED 功能宏 支持安全统一驱动接口功能 y SECURITY_UNIFIED_SUPPORT_HASH 功能宏 支持Hash计算功能 n
Enumerations
uapi_drv_cipher_symc_type_t
枚举成员 取值 描述 UAPI_DRV_CIPHER_SYMC_TYPE_NORMAL 0x0 普通通道类型 UAPI_DRV_CIPHER_SYMC_TYPE_REG 0x1 寄存器通道类型 UAPI_DRV_CIPHER_SYMC_TYPE_MAX 0x2 通道类型上限值 UAPI_DRV_CIPHER_SYMC_TYPE_INVALID 0xffffffff 无效通道类型
uapi_drv_cipher_symc_alg_t
枚举成员 取值 描述 UAPI_DRV_CIPHER_SYMC_ALG_TDES 0x0 TDES算法,不建议使用 UAPI_DRV_CIPHER_SYMC_ALG_AES 0x1 AES算法 UAPI_DRV_CIPHER_SYMC_ALG_SM4 0x2 SM4算法 UAPI_DRV_CIPHER_SYMC_ALG_LEA 0x3 LEA算法 UAPI_DRV_CIPHER_SYMC_ALG_DMA 0x4 DMA模式 UAPI_DRV_CIPHER_SYMC_ALG_MAX 0x5 算法类型上限值 UAPI_DRV_CIPHER_SYMC_ALG_INVALID 0xffffffff 无效算法类型
uapi_drv_cipher_symc_work_mode_t
枚举成员 取值 描述 UAPI_DRV_CIPHER_SYMC_WORK_MODE_ECB 0x0 ECB模式,不建议使用 UAPI_DRV_CIPHER_SYMC_WORK_MODE_CBC 0x1 CBC模式 UAPI_DRV_CIPHER_SYMC_WORK_MODE_CTR 0x2 CTR模式 UAPI_DRV_CIPHER_SYMC_WORK_MODE_OFB 0x3 OFB模式 UAPI_DRV_CIPHER_SYMC_WORK_MODE_CFB 0x4 CFB模式 UAPI_DRV_CIPHER_SYMC_WORK_MODE_CCM 0x5 CCM模式 UAPI_DRV_CIPHER_SYMC_WORK_MODE_GCM 0x6 GCM模式 UAPI_DRV_CIPHER_SYMC_WORK_MODE_CBC_MAC 0x7 CBC-MAC模式 UAPI_DRV_CIPHER_SYMC_WORK_MODE_CMAC 0x8 CMAC模式 UAPI_DRV_CIPHER_SYMC_WORK_MODE_MAX 0x9 工作模式上限值 UAPI_DRV_CIPHER_SYMC_WORK_MODE_INVALID 0xffffffff 无效工作模式
uapi_drv_cipher_symc_key_length_t
枚举成员 取值 描述 UAPI_DRV_CIPHER_SYMC_KEY_64BIT 0x0 64位密钥长度 UAPI_DRV_CIPHER_SYMC_KEY_128BIT 0x1 128位密钥长度 UAPI_DRV_CIPHER_SYMC_KEY_192BIT 0x2 192位密钥长度 UAPI_DRV_CIPHER_SYMC_KEY_256BIT 0x3 256位密钥长度 UAPI_DRV_CIPHER_SYMC_KEY_LENGTH_MAX 0x4 密钥长度上限值 UAPI_DRV_CIPHER_SYMC_KEY_LENGTH_INVALID 0xffffffff 无效密钥长度
uapi_drv_cipher_symc_key_parity_t
枚举成员 取值 描述 UAPI_DRV_CIPHER_SYMC_KEY_EVEN 0x0 偶密钥 UAPI_DRV_CIPHER_SYMC_KEY_ODD 0x1 奇密钥 UAPI_DRV_CIPHER_SYMC_KEY_PARITY_MAX 0x2 密钥奇偶性上限值 UAPI_DRV_CIPHER_SYMC_KEY_PARITY_INVALID 0xffffffff 无效密钥奇偶性
uapi_drv_cipher_symc_bit_width_t
枚举成员 取值 描述 UAPI_DRV_CIPHER_SYMC_BIT_WIDTH_1BIT 0x0 1位宽 UAPI_DRV_CIPHER_SYMC_BIT_WIDTH_8BIT 0x1 8位宽 UAPI_DRV_CIPHER_SYMC_BIT_WIDTH_64BIT 0x2 64位宽 UAPI_DRV_CIPHER_SYMC_BIT_WIDTH_128BIT 0x3 128位宽 UAPI_DRV_CIPHER_SYMC_BIT_WIDTH_MAX 0x4 位宽上限值 UAPI_DRV_CIPHER_SYMC_BIT_WIDTH_INVALID 0xffffffff 无效位宽
Enumerations
uapi_drv_cipher_symc_type_t
typedef enum {
UAPI_DRV_CIPHER_SYMC_TYPE_NORMAL = 0x0,
UAPI_DRV_CIPHER_SYMC_TYPE_REG,
UAPI_DRV_CIPHER_SYMC_TYPE_MAX,
UAPI_DRV_CIPHER_SYMC_TYPE_INVALID = 0xffffffff,
} uapi_drv_cipher_symc_type_t;
枚举成员 取值 描述 UAPI_DRV_CIPHER_SYMC_TYPE_NORMAL 0x0 普通通道类型 UAPI_DRV_CIPHER_SYMC_TYPE_REG 0x1 寄存器通道类型 UAPI_DRV_CIPHER_SYMC_TYPE_MAX 0x2 通道类型上限值 UAPI_DRV_CIPHER_SYMC_TYPE_INVALID 0xffffffff 无效通道类型
uapi_drv_cipher_symc_alg_t
// TDES is not secure, and we advise not to use it.
typedef enum {
UAPI_DRV_CIPHER_SYMC_ALG_TDES = 0x0,
UAPI_DRV_CIPHER_SYMC_ALG_AES = 0x1,
UAPI_DRV_CIPHER_SYMC_ALG_SM4 = 0x2,
UAPI_DRV_CIPHER_SYMC_ALG_LEA = 0x3,
UAPI_DRV_CIPHER_SYMC_ALG_DMA = 0x4,
UAPI_DRV_CIPHER_SYMC_ALG_MAX,
UAPI_DRV_CIPHER_SYMC_ALG_INVALID = 0xffffffff,
} uapi_drv_cipher_symc_alg_t;
枚举成员 取值 描述 UAPI_DRV_CIPHER_SYMC_ALG_TDES 0x0 TDES算法,不建议使用 UAPI_DRV_CIPHER_SYMC_ALG_AES 0x1 AES算法 UAPI_DRV_CIPHER_SYMC_ALG_SM4 0x2 SM4算法 UAPI_DRV_CIPHER_SYMC_ALG_LEA 0x3 LEA算法 UAPI_DRV_CIPHER_SYMC_ALG_DMA 0x4 DMA模式 UAPI_DRV_CIPHER_SYMC_ALG_MAX 0x5 算法类型上限值 UAPI_DRV_CIPHER_SYMC_ALG_INVALID 0xffffffff 无效算法类型
uapi_drv_cipher_symc_work_mode_t
// ECB is not secure, and we advise not to use it.
typedef enum {
UAPI_DRV_CIPHER_SYMC_WORK_MODE_ECB = 0x0,
UAPI_DRV_CIPHER_SYMC_WORK_MODE_CBC,
UAPI_DRV_CIPHER_SYMC_WORK_MODE_CTR,
UAPI_DRV_CIPHER_SYMC_WORK_MODE_OFB,
UAPI_DRV_CIPHER_SYMC_WORK_MODE_CFB,
UAPI_DRV_CIPHER_SYMC_WORK_MODE_CCM,
UAPI_DRV_CIPHER_SYMC_WORK_MODE_GCM,
UAPI_DRV_CIPHER_SYMC_WORK_MODE_CBC_MAC,
UAPI_DRV_CIPHER_SYMC_WORK_MODE_CMAC,
UAPI_DRV_CIPHER_SYMC_WORK_MODE_MAX,
UAPI_DRV_CIPHER_SYMC_WORK_MODE_INVALID = 0xffffffff,
} uapi_drv_cipher_symc_work_mode_t;
枚举成员 取值 描述 UAPI_DRV_CIPHER_SYMC_WORK_MODE_ECB 0x0 ECB模式,不建议使用 UAPI_DRV_CIPHER_SYMC_WORK_MODE_CBC 0x1 CBC模式 UAPI_DRV_CIPHER_SYMC_WORK_MODE_CTR 0x2 CTR模式 UAPI_DRV_CIPHER_SYMC_WORK_MODE_OFB 0x3 OFB模式 UAPI_DRV_CIPHER_SYMC_WORK_MODE_CFB 0x4 CFB模式 UAPI_DRV_CIPHER_SYMC_WORK_MODE_CCM 0x5 CCM模式 UAPI_DRV_CIPHER_SYMC_WORK_MODE_GCM 0x6 GCM模式 UAPI_DRV_CIPHER_SYMC_WORK_MODE_CBC_MAC 0x7 CBC-MAC模式 UAPI_DRV_CIPHER_SYMC_WORK_MODE_CMAC 0x8 CMAC模式 UAPI_DRV_CIPHER_SYMC_WORK_MODE_MAX 0x9 工作模式上限值 UAPI_DRV_CIPHER_SYMC_WORK_MODE_INVALID 0xffffffff 无效工作模式
uapi_drv_cipher_symc_key_length_t
typedef enum {
UAPI_DRV_CIPHER_SYMC_KEY_64BIT = 0x0,
UAPI_DRV_CIPHER_SYMC_KEY_128BIT = 0x1,
UAPI_DRV_CIPHER_SYMC_KEY_192BIT = 0x2,
UAPI_DRV_CIPHER_SYMC_KEY_256BIT = 0x3,
UAPI_DRV_CIPHER_SYMC_KEY_LENGTH_MAX,
UAPI_DRV_CIPHER_SYMC_KEY_LENGTH_INVALID = 0xffffffff,
} uapi_drv_cipher_symc_key_length_t;
枚举成员 取值 描述 UAPI_DRV_CIPHER_SYMC_KEY_64BIT 0x0 64位密钥长度 UAPI_DRV_CIPHER_SYMC_KEY_128BIT 0x1 128位密钥长度 UAPI_DRV_CIPHER_SYMC_KEY_192BIT 0x2 192位密钥长度 UAPI_DRV_CIPHER_SYMC_KEY_256BIT 0x3 256位密钥长度 UAPI_DRV_CIPHER_SYMC_KEY_LENGTH_MAX 0x4 密钥长度上限值 UAPI_DRV_CIPHER_SYMC_KEY_LENGTH_INVALID 0xffffffff 无效密钥长度
uapi_drv_cipher_symc_key_parity_t
typedef enum {
UAPI_DRV_CIPHER_SYMC_KEY_EVEN = 0x0,
UAPI_DRV_CIPHER_SYMC_KEY_ODD = 0x1,
UAPI_DRV_CIPHER_SYMC_KEY_PARITY_MAX,
UAPI_DRV_CIPHER_SYMC_KEY_PARITY_INVALID = 0xffffffff,
} uapi_drv_cipher_symc_key_parity_t;
枚举成员 取值 描述 UAPI_DRV_CIPHER_SYMC_KEY_EVEN 0x0 偶密钥 UAPI_DRV_CIPHER_SYMC_KEY_ODD 0x1 奇密钥 UAPI_DRV_CIPHER_SYMC_KEY_PARITY_MAX 0x2 密钥奇偶性上限值 UAPI_DRV_CIPHER_SYMC_KEY_PARITY_INVALID 0xffffffff 无效密钥奇偶性
uapi_drv_cipher_symc_bit_width_t
typedef enum {
UAPI_DRV_CIPHER_SYMC_BIT_WIDTH_1BIT = 0x0,
UAPI_DRV_CIPHER_SYMC_BIT_WIDTH_8BIT = 0x1,
UAPI_DRV_CIPHER_SYMC_BIT_WIDTH_64BIT = 0x2,
UAPI_DRV_CIPHER_SYMC_BIT_WIDTH_128BIT = 0x3,
UAPI_DRV_CIPHER_SYMC_BIT_WIDTH_MAX,
UAPI_DRV_CIPHER_SYMC_BIT_WIDTH_INVALID = 0xffffffff,
} uapi_drv_cipher_symc_bit_width_t;
枚举成员 取值 描述 UAPI_DRV_CIPHER_SYMC_BIT_WIDTH_1BIT 0x0 1位宽 UAPI_DRV_CIPHER_SYMC_BIT_WIDTH_8BIT 0x1 8位宽 UAPI_DRV_CIPHER_SYMC_BIT_WIDTH_64BIT 0x2 64位宽 UAPI_DRV_CIPHER_SYMC_BIT_WIDTH_128BIT 0x3 128位宽 UAPI_DRV_CIPHER_SYMC_BIT_WIDTH_MAX 0x4 位宽上限值 UAPI_DRV_CIPHER_SYMC_BIT_WIDTH_INVALID 0xffffffff 无效位宽
uapi_drv_cipher_symc_iv_change_type_t
typedef enum {
UAPI_DRV_CIPHER_SYMC_IV_DO_NOT_CHANGE = 0,
UAPI_DRV_CIPHER_SYMC_IV_CHANGE_ONE_PKG,
UAPI_DRV_CIPHER_SYMC_IV_CHANGE_ALL_PKG,
/* GCM. */
UAPI_DRV_CIPHER_SYMC_GCM_IV_DO_NOT_CHANGE,
UAPI_DRV_CIPHER_SYMC_GCM_IV_CHANGE_START,
UAPI_DRV_CIPHER_SYMC_GCM_IV_CHANGE_UPDATE,
UAPI_DRV_CIPHER_SYMC_GCM_IV_CHANGE_FINISH,
/* CCM. */
UAPI_DRV_CIPHER_SYMC_CCM_IV_DO_NOT_CHANGE,
UAPI_DRV_CIPHER_SYMC_CCM_IV_CHANGE_START,
UAPI_DRV_CIPHER_SYMC_CCM_IV_CHANGE_UPDATE,
UAPI_DRV_CIPHER_SYMC_CCM_IV_CHANGE_FINISH,
UAPI_DRV_CIPHER_SYMC_IV_CHANGE_MAX,
UAPI_DRV_CIPHER_SYMC_IV_CHANGE_INVALID = 0xffffffff,
} uapi_drv_cipher_symc_iv_change_type_t;
枚举成员 取值 描述 UAPI_DRV_CIPHER_SYMC_IV_DO_NOT_CHANGE 0 IV不变 UAPI_DRV_CIPHER_SYMC_IV_CHANGE_ONE_PKG 1 IV单包变化 UAPI_DRV_CIPHER_SYMC_IV_CHANGE_ALL_PKG 2 IV所有包变化 UAPI_DRV_CIPHER_SYMC_GCM_IV_DO_NOT_CHANGE 3 GCM模式IV不变 UAPI_DRV_CIPHER_SYMC_GCM_IV_CHANGE_START 4 GCM模式IV起始变化 UAPI_DRV_CIPHER_SYMC_GCM_IV_CHANGE_UPDATE 5 GCM模式IV更新变化 UAPI_DRV_CIPHER_SYMC_GCM_IV_CHANGE_FINISH 6 GCM模式IV结束变化 UAPI_DRV_CIPHER_SYMC_CCM_IV_DO_NOT_CHANGE 7 CCM模式IV不变 UAPI_DRV_CIPHER_SYMC_CCM_IV_CHANGE_START 8 CCM模式IV起始变化 UAPI_DRV_CIPHER_SYMC_CCM_IV_CHANGE_UPDATE 9 CCM模式IV更新变化 UAPI_DRV_CIPHER_SYMC_CCM_IV_CHANGE_FINISH 10 CCM模式IV结束变化 UAPI_DRV_CIPHER_SYMC_IV_CHANGE_MAX 11 IV变化标志上限值 UAPI_DRV_CIPHER_SYMC_IV_CHANGE_INVALID 0xffffffff 无效IV变化标志
uapi_drv_cipher_buffer_secure_t
typedef enum uapi_drv_cipher_buffer_secure {
UAPI_DRV_CIPHER_BUF_NONSECURE,
UAPI_DRV_CIPHER_BUF_SECURE,
} uapi_drv_cipher_buffer_secure_t;
枚举成员 取值 描述 UAPI_DRV_CIPHER_BUF_NONSECURE 0 非安全缓冲区 UAPI_DRV_CIPHER_BUF_SECURE 1 安全缓冲区
uapi_drv_cipher_hash_type_t
typedef enum uapi_drv_hash_type {
UAPI_DRV_CIPHER_HASH_TYPE_SHA1 = 0xf690a0,
UAPI_DRV_CIPHER_HASH_TYPE_SHA224 = 0x10690e0,
UAPI_DRV_CIPHER_HASH_TYPE_SHA256 = 0x1169100,
UAPI_DRV_CIPHER_HASH_TYPE_SHA384 = 0x127a180,
UAPI_DRV_CIPHER_HASH_TYPE_SHA512 = 0x137a200,
UAPI_DRV_CIPHER_HASH_TYPE_SM3 = 0x2169100,
UAPI_DRV_CIPHER_HASH_TYPE_HMAC_SHA1 = 0x10f690a0,
UAPI_DRV_CIPHER_HASH_TYPE_HMAC_SHA224 = 0x110690e0,
UAPI_DRV_CIPHER_HASH_TYPE_HMAC_SHA256 = 0x11169100,
UAPI_DRV_CIPHER_HASH_TYPE_HMAC_SHA384 = 0x1127a180,
UAPI_DRV_CIPHER_HASH_TYPE_HMAC_SHA512 = 0x1137a200,
UAPI_DRV_CIPHER_HASH_TYPE_HMAC_SM3 = 0x12169100,
UAPI_DRV_CIPHER_HASH_TYPE_INVALID = 0xffffffff,
} uapi_drv_cipher_hash_type_t;
枚举成员 取值 描述 UAPI_DRV_CIPHER_HASH_TYPE_SHA1 0xf690a0 SHA1算法,不建议使用 UAPI_DRV_CIPHER_HASH_TYPE_SHA224 0x10690e0 SHA224算法,不建议使用 UAPI_DRV_CIPHER_HASH_TYPE_SHA256 0x1169100 SHA256算法 UAPI_DRV_CIPHER_HASH_TYPE_SHA384 0x127a180 SHA384算法 UAPI_DRV_CIPHER_HASH_TYPE_SHA512 0x137a200 SHA512算法 UAPI_DRV_CIPHER_HASH_TYPE_SM3 0x2169100 SM3算法 UAPI_DRV_CIPHER_HASH_TYPE_HMAC_SHA1 0x10f690a0 HMAC-SHA1算法,不建议使用 UAPI_DRV_CIPHER_HASH_TYPE_HMAC_SHA224 0x110690e0 HMAC-SHA224算法,不建议使用 UAPI_DRV_CIPHER_HASH_TYPE_HMAC_SHA256 0x11169100 HMAC-SHA256算法 UAPI_DRV_CIPHER_HASH_TYPE_HMAC_SHA384 0x1127a180 HMAC-SHA384算法 UAPI_DRV_CIPHER_HASH_TYPE_HMAC_SHA512 0x1137a200 HMAC-SHA512算法 UAPI_DRV_CIPHER_HASH_TYPE_HMAC_SM3 0x12169100 HMAC-SM3算法 UAPI_DRV_CIPHER_HASH_TYPE_INVALID 0xffffffff 无效hash算法类型
Structures
uapi_drv_cipher_buf_attr_t
typedef struct uapi_drv_cipher_buf_attr {
uint64_t uapi_mem_handle;
uint64_t addr_offset;
void *kapi_mem_handle;
uintptr_t phys_addr;
void *virt_addr;
uapi_drv_cipher_buffer_secure_t buf_sec;
} uapi_drv_cipher_buf_attr_t;
成员 类型 描述 uapi_mem_handle uint64_t 该参数未使用 addr_offset uint64_t 该参数未使用 kapi_mem_handle void * 该参数未使用 phys_addr uintptr_t 缓冲区的物理地址 virt_addr void * 缓冲区的CPU地址 buf_sec uapi_drv_cipher_buffer_secure_t 缓冲区安全属性
uapi_drv_cipher_symc_attr_t
typedef struct {
uapi_drv_cipher_symc_alg_t symc_alg;
uapi_drv_cipher_symc_work_mode_t work_mode;
uapi_drv_cipher_symc_type_t symc_type;
bool is_long_term;
} uapi_drv_cipher_symc_attr_t;
成员 类型 描述 symc_alg uapi_drv_cipher_symc_alg_t 对称加密算法 work_mode uapi_drv_cipher_symc_work_mode_t 对称加密算法工作模式 symc_type uapi_drv_cipher_symc_type_t 对称加密通道类型 is_long_term bool 长短期通道占用标志
uapi_drv_cipher_symc_config_aes_ccm_gcm_t
typedef struct {
uapi_drv_cipher_buf_attr_t aad_buf;
uint32_t aad_len;
uint32_t data_len;
uint32_t tag_len;
} uapi_drv_cipher_symc_config_aes_ccm_gcm_t;
成员 类型 描述 aad_buf uapi_drv_cipher_buf_attr_t 附加信息的缓冲区属性结构体 aad_len uint32_t 附加信息的字节长度 data_len uint32_t 加密数据的字节长度 tag_len uint32_t 标签的字节长度
uapi_drv_cipher_symc_ctrl_t
typedef struct {
uapi_drv_cipher_symc_alg_t symc_alg;
uapi_drv_cipher_symc_work_mode_t work_mode;
uapi_drv_cipher_symc_key_length_t symc_key_length;
uapi_drv_cipher_symc_key_parity_t key_parity;
uapi_drv_cipher_symc_bit_width_t symc_bit_width;
uapi_drv_cipher_symc_iv_change_type_t iv_change_flag;
uint8_t iv[UAPI_DRV_CIPHER_IV_LEN_IN_BYTES];
uint32_t iv_length;
void *param;
} uapi_drv_cipher_symc_ctrl_t;
成员 类型 描述 symc_alg uapi_drv_cipher_symc_alg_t 对称加密算法 work_mode uapi_drv_cipher_symc_work_mode_t 对称加密算法工作模式 symc_key_length uapi_drv_cipher_symc_key_length_t 对称加密密钥长度 key_parity uapi_drv_cipher_symc_key_parity_t 对称算法密钥奇偶性 symc_bit_width uapi_drv_cipher_symc_bit_width_t 对称算法密钥位宽 iv_change_flag uapi_drv_cipher_symc_iv_change_type_t 对称算法初始值标志 iv uint8_t[16] 对称加密算法初始值 iv_length uint32_t 对称加密算法初始值长度 param void * 对称加密CCM和GCM工作模式的参数
uapi_drv_cipher_symc_mac_attr_t
typedef struct {
bool is_long_term;
uapi_drv_cipher_symc_alg_t symc_alg;
uapi_drv_cipher_symc_work_mode_t work_mode;
uapi_drv_cipher_symc_key_length_t symc_key_length;
uint32_t keyslot_chn;
} uapi_drv_cipher_symc_mac_attr_t;
成员 类型 描述 is_long_term bool 长短期通道占用标志 symc_alg uapi_drv_cipher_symc_alg_t 对称加密算法 work_mode uapi_drv_cipher_symc_work_mode_t 对称加密算法工作模式 symc_key_length uapi_drv_cipher_symc_key_length_t 对称加密密钥长度 keyslot_chn uint32_t Key槽ID
uapi_drv_cipher_hash_attr_t
typedef struct uapi_drv_hash_attr {
uint8_t *key;
uint32_t key_len;
uint32_t keyslot_handle;
uapi_drv_cipher_hash_type_t hash_type;
bool is_keyslot;
bool is_long_term;
} uapi_drv_cipher_hash_attr_t;
成员 类型 描述 key uint8_t * 指向HMAC算法使用密钥的指针,当使用HMAC算法且is_keyslot为false时该参数生效 key_len uint32_t 密钥长度(字节),HMAC-SHA1/SHA224/SHA256/SM3不超过64字节,HMAC-SHA384/SHA512不超过128字节 keyslot_handle uint32_t HMAC算法使用的keyslot通道句柄,当is_keyslot为true时该参数生效 hash_type uapi_drv_cipher_hash_type_t hash算法类型 is_keyslot bool 指示HMAC算法是否使用keyslot is_long_term bool 指示创建的通道为长期通道还是短期通道,最大支持创建2个长期通道和8个短期通道
uapi_drv_cipher_hash_clone_ctx_t
typedef struct uapi_drv_cipher_hash_clone_ctx {
uint32_t length[2];
uint32_t state[UAPI_DRV_CIPHER_HASH_RESULT_SIZE_MAX_IN_WORD];
uint32_t tail_len;
uapi_drv_cipher_hash_type_t hash_type;
uint8_t o_key_pad[UAPI_DRV_CIPHER_HASH_BLOCK_SIZE_MAX];
uint8_t i_key_pad[UAPI_DRV_CIPHER_HASH_BLOCK_SIZE_MAX];
uint8_t tail[UAPI_DRV_CIPHER_HASH_BLOCK_SIZE_MAX];
} uapi_drv_cipher_hash_clone_ctx_t;
成员 类型 描述 length uint32_t[2] 保存当前已处理的数据长度(位) state uint32_t[16] 保存计算中间结果 tail_len uint32_t 上次计算后剩余未对齐的尾部数据长度 hash_type uapi_drv_cipher_hash_type_t hash计算使用的算法 o_key_pad uint8_t[128] 保存o_key_pad,HMAC算法使用 i_key_pad uint8_t[128] 保存i_key_pad,HMAC算法使用 tail uint8_t[128] 上次计算后剩余未对齐的尾部数据 说明:该结构体的内容无需用户构造,通过uapi_drv_cipher_hash_get接口获取,并通过uapi_drv_cipher_hash_set接口设置。
uapi_drv_cipher_kdf_pbkdf2_param_t
typedef struct {
uapi_drv_cipher_hash_type_t hash_type;
uint8_t *password;
uint32_t plen;
uint8_t *salt;
uint32_t slen;
uint16_t count;
} uapi_drv_cipher_kdf_pbkdf2_param_t;
成员 类型 描述 hash_type uapi_drv_cipher_hash_type_t PBKDF2使用的hash算法类型 password uint8_t * PBKDF2的输入口令 plen uint32_t PBKDF2的输入口令长度 salt uint8_t * PBKDF2的盐值 slen uint32_t PBKDF2的盐值长度 count uint16_t PBKDF2的迭代次数
uapi_drv_cipher_hkdf_extract_t
typedef struct {
uapi_drv_cipher_hash_type_t hmac_type;
uint8_t *salt;
uint32_t salt_length;
uint8_t *ikm;
uint32_t ikm_length;
} uapi_drv_cipher_hkdf_extract_t;
成员 类型 描述 hmac_type uapi_drv_cipher_hash_type_t 提取密钥的HMAC算法类型 salt uint8_t * 提取密钥的盐值 salt_length uint32_t 提取密钥的盐值长度 ikm uint8_t * 提取密钥的原始密钥材料 ikm_length uint32_t 提取密钥的原始密钥材料长度
uapi_drv_cipher_hkdf_expand_t
typedef struct {
uapi_drv_cipher_hash_type_t hmac_type;
uint8_t *prk;
uint32_t prk_length;
uint8_t *info;
uint32_t info_length;
} uapi_drv_cipher_hkdf_expand_t;
成员 类型 描述 hmac_type uapi_drv_cipher_hash_type_t 拓展密钥的HMAC算法类型 prk uint8_t * 拓展密钥的伪随机密钥 prk_length uint32_t 拓展密钥的伪随机密钥长度 info uint8_t * 拓展密钥的信息 info_length uint32_t 拓展密钥的信息长度
uapi_drv_cipher_hkdf_t
typedef struct {
uapi_drv_cipher_hash_type_t hmac_type;
uint8_t *salt;
uint32_t salt_length;
uint8_t *ikm;
uint32_t ikm_length;
uint8_t *info;
uint32_t info_length;
} uapi_drv_cipher_hkdf_t;
成员 类型 描述 hmac_type uapi_drv_cipher_hash_type_t 提取、拓展密钥的HMAC算法类型 salt uint8_t * 提取密钥的盐值 salt_length uint32_t 提取密钥的盐值长度 ikm uint8_t * 提取密钥的原始密钥材料 ikm_length uint32_t 提取密钥的原始密钥材料长度 info uint8_t * 拓展密钥的信息 info_length uint32_t 拓展密钥的信息长度
Type Definitions
宏/类型 取值 描述 UAPI_DRV_CIPHER_IV_LEN_IN_BYTES 16 对称加密IV长度(字节) UAPI_DRV_CIPHER_HASH_RESULT_SIZE_MAX_IN_WORD 16 Hash结果最大字数(SHA-512) UAPI_DRV_CIPHER_HASH_BLOCK_SIZE_MAX 128 Hash块最大字节数(SHA-512)