1 /*
2  * Copyright (C) 2023-2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *    http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "openssl_adapter.h"
17 #include <openssl/param_build.h>
18 #include "log.h"
19 #include "result.h"
20 
21 ASN1_SEQUENCE(Sm2CipherText) = {
22     ASN1_SIMPLE(Sm2CipherText, c1X, BIGNUM),
23     ASN1_SIMPLE(Sm2CipherText, c1Y, BIGNUM),
24     ASN1_SIMPLE(Sm2CipherText, c3, ASN1_OCTET_STRING),
25     ASN1_SIMPLE(Sm2CipherText, c2, ASN1_OCTET_STRING),
26 } ASN1_SEQUENCE_END(Sm2CipherText)
27 
28 IMPLEMENT_ASN1_FUNCTIONS(Sm2CipherText)
29 
30 BIGNUM *OpensslBnDup(const BIGNUM *a)
31 {
32     return BN_dup(a);
33 }
34 
OpensslBnClear(BIGNUM * a)35 void OpensslBnClear(BIGNUM *a)
36 {
37     BN_clear(a);
38 }
39 
OpensslBnClearFree(BIGNUM * a)40 void OpensslBnClearFree(BIGNUM *a)
41 {
42     BN_clear_free(a);
43 }
44 
OpensslBnNew(void)45 BIGNUM *OpensslBnNew(void)
46 {
47     return BN_new();
48 }
49 
OpensslBnFree(BIGNUM * a)50 void OpensslBnFree(BIGNUM *a)
51 {
52     BN_free(a);
53 }
54 
OpensslBin2Bn(const unsigned char * s,int len,BIGNUM * ret)55 BIGNUM *OpensslBin2Bn(const unsigned char *s, int len, BIGNUM *ret)
56 {
57     return BN_bin2bn(s, len, ret);
58 }
59 
OpensslLeBin2Bn(const unsigned char * s,int len,BIGNUM * ret)60 BIGNUM *OpensslLeBin2Bn(const unsigned char *s, int len, BIGNUM *ret)
61 {
62     return BN_lebin2bn(s, len, ret);
63 }
64 
OpensslBn2BinPad(const BIGNUM * a,unsigned char * to,int toLen)65 int OpensslBn2BinPad(const BIGNUM *a, unsigned char *to, int toLen)
66 {
67     return BN_bn2binpad(a, to, toLen);
68 }
69 
OpensslBn2LeBinPad(const BIGNUM * a,unsigned char * to,int toLen)70 int OpensslBn2LeBinPad(const BIGNUM *a, unsigned char *to, int toLen)
71 {
72     return BN_bn2lebinpad(a, to, toLen);
73 }
74 
OpensslBnCtxNew(void)75 BN_CTX *OpensslBnCtxNew(void)
76 {
77     return BN_CTX_new();
78 }
79 
OpensslBnCtxFree(BN_CTX * ctx)80 void OpensslBnCtxFree(BN_CTX *ctx)
81 {
82     BN_CTX_free(ctx);
83 }
84 
OpensslBnNumBytes(const BIGNUM * a)85 int OpensslBnNumBytes(const BIGNUM *a)
86 {
87     return BN_num_bytes(a);
88 }
89 
OpensslBnSetWord(BIGNUM * a,unsigned int w)90 int OpensslBnSetWord(BIGNUM *a, unsigned int w)
91 {
92     return BN_set_word(a, w);
93 }
94 
OpensslBnGetWord(const BIGNUM * a)95 unsigned int OpensslBnGetWord(const BIGNUM *a)
96 {
97     return BN_get_word(a);
98 }
99 
OpensslBnNumBits(const BIGNUM * a)100 int OpensslBnNumBits(const BIGNUM *a)
101 {
102     return BN_num_bits(a);
103 }
104 
OpensslHex2Bn(BIGNUM ** a,const char * str)105 int OpensslHex2Bn(BIGNUM **a, const char *str)
106 {
107     return BN_hex2bn(a, str);
108 }
109 
OpensslBnCmp(const BIGNUM * a,const BIGNUM * b)110 int OpensslBnCmp(const BIGNUM *a, const BIGNUM *b)
111 {
112     return BN_cmp(a, b);
113 }
114 
OpensslEcKeyNewByCurveName(int nid)115 EC_KEY *OpensslEcKeyNewByCurveName(int nid)
116 {
117     return EC_KEY_new_by_curve_name(nid);
118 }
119 
OpensslEcPointDup(const EC_POINT * src,const EC_GROUP * group)120 EC_POINT *OpensslEcPointDup(const EC_POINT *src, const EC_GROUP *group)
121 {
122     return EC_POINT_dup(src, group);
123 }
124 
OpensslEcKeyGenerateKey(EC_KEY * ecKey)125 int OpensslEcKeyGenerateKey(EC_KEY *ecKey)
126 {
127     return EC_KEY_generate_key(ecKey);
128 }
129 
OpensslEcKeySetPublicKey(EC_KEY * key,const EC_POINT * pub)130 int OpensslEcKeySetPublicKey(EC_KEY *key, const EC_POINT *pub)
131 {
132     return EC_KEY_set_public_key(key, pub);
133 }
134 
OpensslEcKeySetPrivateKey(EC_KEY * key,const BIGNUM * privKey)135 int OpensslEcKeySetPrivateKey(EC_KEY *key, const BIGNUM *privKey)
136 {
137     return EC_KEY_set_private_key(key, privKey);
138 }
139 
OpensslEcKeyCheckKey(const EC_KEY * key)140 int OpensslEcKeyCheckKey(const EC_KEY *key)
141 {
142     return EC_KEY_check_key(key);
143 }
144 
OpensslEcKeyGet0PublicKey(const EC_KEY * key)145 const EC_POINT *OpensslEcKeyGet0PublicKey(const EC_KEY *key)
146 {
147     return EC_KEY_get0_public_key(key);
148 }
149 
OpensslEcKeyGet0PrivateKey(const EC_KEY * key)150 const BIGNUM *OpensslEcKeyGet0PrivateKey(const EC_KEY *key)
151 {
152     return EC_KEY_get0_private_key(key);
153 }
154 
OpensslEcKeyGet0Group(const EC_KEY * key)155 const EC_GROUP *OpensslEcKeyGet0Group(const EC_KEY *key)
156 {
157     return EC_KEY_get0_group(key);
158 }
159 
OpensslI2dEcPubKey(EC_KEY * a,unsigned char ** pp)160 int OpensslI2dEcPubKey(EC_KEY *a, unsigned char **pp)
161 {
162     return i2d_EC_PUBKEY(a, pp);
163 }
164 
OpensslI2dEcPrivateKey(EC_KEY * key,unsigned char ** out)165 int OpensslI2dEcPrivateKey(EC_KEY *key, unsigned char **out)
166 {
167     return i2d_ECPrivateKey(key, out);
168 }
169 
OpensslD2iEcPubKey(EC_KEY ** a,const unsigned char ** pp,long length)170 EC_KEY *OpensslD2iEcPubKey(EC_KEY **a, const unsigned char **pp, long length)
171 {
172     return d2i_EC_PUBKEY(a, pp, length);
173 }
174 
OpensslD2iEcPrivateKey(EC_KEY ** key,const unsigned char ** in,long len)175 EC_KEY *OpensslD2iEcPrivateKey(EC_KEY **key, const unsigned char **in, long len)
176 {
177     return d2i_ECPrivateKey(key, in, len);
178 }
179 
OpensslEcKeySetAsn1Flag(EC_KEY * key,int flag)180 void OpensslEcKeySetAsn1Flag(EC_KEY *key, int flag)
181 {
182     EC_KEY_set_asn1_flag(key, flag);
183 }
184 
OpensslEcKeySetEncFlags(EC_KEY * ecKey,unsigned int flags)185 void OpensslEcKeySetEncFlags(EC_KEY *ecKey, unsigned int flags)
186 {
187     EC_KEY_set_enc_flags(ecKey, flags);
188 }
189 
OpensslEcKeyFree(EC_KEY * key)190 void OpensslEcKeyFree(EC_KEY *key)
191 {
192     EC_KEY_free(key);
193 }
194 
OpensslEcPointFree(EC_POINT * point)195 void OpensslEcPointFree(EC_POINT *point)
196 {
197     EC_POINT_free(point);
198 }
199 
OpensslEcGroupNewCurveGfp(const BIGNUM * p,const BIGNUM * a,const BIGNUM * b,BN_CTX * ctx)200 EC_GROUP *OpensslEcGroupNewCurveGfp(const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx)
201 {
202     return EC_GROUP_new_curve_GFp(p, a, b, ctx);
203 }
204 
OpensslEcGroupFree(EC_GROUP * group)205 void OpensslEcGroupFree(EC_GROUP *group)
206 {
207     EC_GROUP_free(group);
208 }
209 
OpensslEcPointNew(const EC_GROUP * group)210 EC_POINT *OpensslEcPointNew(const EC_GROUP *group)
211 {
212     return EC_POINT_new(group);
213 }
214 
OpensslEcPointCopy(EC_POINT * dst,const EC_POINT * src)215 int OpensslEcPointCopy(EC_POINT *dst, const EC_POINT *src)
216 {
217     return EC_POINT_copy(dst, src);
218 }
219 
OpensslEcPointSetAffineCoordinatesGfp(const EC_GROUP * group,EC_POINT * point,const BIGNUM * x,const BIGNUM * y,BN_CTX * ctx)220 int OpensslEcPointSetAffineCoordinatesGfp(const EC_GROUP *group, EC_POINT *point, const BIGNUM *x,
221     const BIGNUM *y, BN_CTX *ctx)
222 {
223     return EC_POINT_set_affine_coordinates_GFp(group, point, x, y, ctx);
224 }
225 
OpensslEcGroupSetGenerator(EC_GROUP * group,const EC_POINT * generator,const BIGNUM * order,const BIGNUM * cofactor)226 int OpensslEcGroupSetGenerator(EC_GROUP *group, const EC_POINT *generator, const BIGNUM *order,
227     const BIGNUM *cofactor)
228 {
229     return EC_GROUP_set_generator(group, generator, order, cofactor);
230 }
231 
OpensslEcKeyNew(void)232 EC_KEY *OpensslEcKeyNew(void)
233 {
234     return EC_KEY_new();
235 }
236 
OpensslEcKeyDup(const EC_KEY * ecKey)237 EC_KEY *OpensslEcKeyDup(const EC_KEY *ecKey)
238 {
239     return EC_KEY_dup(ecKey);
240 }
241 
OpensslEcKeySetGroup(EC_KEY * key,const EC_GROUP * group)242 int OpensslEcKeySetGroup(EC_KEY *key, const EC_GROUP *group)
243 {
244     return EC_KEY_set_group(key, group);
245 }
246 
OpensslEcGroupGetCurveGfp(const EC_GROUP * group,BIGNUM * p,BIGNUM * a,BIGNUM * b,BN_CTX * ctx)247 int OpensslEcGroupGetCurveGfp(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, BN_CTX *ctx)
248 {
249     return EC_GROUP_get_curve_GFp(group, p, a, b, ctx);
250 }
251 
OpensslEcGroupGet0Generator(const EC_GROUP * group)252 const EC_POINT *OpensslEcGroupGet0Generator(const EC_GROUP *group)
253 {
254     return EC_GROUP_get0_generator(group);
255 }
256 
OpensslEcPointGetAffineCoordinatesGfp(const EC_GROUP * group,const EC_POINT * point,BIGNUM * x,BIGNUM * y,BN_CTX * ctx)257 int OpensslEcPointGetAffineCoordinatesGfp(const EC_GROUP *group, const EC_POINT *point, BIGNUM *x,
258     BIGNUM *y, BN_CTX *ctx)
259 {
260     return EC_POINT_get_affine_coordinates_GFp(group, point, x, y, ctx);
261 }
262 
OpensslEcGroupGetOrder(const EC_GROUP * group,BIGNUM * order,BN_CTX * ctx)263 int OpensslEcGroupGetOrder(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx)
264 {
265     return EC_GROUP_get_order(group, order, ctx);
266 }
267 
OpensslEcGroupGetCofactor(const EC_GROUP * group,BIGNUM * cofactor,BN_CTX * ctx)268 int OpensslEcGroupGetCofactor(const EC_GROUP *group, BIGNUM *cofactor, BN_CTX *ctx)
269 {
270     return EC_GROUP_get_cofactor(group, cofactor, ctx);
271 }
272 
OpensslEcGroupGetDegree(const EC_GROUP * group)273 int OpensslEcGroupGetDegree(const EC_GROUP *group)
274 {
275     return EC_GROUP_get_degree(group);
276 }
277 
OpensslEcGroupDup(const EC_GROUP * a)278 EC_GROUP *OpensslEcGroupDup(const EC_GROUP *a)
279 {
280     return EC_GROUP_dup(a);
281 }
282 
OpensslEcGroupSetCurveName(EC_GROUP * group,int nid)283 void OpensslEcGroupSetCurveName(EC_GROUP *group, int nid)
284 {
285     EC_GROUP_set_curve_name(group, nid);
286 }
287 
OpensslEcGroupGetCurveName(const EC_GROUP * group)288 int OpensslEcGroupGetCurveName(const EC_GROUP *group)
289 {
290     return EC_GROUP_get_curve_name(group);
291 }
292 
OpensslEcPointMul(const EC_GROUP * group,EC_POINT * r,const BIGNUM * gScalar,const EC_POINT * point,const BIGNUM * pScalar,BN_CTX * ctx)293 int OpensslEcPointMul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *gScalar, const EC_POINT *point,
294     const BIGNUM *pScalar, BN_CTX *ctx)
295 {
296     return EC_POINT_mul(group, r, gScalar, point, pScalar, ctx);
297 }
298 
OpensslEvpMdCtxNew(void)299 EVP_MD_CTX *OpensslEvpMdCtxNew(void)
300 {
301     return EVP_MD_CTX_new();
302 }
303 
OpensslEvpMdCtxFree(EVP_MD_CTX * ctx)304 void OpensslEvpMdCtxFree(EVP_MD_CTX *ctx)
305 {
306     EVP_MD_CTX_free(ctx);
307 }
308 
OpensslEvpMdCtxSetPkeyCtx(EVP_MD_CTX * ctx,EVP_PKEY_CTX * pctx)309 void OpensslEvpMdCtxSetPkeyCtx(EVP_MD_CTX *ctx, EVP_PKEY_CTX *pctx)
310 {
311     EVP_MD_CTX_set_pkey_ctx(ctx, pctx);
312 }
313 
OpensslEvpMdCtxGetPkeyCtx(EVP_MD_CTX * ctx)314 EVP_PKEY_CTX *OpensslEvpMdCtxGetPkeyCtx(EVP_MD_CTX *ctx)
315 {
316     return EVP_MD_CTX_get_pkey_ctx(ctx);
317 }
318 
OpensslEvpDigestSignInit(EVP_MD_CTX * ctx,EVP_PKEY_CTX ** pctx,const EVP_MD * type,ENGINE * e,EVP_PKEY * pkey)319 int OpensslEvpDigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey)
320 {
321     return EVP_DigestSignInit(ctx, pctx, type, e, pkey);
322 }
323 
OpensslEvpDigestSignUpdate(EVP_MD_CTX * ctx,const void * data,size_t count)324 int OpensslEvpDigestSignUpdate(EVP_MD_CTX *ctx, const void *data, size_t count)
325 {
326     return EVP_DigestSignUpdate(ctx, data, count);
327 }
328 
OpensslEvpDigestSignFinal(EVP_MD_CTX * ctx,unsigned char * sigret,size_t * siglen)329 int OpensslEvpDigestSignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, size_t *siglen)
330 {
331     return EVP_DigestSignFinal(ctx, sigret, siglen);
332 }
333 
OpensslEvpDigestSign(EVP_MD_CTX * ctx,unsigned char * sig,size_t * siglen,const unsigned char * tbs,size_t tbslen)334 int OpensslEvpDigestSign(EVP_MD_CTX *ctx, unsigned char *sig, size_t *siglen, const unsigned char *tbs, size_t tbslen)
335 {
336     return EVP_DigestSign(ctx, sig, siglen, tbs, tbslen);
337 }
338 
OpensslEvpDigestVerifyInit(EVP_MD_CTX * ctx,EVP_PKEY_CTX ** pctx,const EVP_MD * type,ENGINE * e,EVP_PKEY * pkey)339 int OpensslEvpDigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey)
340 {
341     return EVP_DigestVerifyInit(ctx, pctx, type, e, pkey);
342 }
343 
OpensslEvpDigestVerifyUpdate(EVP_MD_CTX * ctx,const void * data,size_t count)344 int OpensslEvpDigestVerifyUpdate(EVP_MD_CTX *ctx, const void *data, size_t count)
345 {
346     return EVP_DigestVerifyUpdate(ctx, data, count);
347 }
348 
OpensslEvpDigestVerifyFinal(EVP_MD_CTX * ctx,const unsigned char * sig,size_t siglen)349 int OpensslEvpDigestVerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sig, size_t siglen)
350 {
351     return EVP_DigestVerifyFinal(ctx, sig, siglen);
352 }
353 
OpensslEvpDigestVerify(EVP_MD_CTX * ctx,unsigned char * sig,size_t siglen,const unsigned char * tbs,size_t tbslen)354 int OpensslEvpDigestVerify(EVP_MD_CTX *ctx, unsigned char *sig, size_t siglen,
355     const unsigned char *tbs, size_t tbslen)
356 {
357     return EVP_DigestVerify(ctx, sig, siglen, tbs, tbslen);
358 }
359 
OpensslEvpPkeySignInit(EVP_PKEY_CTX * ctx)360 int OpensslEvpPkeySignInit(EVP_PKEY_CTX *ctx)
361 {
362     return EVP_PKEY_sign_init(ctx);
363 }
364 
OpensslEvpPkeySign(EVP_PKEY_CTX * ctx,unsigned char * sig,size_t * siglen,const unsigned char * tbs,size_t tbslen)365 int OpensslEvpPkeySign(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, const unsigned char *tbs,
366     size_t tbslen)
367 {
368     return EVP_PKEY_sign(ctx, sig, siglen, tbs, tbslen);
369 }
370 
OpensslEvpPkeyVerifyInit(EVP_PKEY_CTX * ctx)371 int OpensslEvpPkeyVerifyInit(EVP_PKEY_CTX *ctx)
372 {
373     return EVP_PKEY_verify_init(ctx);
374 }
375 
OpensslEvpPkeyVerify(EVP_PKEY_CTX * ctx,const unsigned char * sig,size_t siglen,const unsigned char * tbs,size_t tbslen)376 int OpensslEvpPkeyVerify(EVP_PKEY_CTX *ctx, const unsigned char *sig, size_t siglen, const unsigned char *tbs,
377     size_t tbslen)
378 {
379     return EVP_PKEY_verify(ctx, sig, siglen, tbs, tbslen);
380 }
381 
OpensslEvpPkeyCtxNewFromPkey(OSSL_LIB_CTX * libctx,EVP_PKEY * pkey,const char * propquery)382 EVP_PKEY_CTX *OpensslEvpPkeyCtxNewFromPkey(OSSL_LIB_CTX *libctx,
383     EVP_PKEY *pkey, const char *propquery)
384 {
385     return EVP_PKEY_CTX_new_from_pkey(libctx, pkey, propquery);
386 }
387 
OpensslEvpPkeyNew(void)388 EVP_PKEY *OpensslEvpPkeyNew(void)
389 {
390     return EVP_PKEY_new();
391 }
392 
OpensslEvpPkeyNewRawPublicKey(int type,ENGINE * e,const unsigned char * pub,size_t len)393 EVP_PKEY *OpensslEvpPkeyNewRawPublicKey(int type, ENGINE *e, const unsigned char *pub, size_t len)
394 {
395     return EVP_PKEY_new_raw_public_key(type, e, pub, len);
396 }
397 
OpensslEvpPkeyNewRawPrivateKey(int type,ENGINE * e,const unsigned char * pub,size_t len)398 EVP_PKEY *OpensslEvpPkeyNewRawPrivateKey(int type, ENGINE *e, const unsigned char *pub, size_t len)
399 {
400     return EVP_PKEY_new_raw_private_key(type, e, pub, len);
401 }
402 
OpensslEvpPkeyGetRawPublicKey(const EVP_PKEY * pkey,unsigned char * pub,size_t * len)403 int OpensslEvpPkeyGetRawPublicKey(const EVP_PKEY *pkey, unsigned char *pub, size_t *len)
404 {
405     return EVP_PKEY_get_raw_public_key(pkey, pub, len);
406 }
407 
OpensslEvpPkeyGetRawPrivateKey(const EVP_PKEY * pkey,unsigned char * priv,size_t * len)408 int OpensslEvpPkeyGetRawPrivateKey(const EVP_PKEY *pkey, unsigned char *priv, size_t *len)
409 {
410     return EVP_PKEY_get_raw_private_key(pkey, priv, len);
411 }
412 
OpensslEvpPkeyAssignEcKey(EVP_PKEY * pkey,EC_KEY * key)413 int OpensslEvpPkeyAssignEcKey(EVP_PKEY *pkey, EC_KEY *key)
414 {
415     return EVP_PKEY_assign_EC_KEY(pkey, key);
416 }
417 
OpensslEvpPkeySet1EcKey(EVP_PKEY * pkey,EC_KEY * key)418 int OpensslEvpPkeySet1EcKey(EVP_PKEY *pkey, EC_KEY *key)
419 {
420     return EVP_PKEY_set1_EC_KEY(pkey, key);
421 }
422 
OpensslEvpPkeyFree(EVP_PKEY * pkey)423 void OpensslEvpPkeyFree(EVP_PKEY *pkey)
424 {
425     EVP_PKEY_free(pkey);
426 }
427 
OpensslEvpPkeyCtxNew(EVP_PKEY * pkey,ENGINE * e)428 EVP_PKEY_CTX *OpensslEvpPkeyCtxNew(EVP_PKEY *pkey, ENGINE *e)
429 {
430     return EVP_PKEY_CTX_new(pkey, e);
431 }
432 
OpensslEvpPkeyDeriveInit(EVP_PKEY_CTX * ctx)433 int OpensslEvpPkeyDeriveInit(EVP_PKEY_CTX *ctx)
434 {
435     return EVP_PKEY_derive_init(ctx);
436 }
437 
OpensslEvpPkeyDeriveSetPeer(EVP_PKEY_CTX * ctx,EVP_PKEY * peer)438 int OpensslEvpPkeyDeriveSetPeer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer)
439 {
440     return EVP_PKEY_derive_set_peer(ctx, peer);
441 }
442 
OpensslEvpPkeyDerive(EVP_PKEY_CTX * ctx,unsigned char * key,size_t * keylen)443 int OpensslEvpPkeyDerive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen)
444 {
445     return EVP_PKEY_derive(ctx, key, keylen);
446 }
447 
OpensslEvpPkeyCtxFree(EVP_PKEY_CTX * ctx)448 void OpensslEvpPkeyCtxFree(EVP_PKEY_CTX *ctx)
449 {
450     EVP_PKEY_CTX_free(ctx);
451 }
452 
OpensslEvpPkeyEncrypt(EVP_PKEY_CTX * ctx,unsigned char * out,size_t * outlen,const unsigned char * in,size_t inlen)453 int OpensslEvpPkeyEncrypt(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen,
454     const unsigned char *in, size_t inlen)
455 {
456     return EVP_PKEY_encrypt(ctx, out, outlen, in, inlen);
457 }
458 
OpensslEvpPkeyDecrypt(EVP_PKEY_CTX * ctx,unsigned char * out,size_t * outlen,const unsigned char * in,size_t inlen)459 int OpensslEvpPkeyDecrypt(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen,
460     const unsigned char *in, size_t inlen)
461 {
462     return EVP_PKEY_decrypt(ctx, out, outlen, in, inlen);
463 }
464 
OpensslEvpPkeyEncryptInit(EVP_PKEY_CTX * ctx)465 int OpensslEvpPkeyEncryptInit(EVP_PKEY_CTX *ctx)
466 {
467     return EVP_PKEY_encrypt_init(ctx);
468 }
469 
OpensslEvpPkeyDecryptInit(EVP_PKEY_CTX * ctx)470 int OpensslEvpPkeyDecryptInit(EVP_PKEY_CTX *ctx)
471 {
472     return EVP_PKEY_decrypt_init(ctx);
473 }
474 
OpensslEvpPkeyCtxNewId(int id,ENGINE * e)475 EVP_PKEY_CTX *OpensslEvpPkeyCtxNewId(int id, ENGINE *e)
476 {
477     return EVP_PKEY_CTX_new_id(id, e);
478 }
479 
OpensslEvpPkeyBaseId(EVP_PKEY * pkey)480 int OpensslEvpPkeyBaseId(EVP_PKEY *pkey)
481 {
482     return EVP_PKEY_base_id(pkey);
483 }
484 
OpensslEvpPkeyCtxNewFromName(OSSL_LIB_CTX * libctx,const char * name,const char * propquery)485 EVP_PKEY_CTX *OpensslEvpPkeyCtxNewFromName(OSSL_LIB_CTX *libctx, const char *name, const char *propquery)
486 {
487     return EVP_PKEY_CTX_new_from_name(libctx, name, propquery);
488 }
489 
OpensslEvpPkeyVerifyRecoverInit(EVP_PKEY_CTX * ctx)490 int OpensslEvpPkeyVerifyRecoverInit(EVP_PKEY_CTX *ctx)
491 {
492     return EVP_PKEY_verify_recover_init(ctx);
493 }
494 
OpensslEvpPkeyVerifyRecover(EVP_PKEY_CTX * ctx,unsigned char * rout,size_t * routlen,const unsigned char * sig,size_t siglen)495 int OpensslEvpPkeyVerifyRecover(EVP_PKEY_CTX *ctx, unsigned char *rout, size_t *routlen, const unsigned char *sig,
496     size_t siglen)
497 {
498     return EVP_PKEY_verify_recover(ctx, rout, routlen, sig, siglen);
499 }
500 
OpensslOsslParamConstructUtf8String(const char * key,char * buf,size_t bsize)501 OSSL_PARAM OpensslOsslParamConstructUtf8String(const char *key, char *buf, size_t bsize)
502 {
503     return OSSL_PARAM_construct_utf8_string(key, buf, bsize);
504 }
505 
OpensslOsslParamConstructOctetString(const char * key,void * buf,size_t bsize)506 OSSL_PARAM OpensslOsslParamConstructOctetString(const char *key, void *buf, size_t bsize)
507 {
508     return OSSL_PARAM_construct_octet_string(key, buf, bsize);
509 }
510 
OpensslOsslParamConstructEnd(void)511 OSSL_PARAM OpensslOsslParamConstructEnd(void)
512 {
513     return OSSL_PARAM_construct_end();
514 }
515 
OpensslEvpPkeyGenerate(EVP_PKEY_CTX * ctx,EVP_PKEY ** ppkey)516 int OpensslEvpPkeyGenerate(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey)
517 {
518     return EVP_PKEY_generate(ctx, ppkey);
519 }
520 
OpensslOsslParamConstructUint(const char * key,unsigned int * buf)521 OSSL_PARAM OpensslOsslParamConstructUint(const char *key, unsigned int *buf)
522 {
523     return OSSL_PARAM_construct_uint(key, buf);
524 }
525 
OpensslOsslParamConstructInt(const char * key,int * buf)526 OSSL_PARAM OpensslOsslParamConstructInt(const char *key, int *buf)
527 {
528     return OSSL_PARAM_construct_int(key, buf);
529 }
530 
OpensslEvpPkeyCtxSet1Id(EVP_PKEY_CTX * ctx,const void * id,int idLen)531 int OpensslEvpPkeyCtxSet1Id(EVP_PKEY_CTX *ctx, const void *id, int idLen)
532 {
533     return EVP_PKEY_CTX_set1_id(ctx, id, idLen);
534 }
535 
OpensslEvpPkeyParamGenInit(EVP_PKEY_CTX * ctx)536 int OpensslEvpPkeyParamGenInit(EVP_PKEY_CTX *ctx)
537 {
538     return EVP_PKEY_paramgen_init(ctx);
539 }
540 
OpensslEvpPkeyCtxSetDsaParamgenBits(EVP_PKEY_CTX * ctx,int nbits)541 int OpensslEvpPkeyCtxSetDsaParamgenBits(EVP_PKEY_CTX *ctx, int nbits)
542 {
543     return EVP_PKEY_CTX_set_dsa_paramgen_bits(ctx, nbits);
544 }
545 
OpensslEvpPkeyCtxSetParams(EVP_PKEY_CTX * ctx,const OSSL_PARAM * params)546 int OpensslEvpPkeyCtxSetParams(EVP_PKEY_CTX *ctx, const OSSL_PARAM *params)
547 {
548     return EVP_PKEY_CTX_set_params(ctx, params);
549 }
550 
OpensslEvpPkeyParamGen(EVP_PKEY_CTX * ctx,EVP_PKEY ** ppkey)551 int OpensslEvpPkeyParamGen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey)
552 {
553     return EVP_PKEY_paramgen(ctx, ppkey);
554 }
555 
OpensslEvpPkeyKeyGenInit(EVP_PKEY_CTX * ctx)556 int OpensslEvpPkeyKeyGenInit(EVP_PKEY_CTX *ctx)
557 {
558     return EVP_PKEY_keygen_init(ctx);
559 }
560 
OpensslEvpPkeyKeyGen(EVP_PKEY_CTX * ctx,EVP_PKEY ** ppkey)561 int OpensslEvpPkeyKeyGen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey)
562 {
563     return EVP_PKEY_keygen(ctx, ppkey);
564 }
565 
OpensslEvpPkeySet1Dsa(EVP_PKEY * pkey,DSA * key)566 int OpensslEvpPkeySet1Dsa(EVP_PKEY *pkey, DSA *key)
567 {
568     return EVP_PKEY_set1_DSA(pkey, key);
569 }
570 
OpensslEvpPkeyGet1Dsa(EVP_PKEY * pkey)571 DSA *OpensslEvpPkeyGet1Dsa(EVP_PKEY *pkey)
572 {
573     return EVP_PKEY_get1_DSA(pkey);
574 }
575 
OpensslDsaNew(void)576 DSA *OpensslDsaNew(void)
577 {
578     return DSA_new();
579 }
580 
OpensslDsaFree(DSA * dsa)581 void OpensslDsaFree(DSA *dsa)
582 {
583     DSA_free(dsa);
584 }
585 
OpensslDsaUpRef(DSA * dsa)586 int OpensslDsaUpRef(DSA *dsa)
587 {
588     return DSA_up_ref(dsa);
589 }
590 
OpensslDsaSet0Pqg(DSA * dsa,BIGNUM * p,BIGNUM * q,BIGNUM * g)591 int OpensslDsaSet0Pqg(DSA *dsa, BIGNUM *p, BIGNUM *q, BIGNUM *g)
592 {
593     return DSA_set0_pqg(dsa, p, q, g);
594 }
595 
OpensslDsaSet0Key(DSA * dsa,BIGNUM * pubKey,BIGNUM * priKey)596 int OpensslDsaSet0Key(DSA *dsa, BIGNUM *pubKey, BIGNUM *priKey)
597 {
598     return DSA_set0_key(dsa, pubKey, priKey);
599 }
600 
OpensslDsaGet0P(const DSA * dsa)601 const BIGNUM *OpensslDsaGet0P(const DSA *dsa)
602 {
603     return DSA_get0_p(dsa);
604 }
605 
OpensslDsaGet0Q(const DSA * dsa)606 const BIGNUM *OpensslDsaGet0Q(const DSA *dsa)
607 {
608     return DSA_get0_q(dsa);
609 }
610 
OpensslDsaGet0G(const DSA * dsa)611 const BIGNUM *OpensslDsaGet0G(const DSA *dsa)
612 {
613     return DSA_get0_g(dsa);
614 }
615 
OpensslDsaGet0PubKey(const DSA * dsa)616 const BIGNUM *OpensslDsaGet0PubKey(const DSA *dsa)
617 {
618     return DSA_get0_pub_key(dsa);
619 }
620 
OpensslDsaGet0PrivKey(const DSA * dsa)621 const BIGNUM *OpensslDsaGet0PrivKey(const DSA *dsa)
622 {
623     return DSA_get0_priv_key(dsa);
624 }
625 
OpensslDsaGenerateKey(DSA * a)626 int OpensslDsaGenerateKey(DSA *a)
627 {
628     return DSA_generate_key(a);
629 }
630 
OpensslD2iDsaPubKey(DSA ** dsa,const unsigned char ** ppin,long length)631 DSA *OpensslD2iDsaPubKey(DSA **dsa, const unsigned char **ppin, long length)
632 {
633     return d2i_DSA_PUBKEY(dsa, ppin, length);
634 }
635 
OpensslD2iDsaPrivateKey(DSA ** dsa,const unsigned char ** ppin,long length)636 DSA *OpensslD2iDsaPrivateKey(DSA **dsa, const unsigned char **ppin, long length)
637 {
638     return d2i_DSAPrivateKey(dsa, ppin, length);
639 }
640 
OpensslI2dDsaPubkey(DSA * dsa,unsigned char ** ppout)641 int OpensslI2dDsaPubkey(DSA *dsa, unsigned char **ppout)
642 {
643     return i2d_DSA_PUBKEY(dsa, ppout);
644 }
645 
OpensslI2dDsaPrivateKey(DSA * dsa,unsigned char ** ppout)646 int OpensslI2dDsaPrivateKey(DSA *dsa, unsigned char **ppout)
647 {
648     return i2d_DSAPrivateKey(dsa, ppout);
649 }
650 
OpensslEvpPkeyCheck(EVP_PKEY_CTX * ctx)651 int OpensslEvpPkeyCheck(EVP_PKEY_CTX *ctx)
652 {
653     return EVP_PKEY_check(ctx);
654 }
655 
OpensslEvpPkeyDup(EVP_PKEY * a)656 EVP_PKEY *OpensslEvpPkeyDup(EVP_PKEY *a)
657 {
658     return EVP_PKEY_dup(a);
659 }
660 
OpensslD2iPubKey(EVP_PKEY ** a,const unsigned char ** pp,long length)661 EVP_PKEY *OpensslD2iPubKey(EVP_PKEY **a, const unsigned char **pp, long length)
662 {
663     return d2i_PUBKEY(a, pp, length);
664 }
665 
OpensslD2iPrivateKey(int type,EVP_PKEY ** a,const unsigned char ** pp,long length)666 EVP_PKEY *OpensslD2iPrivateKey(int type, EVP_PKEY **a, const unsigned char **pp, long length)
667 {
668     return d2i_PrivateKey(type, a, pp, length);
669 }
670 
OpensslI2dPubKey(EVP_PKEY * pkey,unsigned char ** ppout)671 int OpensslI2dPubKey(EVP_PKEY *pkey, unsigned char **ppout)
672 {
673     return i2d_PUBKEY(pkey, ppout);
674 }
675 
OpensslI2dPrivateKey(EVP_PKEY * pkey,unsigned char ** ppout)676 int OpensslI2dPrivateKey(EVP_PKEY *pkey, unsigned char **ppout)
677 {
678     return i2d_PrivateKey(pkey, ppout);
679 }
680 
OpensslRsaNew(void)681 RSA *OpensslRsaNew(void)
682 {
683     return RSA_new();
684 }
685 
OpensslRsaFree(RSA * rsa)686 void OpensslRsaFree(RSA *rsa)
687 {
688     RSA_free(rsa);
689 }
690 
OpensslRsaGenerateMultiPrimeKey(RSA * rsa,int bits,int primes,BIGNUM * e,BN_GENCB * cb)691 int OpensslRsaGenerateMultiPrimeKey(RSA *rsa, int bits, int primes,
692     BIGNUM *e, BN_GENCB *cb)
693 {
694     return RSA_generate_multi_prime_key(rsa, bits, primes, e, cb);
695 }
696 
OpensslRsaGenerateKeyEx(RSA * rsa,int bits,BIGNUM * e,BN_GENCB * cb)697 int OpensslRsaGenerateKeyEx(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb)
698 {
699     return RSA_generate_key_ex(rsa, bits, e, cb);
700 }
701 
OpensslRsaBits(const RSA * rsa)702 int OpensslRsaBits(const RSA *rsa)
703 {
704     return RSA_bits(rsa);
705 }
706 
OpensslRsaSet0Key(RSA * r,BIGNUM * n,BIGNUM * e,BIGNUM * d)707 int OpensslRsaSet0Key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d)
708 {
709     return RSA_set0_key(r, n, e, d);
710 }
711 
OpensslRsaGet0Key(const RSA * r,const BIGNUM ** n,const BIGNUM ** e,const BIGNUM ** d)712 void OpensslRsaGet0Key(const RSA *r, const BIGNUM **n, const BIGNUM **e, const BIGNUM **d)
713 {
714     RSA_get0_key(r, n, e, d);
715 }
716 
OpensslRsaGet0N(const RSA * d)717 const BIGNUM *OpensslRsaGet0N(const RSA *d)
718 {
719     return RSA_get0_n(d);
720 }
721 
OpensslRsaGet0E(const RSA * d)722 const BIGNUM *OpensslRsaGet0E(const RSA *d)
723 {
724     return RSA_get0_e(d);
725 }
726 
OpensslRsaGet0D(const RSA * d)727 const BIGNUM *OpensslRsaGet0D(const RSA *d)
728 {
729     return RSA_get0_d(d);
730 }
731 
OpensslRsaGet0Factors(const RSA * r,const BIGNUM ** p,const BIGNUM ** q)732 void OpensslRsaGet0Factors(const RSA *r, const BIGNUM **p, const BIGNUM **q)
733 {
734     RSA_get0_factors(r, p, q);
735 }
736 
OpensslRsaPublicKeyDup(RSA * rsa)737 RSA *OpensslRsaPublicKeyDup(RSA *rsa)
738 {
739     return RSAPublicKey_dup(rsa);
740 }
741 
OpensslRsaPrivateKeyDup(RSA * rsa)742 RSA *OpensslRsaPrivateKeyDup(RSA *rsa)
743 {
744     return RSAPrivateKey_dup(rsa);
745 }
746 
OpensslD2iRsaPubKey(RSA ** a,const unsigned char ** pp,long length)747 RSA *OpensslD2iRsaPubKey(RSA **a, const unsigned char **pp, long length)
748 {
749     return d2i_RSA_PUBKEY(a, pp, length);
750 }
751 
OpensslI2dRsaPubKey(RSA * a,unsigned char ** pp)752 int OpensslI2dRsaPubKey(RSA *a, unsigned char **pp)
753 {
754     return i2d_RSA_PUBKEY(a, pp);
755 }
756 
OpensslEvpPkeyCtxSetRsaPssSaltLen(EVP_PKEY_CTX * ctx,int saltlen)757 int OpensslEvpPkeyCtxSetRsaPssSaltLen(EVP_PKEY_CTX *ctx, int saltlen)
758 {
759     return EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, saltlen);
760 }
761 
OpensslEvpPkeyCtxGetRsaPssSaltLen(EVP_PKEY_CTX * ctx,int * saltlen)762 int OpensslEvpPkeyCtxGetRsaPssSaltLen(EVP_PKEY_CTX *ctx, int *saltlen)
763 {
764     return EVP_PKEY_CTX_get_rsa_pss_saltlen(ctx, saltlen);
765 }
766 
OpensslEvpPkeyCtxSetRsaPadding(EVP_PKEY_CTX * ctx,int pad)767 int OpensslEvpPkeyCtxSetRsaPadding(EVP_PKEY_CTX *ctx, int pad)
768 {
769     return EVP_PKEY_CTX_set_rsa_padding(ctx, pad);
770 }
771 
OpensslEvpPkeyCtxSetRsaMgf1Md(EVP_PKEY_CTX * ctx,const EVP_MD * md)772 int OpensslEvpPkeyCtxSetRsaMgf1Md(EVP_PKEY_CTX *ctx, const EVP_MD *md)
773 {
774     return EVP_PKEY_CTX_set_rsa_mgf1_md(ctx, md);
775 }
776 
OpensslEvpPkeyCtxSetRsaOaepMd(EVP_PKEY_CTX * ctx,const EVP_MD * md)777 int OpensslEvpPkeyCtxSetRsaOaepMd(EVP_PKEY_CTX *ctx, const EVP_MD *md)
778 {
779     return EVP_PKEY_CTX_set_rsa_oaep_md(ctx, md);
780 }
781 
OpensslEvpPkeyCtxSet0RsaOaepLabel(EVP_PKEY_CTX * ctx,void * label,int len)782 int OpensslEvpPkeyCtxSet0RsaOaepLabel(EVP_PKEY_CTX *ctx, void *label, int len)
783 {
784     return EVP_PKEY_CTX_set0_rsa_oaep_label(ctx, label, len);
785 }
786 
OpensslEvpPkeyCtxGet0RsaOaepLabel(EVP_PKEY_CTX * ctx,unsigned char ** label)787 int OpensslEvpPkeyCtxGet0RsaOaepLabel(EVP_PKEY_CTX *ctx, unsigned char **label)
788 {
789     return EVP_PKEY_CTX_get0_rsa_oaep_label(ctx, label);
790 }
791 
OpensslD2iAutoPrivateKey(EVP_PKEY ** a,const unsigned char ** pp,long length)792 EVP_PKEY *OpensslD2iAutoPrivateKey(EVP_PKEY **a, const unsigned char **pp, long length)
793 {
794     return d2i_AutoPrivateKey(a, pp, length);
795 }
796 
OpensslEvpPkeyGet1Rsa(EVP_PKEY * pkey)797 struct rsa_st *OpensslEvpPkeyGet1Rsa(EVP_PKEY *pkey)
798 {
799     return EVP_PKEY_get1_RSA(pkey);
800 }
801 
OpensslEvpPkeySet1Rsa(EVP_PKEY * pkey,struct rsa_st * key)802 int OpensslEvpPkeySet1Rsa(EVP_PKEY *pkey, struct rsa_st *key)
803 {
804     return EVP_PKEY_set1_RSA(pkey, key);
805 }
806 
OpensslEvpPkeyAssignRsa(EVP_PKEY * pkey,struct rsa_st * key)807 int OpensslEvpPkeyAssignRsa(EVP_PKEY *pkey, struct rsa_st *key)
808 {
809     return EVP_PKEY_assign_RSA(pkey, key);
810 }
811 
OpensslPemWriteBioRsaPublicKey(BIO * bp,RSA * x)812 int OpensslPemWriteBioRsaPublicKey(BIO *bp, RSA *x)
813 {
814     return PEM_write_bio_RSAPublicKey(bp, x);
815 }
816 
OpensslPemWriteBioRsaPubKey(BIO * bp,RSA * x)817 int OpensslPemWriteBioRsaPubKey(BIO *bp, RSA *x)
818 {
819     return PEM_write_bio_RSA_PUBKEY(bp, x);
820 }
821 
OpensslBioNew(const BIO_METHOD * type)822 BIO *OpensslBioNew(const BIO_METHOD *type)
823 {
824     return BIO_new(type);
825 }
826 
OpensslBioSMem(void)827 const BIO_METHOD *OpensslBioSMem(void)
828 {
829     return BIO_s_mem();
830 }
831 
OpensslBioRead(BIO * b,void * data,int dlen)832 int OpensslBioRead(BIO *b, void *data, int dlen)
833 {
834     return BIO_read(b, data, dlen);
835 }
836 
OpensslBioFreeAll(BIO * a)837 void OpensslBioFreeAll(BIO *a)
838 {
839     BIO_free_all(a);
840 }
841 
OpensslRandPrivBytes(unsigned char * buf,int num)842 int OpensslRandPrivBytes(unsigned char *buf, int num)
843 {
844     return RAND_priv_bytes(buf, num);
845 }
846 
OpensslRandSeed(const void * buf,int num)847 void OpensslRandSeed(const void *buf, int num)
848 {
849     RAND_seed(buf, num);
850 }
851 
OpensslEvpSha1(void)852 const EVP_MD *OpensslEvpSha1(void)
853 {
854     return EVP_sha1();
855 }
856 
OpensslEvpSha224(void)857 const EVP_MD *OpensslEvpSha224(void)
858 {
859     return EVP_sha224();
860 }
861 
OpensslEvpSha256(void)862 const EVP_MD *OpensslEvpSha256(void)
863 {
864     return EVP_sha256();
865 }
866 
OpensslEvpSha384(void)867 const EVP_MD *OpensslEvpSha384(void)
868 {
869     return EVP_sha384();
870 }
871 
OpensslEvpSha512(void)872 const EVP_MD *OpensslEvpSha512(void)
873 {
874     return EVP_sha512();
875 }
876 
OpensslEvpMd5(void)877 const EVP_MD *OpensslEvpMd5(void)
878 {
879     return EVP_md5();
880 }
881 
OpensslEvpSm3(void)882 const EVP_MD *OpensslEvpSm3(void)
883 {
884     return EVP_sm3();
885 }
886 
OpensslEvpDigestFinalEx(EVP_MD_CTX * ctx,unsigned char * md,unsigned int * size)887 int OpensslEvpDigestFinalEx(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *size)
888 {
889     return EVP_DigestFinal_ex(ctx, md, size);
890 }
891 
OpensslEvpMdCtxSize(const EVP_MD_CTX * ctx)892 int OpensslEvpMdCtxSize(const EVP_MD_CTX *ctx)
893 {
894     return EVP_MD_CTX_size(ctx);
895 }
896 
OpensslEvpDigestInitEx(EVP_MD_CTX * ctx,const EVP_MD * type,ENGINE * impl)897 int OpensslEvpDigestInitEx(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl)
898 {
899     return EVP_DigestInit_ex(ctx, type, impl);
900 }
901 
OpensslHmacInitEx(HMAC_CTX * ctx,const void * key,int len,const EVP_MD * md,ENGINE * impl)902 int OpensslHmacInitEx(HMAC_CTX *ctx, const void *key, int len, const EVP_MD *md, ENGINE *impl)
903 {
904     return HMAC_Init_ex(ctx, key, len, md, impl);
905 }
906 
OpensslHmacFinal(HMAC_CTX * ctx,unsigned char * md,unsigned int * len)907 int OpensslHmacFinal(HMAC_CTX *ctx, unsigned char *md, unsigned int *len)
908 {
909     return HMAC_Final(ctx, md, len);
910 }
911 
OpensslHmacSize(const HMAC_CTX * ctx)912 size_t OpensslHmacSize(const HMAC_CTX *ctx)
913 {
914     return HMAC_size(ctx);
915 }
916 
OpensslHmacCtxFree(HMAC_CTX * ctx)917 void OpensslHmacCtxFree(HMAC_CTX *ctx)
918 {
919     HMAC_CTX_free(ctx);
920 }
921 
OpensslHmacCtxNew(void)922 HMAC_CTX *OpensslHmacCtxNew(void)
923 {
924     return HMAC_CTX_new();
925 }
926 
OpensslEvpCipherCtxFree(EVP_CIPHER_CTX * ctx)927 void OpensslEvpCipherCtxFree(EVP_CIPHER_CTX *ctx)
928 {
929     EVP_CIPHER_CTX_free(ctx);
930 }
931 
OpensslEvpAes128Ecb(void)932 const EVP_CIPHER *OpensslEvpAes128Ecb(void)
933 {
934     return EVP_aes_128_ecb();
935 }
936 
OpensslEvpAes192Ecb(void)937 const EVP_CIPHER *OpensslEvpAes192Ecb(void)
938 {
939     return EVP_aes_192_ecb();
940 }
941 
OpensslEvpAes256Ecb(void)942 const EVP_CIPHER *OpensslEvpAes256Ecb(void)
943 {
944     return EVP_aes_256_ecb();
945 }
946 
OpensslEvpAes128Cbc(void)947 const EVP_CIPHER *OpensslEvpAes128Cbc(void)
948 {
949     return EVP_aes_128_cbc();
950 }
951 
OpensslEvpAes192Cbc(void)952 const EVP_CIPHER *OpensslEvpAes192Cbc(void)
953 {
954     return EVP_aes_192_cbc();
955 }
956 
OpensslEvpAes256Cbc(void)957 const EVP_CIPHER *OpensslEvpAes256Cbc(void)
958 {
959     return EVP_aes_256_cbc();
960 }
961 
OpensslEvpAes128Ctr(void)962 const EVP_CIPHER *OpensslEvpAes128Ctr(void)
963 {
964     return EVP_aes_128_ctr();
965 }
966 
OpensslEvpAes192Ctr(void)967 const EVP_CIPHER *OpensslEvpAes192Ctr(void)
968 {
969     return EVP_aes_192_ctr();
970 }
971 
OpensslEvpAes256Ctr(void)972 const EVP_CIPHER *OpensslEvpAes256Ctr(void)
973 {
974     return EVP_aes_256_ctr();
975 }
976 
OpensslEvpAes128Ofb(void)977 const EVP_CIPHER *OpensslEvpAes128Ofb(void)
978 {
979     return EVP_aes_128_ofb();
980 }
981 
OpensslEvpAes192Ofb(void)982 const EVP_CIPHER *OpensslEvpAes192Ofb(void)
983 {
984     return EVP_aes_192_ofb();
985 }
986 
OpensslEvpAes256Ofb(void)987 const EVP_CIPHER *OpensslEvpAes256Ofb(void)
988 {
989     return EVP_aes_256_ofb();
990 }
991 
OpensslEvpAes128Cfb(void)992 const EVP_CIPHER *OpensslEvpAes128Cfb(void)
993 {
994     return EVP_aes_128_cfb();
995 }
996 
OpensslEvpAes192Cfb(void)997 const EVP_CIPHER *OpensslEvpAes192Cfb(void)
998 {
999     return EVP_aes_192_cfb();
1000 }
1001 
OpensslEvpAes256Cfb(void)1002 const EVP_CIPHER *OpensslEvpAes256Cfb(void)
1003 {
1004     return EVP_aes_256_cfb();
1005 }
1006 
OpensslEvpAes128Cfb1(void)1007 const EVP_CIPHER *OpensslEvpAes128Cfb1(void)
1008 {
1009     return EVP_aes_128_cfb1();
1010 }
1011 
OpensslEvpAes192Cfb1(void)1012 const EVP_CIPHER *OpensslEvpAes192Cfb1(void)
1013 {
1014     return EVP_aes_192_cfb1();
1015 }
1016 
OpensslEvpAes256Cfb1(void)1017 const EVP_CIPHER *OpensslEvpAes256Cfb1(void)
1018 {
1019     return EVP_aes_256_cfb1();
1020 }
1021 
OpensslEvpAes128Cfb128(void)1022 const EVP_CIPHER *OpensslEvpAes128Cfb128(void)
1023 {
1024     return EVP_aes_128_cfb128();
1025 }
1026 
OpensslEvpAes192Cfb128(void)1027 const EVP_CIPHER *OpensslEvpAes192Cfb128(void)
1028 {
1029     return EVP_aes_192_cfb128();
1030 }
1031 
OpensslEvpAes256Cfb128(void)1032 const EVP_CIPHER *OpensslEvpAes256Cfb128(void)
1033 {
1034     return EVP_aes_256_cfb128();
1035 }
1036 
OpensslEvpAes128Cfb8(void)1037 const EVP_CIPHER *OpensslEvpAes128Cfb8(void)
1038 {
1039     return EVP_aes_128_cfb8();
1040 }
1041 
OpensslEvpAes192Cfb8(void)1042 const EVP_CIPHER *OpensslEvpAes192Cfb8(void)
1043 {
1044     return EVP_aes_192_cfb8();
1045 }
1046 
OpensslEvpAes256Cfb8(void)1047 const EVP_CIPHER *OpensslEvpAes256Cfb8(void)
1048 {
1049     return EVP_aes_256_cfb8();
1050 }
1051 
OpensslEvpAes128Ccm(void)1052 const EVP_CIPHER *OpensslEvpAes128Ccm(void)
1053 {
1054     return EVP_aes_128_ccm();
1055 }
1056 
OpensslEvpAes192Ccm(void)1057 const EVP_CIPHER *OpensslEvpAes192Ccm(void)
1058 {
1059     return EVP_aes_192_ccm();
1060 }
1061 
OpensslEvpAes256Ccm(void)1062 const EVP_CIPHER *OpensslEvpAes256Ccm(void)
1063 {
1064     return EVP_aes_256_ccm();
1065 }
1066 
OpensslEvpAes128Gcm(void)1067 const EVP_CIPHER *OpensslEvpAes128Gcm(void)
1068 {
1069     return EVP_aes_128_gcm();
1070 }
1071 
OpensslEvpAes192Gcm(void)1072 const EVP_CIPHER *OpensslEvpAes192Gcm(void)
1073 {
1074     return EVP_aes_192_gcm();
1075 }
1076 
OpensslEvpAes256Gcm(void)1077 const EVP_CIPHER *OpensslEvpAes256Gcm(void)
1078 {
1079     return EVP_aes_256_gcm();
1080 }
1081 
OpensslEvpSm4Ecb(void)1082 const EVP_CIPHER *OpensslEvpSm4Ecb(void)
1083 {
1084     return EVP_sm4_ecb();
1085 }
1086 
OpensslEvpSm4Cbc(void)1087 const EVP_CIPHER *OpensslEvpSm4Cbc(void)
1088 {
1089     return EVP_sm4_cbc();
1090 }
1091 
OpensslEvpSm4Cfb(void)1092 const EVP_CIPHER *OpensslEvpSm4Cfb(void)
1093 {
1094     return EVP_sm4_cfb();
1095 }
1096 
OpensslEvpSm4Cfb128(void)1097 const EVP_CIPHER *OpensslEvpSm4Cfb128(void)
1098 {
1099     return EVP_sm4_cfb128();
1100 }
1101 
OpensslEvpSm4Ctr(void)1102 const EVP_CIPHER *OpensslEvpSm4Ctr(void)
1103 {
1104     return EVP_sm4_ctr();
1105 }
1106 
OpensslEvpSm4Ofb(void)1107 const EVP_CIPHER *OpensslEvpSm4Ofb(void)
1108 {
1109     return EVP_sm4_ofb();
1110 }
1111 
OpensslEvpCipherFetch(OSSL_LIB_CTX * ctx,const char * algorithm,const char * properties)1112 EVP_CIPHER *OpensslEvpCipherFetch(OSSL_LIB_CTX *ctx, const char *algorithm, const char *properties)
1113 {
1114     return EVP_CIPHER_fetch(ctx, algorithm, properties);
1115 }
1116 
OpensslEvpCipherFree(EVP_CIPHER * cipher)1117 void OpensslEvpCipherFree(EVP_CIPHER *cipher)
1118 {
1119     EVP_CIPHER_free(cipher);
1120 }
1121 
OpensslEvpCipherCtxNew(void)1122 EVP_CIPHER_CTX *OpensslEvpCipherCtxNew(void)
1123 {
1124     return EVP_CIPHER_CTX_new();
1125 }
1126 
OpensslEvpCipherInit(EVP_CIPHER_CTX * ctx,const EVP_CIPHER * cipher,const unsigned char * key,const unsigned char * iv,int enc)1127 int OpensslEvpCipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
1128     const unsigned char *key, const unsigned char *iv, int enc)
1129 {
1130     return EVP_CipherInit(ctx, cipher, key, iv, enc);
1131 }
1132 
OpensslEvpCipherCtxSetPadding(EVP_CIPHER_CTX * ctx,int pad)1133 int OpensslEvpCipherCtxSetPadding(EVP_CIPHER_CTX *ctx, int pad)
1134 {
1135     return EVP_CIPHER_CTX_set_padding(ctx, pad);
1136 }
1137 
OpensslEvpCipherFinalEx(EVP_CIPHER_CTX * ctx,unsigned char * out,int * outl)1138 int OpensslEvpCipherFinalEx(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl)
1139 {
1140     return EVP_CipherFinal_ex(ctx, out, outl);
1141 }
1142 
OpensslEvpCipherUpdate(EVP_CIPHER_CTX * ctx,unsigned char * out,int * outl,const unsigned char * in,int inl)1143 int OpensslEvpCipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, const unsigned char *in, int inl)
1144 {
1145     return EVP_CipherUpdate(ctx, out, outl, in, inl);
1146 }
1147 
OpensslEvpDesEde3Ecb(void)1148 const EVP_CIPHER *OpensslEvpDesEde3Ecb(void)
1149 {
1150     return EVP_des_ede3_ecb();
1151 }
1152 
OpensslEvpDesEde3Cbc(void)1153 const EVP_CIPHER *OpensslEvpDesEde3Cbc(void)
1154 {
1155     return EVP_des_ede3_cbc();
1156 }
1157 
OpensslEvpDesEde3Ofb(void)1158 const EVP_CIPHER *OpensslEvpDesEde3Ofb(void)
1159 {
1160     return EVP_des_ede3_ofb();
1161 }
1162 
OpensslEvpDesEde3Cfb64(void)1163 const EVP_CIPHER *OpensslEvpDesEde3Cfb64(void)
1164 {
1165     return EVP_des_ede3_cfb64();
1166 }
1167 
OpensslEvpDesEde3Cfb1(void)1168 const EVP_CIPHER *OpensslEvpDesEde3Cfb1(void)
1169 {
1170     return EVP_des_ede3_cfb1();
1171 }
1172 
OpensslEvpDesEde3Cfb8(void)1173 const EVP_CIPHER *OpensslEvpDesEde3Cfb8(void)
1174 {
1175     return EVP_des_ede3_cfb8();
1176 }
1177 
OpensslSm2CipherTextSize(const EC_KEY * key,const EVP_MD * digest,size_t msgLen,size_t * cipherTextSize)1178 int OpensslSm2CipherTextSize(const EC_KEY *key, const EVP_MD *digest, size_t msgLen, size_t *cipherTextSize)
1179 {
1180     return ossl_sm2_ciphertext_size(key, digest, msgLen, cipherTextSize);
1181 }
1182 
OpensslSm2PlainTextSize(const unsigned char * cipherText,size_t cipherTextSize,size_t * plainTextSize)1183 int OpensslSm2PlainTextSize(const unsigned char *cipherText, size_t cipherTextSize, size_t *plainTextSize)
1184 {
1185     return ossl_sm2_plaintext_size(cipherText, cipherTextSize, plainTextSize);
1186 }
1187 
OpensslOsslSm2Encrypt(const EC_KEY * key,const EVP_MD * digest,const uint8_t * msg,size_t msgLen,uint8_t * cipherTextBuf,size_t * cipherTextLen)1188 int OpensslOsslSm2Encrypt(const EC_KEY *key, const EVP_MD *digest, const uint8_t *msg,
1189     size_t msgLen, uint8_t *cipherTextBuf, size_t *cipherTextLen)
1190 {
1191     return ossl_sm2_encrypt(key, digest, msg, msgLen, cipherTextBuf, cipherTextLen);
1192 }
1193 
OpensslOsslSm2Decrypt(const EC_KEY * key,const EVP_MD * digest,const uint8_t * cipherText,size_t cipherTextLen,uint8_t * plainTextBuf,size_t * plainTextLen)1194 int OpensslOsslSm2Decrypt(const EC_KEY *key, const EVP_MD *digest, const uint8_t *cipherText,
1195     size_t cipherTextLen, uint8_t *plainTextBuf, size_t *plainTextLen)
1196 {
1197     return ossl_sm2_decrypt(key, digest, cipherText, cipherTextLen, plainTextBuf, plainTextLen);
1198 }
1199 
OpensslPkcs5Pbkdf2Hmac(const char * pass,int passlen,const unsigned char * salt,int saltlen,int iter,const EVP_MD * digest,int keylen,unsigned char * out)1200 int OpensslPkcs5Pbkdf2Hmac(const char *pass, int passlen, const unsigned char *salt,
1201     int saltlen, int iter, const EVP_MD *digest, int keylen, unsigned char *out)
1202 {
1203     return PKCS5_PBKDF2_HMAC(pass, passlen, salt, saltlen, iter, digest, keylen, out);
1204 }
1205 
OpensslEcGroupNewByCurveName(int nid)1206 EC_GROUP *OpensslEcGroupNewByCurveName(int nid)
1207 {
1208     return EC_GROUP_new_by_curve_name(nid);
1209 }
1210 
OpensslEvpCipherCtxCtrl(EVP_CIPHER_CTX * ctx,int type,int arg,void * ptr)1211 int OpensslEvpCipherCtxCtrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr)
1212 {
1213     return EVP_CIPHER_CTX_ctrl(ctx, type, arg, ptr);
1214 }
1215 
OpensslDhNew(void)1216 DH *OpensslDhNew(void)
1217 {
1218     return DH_new();
1219 }
1220 
OpensslDhComputeKeyPadded(unsigned char * key,const BIGNUM * pubKey,DH * dh)1221 int OpensslDhComputeKeyPadded(unsigned char *key, const BIGNUM *pubKey, DH *dh)
1222 {
1223     return DH_compute_key_padded(key, pubKey, dh);
1224 }
1225 
OpensslDhFree(DH * dh)1226 void OpensslDhFree(DH *dh)
1227 {
1228     DH_free(dh);
1229 }
1230 
OpensslDhGenerateKey(DH * dh)1231 int OpensslDhGenerateKey(DH *dh)
1232 {
1233     return DH_generate_key(dh);
1234 }
1235 
OpensslDhGet0P(const DH * dh)1236 const BIGNUM *OpensslDhGet0P(const DH *dh)
1237 {
1238     return DH_get0_p(dh);
1239 }
1240 
OpensslDhGet0Q(const DH * dh)1241 const BIGNUM *OpensslDhGet0Q(const DH *dh)
1242 {
1243     return DH_get0_q(dh);
1244 }
1245 
OpensslDhGet0G(const DH * dh)1246 const BIGNUM *OpensslDhGet0G(const DH *dh)
1247 {
1248     return DH_get0_g(dh);
1249 }
1250 
OpensslDhGetLength(const DH * dh)1251 long OpensslDhGetLength(const DH *dh)
1252 {
1253     return DH_get_length(dh);
1254 }
1255 
OpensslDhSetLength(DH * dh,long length)1256 int OpensslDhSetLength(DH *dh, long length)
1257 {
1258     return DH_set_length(dh, length);
1259 }
1260 
OpensslDhGet0PubKey(const DH * dh)1261 const BIGNUM *OpensslDhGet0PubKey(const DH *dh)
1262 {
1263     return DH_get0_pub_key(dh);
1264 }
1265 
OpensslDhGet0PrivKey(const DH * dh)1266 const BIGNUM *OpensslDhGet0PrivKey(const DH *dh)
1267 {
1268     return DH_get0_priv_key(dh);
1269 }
1270 
OpensslEvpPkeySet1Dh(EVP_PKEY * pkey,DH * key)1271 int OpensslEvpPkeySet1Dh(EVP_PKEY *pkey, DH *key)
1272 {
1273     return EVP_PKEY_set1_DH(pkey, key);
1274 }
1275 
OpensslEvpPkeyGet1Dh(EVP_PKEY * pkey)1276 DH *OpensslEvpPkeyGet1Dh(EVP_PKEY *pkey)
1277 {
1278     return EVP_PKEY_get1_DH(pkey);
1279 }
1280 
OpensslEvpPkeyAssignDh(EVP_PKEY * pkey,DH * key)1281 int OpensslEvpPkeyAssignDh(EVP_PKEY *pkey, DH *key)
1282 {
1283     return EVP_PKEY_assign_DH(pkey, key);
1284 }
1285 
OpensslEvpPkeyCtxSetDhParamgenPrimeLen(EVP_PKEY_CTX * ctx,int pbits)1286 int OpensslEvpPkeyCtxSetDhParamgenPrimeLen(EVP_PKEY_CTX *ctx, int pbits)
1287 {
1288     return EVP_PKEY_CTX_set_dh_paramgen_prime_len(ctx, pbits);
1289 }
1290 
OpensslEvpPkeyCtxSetSignatureMd(EVP_PKEY_CTX * ctx,const EVP_MD * md)1291 int OpensslEvpPkeyCtxSetSignatureMd(EVP_PKEY_CTX *ctx, const EVP_MD *md)
1292 {
1293     return EVP_PKEY_CTX_set_signature_md(ctx, md);
1294 }
1295 
OpensslDhUpRef(DH * r)1296 int OpensslDhUpRef(DH *r)
1297 {
1298     return DH_up_ref(r);
1299 }
1300 
OpensslDhSet0Pqg(DH * dh,BIGNUM * p,BIGNUM * q,BIGNUM * g)1301 int OpensslDhSet0Pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g)
1302 {
1303     return DH_set0_pqg(dh, p, q, g);
1304 }
1305 
OpensslDhSet0Key(DH * dh,BIGNUM * pubKey,BIGNUM * privKey)1306 int OpensslDhSet0Key(DH *dh, BIGNUM *pubKey, BIGNUM *privKey)
1307 {
1308     return DH_set0_key(dh, pubKey, privKey);
1309 }
1310 
OpensslD2iSm2CipherText(const uint8_t * ciphertext,size_t ciphertextLen)1311 struct Sm2CipherTextSt *OpensslD2iSm2CipherText(const uint8_t *ciphertext, size_t ciphertextLen)
1312 {
1313     return d2i_Sm2CipherText(NULL, &ciphertext, ciphertextLen);
1314 }
1315 
OpensslSm2CipherTextFree(struct Sm2CipherTextSt * sm2Text)1316 void OpensslSm2CipherTextFree(struct Sm2CipherTextSt *sm2Text)
1317 {
1318     Sm2CipherText_free(sm2Text);
1319 }
1320 
OpensslAsn1OctetStringFree(ASN1_OCTET_STRING * field)1321 void OpensslAsn1OctetStringFree(ASN1_OCTET_STRING *field)
1322 {
1323     ASN1_OCTET_STRING_free(field);
1324 }
1325 
OpensslAsn1OctetStringNew(void)1326 ASN1_OCTET_STRING *OpensslAsn1OctetStringNew(void)
1327 {
1328     return ASN1_OCTET_STRING_new();
1329 }
1330 
OpensslAsn1OctetStringSet(ASN1_OCTET_STRING * x,const unsigned char * d,int len)1331 int OpensslAsn1OctetStringSet(ASN1_OCTET_STRING *x, const unsigned char *d, int len)
1332 {
1333     return ASN1_STRING_set(x, d, len);
1334 }
1335 
OpensslSm2CipherTextNew(void)1336 struct Sm2CipherTextSt *OpensslSm2CipherTextNew(void)
1337 {
1338     return Sm2CipherText_new();
1339 }
1340 
OpensslI2dSm2CipherText(struct Sm2CipherTextSt * sm2Text,unsigned char ** returnData)1341 int OpensslI2dSm2CipherText(struct Sm2CipherTextSt *sm2Text, unsigned char **returnData)
1342 {
1343     return i2d_Sm2CipherText(sm2Text, returnData);
1344 }
1345 
OpensslAsn1StringLength(ASN1_OCTET_STRING * p)1346 int OpensslAsn1StringLength(ASN1_OCTET_STRING *p)
1347 {
1348     return ASN1_STRING_length(p);
1349 }
1350 
OpensslAsn1StringGet0Data(ASN1_OCTET_STRING * p)1351 const unsigned char *OpensslAsn1StringGet0Data(ASN1_OCTET_STRING *p)
1352 {
1353     return ASN1_STRING_get0_data(p);
1354 }
1355 
OpensslOsslParamBldNew(void)1356 OSSL_PARAM_BLD *OpensslOsslParamBldNew(void)
1357 {
1358     return OSSL_PARAM_BLD_new();
1359 }
1360 
OpensslOsslParamBldFree(OSSL_PARAM_BLD * bld)1361 void OpensslOsslParamBldFree(OSSL_PARAM_BLD *bld)
1362 {
1363     OSSL_PARAM_BLD_free(bld);
1364 }
1365 
OpensslOsslParamBldToParam(OSSL_PARAM_BLD * bld)1366 OSSL_PARAM *OpensslOsslParamBldToParam(OSSL_PARAM_BLD *bld)
1367 {
1368     return OSSL_PARAM_BLD_to_param(bld);
1369 }
1370 
OpensslOsslParamBldPushUtf8String(OSSL_PARAM_BLD * bld,const char * key,const char * buf,size_t bsize)1371 int OpensslOsslParamBldPushUtf8String(OSSL_PARAM_BLD *bld, const char *key, const char *buf, size_t bsize)
1372 {
1373     return OSSL_PARAM_BLD_push_utf8_string(bld, key, buf, bsize);
1374 }
1375 
OpensslOsslParamBldPushOctetString(OSSL_PARAM_BLD * bld,const char * key,const void * buf,size_t bsize)1376 int OpensslOsslParamBldPushOctetString(OSSL_PARAM_BLD *bld, const char *key, const void *buf, size_t bsize)
1377 {
1378     return OSSL_PARAM_BLD_push_octet_string(bld, key, buf, bsize);
1379 }
1380 
OpensslEvpPkeyCtxSetEcParamgenCurveNid(EVP_PKEY_CTX * ctx,int nid)1381 int OpensslEvpPkeyCtxSetEcParamgenCurveNid(EVP_PKEY_CTX *ctx, int nid)
1382 {
1383     return EVP_PKEY_CTX_set_ec_paramgen_curve_nid(ctx, nid);
1384 }
1385 
OpensslEvpPkeyFromDataInit(EVP_PKEY_CTX * ctx)1386 int OpensslEvpPkeyFromDataInit(EVP_PKEY_CTX *ctx)
1387 {
1388     return EVP_PKEY_fromdata_init(ctx);
1389 }
1390 
OpensslEvpPkeyFromData(EVP_PKEY_CTX * ctx,EVP_PKEY ** ppkey,int selection,OSSL_PARAM params[])1391 int OpensslEvpPkeyFromData(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey, int selection, OSSL_PARAM params[])
1392 {
1393     return EVP_PKEY_fromdata(ctx, ppkey, selection, params);
1394 }
1395 
OpensslEvpPkeyGet1EcKey(EVP_PKEY * pkey)1396 EC_KEY *OpensslEvpPkeyGet1EcKey(EVP_PKEY *pkey)
1397 {
1398     return EVP_PKEY_get1_EC_KEY(pkey);
1399 }
1400 
OpensslOsslParamFree(OSSL_PARAM * params)1401 void OpensslOsslParamFree(OSSL_PARAM *params)
1402 {
1403     OSSL_PARAM_free(params);
1404 }
1405 
OpensslEcOct2Point(const EC_GROUP * group,EC_POINT * p,const unsigned char * buf,size_t len,BN_CTX * ctx)1406 int OpensslEcOct2Point(const EC_GROUP *group, EC_POINT *p, const unsigned char *buf, size_t len, BN_CTX *ctx)
1407 {
1408     return EC_POINT_oct2point(group, p, buf, len, ctx);
1409 }
1410 
OpensslEcPointSetAffineCoordinates(const EC_GROUP * group,EC_POINT * p,const BIGNUM * x,const BIGNUM * y,BN_CTX * ctx)1411 int OpensslEcPointSetAffineCoordinates(const EC_GROUP *group, EC_POINT *p,
1412     const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx)
1413 {
1414     return EC_POINT_set_affine_coordinates(group, p, x, y, ctx);
1415 }
1416 
OpensslEcPointGetAffineCoordinates(const EC_GROUP * group,const EC_POINT * p,BIGNUM * x,BIGNUM * y,BN_CTX * ctx)1417 int OpensslEcPointGetAffineCoordinates(const EC_GROUP *group, const EC_POINT *p,
1418     BIGNUM *x, BIGNUM *y, BN_CTX *ctx)
1419 {
1420     return EC_POINT_get_affine_coordinates(group, p, x, y, ctx);
1421 }
1422 
OpensslEvpKdfFetch(OSSL_LIB_CTX * libctx,const char * algorithm,const char * properties)1423 EVP_KDF *OpensslEvpKdfFetch(OSSL_LIB_CTX *libctx, const char *algorithm,
1424     const char *properties)
1425 {
1426     return EVP_KDF_fetch(libctx, algorithm, properties);
1427 }
1428 
OpensslEvpKdfCtxNew(EVP_KDF * kdf)1429 EVP_KDF_CTX *OpensslEvpKdfCtxNew(EVP_KDF *kdf)
1430 {
1431     return EVP_KDF_CTX_new(kdf);
1432 }
1433 
OpensslEvpKdfFree(EVP_KDF * kdf)1434 void OpensslEvpKdfFree(EVP_KDF *kdf)
1435 {
1436     EVP_KDF_free(kdf);
1437 }
1438 
OpensslEvpKdfCtxFree(EVP_KDF_CTX * ctx)1439 void OpensslEvpKdfCtxFree(EVP_KDF_CTX *ctx)
1440 {
1441     EVP_KDF_CTX_free(ctx);
1442 }
1443 
OpensslEvpKdfDerive(EVP_KDF_CTX * ctx,unsigned char * key,size_t keylen,const OSSL_PARAM params[])1444 int OpensslEvpKdfDerive(EVP_KDF_CTX *ctx, unsigned char *key, size_t keylen,
1445     const OSSL_PARAM params[])
1446 {
1447     return EVP_KDF_derive(ctx, key, keylen, params);
1448 }
1449 
OpensslOsslEncoderCtxNewForPkey(const EVP_PKEY * pkey,int selection,const char * outputType,const char * outputStruct,const char * propquery)1450 OSSL_ENCODER_CTX *OpensslOsslEncoderCtxNewForPkey(const EVP_PKEY *pkey, int selection,
1451     const char *outputType, const char *outputStruct, const char *propquery)
1452 {
1453     return OSSL_ENCODER_CTX_new_for_pkey(pkey, selection, outputType, outputStruct, propquery);
1454 }
1455 
OpensslOsslEncoderToData(OSSL_ENCODER_CTX * ctx,unsigned char ** pdata,size_t * len)1456 int OpensslOsslEncoderToData(OSSL_ENCODER_CTX *ctx, unsigned char **pdata, size_t *len)
1457 {
1458     return OSSL_ENCODER_to_data(ctx, pdata, len);
1459 }
1460 
OpensslOsslEncoderCtxFree(OSSL_ENCODER_CTX * ctx)1461 void OpensslOsslEncoderCtxFree(OSSL_ENCODER_CTX *ctx)
1462 {
1463     OSSL_ENCODER_CTX_free(ctx);
1464 }
1465 
OpensslOsslDecoderCtxNewForPkey(EVP_PKEY ** pkey,const char * inputType,const char * inputStructure,const char * keytype,int selection,OSSL_LIB_CTX * libctx,const char * propquery)1466 OSSL_DECODER_CTX *OpensslOsslDecoderCtxNewForPkey(EVP_PKEY **pkey, const char *inputType,
1467     const char *inputStructure, const char *keytype, int selection, OSSL_LIB_CTX *libctx, const char *propquery)
1468 {
1469     return OSSL_DECODER_CTX_new_for_pkey(pkey, inputType, inputStructure, keytype, selection, libctx, propquery);
1470 }
1471 
OpensslOsslDecoderFromData(OSSL_DECODER_CTX * ctx,const unsigned char ** pdata,size_t * len)1472 int OpensslOsslDecoderFromData(OSSL_DECODER_CTX *ctx, const unsigned char **pdata,
1473     size_t *len)
1474 {
1475     return OSSL_DECODER_from_data(ctx, pdata, len);
1476 }
1477 
OpensslOsslDecoderCtxFree(OSSL_DECODER_CTX * ctx)1478 void OpensslOsslDecoderCtxFree(OSSL_DECODER_CTX *ctx)
1479 {
1480     OSSL_DECODER_CTX_free(ctx);
1481 }
1482