Index: openssl/crypto/evp/p5_crpt.c |
=================================================================== |
--- openssl/crypto/evp/p5_crpt.c (revision 105093) |
+++ openssl/crypto/evp/p5_crpt.c (working copy) |
@@ -62,42 +62,11 @@ |
#include <openssl/x509.h> |
#include <openssl/evp.h> |
-/* PKCS#5 v1.5 compatible PBE functions: see PKCS#5 v2.0 for more info. |
+/* Doesn't do anything now: Builtin PBE algorithms in static table. |
*/ |
void PKCS5_PBE_add(void) |
{ |
-#ifndef OPENSSL_NO_DES |
-# ifndef OPENSSL_NO_MD5 |
-EVP_PBE_alg_add(NID_pbeWithMD5AndDES_CBC, EVP_des_cbc(), EVP_md5(), |
- PKCS5_PBE_keyivgen); |
-# endif |
-# ifndef OPENSSL_NO_MD2 |
-EVP_PBE_alg_add(NID_pbeWithMD2AndDES_CBC, EVP_des_cbc(), EVP_md2(), |
- PKCS5_PBE_keyivgen); |
-# endif |
-# ifndef OPENSSL_NO_SHA |
-EVP_PBE_alg_add(NID_pbeWithSHA1AndDES_CBC, EVP_des_cbc(), EVP_sha1(), |
- PKCS5_PBE_keyivgen); |
-# endif |
-#endif |
-#ifndef OPENSSL_NO_RC2 |
-# ifndef OPENSSL_NO_MD5 |
-EVP_PBE_alg_add(NID_pbeWithMD5AndRC2_CBC, EVP_rc2_64_cbc(), EVP_md5(), |
- PKCS5_PBE_keyivgen); |
-# endif |
-# ifndef OPENSSL_NO_MD2 |
-EVP_PBE_alg_add(NID_pbeWithMD2AndRC2_CBC, EVP_rc2_64_cbc(), EVP_md2(), |
- PKCS5_PBE_keyivgen); |
-# endif |
-# ifndef OPENSSL_NO_SHA |
-EVP_PBE_alg_add(NID_pbeWithSHA1AndRC2_CBC, EVP_rc2_64_cbc(), EVP_sha1(), |
- PKCS5_PBE_keyivgen); |
-# endif |
-#endif |
-#ifndef OPENSSL_NO_HMAC |
-EVP_PBE_alg_add(NID_pbes2, NULL, NULL, PKCS5_v2_PBE_keyivgen); |
-#endif |
} |
int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen, |
@@ -112,6 +81,7 @@ |
int saltlen, iter; |
unsigned char *salt; |
const unsigned char *pbuf; |
+ int mdsize; |
/* Extract useful info from parameter */ |
if (param == NULL || param->type != V_ASN1_SEQUENCE || |
@@ -140,9 +110,12 @@ |
EVP_DigestUpdate(&ctx, salt, saltlen); |
PBEPARAM_free(pbe); |
EVP_DigestFinal_ex(&ctx, md_tmp, NULL); |
+ mdsize = EVP_MD_size(md); |
+ if (mdsize < 0) |
+ return 0; |
for (i = 1; i < iter; i++) { |
EVP_DigestInit_ex(&ctx, md, NULL); |
- EVP_DigestUpdate(&ctx, md_tmp, EVP_MD_size(md)); |
+ EVP_DigestUpdate(&ctx, md_tmp, mdsize); |
EVP_DigestFinal_ex (&ctx, md_tmp, NULL); |
} |
EVP_MD_CTX_cleanup(&ctx); |