WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
unified_cipher_pke.h
浏览该文件的文档.
1
9#ifndef UNIFIED_CIPHER_PKE_H
10#define UNIFIED_CIPHER_PKE_H
11
12#include <stdint.h>
13#include <stdbool.h>
14#include "errcode.h"
15
16#ifdef __cplusplus
17#if __cplusplus
18extern "C" {
19#endif
20#endif
21
37typedef enum {
38 UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P256 = 0, /* RFC 5639 - Brainpool P256/384/512 */
39 UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P384, /* RFC 5639 - Brainpool P256/384/512 */
40 UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P512, /* RFC 5639 - Brainpool P256/384/512 */
41 UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256K, /* NIST FIPS 186-4 P192/224/256/384/521, suggest not to use */
42 UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P192R, /* NIST FIPS 186-4 P192/224/256/384/521, suggest not to use */
43 UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P224R, /* NIST FIPS 186-4 P192/224/256/384/521, suggest not to use */
44 UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256R, /* NIST FIPS 186-4 P192/224/256/384/521, suggest not to use */
45 UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P384R, /* NIST FIPS 186-4 P192/224/256/384/521, suggest not to use */
46 UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P521R, /* NIST FIPS 186-4 P192/224/256/384/521, suggest not to use */
47 UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748, /* RFC 7748 - Curve25519 */
49 UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC8032, /* RFC 8032 - ED25519 */
50 UAPI_DRV_CIPHER_PKE_ECC_TYPE_SM2, /* GMT 0003.2-2012 */
54
70
90
103
111typedef struct {
112 uint32_t length;
114 uint8_t *data;
117
125typedef struct {
126 uint8_t *x;
129 uint8_t *y;
132 uint32_t length;
135
143typedef struct {
144 uint8_t *r;
146 uint8_t *s;
148 uint32_t length;
151
166
174typedef struct {
175 uint8_t *n;
177 uint8_t *e;
179 uint8_t *d;
181 uint8_t *p;
183 uint8_t *q;
185 uint8_t *dp;
187 uint8_t *dq;
189 uint8_t *qp;
191 uint16_t n_len;
193 uint16_t e_len;
195 uint16_t d_len;
197 uint16_t p_len;
199 uint16_t q_len;
201 uint16_t dp_len;
203 uint16_t dq_len;
205 uint16_t qp_len;
208
216typedef struct {
217 uint8_t *n;
219 uint8_t *e;
221 uint16_t len;
224
245 const uapi_drv_cipher_pke_data_t *input_priv_key,
246 const uapi_drv_cipher_pke_data_t *output_priv_key,
247 const uapi_drv_cipher_pke_ecc_point_t *output_pub_key);
248
269 const uapi_drv_cipher_pke_data_t *priv_key,
270 const uapi_drv_cipher_pke_data_t *hash,
272
293 const uapi_drv_cipher_pke_ecc_point_t *pub_key,
294 const uapi_drv_cipher_pke_data_t *hash,
296
317 const uapi_drv_cipher_pke_data_t *priv_key,
318 const uapi_drv_cipher_pke_msg_t *msg,
320
341 const uapi_drv_cipher_pke_ecc_point_t *pub_key,
342 const uapi_drv_cipher_pke_msg_t *msg,
344
365 const uapi_drv_cipher_pke_ecc_point_t *input_pub_key,
366 const uapi_drv_cipher_pke_data_t *input_priv_key,
367 const uapi_drv_cipher_pke_data_t *output_shared_key);
368
387 const uapi_drv_cipher_pke_ecc_point_t *pub_key, bool *is_on_curve);
388
409 const uapi_drv_cipher_pke_ecc_point_t *pub_key,
410 const uapi_drv_cipher_pke_msg_t *msg,
412
431 const uapi_drv_cipher_pke_data_t *plain_text,
432 const uapi_drv_cipher_pke_data_t *cipher_text);
433
452 const uapi_drv_cipher_pke_data_t *cipher_text,
453 const uapi_drv_cipher_pke_data_t *plain_text);
454
479 const uapi_drv_cipher_pke_data_t *input_hash,
481
506 uapi_drv_cipher_pke_data_t *input_hash,
507 const uapi_drv_cipher_pke_data_t *sig);
508
535 const uapi_drv_cipher_pke_data_t *input,
536 const uapi_drv_cipher_pke_data_t *label,
538
565 const uapi_drv_cipher_pke_data_t *input,
566 const uapi_drv_cipher_pke_data_t *label,
567 const uapi_drv_cipher_pke_data_t *output);
568
594 const uapi_drv_cipher_pke_data_t *mod_n, const uapi_drv_cipher_pke_data_t *input_priv_key,
595 const uapi_drv_cipher_pke_data_t *output_priv_key, const uapi_drv_cipher_pke_data_t *output_pub_key);
596
617 const uapi_drv_cipher_pke_data_t *input_priv_key, const uapi_drv_cipher_pke_data_t *input_pub_key,
618 const uapi_drv_cipher_pke_data_t *output_shared_key);
619
643
667
692
715
738
758
783
788#ifdef __cplusplus
789#if __cplusplus
790}
791#endif
792#endif
793
794#endif
uint32_t errcode_t
Definition of error code.
Definition errcode.h:30
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公钥加密。
Definition pke.c:120
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)
爱德华兹曲线数字验签。
Definition pke.c:67
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验签。
Definition pke.c:157
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)
椭圆曲线数字签名。
Definition pke.c:30
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)
爱德华兹曲线数字签名。
Definition pke.c:55
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)
椭圆曲线迪菲-赫尔曼秘钥协商。
Definition pke.c:81
uapi_drv_cipher_pke_rsa_scheme_t
RSA算法填充方式
Definition unified_cipher_pke.h:64
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私钥解密。
Definition pke.c:131
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)
检查点是否在椭圆曲线上。
Definition pke.c:95
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公钥加密。
Definition pke.c:170
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。
Definition pke.c:253
uapi_drv_cipher_pke_hash_type_t
RSA填充使用的hash算法类型
Definition unified_cipher_pke.h:80
uapi_drv_cipher_pke_ecc_curve_type_t
ECC曲线类型
Definition unified_cipher_pke.h:37
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 公私钥对生成或由私钥生成公钥。
Definition pke.c:198
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签名。
Definition pke.c:144
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。
Definition pke.c:233
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验签。
Definition pke.c:42
uapi_drv_cipher_pke_buffer_secure_t
RSA输入消息的缓冲区安全属性
Definition unified_cipher_pke.h:98
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 密钥协商算法。
Definition pke.c:210
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。
Definition pke.c:262
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。
Definition pke.c:243
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。
Definition pke.c:280
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摘要计算。
Definition pke.c:106
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。
Definition pke.c:271
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。
Definition pke.c:223
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秘钥对。
Definition pke.c:17
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, const uapi_drv_cipher_pke_data_t *output)
RSA私钥解密。
Definition pke.c:184
@ UAPI_DRV_CIPHER_PKE_RSA_SCHEME_INVALID
Definition unified_cipher_pke.h:68
@ UAPI_DRV_CIPHER_PKE_RSA_SCHEME_PKCS1_V21
Definition unified_cipher_pke.h:66
@ UAPI_DRV_CIPHER_PKE_RSA_SCHEME_PKCS1_V15
Definition unified_cipher_pke.h:65
@ UAPI_DRV_CIPHER_PKE_RSA_SCHEME_MAX
Definition unified_cipher_pke.h:67
@ UAPI_DRV_CIPHER_PKE_HASH_TYPE_MAX
Definition unified_cipher_pke.h:87
@ UAPI_DRV_CIPHER_PKE_HASH_TYPE_SM3
Definition unified_cipher_pke.h:86
@ UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA224
Definition unified_cipher_pke.h:82
@ UAPI_DRV_CIPHER_PKE_HASH_TYPE_INVALID
Definition unified_cipher_pke.h:88
@ UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA384
Definition unified_cipher_pke.h:84
@ UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA512
Definition unified_cipher_pke.h:85
@ UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA1
Definition unified_cipher_pke.h:81
@ UAPI_DRV_CIPHER_PKE_HASH_TYPE_SHA256
Definition unified_cipher_pke.h:83
@ UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P512
Definition unified_cipher_pke.h:40
@ UAPI_DRV_CIPHER_PKE_ECC_TYPE_SM2
Definition unified_cipher_pke.h:50
@ UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P384
Definition unified_cipher_pke.h:39
@ UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC8032
Definition unified_cipher_pke.h:49
@ UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P224R
Definition unified_cipher_pke.h:43
@ UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748
Definition unified_cipher_pke.h:47
@ UAPI_DRV_CIPHER_PKE_ECC_TYPE_MAX
Definition unified_cipher_pke.h:51
@ UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC7748_448
Definition unified_cipher_pke.h:48
@ UAPI_DRV_CIPHER_PKE_ECC_TYPE_RFC5639_P256
Definition unified_cipher_pke.h:38
@ UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P521R
Definition unified_cipher_pke.h:46
@ UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256K
Definition unified_cipher_pke.h:41
@ UAPI_DRV_CIPHER_PKE_ECC_TYPE_INVALID
Definition unified_cipher_pke.h:52
@ UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P192R
Definition unified_cipher_pke.h:42
@ UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P256R
Definition unified_cipher_pke.h:44
@ UAPI_DRV_CIPHER_PKE_ECC_TYPE_FIPS_P384R
Definition unified_cipher_pke.h:45
@ UAPI_DRV_CIPHER_PKE_BUF_SECURE
Definition unified_cipher_pke.h:100
@ UAPI_DRV_CIPHER_PKE_BUF_NONSECURE
Definition unified_cipher_pke.h:99
@ UAPI_DRV_CIPHER_PKE_BUF_INVALID
Definition unified_cipher_pke.h:101
PKE通用数据结构体
Definition unified_cipher_pke.h:111
uint8_t * data
Definition unified_cipher_pke.h:114
uint32_t length
Definition unified_cipher_pke.h:112
ECC公钥结构体
Definition unified_cipher_pke.h:125
uint8_t * y
Definition unified_cipher_pke.h:129
uint32_t length
Definition unified_cipher_pke.h:132
uint8_t * x
Definition unified_cipher_pke.h:126
ECC签名结构体
Definition unified_cipher_pke.h:143
uint32_t length
Definition unified_cipher_pke.h:148
uint8_t * s
Definition unified_cipher_pke.h:146
uint8_t * r
Definition unified_cipher_pke.h:144
ECC输入消息结构体
Definition unified_cipher_pke.h:159
uapi_drv_cipher_pke_buffer_secure_t buf_sec
Definition unified_cipher_pke.h:164
uint32_t length
Definition unified_cipher_pke.h:160
uint8_t * data
Definition unified_cipher_pke.h:162
RSA私钥结构体
Definition unified_cipher_pke.h:174
uint16_t dq_len
Definition unified_cipher_pke.h:203
uint8_t * dq
Definition unified_cipher_pke.h:187
uint16_t p_len
Definition unified_cipher_pke.h:197
uint8_t * qp
Definition unified_cipher_pke.h:189
uint8_t * d
Definition unified_cipher_pke.h:179
uint16_t n_len
Definition unified_cipher_pke.h:191
uint16_t qp_len
Definition unified_cipher_pke.h:205
uint8_t * dp
Definition unified_cipher_pke.h:185
uint16_t dp_len
Definition unified_cipher_pke.h:201
uint16_t d_len
Definition unified_cipher_pke.h:195
uint8_t * q
Definition unified_cipher_pke.h:183
uint8_t * n
Definition unified_cipher_pke.h:175
uint8_t * p
Definition unified_cipher_pke.h:181
uint8_t * e
Definition unified_cipher_pke.h:177
uint16_t q_len
Definition unified_cipher_pke.h:199
uint16_t e_len
Definition unified_cipher_pke.h:193
RSA公钥结构体。
Definition unified_cipher_pke.h:216
uint8_t * e
Definition unified_cipher_pke.h:219
uint16_t len
Definition unified_cipher_pke.h:221
uint8_t * n
Definition unified_cipher_pke.h:217