diff options
author | djm <> | 2006-06-27 05:07:03 +0000 |
---|---|---|
committer | djm <> | 2006-06-27 05:07:03 +0000 |
commit | 7fe7e1ed6bcd0e342aed7c0f890962dda616aa0d (patch) | |
tree | 224c33f66b0b932c84dda315d9ba4236bf125b1c /src/lib/libcrypto/rsa/rsa_oaep.c | |
parent | 3f764f48d2626a43b6eeef7652c28303269d1204 (diff) | |
download | openbsd-7fe7e1ed6bcd0e342aed7c0f890962dda616aa0d.tar.gz openbsd-7fe7e1ed6bcd0e342aed7c0f890962dda616aa0d.tar.bz2 openbsd-7fe7e1ed6bcd0e342aed7c0f890962dda616aa0d.zip |
resolve conflicts
Diffstat (limited to 'src/lib/libcrypto/rsa/rsa_oaep.c')
-rw-r--r-- | src/lib/libcrypto/rsa/rsa_oaep.c | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/src/lib/libcrypto/rsa/rsa_oaep.c b/src/lib/libcrypto/rsa/rsa_oaep.c index e3f7c608ec..d43ecaca63 100644 --- a/src/lib/libcrypto/rsa/rsa_oaep.c +++ b/src/lib/libcrypto/rsa/rsa_oaep.c | |||
@@ -28,9 +28,6 @@ | |||
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, | ||
32 | const unsigned char *seed, long seedlen); | ||
33 | |||
34 | int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen, | 31 | int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen, |
35 | const unsigned char *from, int flen, | 32 | const unsigned char *from, int flen, |
36 | const unsigned char *param, int plen) | 33 | const unsigned char *param, int plen) |
@@ -76,11 +73,13 @@ int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen, | |||
76 | 20); | 73 | 20); |
77 | #endif | 74 | #endif |
78 | 75 | ||
79 | MGF1(dbmask, emlen - SHA_DIGEST_LENGTH, seed, SHA_DIGEST_LENGTH); | 76 | PKCS1_MGF1(dbmask, emlen - SHA_DIGEST_LENGTH, seed, SHA_DIGEST_LENGTH, |
77 | EVP_sha1()); | ||
80 | for (i = 0; i < emlen - SHA_DIGEST_LENGTH; i++) | 78 | for (i = 0; i < emlen - SHA_DIGEST_LENGTH; i++) |
81 | db[i] ^= dbmask[i]; | 79 | db[i] ^= dbmask[i]; |
82 | 80 | ||
83 | MGF1(seedmask, SHA_DIGEST_LENGTH, db, emlen - SHA_DIGEST_LENGTH); | 81 | PKCS1_MGF1(seedmask, SHA_DIGEST_LENGTH, db, emlen - SHA_DIGEST_LENGTH, |
82 | EVP_sha1()); | ||
84 | for (i = 0; i < SHA_DIGEST_LENGTH; i++) | 83 | for (i = 0; i < SHA_DIGEST_LENGTH; i++) |
85 | seed[i] ^= seedmask[i]; | 84 | seed[i] ^= seedmask[i]; |
86 | 85 | ||
@@ -126,11 +125,11 @@ int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen, | |||
126 | return -1; | 125 | return -1; |
127 | } | 126 | } |
128 | 127 | ||
129 | MGF1(seed, SHA_DIGEST_LENGTH, maskeddb, dblen); | 128 | PKCS1_MGF1(seed, SHA_DIGEST_LENGTH, maskeddb, dblen, EVP_sha1()); |
130 | for (i = lzero; i < SHA_DIGEST_LENGTH; i++) | 129 | for (i = lzero; i < SHA_DIGEST_LENGTH; i++) |
131 | seed[i] ^= from[i - lzero]; | 130 | seed[i] ^= from[i - lzero]; |
132 | 131 | ||
133 | MGF1(db, dblen, seed, SHA_DIGEST_LENGTH); | 132 | PKCS1_MGF1(db, dblen, seed, SHA_DIGEST_LENGTH, EVP_sha1()); |
134 | for (i = 0; i < dblen; i++) | 133 | for (i = 0; i < dblen; i++) |
135 | db[i] ^= maskeddb[i]; | 134 | db[i] ^= maskeddb[i]; |
136 | 135 | ||
@@ -170,28 +169,30 @@ decoding_err: | |||
170 | return -1; | 169 | return -1; |
171 | } | 170 | } |
172 | 171 | ||
173 | int MGF1(unsigned char *mask, long len, | 172 | int PKCS1_MGF1(unsigned char *mask, long len, |
174 | const unsigned char *seed, long seedlen) | 173 | const unsigned char *seed, long seedlen, const EVP_MD *dgst) |
175 | { | 174 | { |
176 | long i, outlen = 0; | 175 | long i, outlen = 0; |
177 | unsigned char cnt[4]; | 176 | unsigned char cnt[4]; |
178 | EVP_MD_CTX c; | 177 | EVP_MD_CTX c; |
179 | unsigned char md[SHA_DIGEST_LENGTH]; | 178 | unsigned char md[EVP_MAX_MD_SIZE]; |
179 | int mdlen; | ||
180 | 180 | ||
181 | EVP_MD_CTX_init(&c); | 181 | EVP_MD_CTX_init(&c); |
182 | mdlen = EVP_MD_size(dgst); | ||
182 | for (i = 0; outlen < len; i++) | 183 | for (i = 0; outlen < len; i++) |
183 | { | 184 | { |
184 | cnt[0] = (unsigned char)((i >> 24) & 255); | 185 | cnt[0] = (unsigned char)((i >> 24) & 255); |
185 | cnt[1] = (unsigned char)((i >> 16) & 255); | 186 | cnt[1] = (unsigned char)((i >> 16) & 255); |
186 | cnt[2] = (unsigned char)((i >> 8)) & 255; | 187 | cnt[2] = (unsigned char)((i >> 8)) & 255; |
187 | cnt[3] = (unsigned char)(i & 255); | 188 | cnt[3] = (unsigned char)(i & 255); |
188 | EVP_DigestInit_ex(&c,EVP_sha1(), NULL); | 189 | EVP_DigestInit_ex(&c,dgst, NULL); |
189 | EVP_DigestUpdate(&c, seed, seedlen); | 190 | EVP_DigestUpdate(&c, seed, seedlen); |
190 | EVP_DigestUpdate(&c, cnt, 4); | 191 | EVP_DigestUpdate(&c, cnt, 4); |
191 | if (outlen + SHA_DIGEST_LENGTH <= len) | 192 | if (outlen + mdlen <= len) |
192 | { | 193 | { |
193 | EVP_DigestFinal_ex(&c, mask + outlen, NULL); | 194 | EVP_DigestFinal_ex(&c, mask + outlen, NULL); |
194 | outlen += SHA_DIGEST_LENGTH; | 195 | outlen += mdlen; |
195 | } | 196 | } |
196 | else | 197 | else |
197 | { | 198 | { |
@@ -203,4 +204,9 @@ int MGF1(unsigned char *mask, long len, | |||
203 | EVP_MD_CTX_cleanup(&c); | 204 | EVP_MD_CTX_cleanup(&c); |
204 | return 0; | 205 | return 0; |
205 | } | 206 | } |
207 | |||
208 | int MGF1(unsigned char *mask, long len, const unsigned char *seed, long seedlen) | ||
209 | { | ||
210 | return PKCS1_MGF1(mask, len, seed, seedlen, EVP_sha1()); | ||
211 | } | ||
206 | #endif | 212 | #endif |