openHiTLS API openHiTLS 0.1.0-Alpha1
hitls_crypt_type.h
浏览该文件的文档.
1/*---------------------------------------------------------------------------------------------
2 * This file is part of the openHiTLS project.
3 * Copyright © 2023 Huawei Technologies Co.,Ltd. All rights reserved.
4 * Licensed under the openHiTLS Software license agreement 1.0. See LICENSE in the project root
5 * for license information.
6 *---------------------------------------------------------------------------------------------
7 */
8
14#ifndef HITLS_CRYPT_TYPE_H
15#define HITLS_CRYPT_TYPE_H
16
17#include <stdint.h>
18#include <stdbool.h>
19
20#ifdef __cplusplus
21extern "C" {
22#endif
23
29typedef void HITLS_CRYPT_Key;
30
35typedef void HITLS_HASH_Ctx;
36
42typedef void HITLS_HMAC_Ctx;
43
48typedef enum {
53
58typedef enum {
72
77typedef enum {
87 HITLS_HASH_BUTT = 255
89
94typedef enum {
104 HITLS_MAC_BUTT = 255
106
111typedef enum {
119 HITLS_AUTH_BUTT = 255
121
126typedef enum {
137 HITLS_KEY_EXCH_ECC, /* sm2 encrypt */
140
145typedef enum {
154 HITLS_SIGN_BUTT = 255
156
161typedef enum {
165
170typedef enum {
185 HITLS_NAMED_GROUP_BUTT = 0xFFFFu
187
192typedef enum {
196
201typedef struct {
203 union {
204 void *prime;
205 void *char2;
207 } param;
209
214typedef struct {
217 const uint8_t *key;
218 uint32_t keyLen;
219 const uint8_t *hmacKey;
220 uint32_t hmacKeyLen;
221 const uint8_t *iv;
222 uint32_t ivLen;
223 uint8_t *aad;
225 uint32_t aadLen;
227
232typedef struct {
234 uint8_t *tmpPeerPubkey;
240 bool isClient;
242
247typedef struct {
249 const uint8_t *salt;
250 uint32_t saltLen;
251 const uint8_t *ikm;
252 uint32_t ikmLen;
254
259typedef struct {
261 const uint8_t *prk;
262 uint32_t prkLen;
263 const uint8_t *info;
264 uint32_t infoLen;
266
267#ifdef __cplusplus
268}
269#endif
270#endif
void HITLS_HASH_Ctx
Hash context. The user converts the structure based on the algorithm library.
Definition hitls_crypt_type.h:35
HITLS_MacAlgo
MAC algorithm enumerated value
Definition hitls_crypt_type.h:94
@ HITLS_MAC_AEAD
Definition hitls_crypt_type.h:103
@ HITLS_MAC_256
Definition hitls_crypt_type.h:99
@ HITLS_MAC_1
Definition hitls_crypt_type.h:97
@ HITLS_MAC_NULL
Definition hitls_crypt_type.h:95
@ HITLS_MAC_384
Definition hitls_crypt_type.h:100
@ HITLS_MAC_SM3
Definition hitls_crypt_type.h:102
@ HITLS_MAC_512
Definition hitls_crypt_type.h:101
@ HITLS_MAC_224
Definition hitls_crypt_type.h:98
@ HITLS_MAC_BUTT
Definition hitls_crypt_type.h:104
@ HITLS_MAC_MD5
Definition hitls_crypt_type.h:96
void HITLS_HMAC_Ctx
HMAC context. The user converts the HMAC context into the corresponding structure based on the algori...
Definition hitls_crypt_type.h:42
void HITLS_CRYPT_Key
Key handle, which is converted into the corresponding structure based on the algorithm library used b...
Definition hitls_crypt_type.h:29
HITLS_CipherType
Enumerated value of the symmetric encryption algorithm type.
Definition hitls_crypt_type.h:48
@ HITLS_CBC_CIPHER
Definition hitls_crypt_type.h:50
@ HITLS_CIPHER_TYPE_BUTT
Definition hitls_crypt_type.h:51
@ HITLS_AEAD_CIPHER
Definition hitls_crypt_type.h:49
HITLS_NamedGroup
Elliptic curve ID.
Definition hitls_crypt_type.h:170
@ HITLS_EC_GROUP_SECP521R1
Definition hitls_crypt_type.h:173
@ HITLS_FF_DHE_8192
Definition hitls_crypt_type.h:184
@ HITLS_EC_GROUP_SECP256R1
Definition hitls_crypt_type.h:171
@ HITLS_FF_DHE_4096
Definition hitls_crypt_type.h:182
@ HITLS_EC_GROUP_BRAINPOOLP384R1
Definition hitls_crypt_type.h:175
@ HITLS_EC_GROUP_CURVE448
Definition hitls_crypt_type.h:178
@ HITLS_EC_GROUP_BRAINPOOLP256R1
Definition hitls_crypt_type.h:174
@ HITLS_NAMED_GROUP_BUTT
Definition hitls_crypt_type.h:185
@ HITLS_EC_GROUP_SM2
Definition hitls_crypt_type.h:179
@ HITLS_FF_DHE_6144
Definition hitls_crypt_type.h:183
@ HITLS_FF_DHE_2048
Definition hitls_crypt_type.h:180
@ HITLS_EC_GROUP_CURVE25519
Definition hitls_crypt_type.h:177
@ HITLS_EC_GROUP_BRAINPOOLP512R1
Definition hitls_crypt_type.h:176
@ HITLS_EC_GROUP_SECP384R1
Definition hitls_crypt_type.h:172
@ HITLS_FF_DHE_3072
Definition hitls_crypt_type.h:181
HITLS_ECPointFormat
Elliptic curve point format enumerated value
Definition hitls_crypt_type.h:192
@ HITLS_POINT_FORMAT_UNCOMPRESSED
Definition hitls_crypt_type.h:193
@ HITLS_POINT_FORMAT_BUTT
Definition hitls_crypt_type.h:194
HITLS_KeyExchAlgo
Key exchange algorithm enumerated value
Definition hitls_crypt_type.h:126
@ HITLS_KEY_EXCH_DH
Definition hitls_crypt_type.h:131
@ HITLS_KEY_EXCH_DHE
Definition hitls_crypt_type.h:129
@ HITLS_KEY_EXCH_PSK
Definition hitls_crypt_type.h:136
@ HITLS_KEY_EXCH_DHE_PSK
Definition hitls_crypt_type.h:134
@ HITLS_KEY_EXCH_ECDHE_PSK
Definition hitls_crypt_type.h:133
@ HITLS_KEY_EXCH_RSA
Definition hitls_crypt_type.h:132
@ HITLS_KEY_EXCH_RSA_PSK
Definition hitls_crypt_type.h:135
@ HITLS_KEY_EXCH_BUTT
Definition hitls_crypt_type.h:138
@ HITLS_KEY_EXCH_ECDH
Definition hitls_crypt_type.h:130
@ HITLS_KEY_EXCH_ECDHE
Definition hitls_crypt_type.h:128
@ HITLS_KEY_EXCH_NULL
Definition hitls_crypt_type.h:127
@ HITLS_KEY_EXCH_ECC
Definition hitls_crypt_type.h:137
HITLS_ECCurveType
Elliptic curve type enumerated value
Definition hitls_crypt_type.h:161
@ HITLS_EC_CURVE_TYPE_BUTT
Definition hitls_crypt_type.h:163
@ HITLS_EC_CURVE_TYPE_NAMED_CURVE
Definition hitls_crypt_type.h:162
HITLS_HashAlgo
Hash algorithm enumeration
Definition hitls_crypt_type.h:77
@ HITLS_HASH_BUTT
Definition hitls_crypt_type.h:87
@ HITLS_HASH_SM3
Definition hitls_crypt_type.h:86
@ HITLS_HASH_SHA1
Definition hitls_crypt_type.h:80
@ HITLS_HASH_SHA_512
Definition hitls_crypt_type.h:84
@ HITLS_HASH_SHA_256
Definition hitls_crypt_type.h:82
@ HITLS_HASH_MD5
Definition hitls_crypt_type.h:79
@ HITLS_HASH_NULL
Definition hitls_crypt_type.h:78
@ HITLS_HASH_SHA_384
Definition hitls_crypt_type.h:83
@ HITLS_HASH_MD5_SHA1
Definition hitls_crypt_type.h:85
@ HITLS_HASH_SHA_224
Definition hitls_crypt_type.h:81
HITLS_SignAlgo
Signature algorithm enumeration
Definition hitls_crypt_type.h:145
@ HITLS_SIGN_DSA
Definition hitls_crypt_type.h:147
@ HITLS_SIGN_RSA_PSS_RSAE
Definition hitls_crypt_type.h:149
@ HITLS_SIGN_RSA_PSS_PSS
Definition hitls_crypt_type.h:152
@ HITLS_SIGN_ED448
Definition hitls_crypt_type.h:151
@ HITLS_SIGN_SM2
Definition hitls_crypt_type.h:153
@ HITLS_SIGN_RSA_PKCS1_V15
Definition hitls_crypt_type.h:146
@ HITLS_SIGN_BUTT
Definition hitls_crypt_type.h:154
@ HITLS_SIGN_ECDSA
Definition hitls_crypt_type.h:148
@ HITLS_SIGN_ED25519
Definition hitls_crypt_type.h:150
HITLS_CipherAlgo
Enumerated value of the symmetric encryption algorithm.
Definition hitls_crypt_type.h:58
@ HITLS_CIPHER_BUTT
Definition hitls_crypt_type.h:70
@ HITLS_CIPHER_SM4_CBC
Definition hitls_crypt_type.h:69
@ HITLS_CIPHER_NULL
Definition hitls_crypt_type.h:59
@ HITLS_CIPHER_AES_128_CBC
Definition hitls_crypt_type.h:60
@ HITLS_CIPHER_AES_256_GCM
Definition hitls_crypt_type.h:63
@ HITLS_CIPHER_AES_256_CCM
Definition hitls_crypt_type.h:65
@ HITLS_CIPHER_AES_256_CBC
Definition hitls_crypt_type.h:61
@ HITLS_CIPHER_AES_256_CCM8
Definition hitls_crypt_type.h:67
@ HITLS_CIPHER_AES_128_GCM
Definition hitls_crypt_type.h:62
@ HITLS_CIPHER_AES_128_CCM8
Definition hitls_crypt_type.h:66
@ HITLS_CIPHER_AES_128_CCM
Definition hitls_crypt_type.h:64
@ HITLS_CIPHER_CHACHA20_POLY1305
Definition hitls_crypt_type.h:68
HITLS_AuthAlgo
Enumerated value of the authentication algorithm
Definition hitls_crypt_type.h:111
@ HITLS_AUTH_BUTT
Definition hitls_crypt_type.h:119
@ HITLS_AUTH_PSK
Definition hitls_crypt_type.h:116
@ HITLS_AUTH_ECDSA
Definition hitls_crypt_type.h:114
@ HITLS_AUTH_NULL
Definition hitls_crypt_type.h:112
@ HITLS_AUTH_DSS
Definition hitls_crypt_type.h:115
@ HITLS_AUTH_SM2
Definition hitls_crypt_type.h:117
@ HITLS_AUTH_ANY
Definition hitls_crypt_type.h:118
@ HITLS_AUTH_RSA
Definition hitls_crypt_type.h:113
void * prime
Definition hitls_crypt_type.h:204
void * char2
Definition hitls_crypt_type.h:205
HITLS_ECCurveType type
Definition hitls_crypt_type.h:202
HITLS_NamedGroup namedcurve
Definition hitls_crypt_type.h:206
Elliptic curve parameter
Definition hitls_crypt_type.h:201
uint32_t ivLen
Definition hitls_crypt_type.h:222
uint32_t keyLen
Definition hitls_crypt_type.h:218
HITLS_CipherAlgo algo
Definition hitls_crypt_type.h:216
uint32_t hmacKeyLen
Definition hitls_crypt_type.h:220
const uint8_t * iv
Definition hitls_crypt_type.h:221
uint32_t aadLen
Definition hitls_crypt_type.h:225
const uint8_t * key
Definition hitls_crypt_type.h:217
uint8_t * aad
Definition hitls_crypt_type.h:223
const uint8_t * hmacKey
Definition hitls_crypt_type.h:219
HITLS_CipherType type
Definition hitls_crypt_type.h:215
Key parameters
Definition hitls_crypt_type.h:214
HITLS_CRYPT_Key * peerPubKey
Definition hitls_crypt_type.h:238
HITLS_CRYPT_Key * priKey
Definition hitls_crypt_type.h:236
HITLS_CRYPT_Key * tmpPriKey
Definition hitls_crypt_type.h:233
uint8_t * tmpPeerPubkey
Definition hitls_crypt_type.h:234
bool isClient
Definition hitls_crypt_type.h:240
uint32_t tmpPeerPubKeyLen
Definition hitls_crypt_type.h:235
sm2 ecdhe negotiation key parameters
Definition hitls_crypt_type.h:232
uint32_t saltLen
Definition hitls_crypt_type.h:250
const uint8_t * salt
Definition hitls_crypt_type.h:249
uint32_t ikmLen
Definition hitls_crypt_type.h:252
HITLS_HashAlgo hashAlgo
Definition hitls_crypt_type.h:248
const uint8_t * ikm
Definition hitls_crypt_type.h:251
HKDF-Extract Input
Definition hitls_crypt_type.h:247
uint32_t prkLen
Definition hitls_crypt_type.h:262
const uint8_t * prk
Definition hitls_crypt_type.h:261
HITLS_HashAlgo hashAlgo
Definition hitls_crypt_type.h:260
uint32_t infoLen
Definition hitls_crypt_type.h:264
const uint8_t * info
Definition hitls_crypt_type.h:263
HKDF-Expand Input
Definition hitls_crypt_type.h:259