diff options
| author | djm <> | 2011-11-03 02:34:33 +0000 |
|---|---|---|
| committer | djm <> | 2011-11-03 02:34:33 +0000 |
| commit | fc7396568e61a510b9336d6c220aaa889c03060f (patch) | |
| tree | a8fc08e33aecdd21cb07aa47c8a3a9db715f2ef3 /src/lib/libcrypto/rsa/rsa_oaep.c | |
| parent | 1e8701dd2507fadf6d232d93eb4299a8b79c66d5 (diff) | |
| download | openbsd-fc7396568e61a510b9336d6c220aaa889c03060f.tar.gz openbsd-fc7396568e61a510b9336d6c220aaa889c03060f.tar.bz2 openbsd-fc7396568e61a510b9336d6c220aaa889c03060f.zip | |
openssl-1.0.0e: resolve conflicts
Diffstat (limited to 'src/lib/libcrypto/rsa/rsa_oaep.c')
| -rw-r--r-- | src/lib/libcrypto/rsa/rsa_oaep.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/lib/libcrypto/rsa/rsa_oaep.c b/src/lib/libcrypto/rsa/rsa_oaep.c index e238d10e5c..18d307ea9e 100644 --- a/src/lib/libcrypto/rsa/rsa_oaep.c +++ b/src/lib/libcrypto/rsa/rsa_oaep.c | |||
| @@ -189,34 +189,40 @@ int PKCS1_MGF1(unsigned char *mask, long len, | |||
| 189 | EVP_MD_CTX c; | 189 | EVP_MD_CTX c; |
| 190 | unsigned char md[EVP_MAX_MD_SIZE]; | 190 | unsigned char md[EVP_MAX_MD_SIZE]; |
| 191 | int mdlen; | 191 | int mdlen; |
| 192 | int rv = -1; | ||
| 192 | 193 | ||
| 193 | EVP_MD_CTX_init(&c); | 194 | EVP_MD_CTX_init(&c); |
| 194 | mdlen = EVP_MD_size(dgst); | 195 | mdlen = EVP_MD_size(dgst); |
| 195 | if (mdlen < 0) | 196 | if (mdlen < 0) |
| 196 | return -1; | 197 | goto err; |
| 197 | for (i = 0; outlen < len; i++) | 198 | for (i = 0; outlen < len; i++) |
| 198 | { | 199 | { |
| 199 | cnt[0] = (unsigned char)((i >> 24) & 255); | 200 | cnt[0] = (unsigned char)((i >> 24) & 255); |
| 200 | cnt[1] = (unsigned char)((i >> 16) & 255); | 201 | cnt[1] = (unsigned char)((i >> 16) & 255); |
| 201 | cnt[2] = (unsigned char)((i >> 8)) & 255; | 202 | cnt[2] = (unsigned char)((i >> 8)) & 255; |
| 202 | cnt[3] = (unsigned char)(i & 255); | 203 | cnt[3] = (unsigned char)(i & 255); |
| 203 | EVP_DigestInit_ex(&c,dgst, NULL); | 204 | if (!EVP_DigestInit_ex(&c,dgst, NULL) |
| 204 | EVP_DigestUpdate(&c, seed, seedlen); | 205 | || !EVP_DigestUpdate(&c, seed, seedlen) |
| 205 | EVP_DigestUpdate(&c, cnt, 4); | 206 | || !EVP_DigestUpdate(&c, cnt, 4)) |
| 207 | goto err; | ||
| 206 | if (outlen + mdlen <= len) | 208 | if (outlen + mdlen <= len) |
| 207 | { | 209 | { |
| 208 | EVP_DigestFinal_ex(&c, mask + outlen, NULL); | 210 | if (!EVP_DigestFinal_ex(&c, mask + outlen, NULL)) |
| 211 | goto err; | ||
| 209 | outlen += mdlen; | 212 | outlen += mdlen; |
| 210 | } | 213 | } |
| 211 | else | 214 | else |
| 212 | { | 215 | { |
| 213 | EVP_DigestFinal_ex(&c, md, NULL); | 216 | if (!EVP_DigestFinal_ex(&c, md, NULL)) |
| 217 | goto err; | ||
| 214 | memcpy(mask + outlen, md, len - outlen); | 218 | memcpy(mask + outlen, md, len - outlen); |
| 215 | outlen = len; | 219 | outlen = len; |
| 216 | } | 220 | } |
| 217 | } | 221 | } |
| 222 | rv = 0; | ||
| 223 | err: | ||
| 218 | EVP_MD_CTX_cleanup(&c); | 224 | EVP_MD_CTX_cleanup(&c); |
| 219 | return 0; | 225 | return rv; |
| 220 | } | 226 | } |
| 221 | 227 | ||
| 222 | static int MGF1(unsigned char *mask, long len, const unsigned char *seed, | 228 | static int MGF1(unsigned char *mask, long len, const unsigned char *seed, |
