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