• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
OpensslOsslParamConstructUint64(const char * key,uint64_t * buf)526 OSSL_PARAM OpensslOsslParamConstructUint64(const char *key, uint64_t *buf)
527 {
528     return OSSL_PARAM_construct_uint64(key, buf);
529 }
530 
OpensslOsslParamConstructInt(const char * key,int * buf)531 OSSL_PARAM OpensslOsslParamConstructInt(const char *key, int *buf)
532 {
533     return OSSL_PARAM_construct_int(key, buf);
534 }
535 
OpensslEvpPkeyCtxSet1Id(EVP_PKEY_CTX * ctx,const void * id,int idLen)536 int OpensslEvpPkeyCtxSet1Id(EVP_PKEY_CTX *ctx, const void *id, int idLen)
537 {
538     return EVP_PKEY_CTX_set1_id(ctx, id, idLen);
539 }
540 
OpensslEvpPkeyParamGenInit(EVP_PKEY_CTX * ctx)541 int OpensslEvpPkeyParamGenInit(EVP_PKEY_CTX *ctx)
542 {
543     return EVP_PKEY_paramgen_init(ctx);
544 }
545 
OpensslEvpPkeyCtxSetDsaParamgenBits(EVP_PKEY_CTX * ctx,int nbits)546 int OpensslEvpPkeyCtxSetDsaParamgenBits(EVP_PKEY_CTX *ctx, int nbits)
547 {
548     return EVP_PKEY_CTX_set_dsa_paramgen_bits(ctx, nbits);
549 }
550 
OpensslEvpPkeyCtxSetParams(EVP_PKEY_CTX * ctx,const OSSL_PARAM * params)551 int OpensslEvpPkeyCtxSetParams(EVP_PKEY_CTX *ctx, const OSSL_PARAM *params)
552 {
553     return EVP_PKEY_CTX_set_params(ctx, params);
554 }
555 
OpensslEvpPkeyParamGen(EVP_PKEY_CTX * ctx,EVP_PKEY ** ppkey)556 int OpensslEvpPkeyParamGen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey)
557 {
558     return EVP_PKEY_paramgen(ctx, ppkey);
559 }
560 
OpensslEvpPkeyKeyGenInit(EVP_PKEY_CTX * ctx)561 int OpensslEvpPkeyKeyGenInit(EVP_PKEY_CTX *ctx)
562 {
563     return EVP_PKEY_keygen_init(ctx);
564 }
565 
OpensslEvpPkeyKeyGen(EVP_PKEY_CTX * ctx,EVP_PKEY ** ppkey)566 int OpensslEvpPkeyKeyGen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey)
567 {
568     return EVP_PKEY_keygen(ctx, ppkey);
569 }
570 
OpensslEvpPkeySet1Dsa(EVP_PKEY * pkey,DSA * key)571 int OpensslEvpPkeySet1Dsa(EVP_PKEY *pkey, DSA *key)
572 {
573     return EVP_PKEY_set1_DSA(pkey, key);
574 }
575 
OpensslEvpPkeyGet1Dsa(EVP_PKEY * pkey)576 DSA *OpensslEvpPkeyGet1Dsa(EVP_PKEY *pkey)
577 {
578     return EVP_PKEY_get1_DSA(pkey);
579 }
580 
OpensslDsaNew(void)581 DSA *OpensslDsaNew(void)
582 {
583     return DSA_new();
584 }
585 
OpensslDsaFree(DSA * dsa)586 void OpensslDsaFree(DSA *dsa)
587 {
588     DSA_free(dsa);
589 }
590 
OpensslDsaUpRef(DSA * dsa)591 int OpensslDsaUpRef(DSA *dsa)
592 {
593     return DSA_up_ref(dsa);
594 }
595 
OpensslDsaSet0Pqg(DSA * dsa,BIGNUM * p,BIGNUM * q,BIGNUM * g)596 int OpensslDsaSet0Pqg(DSA *dsa, BIGNUM *p, BIGNUM *q, BIGNUM *g)
597 {
598     return DSA_set0_pqg(dsa, p, q, g);
599 }
600 
OpensslDsaSet0Key(DSA * dsa,BIGNUM * pubKey,BIGNUM * priKey)601 int OpensslDsaSet0Key(DSA *dsa, BIGNUM *pubKey, BIGNUM *priKey)
602 {
603     return DSA_set0_key(dsa, pubKey, priKey);
604 }
605 
OpensslDsaGet0P(const DSA * dsa)606 const BIGNUM *OpensslDsaGet0P(const DSA *dsa)
607 {
608     return DSA_get0_p(dsa);
609 }
610 
OpensslDsaGet0Q(const DSA * dsa)611 const BIGNUM *OpensslDsaGet0Q(const DSA *dsa)
612 {
613     return DSA_get0_q(dsa);
614 }
615 
OpensslDsaGet0G(const DSA * dsa)616 const BIGNUM *OpensslDsaGet0G(const DSA *dsa)
617 {
618     return DSA_get0_g(dsa);
619 }
620 
OpensslDsaGet0PubKey(const DSA * dsa)621 const BIGNUM *OpensslDsaGet0PubKey(const DSA *dsa)
622 {
623     return DSA_get0_pub_key(dsa);
624 }
625 
OpensslDsaGet0PrivKey(const DSA * dsa)626 const BIGNUM *OpensslDsaGet0PrivKey(const DSA *dsa)
627 {
628     return DSA_get0_priv_key(dsa);
629 }
630 
OpensslDsaGenerateKey(DSA * a)631 int OpensslDsaGenerateKey(DSA *a)
632 {
633     return DSA_generate_key(a);
634 }
635 
OpensslD2iDsaPubKey(DSA ** dsa,const unsigned char ** ppin,long length)636 DSA *OpensslD2iDsaPubKey(DSA **dsa, const unsigned char **ppin, long length)
637 {
638     return d2i_DSA_PUBKEY(dsa, ppin, length);
639 }
640 
OpensslD2iDsaPrivateKey(DSA ** dsa,const unsigned char ** ppin,long length)641 DSA *OpensslD2iDsaPrivateKey(DSA **dsa, const unsigned char **ppin, long length)
642 {
643     return d2i_DSAPrivateKey(dsa, ppin, length);
644 }
645 
OpensslI2dDsaPubkey(DSA * dsa,unsigned char ** ppout)646 int OpensslI2dDsaPubkey(DSA *dsa, unsigned char **ppout)
647 {
648     return i2d_DSA_PUBKEY(dsa, ppout);
649 }
650 
OpensslI2dDsaPrivateKey(DSA * dsa,unsigned char ** ppout)651 int OpensslI2dDsaPrivateKey(DSA *dsa, unsigned char **ppout)
652 {
653     return i2d_DSAPrivateKey(dsa, ppout);
654 }
655 
OpensslEvpPkeyCheck(EVP_PKEY_CTX * ctx)656 int OpensslEvpPkeyCheck(EVP_PKEY_CTX *ctx)
657 {
658     return EVP_PKEY_check(ctx);
659 }
660 
OpensslEvpPkeyDup(EVP_PKEY * a)661 EVP_PKEY *OpensslEvpPkeyDup(EVP_PKEY *a)
662 {
663     return EVP_PKEY_dup(a);
664 }
665 
OpensslD2iPubKey(EVP_PKEY ** a,const unsigned char ** pp,long length)666 EVP_PKEY *OpensslD2iPubKey(EVP_PKEY **a, const unsigned char **pp, long length)
667 {
668     return d2i_PUBKEY(a, pp, length);
669 }
670 
OpensslD2iPrivateKey(int type,EVP_PKEY ** a,const unsigned char ** pp,long length)671 EVP_PKEY *OpensslD2iPrivateKey(int type, EVP_PKEY **a, const unsigned char **pp, long length)
672 {
673     return d2i_PrivateKey(type, a, pp, length);
674 }
675 
OpensslI2dPubKey(EVP_PKEY * pkey,unsigned char ** ppout)676 int OpensslI2dPubKey(EVP_PKEY *pkey, unsigned char **ppout)
677 {
678     return i2d_PUBKEY(pkey, ppout);
679 }
680 
OpensslI2dPrivateKey(EVP_PKEY * pkey,unsigned char ** ppout)681 int OpensslI2dPrivateKey(EVP_PKEY *pkey, unsigned char **ppout)
682 {
683     return i2d_PrivateKey(pkey, ppout);
684 }
685 
OpensslRsaNew(void)686 RSA *OpensslRsaNew(void)
687 {
688     return RSA_new();
689 }
690 
OpensslRsaFree(RSA * rsa)691 void OpensslRsaFree(RSA *rsa)
692 {
693     RSA_free(rsa);
694 }
695 
OpensslRsaGenerateMultiPrimeKey(RSA * rsa,int bits,int primes,BIGNUM * e,BN_GENCB * cb)696 int OpensslRsaGenerateMultiPrimeKey(RSA *rsa, int bits, int primes,
697     BIGNUM *e, BN_GENCB *cb)
698 {
699     return RSA_generate_multi_prime_key(rsa, bits, primes, e, cb);
700 }
701 
OpensslRsaGenerateKeyEx(RSA * rsa,int bits,BIGNUM * e,BN_GENCB * cb)702 int OpensslRsaGenerateKeyEx(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb)
703 {
704     return RSA_generate_key_ex(rsa, bits, e, cb);
705 }
706 
OpensslRsaBits(const RSA * rsa)707 int OpensslRsaBits(const RSA *rsa)
708 {
709     return RSA_bits(rsa);
710 }
711 
OpensslRsaSet0Key(RSA * r,BIGNUM * n,BIGNUM * e,BIGNUM * d)712 int OpensslRsaSet0Key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d)
713 {
714     return RSA_set0_key(r, n, e, d);
715 }
716 
OpensslRsaGet0Key(const RSA * r,const BIGNUM ** n,const BIGNUM ** e,const BIGNUM ** d)717 void OpensslRsaGet0Key(const RSA *r, const BIGNUM **n, const BIGNUM **e, const BIGNUM **d)
718 {
719     RSA_get0_key(r, n, e, d);
720 }
721 
OpensslRsaGet0N(const RSA * d)722 const BIGNUM *OpensslRsaGet0N(const RSA *d)
723 {
724     return RSA_get0_n(d);
725 }
726 
OpensslRsaGet0E(const RSA * d)727 const BIGNUM *OpensslRsaGet0E(const RSA *d)
728 {
729     return RSA_get0_e(d);
730 }
731 
OpensslRsaGet0D(const RSA * d)732 const BIGNUM *OpensslRsaGet0D(const RSA *d)
733 {
734     return RSA_get0_d(d);
735 }
736 
OpensslRsaGet0Factors(const RSA * r,const BIGNUM ** p,const BIGNUM ** q)737 void OpensslRsaGet0Factors(const RSA *r, const BIGNUM **p, const BIGNUM **q)
738 {
739     RSA_get0_factors(r, p, q);
740 }
741 
OpensslRsaPublicKeyDup(RSA * rsa)742 RSA *OpensslRsaPublicKeyDup(RSA *rsa)
743 {
744     return RSAPublicKey_dup(rsa);
745 }
746 
OpensslRsaPrivateKeyDup(RSA * rsa)747 RSA *OpensslRsaPrivateKeyDup(RSA *rsa)
748 {
749     return RSAPrivateKey_dup(rsa);
750 }
751 
OpensslD2iRsaPubKey(RSA ** a,const unsigned char ** pp,long length)752 RSA *OpensslD2iRsaPubKey(RSA **a, const unsigned char **pp, long length)
753 {
754     return d2i_RSA_PUBKEY(a, pp, length);
755 }
756 
OpensslI2dRsaPubKey(RSA * a,unsigned char ** pp)757 int OpensslI2dRsaPubKey(RSA *a, unsigned char **pp)
758 {
759     return i2d_RSA_PUBKEY(a, pp);
760 }
761 
OpensslEvpPkeyCtxSetRsaPssSaltLen(EVP_PKEY_CTX * ctx,int saltlen)762 int OpensslEvpPkeyCtxSetRsaPssSaltLen(EVP_PKEY_CTX *ctx, int saltlen)
763 {
764     return EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, saltlen);
765 }
766 
OpensslEvpPkeyCtxGetRsaPssSaltLen(EVP_PKEY_CTX * ctx,int * saltlen)767 int OpensslEvpPkeyCtxGetRsaPssSaltLen(EVP_PKEY_CTX *ctx, int *saltlen)
768 {
769     return EVP_PKEY_CTX_get_rsa_pss_saltlen(ctx, saltlen);
770 }
771 
OpensslEvpPkeyCtxSetRsaPadding(EVP_PKEY_CTX * ctx,int pad)772 int OpensslEvpPkeyCtxSetRsaPadding(EVP_PKEY_CTX *ctx, int pad)
773 {
774     return EVP_PKEY_CTX_set_rsa_padding(ctx, pad);
775 }
776 
OpensslEvpPkeyCtxSetRsaMgf1Md(EVP_PKEY_CTX * ctx,const EVP_MD * md)777 int OpensslEvpPkeyCtxSetRsaMgf1Md(EVP_PKEY_CTX *ctx, const EVP_MD *md)
778 {
779     return EVP_PKEY_CTX_set_rsa_mgf1_md(ctx, md);
780 }
781 
OpensslEvpPkeyCtxSetRsaOaepMd(EVP_PKEY_CTX * ctx,const EVP_MD * md)782 int OpensslEvpPkeyCtxSetRsaOaepMd(EVP_PKEY_CTX *ctx, const EVP_MD *md)
783 {
784     return EVP_PKEY_CTX_set_rsa_oaep_md(ctx, md);
785 }
786 
OpensslEvpPkeyCtxSet0RsaOaepLabel(EVP_PKEY_CTX * ctx,void * label,int len)787 int OpensslEvpPkeyCtxSet0RsaOaepLabel(EVP_PKEY_CTX *ctx, void *label, int len)
788 {
789     return EVP_PKEY_CTX_set0_rsa_oaep_label(ctx, label, len);
790 }
791 
OpensslEvpPkeyCtxGet0RsaOaepLabel(EVP_PKEY_CTX * ctx,unsigned char ** label)792 int OpensslEvpPkeyCtxGet0RsaOaepLabel(EVP_PKEY_CTX *ctx, unsigned char **label)
793 {
794     return EVP_PKEY_CTX_get0_rsa_oaep_label(ctx, label);
795 }
796 
OpensslD2iAutoPrivateKey(EVP_PKEY ** a,const unsigned char ** pp,long length)797 EVP_PKEY *OpensslD2iAutoPrivateKey(EVP_PKEY **a, const unsigned char **pp, long length)
798 {
799     return d2i_AutoPrivateKey(a, pp, length);
800 }
801 
OpensslEvpPkeyGet1Rsa(EVP_PKEY * pkey)802 struct rsa_st *OpensslEvpPkeyGet1Rsa(EVP_PKEY *pkey)
803 {
804     return EVP_PKEY_get1_RSA(pkey);
805 }
806 
OpensslEvpPkeySet1Rsa(EVP_PKEY * pkey,struct rsa_st * key)807 int OpensslEvpPkeySet1Rsa(EVP_PKEY *pkey, struct rsa_st *key)
808 {
809     return EVP_PKEY_set1_RSA(pkey, key);
810 }
811 
OpensslEvpPkeyAssignRsa(EVP_PKEY * pkey,struct rsa_st * key)812 int OpensslEvpPkeyAssignRsa(EVP_PKEY *pkey, struct rsa_st *key)
813 {
814     return EVP_PKEY_assign_RSA(pkey, key);
815 }
816 
OpensslPemWriteBioRsaPublicKey(BIO * bp,RSA * x)817 int OpensslPemWriteBioRsaPublicKey(BIO *bp, RSA *x)
818 {
819     return PEM_write_bio_RSAPublicKey(bp, x);
820 }
821 
OpensslPemWriteBioRsaPubKey(BIO * bp,RSA * x)822 int OpensslPemWriteBioRsaPubKey(BIO *bp, RSA *x)
823 {
824     return PEM_write_bio_RSA_PUBKEY(bp, x);
825 }
826 
OpensslPemReadBioPrivateKey(BIO * bp,EVP_PKEY ** x,pem_password_cb * cb,void * u)827 EVP_PKEY *OpensslPemReadBioPrivateKey(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, void *u)
828 {
829     return PEM_read_bio_PrivateKey(bp, x, cb, u);
830 }
831 
OpensslBioNew(const BIO_METHOD * type)832 BIO *OpensslBioNew(const BIO_METHOD *type)
833 {
834     return BIO_new(type);
835 }
836 
OpensslBioSMem(void)837 const BIO_METHOD *OpensslBioSMem(void)
838 {
839     return BIO_s_mem();
840 }
841 
OpensslBioRead(BIO * b,void * data,int dlen)842 int OpensslBioRead(BIO *b, void *data, int dlen)
843 {
844     return BIO_read(b, data, dlen);
845 }
846 
OpensslBioWrite(BIO * b,const void * data,int dlen)847 int OpensslBioWrite(BIO *b, const void *data, int dlen)
848 {
849     return BIO_write(b, data, dlen);
850 }
851 
OpensslBioFreeAll(BIO * a)852 void OpensslBioFreeAll(BIO *a)
853 {
854     BIO_free_all(a);
855 }
856 
OpensslRandPrivBytes(unsigned char * buf,int num)857 int OpensslRandPrivBytes(unsigned char *buf, int num)
858 {
859     return RAND_priv_bytes(buf, num);
860 }
861 
OpensslRandSeed(const void * buf,int num)862 void OpensslRandSeed(const void *buf, int num)
863 {
864     RAND_seed(buf, num);
865 }
866 
OpensslEvpSha1(void)867 const EVP_MD *OpensslEvpSha1(void)
868 {
869     return EVP_sha1();
870 }
871 
OpensslEvpSha224(void)872 const EVP_MD *OpensslEvpSha224(void)
873 {
874     return EVP_sha224();
875 }
876 
OpensslEvpSha256(void)877 const EVP_MD *OpensslEvpSha256(void)
878 {
879     return EVP_sha256();
880 }
881 
OpensslEvpSha384(void)882 const EVP_MD *OpensslEvpSha384(void)
883 {
884     return EVP_sha384();
885 }
886 
OpensslEvpSha512(void)887 const EVP_MD *OpensslEvpSha512(void)
888 {
889     return EVP_sha512();
890 }
891 
OpensslEvpMd5(void)892 const EVP_MD *OpensslEvpMd5(void)
893 {
894     return EVP_md5();
895 }
896 
OpensslEvpSm3(void)897 const EVP_MD *OpensslEvpSm3(void)
898 {
899     return EVP_sm3();
900 }
901 
OpensslEvpDigestFinalEx(EVP_MD_CTX * ctx,unsigned char * md,unsigned int * size)902 int OpensslEvpDigestFinalEx(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *size)
903 {
904     return EVP_DigestFinal_ex(ctx, md, size);
905 }
906 
OpensslEvpMdCtxSize(const EVP_MD_CTX * ctx)907 int OpensslEvpMdCtxSize(const EVP_MD_CTX *ctx)
908 {
909     return EVP_MD_CTX_size(ctx);
910 }
911 
OpensslEvpDigestInitEx(EVP_MD_CTX * ctx,const EVP_MD * type,ENGINE * impl)912 int OpensslEvpDigestInitEx(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl)
913 {
914     return EVP_DigestInit_ex(ctx, type, impl);
915 }
916 
OpensslHmacInitEx(HMAC_CTX * ctx,const void * key,int len,const EVP_MD * md,ENGINE * impl)917 int OpensslHmacInitEx(HMAC_CTX *ctx, const void *key, int len, const EVP_MD *md, ENGINE *impl)
918 {
919     return HMAC_Init_ex(ctx, key, len, md, impl);
920 }
921 
OpensslHmacFinal(HMAC_CTX * ctx,unsigned char * md,unsigned int * len)922 int OpensslHmacFinal(HMAC_CTX *ctx, unsigned char *md, unsigned int *len)
923 {
924     return HMAC_Final(ctx, md, len);
925 }
926 
OpensslHmacSize(const HMAC_CTX * ctx)927 size_t OpensslHmacSize(const HMAC_CTX *ctx)
928 {
929     return HMAC_size(ctx);
930 }
931 
OpensslHmacCtxFree(HMAC_CTX * ctx)932 void OpensslHmacCtxFree(HMAC_CTX *ctx)
933 {
934     HMAC_CTX_free(ctx);
935 }
936 
OpensslHmacCtxNew(void)937 HMAC_CTX *OpensslHmacCtxNew(void)
938 {
939     return HMAC_CTX_new();
940 }
941 
OpensslCmacInit(EVP_MAC_CTX * ctx,const unsigned char * key,size_t keylen,const OSSL_PARAM params[])942 int OpensslCmacInit(EVP_MAC_CTX *ctx, const unsigned char *key, size_t keylen, const OSSL_PARAM params[])
943 {
944     return EVP_MAC_init(ctx, key, keylen, params);
945 }
946 
OpensslCmacUpdate(EVP_MAC_CTX * ctx,const unsigned char * data,size_t datalen)947 int OpensslCmacUpdate(EVP_MAC_CTX *ctx, const unsigned char *data, size_t datalen)
948 {
949     return EVP_MAC_update(ctx, data, datalen);
950 }
951 
OpensslCmacFinal(EVP_MAC_CTX * ctx,unsigned char * out,size_t * outl,size_t outsize)952 int OpensslCmacFinal(EVP_MAC_CTX *ctx, unsigned char *out, size_t *outl, size_t outsize)
953 {
954     return EVP_MAC_final(ctx, out, outl, outsize);
955 }
956 
OpensslCmacSize(EVP_MAC_CTX * ctx)957 size_t OpensslCmacSize(EVP_MAC_CTX *ctx)
958 {
959     return EVP_MAC_CTX_get_mac_size(ctx);
960 }
961 
OpensslCmacCtxFree(EVP_MAC_CTX * ctx)962 void OpensslCmacCtxFree(EVP_MAC_CTX *ctx)
963 {
964     EVP_MAC_CTX_free(ctx);
965 }
966 
OpensslMacFree(EVP_MAC * mac)967 void OpensslMacFree(EVP_MAC *mac)
968 {
969     EVP_MAC_free(mac);
970 }
971 
OpensslCmacCtxNew(EVP_MAC * mac)972 EVP_MAC_CTX *OpensslCmacCtxNew(EVP_MAC *mac)
973 {
974     return EVP_MAC_CTX_new(mac);
975 }
976 
OpensslEvpCipherCtxFree(EVP_CIPHER_CTX * ctx)977 void OpensslEvpCipherCtxFree(EVP_CIPHER_CTX *ctx)
978 {
979     EVP_CIPHER_CTX_free(ctx);
980 }
981 
OpensslEvpAes128Ecb(void)982 const EVP_CIPHER *OpensslEvpAes128Ecb(void)
983 {
984     return EVP_aes_128_ecb();
985 }
986 
OpensslEvpAes192Ecb(void)987 const EVP_CIPHER *OpensslEvpAes192Ecb(void)
988 {
989     return EVP_aes_192_ecb();
990 }
991 
OpensslEvpAes256Ecb(void)992 const EVP_CIPHER *OpensslEvpAes256Ecb(void)
993 {
994     return EVP_aes_256_ecb();
995 }
996 
OpensslEvpAes128Cbc(void)997 const EVP_CIPHER *OpensslEvpAes128Cbc(void)
998 {
999     return EVP_aes_128_cbc();
1000 }
1001 
OpensslEvpAes192Cbc(void)1002 const EVP_CIPHER *OpensslEvpAes192Cbc(void)
1003 {
1004     return EVP_aes_192_cbc();
1005 }
1006 
OpensslEvpAes256Cbc(void)1007 const EVP_CIPHER *OpensslEvpAes256Cbc(void)
1008 {
1009     return EVP_aes_256_cbc();
1010 }
1011 
OpensslEvpAes128Ctr(void)1012 const EVP_CIPHER *OpensslEvpAes128Ctr(void)
1013 {
1014     return EVP_aes_128_ctr();
1015 }
1016 
OpensslEvpAes192Ctr(void)1017 const EVP_CIPHER *OpensslEvpAes192Ctr(void)
1018 {
1019     return EVP_aes_192_ctr();
1020 }
1021 
OpensslEvpAes256Ctr(void)1022 const EVP_CIPHER *OpensslEvpAes256Ctr(void)
1023 {
1024     return EVP_aes_256_ctr();
1025 }
1026 
OpensslEvpAes128Ofb(void)1027 const EVP_CIPHER *OpensslEvpAes128Ofb(void)
1028 {
1029     return EVP_aes_128_ofb();
1030 }
1031 
OpensslEvpAes192Ofb(void)1032 const EVP_CIPHER *OpensslEvpAes192Ofb(void)
1033 {
1034     return EVP_aes_192_ofb();
1035 }
1036 
OpensslEvpAes256Ofb(void)1037 const EVP_CIPHER *OpensslEvpAes256Ofb(void)
1038 {
1039     return EVP_aes_256_ofb();
1040 }
1041 
OpensslEvpAes128Cfb(void)1042 const EVP_CIPHER *OpensslEvpAes128Cfb(void)
1043 {
1044     return EVP_aes_128_cfb();
1045 }
1046 
OpensslEvpAes192Cfb(void)1047 const EVP_CIPHER *OpensslEvpAes192Cfb(void)
1048 {
1049     return EVP_aes_192_cfb();
1050 }
1051 
OpensslEvpAes256Cfb(void)1052 const EVP_CIPHER *OpensslEvpAes256Cfb(void)
1053 {
1054     return EVP_aes_256_cfb();
1055 }
1056 
OpensslEvpAes128Cfb1(void)1057 const EVP_CIPHER *OpensslEvpAes128Cfb1(void)
1058 {
1059     return EVP_aes_128_cfb1();
1060 }
1061 
OpensslEvpAes192Cfb1(void)1062 const EVP_CIPHER *OpensslEvpAes192Cfb1(void)
1063 {
1064     return EVP_aes_192_cfb1();
1065 }
1066 
OpensslEvpAes256Cfb1(void)1067 const EVP_CIPHER *OpensslEvpAes256Cfb1(void)
1068 {
1069     return EVP_aes_256_cfb1();
1070 }
1071 
OpensslEvpAes128Cfb128(void)1072 const EVP_CIPHER *OpensslEvpAes128Cfb128(void)
1073 {
1074     return EVP_aes_128_cfb128();
1075 }
1076 
OpensslEvpAes192Cfb128(void)1077 const EVP_CIPHER *OpensslEvpAes192Cfb128(void)
1078 {
1079     return EVP_aes_192_cfb128();
1080 }
1081 
OpensslEvpAes256Cfb128(void)1082 const EVP_CIPHER *OpensslEvpAes256Cfb128(void)
1083 {
1084     return EVP_aes_256_cfb128();
1085 }
1086 
OpensslEvpAes128Cfb8(void)1087 const EVP_CIPHER *OpensslEvpAes128Cfb8(void)
1088 {
1089     return EVP_aes_128_cfb8();
1090 }
1091 
OpensslEvpAes192Cfb8(void)1092 const EVP_CIPHER *OpensslEvpAes192Cfb8(void)
1093 {
1094     return EVP_aes_192_cfb8();
1095 }
1096 
OpensslEvpAes256Cfb8(void)1097 const EVP_CIPHER *OpensslEvpAes256Cfb8(void)
1098 {
1099     return EVP_aes_256_cfb8();
1100 }
1101 
OpensslEvpAes128Ccm(void)1102 const EVP_CIPHER *OpensslEvpAes128Ccm(void)
1103 {
1104     return EVP_aes_128_ccm();
1105 }
1106 
OpensslEvpAes192Ccm(void)1107 const EVP_CIPHER *OpensslEvpAes192Ccm(void)
1108 {
1109     return EVP_aes_192_ccm();
1110 }
1111 
OpensslEvpAes256Ccm(void)1112 const EVP_CIPHER *OpensslEvpAes256Ccm(void)
1113 {
1114     return EVP_aes_256_ccm();
1115 }
1116 
OpensslEvpAes128Gcm(void)1117 const EVP_CIPHER *OpensslEvpAes128Gcm(void)
1118 {
1119     return EVP_aes_128_gcm();
1120 }
1121 
OpensslEvpAes192Gcm(void)1122 const EVP_CIPHER *OpensslEvpAes192Gcm(void)
1123 {
1124     return EVP_aes_192_gcm();
1125 }
1126 
OpensslEvpAes256Gcm(void)1127 const EVP_CIPHER *OpensslEvpAes256Gcm(void)
1128 {
1129     return EVP_aes_256_gcm();
1130 }
1131 
OpensslEvpSm4Ecb(void)1132 const EVP_CIPHER *OpensslEvpSm4Ecb(void)
1133 {
1134     return EVP_sm4_ecb();
1135 }
1136 
OpensslEvpSm4Cbc(void)1137 const EVP_CIPHER *OpensslEvpSm4Cbc(void)
1138 {
1139     return EVP_sm4_cbc();
1140 }
1141 
OpensslEvpSm4Cfb(void)1142 const EVP_CIPHER *OpensslEvpSm4Cfb(void)
1143 {
1144     return EVP_sm4_cfb();
1145 }
1146 
OpensslEvpSm4Cfb128(void)1147 const EVP_CIPHER *OpensslEvpSm4Cfb128(void)
1148 {
1149     return EVP_sm4_cfb128();
1150 }
1151 
OpensslEvpSm4Ctr(void)1152 const EVP_CIPHER *OpensslEvpSm4Ctr(void)
1153 {
1154     return EVP_sm4_ctr();
1155 }
1156 
OpensslEvpSm4Ofb(void)1157 const EVP_CIPHER *OpensslEvpSm4Ofb(void)
1158 {
1159     return EVP_sm4_ofb();
1160 }
1161 
OpensslEvpCipherFetch(OSSL_LIB_CTX * ctx,const char * algorithm,const char * properties)1162 EVP_CIPHER *OpensslEvpCipherFetch(OSSL_LIB_CTX *ctx, const char *algorithm, const char *properties)
1163 {
1164     return EVP_CIPHER_fetch(ctx, algorithm, properties);
1165 }
1166 
OpensslEvpCipherFree(EVP_CIPHER * cipher)1167 void OpensslEvpCipherFree(EVP_CIPHER *cipher)
1168 {
1169     EVP_CIPHER_free(cipher);
1170 }
1171 
OpensslEvpCipherCtxNew(void)1172 EVP_CIPHER_CTX *OpensslEvpCipherCtxNew(void)
1173 {
1174     return EVP_CIPHER_CTX_new();
1175 }
1176 
OpensslEvpCipherInit(EVP_CIPHER_CTX * ctx,const EVP_CIPHER * cipher,const unsigned char * key,const unsigned char * iv,int enc)1177 int OpensslEvpCipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
1178     const unsigned char *key, const unsigned char *iv, int enc)
1179 {
1180     return EVP_CipherInit(ctx, cipher, key, iv, enc);
1181 }
1182 
OpensslEvpCipherCtxSetPadding(EVP_CIPHER_CTX * ctx,int pad)1183 int OpensslEvpCipherCtxSetPadding(EVP_CIPHER_CTX *ctx, int pad)
1184 {
1185     return EVP_CIPHER_CTX_set_padding(ctx, pad);
1186 }
1187 
OpensslEvpCipherFinalEx(EVP_CIPHER_CTX * ctx,unsigned char * out,int * outl)1188 int OpensslEvpCipherFinalEx(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl)
1189 {
1190     return EVP_CipherFinal_ex(ctx, out, outl);
1191 }
1192 
OpensslEvpCipherUpdate(EVP_CIPHER_CTX * ctx,unsigned char * out,int * outl,const unsigned char * in,int inl)1193 int OpensslEvpCipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, const unsigned char *in, int inl)
1194 {
1195     return EVP_CipherUpdate(ctx, out, outl, in, inl);
1196 }
1197 
OpensslEvpDesEde3Ecb(void)1198 const EVP_CIPHER *OpensslEvpDesEde3Ecb(void)
1199 {
1200     return EVP_des_ede3_ecb();
1201 }
1202 
OpensslEvpDesEde3Cbc(void)1203 const EVP_CIPHER *OpensslEvpDesEde3Cbc(void)
1204 {
1205     return EVP_des_ede3_cbc();
1206 }
1207 
OpensslEvpDesEde3Ofb(void)1208 const EVP_CIPHER *OpensslEvpDesEde3Ofb(void)
1209 {
1210     return EVP_des_ede3_ofb();
1211 }
1212 
OpensslEvpDesEde3Cfb64(void)1213 const EVP_CIPHER *OpensslEvpDesEde3Cfb64(void)
1214 {
1215     return EVP_des_ede3_cfb64();
1216 }
1217 
OpensslEvpDesEde3Cfb1(void)1218 const EVP_CIPHER *OpensslEvpDesEde3Cfb1(void)
1219 {
1220     return EVP_des_ede3_cfb1();
1221 }
1222 
OpensslEvpDesEde3Cfb8(void)1223 const EVP_CIPHER *OpensslEvpDesEde3Cfb8(void)
1224 {
1225     return EVP_des_ede3_cfb8();
1226 }
1227 
OpensslSm2CipherTextSize(const EC_KEY * key,const EVP_MD * digest,size_t msgLen,size_t * cipherTextSize)1228 int OpensslSm2CipherTextSize(const EC_KEY *key, const EVP_MD *digest, size_t msgLen, size_t *cipherTextSize)
1229 {
1230     return ossl_sm2_ciphertext_size(key, digest, msgLen, cipherTextSize);
1231 }
1232 
OpensslSm2PlainTextSize(const unsigned char * cipherText,size_t cipherTextSize,size_t * plainTextSize)1233 int OpensslSm2PlainTextSize(const unsigned char *cipherText, size_t cipherTextSize, size_t *plainTextSize)
1234 {
1235     return ossl_sm2_plaintext_size(cipherText, cipherTextSize, plainTextSize);
1236 }
1237 
OpensslOsslSm2Encrypt(const EC_KEY * key,const EVP_MD * digest,const uint8_t * msg,size_t msgLen,uint8_t * cipherTextBuf,size_t * cipherTextLen)1238 int OpensslOsslSm2Encrypt(const EC_KEY *key, const EVP_MD *digest, const uint8_t *msg,
1239     size_t msgLen, uint8_t *cipherTextBuf, size_t *cipherTextLen)
1240 {
1241     return ossl_sm2_encrypt(key, digest, msg, msgLen, cipherTextBuf, cipherTextLen);
1242 }
1243 
OpensslOsslSm2Decrypt(const EC_KEY * key,const EVP_MD * digest,const uint8_t * cipherText,size_t cipherTextLen,uint8_t * plainTextBuf,size_t * plainTextLen)1244 int OpensslOsslSm2Decrypt(const EC_KEY *key, const EVP_MD *digest, const uint8_t *cipherText,
1245     size_t cipherTextLen, uint8_t *plainTextBuf, size_t *plainTextLen)
1246 {
1247     return ossl_sm2_decrypt(key, digest, cipherText, cipherTextLen, plainTextBuf, plainTextLen);
1248 }
1249 
OpensslPkcs5Pbkdf2Hmac(const char * pass,int passlen,const unsigned char * salt,int saltlen,int iter,const EVP_MD * digest,int keylen,unsigned char * out)1250 int OpensslPkcs5Pbkdf2Hmac(const char *pass, int passlen, const unsigned char *salt,
1251     int saltlen, int iter, const EVP_MD *digest, int keylen, unsigned char *out)
1252 {
1253     return PKCS5_PBKDF2_HMAC(pass, passlen, salt, saltlen, iter, digest, keylen, out);
1254 }
1255 
OpensslEcGroupNewByCurveName(int nid)1256 EC_GROUP *OpensslEcGroupNewByCurveName(int nid)
1257 {
1258     return EC_GROUP_new_by_curve_name(nid);
1259 }
1260 
OpensslEvpCipherCtxCtrl(EVP_CIPHER_CTX * ctx,int type,int arg,void * ptr)1261 int OpensslEvpCipherCtxCtrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr)
1262 {
1263     return EVP_CIPHER_CTX_ctrl(ctx, type, arg, ptr);
1264 }
1265 
OpensslDhNew(void)1266 DH *OpensslDhNew(void)
1267 {
1268     return DH_new();
1269 }
1270 
OpensslDhComputeKeyPadded(unsigned char * key,const BIGNUM * pubKey,DH * dh)1271 int OpensslDhComputeKeyPadded(unsigned char *key, const BIGNUM *pubKey, DH *dh)
1272 {
1273     return DH_compute_key_padded(key, pubKey, dh);
1274 }
1275 
OpensslDhFree(DH * dh)1276 void OpensslDhFree(DH *dh)
1277 {
1278     DH_free(dh);
1279 }
1280 
OpensslDhGenerateKey(DH * dh)1281 int OpensslDhGenerateKey(DH *dh)
1282 {
1283     return DH_generate_key(dh);
1284 }
1285 
OpensslDhGet0P(const DH * dh)1286 const BIGNUM *OpensslDhGet0P(const DH *dh)
1287 {
1288     return DH_get0_p(dh);
1289 }
1290 
OpensslDhGet0Q(const DH * dh)1291 const BIGNUM *OpensslDhGet0Q(const DH *dh)
1292 {
1293     return DH_get0_q(dh);
1294 }
1295 
OpensslDhGet0G(const DH * dh)1296 const BIGNUM *OpensslDhGet0G(const DH *dh)
1297 {
1298     return DH_get0_g(dh);
1299 }
1300 
OpensslDhGetLength(const DH * dh)1301 long OpensslDhGetLength(const DH *dh)
1302 {
1303     return DH_get_length(dh);
1304 }
1305 
OpensslDhSetLength(DH * dh,long length)1306 int OpensslDhSetLength(DH *dh, long length)
1307 {
1308     return DH_set_length(dh, length);
1309 }
1310 
OpensslDhGet0PubKey(const DH * dh)1311 const BIGNUM *OpensslDhGet0PubKey(const DH *dh)
1312 {
1313     return DH_get0_pub_key(dh);
1314 }
1315 
OpensslDhGet0PrivKey(const DH * dh)1316 const BIGNUM *OpensslDhGet0PrivKey(const DH *dh)
1317 {
1318     return DH_get0_priv_key(dh);
1319 }
1320 
OpensslEvpPkeySet1Dh(EVP_PKEY * pkey,DH * key)1321 int OpensslEvpPkeySet1Dh(EVP_PKEY *pkey, DH *key)
1322 {
1323     return EVP_PKEY_set1_DH(pkey, key);
1324 }
1325 
OpensslEvpPkeyGet1Dh(EVP_PKEY * pkey)1326 DH *OpensslEvpPkeyGet1Dh(EVP_PKEY *pkey)
1327 {
1328     return EVP_PKEY_get1_DH(pkey);
1329 }
1330 
OpensslEvpPkeyIsA(const EVP_PKEY * pkey,const char * name)1331 int OpensslEvpPkeyIsA(const EVP_PKEY *pkey, const char *name)
1332 {
1333     return EVP_PKEY_is_a(pkey, name);
1334 }
1335 
OpensslEvpPkeyAssignDh(EVP_PKEY * pkey,DH * key)1336 int OpensslEvpPkeyAssignDh(EVP_PKEY *pkey, DH *key)
1337 {
1338     return EVP_PKEY_assign_DH(pkey, key);
1339 }
1340 
OpensslEvpPkeyCtxSetDhParamgenPrimeLen(EVP_PKEY_CTX * ctx,int pbits)1341 int OpensslEvpPkeyCtxSetDhParamgenPrimeLen(EVP_PKEY_CTX *ctx, int pbits)
1342 {
1343     return EVP_PKEY_CTX_set_dh_paramgen_prime_len(ctx, pbits);
1344 }
1345 
OpensslEvpPkeyCtxSetSignatureMd(EVP_PKEY_CTX * ctx,const EVP_MD * md)1346 int OpensslEvpPkeyCtxSetSignatureMd(EVP_PKEY_CTX *ctx, const EVP_MD *md)
1347 {
1348     return EVP_PKEY_CTX_set_signature_md(ctx, md);
1349 }
1350 
OpensslDhUpRef(DH * r)1351 int OpensslDhUpRef(DH *r)
1352 {
1353     return DH_up_ref(r);
1354 }
1355 
OpensslDhSet0Pqg(DH * dh,BIGNUM * p,BIGNUM * q,BIGNUM * g)1356 int OpensslDhSet0Pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g)
1357 {
1358     return DH_set0_pqg(dh, p, q, g);
1359 }
1360 
OpensslDhSet0Key(DH * dh,BIGNUM * pubKey,BIGNUM * privKey)1361 int OpensslDhSet0Key(DH *dh, BIGNUM *pubKey, BIGNUM *privKey)
1362 {
1363     return DH_set0_key(dh, pubKey, privKey);
1364 }
1365 
OpensslD2iSm2CipherText(const uint8_t * ciphertext,size_t ciphertextLen)1366 struct Sm2CipherTextSt *OpensslD2iSm2CipherText(const uint8_t *ciphertext, size_t ciphertextLen)
1367 {
1368     return d2i_Sm2CipherText(NULL, &ciphertext, ciphertextLen);
1369 }
1370 
OpensslSm2CipherTextFree(struct Sm2CipherTextSt * sm2Text)1371 void OpensslSm2CipherTextFree(struct Sm2CipherTextSt *sm2Text)
1372 {
1373     Sm2CipherText_free(sm2Text);
1374 }
1375 
OpensslAsn1OctetStringFree(ASN1_OCTET_STRING * field)1376 void OpensslAsn1OctetStringFree(ASN1_OCTET_STRING *field)
1377 {
1378     ASN1_OCTET_STRING_free(field);
1379 }
1380 
OpensslAsn1OctetStringNew(void)1381 ASN1_OCTET_STRING *OpensslAsn1OctetStringNew(void)
1382 {
1383     return ASN1_OCTET_STRING_new();
1384 }
1385 
OpensslAsn1OctetStringSet(ASN1_OCTET_STRING * x,const unsigned char * d,int len)1386 int OpensslAsn1OctetStringSet(ASN1_OCTET_STRING *x, const unsigned char *d, int len)
1387 {
1388     return ASN1_STRING_set(x, d, len);
1389 }
1390 
OpensslSm2CipherTextNew(void)1391 struct Sm2CipherTextSt *OpensslSm2CipherTextNew(void)
1392 {
1393     return Sm2CipherText_new();
1394 }
1395 
OpensslI2dSm2CipherText(struct Sm2CipherTextSt * sm2Text,unsigned char ** returnData)1396 int OpensslI2dSm2CipherText(struct Sm2CipherTextSt *sm2Text, unsigned char **returnData)
1397 {
1398     return i2d_Sm2CipherText(sm2Text, returnData);
1399 }
1400 
OpensslAsn1StringLength(ASN1_OCTET_STRING * p)1401 int OpensslAsn1StringLength(ASN1_OCTET_STRING *p)
1402 {
1403     return ASN1_STRING_length(p);
1404 }
1405 
OpensslAsn1StringGet0Data(ASN1_OCTET_STRING * p)1406 const unsigned char *OpensslAsn1StringGet0Data(ASN1_OCTET_STRING *p)
1407 {
1408     return ASN1_STRING_get0_data(p);
1409 }
1410 
OpensslOsslParamBldNew(void)1411 OSSL_PARAM_BLD *OpensslOsslParamBldNew(void)
1412 {
1413     return OSSL_PARAM_BLD_new();
1414 }
1415 
OpensslOsslParamBldFree(OSSL_PARAM_BLD * bld)1416 void OpensslOsslParamBldFree(OSSL_PARAM_BLD *bld)
1417 {
1418     OSSL_PARAM_BLD_free(bld);
1419 }
1420 
OpensslOsslParamBldToParam(OSSL_PARAM_BLD * bld)1421 OSSL_PARAM *OpensslOsslParamBldToParam(OSSL_PARAM_BLD *bld)
1422 {
1423     return OSSL_PARAM_BLD_to_param(bld);
1424 }
1425 
OpensslOsslParamBldPushUtf8String(OSSL_PARAM_BLD * bld,const char * key,const char * buf,size_t bsize)1426 int OpensslOsslParamBldPushUtf8String(OSSL_PARAM_BLD *bld, const char *key, const char *buf, size_t bsize)
1427 {
1428     return OSSL_PARAM_BLD_push_utf8_string(bld, key, buf, bsize);
1429 }
1430 
OpensslOsslParamBldPushOctetString(OSSL_PARAM_BLD * bld,const char * key,const void * buf,size_t bsize)1431 int OpensslOsslParamBldPushOctetString(OSSL_PARAM_BLD *bld, const char *key, const void *buf, size_t bsize)
1432 {
1433     return OSSL_PARAM_BLD_push_octet_string(bld, key, buf, bsize);
1434 }
1435 
OpensslEvpPkeyCtxSetEcParamgenCurveNid(EVP_PKEY_CTX * ctx,int nid)1436 int OpensslEvpPkeyCtxSetEcParamgenCurveNid(EVP_PKEY_CTX *ctx, int nid)
1437 {
1438     return EVP_PKEY_CTX_set_ec_paramgen_curve_nid(ctx, nid);
1439 }
1440 
OpensslEvpPkeyFromDataInit(EVP_PKEY_CTX * ctx)1441 int OpensslEvpPkeyFromDataInit(EVP_PKEY_CTX *ctx)
1442 {
1443     return EVP_PKEY_fromdata_init(ctx);
1444 }
1445 
OpensslEvpPkeyFromData(EVP_PKEY_CTX * ctx,EVP_PKEY ** ppkey,int selection,OSSL_PARAM params[])1446 int OpensslEvpPkeyFromData(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey, int selection, OSSL_PARAM params[])
1447 {
1448     return EVP_PKEY_fromdata(ctx, ppkey, selection, params);
1449 }
1450 
OpensslEvpPkeyGet1EcKey(EVP_PKEY * pkey)1451 EC_KEY *OpensslEvpPkeyGet1EcKey(EVP_PKEY *pkey)
1452 {
1453     return EVP_PKEY_get1_EC_KEY(pkey);
1454 }
1455 
OpensslOsslParamFree(OSSL_PARAM * params)1456 void OpensslOsslParamFree(OSSL_PARAM *params)
1457 {
1458     OSSL_PARAM_free(params);
1459 }
1460 
OpensslEcOct2Point(const EC_GROUP * group,EC_POINT * p,const unsigned char * buf,size_t len,BN_CTX * ctx)1461 int OpensslEcOct2Point(const EC_GROUP *group, EC_POINT *p, const unsigned char *buf, size_t len, BN_CTX *ctx)
1462 {
1463     return EC_POINT_oct2point(group, p, buf, len, ctx);
1464 }
1465 
OpensslEcPointSetAffineCoordinates(const EC_GROUP * group,EC_POINT * p,const BIGNUM * x,const BIGNUM * y,BN_CTX * ctx)1466 int OpensslEcPointSetAffineCoordinates(const EC_GROUP *group, EC_POINT *p,
1467     const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx)
1468 {
1469     return EC_POINT_set_affine_coordinates(group, p, x, y, ctx);
1470 }
1471 
OpensslEcPointGetAffineCoordinates(const EC_GROUP * group,const EC_POINT * p,BIGNUM * x,BIGNUM * y,BN_CTX * ctx)1472 int OpensslEcPointGetAffineCoordinates(const EC_GROUP *group, const EC_POINT *p,
1473     BIGNUM *x, BIGNUM *y, BN_CTX *ctx)
1474 {
1475     return EC_POINT_get_affine_coordinates(group, p, x, y, ctx);
1476 }
1477 
OpensslEvpKdfFetch(OSSL_LIB_CTX * libctx,const char * algorithm,const char * properties)1478 EVP_KDF *OpensslEvpKdfFetch(OSSL_LIB_CTX *libctx, const char *algorithm,
1479     const char *properties)
1480 {
1481     return EVP_KDF_fetch(libctx, algorithm, properties);
1482 }
1483 
OpensslEvpKdfCtxNew(EVP_KDF * kdf)1484 EVP_KDF_CTX *OpensslEvpKdfCtxNew(EVP_KDF *kdf)
1485 {
1486     return EVP_KDF_CTX_new(kdf);
1487 }
1488 
OpensslEvpKdfFree(EVP_KDF * kdf)1489 void OpensslEvpKdfFree(EVP_KDF *kdf)
1490 {
1491     EVP_KDF_free(kdf);
1492 }
1493 
OpensslEvpKdfCtxFree(EVP_KDF_CTX * ctx)1494 void OpensslEvpKdfCtxFree(EVP_KDF_CTX *ctx)
1495 {
1496     EVP_KDF_CTX_free(ctx);
1497 }
1498 
OpensslEvpKdfDerive(EVP_KDF_CTX * ctx,unsigned char * key,size_t keylen,const OSSL_PARAM params[])1499 int OpensslEvpKdfDerive(EVP_KDF_CTX *ctx, unsigned char *key, size_t keylen,
1500     const OSSL_PARAM params[])
1501 {
1502     return EVP_KDF_derive(ctx, key, keylen, params);
1503 }
1504 
OpensslOsslEncoderCtxNewForPkey(const EVP_PKEY * pkey,int selection,const char * outputType,const char * outputStruct,const char * propquery)1505 OSSL_ENCODER_CTX *OpensslOsslEncoderCtxNewForPkey(const EVP_PKEY *pkey, int selection,
1506     const char *outputType, const char *outputStruct, const char *propquery)
1507 {
1508     return OSSL_ENCODER_CTX_new_for_pkey(pkey, selection, outputType, outputStruct, propquery);
1509 }
1510 
OpensslOsslEncoderToData(OSSL_ENCODER_CTX * ctx,unsigned char ** pdata,size_t * len)1511 int OpensslOsslEncoderToData(OSSL_ENCODER_CTX *ctx, unsigned char **pdata, size_t *len)
1512 {
1513     return OSSL_ENCODER_to_data(ctx, pdata, len);
1514 }
1515 
OpensslOsslDecoderCtxSetPassPhrase(OSSL_DECODER_CTX * ctx,const unsigned char * kstr,size_t klen)1516 int OpensslOsslDecoderCtxSetPassPhrase(OSSL_DECODER_CTX *ctx, const unsigned char *kstr, size_t klen)
1517 {
1518     return OSSL_DECODER_CTX_set_passphrase(ctx, kstr, klen);
1519 }
1520 
OpensslOsslEncoderCtxFree(OSSL_ENCODER_CTX * ctx)1521 void OpensslOsslEncoderCtxFree(OSSL_ENCODER_CTX *ctx)
1522 {
1523     OSSL_ENCODER_CTX_free(ctx);
1524 }
1525 
OpensslOsslDecoderCtxNewForPkey(EVP_PKEY ** pkey,const char * inputType,const char * inputStructure,const char * keytype,int selection,OSSL_LIB_CTX * libctx,const char * propquery)1526 OSSL_DECODER_CTX *OpensslOsslDecoderCtxNewForPkey(EVP_PKEY **pkey, const char *inputType,
1527     const char *inputStructure, const char *keytype, int selection, OSSL_LIB_CTX *libctx, const char *propquery)
1528 {
1529     return OSSL_DECODER_CTX_new_for_pkey(pkey, inputType, inputStructure, keytype, selection, libctx, propquery);
1530 }
1531 
OpensslOsslDecoderFromData(OSSL_DECODER_CTX * ctx,const unsigned char ** pdata,size_t * len)1532 int OpensslOsslDecoderFromData(OSSL_DECODER_CTX *ctx, const unsigned char **pdata,
1533     size_t *len)
1534 {
1535     return OSSL_DECODER_from_data(ctx, pdata, len);
1536 }
1537 
OpensslOsslDecoderCtxFree(OSSL_DECODER_CTX * ctx)1538 void OpensslOsslDecoderCtxFree(OSSL_DECODER_CTX *ctx)
1539 {
1540     OSSL_DECODER_CTX_free(ctx);
1541 }
1542 
OpensslEcKeyNewbyCurveNameEx(OSSL_LIB_CTX * ctx,const char * propq,int nid)1543 EC_KEY *OpensslEcKeyNewbyCurveNameEx(OSSL_LIB_CTX *ctx, const char *propq, int nid)
1544 {
1545     return EC_KEY_new_by_curve_name_ex(ctx, propq, nid);
1546 }
1547 
OpensslEvpPkeyGetOctetStringParam(const EVP_PKEY * pkey,const char * keyName,unsigned char * buf,size_t maxBufSz,size_t * outLen)1548 int OpensslEvpPkeyGetOctetStringParam(const EVP_PKEY *pkey, const char *keyName, unsigned char *buf, size_t maxBufSz,
1549     size_t *outLen)
1550 {
1551     return EVP_PKEY_get_octet_string_param(pkey, keyName, buf, maxBufSz, outLen);
1552 }
1553 
OpensslEcKeySetFlags(EC_KEY * key,int flags)1554 void OpensslEcKeySetFlags(EC_KEY *key, int flags)
1555 {
1556     EC_KEY_set_flags(key, flags);
1557 }
1558 
OpensslEvpPkeyGetBnParam(const EVP_PKEY * pkey,const char * keyName,BIGNUM ** bn)1559 int OpensslEvpPkeyGetBnParam(const EVP_PKEY *pkey, const char *keyName, BIGNUM **bn)
1560 {
1561     return EVP_PKEY_get_bn_param(pkey, keyName, bn);
1562 }
1563