Loading crypto/bn/bn_mont.c +5 −5 Original line number Diff line number Diff line Loading @@ -496,14 +496,14 @@ BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to, BN_MONT_CTX *from) return (to); } BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, int lock, BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, CRYPTO_RWLOCK *lock, const BIGNUM *mod, BN_CTX *ctx) { BN_MONT_CTX *ret; CRYPTO_r_lock(lock); CRYPTO_THREAD_read_lock(lock); ret = *pmont; CRYPTO_r_unlock(lock); CRYPTO_THREAD_unlock(lock); if (ret) return ret; Loading @@ -524,12 +524,12 @@ BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, int lock, } /* The locked compare-and-set, after the local work is done. */ CRYPTO_w_lock(lock); CRYPTO_THREAD_write_lock(lock); if (*pmont) { BN_MONT_CTX_free(ret); ret = *pmont; } else *pmont = ret; CRYPTO_w_unlock(lock); CRYPTO_THREAD_unlock(lock); return ret; } crypto/dh/dh_key.c +2 −2 Original line number Diff line number Diff line Loading @@ -140,7 +140,7 @@ static int generate_key(DH *dh) if (dh->flags & DH_FLAG_CACHE_MONT_P) { mont = BN_MONT_CTX_set_locked(&dh->method_mont_p, CRYPTO_LOCK_DH, dh->p, ctx); dh->lock, dh->p, ctx); if (!mont) goto err; } Loading Loading @@ -222,7 +222,7 @@ static int compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh) if (dh->flags & DH_FLAG_CACHE_MONT_P) { mont = BN_MONT_CTX_set_locked(&dh->method_mont_p, CRYPTO_LOCK_DH, dh->p, ctx); dh->lock, dh->p, ctx); if ((dh->flags & DH_FLAG_NO_EXP_CONSTTIME) == 0) { /* XXX */ BN_set_flags(dh->priv_key, BN_FLG_CONSTTIME); Loading crypto/dh/dh_lib.c +20 −5 Original line number Diff line number Diff line Loading @@ -108,7 +108,7 @@ DH *DH_new_method(ENGINE *engine) if (ret == NULL) { DHerr(DH_F_DH_NEW_METHOD, ERR_R_MALLOC_FAILURE); return (NULL); return NULL; } ret->meth = DH_get_default_method(); Loading @@ -135,16 +135,25 @@ DH *DH_new_method(ENGINE *engine) ret->references = 1; ret->flags = ret->meth->flags; CRYPTO_new_ex_data(CRYPTO_EX_INDEX_DH, ret, &ret->ex_data); if ((ret->meth->init != NULL) && !ret->meth->init(ret)) { ret->lock = CRYPTO_THREAD_lock_new(); if (ret->lock == NULL) { #ifndef OPENSSL_NO_ENGINE ENGINE_finish(ret->engine); #endif CRYPTO_free_ex_data(CRYPTO_EX_INDEX_DH, ret, &ret->ex_data); OPENSSL_free(ret); return NULL; } if ((ret->meth->init != NULL) && !ret->meth->init(ret)) { DH_free(ret); ret = NULL; } return (ret); return ret; } void DH_free(DH *r) Loading @@ -153,7 +162,8 @@ void DH_free(DH *r) if (r == NULL) return; i = CRYPTO_add(&r->references, -1, CRYPTO_LOCK_DH); CRYPTO_atomic_add(&r->references, -1, &i, r->lock); REF_PRINT_COUNT("DH", r); if (i > 0) return; Loading @@ -167,6 +177,8 @@ void DH_free(DH *r) CRYPTO_free_ex_data(CRYPTO_EX_INDEX_DH, r, &r->ex_data); CRYPTO_THREAD_lock_free(r->lock); BN_clear_free(r->p); BN_clear_free(r->g); BN_clear_free(r->q); Loading @@ -180,7 +192,10 @@ void DH_free(DH *r) int DH_up_ref(DH *r) { int i = CRYPTO_add(&r->references, 1, CRYPTO_LOCK_DH); int i; if (CRYPTO_atomic_add(&r->references, 1, &i, r->lock) <= 0) return 0; REF_PRINT_COUNT("DH", r); REF_ASSERT_ISNT(i < 2); Loading crypto/dsa/dsa_lib.c +18 −5 Original line number Diff line number Diff line Loading @@ -115,7 +115,7 @@ DSA *DSA_new_method(ENGINE *engine) ret = OPENSSL_zalloc(sizeof(*ret)); if (ret == NULL) { DSAerr(DSA_F_DSA_NEW_METHOD, ERR_R_MALLOC_FAILURE); return (NULL); return NULL; } ret->meth = DSA_get_default_method(); #ifndef OPENSSL_NO_ENGINE Loading @@ -141,17 +141,25 @@ DSA *DSA_new_method(ENGINE *engine) ret->references = 1; ret->flags = ret->meth->flags & ~DSA_FLAG_NON_FIPS_ALLOW; CRYPTO_new_ex_data(CRYPTO_EX_INDEX_DSA, ret, &ret->ex_data); if ((ret->meth->init != NULL) && !ret->meth->init(ret)) { ret->lock = CRYPTO_THREAD_lock_new(); if (ret->lock == NULL) { #ifndef OPENSSL_NO_ENGINE ENGINE_finish(ret->engine); #endif CRYPTO_free_ex_data(CRYPTO_EX_INDEX_DSA, ret, &ret->ex_data); OPENSSL_free(ret); return NULL; } if ((ret->meth->init != NULL) && !ret->meth->init(ret)) { DSA_free(ret); ret = NULL; } return (ret); return ret; } void DSA_free(DSA *r) Loading @@ -161,7 +169,7 @@ void DSA_free(DSA *r) if (r == NULL) return; i = CRYPTO_add(&r->references, -1, CRYPTO_LOCK_DSA); CRYPTO_atomic_add(&r->references, -1, &i, r->lock); REF_PRINT_COUNT("DSA", r); if (i > 0) return; Loading @@ -175,6 +183,8 @@ void DSA_free(DSA *r) CRYPTO_free_ex_data(CRYPTO_EX_INDEX_DSA, r, &r->ex_data); CRYPTO_THREAD_lock_free(r->lock); BN_clear_free(r->p); BN_clear_free(r->q); BN_clear_free(r->g); Loading @@ -185,7 +195,10 @@ void DSA_free(DSA *r) int DSA_up_ref(DSA *r) { int i = CRYPTO_add(&r->references, 1, CRYPTO_LOCK_DSA); int i; if (CRYPTO_atomic_add(&r->references, 1, &i, r->lock) <= 0) return 0; REF_PRINT_COUNT("DSA", r); REF_ASSERT_ISNT(i < 2); Loading crypto/dsa/dsa_ossl.c +2 −2 Original line number Diff line number Diff line Loading @@ -265,7 +265,7 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, if (dsa->flags & DSA_FLAG_CACHE_MONT_P) { if (!BN_MONT_CTX_set_locked(&dsa->method_mont_p, CRYPTO_LOCK_DSA, dsa->p, ctx)) dsa->lock, dsa->p, ctx)) goto err; } Loading Loading @@ -388,7 +388,7 @@ static int dsa_do_verify(const unsigned char *dgst, int dgst_len, if (dsa->flags & DSA_FLAG_CACHE_MONT_P) { mont = BN_MONT_CTX_set_locked(&dsa->method_mont_p, CRYPTO_LOCK_DSA, dsa->p, ctx); dsa->lock, dsa->p, ctx); if (!mont) goto err; } Loading Loading
crypto/bn/bn_mont.c +5 −5 Original line number Diff line number Diff line Loading @@ -496,14 +496,14 @@ BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to, BN_MONT_CTX *from) return (to); } BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, int lock, BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, CRYPTO_RWLOCK *lock, const BIGNUM *mod, BN_CTX *ctx) { BN_MONT_CTX *ret; CRYPTO_r_lock(lock); CRYPTO_THREAD_read_lock(lock); ret = *pmont; CRYPTO_r_unlock(lock); CRYPTO_THREAD_unlock(lock); if (ret) return ret; Loading @@ -524,12 +524,12 @@ BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, int lock, } /* The locked compare-and-set, after the local work is done. */ CRYPTO_w_lock(lock); CRYPTO_THREAD_write_lock(lock); if (*pmont) { BN_MONT_CTX_free(ret); ret = *pmont; } else *pmont = ret; CRYPTO_w_unlock(lock); CRYPTO_THREAD_unlock(lock); return ret; }
crypto/dh/dh_key.c +2 −2 Original line number Diff line number Diff line Loading @@ -140,7 +140,7 @@ static int generate_key(DH *dh) if (dh->flags & DH_FLAG_CACHE_MONT_P) { mont = BN_MONT_CTX_set_locked(&dh->method_mont_p, CRYPTO_LOCK_DH, dh->p, ctx); dh->lock, dh->p, ctx); if (!mont) goto err; } Loading Loading @@ -222,7 +222,7 @@ static int compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh) if (dh->flags & DH_FLAG_CACHE_MONT_P) { mont = BN_MONT_CTX_set_locked(&dh->method_mont_p, CRYPTO_LOCK_DH, dh->p, ctx); dh->lock, dh->p, ctx); if ((dh->flags & DH_FLAG_NO_EXP_CONSTTIME) == 0) { /* XXX */ BN_set_flags(dh->priv_key, BN_FLG_CONSTTIME); Loading
crypto/dh/dh_lib.c +20 −5 Original line number Diff line number Diff line Loading @@ -108,7 +108,7 @@ DH *DH_new_method(ENGINE *engine) if (ret == NULL) { DHerr(DH_F_DH_NEW_METHOD, ERR_R_MALLOC_FAILURE); return (NULL); return NULL; } ret->meth = DH_get_default_method(); Loading @@ -135,16 +135,25 @@ DH *DH_new_method(ENGINE *engine) ret->references = 1; ret->flags = ret->meth->flags; CRYPTO_new_ex_data(CRYPTO_EX_INDEX_DH, ret, &ret->ex_data); if ((ret->meth->init != NULL) && !ret->meth->init(ret)) { ret->lock = CRYPTO_THREAD_lock_new(); if (ret->lock == NULL) { #ifndef OPENSSL_NO_ENGINE ENGINE_finish(ret->engine); #endif CRYPTO_free_ex_data(CRYPTO_EX_INDEX_DH, ret, &ret->ex_data); OPENSSL_free(ret); return NULL; } if ((ret->meth->init != NULL) && !ret->meth->init(ret)) { DH_free(ret); ret = NULL; } return (ret); return ret; } void DH_free(DH *r) Loading @@ -153,7 +162,8 @@ void DH_free(DH *r) if (r == NULL) return; i = CRYPTO_add(&r->references, -1, CRYPTO_LOCK_DH); CRYPTO_atomic_add(&r->references, -1, &i, r->lock); REF_PRINT_COUNT("DH", r); if (i > 0) return; Loading @@ -167,6 +177,8 @@ void DH_free(DH *r) CRYPTO_free_ex_data(CRYPTO_EX_INDEX_DH, r, &r->ex_data); CRYPTO_THREAD_lock_free(r->lock); BN_clear_free(r->p); BN_clear_free(r->g); BN_clear_free(r->q); Loading @@ -180,7 +192,10 @@ void DH_free(DH *r) int DH_up_ref(DH *r) { int i = CRYPTO_add(&r->references, 1, CRYPTO_LOCK_DH); int i; if (CRYPTO_atomic_add(&r->references, 1, &i, r->lock) <= 0) return 0; REF_PRINT_COUNT("DH", r); REF_ASSERT_ISNT(i < 2); Loading
crypto/dsa/dsa_lib.c +18 −5 Original line number Diff line number Diff line Loading @@ -115,7 +115,7 @@ DSA *DSA_new_method(ENGINE *engine) ret = OPENSSL_zalloc(sizeof(*ret)); if (ret == NULL) { DSAerr(DSA_F_DSA_NEW_METHOD, ERR_R_MALLOC_FAILURE); return (NULL); return NULL; } ret->meth = DSA_get_default_method(); #ifndef OPENSSL_NO_ENGINE Loading @@ -141,17 +141,25 @@ DSA *DSA_new_method(ENGINE *engine) ret->references = 1; ret->flags = ret->meth->flags & ~DSA_FLAG_NON_FIPS_ALLOW; CRYPTO_new_ex_data(CRYPTO_EX_INDEX_DSA, ret, &ret->ex_data); if ((ret->meth->init != NULL) && !ret->meth->init(ret)) { ret->lock = CRYPTO_THREAD_lock_new(); if (ret->lock == NULL) { #ifndef OPENSSL_NO_ENGINE ENGINE_finish(ret->engine); #endif CRYPTO_free_ex_data(CRYPTO_EX_INDEX_DSA, ret, &ret->ex_data); OPENSSL_free(ret); return NULL; } if ((ret->meth->init != NULL) && !ret->meth->init(ret)) { DSA_free(ret); ret = NULL; } return (ret); return ret; } void DSA_free(DSA *r) Loading @@ -161,7 +169,7 @@ void DSA_free(DSA *r) if (r == NULL) return; i = CRYPTO_add(&r->references, -1, CRYPTO_LOCK_DSA); CRYPTO_atomic_add(&r->references, -1, &i, r->lock); REF_PRINT_COUNT("DSA", r); if (i > 0) return; Loading @@ -175,6 +183,8 @@ void DSA_free(DSA *r) CRYPTO_free_ex_data(CRYPTO_EX_INDEX_DSA, r, &r->ex_data); CRYPTO_THREAD_lock_free(r->lock); BN_clear_free(r->p); BN_clear_free(r->q); BN_clear_free(r->g); Loading @@ -185,7 +195,10 @@ void DSA_free(DSA *r) int DSA_up_ref(DSA *r) { int i = CRYPTO_add(&r->references, 1, CRYPTO_LOCK_DSA); int i; if (CRYPTO_atomic_add(&r->references, 1, &i, r->lock) <= 0) return 0; REF_PRINT_COUNT("DSA", r); REF_ASSERT_ISNT(i < 2); Loading
crypto/dsa/dsa_ossl.c +2 −2 Original line number Diff line number Diff line Loading @@ -265,7 +265,7 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, if (dsa->flags & DSA_FLAG_CACHE_MONT_P) { if (!BN_MONT_CTX_set_locked(&dsa->method_mont_p, CRYPTO_LOCK_DSA, dsa->p, ctx)) dsa->lock, dsa->p, ctx)) goto err; } Loading Loading @@ -388,7 +388,7 @@ static int dsa_do_verify(const unsigned char *dgst, int dgst_len, if (dsa->flags & DSA_FLAG_CACHE_MONT_P) { mont = BN_MONT_CTX_set_locked(&dsa->method_mont_p, CRYPTO_LOCK_DSA, dsa->p, ctx); dsa->lock, dsa->p, ctx); if (!mont) goto err; } Loading