• 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 
OpensslEvpDesEcb(void)1228 const EVP_CIPHER *OpensslEvpDesEcb(void)
1229 {
1230     return EVP_des_ecb();
1231 }
1232 
OpensslEvpDesCbc(void)1233 const EVP_CIPHER *OpensslEvpDesCbc(void)
1234 {
1235     return EVP_des_cbc();
1236 }
1237 
OpensslEvpDesOfb(void)1238 const EVP_CIPHER *OpensslEvpDesOfb(void)
1239 {
1240     return EVP_des_ofb();
1241 }
1242 
OpensslEvpDesCfb64(void)1243 const EVP_CIPHER *OpensslEvpDesCfb64(void)
1244 {
1245     return EVP_des_cfb64();
1246 }
1247 
OpensslEvpDesCfb1(void)1248 const EVP_CIPHER *OpensslEvpDesCfb1(void)
1249 {
1250     return EVP_des_cfb1();
1251 }
1252 
OpensslEvpDesCfb8(void)1253 const EVP_CIPHER *OpensslEvpDesCfb8(void)
1254 {
1255     return EVP_des_cfb8();
1256 }
1257 
OpensslSm2CipherTextSize(const EC_KEY * key,const EVP_MD * digest,size_t msgLen,size_t * cipherTextSize)1258 int OpensslSm2CipherTextSize(const EC_KEY *key, const EVP_MD *digest, size_t msgLen, size_t *cipherTextSize)
1259 {
1260     return ossl_sm2_ciphertext_size(key, digest, msgLen, cipherTextSize);
1261 }
1262 
OpensslSm2PlainTextSize(const unsigned char * cipherText,size_t cipherTextSize,size_t * plainTextSize)1263 int OpensslSm2PlainTextSize(const unsigned char *cipherText, size_t cipherTextSize, size_t *plainTextSize)
1264 {
1265     return ossl_sm2_plaintext_size(cipherText, cipherTextSize, plainTextSize);
1266 }
1267 
OpensslOsslSm2Encrypt(const EC_KEY * key,const EVP_MD * digest,const uint8_t * msg,size_t msgLen,uint8_t * cipherTextBuf,size_t * cipherTextLen)1268 int OpensslOsslSm2Encrypt(const EC_KEY *key, const EVP_MD *digest, const uint8_t *msg,
1269     size_t msgLen, uint8_t *cipherTextBuf, size_t *cipherTextLen)
1270 {
1271     return ossl_sm2_encrypt(key, digest, msg, msgLen, cipherTextBuf, cipherTextLen);
1272 }
1273 
OpensslOsslSm2Decrypt(const EC_KEY * key,const EVP_MD * digest,const uint8_t * cipherText,size_t cipherTextLen,uint8_t * plainTextBuf,size_t * plainTextLen)1274 int OpensslOsslSm2Decrypt(const EC_KEY *key, const EVP_MD *digest, const uint8_t *cipherText,
1275     size_t cipherTextLen, uint8_t *plainTextBuf, size_t *plainTextLen)
1276 {
1277     return ossl_sm2_decrypt(key, digest, cipherText, cipherTextLen, plainTextBuf, plainTextLen);
1278 }
1279 
OpensslPkcs5Pbkdf2Hmac(const char * pass,int passlen,const unsigned char * salt,int saltlen,int iter,const EVP_MD * digest,int keylen,unsigned char * out)1280 int OpensslPkcs5Pbkdf2Hmac(const char *pass, int passlen, const unsigned char *salt,
1281     int saltlen, int iter, const EVP_MD *digest, int keylen, unsigned char *out)
1282 {
1283     return PKCS5_PBKDF2_HMAC(pass, passlen, salt, saltlen, iter, digest, keylen, out);
1284 }
1285 
OpensslEcGroupNewByCurveName(int nid)1286 EC_GROUP *OpensslEcGroupNewByCurveName(int nid)
1287 {
1288     return EC_GROUP_new_by_curve_name(nid);
1289 }
1290 
OpensslEvpEncryptInit(EVP_CIPHER_CTX * ctx,const EVP_CIPHER * cipher,const unsigned char * key,const unsigned char * iv)1291 int OpensslEvpEncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
1292     const unsigned char *key, const unsigned char *iv)
1293 {
1294     return EVP_EncryptInit(ctx, cipher, key, iv);
1295 }
1296 
OpensslEvpCipherCtxCtrl(EVP_CIPHER_CTX * ctx,int type,int arg,void * ptr)1297 int OpensslEvpCipherCtxCtrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr)
1298 {
1299     return EVP_CIPHER_CTX_ctrl(ctx, type, arg, ptr);
1300 }
1301 
OpensslDhNew(void)1302 DH *OpensslDhNew(void)
1303 {
1304     return DH_new();
1305 }
1306 
OpensslDhComputeKeyPadded(unsigned char * key,const BIGNUM * pubKey,DH * dh)1307 int OpensslDhComputeKeyPadded(unsigned char *key, const BIGNUM *pubKey, DH *dh)
1308 {
1309     return DH_compute_key_padded(key, pubKey, dh);
1310 }
1311 
OpensslDhFree(DH * dh)1312 void OpensslDhFree(DH *dh)
1313 {
1314     DH_free(dh);
1315 }
1316 
OpensslDhGenerateKey(DH * dh)1317 int OpensslDhGenerateKey(DH *dh)
1318 {
1319     return DH_generate_key(dh);
1320 }
1321 
OpensslDhGet0P(const DH * dh)1322 const BIGNUM *OpensslDhGet0P(const DH *dh)
1323 {
1324     return DH_get0_p(dh);
1325 }
1326 
OpensslDhGet0Q(const DH * dh)1327 const BIGNUM *OpensslDhGet0Q(const DH *dh)
1328 {
1329     return DH_get0_q(dh);
1330 }
1331 
OpensslDhGet0G(const DH * dh)1332 const BIGNUM *OpensslDhGet0G(const DH *dh)
1333 {
1334     return DH_get0_g(dh);
1335 }
1336 
OpensslDhGetLength(const DH * dh)1337 long OpensslDhGetLength(const DH *dh)
1338 {
1339     return DH_get_length(dh);
1340 }
1341 
OpensslDhSetLength(DH * dh,long length)1342 int OpensslDhSetLength(DH *dh, long length)
1343 {
1344     return DH_set_length(dh, length);
1345 }
1346 
OpensslDhGet0PubKey(const DH * dh)1347 const BIGNUM *OpensslDhGet0PubKey(const DH *dh)
1348 {
1349     return DH_get0_pub_key(dh);
1350 }
1351 
OpensslDhGet0PrivKey(const DH * dh)1352 const BIGNUM *OpensslDhGet0PrivKey(const DH *dh)
1353 {
1354     return DH_get0_priv_key(dh);
1355 }
1356 
OpensslEvpPkeySet1Dh(EVP_PKEY * pkey,DH * key)1357 int OpensslEvpPkeySet1Dh(EVP_PKEY *pkey, DH *key)
1358 {
1359     return EVP_PKEY_set1_DH(pkey, key);
1360 }
1361 
OpensslEvpPkeyGet1Dh(EVP_PKEY * pkey)1362 DH *OpensslEvpPkeyGet1Dh(EVP_PKEY *pkey)
1363 {
1364     return EVP_PKEY_get1_DH(pkey);
1365 }
1366 
OpensslEvpPkeyIsA(const EVP_PKEY * pkey,const char * name)1367 int OpensslEvpPkeyIsA(const EVP_PKEY *pkey, const char *name)
1368 {
1369     return EVP_PKEY_is_a(pkey, name);
1370 }
1371 
OpensslEvpPkeyAssignDh(EVP_PKEY * pkey,DH * key)1372 int OpensslEvpPkeyAssignDh(EVP_PKEY *pkey, DH *key)
1373 {
1374     return EVP_PKEY_assign_DH(pkey, key);
1375 }
1376 
OpensslEvpPkeyCtxSetDhParamgenPrimeLen(EVP_PKEY_CTX * ctx,int pbits)1377 int OpensslEvpPkeyCtxSetDhParamgenPrimeLen(EVP_PKEY_CTX *ctx, int pbits)
1378 {
1379     return EVP_PKEY_CTX_set_dh_paramgen_prime_len(ctx, pbits);
1380 }
1381 
OpensslEvpPkeyCtxSetSignatureMd(EVP_PKEY_CTX * ctx,const EVP_MD * md)1382 int OpensslEvpPkeyCtxSetSignatureMd(EVP_PKEY_CTX *ctx, const EVP_MD *md)
1383 {
1384     return EVP_PKEY_CTX_set_signature_md(ctx, md);
1385 }
1386 
OpensslDhUpRef(DH * r)1387 int OpensslDhUpRef(DH *r)
1388 {
1389     return DH_up_ref(r);
1390 }
1391 
OpensslDhSet0Pqg(DH * dh,BIGNUM * p,BIGNUM * q,BIGNUM * g)1392 int OpensslDhSet0Pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g)
1393 {
1394     return DH_set0_pqg(dh, p, q, g);
1395 }
1396 
OpensslDhSet0Key(DH * dh,BIGNUM * pubKey,BIGNUM * privKey)1397 int OpensslDhSet0Key(DH *dh, BIGNUM *pubKey, BIGNUM *privKey)
1398 {
1399     return DH_set0_key(dh, pubKey, privKey);
1400 }
1401 
OpensslD2iSm2CipherText(const uint8_t * ciphertext,size_t ciphertextLen)1402 struct Sm2CipherTextSt *OpensslD2iSm2CipherText(const uint8_t *ciphertext, size_t ciphertextLen)
1403 {
1404     return d2i_Sm2CipherText(NULL, &ciphertext, ciphertextLen);
1405 }
1406 
OpensslSm2CipherTextFree(struct Sm2CipherTextSt * sm2Text)1407 void OpensslSm2CipherTextFree(struct Sm2CipherTextSt *sm2Text)
1408 {
1409     Sm2CipherText_free(sm2Text);
1410 }
1411 
OpensslAsn1OctetStringFree(ASN1_OCTET_STRING * field)1412 void OpensslAsn1OctetStringFree(ASN1_OCTET_STRING *field)
1413 {
1414     ASN1_OCTET_STRING_free(field);
1415 }
1416 
OpensslAsn1OctetStringNew(void)1417 ASN1_OCTET_STRING *OpensslAsn1OctetStringNew(void)
1418 {
1419     return ASN1_OCTET_STRING_new();
1420 }
1421 
OpensslAsn1OctetStringSet(ASN1_OCTET_STRING * x,const unsigned char * d,int len)1422 int OpensslAsn1OctetStringSet(ASN1_OCTET_STRING *x, const unsigned char *d, int len)
1423 {
1424     return ASN1_STRING_set(x, d, len);
1425 }
1426 
OpensslSm2CipherTextNew(void)1427 struct Sm2CipherTextSt *OpensslSm2CipherTextNew(void)
1428 {
1429     return Sm2CipherText_new();
1430 }
1431 
OpensslI2dSm2CipherText(struct Sm2CipherTextSt * sm2Text,unsigned char ** returnData)1432 int OpensslI2dSm2CipherText(struct Sm2CipherTextSt *sm2Text, unsigned char **returnData)
1433 {
1434     return i2d_Sm2CipherText(sm2Text, returnData);
1435 }
1436 
OpensslAsn1StringLength(ASN1_OCTET_STRING * p)1437 int OpensslAsn1StringLength(ASN1_OCTET_STRING *p)
1438 {
1439     return ASN1_STRING_length(p);
1440 }
1441 
OpensslAsn1StringGet0Data(ASN1_OCTET_STRING * p)1442 const unsigned char *OpensslAsn1StringGet0Data(ASN1_OCTET_STRING *p)
1443 {
1444     return ASN1_STRING_get0_data(p);
1445 }
1446 
OpensslEcdsaSigNew()1447 ECDSA_SIG *OpensslEcdsaSigNew()
1448 {
1449     return ECDSA_SIG_new();
1450 }
1451 
OpensslD2iSm2EcdsaSig(const unsigned char ** inputData,int dataLen)1452 ECDSA_SIG *OpensslD2iSm2EcdsaSig(const unsigned char **inputData, int dataLen)
1453 {
1454     return d2i_ECDSA_SIG(NULL, inputData, dataLen);
1455 }
1456 
OpensslI2dSm2EcdsaSig(ECDSA_SIG * sm2Text,unsigned char ** returnData)1457 int OpensslI2dSm2EcdsaSig(ECDSA_SIG *sm2Text, unsigned char **returnData)
1458 {
1459     return i2d_ECDSA_SIG(sm2Text, returnData);
1460 }
1461 
OpensslSm2EcdsaSigFree(ECDSA_SIG * sm2Text)1462 void OpensslSm2EcdsaSigFree(ECDSA_SIG *sm2Text)
1463 {
1464     return ECDSA_SIG_free(sm2Text);
1465 }
1466 
OpensslEcdsaSigGet0r(const ECDSA_SIG * sig)1467 const BIGNUM *OpensslEcdsaSigGet0r(const ECDSA_SIG *sig)
1468 {
1469     return ECDSA_SIG_get0_r(sig);
1470 }
1471 
OpensslEcdsaSigGet0s(const ECDSA_SIG * sig)1472 const BIGNUM *OpensslEcdsaSigGet0s(const ECDSA_SIG *sig)
1473 {
1474     return ECDSA_SIG_get0_s(sig);
1475 }
1476 
OpensslEcdsaSigSet0(ECDSA_SIG * sig,BIGNUM * r,BIGNUM * s)1477 int OpensslEcdsaSigSet0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s)
1478 {
1479     return ECDSA_SIG_set0(sig, r, s);
1480 }
1481 
OpensslOsslParamBldNew(void)1482 OSSL_PARAM_BLD *OpensslOsslParamBldNew(void)
1483 {
1484     return OSSL_PARAM_BLD_new();
1485 }
1486 
OpensslOsslParamBldFree(OSSL_PARAM_BLD * bld)1487 void OpensslOsslParamBldFree(OSSL_PARAM_BLD *bld)
1488 {
1489     OSSL_PARAM_BLD_free(bld);
1490 }
1491 
OpensslOsslParamBldToParam(OSSL_PARAM_BLD * bld)1492 OSSL_PARAM *OpensslOsslParamBldToParam(OSSL_PARAM_BLD *bld)
1493 {
1494     return OSSL_PARAM_BLD_to_param(bld);
1495 }
1496 
OpensslOsslParamBldPushUtf8String(OSSL_PARAM_BLD * bld,const char * key,const char * buf,size_t bsize)1497 int OpensslOsslParamBldPushUtf8String(OSSL_PARAM_BLD *bld, const char *key, const char *buf, size_t bsize)
1498 {
1499     return OSSL_PARAM_BLD_push_utf8_string(bld, key, buf, bsize);
1500 }
1501 
OpensslOsslParamBldPushOctetString(OSSL_PARAM_BLD * bld,const char * key,const void * buf,size_t bsize)1502 int OpensslOsslParamBldPushOctetString(OSSL_PARAM_BLD *bld, const char *key, const void *buf, size_t bsize)
1503 {
1504     return OSSL_PARAM_BLD_push_octet_string(bld, key, buf, bsize);
1505 }
1506 
OpensslEvpPkeyCtxSetEcParamgenCurveNid(EVP_PKEY_CTX * ctx,int nid)1507 int OpensslEvpPkeyCtxSetEcParamgenCurveNid(EVP_PKEY_CTX *ctx, int nid)
1508 {
1509     return EVP_PKEY_CTX_set_ec_paramgen_curve_nid(ctx, nid);
1510 }
1511 
OpensslEvpPkeyFromDataInit(EVP_PKEY_CTX * ctx)1512 int OpensslEvpPkeyFromDataInit(EVP_PKEY_CTX *ctx)
1513 {
1514     return EVP_PKEY_fromdata_init(ctx);
1515 }
1516 
OpensslEvpPkeyFromData(EVP_PKEY_CTX * ctx,EVP_PKEY ** ppkey,int selection,OSSL_PARAM params[])1517 int OpensslEvpPkeyFromData(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey, int selection, OSSL_PARAM params[])
1518 {
1519     return EVP_PKEY_fromdata(ctx, ppkey, selection, params);
1520 }
1521 
OpensslEvpPkeyGet1EcKey(EVP_PKEY * pkey)1522 EC_KEY *OpensslEvpPkeyGet1EcKey(EVP_PKEY *pkey)
1523 {
1524     return EVP_PKEY_get1_EC_KEY(pkey);
1525 }
1526 
OpensslOsslParamFree(OSSL_PARAM * params)1527 void OpensslOsslParamFree(OSSL_PARAM *params)
1528 {
1529     OSSL_PARAM_free(params);
1530 }
1531 
OpensslEcOct2Point(const EC_GROUP * group,EC_POINT * p,const unsigned char * buf,size_t len,BN_CTX * ctx)1532 int OpensslEcOct2Point(const EC_GROUP *group, EC_POINT *p, const unsigned char *buf, size_t len, BN_CTX *ctx)
1533 {
1534     return EC_POINT_oct2point(group, p, buf, len, ctx);
1535 }
1536 
OpensslEcPointSetAffineCoordinates(const EC_GROUP * group,EC_POINT * p,const BIGNUM * x,const BIGNUM * y,BN_CTX * ctx)1537 int OpensslEcPointSetAffineCoordinates(const EC_GROUP *group, EC_POINT *p,
1538     const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx)
1539 {
1540     return EC_POINT_set_affine_coordinates(group, p, x, y, ctx);
1541 }
1542 
OpensslEcPointGetAffineCoordinates(const EC_GROUP * group,const EC_POINT * p,BIGNUM * x,BIGNUM * y,BN_CTX * ctx)1543 int OpensslEcPointGetAffineCoordinates(const EC_GROUP *group, const EC_POINT *p,
1544     BIGNUM *x, BIGNUM *y, BN_CTX *ctx)
1545 {
1546     return EC_POINT_get_affine_coordinates(group, p, x, y, ctx);
1547 }
1548 
OpensslEvpKdfFetch(OSSL_LIB_CTX * libctx,const char * algorithm,const char * properties)1549 EVP_KDF *OpensslEvpKdfFetch(OSSL_LIB_CTX *libctx, const char *algorithm,
1550     const char *properties)
1551 {
1552     return EVP_KDF_fetch(libctx, algorithm, properties);
1553 }
1554 
OpensslEvpKdfCtxNew(EVP_KDF * kdf)1555 EVP_KDF_CTX *OpensslEvpKdfCtxNew(EVP_KDF *kdf)
1556 {
1557     return EVP_KDF_CTX_new(kdf);
1558 }
1559 
OpensslEvpKdfFree(EVP_KDF * kdf)1560 void OpensslEvpKdfFree(EVP_KDF *kdf)
1561 {
1562     EVP_KDF_free(kdf);
1563 }
1564 
OpensslEvpKdfCtxFree(EVP_KDF_CTX * ctx)1565 void OpensslEvpKdfCtxFree(EVP_KDF_CTX *ctx)
1566 {
1567     EVP_KDF_CTX_free(ctx);
1568 }
1569 
OpensslEvpKdfDerive(EVP_KDF_CTX * ctx,unsigned char * key,size_t keylen,const OSSL_PARAM params[])1570 int OpensslEvpKdfDerive(EVP_KDF_CTX *ctx, unsigned char *key, size_t keylen,
1571     const OSSL_PARAM params[])
1572 {
1573     return EVP_KDF_derive(ctx, key, keylen, params);
1574 }
1575 
OpensslOsslEncoderCtxNewForPkey(const EVP_PKEY * pkey,int selection,const char * outputType,const char * outputStruct,const char * propquery)1576 OSSL_ENCODER_CTX *OpensslOsslEncoderCtxNewForPkey(const EVP_PKEY *pkey, int selection,
1577     const char *outputType, const char *outputStruct, const char *propquery)
1578 {
1579     return OSSL_ENCODER_CTX_new_for_pkey(pkey, selection, outputType, outputStruct, propquery);
1580 }
1581 
OpensslOsslEncoderToData(OSSL_ENCODER_CTX * ctx,unsigned char ** pdata,size_t * len)1582 int OpensslOsslEncoderToData(OSSL_ENCODER_CTX *ctx, unsigned char **pdata, size_t *len)
1583 {
1584     return OSSL_ENCODER_to_data(ctx, pdata, len);
1585 }
1586 
OpensslOsslDecoderCtxSetPassPhrase(OSSL_DECODER_CTX * ctx,const unsigned char * kstr,size_t klen)1587 int OpensslOsslDecoderCtxSetPassPhrase(OSSL_DECODER_CTX *ctx, const unsigned char *kstr, size_t klen)
1588 {
1589     return OSSL_DECODER_CTX_set_passphrase(ctx, kstr, klen);
1590 }
1591 
OpensslOsslEncoderCtxFree(OSSL_ENCODER_CTX * ctx)1592 void OpensslOsslEncoderCtxFree(OSSL_ENCODER_CTX *ctx)
1593 {
1594     OSSL_ENCODER_CTX_free(ctx);
1595 }
1596 
OpensslOsslDecoderCtxNewForPkey(EVP_PKEY ** pkey,const char * inputType,const char * inputStructure,const char * keytype,int selection,OSSL_LIB_CTX * libctx,const char * propquery)1597 OSSL_DECODER_CTX *OpensslOsslDecoderCtxNewForPkey(EVP_PKEY **pkey, const char *inputType,
1598     const char *inputStructure, const char *keytype, int selection, OSSL_LIB_CTX *libctx, const char *propquery)
1599 {
1600     return OSSL_DECODER_CTX_new_for_pkey(pkey, inputType, inputStructure, keytype, selection, libctx, propquery);
1601 }
1602 
OpensslOsslDecoderFromData(OSSL_DECODER_CTX * ctx,const unsigned char ** pdata,size_t * len)1603 int OpensslOsslDecoderFromData(OSSL_DECODER_CTX *ctx, const unsigned char **pdata,
1604     size_t *len)
1605 {
1606     return OSSL_DECODER_from_data(ctx, pdata, len);
1607 }
1608 
OpensslOsslDecoderCtxFree(OSSL_DECODER_CTX * ctx)1609 void OpensslOsslDecoderCtxFree(OSSL_DECODER_CTX *ctx)
1610 {
1611     OSSL_DECODER_CTX_free(ctx);
1612 }
1613 
OpensslEcKeyNewbyCurveNameEx(OSSL_LIB_CTX * ctx,const char * propq,int nid)1614 EC_KEY *OpensslEcKeyNewbyCurveNameEx(OSSL_LIB_CTX *ctx, const char *propq, int nid)
1615 {
1616     return EC_KEY_new_by_curve_name_ex(ctx, propq, nid);
1617 }
1618 
OpensslEvpPkeyGetOctetStringParam(const EVP_PKEY * pkey,const char * keyName,unsigned char * buf,size_t maxBufSz,size_t * outLen)1619 int OpensslEvpPkeyGetOctetStringParam(const EVP_PKEY *pkey, const char *keyName, unsigned char *buf, size_t maxBufSz,
1620     size_t *outLen)
1621 {
1622     return EVP_PKEY_get_octet_string_param(pkey, keyName, buf, maxBufSz, outLen);
1623 }
1624 
OpensslEcKeySetFlags(EC_KEY * key,int flags)1625 void OpensslEcKeySetFlags(EC_KEY *key, int flags)
1626 {
1627     EC_KEY_set_flags(key, flags);
1628 }
1629 
OpensslEvpPkeyGetBnParam(const EVP_PKEY * pkey,const char * keyName,BIGNUM ** bn)1630 int OpensslEvpPkeyGetBnParam(const EVP_PKEY *pkey, const char *keyName, BIGNUM **bn)
1631 {
1632     return EVP_PKEY_get_bn_param(pkey, keyName, bn);
1633 }
1634