跳转至

security_pke

PKE (Public Key Engine) 提供公钥加密引擎功能,支持ECC/SM2/RSA/DH等非对称加密算法及大数运算。

头文件清单

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

接口清单

接口名称 功能简述
uapi_drv_cipher_pke_ecc_gen_key 生成ECC秘钥对
uapi_drv_cipher_pke_ecdsa_sign 椭圆曲线数字签名
uapi_drv_cipher_pke_ecdsa_verify 椭圆曲线数字ECC验签
uapi_drv_cipher_pke_ecdsa_verify_s 椭圆曲线数字ECC验签,用于安全加固
uapi_drv_cipher_pke_eddsa_sign 爱德华兹曲线数字签名
uapi_drv_cipher_pke_eddsa_verify 爱德华兹曲线数字验签
uapi_drv_cipher_pke_ecc_gen_ecdh_key 椭圆曲线迪菲-赫尔曼秘钥协商
uapi_drv_cipher_pke_check_dot_on_curve 检查点是否在椭圆曲线上
uapi_drv_cipher_pke_sm2_dsa_hash SM2杂凑的SM3摘要计算
uapi_drv_cipher_pke_sm2_sign SM2数字签名
uapi_drv_cipher_pke_sm2_verify SM2数字ECC验签
uapi_drv_cipher_pke_sm2_public_encrypt SM2公钥加密
uapi_drv_cipher_pke_sm2_private_decrypt SM2私钥解密
uapi_drv_cipher_pke_rsa_sign RSA签名
uapi_drv_cipher_pke_rsa_verify RSA验签
uapi_drv_cipher_pke_rsa_public_encrypt RSA公钥加密
uapi_drv_cipher_pke_rsa_private_decrypt RSA私钥解密
uapi_drv_cipher_pke_dh_gen_key DH公私钥对生成或由私钥生成公钥
uapi_drv_cipher_pke_dh_compute_key DH密钥协商算法
uapi_drv_cipher_pke_add_mod 模加 c = (a + b) mod p
uapi_drv_cipher_pke_sub_mod 模减 c = (a - b) mod p
uapi_drv_cipher_pke_mul_mod 模乘 c = (a * b) mod p
uapi_drv_cipher_pke_inv_mod 模逆 c = (a^-1) mod p
uapi_drv_cipher_pke_mod 取模运算 c = a mod p
uapi_drv_cipher_pke_mul 大数乘 c = a * b
uapi_drv_cipher_pke_exp_mod 模幂 out = (in ^ k) mod n
uapi_drv_cipher_pke_mul_dot 椭圆曲线点乘
uapi_drv_cipher_pke_mul_dot_add 椭圆曲线点乘加
uapi_drv_cipher_pke_add_dot 椭圆曲线点加

Functions

uapi_drv_cipher_pke_ecc_gen_key

errcode_t uapi_drv_cipher_pke_ecc_gen_key(uapi_drv_cipher_pke_ecc_curve_type_t curve_type, const uapi_drv_cipher_pke_data_t *input_priv_key, const uapi_drv_cipher_pke_data_t *output_priv_key, const uapi_drv_cipher_pke_ecc_point_t *output_pub_key)

头文件清单

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

功能说明

  • 生成ECC秘钥对
  • 支持通过输入私钥生成对应的公钥,input_priv_key可以为空指针
  • 输出私钥和公钥通过出参返回

入参

