diff options
author | djm <> | 2010-10-01 22:59:01 +0000 |
---|---|---|
committer | djm <> | 2010-10-01 22:59:01 +0000 |
commit | fe047d8b632246cb2db3234a0a4f32e5c318857b (patch) | |
tree | 939b752540947d33507b3acc48d76a8bfb7c3dc3 /src/lib/libcrypto/rsa/rsa_oaep.c | |
parent | 2ea67f4aa254b09ded62e6e14fc893bbe6381579 (diff) | |
download | openbsd-fe047d8b632246cb2db3234a0a4f32e5c318857b.tar.gz openbsd-fe047d8b632246cb2db3234a0a4f32e5c318857b.tar.bz2 openbsd-fe047d8b632246cb2db3234a0a4f32e5c318857b.zip |
resolve conflicts, fix local changes
Diffstat (limited to 'src/lib/libcrypto/rsa/rsa_oaep.c')
-rw-r--r-- | src/lib/libcrypto/rsa/rsa_oaep.c | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/src/lib/libcrypto/rsa/rsa_oaep.c b/src/lib/libcrypto/rsa/rsa_oaep.c index 4d30c9d2d3..e238d10e5c 100644 --- a/src/lib/libcrypto/rsa/rsa_oaep.c +++ b/src/lib/libcrypto/rsa/rsa_oaep.c | |||
@@ -28,7 +28,7 @@ | |||
28 | #include <openssl/rand.h> | 28 | #include <openssl/rand.h> |
29 | #include <openssl/sha.h> | 29 | #include <openssl/sha.h> |
30 | 30 | ||
31 | int MGF1(unsigned char *mask, long len, | 31 | static int MGF1(unsigned char *mask, long len, |
32 | const unsigned char *seed, long seedlen); | 32 | const unsigned char *seed, long seedlen); |
33 | 33 | ||
34 | int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen, | 34 | int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen, |
@@ -52,13 +52,6 @@ int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen, | |||
52 | return 0; | 52 | return 0; |
53 | } | 53 | } |
54 | 54 | ||
55 | dbmask = OPENSSL_malloc(emlen - SHA_DIGEST_LENGTH); | ||
56 | if (dbmask == NULL) | ||
57 | { | ||
58 | RSAerr(RSA_F_RSA_PADDING_ADD_PKCS1_OAEP, ERR_R_MALLOC_FAILURE); | ||
59 | return 0; | ||
60 | } | ||
61 | |||
62 | to[0] = 0; | 55 | to[0] = 0; |
63 | seed = to + 1; | 56 | seed = to + 1; |
64 | db = to + SHA_DIGEST_LENGTH + 1; | 57 | db = to + SHA_DIGEST_LENGTH + 1; |
@@ -76,11 +69,20 @@ int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen, | |||
76 | 20); | 69 | 20); |
77 | #endif | 70 | #endif |
78 | 71 | ||
79 | MGF1(dbmask, emlen - SHA_DIGEST_LENGTH, seed, SHA_DIGEST_LENGTH); | 72 | dbmask = OPENSSL_malloc(emlen - SHA_DIGEST_LENGTH); |
73 | if (dbmask == NULL) | ||
74 | { | ||
75 | RSAerr(RSA_F_RSA_PADDING_ADD_PKCS1_OAEP, ERR_R_MALLOC_FAILURE); | ||
76 | return 0; | ||
77 | } | ||
78 | |||
79 | if (MGF1(dbmask, emlen - SHA_DIGEST_LENGTH, seed, SHA_DIGEST_LENGTH) < 0) | ||
80 | return 0; | ||
80 | for (i = 0; i < emlen - SHA_DIGEST_LENGTH; i++) | 81 | for (i = 0; i < emlen - SHA_DIGEST_LENGTH; i++) |
81 | db[i] ^= dbmask[i]; | 82 | db[i] ^= dbmask[i]; |
82 | 83 | ||
83 | MGF1(seedmask, SHA_DIGEST_LENGTH, db, emlen - SHA_DIGEST_LENGTH); | 84 | if (MGF1(seedmask, SHA_DIGEST_LENGTH, db, emlen - SHA_DIGEST_LENGTH) < 0) |
85 | return 0; | ||
84 | for (i = 0; i < SHA_DIGEST_LENGTH; i++) | 86 | for (i = 0; i < SHA_DIGEST_LENGTH; i++) |
85 | seed[i] ^= seedmask[i]; | 87 | seed[i] ^= seedmask[i]; |
86 | 88 | ||
@@ -133,11 +135,13 @@ int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen, | |||
133 | 135 | ||
134 | maskeddb = padded_from + SHA_DIGEST_LENGTH; | 136 | maskeddb = padded_from + SHA_DIGEST_LENGTH; |
135 | 137 | ||
136 | MGF1(seed, SHA_DIGEST_LENGTH, maskeddb, dblen); | 138 | if (MGF1(seed, SHA_DIGEST_LENGTH, maskeddb, dblen)) |
139 | return -1; | ||
137 | for (i = 0; i < SHA_DIGEST_LENGTH; i++) | 140 | for (i = 0; i < SHA_DIGEST_LENGTH; i++) |
138 | seed[i] ^= padded_from[i]; | 141 | seed[i] ^= padded_from[i]; |
139 | 142 | ||
140 | MGF1(db, dblen, seed, SHA_DIGEST_LENGTH); | 143 | if (MGF1(db, dblen, seed, SHA_DIGEST_LENGTH)) |
144 | return -1; | ||
141 | for (i = 0; i < dblen; i++) | 145 | for (i = 0; i < dblen; i++) |
142 | db[i] ^= maskeddb[i]; | 146 | db[i] ^= maskeddb[i]; |
143 | 147 | ||
@@ -187,7 +191,9 @@ int PKCS1_MGF1(unsigned char *mask, long len, | |||
187 | int mdlen; | 191 | int mdlen; |
188 | 192 | ||
189 | EVP_MD_CTX_init(&c); | 193 | EVP_MD_CTX_init(&c); |
190 | mdlen = M_EVP_MD_size(dgst); | 194 | mdlen = EVP_MD_size(dgst); |
195 | if (mdlen < 0) | ||
196 | return -1; | ||
191 | for (i = 0; outlen < len; i++) | 197 | for (i = 0; outlen < len; i++) |
192 | { | 198 | { |
193 | cnt[0] = (unsigned char)((i >> 24) & 255); | 199 | cnt[0] = (unsigned char)((i >> 24) & 255); |
@@ -213,7 +219,8 @@ int PKCS1_MGF1(unsigned char *mask, long len, | |||
213 | return 0; | 219 | return 0; |
214 | } | 220 | } |
215 | 221 | ||
216 | int MGF1(unsigned char *mask, long len, const unsigned char *seed, long seedlen) | 222 | static int MGF1(unsigned char *mask, long len, const unsigned char *seed, |
223 | long seedlen) | ||
217 | { | 224 | { |
218 | return PKCS1_MGF1(mask, len, seed, seedlen, EVP_sha1()); | 225 | return PKCS1_MGF1(mask, len, seed, seedlen, EVP_sha1()); |
219 | } | 226 | } |