summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/bn/bn_blind.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/bn/bn_blind.c')
-rw-r--r--src/lib/libcrypto/bn/bn_blind.c36
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
134static BN_BLINDING * 134BN_BLINDING *
135BN_BLINDING_new(const BIGNUM *e, const BIGNUM *mod) 135BN_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
254BN_BLINDING *
255BN_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}