diff options
Diffstat (limited to 'src/lib/libcrypto/dsa/dsa_sign.c')
| -rw-r--r-- | src/lib/libcrypto/dsa/dsa_sign.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/lib/libcrypto/dsa/dsa_sign.c b/src/lib/libcrypto/dsa/dsa_sign.c index 3c9753bac3..37c65efb20 100644 --- a/src/lib/libcrypto/dsa/dsa_sign.c +++ b/src/lib/libcrypto/dsa/dsa_sign.c | |||
| @@ -72,7 +72,8 @@ | |||
| 72 | DSA_SIG * DSA_do_sign(const unsigned char *dgst, int dlen, DSA *dsa) | 72 | DSA_SIG * DSA_do_sign(const unsigned char *dgst, int dlen, DSA *dsa) |
| 73 | { | 73 | { |
| 74 | #ifdef OPENSSL_FIPS | 74 | #ifdef OPENSSL_FIPS |
| 75 | if(FIPS_mode() && !FIPS_dsa_check(dsa)) | 75 | if(FIPS_mode() && !(dsa->flags & DSA_FLAG_FIPS_EXTERNAL_METHOD_ALLOW) |
| 76 | && !FIPS_dsa_check(dsa)) | ||
| 76 | return NULL; | 77 | return NULL; |
| 77 | #endif | 78 | #endif |
| 78 | return dsa->meth->dsa_do_sign(dgst, dlen, dsa); | 79 | return dsa->meth->dsa_do_sign(dgst, dlen, dsa); |
| @@ -96,7 +97,8 @@ int DSA_sign(int type, const unsigned char *dgst, int dlen, unsigned char *sig, | |||
| 96 | int DSA_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp) | 97 | int DSA_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp) |
| 97 | { | 98 | { |
| 98 | #ifdef OPENSSL_FIPS | 99 | #ifdef OPENSSL_FIPS |
| 99 | if(FIPS_mode() && !FIPS_dsa_check(dsa)) | 100 | if(FIPS_mode() && !(dsa->flags & DSA_FLAG_FIPS_EXTERNAL_METHOD_ALLOW) |
| 101 | && !FIPS_dsa_check(dsa)) | ||
| 100 | return 0; | 102 | return 0; |
| 101 | #endif | 103 | #endif |
| 102 | return dsa->meth->dsa_sign_setup(dsa, ctx_in, kinvp, rp); | 104 | return dsa->meth->dsa_sign_setup(dsa, ctx_in, kinvp, rp); |
