diff options
-rw-r--r-- | src/lib/libcrypto/bn/bn.h | 16 | ||||
-rw-r--r-- | src/lib/libcrypto/bn/bn_lib.c | 20 |
2 files changed, 33 insertions, 3 deletions
diff --git a/src/lib/libcrypto/bn/bn.h b/src/lib/libcrypto/bn/bn.h index 319cfd67ca..cfdf46906b 100644 --- a/src/lib/libcrypto/bn/bn.h +++ b/src/lib/libcrypto/bn/bn.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn.h,v 1.44 2021/11/18 18:01:08 tb Exp $ */ | 1 | /* $OpenBSD: bn.h,v 1.45 2021/12/04 15:48:23 tb Exp $ */ |
2 | /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -297,10 +297,19 @@ struct bn_gencb_st { | |||
297 | 297 | ||
298 | BN_GENCB *BN_GENCB_new(void); | 298 | BN_GENCB *BN_GENCB_new(void); |
299 | void BN_GENCB_free(BN_GENCB *cb); | 299 | void BN_GENCB_free(BN_GENCB *cb); |
300 | void *BN_GENCB_get_arg(BN_GENCB *cb); | ||
301 | 300 | ||
302 | /* Wrapper function to make using BN_GENCB easier, */ | 301 | /* Wrapper function to make using BN_GENCB easier, */ |
303 | int BN_GENCB_call(BN_GENCB *cb, int a, int b); | 302 | int BN_GENCB_call(BN_GENCB *cb, int a, int b); |
303 | |||
304 | #if defined(LIBRESSL_OPAQUE_BN) || defined(LIBRESSL_CRYPTO_INTERNAL) | ||
305 | /* Populate a BN_GENCB structure with an "old"-style callback */ | ||
306 | void BN_GENCB_set_old(BN_GENCB *gencb, void (*callback)(int, int, void *), | ||
307 | void *cb_arg); | ||
308 | |||
309 | /* Populate a BN_GENCB structure with a "new"-style callback */ | ||
310 | void BN_GENCB_set(BN_GENCB *gencb, int (*callback)(int, int, BN_GENCB *), | ||
311 | void *cb_arg); | ||
312 | #else | ||
304 | /* Macro to populate a BN_GENCB structure with an "old"-style callback */ | 313 | /* Macro to populate a BN_GENCB structure with an "old"-style callback */ |
305 | #define BN_GENCB_set_old(gencb, callback, cb_arg) { \ | 314 | #define BN_GENCB_set_old(gencb, callback, cb_arg) { \ |
306 | BN_GENCB *tmp_gencb = (gencb); \ | 315 | BN_GENCB *tmp_gencb = (gencb); \ |
@@ -313,6 +322,9 @@ int BN_GENCB_call(BN_GENCB *cb, int a, int b); | |||
313 | tmp_gencb->ver = 2; \ | 322 | tmp_gencb->ver = 2; \ |
314 | tmp_gencb->arg = (cb_arg); \ | 323 | tmp_gencb->arg = (cb_arg); \ |
315 | tmp_gencb->cb.cb_2 = (callback); } | 324 | tmp_gencb->cb.cb_2 = (callback); } |
325 | #endif /* !LIBRESSL_CRYPTO_INTERNAL */ | ||
326 | |||
327 | void *BN_GENCB_get_arg(BN_GENCB *cb); | ||
316 | 328 | ||
317 | #define BN_prime_checks 0 /* default: select number of iterations | 329 | #define BN_prime_checks 0 /* default: select number of iterations |
318 | based on the size of the number */ | 330 | based on the size of the number */ |
diff --git a/src/lib/libcrypto/bn/bn_lib.c b/src/lib/libcrypto/bn/bn_lib.c index af837eed01..14817629aa 100644 --- a/src/lib/libcrypto/bn/bn_lib.c +++ b/src/lib/libcrypto/bn/bn_lib.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn_lib.c,v 1.48 2021/09/08 12:19:17 tb Exp $ */ | 1 | /* $OpenBSD: bn_lib.c,v 1.49 2021/12/04 15:48:23 tb Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -1056,6 +1056,24 @@ BN_GENCB_free(BN_GENCB *cb) | |||
1056 | free(cb); | 1056 | free(cb); |
1057 | } | 1057 | } |
1058 | 1058 | ||
1059 | /* Populate a BN_GENCB structure with an "old"-style callback */ | ||
1060 | void | ||
1061 | BN_GENCB_set_old(BN_GENCB *gencb, void (*cb)(int, int, void *), void *cb_arg) | ||
1062 | { | ||
1063 | gencb->ver = 1; | ||
1064 | gencb->cb.cb_1 = cb; | ||
1065 | gencb->arg = cb_arg; | ||
1066 | } | ||
1067 | |||
1068 | /* Populate a BN_GENCB structure with a "new"-style callback */ | ||
1069 | void | ||
1070 | BN_GENCB_set(BN_GENCB *gencb, int (*cb)(int, int, BN_GENCB *), void *cb_arg) | ||
1071 | { | ||
1072 | gencb->ver = 2; | ||
1073 | gencb->cb.cb_2 = cb; | ||
1074 | gencb->arg = cb_arg; | ||
1075 | } | ||
1076 | |||
1059 | void * | 1077 | void * |
1060 | BN_GENCB_get_arg(BN_GENCB *cb) | 1078 | BN_GENCB_get_arg(BN_GENCB *cb) |
1061 | { | 1079 | { |