名称 参数类型 详细说明 约束取值范围
curve_type uapi_drv_cipher_pke_ecc_curve_type_t ECC曲线类型 UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P256(0x20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P384(0x430) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P512(0x840) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256K(0xc20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P192R(0x1018) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P224R(0x1420) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256R(0x1820) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P384R(0x1c30) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P521R(0x2048) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748(0x2420) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748_448(0x2838) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC8032(0x2c20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_SM2(0x3020) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_MAX(0x3021) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_INVALID(0xffffffff)
input_priv_key const uapi_drv_cipher_pke_data_t * 输入私钥,可以为空指针 NULL 或有效的数据指针

出参

名称 数据类型 输出说明
output_priv_key const uapi_drv_cipher_pke_data_t * 输出私钥,非空指针
output_pub_key const uapi_drv_cipher_pke_ecc_point_t * 输出公钥,非空指针

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 秘钥对生成成功
Other 其他错误码,参考errcode_t 执行失败

uapi_drv_cipher_pke_ecdsa_sign

errcode_t uapi_drv_cipher_pke_ecdsa_sign(uapi_drv_cipher_pke_ecc_curve_type_t curve_type, const uapi_drv_cipher_pke_data_t *priv_key, const uapi_drv_cipher_pke_data_t *hash, const uapi_drv_cipher_pke_ecc_sig_t *sig)

头文件清单

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

功能说明

  • 椭圆曲线数字签名(ECDSA)
  • 使用私钥对摘要值进行签名
  • 签名结果通过出参返回

入参

名称 参数类型 详细说明 约束取值范围
curve_type uapi_drv_cipher_pke_ecc_curve_type_t ECC曲线类型 UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P256(0x20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P384(0x430) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P512(0x840) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256K(0xc20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P192R(0x1018) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P224R(0x1420) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256R(0x1820) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P384R(0x1c30) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P521R(0x2048) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748(0x2420) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748_448(0x2838) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC8032(0x2c20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_SM2(0x3020) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_MAX(0x3021) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_INVALID(0xffffffff)
priv_key const uapi_drv_cipher_pke_data_t * 输入私钥 非空指针
hash const uapi_drv_cipher_pke_data_t * 输入摘要 非空指针

出参

名称 数据类型 输出说明
sig const uapi_drv_cipher_pke_ecc_sig_t * 输出签名,非空指针

返回值

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

uapi_drv_cipher_pke_ecdsa_verify

errcode_t uapi_drv_cipher_pke_ecdsa_verify(uapi_drv_cipher_pke_ecc_curve_type_t curve_type, const uapi_drv_cipher_pke_ecc_point_t *pub_key, const uapi_drv_cipher_pke_data_t *hash, const uapi_drv_cipher_pke_ecc_sig_t *sig)

头文件清单

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

功能说明

  • 椭圆曲线数字ECC验签(ECDSA)
  • 使用公钥对摘要和签名进行验证
  • 验证结果通过返回值表示

入参

名称 参数类型 详细说明 约束取值范围
curve_type uapi_drv_cipher_pke_ecc_curve_type_t ECC曲线类型 UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P256(0x20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P384(0x430) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P512(0x840) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256K(0xc20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P192R(0x1018) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P224R(0x1420) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256R(0x1820) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P384R(0x1c30) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P521R(0x2048) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748(0x2420) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748_448(0x2838) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC8032(0x2c20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_SM2(0x3020) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_MAX(0x3021) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_INVALID(0xffffffff)
pub_key const uapi_drv_cipher_pke_ecc_point_t * 输入公钥 非空指针
hash const uapi_drv_cipher_pke_data_t * 输入摘要 非空指针
sig const uapi_drv_cipher_pke_ecc_sig_t * 输入签名 非空指针

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 验签通过
Other 其他错误码,参考errcode_t 执行失败

uapi_drv_cipher_pke_ecdsa_verify_s

errcode_t uapi_drv_cipher_pke_ecdsa_verify_s(uapi_drv_cipher_pke_ecc_curve_type_t curve_type, const uapi_drv_cipher_pke_ecc_point_t *pub_key, const uapi_drv_cipher_pke_data_t *hash, const uapi_drv_cipher_pke_ecc_sig_t *sig, const uapi_drv_cipher_pke_data_t *v)

头文件清单

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

功能说明

  • 椭圆曲线数字ECC验签,用于安全加固
  • 接口返回成功后,还需要将输出的v值与输入的签名r值进行比较,相同表示校验通过
  • v参数支持传入NULL

入参

名称 参数类型 详细说明 约束取值范围
curve_type uapi_drv_cipher_pke_ecc_curve_type_t ECC曲线类型 UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P256(0x20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P384(0x430) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P512(0x840) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256K(0xc20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P192R(0x1018) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P224R(0x1420) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256R(0x1820) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P384R(0x1c30) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P521R(0x2048) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748(0x2420) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748_448(0x2838) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC8032(0x2c20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_SM2(0x3020) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_MAX(0x3021) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_INVALID(0xffffffff)
pub_key const uapi_drv_cipher_pke_ecc_point_t * 输入公钥 非空指针
hash const uapi_drv_cipher_pke_data_t * 输入摘要 非空指针
sig const uapi_drv_cipher_pke_ecc_sig_t * 输入签名 非空指针

出参

名称 数据类型 输出说明
v const uapi_drv_cipher_pke_data_t * 输出的v值,与签名r值比较判断校验是否通过,NULL或有效的数据指针

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 验签操作成功
Other 其他错误码,参考errcode_t 执行失败

uapi_drv_cipher_pke_eddsa_sign

errcode_t uapi_drv_cipher_pke_eddsa_sign(uapi_drv_cipher_pke_ecc_curve_type_t curve_type, const uapi_drv_cipher_pke_data_t *priv_key, const uapi_drv_cipher_pke_msg_t *msg, const uapi_drv_cipher_pke_ecc_sig_t *sig)

头文件清单

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

功能说明

  • 爱德华兹曲线数字签名(EdDSA)
  • 使用私钥对消息进行签名
  • 签名结果通过出参返回

入参

名称 参数类型 详细说明 约束取值范围
curve_type uapi_drv_cipher_pke_ecc_curve_type_t ECC曲线类型 UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P256(0x20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P384(0x430) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P512(0x840) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256K(0xc20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P192R(0x1018) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P224R(0x1420) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256R(0x1820) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P384R(0x1c30) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P521R(0x2048) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748(0x2420) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748_448(0x2838) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC8032(0x2c20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_SM2(0x3020) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_MAX(0x3021) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_INVALID(0xffffffff)
priv_key const uapi_drv_cipher_pke_data_t * 输入私钥 非空指针
msg const uapi_drv_cipher_pke_msg_t * 输入消息 非空指针

出参

名称 数据类型 输出说明
sig const uapi_drv_cipher_pke_ecc_sig_t * 输出签名,非空指针

返回值

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

uapi_drv_cipher_pke_eddsa_verify

errcode_t uapi_drv_cipher_pke_eddsa_verify(uapi_drv_cipher_pke_ecc_curve_type_t curve_type, const uapi_drv_cipher_pke_ecc_point_t *pub_key, const uapi_drv_cipher_pke_msg_t *msg, const uapi_drv_cipher_pke_ecc_sig_t *sig)

头文件清单

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

功能说明

  • 爱德华兹曲线数字验签(EdDSA)
  • 使用公钥对消息和签名进行验证
  • 验证结果通过返回值表示

入参

名称 参数类型 详细说明 约束取值范围
curve_type uapi_drv_cipher_pke_ecc_curve_type_t ECC曲线类型 UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P256(0x20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P384(0x430) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P512(0x840) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256K(0xc20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P192R(0x1018) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P224R(0x1420) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256R(0x1820) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P384R(0x1c30) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P521R(0x2048) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748(0x2420) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748_448(0x2838) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC8032(0x2c20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_SM2(0x3020) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_MAX(0x3021) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_INVALID(0xffffffff)
pub_key const uapi_drv_cipher_pke_ecc_point_t * 输入公钥 非空指针
msg const uapi_drv_cipher_pke_msg_t * 输入消息 非空指针
sig const uapi_drv_cipher_pke_ecc_sig_t * 输入签名 非空指针

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 验签通过
Other 其他错误码,参考errcode_t 执行失败

uapi_drv_cipher_pke_ecc_gen_ecdh_key

errcode_t uapi_drv_cipher_pke_ecc_gen_ecdh_key(uapi_drv_cipher_pke_ecc_curve_type_t curve_type, const uapi_drv_cipher_pke_ecc_point_t *input_pub_key, const uapi_drv_cipher_pke_data_t *input_priv_key, const uapi_drv_cipher_pke_data_t *output_shared_key)

头文件清单

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

功能说明

  • 椭圆曲线迪菲-赫尔曼秘钥协商(ECDH)
  • 使用输入公钥和私钥协商生成共享密钥
  • 协商结果通过出参返回

入参

名称 参数类型 详细说明 约束取值范围
curve_type uapi_drv_cipher_pke_ecc_curve_type_t ECC曲线类型 UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P256(0x20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P384(0x430) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P512(0x840) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256K(0xc20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P192R(0x1018) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P224R(0x1420) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256R(0x1820) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P384R(0x1c30) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P521R(0x2048) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748(0x2420) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748_448(0x2838) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC8032(0x2c20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_SM2(0x3020) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_MAX(0x3021) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_INVALID(0xffffffff)
input_pub_key const uapi_drv_cipher_pke_ecc_point_t * 输入公钥 非空指针
input_priv_key const uapi_drv_cipher_pke_data_t * 输入私钥 非空指针

出参

名称 数据类型 输出说明
output_shared_key const uapi_drv_cipher_pke_data_t * 输出协商秘钥,非空指针

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 秘钥协商成功
Other 其他错误码,参考errcode_t 执行失败

uapi_drv_cipher_pke_check_dot_on_curve

errcode_t uapi_drv_cipher_pke_check_dot_on_curve(uapi_drv_cipher_pke_ecc_curve_type_t curve_type, const uapi_drv_cipher_pke_ecc_point_t *pub_key, bool *is_on_curve)

头文件清单

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

功能说明

  • 检查点是否在椭圆曲线上
  • 输入公钥点和曲线类型,输出是否在曲线上的判定结果
  • 判定结果通过布尔出参返回

入参

名称 参数类型 详细说明 约束取值范围
curve_type uapi_drv_cipher_pke_ecc_curve_type_t ECC曲线类型 UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P256(0x20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P384(0x430) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P512(0x840) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256K(0xc20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P192R(0x1018) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P224R(0x1420) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256R(0x1820) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P384R(0x1c30) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P521R(0x2048) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748(0x2420) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748_448(0x2838) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC8032(0x2c20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_SM2(0x3020) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_MAX(0x3021) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_INVALID(0xffffffff)
pub_key const uapi_drv_cipher_pke_ecc_point_t * 输入公钥 非空指针

出参

名称 数据类型 输出说明
is_on_curve bool * 点是否在椭圆曲线上,非空指针

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 检查操作成功
Other 其他错误码,参考errcode_t 执行失败

uapi_drv_cipher_pke_sm2_dsa_hash

errcode_t uapi_drv_cipher_pke_sm2_dsa_hash(const uapi_drv_cipher_pke_data_t *sm2_id, const uapi_drv_cipher_pke_ecc_point_t *pub_key, const uapi_drv_cipher_pke_msg_t *msg, uapi_drv_cipher_pke_data_t *hash)

头文件清单

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

功能说明

  • SM2杂凑的SM3摘要计算
  • 输入SM2 ID、公钥和消息,计算SM2签名所需的杂凑值
  • 杂凑值通过出参返回

入参

名称 参数类型 详细说明 约束取值范围
sm2_id const uapi_drv_cipher_pke_data_t * SM2 ID 非空指针
pub_key const uapi_drv_cipher_pke_ecc_point_t * 输入公钥 非空指针
msg const uapi_drv_cipher_pke_msg_t * 输入消息 非空指针

出参

名称 数据类型 输出说明
hash uapi_drv_cipher_pke_data_t * 输出SM3摘要,非空指针

返回值

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

uapi_drv_cipher_pke_sm2_sign

errcode_t uapi_drv_cipher_pke_sm2_sign(const uapi_drv_cipher_pke_data_t *priv_key, const uapi_drv_cipher_pke_data_t *hash, const uapi_drv_cipher_pke_ecc_sig_t *sig)

头文件清单

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

功能说明

  • SM2数字签名
  • 使用私钥对杂凑值进行签名
  • hash参数需为调用uapi_drv_cipher_pke_sm2_dsa_hash接口计算的杂凑值

前置条件

  • 调用时序约束:hash参数需先通过uapi_drv_cipher_pke_sm2_dsa_hash接口计算获取
  • 依赖关系:依赖SM2曲线类型的ECC秘钥已生成

入参

名称 参数类型 详细说明 约束取值范围
priv_key const uapi_drv_cipher_pke_data_t * 输入私钥 非空指针
hash const uapi_drv_cipher_pke_data_t * 输入摘要,调用uapi_drv_cipher_pke_sm2_dsa_hash接口计算的杂凑值 非空指针

出参

名称 数据类型 输出说明
sig const uapi_drv_cipher_pke_ecc_sig_t * 输出SM2签名,非空指针

返回值

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

uapi_drv_cipher_pke_sm2_verify

errcode_t uapi_drv_cipher_pke_sm2_verify(const uapi_drv_cipher_pke_ecc_point_t *pub_key, const uapi_drv_cipher_pke_data_t *hash, const uapi_drv_cipher_pke_ecc_sig_t *sig)

头文件清单

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

功能说明

  • SM2数字ECC验签
  • 使用公钥对杂凑值和签名进行验证
  • hash参数需为调用uapi_drv_cipher_pke_sm2_dsa_hash接口计算的杂凑值

前置条件

  • 调用时序约束:hash参数需先通过uapi_drv_cipher_pke_sm2_dsa_hash接口计算获取
  • 依赖关系:依赖SM2曲线类型的ECC公钥已获取

入参

名称 参数类型 详细说明 约束取值范围
pub_key const uapi_drv_cipher_pke_ecc_point_t * 输入公钥 非空指针
hash const uapi_drv_cipher_pke_data_t * 输入摘要 非空指针
sig const uapi_drv_cipher_pke_ecc_sig_t * 输入签名 非空指针

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 验签通过
Other 其他错误码,参考errcode_t 执行失败

uapi_drv_cipher_pke_sm2_public_encrypt

errcode_t uapi_drv_cipher_pke_sm2_public_encrypt(const uapi_drv_cipher_pke_ecc_point_t *pub_key, const uapi_drv_cipher_pke_data_t *plain_text, const uapi_drv_cipher_pke_data_t *cipher_text)

头文件清单

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

功能说明

  • SM2公钥加密
  • 使用公钥对明文进行加密
  • 密文通过出参返回

入参

名称 参数类型 详细说明 约束取值范围
pub_key const uapi_drv_cipher_pke_ecc_point_t * 输入公钥 非空指针
plain_text const uapi_drv_cipher_pke_data_t * 输入明文 非空指针

出参

名称 数据类型 输出说明
cipher_text const uapi_drv_cipher_pke_data_t * 输出密文,非空指针

返回值

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

uapi_drv_cipher_pke_sm2_private_decrypt

errcode_t uapi_drv_cipher_pke_sm2_private_decrypt(const uapi_drv_cipher_pke_data_t *priv_key, const uapi_drv_cipher_pke_data_t *cipher_text, const uapi_drv_cipher_pke_data_t *plain_text)

头文件清单

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

功能说明

  • SM2私钥解密
  • 使用私钥对密文进行解密
  • 明文通过出参返回

入参

名称 参数类型 详细说明 约束取值范围
priv_key const uapi_drv_cipher_pke_data_t * 输入私钥 非空指针
cipher_text const uapi_drv_cipher_pke_data_t * 输入密文 非空指针

出参

名称 数据类型 输出说明
plain_text const uapi_drv_cipher_pke_data_t * 输出明文,非空指针

返回值

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

uapi_drv_cipher_pke_rsa_sign

errcode_t uapi_drv_cipher_pke_rsa_sign(const uapi_drv_cipher_pke_rsa_priv_key_t *priv_key, uapi_drv_cipher_pke_rsa_scheme_t scheme, uapi_drv_cipher_pke_hash_type_t hash_type, const uapi_drv_cipher_pke_data_t *input_hash, uapi_drv_cipher_pke_data_t *sign)

头文件清单

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

功能说明

  • RSA签名
  • 使用私钥对摘要值进行签名
  • 支持PKCS1_V15和PKCS1_V21两种填充方式

入参

名称 参数类型 详细说明 约束取值范围
priv_key const uapi_drv_cipher_pke_rsa_priv_key_t * 输入私钥 非空指针
scheme uapi_drv_cipher_pke_rsa_scheme_t RSA填充方式 UAPI_DRV_CIPHER_PKE_RSA_SCHEME_PKCS1_V15(0x00) / UAPI_DRV_CIPHER_PKE_RSA_SCHEME_PKCS1_V21(0x01) / UAPI_DRV_CIPHER_PKE_RSA_SCHEME_MAX(0x02) / UAPI_DRV_CIPHER_PKE_RSA_SCHEME_INVALID(0xffffffff)
hash_type uapi_drv_cipher_pke_hash_type_t RSA填充使用的摘要算法 UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA1(0x00) / UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA224(0x01) / UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA256(0x02) / UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA384(0x03) / UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA512(0x04) / UAPI_DRV_CIPHER_PKE_HASH_TYPE_SM3(0x05) / UAPI_DRV_CIPHER_PKE_HASH_TYPE_MAX(0x06) / UAPI_DRV_CIPHER_PKE_HASH_TYPE_INVALID(0xffffffff)
input_hash const uapi_drv_cipher_pke_data_t * 输入摘要 非空指针

出参

名称 数据类型 输出说明
sign uapi_drv_cipher_pke_data_t * 输出签名结果,非空指针

返回值

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

uapi_drv_cipher_pke_rsa_verify

errcode_t uapi_drv_cipher_pke_rsa_verify(const uapi_drv_cipher_pke_rsa_pub_key_t *pub_key, uapi_drv_cipher_pke_rsa_scheme_t scheme, uapi_drv_cipher_pke_hash_type_t hash_type, uapi_drv_cipher_pke_data_t *input_hash, const uapi_drv_cipher_pke_data_t *sig)

头文件清单

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

功能说明

  • RSA验签
  • 使用公钥对摘要和签名进行验证
  • 支持PKCS1_V15和PKCS1_V21两种填充方式

入参

名称 参数类型 详细说明 约束取值范围
pub_key const uapi_drv_cipher_pke_rsa_pub_key_t * 输入公钥 非空指针
scheme uapi_drv_cipher_pke_rsa_scheme_t RSA填充方式 UAPI_DRV_CIPHER_PKE_RSA_SCHEME_PKCS1_V15(0x00) / UAPI_DRV_CIPHER_PKE_RSA_SCHEME_PKCS1_V21(0x01) / UAPI_DRV_CIPHER_PKE_RSA_SCHEME_MAX(0x02) / UAPI_DRV_CIPHER_PKE_RSA_SCHEME_INVALID(0xffffffff)
hash_type uapi_drv_cipher_pke_hash_type_t RSA填充使用的摘要算法 UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA1(0x00) / UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA224(0x01) / UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA256(0x02) / UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA384(0x03) / UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA512(0x04) / UAPI_DRV_CIPHER_PKE_HASH_TYPE_SM3(0x05) / UAPI_DRV_CIPHER_PKE_HASH_TYPE_MAX(0x06) / UAPI_DRV_CIPHER_PKE_HASH_TYPE_INVALID(0xffffffff)
input_hash uapi_drv_cipher_pke_data_t * 输入摘要 非空指针
sig const uapi_drv_cipher_pke_data_t * 签名值 非空指针

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 验签通过
Other 其他错误码,参考errcode_t 执行失败

uapi_drv_cipher_pke_rsa_public_encrypt

errcode_t uapi_drv_cipher_pke_rsa_public_encrypt(uapi_drv_cipher_pke_rsa_scheme_t scheme, uapi_drv_cipher_pke_hash_type_t hash_type, const uapi_drv_cipher_pke_rsa_pub_key_t *pub_key, const uapi_drv_cipher_pke_data_t *input, const uapi_drv_cipher_pke_data_t *label, uapi_drv_cipher_pke_data_t *output)

头文件清单

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

功能说明

  • RSA公钥加密
  • 使用公钥对明文进行加密
  • hash_type和label参数仅OAEP填充模式时使用

入参

名称 参数类型 详细说明 约束取值范围
scheme uapi_drv_cipher_pke_rsa_scheme_t RSA填充方式 UAPI_DRV_CIPHER_PKE_RSA_SCHEME_PKCS1_V15(0x00) / UAPI_DRV_CIPHER_PKE_RSA_SCHEME_PKCS1_V21(0x01) / UAPI_DRV_CIPHER_PKE_RSA_SCHEME_MAX(0x02) / UAPI_DRV_CIPHER_PKE_RSA_SCHEME_INVALID(0xffffffff)
hash_type uapi_drv_cipher_pke_hash_type_t RSA填充使用的摘要算法,仅OAEP填充模式时使用 UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA1(0x00) / UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA224(0x01) / UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA256(0x02) / UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA384(0x03) / UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA512(0x04) / UAPI_DRV_CIPHER_PKE_HASH_TYPE_SM3(0x05) / UAPI_DRV_CIPHER_PKE_HASH_TYPE_MAX(0x06) / UAPI_DRV_CIPHER_PKE_HASH_TYPE_INVALID(0xffffffff)
pub_key const uapi_drv_cipher_pke_rsa_pub_key_t * 输入公钥 非空指针
input const uapi_drv_cipher_pke_data_t * 输入明文 非空指针
label const uapi_drv_cipher_pke_data_t * RSA标签,仅OAEP填充模式时使用 NULL 或有效的数据指针

出参

名称 数据类型 输出说明
output uapi_drv_cipher_pke_data_t * 输出密文,非空指针

返回值

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

uapi_drv_cipher_pke_rsa_private_decrypt

errcode_t uapi_drv_cipher_pke_rsa_private_decrypt(uapi_drv_cipher_pke_rsa_scheme_t scheme, uapi_drv_cipher_pke_hash_type_t hash_type, const uapi_drv_cipher_pke_rsa_priv_key_t *priv_key, const uapi_drv_cipher_pke_data_t *input, const uapi_drv_cipher_pke_data_t *label, uapi_drv_cipher_pke_data_t *output)

头文件清单

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

功能说明

  • RSA私钥解密
  • 使用私钥对密文进行解密
  • 传入buffer长度需满足output_len >= klen - 2 * hash_len - 2

入参

名称 参数类型 详细说明 约束取值范围
scheme uapi_drv_cipher_pke_rsa_scheme_t RSA填充方式 UAPI_DRV_CIPHER_PKE_RSA_SCHEME_PKCS1_V15(0x00) / UAPI_DRV_CIPHER_PKE_RSA_SCHEME_PKCS1_V21(0x01) / UAPI_DRV_CIPHER_PKE_RSA_SCHEME_MAX(0x02) / UAPI_DRV_CIPHER_PKE_RSA_SCHEME_INVALID(0xffffffff)
hash_type uapi_drv_cipher_pke_hash_type_t RSA填充使用的摘要算法,仅OAEP填充模式时使用 UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA1(0x00) / UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA224(0x01) / UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA256(0x02) / UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA384(0x03) / UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA512(0x04) / UAPI_DRV_CIPHER_PKE_HASH_TYPE_SM3(0x05) / UAPI_DRV_CIPHER_PKE_HASH_TYPE_MAX(0x06) / UAPI_DRV_CIPHER_PKE_HASH_TYPE_INVALID(0xffffffff)
priv_key const uapi_drv_cipher_pke_rsa_priv_key_t * 输入私钥 非空指针
input const uapi_drv_cipher_pke_data_t * 输入密文 非空指针
label const uapi_drv_cipher_pke_data_t * RSA标签,仅OAEP填充模式时使用 NULL 或有效的数据指针
output uapi_drv_cipher_pke_data_t * 输出明文 非空指针,output_len >= klen - 2 * hash_len - 2

出参

名称 数据类型 输出说明
output uapi_drv_cipher_pke_data_t * 输出明文

返回值

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

uapi_drv_cipher_pke_dh_gen_key

errcode_t uapi_drv_cipher_pke_dh_gen_key(const uapi_drv_cipher_pke_data_t *g_data, const uapi_drv_cipher_pke_data_t *mod_n, const uapi_drv_cipher_pke_data_t *input_priv_key, const uapi_drv_cipher_pke_data_t *output_priv_key, const uapi_drv_cipher_pke_data_t *output_pub_key)

头文件清单

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

功能说明

  • DH公私钥对生成或由私钥生成公钥
  • 模数的有效字节数与mod_n->length支持的规格之差不能大于2字节
  • input_priv_key可以为空,若非空其length应与mod_n->length相同

入参

名称 参数类型 详细说明 约束取值范围
g_data const uapi_drv_cipher_pke_data_t * 公开的底数,该数为质数 g_data->length不能大于mod_n->length
mod_n const uapi_drv_cipher_pke_data_t * 公开的模数,该数为质数 支持192/224/256/384/512/521/1024/2048/3072/4096 bits
input_priv_key const uapi_drv_cipher_pke_data_t * 用户输入的私钥 NULL 或有效的数据指针,若非空length应与mod_n->length相同

出参

名称 数据类型 输出说明
output_priv_key const uapi_drv_cipher_pke_data_t * 生成的私钥,非空指针,length应与mod_n->length相同
output_pub_key const uapi_drv_cipher_pke_data_t * 生成的公钥,非空指针,length应与mod_n->length相同

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 密钥生成成功
Other 其他错误码,参考errcode_t 执行失败

uapi_drv_cipher_pke_dh_compute_key

errcode_t uapi_drv_cipher_pke_dh_compute_key(const uapi_drv_cipher_pke_data_t *mod_n, const uapi_drv_cipher_pke_data_t *input_priv_key, const uapi_drv_cipher_pke_data_t *input_pub_key, const uapi_drv_cipher_pke_data_t *output_shared_key)

头文件清单

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

功能说明

  • DH密钥协商算法
  • 使用私钥和对方公钥计算共享密钥
  • 共享密钥通过出参返回

入参

名称 参数类型 详细说明 约束取值范围
mod_n const uapi_drv_cipher_pke_data_t * 公开的模数,该数为质数 非空指针
input_priv_key const uapi_drv_cipher_pke_data_t * 用户输入的私钥 非空指针
input_pub_key const uapi_drv_cipher_pke_data_t * 用户输入的公钥 非空指针

出参

名称 数据类型 输出说明
output_shared_key const uapi_drv_cipher_pke_data_t * 生成的共享密钥,非空指针

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 密钥协商成功
Other 其他错误码,参考errcode_t 执行失败

uapi_drv_cipher_pke_add_mod

errcode_t uapi_drv_cipher_pke_add_mod(const uapi_drv_cipher_pke_data_t *a, const uapi_drv_cipher_pke_data_t *b, const uapi_drv_cipher_pke_data_t *p, const uapi_drv_cipher_pke_data_t *c)

头文件清单

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

功能说明

  • 模加运算 c = (a + b) mod p
  • p的前两个字节不能都为0(要求valid_bit_len(p) >= bit_len(p) - 16)
  • c->length应与p->length相同

入参

名称 参数类型 详细说明 约束取值范围
a const uapi_drv_cipher_pke_data_t * 输入数据a a->length不能大于p->length
b const uapi_drv_cipher_pke_data_t * 输入数据b b->length不能大于p->length
p const uapi_drv_cipher_pke_data_t * 模数 p->length只能为192/224/256/384/512/521/1024/1536/2048/3072/4096 bits

出参

名称 数据类型 输出说明
c const uapi_drv_cipher_pke_data_t * 模加运算结果,非空指针,c->length应与p->length相同

返回值

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

uapi_drv_cipher_pke_sub_mod

errcode_t uapi_drv_cipher_pke_sub_mod(const uapi_drv_cipher_pke_data_t *a, const uapi_drv_cipher_pke_data_t *b, const uapi_drv_cipher_pke_data_t *p, const uapi_drv_cipher_pke_data_t *c)

头文件清单

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

功能说明

  • 模减运算 c = (a - b) mod p
  • p的前两个字节不能都为0
  • c->length应与p->length相同

入参

名称 参数类型 详细说明 约束取值范围
a const uapi_drv_cipher_pke_data_t * 输入数据a a->length不能大于p->length
b const uapi_drv_cipher_pke_data_t * 输入数据b b->length不能大于p->length
p const uapi_drv_cipher_pke_data_t * 模数 p->length只能为192/224/256/384/512/521/1024/1536/2048/3072/4096 bits

出参

名称 数据类型 输出说明
c const uapi_drv_cipher_pke_data_t * 模减运算结果,非空指针,c->length应与p->length相同

返回值

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

uapi_drv_cipher_pke_mul_mod

errcode_t uapi_drv_cipher_pke_mul_mod(const uapi_drv_cipher_pke_data_t *a, const uapi_drv_cipher_pke_data_t *b, const uapi_drv_cipher_pke_data_t *p, const uapi_drv_cipher_pke_data_t *c)

头文件清单

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

功能说明

  • 模乘运算 c = (a * b) mod p
  • p的前两个字节不能都为0
  • 模数不能为偶数

入参

名称 参数类型 详细说明 约束取值范围
a const uapi_drv_cipher_pke_data_t * 输入数据a a->length不能大于p->length
b const uapi_drv_cipher_pke_data_t * 输入数据b b->length不能大于p->length
p const uapi_drv_cipher_pke_data_t * 模数 p->length只能为192/256/384/512/1024/1536/2048/3072/4096 bits,且模数不能为偶数

出参

名称 数据类型 输出说明
c const uapi_drv_cipher_pke_data_t * 模乘运算结果,非空指针,c->length应与p->length相同

返回值

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

uapi_drv_cipher_pke_inv_mod

errcode_t uapi_drv_cipher_pke_inv_mod(const uapi_drv_cipher_pke_data_t *a, const uapi_drv_cipher_pke_data_t *p, const uapi_drv_cipher_pke_data_t *c)

头文件清单

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

功能说明

  • 模逆运算 c = (a^-1) mod p
  • p的前两个字节不能都为0
  • 模数不能为偶数

入参

名称 参数类型 详细说明 约束取值范围
a const uapi_drv_cipher_pke_data_t * 输入数据a a->length应等于p->length
p const uapi_drv_cipher_pke_data_t * 模数 p->length只能为192/256/384/512/1024/1536/2048/3072/4096 bits,且模数不能为偶数

出参

名称 数据类型 输出说明
c const uapi_drv_cipher_pke_data_t * 模逆运算结果,非空指针,c->length应等于p->length

返回值

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

uapi_drv_cipher_pke_mod

errcode_t uapi_drv_cipher_pke_mod(const uapi_drv_cipher_pke_data_t *a, const uapi_drv_cipher_pke_data_t *p, const uapi_drv_cipher_pke_data_t *c)

头文件清单

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

功能说明

  • 取模运算 c = a mod p
  • p的前两个字节不能都为0
  • 模数不能为偶数

入参

名称 参数类型 详细说明 约束取值范围
a const uapi_drv_cipher_pke_data_t * 输入数据a 要求valid_bit_len(a) <= valid_bit_len(p)
p const uapi_drv_cipher_pke_data_t * 模数 p->length只能为192/256/384/512/1024/1536/2048/3072/4096 bits,且模数不能为偶数

出参

名称 数据类型 输出说明
c const uapi_drv_cipher_pke_data_t * 取模运算结果,非空指针,c->length应等于p->length

返回值

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

uapi_drv_cipher_pke_mul

errcode_t uapi_drv_cipher_pke_mul(const uapi_drv_cipher_pke_data_t *a, const uapi_drv_cipher_pke_data_t *b, const uapi_drv_cipher_pke_data_t *c)

头文件清单

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

功能说明

  • 大数乘运算 c = a * b
  • a和b的数据长度均不能大于2048比特
  • c->length不能小于a->length + b->length

入参

名称 参数类型 详细说明 约束取值范围
a const uapi_drv_cipher_pke_data_t * 输入数据a a->length不能大于2048比特
b const uapi_drv_cipher_pke_data_t * 输入数据b b->length不能大于2048比特

出参

名称 数据类型 输出说明
c const uapi_drv_cipher_pke_data_t * 大数乘运算结果,非空指针,c->length不能小于a->length + b->length

返回值

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

uapi_drv_cipher_pke_exp_mod

errcode_t uapi_drv_cipher_pke_exp_mod(const uapi_drv_cipher_pke_data_t *n, const uapi_drv_cipher_pke_data_t *k, const uapi_drv_cipher_pke_data_t *in, const uapi_drv_cipher_pke_data_t *out)

头文件清单

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

功能说明

  • 模幂运算 out = (in ^ k) mod n
  • n的前两个字节不能都为0
  • 模数不能为偶数

入参

名称 参数类型 详细说明 约束取值范围
n const uapi_drv_cipher_pke_data_t * 模数 n->length只能为192/256/384/512/1024/1536/2048/3072/4096 bits,且模数不能为偶数
k const uapi_drv_cipher_pke_data_t * 指数 数据长度不能大于4096比特
in const uapi_drv_cipher_pke_data_t * 输入数据 数据长度不能大于4096比特

出参

名称 数据类型 输出说明
out const uapi_drv_cipher_pke_data_t * 模幂运算结果,非空指针,out->length应等于n->length

返回值

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

uapi_drv_cipher_pke_mul_dot

errcode_t uapi_drv_cipher_pke_mul_dot(uapi_drv_cipher_pke_ecc_curve_type_t curve_type, const uapi_drv_cipher_pke_data_t *k, const uapi_drv_cipher_pke_ecc_point_t *p, const uapi_drv_cipher_pke_ecc_point_t *r)

头文件清单

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

功能说明

  • 椭圆曲线点乘
  • 使用标量k对椭圆曲线上的点p进行点乘运算
  • 结果通过出参返回

入参

名称 参数类型 详细说明 约束取值范围
curve_type uapi_drv_cipher_pke_ecc_curve_type_t ECC曲线类型 UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P256(0x20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P384(0x430) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P512(0x840) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256K(0xc20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P192R(0x1018) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P224R(0x1420) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256R(0x1820) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P384R(0x1c30) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P521R(0x2048) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748(0x2420) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748_448(0x2838) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC8032(0x2c20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_SM2(0x3020) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_MAX(0x3021) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_INVALID(0xffffffff)
k const uapi_drv_cipher_pke_data_t * 输入数据 非空指针
p const uapi_drv_cipher_pke_ecc_point_t * 输入点 非空指针

出参

名称 数据类型 输出说明
r const uapi_drv_cipher_pke_ecc_point_t * 椭圆曲线点乘结果,非空指针

返回值

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

uapi_drv_cipher_pke_mul_dot_add

errcode_t uapi_drv_cipher_pke_mul_dot_add(uapi_drv_cipher_pke_ecc_curve_type_t curve_type, const uapi_drv_cipher_pke_data_t *a, const uapi_drv_cipher_pke_data_t *b, const uapi_drv_cipher_pke_ecc_point_t *p, const uapi_drv_cipher_pke_ecc_point_t *q, const uapi_drv_cipher_pke_ecc_point_t *r)

头文件清单

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

功能说明

  • 椭圆曲线点乘加
  • p和q地址不能相同
  • 使用标量a和b分别对点p和q进行点乘后相加

入参

名称 参数类型 详细说明 约束取值范围
curve_type uapi_drv_cipher_pke_ecc_curve_type_t ECC曲线类型 UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P256(0x20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P384(0x430) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P512(0x840) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256K(0xc20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P192R(0x1018) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P224R(0x1420) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256R(0x1820) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P384R(0x1c30) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P521R(0x2048) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748(0x2420) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748_448(0x2838) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC8032(0x2c20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_SM2(0x3020) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_MAX(0x3021) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_INVALID(0xffffffff)
a const uapi_drv_cipher_pke_data_t * 输入数据 非空指针
b const uapi_drv_cipher_pke_data_t * 输入数据 非空指针
p const uapi_drv_cipher_pke_ecc_point_t * 输入点 非空指针
q const uapi_drv_cipher_pke_ecc_point_t * 输入点,与p地址不能相同 非空指针,与p地址不能相同

出参

名称 数据类型 输出说明
r const uapi_drv_cipher_pke_ecc_point_t * 椭圆曲线点乘加结果,非空指针

返回值

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

uapi_drv_cipher_pke_add_dot

errcode_t uapi_drv_cipher_pke_add_dot(uapi_drv_cipher_pke_ecc_curve_type_t curve_type, const uapi_drv_cipher_pke_ecc_point_t *p, const uapi_drv_cipher_pke_ecc_point_t *q, const uapi_drv_cipher_pke_ecc_point_t *r)

头文件清单

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

功能说明

  • 椭圆曲线点加
  • p和q地址不能相同
  • 对椭圆曲线上两个点进行加法运算

入参

名称 参数类型 详细说明 约束取值范围
curve_type uapi_drv_cipher_pke_ecc_curve_type_t ECC曲线类型 UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P256(0x20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P384(0x430) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P512(0x840) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256K(0xc20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P192R(0x1018) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P224R(0x1420) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256R(0x1820) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P384R(0x1c30) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P521R(0x2048) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748(0x2420) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748_448(0x2838) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC8032(0x2c20) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_SM2(0x3020) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_MAX(0x3021) / UAPI_DRV_CIPHER_PKE_ECC_TYPE_INVALID(0xffffffff)
p const uapi_drv_cipher_pke_ecc_point_t * 输入点 非空指针
q const uapi_drv_cipher_pke_ecc_point_t * 输入点,与p地址不能相同 非空指针,与p地址不能相同

出参

名称 数据类型 输出说明
r const uapi_drv_cipher_pke_ecc_point_t * 椭圆曲线点加结果,非空指针

返回值

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

Enumerations

uapi_drv_cipher_pke_ecc_curve_type_t

typedef enum {
    UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P256   = 0x20,   /* RFC 5639 - Brainpool P256/384/512 */
    UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P384   = 0x430,  /* RFC 5639 - Brainpool P256/384/512 */
    UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P512   = 0x840,  /* RFC 5639 - Brainpool P256/384/512 */
    UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256K     = 0xc20,  /* NIST FIPS 186-4 P192/224/256/384/521, suggest not to use */
    UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P192R     = 0x1018, /* NIST FIPS 186-4 P192/224/256/384/521, suggest not to use */
    UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P224R     = 0x1420, /* NIST FIPS 186-4 P192/224/256/384/521, suggest not to use */
    UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256R     = 0x1820, /* NIST FIPS 186-4 P192/224/256/384/521, suggest not to use */
    UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P384R     = 0x1c30, /* NIST FIPS 186-4 P192/224/256/384/521, suggest not to use */
    UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P521R     = 0x2048, /* NIST FIPS 186-4 P192/224/256/384/521, suggest not to use */
    UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748        = 0x2420, /* RFC 7748 - Curve25519 */
    UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748_448    = 0x2838, /* RFC 7748 - Curve448 */
    UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC8032        = 0x2c20, /* RFC 8032 - ED25519 */
    UAPI_DRV_CIPHER_PKE_ECC_TYPE_SM2            = 0x3020, /* GMT 0003.2-2012 */
    UAPI_DRV_CIPHER_PKE_ECC_TYPE_MAX,
    UAPI_DRV_CIPHER_PKE_ECC_TYPE_INVALID = 0xffffffff,
} uapi_drv_cipher_pke_ecc_curve_type_t;
枚举成员 取值 描述
UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P256 0x20 RFC 5639 Brainpool P256曲线
UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P384 0x430 RFC 5639 Brainpool P384曲线
UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P512 0x840 RFC 5639 Brainpool P512曲线
UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256K 0xc20 NIST FIPS 186-4 P256K曲线,不建议使用
UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P192R 0x1018 NIST FIPS 186-4 P192R曲线,不建议使用
UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P224R 0x1420 NIST FIPS 186-4 P224R曲线,不建议使用
UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256R 0x1820 NIST FIPS 186-4 P256R曲线,不建议使用
UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P384R 0x1c30 NIST FIPS 186-4 P384R曲线,不建议使用
UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P521R 0x2048 NIST FIPS 186-4 P521R曲线,不建议使用
UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748 0x2420 RFC 7748 Curve25519曲线
UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748_448 0x2838 RFC 7748 Curve448曲线
UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC8032 0x2c20 RFC 8032 ED25519曲线
UAPI_DRV_CIPHER_PKE_ECC_TYPE_SM2 0x3020 GMT 0003.2-2012 SM2曲线
UAPI_DRV_CIPHER_PKE_ECC_TYPE_MAX 0x3021 最大值
UAPI_DRV_CIPHER_PKE_ECC_TYPE_INVALID 0xffffffff 无效值

uapi_drv_cipher_pke_rsa_scheme_t

typedef enum {
    UAPI_DRV_CIPHER_PKE_RSA_SCHEME_PKCS1_V15 = 0x00,    /* not security, suggest not to use */
    UAPI_DRV_CIPHER_PKE_RSA_SCHEME_PKCS1_V21,
    UAPI_DRV_CIPHER_PKE_RSA_SCHEME_MAX,
    UAPI_DRV_CIPHER_PKE_RSA_SCHEME_INVALID = 0xffffffff,
} uapi_drv_cipher_pke_rsa_scheme_t;
枚举成员 取值 描述
UAPI_DRV_CIPHER_PKE_RSA_SCHEME_PKCS1_V15 0x00 PKCS1 V15填充方式,不建议使用
UAPI_DRV_CIPHER_PKE_RSA_SCHEME_PKCS1_V21 0x01 PKCS1 V21填充方式
UAPI_DRV_CIPHER_PKE_RSA_SCHEME_MAX 0x02 最大值
UAPI_DRV_CIPHER_PKE_RSA_SCHEME_INVALID 0xffffffff 无效值

uapi_drv_cipher_pke_hash_type_t

typedef enum {
    UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA1 = 0x00,  /* not security, suggest not to use */
    UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA224,
    UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA256,
    UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA384,
    UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA512,
    UAPI_DRV_CIPHER_PKE_HASH_TYPE_SM3,
    UAPI_DRV_CIPHER_PKE_HASH_TYPE_MAX,
    UAPI_DRV_CIPHER_PKE_HASH_TYPE_INVALID = 0xffffffff,
} uapi_drv_cipher_pke_hash_type_t;
枚举成员 取值 描述
UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA1 0x00 SHA1摘要算法,不建议使用
UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA224 0x01 SHA224摘要算法
UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA256 0x02 SHA256摘要算法
UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA384 0x03 SHA384摘要算法
UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA512 0x04 SHA512摘要算法
UAPI_DRV_CIPHER_PKE_HASH_TYPE_SM3 0x05 SM3摘要算法
UAPI_DRV_CIPHER_PKE_HASH_TYPE_MAX 0x06 最大值
UAPI_DRV_CIPHER_PKE_HASH_TYPE_INVALID 0xffffffff 无效值

uapi_drv_cipher_pke_buffer_secure_t

typedef enum {
    UAPI_DRV_CIPHER_PKE_BUF_SECURE = 0x00,
    UAPI_DRV_CIPHER_PKE_BUF_NONSECURE,
    UAPI_DRV_CIPHER_PKE_BUF_INVALID = 0xffffffff,
} uapi_drv_cipher_pke_buffer_secure_t;
枚举成员 取值 描述
UAPI_DRV_CIPHER_PKE_BUF_SECURE 0x00 安全缓冲区
UAPI_DRV_CIPHER_PKE_BUF_NONSECURE 0x01 非安全缓冲区
UAPI_DRV_CIPHER_PKE_BUF_INVALID 0xffffffff 无效值

Structures

uapi_drv_cipher_pke_data_t

typedef struct {
    uint32_t  length;   /*!< PKE通用数据缓冲区长度。 */
    uint8_t  *data;     /*!< PKE通用数据缓冲区。 */
} uapi_drv_cipher_pke_data_t;

成员说明

成员名称 数据类型 描述
length uint32_t PKE通用数据缓冲区长度
data uint8_t * PKE通用数据缓冲区

uapi_drv_cipher_pke_ecc_point_t

typedef struct {
    uint8_t *x;    /*!< 公钥的X坐标,调用方确保如果此密钥的有效大小小于ecc密钥大小,则用前导零填充。 */
    uint8_t *y;    /*!< 公钥的Y坐标,调用方确保如果此密钥的有效大小小于ecc密钥大小,则用前导零填充。 */
    uint32_t length;    /*!< ECC公钥长度。 */
} uapi_drv_cipher_pke_ecc_point_t;

成员说明

成员名称 数据类型 描述
x uint8_t * 公钥的X坐标,若密钥有效大小小于ECC密钥大小需前导零填充
y uint8_t * 公钥的Y坐标,若密钥有效大小小于ECC密钥大小需前导零填充
length uint32_t ECC公钥长度

uapi_drv_cipher_pke_ecc_sig_t

typedef struct {
    uint8_t *r;    /*!< ECC签名值R。 */
    uint8_t *s;    /*!< ECC签名值S。 */
    uint32_t length;    /*!< ECC签名数据长度。 */
} uapi_drv_cipher_pke_ecc_sig_t;

成员说明

成员名称 数据类型 描述
r uint8_t * ECC签名值R
s uint8_t * ECC签名值S
length uint32_t ECC签名数据长度

uapi_drv_cipher_pke_msg_t

typedef struct {
    uint32_t  length;    /*!< ECC输入消息缓冲区长度。 */
    uint8_t  *data;      /*!< ECC输入消息缓冲区。 */
    uapi_drv_cipher_pke_buffer_secure_t buf_sec;
} uapi_drv_cipher_pke_msg_t;

成员说明

成员名称 数据类型 描述
length uint32_t ECC输入消息缓冲区长度
data uint8_t * ECC输入消息缓冲区
buf_sec uapi_drv_cipher_pke_buffer_secure_t 缓冲区安全属性

uapi_drv_cipher_pke_rsa_priv_key_t

typedef struct {
    uint8_t *n;          /*!< RSA秘钥参数n。 */
    uint8_t *e;          /*!< RSA公钥参数e。 */
    uint8_t *d;          /*!< RSA私钥参数d。 */
    uint8_t *p;          /*!< RSA第一素数因子。 */
    uint8_t *q;          /*!< RSA第二素数因子。 */
    uint8_t *dp;         /*!< D % (P - 1)的结果。 */
    uint8_t *dq;         /*!< D % (Q - 1)的结果。 */
    uint8_t *qp;         /*!< 1 / (Q % P)的结果。 */
    uint16_t n_len;      /*!< RSA秘钥参数n的长度。 */
    uint16_t e_len;      /*!< RSA公钥参数e的长度。 */
    uint16_t d_len;      /*!< RSA私钥参数d的长度。 */
    uint16_t p_len;      /*!< RSA第一素因子的长度,应该是n_len的一半。 */
    uint16_t q_len;      /*!< RSA第二素因子的长度,应该是n_len的一半。 */
    uint16_t dp_len;     /*!< D % (P - 1)结果的长度,应该是n_len的一半。 */
    uint16_t dq_len;     /*!< D % (Q - 1)结果的长度,应该是n_len的一半。 */
    uint16_t qp_len;     /*!< 1 / (Q % P)结果的长度,应该是n_len的一半。 */
} uapi_drv_cipher_pke_rsa_priv_key_t;

成员说明

成员名称 数据类型 描述
n uint8_t * RSA秘钥参数n
e uint8_t * RSA公钥参数e
d uint8_t * RSA私钥参数d
p uint8_t * RSA第一素数因子
q uint8_t * RSA第二素数因子
dp uint8_t * D % (P - 1)的结果
dq uint8_t * D % (Q - 1)的结果
qp uint8_t * 1 / (Q % P)的结果
n_len uint16_t RSA秘钥参数n的长度
e_len uint16_t RSA公钥参数e的长度
d_len uint16_t RSA私钥参数d的长度
p_len uint16_t RSA第一素因子的长度,应为n_len的一半
q_len uint16_t RSA第二素因子的长度,应为n_len的一半
dp_len uint16_t D % (P - 1)结果的长度,应为n_len的一半
dq_len uint16_t D % (Q - 1)结果的长度,应为n_len的一半
qp_len uint16_t 1 / (Q % P)结果的长度,应为n_len的一半

uapi_drv_cipher_pke_rsa_pub_key_t

typedef struct {
    uint8_t  *n;            /*!< RSA 公共模数。 */
    uint8_t  *e;            /*!< RSA 公共指数。 */
    uint16_t len;           /*!< RSA公钥长度,最大长度为512字节。 */
} uapi_drv_cipher_pke_rsa_pub_key_t;

成员说明

成员名称 数据类型 描述
n uint8_t * RSA公共模数
e uint8_t * RSA公共指数
len uint16_t RSA公钥长度,最大长度为512字节