diff options
Diffstat (limited to 'src/lib/libcrypto/bn/bn_blind.c')
| -rw-r--r-- | src/lib/libcrypto/bn/bn_blind.c | 36 |
1 files changed, 10 insertions, 26 deletions
diff --git a/src/lib/libcrypto/bn/bn_blind.c b/src/lib/libcrypto/bn/bn_blind.c index 996b1d6965..e126865754 100644 --- a/src/lib/libcrypto/bn/bn_blind.c +++ b/src/lib/libcrypto/bn/bn_blind.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: bn_blind.c,v 1.41 2023/08/09 08:39:46 tb Exp $ */ | 1 | /* $OpenBSD: bn_blind.c,v 1.42 2023/08/09 09:09:24 tb Exp $ */ |
| 2 | /* ==================================================================== | 2 | /* ==================================================================== |
| 3 | * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. | 3 | * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. |
| 4 | * | 4 | * |
| @@ -131,8 +131,10 @@ struct bn_blinding_st { | |||
| 131 | const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); | 131 | const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); |
| 132 | }; | 132 | }; |
| 133 | 133 | ||
| 134 | static BN_BLINDING * | 134 | BN_BLINDING * |
| 135 | BN_BLINDING_new(const BIGNUM *e, const BIGNUM *mod) | 135 | BN_BLINDING_new(const BIGNUM *e, BIGNUM *mod, BN_CTX *ctx, |
| 136 | int (*bn_mod_exp)(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, | ||
| 137 | const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx), BN_MONT_CTX *m_ctx) | ||
| 136 | { | 138 | { |
| 137 | BN_BLINDING *ret = NULL; | 139 | BN_BLINDING *ret = NULL; |
| 138 | 140 | ||
| @@ -155,6 +157,11 @@ BN_BLINDING_new(const BIGNUM *e, const BIGNUM *mod) | |||
| 155 | ret->counter = BN_BLINDING_COUNTER - 1; | 157 | ret->counter = BN_BLINDING_COUNTER - 1; |
| 156 | CRYPTO_THREADID_current(&ret->tid); | 158 | CRYPTO_THREADID_current(&ret->tid); |
| 157 | 159 | ||
| 160 | if (bn_mod_exp != NULL) | ||
| 161 | ret->bn_mod_exp = bn_mod_exp; | ||
| 162 | if (m_ctx != NULL) | ||
| 163 | ret->m_ctx = m_ctx; | ||
| 164 | |||
| 158 | return ret; | 165 | return ret; |
| 159 | 166 | ||
| 160 | err: | 167 | err: |
| @@ -250,26 +257,3 @@ BN_BLINDING_thread_id(BN_BLINDING *b) | |||
| 250 | { | 257 | { |
| 251 | return &b->tid; | 258 | return &b->tid; |
| 252 | } | 259 | } |
| 253 | |||
| 254 | BN_BLINDING * | ||
| 255 | BN_BLINDING_create_param(const BIGNUM *e, BIGNUM *m, BN_CTX *ctx, | ||
| 256 | int (*bn_mod_exp)(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, | ||
| 257 | const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx), BN_MONT_CTX *m_ctx) | ||
| 258 | { | ||
| 259 | BN_BLINDING *ret = NULL; | ||
| 260 | |||
| 261 | if ((ret = BN_BLINDING_new(e, m)) == NULL) | ||
| 262 | goto err; | ||
| 263 | |||
| 264 | if (bn_mod_exp != NULL) | ||
| 265 | ret->bn_mod_exp = bn_mod_exp; | ||
| 266 | if (m_ctx != NULL) | ||
| 267 | ret->m_ctx = m_ctx; | ||
| 268 | |||
| 269 | return ret; | ||
| 270 | |||
| 271 | err: | ||
| 272 | BN_BLINDING_free(ret); | ||
| 273 | |||
| 274 | return NULL; | ||
| 275 | } | ||
