diff options
Diffstat (limited to 'src/lib/libcrypto/pkcs12/p12_key.c')
| -rw-r--r-- | src/lib/libcrypto/pkcs12/p12_key.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/lib/libcrypto/pkcs12/p12_key.c b/src/lib/libcrypto/pkcs12/p12_key.c index c55c7b60b3..424203f648 100644 --- a/src/lib/libcrypto/pkcs12/p12_key.c +++ b/src/lib/libcrypto/pkcs12/p12_key.c | |||
| @@ -152,16 +152,14 @@ int PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt, | |||
| 152 | for (i = 0; i < Slen; i++) *p++ = salt[i % saltlen]; | 152 | for (i = 0; i < Slen; i++) *p++ = salt[i % saltlen]; |
| 153 | for (i = 0; i < Plen; i++) *p++ = pass[i % passlen]; | 153 | for (i = 0; i < Plen; i++) *p++ = pass[i % passlen]; |
| 154 | for (;;) { | 154 | for (;;) { |
| 155 | if (!EVP_DigestInit_ex(&ctx, md_type, NULL) | 155 | EVP_DigestInit_ex(&ctx, md_type, NULL); |
| 156 | || !EVP_DigestUpdate(&ctx, D, v) | 156 | EVP_DigestUpdate(&ctx, D, v); |
| 157 | || !EVP_DigestUpdate(&ctx, I, Ilen) | 157 | EVP_DigestUpdate(&ctx, I, Ilen); |
| 158 | || !EVP_DigestFinal_ex(&ctx, Ai, NULL)) | 158 | EVP_DigestFinal_ex(&ctx, Ai, NULL); |
| 159 | goto err; | ||
| 160 | for (j = 1; j < iter; j++) { | 159 | for (j = 1; j < iter; j++) { |
| 161 | if (!EVP_DigestInit_ex(&ctx, md_type, NULL) | 160 | EVP_DigestInit_ex(&ctx, md_type, NULL); |
| 162 | || !EVP_DigestUpdate(&ctx, Ai, u) | 161 | EVP_DigestUpdate(&ctx, Ai, u); |
| 163 | || !EVP_DigestFinal_ex(&ctx, Ai, NULL)) | 162 | EVP_DigestFinal_ex(&ctx, Ai, NULL); |
| 164 | goto err; | ||
| 165 | } | 163 | } |
| 166 | memcpy (out, Ai, min (n, u)); | 164 | memcpy (out, Ai, min (n, u)); |
| 167 | if (u >= n) { | 165 | if (u >= n) { |
