security_pke
PKE (Public Key Engine) 提供公钥加密引擎功能,支持ECC/SM2/RSA/DH等非对称加密算法及大数运算。
头文件清单
接口清单
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)
头文件清单
功能说明
- 生成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)
头文件清单
功能说明
- 椭圆曲线数字签名(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)
头文件清单
功能说明
- 椭圆曲线数字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)
头文件清单
功能说明
- 椭圆曲线数字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)
头文件清单
功能说明
- 爱德华兹曲线数字签名(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)
头文件清单
功能说明
- 爱德华兹曲线数字验签(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)
头文件清单
功能说明
- 椭圆曲线迪菲-赫尔曼秘钥协商(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)
头文件清单
功能说明
- 检查点是否在椭圆曲线上
- 输入公钥点和曲线类型,输出是否在曲线上的判定结果
- 判定结果通过布尔出参返回
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| 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)
头文件清单
功能说明
- 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)
头文件清单
功能说明
- 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)
头文件清单
功能说明
- 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)
头文件清单
功能说明
- 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)
头文件清单
功能说明
- 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)
头文件清单
功能说明
- 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)
头文件清单
功能说明
- 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)
头文件清单
功能说明
- 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)
头文件清单
功能说明
- 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)
头文件清单
功能说明
- 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)
头文件清单
功能说明
- 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)
头文件清单
功能说明
- 模加运算 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)
头文件清单
功能说明
- 模减运算 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)
头文件清单
功能说明
- 模乘运算 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)
头文件清单
功能说明
- 模逆运算 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)
头文件清单
功能说明
- 取模运算 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)
头文件清单
功能说明
- 大数乘运算 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)
头文件清单
功能说明
- 模幂运算 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)
头文件清单
功能说明
- 椭圆曲线点乘
- 使用标量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)
头文件清单
功能说明
- 椭圆曲线点乘加
- p和q地址不能相同
- 使用标量a和b分别对点p和q进行点乘后相加
入参
出参
| 名称 | 数据类型 | 输出说明 |
|---|---|---|
| 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)
头文件清单
功能说明
- 椭圆曲线点加
- 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字节 |