SemiDrive SSDK Appication Program Interface PTG3.0
sdrv_crypto_mailbox_sm9.h
Go to the documentation of this file.
1
9#ifndef SDRV_CRYPTO_MAILBOX_SM9_H
10#define SDRV_CRYPTO_MAILBOX_SM9_H
11
14
18typedef struct {
19 uint8_t cmd_id;
20 uint8_t rev1[3];
21 uint8_t mastPubKey_ptr[4];
22 uint8_t mastPriKey_ptr[4];
24
28typedef struct {
29 uint8_t cmd_id;
30 uint8_t hid;
31 uint8_t id_len[2];
32 uint8_t id_ptr[4];
33 uint8_t mastPriKey_ptr[4];
34 uint8_t userPriKey_ptr[4];
36
40typedef struct {
41 uint8_t cmd_id;
42 uint8_t rev1[3];
43 uint8_t data_ptr[4];
44 uint8_t data_len[4];
45 uint8_t mastPubKey_ptr[4];
46 uint8_t userPriKey_ptr[4];
47 uint8_t signature_ptr[4];
49
53typedef struct {
54 uint8_t cmd_id;
55 uint8_t hid;
56 uint8_t id_len[2];
57 uint8_t id_ptr[4];
58 uint8_t data_ptr[4];
59 uint8_t data_len[4];
60 uint8_t mastPubKey_ptr[4];
61 uint8_t signature_ptr[4];
63
67typedef struct {
68 uint8_t cmd_id;
69 uint8_t rev1[3];
70 uint8_t mastPubKey_ptr[4];
71 uint8_t mastPriKey_ptr[4];
73
77typedef struct {
78 uint8_t cmd_id;
79 uint8_t hid;
80 uint8_t id_len[2];
81 uint8_t id_ptr[4];
82 uint8_t mastPriKey_ptr[4];
83 uint8_t userPriKey_ptr[4];
85
89typedef struct {
90 uint8_t cmd_id;
91 uint8_t rev1[1];
92 uint8_t hid;
93 uint8_t key_len;
94 uint8_t id_ptr[4];
95 uint8_t id_len[2];
96 uint8_t rev2[2];
97 uint8_t mastPubKey_ptr[4];
98 uint8_t key_ptr[4];
99 uint8_t cipher_ptr[4];
101
105typedef struct {
106 uint8_t cmd_id;
107 uint8_t key_len;
108 uint8_t id_len[2];
109 uint8_t id_ptr[4];
110 uint8_t userPriKey_ptr[4];
111 uint8_t cipher_ptr[4];
112 uint8_t key_ptr[4];
114
118typedef struct {
119 uint8_t cmd_id;
120 uint8_t enc_type;
122 uint8_t key2_len;
123 uint8_t data_ptr[4];
124 uint8_t data_len[4];
125 uint8_t id_ptr[4];
126 uint8_t id_len[2];
127 uint8_t rev1[1];
128 uint8_t hid;
129 uint8_t mastPubKey_ptr[4];
130 uint8_t cipher_ptr[4];
131 uint8_t cipherLen_ptr[4];
133
137typedef struct {
138 uint8_t cmd_id;
139 uint8_t enc_type;
141 uint8_t key2_len;
142 uint8_t cipher_ptr[4];
143 uint8_t cipher_len[4];
144 uint8_t id_ptr[4];
145 uint8_t rev1[2];
146 uint8_t id_len[2];
147 uint8_t userPriKey_ptr[4];
148 uint8_t data_ptr[4];
149 uint8_t dataLen_ptr[4];
151
153
156
160typedef struct {
161 uint8_t cmd_id;
162 uint8_t hid;
163 uint8_t peer_id_len[2];
164 uint8_t peer_id_ptr[4];
165 uint8_t mastPubKey_ptr[4];
166 uint8_t userTmpPriKey_ptr[4];
167 uint8_t userTmpPubKey_ptr[4];
169
173typedef struct {
174 uint8_t Ppub_e_ptr[4];
175 uint8_t deA_ptr[4];
176 uint8_t RA_ptr[4];
177 uint8_t rA_ptr[4];
178 uint8_t RB_ptr[4];
179 uint8_t IDA_ptr[4];
180 uint8_t IDB_ptr[4];
182
186typedef struct {
187 uint8_t cmd_id;
188 uint8_t rev1[1];
189 uint8_t key_len;
190 uint8_t role;
191 uint8_t input_ptr[4];
192 uint8_t ida_len[2];
193 uint8_t idb_len[2];
194 uint8_t outputKey_ptr[4];
195 uint8_t s1_s2_ptr[4];
196 uint8_t sa_sb_ptr[4];
198
202typedef enum {
207
213typedef enum {
218
222typedef enum {
227
238 uint8_t *pub_s);
239
252 uint32_t ida_len,
253 uint8_t *ks,
254 uint8_t *dsa);
255
269 uint8_t *pub_s, uint8_t *dsa,
270 uint8_t *signature);
271
286 uint32_t msg_len,
287 uint8_t *ida,
288 uint32_t ida_len,
289 uint8_t *pub_s,
290 uint8_t *signature);
291
302 uint8_t *pub_e);
303
316 uint32_t idb_len,
317 uint8_t *ke,
318 uint8_t *deb);
319
334 uint8_t *pub_e, uint8_t *K,
335 uint32_t kbytelen, uint8_t *C);
336
351 uint32_t idb_len,
352 uint8_t *deb,
353 uint8_t *K_unwrap,
354 uint32_t kbytelen,
355 uint8_t *C);
356
373 uint32_t idb_len,
374 uint32_t key2_len,
375 uint8_t *pub_e,
376 uint8_t *msg,
377 uint32_t msg_len,
378 uint8_t *cipher,
379 uint32_t *cipher_len);
380
397 uint32_t idb_len,
398 uint32_t key2_len,
399 uint8_t *deb,
400 uint8_t *msg,
401 uint32_t *msg_len,
402 uint8_t *cipher,
403 uint32_t cipher_len);
404
422 uint32_t idb_len,
423 uint32_t key2_len,
424 uint8_t *pub_e,
425 uint8_t *msg,
426 uint32_t msg_len,
427 uint8_t *cipher,
428 uint32_t *cipher_len,
429 uint8_t padding_type);
430
448 uint32_t id_len,
449 uint32_t key2_len,
450 uint8_t *deb,
451 uint8_t *msg,
452 uint32_t *msg_len,
453 uint8_t *cipher,
454 uint32_t cipher_len,
455 uint8_t padding_type);
456
467 uint8_t *pub_e);
468
481 uint32_t id_len,
482 uint8_t *ke,
483 uint8_t *de);
484
498 uint32_t id_len,
499 uint8_t *pub_e,
500 uint8_t *r,
501 uint8_t *R);
502
519 uint8_t *pub_e, uint8_t *dA, uint8_t *RA, uint8_t *rA,
520 uint8_t *RB, uint8_t *ida, uint8_t *idb,
521 cmd_sm9_exc_key_input_ptr_t *exckey_input);
522
539 cmd_sm9_exchangekey_role_e role, uint32_t ida_len,
540 uint32_t idb_len, uint32_t kByteLen,
541 cmd_sm9_exc_key_input_ptr_t *exckey_input,
542 uint8_t *KA, uint8_t *S1, uint8_t *SA);
543#endif
SemiDrive CRYPTO mailbox common api header file.
sdrv_crypto_error_status_e cmd_sm9_exchange_key(cmd_sm9_exchangekey_role_e role, uint32_t ida_len, uint32_t idb_len, uint32_t kByteLen, cmd_sm9_exc_key_input_ptr_t *exckey_input, uint8_t *KA, uint8_t *S1, uint8_t *SA)
sm9 exhange key
sdrv_crypto_error_status_e cmd_sm9_enc_gen_master_key(uint8_t *ke, uint8_t *pub_e)
sm9 gen enc master key
sdrv_crypto_error_status_e cmd_sm9_dec_kdf_stream_cipher(uint8_t *idb, uint32_t idb_len, uint32_t key2_len, uint8_t *deb, uint8_t *msg, uint32_t *msg_len, uint8_t *cipher, uint32_t cipher_len)
dec kdf stream
sdrv_crypto_error_status_e cmd_sm9_enc_gen_user_prikey(uint8_t *idb, uint32_t idb_len, uint8_t *ke, uint8_t *deb)
sm9 gen user enc key
cmd_sm9_exchangekey_role_e
SM9 key exchange role.
Definition: sdrv_crypto_mailbox_sm9.h:222
@ CMD_SM9_ROLE_SPONSOR
Definition: sdrv_crypto_mailbox_sm9.h:223
@ CMD_SM9_ROLE_MAX
Definition: sdrv_crypto_mailbox_sm9.h:225
@ CMD_SM9_ROLE_RESPONSOR
Definition: sdrv_crypto_mailbox_sm9.h:224
sdrv_crypto_error_status_e cmd_sm9_verify_signature(uint8_t *msg, uint32_t msg_len, uint8_t *ida, uint32_t ida_len, uint8_t *pub_s, uint8_t *signature)
sm9 verify signature
sdrv_crypto_error_status_e cmd_sm9_enc_kdf_block_cipher(uint8_t *idb, uint32_t idb_len, uint32_t key2_len, uint8_t *pub_e, uint8_t *msg, uint32_t msg_len, uint8_t *cipher, uint32_t *cipher_len, uint8_t padding_type)
sm9 enc kdf block
sdrv_crypto_error_status_e cmd_sm9_sign_gen_user_prikey(uint8_t *ida, uint32_t ida_len, uint8_t *ks, uint8_t *dsa)
sm9 get user sign prikey
cmd_sm9_enc_type_e
type of sm9 encrypt.
Definition: sdrv_crypto_mailbox_sm9.h:202
@ CMD_SM9_ENC_KDF_STREAM_CIPHER
Definition: sdrv_crypto_mailbox_sm9.h:203
@ CMD_SM9_ENC_KDF_MAX
Definition: sdrv_crypto_mailbox_sm9.h:205
@ CMD_SM9_ENC_KDF_BLOCK_CIPHER
Definition: sdrv_crypto_mailbox_sm9.h:204
sdrv_crypto_error_status_e cmd_sm9_exckey_gen_user_tmpkey(uint8_t *id, uint32_t id_len, uint8_t *pub_e, uint8_t *r, uint8_t *R)
sm9 gen user exckey tmpkey
sdrv_crypto_error_status_e cmd_sm9_exckey_gen_master_key(uint8_t *ke, uint8_t *pub_e)
sm9 gen master exckey key
sdrv_crypto_error_status_e cmd_sm9_exckey_gen_user_prikey(uint8_t *id, uint32_t id_len, uint8_t *ke, uint8_t *de)
sm9 gen user exckey key
cmd_sm9_enc_generate_user_prikey_t cmd_sm9_exckey_generate_user_prikey_t
Definition: sdrv_crypto_mailbox_sm9.h:155
sdrv_crypto_error_status_e cmd_sm9_enc_unwrap_key(uint8_t *idb, uint32_t idb_len, uint8_t *deb, uint8_t *K_unwrap, uint32_t kbytelen, uint8_t *C)
sm9 enc unwrap key
sdrv_crypto_error_status_e cmd_sm9_sign_gen_master_key(uint8_t *ks, uint8_t *pub_s)
sm9 get master sign key
cmd_sm9_enc_generate_master_key_t cmd_sm9_exckey_generate_master_key_t
Definition: sdrv_crypto_mailbox_sm9.h:152
sdrv_crypto_error_status_e cmd_sm9_dec_kdf_block_cipher(uint8_t *id, uint32_t id_len, uint32_t key2_len, uint8_t *deb, uint8_t *msg, uint32_t *msg_len, uint8_t *cipher, uint32_t cipher_len, uint8_t padding_type)
sm9 dec kdf block
cmd_sm9_enc_padding_e
padding of sm9 encrypt.
Definition: sdrv_crypto_mailbox_sm9.h:213
@ CMD_SM9_ENC_PKCS7_PADDING
Definition: sdrv_crypto_mailbox_sm9.h:215
@ CMD_SM9_ENC_MAX_PADDING
Definition: sdrv_crypto_mailbox_sm9.h:216
@ CMD_SM9_ENC_NO_PADDING
Definition: sdrv_crypto_mailbox_sm9.h:214
sdrv_crypto_error_status_e cmd_sm9_gen_signature(uint8_t *msg, uint32_t msg_len, uint8_t *pub_s, uint8_t *dsa, uint8_t *signature)
sm9 gen signature
sdrv_crypto_error_status_e cmd_sm9_set_exckey_input_ptr(uint8_t *pub_e, uint8_t *dA, uint8_t *RA, uint8_t *rA, uint8_t *RB, uint8_t *ida, uint8_t *idb, cmd_sm9_exc_key_input_ptr_t *exckey_input)
sm9 set exckey input msg
sdrv_crypto_error_status_e cmd_sm9_enc_wrap_key(uint8_t *idb, uint32_t idb_len, uint8_t *pub_e, uint8_t *K, uint32_t kbytelen, uint8_t *C)
sm9 enc wrap key
sdrv_crypto_error_status_e cmd_sm9_enc_kdf_stream_cipher(uint8_t *idb, uint32_t idb_len, uint32_t key2_len, uint8_t *pub_e, uint8_t *msg, uint32_t msg_len, uint8_t *cipher, uint32_t *cipher_len)
enc kdf stream
crypto mailbox trng cmd interface
enum sdrv_crypto_error_status sdrv_crypto_error_status_e
CRYPTO error status return codes.
CRYPTO cmd of sm9 decrypt.
Definition: sdrv_crypto_mailbox_sm9.h:137
uint8_t key2_len
Definition: sdrv_crypto_mailbox_sm9.h:141
uint8_t enc_type
Definition: sdrv_crypto_mailbox_sm9.h:139
uint8_t padding_type
Definition: sdrv_crypto_mailbox_sm9.h:140
uint8_t cmd_id
Definition: sdrv_crypto_mailbox_sm9.h:138
CRYPTO cmd of sm9 enc generate master key.
Definition: sdrv_crypto_mailbox_sm9.h:67
uint8_t cmd_id
Definition: sdrv_crypto_mailbox_sm9.h:68
CRYPTO cmd of sm9 enc generate user prikey.
Definition: sdrv_crypto_mailbox_sm9.h:77
uint8_t hid
Definition: sdrv_crypto_mailbox_sm9.h:79
uint8_t cmd_id
Definition: sdrv_crypto_mailbox_sm9.h:78
CRYPTO cmd of sm9 encrypt.
Definition: sdrv_crypto_mailbox_sm9.h:118
uint8_t key2_len
Definition: sdrv_crypto_mailbox_sm9.h:122
uint8_t hid
Definition: sdrv_crypto_mailbox_sm9.h:128
uint8_t enc_type
Definition: sdrv_crypto_mailbox_sm9.h:120
uint8_t padding_type
Definition: sdrv_crypto_mailbox_sm9.h:121
uint8_t cmd_id
Definition: sdrv_crypto_mailbox_sm9.h:119
CRYPTO cmd of sm9 exchange key generate user tmpkey.
Definition: sdrv_crypto_mailbox_sm9.h:173
CRYPTO cmd of sm9 exchange key.
Definition: sdrv_crypto_mailbox_sm9.h:186
uint8_t role
Definition: sdrv_crypto_mailbox_sm9.h:190
uint8_t key_len
Definition: sdrv_crypto_mailbox_sm9.h:189
uint8_t cmd_id
Definition: sdrv_crypto_mailbox_sm9.h:187
CRYPTO cmd of sm9 exchange key generate user tmpkey.
Definition: sdrv_crypto_mailbox_sm9.h:160
uint8_t hid
Definition: sdrv_crypto_mailbox_sm9.h:162
uint8_t cmd_id
Definition: sdrv_crypto_mailbox_sm9.h:161
CRYPTO cmd of sm9 generate signature.
Definition: sdrv_crypto_mailbox_sm9.h:40
uint8_t cmd_id
Definition: sdrv_crypto_mailbox_sm9.h:41
CRYPTO cmd of sm9 sign generate master key.
Definition: sdrv_crypto_mailbox_sm9.h:18
uint8_t cmd_id
Definition: sdrv_crypto_mailbox_sm9.h:19
CRYPTO cmd of sm9 sign generate user prikey.
Definition: sdrv_crypto_mailbox_sm9.h:28
uint8_t hid
Definition: sdrv_crypto_mailbox_sm9.h:30
uint8_t cmd_id
Definition: sdrv_crypto_mailbox_sm9.h:29
CRYPTO cmd of sm9 unwrapkey.
Definition: sdrv_crypto_mailbox_sm9.h:105
uint8_t key_len
Definition: sdrv_crypto_mailbox_sm9.h:107
uint8_t cmd_id
Definition: sdrv_crypto_mailbox_sm9.h:106
CRYPTO cmd of sm9 verify signature.
Definition: sdrv_crypto_mailbox_sm9.h:53
uint8_t hid
Definition: sdrv_crypto_mailbox_sm9.h:55
uint8_t cmd_id
Definition: sdrv_crypto_mailbox_sm9.h:54
CRYPTO cmd of sm9 wrapkey.
Definition: sdrv_crypto_mailbox_sm9.h:89
uint8_t hid
Definition: sdrv_crypto_mailbox_sm9.h:92
uint8_t key_len
Definition: sdrv_crypto_mailbox_sm9.h:93
uint8_t cmd_id
Definition: sdrv_crypto_mailbox_sm9.h:90