diff options
author | djm <> | 2012-10-13 21:25:14 +0000 |
---|---|---|
committer | djm <> | 2012-10-13 21:25:14 +0000 |
commit | 93723b50b639d8dc717bc1bf463fd46e1b321239 (patch) | |
tree | 281e0a29ae8f87a8c47fbd4deaa1f3d48b8cc5c1 /src/lib/libcrypto/dsa/dsa_sign.c | |
parent | 65e72ac55a6405783db7a12d7e35a7561d46005b (diff) | |
download | openbsd-93723b50b639d8dc717bc1bf463fd46e1b321239.tar.gz openbsd-93723b50b639d8dc717bc1bf463fd46e1b321239.tar.bz2 openbsd-93723b50b639d8dc717bc1bf463fd46e1b321239.zip |
resolve conflicts
Diffstat (limited to 'src/lib/libcrypto/dsa/dsa_sign.c')
-rw-r--r-- | src/lib/libcrypto/dsa/dsa_sign.c | 50 |
1 files changed, 37 insertions, 13 deletions
diff --git a/src/lib/libcrypto/dsa/dsa_sign.c b/src/lib/libcrypto/dsa/dsa_sign.c index 17555e5892..c3cc3642ce 100644 --- a/src/lib/libcrypto/dsa/dsa_sign.c +++ b/src/lib/libcrypto/dsa/dsa_sign.c | |||
@@ -61,30 +61,54 @@ | |||
61 | #include "cryptlib.h" | 61 | #include "cryptlib.h" |
62 | #include <openssl/dsa.h> | 62 | #include <openssl/dsa.h> |
63 | #include <openssl/rand.h> | 63 | #include <openssl/rand.h> |
64 | #include <openssl/bn.h> | ||
64 | 65 | ||
65 | DSA_SIG * DSA_do_sign(const unsigned char *dgst, int dlen, DSA *dsa) | 66 | DSA_SIG * DSA_do_sign(const unsigned char *dgst, int dlen, DSA *dsa) |
66 | { | 67 | { |
68 | #ifdef OPENSSL_FIPS | ||
69 | if (FIPS_mode() && !(dsa->meth->flags & DSA_FLAG_FIPS_METHOD) | ||
70 | && !(dsa->flags & DSA_FLAG_NON_FIPS_ALLOW)) | ||
71 | { | ||
72 | DSAerr(DSA_F_DSA_DO_SIGN, DSA_R_NON_FIPS_DSA_METHOD); | ||
73 | return NULL; | ||
74 | } | ||
75 | #endif | ||
67 | return dsa->meth->dsa_do_sign(dgst, dlen, dsa); | 76 | return dsa->meth->dsa_do_sign(dgst, dlen, dsa); |
68 | } | 77 | } |
69 | 78 | ||
70 | int DSA_sign(int type, const unsigned char *dgst, int dlen, unsigned char *sig, | 79 | int DSA_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp) |
71 | unsigned int *siglen, DSA *dsa) | ||
72 | { | 80 | { |
73 | DSA_SIG *s; | 81 | #ifdef OPENSSL_FIPS |
74 | RAND_seed(dgst, dlen); | 82 | if (FIPS_mode() && !(dsa->meth->flags & DSA_FLAG_FIPS_METHOD) |
75 | s=DSA_do_sign(dgst,dlen,dsa); | 83 | && !(dsa->flags & DSA_FLAG_NON_FIPS_ALLOW)) |
76 | if (s == NULL) | ||
77 | { | 84 | { |
78 | *siglen=0; | 85 | DSAerr(DSA_F_DSA_SIGN_SETUP, DSA_R_NON_FIPS_DSA_METHOD); |
79 | return(0); | 86 | return 0; |
80 | } | 87 | } |
81 | *siglen=i2d_DSA_SIG(s,&sig); | 88 | #endif |
82 | DSA_SIG_free(s); | 89 | return dsa->meth->dsa_sign_setup(dsa, ctx_in, kinvp, rp); |
83 | return(1); | ||
84 | } | 90 | } |
85 | 91 | ||
86 | int DSA_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp) | 92 | DSA_SIG *DSA_SIG_new(void) |
87 | { | 93 | { |
88 | return dsa->meth->dsa_sign_setup(dsa, ctx_in, kinvp, rp); | 94 | DSA_SIG *sig; |
95 | sig = OPENSSL_malloc(sizeof(DSA_SIG)); | ||
96 | if (!sig) | ||
97 | return NULL; | ||
98 | sig->r = NULL; | ||
99 | sig->s = NULL; | ||
100 | return sig; | ||
101 | } | ||
102 | |||
103 | void DSA_SIG_free(DSA_SIG *sig) | ||
104 | { | ||
105 | if (sig) | ||
106 | { | ||
107 | if (sig->r) | ||
108 | BN_free(sig->r); | ||
109 | if (sig->s) | ||
110 | BN_free(sig->s); | ||
111 | OPENSSL_free(sig); | ||
112 | } | ||
89 | } | 113 | } |
90 | 114 | ||