• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * This file is part of the openHiTLS project.
3  *
4  * openHiTLS is licensed under the Mulan PSL v2.
5  * You can use this software according to the terms and conditions of the Mulan PSL v2.
6  * You may obtain a copy of Mulan PSL v2 at:
7  *
8  *     http://license.coscl.org.cn/MulanPSL2
9  *
10  * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11  * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12  * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
13  * See the Mulan PSL v2 for more details.
14  */
15 
16 /**
17  * @defgroup crypt
18  * @brief crypto module
19  */
20 
21 /**
22  * @defgroup crypt_algid
23  * @ingroup crypt
24  * @brief id of algorithms
25  */
26 
27 #ifndef CRYPT_ALGID_H
28 #define CRYPT_ALGID_H
29 
30 #include "bsl_obj.h"
31 
32 #ifdef __cplusplus
33 extern "C" {
34 #endif // __cplusplus
35 
36 /**
37  * @ingroup  crypt_algid
38  *
39  * RAND algorithm ID
40  */
41 typedef enum {
42     CRYPT_RAND_SHA1 = BSL_CID_RAND_SHA1,
43     CRYPT_RAND_SHA224 = BSL_CID_RAND_SHA224,
44     CRYPT_RAND_SHA256 = BSL_CID_RAND_SHA256,
45     CRYPT_RAND_SHA384 = BSL_CID_RAND_SHA384,
46     CRYPT_RAND_SHA512 = BSL_CID_RAND_SHA512,
47     CRYPT_RAND_HMAC_SHA1 = BSL_CID_RAND_HMAC_SHA1,
48     CRYPT_RAND_HMAC_SHA224 = BSL_CID_RAND_HMAC_SHA224,
49     CRYPT_RAND_HMAC_SHA256 = BSL_CID_RAND_HMAC_SHA256,
50     CRYPT_RAND_HMAC_SHA384 = BSL_CID_RAND_HMAC_SHA384,
51     CRYPT_RAND_HMAC_SHA512 = BSL_CID_RAND_HMAC_SHA512,
52     CRYPT_RAND_AES128_CTR = BSL_CID_RAND_AES128_CTR,
53     CRYPT_RAND_AES192_CTR = BSL_CID_RAND_AES192_CTR,
54     CRYPT_RAND_AES256_CTR = BSL_CID_RAND_AES256_CTR,
55     CRYPT_RAND_AES128_CTR_DF = BSL_CID_RAND_AES128_CTR_DF,
56     CRYPT_RAND_AES192_CTR_DF = BSL_CID_RAND_AES192_CTR_DF,
57     CRYPT_RAND_AES256_CTR_DF = BSL_CID_RAND_AES256_CTR_DF,
58     CRYPT_RAND_SM3 = BSL_CID_RAND_SM3,
59     CRYPT_RAND_SM4_CTR_DF = BSL_CID_RAND_SM4_CTR_DF,
60     CRYPT_RAND_ALGID_MAX = BSL_CID_UNKNOWN
61 } CRYPT_RAND_AlgId;
62 
63 /**
64  * @ingroup  crypt_algid
65  *
66  * Hash algorithm ID
67  */
68 typedef enum {
69     CRYPT_MD_MD5 = BSL_CID_MD5,
70     CRYPT_MD_SHA1 = BSL_CID_SHA1,
71     CRYPT_MD_SHA224 = BSL_CID_SHA224,
72     CRYPT_MD_SHA256 = BSL_CID_SHA256,
73     CRYPT_MD_SHA384 = BSL_CID_SHA384,
74     CRYPT_MD_SHA512 = BSL_CID_SHA512,
75     CRYPT_MD_SHA3_224 = BSL_CID_SHA3_224,
76     CRYPT_MD_SHA3_256 = BSL_CID_SHA3_256,
77     CRYPT_MD_SHA3_384 = BSL_CID_SHA3_384,
78     CRYPT_MD_SHA3_512 = BSL_CID_SHA3_512,
79     CRYPT_MD_SHAKE128 = BSL_CID_SHAKE128,
80     CRYPT_MD_SHAKE256 = BSL_CID_SHAKE256,
81     CRYPT_MD_SM3 = BSL_CID_SM3,
82     CRYPT_MD_MAX = BSL_CID_UNKNOWN
83 } CRYPT_MD_AlgId;
84 
85 /**
86  * @ingroup  crypt_algid
87  *
88  * MAC algorithm ID
89  */
90 typedef enum {
91     CRYPT_MAC_HMAC_MD5 = BSL_CID_HMAC_MD5,
92     CRYPT_MAC_HMAC_SHA1 = BSL_CID_HMAC_SHA1,
93     CRYPT_MAC_HMAC_SHA224 = BSL_CID_HMAC_SHA224,
94     CRYPT_MAC_HMAC_SHA256 = BSL_CID_HMAC_SHA256,
95     CRYPT_MAC_HMAC_SHA384 = BSL_CID_HMAC_SHA384,
96     CRYPT_MAC_HMAC_SHA512 = BSL_CID_HMAC_SHA512,
97     CRYPT_MAC_HMAC_SHA3_224 = BSL_CID_HMAC_SHA3_224,
98     CRYPT_MAC_HMAC_SHA3_256 = BSL_CID_HMAC_SHA3_256,
99     CRYPT_MAC_HMAC_SHA3_384 = BSL_CID_HMAC_SHA3_384,
100     CRYPT_MAC_HMAC_SHA3_512 = BSL_CID_HMAC_SHA3_512,
101     CRYPT_MAC_HMAC_SM3 = BSL_CID_HMAC_SM3,
102     CRYPT_MAC_CMAC_AES128 = BSL_CID_CMAC_AES128,
103     CRYPT_MAC_CMAC_AES192 = BSL_CID_CMAC_AES192,
104     CRYPT_MAC_CMAC_AES256 = BSL_CID_CMAC_AES256,
105     CRYPT_MAC_CMAC_SM4 = BSL_CID_CMAC_SM4,
106     CRYPT_MAC_CBC_MAC_SM4 = BSL_CID_CBC_MAC_SM4,
107     CRYPT_MAC_GMAC_AES128 = BSL_CID_GMAC_AES128,
108     CRYPT_MAC_GMAC_AES192 = BSL_CID_GMAC_AES192,
109     CRYPT_MAC_GMAC_AES256 = BSL_CID_GMAC_AES256,
110     CRYPT_MAC_SIPHASH64 = BSL_CID_SIPHASH64,
111     CRYPT_MAC_SIPHASH128 = BSL_CID_SIPHASH128,
112     CRYPT_MAC_MAX = BSL_CID_UNKNOWN
113 } CRYPT_MAC_AlgId;
114 
115 /**
116  * @ingroup  crypt_algid
117  *
118  * Asymmetric algorithm ID
119  */
120 typedef enum {
121     CRYPT_PKEY_DSA = BSL_CID_DSA,
122     CRYPT_PKEY_ED25519 = BSL_CID_ED25519,
123     CRYPT_PKEY_X25519 = BSL_CID_X25519,
124     CRYPT_PKEY_RSA = BSL_CID_RSA,
125     CRYPT_PKEY_DH = BSL_CID_DH,
126     CRYPT_PKEY_ECDSA = BSL_CID_ECDSA,
127     CRYPT_PKEY_ECDH = BSL_CID_ECDH,
128     CRYPT_PKEY_SM2 = BSL_CID_SM2DSA,
129     CRYPT_PKEY_PAILLIER = BSL_CID_PAILLIER,
130     CRYPT_PKEY_ELGAMAL = BSL_CID_ELGAMAL,
131     CRYPT_PKEY_SLH_DSA = BSL_CID_SLH_DSA,
132 	CRYPT_PKEY_ML_KEM = BSL_CID_ML_KEM,
133     CRYPT_PKEY_ML_DSA = BSL_CID_ML_DSA,
134     CRYPT_PKEY_HYBRID_KEM = BSL_CID_HYBRID_KEM,
135     CRYPT_PKEY_MAX = BSL_CID_UNKNOWN
136 } CRYPT_PKEY_AlgId;
137 
138 /**
139  * @ingroup  cipher_algid
140  * @brief Symmetric algorithm mode ID
141  *
142  * There is a mapping relationship with the g_ealCipherMethod list. Attention any modification must be synchronized.
143  */
144 typedef enum {
145     CRYPT_CIPHER_AES128_CBC = BSL_CID_AES128_CBC,
146     CRYPT_CIPHER_AES192_CBC = BSL_CID_AES192_CBC,
147     CRYPT_CIPHER_AES256_CBC = BSL_CID_AES256_CBC,
148 
149     CRYPT_CIPHER_AES128_CTR = BSL_CID_AES128_CTR,
150     CRYPT_CIPHER_AES192_CTR = BSL_CID_AES192_CTR,
151     CRYPT_CIPHER_AES256_CTR = BSL_CID_AES256_CTR,
152 
153     CRYPT_CIPHER_AES128_ECB = BSL_CID_AES128_ECB,
154     CRYPT_CIPHER_AES192_ECB = BSL_CID_AES192_ECB,
155     CRYPT_CIPHER_AES256_ECB = BSL_CID_AES256_ECB,
156 
157     CRYPT_CIPHER_AES128_XTS = BSL_CID_AES128_XTS,
158     CRYPT_CIPHER_AES256_XTS = BSL_CID_AES256_XTS,
159 
160     CRYPT_CIPHER_AES128_CCM = BSL_CID_AES128_CCM,
161     CRYPT_CIPHER_AES192_CCM = BSL_CID_AES192_CCM,
162     CRYPT_CIPHER_AES256_CCM = BSL_CID_AES256_CCM,
163 
164     CRYPT_CIPHER_AES128_GCM = BSL_CID_AES128_GCM,
165     CRYPT_CIPHER_AES192_GCM = BSL_CID_AES192_GCM,
166     CRYPT_CIPHER_AES256_GCM = BSL_CID_AES256_GCM,
167 
168     CRYPT_CIPHER_CHACHA20_POLY1305 = BSL_CID_CHACHA20_POLY1305,
169 
170     CRYPT_CIPHER_SM4_XTS = BSL_CID_SM4_XTS,
171     CRYPT_CIPHER_SM4_CBC = BSL_CID_SM4_CBC,
172     CRYPT_CIPHER_SM4_ECB = BSL_CID_SM4_ECB,
173     CRYPT_CIPHER_SM4_CTR = BSL_CID_SM4_CTR,
174     CRYPT_CIPHER_SM4_GCM = BSL_CID_SM4_GCM,
175     CRYPT_CIPHER_SM4_CFB = BSL_CID_SM4_CFB,
176     CRYPT_CIPHER_SM4_OFB = BSL_CID_SM4_OFB,
177 
178     CRYPT_CIPHER_AES128_CFB = BSL_CID_AES128_CFB,
179     CRYPT_CIPHER_AES192_CFB = BSL_CID_AES192_CFB,
180     CRYPT_CIPHER_AES256_CFB = BSL_CID_AES256_CFB,
181     CRYPT_CIPHER_AES128_OFB = BSL_CID_AES128_OFB,
182     CRYPT_CIPHER_AES192_OFB = BSL_CID_AES192_OFB,
183     CRYPT_CIPHER_AES256_OFB = BSL_CID_AES256_OFB,
184 
185     CRYPT_CIPHER_MAX = BSL_CID_UNKNOWN,
186 } CRYPT_CIPHER_AlgId;
187 
188 /**
189  * @ingroup  crypt_algid
190  *
191  * Parameter ID of an asymmetric algorithm. The most significant 16 bits indicate the algorithm ID,
192  * and the least significant 16 bits map the ID definition of the algorithm LowLevel.
193  */
194 typedef enum {
195     CRYPT_DH_RFC2409_768 = BSL_CID_DH_RFC2409_768,
196     CRYPT_DH_RFC2409_1024 = BSL_CID_DH_RFC2409_1024,
197     CRYPT_DH_RFC3526_1536 = BSL_CID_DH_RFC3526_1536,
198     CRYPT_DH_RFC3526_2048 = BSL_CID_DH_RFC3526_2048,
199     CRYPT_DH_RFC3526_3072 = BSL_CID_DH_RFC3526_3072,
200     CRYPT_DH_RFC3526_4096 = BSL_CID_DH_RFC3526_4096,
201     CRYPT_DH_RFC3526_6144 = BSL_CID_DH_RFC3526_6144,
202     CRYPT_DH_RFC3526_8192 = BSL_CID_DH_RFC3526_8192,
203     CRYPT_DH_RFC7919_2048 = BSL_CID_DH_RFC7919_2048,
204     CRYPT_DH_RFC7919_3072 = BSL_CID_DH_RFC7919_3072,
205     CRYPT_DH_RFC7919_4096 = BSL_CID_DH_RFC7919_4096,
206     CRYPT_DH_RFC7919_6144 = BSL_CID_DH_RFC7919_6144,
207     CRYPT_DH_RFC7919_8192 = BSL_CID_DH_RFC7919_8192,
208     CRYPT_ECC_NISTP224 = BSL_CID_NIST_PRIME224,
209     CRYPT_ECC_NISTP256 = BSL_CID_PRIME256V1,
210     CRYPT_ECC_NISTP384 = BSL_CID_SECP384R1,
211     CRYPT_ECC_NISTP521 = BSL_CID_SECP521R1,
212     CRYPT_ECC_BRAINPOOLP256R1 = BSL_CID_ECC_BRAINPOOLP256R1,
213     CRYPT_ECC_BRAINPOOLP384R1 = BSL_CID_ECC_BRAINPOOLP384R1,
214     CRYPT_ECC_BRAINPOOLP512R1 = BSL_CID_ECC_BRAINPOOLP512R1,
215     CRYPT_ECC_SM2 = BSL_CID_SM2PRIME256,
216     CRYPT_HYBRID_X25519_MLKEM512 = BSL_CID_X25519_MLKEM512,
217     CRYPT_HYBRID_X25519_MLKEM768 = BSL_CID_X25519_MLKEM768,
218     CRYPT_HYBRID_X25519_MLKEM1024 = BSL_CID_X25519_MLKEM1024,
219     CRYPT_HYBRID_ECDH_NISTP256_MLKEM512 = BSL_CID_ECDH_NISTP256_MLKEM512,
220     CRYPT_HYBRID_ECDH_NISTP256_MLKEM768 = BSL_CID_ECDH_NISTP256_MLKEM768,
221     CRYPT_HYBRID_ECDH_NISTP256_MLKEM1024 = BSL_CID_ECDH_NISTP256_MLKEM1024,
222     CRYPT_HYBRID_ECDH_NISTP384_MLKEM512 = BSL_CID_ECDH_NISTP384_MLKEM512,
223     CRYPT_HYBRID_ECDH_NISTP384_MLKEM768 = BSL_CID_ECDH_NISTP384_MLKEM768,
224     CRYPT_HYBRID_ECDH_NISTP384_MLKEM1024 = BSL_CID_ECDH_NISTP384_MLKEM1024,
225     CRYPT_HYBRID_ECDH_NISTP521_MLKEM512 = BSL_CID_ECDH_NISTP521_MLKEM512,
226     CRYPT_HYBRID_ECDH_NISTP521_MLKEM768 = BSL_CID_ECDH_NISTP521_MLKEM768,
227     CRYPT_HYBRID_ECDH_NISTP521_MLKEM1024 = BSL_CID_ECDH_NISTP521_MLKEM1024,
228     CRYPT_PKEY_PARAID_MAX = BSL_CID_UNKNOWN
229 } CRYPT_PKEY_ParaId;
230 
231 /**
232  * @ingroup  crypt_algid
233  *
234  * Elliptic Curve Point Encoding Format
235  */
236 typedef enum {
237     CRYPT_POINT_COMPRESSED,
238     CRYPT_POINT_UNCOMPRESSED, /**< default format. */
239     CRYPT_POINT_HYBRID,
240     CRYPT_POINT_MAX
241 } CRYPT_PKEY_PointFormat;
242 
243 /**
244  * @ingroup  crypt_algid
245  *
246  * KDF algorithm ID
247  */
248 typedef enum {
249     CRYPT_KDF_SCRYPT = BSL_CID_SCRYPT,
250     CRYPT_KDF_PBKDF2 = BSL_CID_PBKDF2,
251     CRYPT_KDF_KDFTLS12 = BSL_CID_KDFTLS12,
252     CRYPT_KDF_HKDF = BSL_CID_HKDF,
253     CRYPT_KDF_MAX = BSL_CID_UNKNOWN
254 } CRYPT_KDF_AlgId;
255 
256 #ifdef __cplusplus
257 }
258 #endif // __cplusplus
259 
260 #endif // CRYPT_ALGID_H
261