• 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 #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