diff options
Diffstat (limited to 'src/lib/libcrypto/bn/bn_mont.c')
-rw-r--r-- | src/lib/libcrypto/bn/bn_mont.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/lib/libcrypto/bn/bn_mont.c b/src/lib/libcrypto/bn/bn_mont.c index b79b1b60da..3572e5a690 100644 --- a/src/lib/libcrypto/bn/bn_mont.c +++ b/src/lib/libcrypto/bn/bn_mont.c | |||
@@ -347,3 +347,23 @@ BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to, BN_MONT_CTX *from) | |||
347 | return(to); | 347 | return(to); |
348 | } | 348 | } |
349 | 349 | ||
350 | BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, int lock, | ||
351 | const BIGNUM *mod, BN_CTX *ctx) | ||
352 | { | ||
353 | if (*pmont) | ||
354 | return *pmont; | ||
355 | CRYPTO_w_lock(lock); | ||
356 | if (!*pmont) | ||
357 | { | ||
358 | *pmont = BN_MONT_CTX_new(); | ||
359 | if (*pmont && !BN_MONT_CTX_set(*pmont, mod, ctx)) | ||
360 | { | ||
361 | BN_MONT_CTX_free(*pmont); | ||
362 | *pmont = NULL; | ||
363 | } | ||
364 | } | ||
365 | CRYPTO_w_unlock(lock); | ||
366 | return *pmont; | ||
367 | } | ||
368 | |||
369 | |||