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 #include "hitls_build.h"
17 #ifdef HITLS_TLS_CALLBACK_CRYPT
18
19 #include <string.h>
20 #include "securec.h"
21 #include "bsl_log_internal.h"
22 #include "bsl_err_internal.h"
23 #include "tls_binlog_id.h"
24 #include "crypt_algid.h"
25 #include "hitls_crypt_type.h"
26 #include "crypt_eal_rand.h"
27 #include "crypt_eal_md.h"
28 #include "crypt_eal_mac.h"
29 #include "crypt_eal_cipher.h"
30 #include "crypt_eal_pkey.h"
31 #include "crypt_eal_kdf.h"
32 #include "crypt_errno.h"
33 #include "hitls_error.h"
34 #include "hitls_build.h"
35
36 #include "crypt_default.h"
37 #include "bsl_params.h"
38 #include "crypt_params_key.h"
39 #include "config_type.h"
40 #include "hitls_crypt.h"
41
42 #ifndef HITLS_CRYPTO_EAL
43 #error "Missing definition of HITLS_CRYPTO_EAL"
44 #endif
45
CRYPT_DEFAULT_RandomBytes(uint8_t * buf,uint32_t len)46 int32_t CRYPT_DEFAULT_RandomBytes(uint8_t *buf, uint32_t len)
47 {
48 #ifdef HITLS_CRYPTO_DRBG
49 return CRYPT_EAL_Randbytes(buf, len);
50 #else
51 (void)buf;
52 (void)len;
53 return CRYPT_EAL_ALG_NOT_SUPPORT;
54 #endif
55 }
56
CRYPT_DEFAULT_HMAC_Size(HITLS_HashAlgo hashAlgo)57 uint32_t CRYPT_DEFAULT_HMAC_Size(HITLS_HashAlgo hashAlgo)
58 {
59 return CRYPT_DEFAULT_DigestSize(hashAlgo);
60 }
61
62 #ifdef HITLS_TLS_CALLBACK_CRYPT_HMAC_PRIMITIVES
CRYPT_DEFAULT_HMAC_Init(HITLS_HashAlgo hashAlgo,const uint8_t * key,uint32_t len)63 HITLS_HMAC_Ctx *CRYPT_DEFAULT_HMAC_Init(HITLS_HashAlgo hashAlgo, const uint8_t *key, uint32_t len)
64 {
65 return HITLS_CRYPT_HMAC_Init(NULL, NULL, hashAlgo, key, len);
66 }
67
CRYPT_DEFAULT_HMAC_ReInit(HITLS_HMAC_Ctx * ctx)68 int32_t CRYPT_DEFAULT_HMAC_ReInit(HITLS_HMAC_Ctx *ctx)
69 {
70 return HITLS_CRYPT_HMAC_ReInit(ctx);
71 }
72
CRYPT_DEFAULT_HMAC_Free(HITLS_HMAC_Ctx * ctx)73 void CRYPT_DEFAULT_HMAC_Free(HITLS_HMAC_Ctx *ctx)
74 {
75 HITLS_CRYPT_HMAC_Free(ctx);
76 }
77
CRYPT_DEFAULT_HMAC_Update(HITLS_HMAC_Ctx * ctx,const uint8_t * data,uint32_t len)78 int32_t CRYPT_DEFAULT_HMAC_Update(HITLS_HMAC_Ctx *ctx, const uint8_t *data, uint32_t len)
79 {
80 return HITLS_CRYPT_HMAC_Update(ctx, data, len);
81 }
82
CRYPT_DEFAULT_HMAC_Final(HITLS_HMAC_Ctx * ctx,uint8_t * out,uint32_t * len)83 int32_t CRYPT_DEFAULT_HMAC_Final(HITLS_HMAC_Ctx *ctx, uint8_t *out, uint32_t *len)
84 {
85 return HITLS_CRYPT_HMAC_Final(ctx, out, len);
86 }
87 #endif /* HITLS_TLS_CALLBACK_CRYPT_HMAC_PRIMITIVES */
88
89
CRYPT_DEFAULT_HMAC(HITLS_HashAlgo hashAlgo,const uint8_t * key,uint32_t keyLen,const uint8_t * in,uint32_t inLen,uint8_t * out,uint32_t * outLen)90 int32_t CRYPT_DEFAULT_HMAC(HITLS_HashAlgo hashAlgo, const uint8_t *key, uint32_t keyLen,
91 const uint8_t *in, uint32_t inLen, uint8_t *out, uint32_t *outLen)
92 {
93 return HITLS_CRYPT_HMAC(NULL, NULL, hashAlgo, key, keyLen, in, inLen, out, outLen);
94 }
95
CRYPT_DEFAULT_DigestSize(HITLS_HashAlgo hashAlgo)96 uint32_t CRYPT_DEFAULT_DigestSize(HITLS_HashAlgo hashAlgo)
97 {
98 return HITLS_CRYPT_DigestSize(hashAlgo);
99 }
100
CRYPT_DEFAULT_DigestInit(HITLS_HashAlgo hashAlgo)101 HITLS_HASH_Ctx *CRYPT_DEFAULT_DigestInit(HITLS_HashAlgo hashAlgo)
102 {
103 return HITLS_CRYPT_DigestInit(NULL, NULL, hashAlgo);
104 }
105
CRYPT_DEFAULT_DigestCopy(HITLS_HASH_Ctx * ctx)106 HITLS_HASH_Ctx *CRYPT_DEFAULT_DigestCopy(HITLS_HASH_Ctx *ctx)
107 {
108 return HITLS_CRYPT_DigestCopy(ctx);
109 }
110
CRYPT_DEFAULT_DigestFree(HITLS_HASH_Ctx * ctx)111 void CRYPT_DEFAULT_DigestFree(HITLS_HASH_Ctx *ctx)
112 {
113 HITLS_CRYPT_DigestFree(ctx);
114 }
115
CRYPT_DEFAULT_DigestUpdate(HITLS_HASH_Ctx * ctx,const uint8_t * data,uint32_t len)116 int32_t CRYPT_DEFAULT_DigestUpdate(HITLS_HASH_Ctx *ctx, const uint8_t *data, uint32_t len)
117 {
118 return HITLS_CRYPT_DigestUpdate(ctx, data, len);
119 }
120
CRYPT_DEFAULT_DigestFinal(HITLS_HASH_Ctx * ctx,uint8_t * out,uint32_t * len)121 int32_t CRYPT_DEFAULT_DigestFinal(HITLS_HASH_Ctx *ctx, uint8_t *out, uint32_t *len)
122 {
123 return HITLS_CRYPT_DigestFinal(ctx, out, len);
124 }
125
CRYPT_DEFAULT_Digest(HITLS_HashAlgo hashAlgo,const uint8_t * in,uint32_t inLen,uint8_t * out,uint32_t * outLen)126 int32_t CRYPT_DEFAULT_Digest(HITLS_HashAlgo hashAlgo, const uint8_t *in, uint32_t inLen,
127 uint8_t *out, uint32_t *outLen)
128 {
129 return HITLS_CRYPT_Digest(NULL, NULL, hashAlgo, in, inLen, out, outLen);
130 }
131
CRYPT_DEFAULT_Encrypt(const HITLS_CipherParameters * cipher,const uint8_t * in,uint32_t inLen,uint8_t * out,uint32_t * outLen)132 int32_t CRYPT_DEFAULT_Encrypt(const HITLS_CipherParameters *cipher, const uint8_t *in, uint32_t inLen,
133 uint8_t *out, uint32_t *outLen)
134 {
135 return HITLS_CRYPT_Encrypt(NULL, NULL, cipher, in, inLen, out, outLen);
136 }
137
138
CRYPT_DEFAULT_Decrypt(const HITLS_CipherParameters * cipher,const uint8_t * in,uint32_t inLen,uint8_t * out,uint32_t * outLen)139 int32_t CRYPT_DEFAULT_Decrypt(const HITLS_CipherParameters *cipher, const uint8_t *in, uint32_t inLen,
140 uint8_t *out, uint32_t *outLen)
141 {
142 return HITLS_CRYPT_Decrypt(NULL, NULL, cipher, in, inLen, out, outLen);
143 }
144
CRYPT_DEFAULT_CipherFree(HITLS_Cipher_Ctx * ctx)145 void CRYPT_DEFAULT_CipherFree(HITLS_Cipher_Ctx *ctx)
146 {
147 HITLS_CRYPT_CipherFree(ctx);
148 }
149
CRYPT_DEFAULT_GenerateEcdhKey(const HITLS_ECParameters * curveParams)150 HITLS_CRYPT_Key *CRYPT_DEFAULT_GenerateEcdhKey(const HITLS_ECParameters *curveParams)
151 {
152 return HITLS_CRYPT_GenerateEcdhKey(NULL, NULL, NULL, curveParams);
153 }
154
155 #ifdef HITLS_TLS_CONFIG_MANUAL_DH
CRYPT_DEFAULT_DupKey(HITLS_CRYPT_Key * key)156 HITLS_CRYPT_Key *CRYPT_DEFAULT_DupKey(HITLS_CRYPT_Key *key)
157 {
158 return HITLS_CRYPT_DupKey(key);
159 }
160 #endif /* HITLS_TLS_CONFIG_MANUAL_DH */
161
CRYPT_DEFAULT_FreeKey(HITLS_CRYPT_Key * key)162 void CRYPT_DEFAULT_FreeKey(HITLS_CRYPT_Key *key)
163 {
164 HITLS_CRYPT_FreeKey(key);
165 }
166
CRYPT_DEFAULT_GetPubKey(HITLS_CRYPT_Key * key,uint8_t * pubKeyBuf,uint32_t bufLen,uint32_t * pubKeyLen)167 int32_t CRYPT_DEFAULT_GetPubKey(HITLS_CRYPT_Key *key, uint8_t *pubKeyBuf, uint32_t bufLen, uint32_t *pubKeyLen)
168 {
169 return HITLS_CRYPT_GetPubKey(key, pubKeyBuf, bufLen, pubKeyLen);
170 }
171
172 #ifdef HITLS_TLS_PROTO_TLCP11
CRYPT_DEFAULT_CalcSM2SharedSecret(HITLS_Sm2GenShareKeyParameters * sm2Params,uint8_t * sharedSecret,uint32_t * sharedSecretLen)173 int32_t CRYPT_DEFAULT_CalcSM2SharedSecret(HITLS_Sm2GenShareKeyParameters *sm2Params, uint8_t *sharedSecret,
174 uint32_t *sharedSecretLen)
175 {
176 return HITLS_CRYPT_CalcSM2SharedSecret(NULL, NULL, sm2Params, sharedSecret, sharedSecretLen);
177 }
178 #endif /* HITLS_TLS_PROTO_TLCP11 */
179
CRYPT_DEFAULT_DhCalcSharedSecret(HITLS_CRYPT_Key * key,uint8_t * peerPubkey,uint32_t pubKeyLen,uint8_t * sharedSecret,uint32_t * sharedSecretLen)180 int32_t CRYPT_DEFAULT_DhCalcSharedSecret(HITLS_CRYPT_Key *key, uint8_t *peerPubkey, uint32_t pubKeyLen,
181 uint8_t *sharedSecret, uint32_t *sharedSecretLen)
182 {
183 return HITLS_CRYPT_DhCalcSharedSecret(NULL, NULL, key, peerPubkey, pubKeyLen, sharedSecret, sharedSecretLen);
184 }
185
CRYPT_DEFAULT_EcdhCalcSharedSecret(HITLS_CRYPT_Key * key,uint8_t * peerPubkey,uint32_t pubKeyLen,uint8_t * sharedSecret,uint32_t * sharedSecretLen)186 int32_t CRYPT_DEFAULT_EcdhCalcSharedSecret(HITLS_CRYPT_Key *key, uint8_t *peerPubkey, uint32_t pubKeyLen,
187 uint8_t *sharedSecret, uint32_t *sharedSecretLen)
188 {
189 return HITLS_CRYPT_EcdhCalcSharedSecret(NULL, NULL, key, peerPubkey, pubKeyLen, sharedSecret, sharedSecretLen);
190 }
191
192 #ifdef HITLS_TLS_SUITE_KX_DHE
193
CRYPT_DEFAULT_GenerateDhKeyBySecbits(int32_t secbits)194 HITLS_CRYPT_Key *CRYPT_DEFAULT_GenerateDhKeyBySecbits(int32_t secbits)
195 {
196 return HITLS_CRYPT_GenerateDhKeyBySecbits(NULL, NULL, NULL, secbits);
197 }
198
CRYPT_DEFAULT_GenerateDhKeyByParameters(uint8_t * p,uint16_t pLen,uint8_t * g,uint16_t gLen)199 HITLS_CRYPT_Key *CRYPT_DEFAULT_GenerateDhKeyByParameters(uint8_t *p, uint16_t pLen, uint8_t *g, uint16_t gLen)
200 {
201 return HITLS_CRYPT_GenerateDhKeyByParameters(NULL, NULL, p, pLen, g, gLen);
202 }
203
CRYPT_DEFAULT_GetDhParameters(HITLS_CRYPT_Key * key,uint8_t * p,uint16_t * pLen,uint8_t * g,uint16_t * gLen)204 int32_t CRYPT_DEFAULT_GetDhParameters(HITLS_CRYPT_Key *key, uint8_t *p, uint16_t *pLen, uint8_t *g, uint16_t *gLen)
205 {
206 return HITLS_CRYPT_GetDhParameters(key, p, pLen, g, gLen);
207 }
208 #endif /* HITLS_TLS_SUITE_KX_DHE */
209
CRYPT_DEFAULT_HkdfExtract(const HITLS_CRYPT_HkdfExtractInput * input,uint8_t * prk,uint32_t * prkLen)210 int32_t CRYPT_DEFAULT_HkdfExtract(const HITLS_CRYPT_HkdfExtractInput *input, uint8_t *prk, uint32_t *prkLen)
211 {
212 return HITLS_CRYPT_HkdfExtract(NULL, NULL, input, prk, prkLen);
213 }
214
CRYPT_DEFAULT_HkdfExpand(const HITLS_CRYPT_HkdfExpandInput * input,uint8_t * okm,uint32_t okmLen)215 int32_t CRYPT_DEFAULT_HkdfExpand(const HITLS_CRYPT_HkdfExpandInput *input, uint8_t *okm, uint32_t okmLen)
216 {
217 return HITLS_CRYPT_HkdfExpand(NULL, NULL, input, okm, okmLen);
218 }
219
220 #ifdef HITLS_TLS_FEATURE_KEM
CRYPT_DEFAULT_KemEncapsulate(HITLS_KemEncapsulateParams * params)221 int32_t CRYPT_DEFAULT_KemEncapsulate(HITLS_KemEncapsulateParams *params)
222 {
223 return HITLS_CRYPT_KemEncapsulate(NULL, NULL, NULL, params);
224 }
225
CRYPT_DEFAULT_KemDecapsulate(HITLS_CRYPT_Key * key,const uint8_t * ciphertext,uint32_t ciphertextLen,uint8_t * sharedSecret,uint32_t * sharedSecretLen)226 int32_t CRYPT_DEFAULT_KemDecapsulate(HITLS_CRYPT_Key *key, const uint8_t *ciphertext, uint32_t ciphertextLen,
227 uint8_t *sharedSecret, uint32_t *sharedSecretLen)
228 {
229 return HITLS_CRYPT_KemDecapsulate(key, ciphertext, ciphertextLen, sharedSecret, sharedSecretLen);
230 }
231 #endif /* HITLS_TLS_FEATURE_KEM */
232
233 #endif /* HITLS_TLS_CALLBACK_CRYPT */
234