diff options
Diffstat (limited to 'src/lib/libcrypto/dsa/dsa_sign.c')
| -rw-r--r-- | src/lib/libcrypto/dsa/dsa_sign.c | 35 |
1 files changed, 15 insertions, 20 deletions
diff --git a/src/lib/libcrypto/dsa/dsa_sign.c b/src/lib/libcrypto/dsa/dsa_sign.c index 4cfbbe57a8..17555e5892 100644 --- a/src/lib/libcrypto/dsa/dsa_sign.c +++ b/src/lib/libcrypto/dsa/dsa_sign.c | |||
| @@ -58,38 +58,33 @@ | |||
| 58 | 58 | ||
| 59 | /* Original version from Steven Schoch <schoch@sheba.arc.nasa.gov> */ | 59 | /* Original version from Steven Schoch <schoch@sheba.arc.nasa.gov> */ |
| 60 | 60 | ||
| 61 | #include <stdio.h> | ||
| 62 | #include "cryptlib.h" | 61 | #include "cryptlib.h" |
| 63 | #include <openssl/bn.h> | ||
| 64 | #include <openssl/dsa.h> | 62 | #include <openssl/dsa.h> |
| 65 | #include <openssl/rand.h> | 63 | #include <openssl/rand.h> |
| 66 | #include <openssl/asn1.h> | ||
| 67 | #ifdef OPENSSL_FIPS | ||
| 68 | #include <openssl/fips.h> | ||
| 69 | #endif | ||
| 70 | |||
| 71 | 64 | ||
| 72 | DSA_SIG * DSA_do_sign(const unsigned char *dgst, int dlen, DSA *dsa) | 65 | DSA_SIG * DSA_do_sign(const unsigned char *dgst, int dlen, DSA *dsa) |
| 73 | { | 66 | { |
| 74 | #ifdef OPENSSL_FIPS | ||
| 75 | if(FIPS_mode() && !(dsa->flags & DSA_FLAG_NON_FIPS_ALLOW)) | ||
| 76 | { | ||
| 77 | DSAerr(DSA_F_DSA_DO_SIGN, DSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE); | ||
| 78 | return NULL; | ||
| 79 | } | ||
| 80 | #endif | ||
| 81 | return dsa->meth->dsa_do_sign(dgst, dlen, dsa); | 67 | return dsa->meth->dsa_do_sign(dgst, dlen, dsa); |
| 82 | } | 68 | } |
| 83 | 69 | ||
| 84 | int DSA_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp) | 70 | int DSA_sign(int type, const unsigned char *dgst, int dlen, unsigned char *sig, |
| 71 | unsigned int *siglen, DSA *dsa) | ||
| 85 | { | 72 | { |
| 86 | #ifdef OPENSSL_FIPS | 73 | DSA_SIG *s; |
| 87 | if(FIPS_mode() && !(dsa->flags & DSA_FLAG_NON_FIPS_ALLOW)) | 74 | RAND_seed(dgst, dlen); |
| 75 | s=DSA_do_sign(dgst,dlen,dsa); | ||
| 76 | if (s == NULL) | ||
| 88 | { | 77 | { |
| 89 | DSAerr(DSA_F_DSA_SIGN_SETUP, DSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE); | 78 | *siglen=0; |
| 90 | return 0; | 79 | return(0); |
| 91 | } | 80 | } |
| 92 | #endif | 81 | *siglen=i2d_DSA_SIG(s,&sig); |
| 82 | DSA_SIG_free(s); | ||
| 83 | return(1); | ||
| 84 | } | ||
| 85 | |||
| 86 | int DSA_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp) | ||
| 87 | { | ||
| 93 | return dsa->meth->dsa_sign_setup(dsa, ctx_in, kinvp, rp); | 88 | return dsa->meth->dsa_sign_setup(dsa, ctx_in, kinvp, rp); |
| 94 | } | 89 | } |
| 95 | 90 | ||
