diff options
Diffstat (limited to 'src/lib/libcrypto/evp/p5_crpt2.c')
-rw-r--r-- | src/lib/libcrypto/evp/p5_crpt2.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/lib/libcrypto/evp/p5_crpt2.c b/src/lib/libcrypto/evp/p5_crpt2.c index 717fad68ca..7881860b53 100644 --- a/src/lib/libcrypto/evp/p5_crpt2.c +++ b/src/lib/libcrypto/evp/p5_crpt2.c | |||
@@ -55,7 +55,7 @@ | |||
55 | * Hudson (tjh@cryptsoft.com). | 55 | * Hudson (tjh@cryptsoft.com). |
56 | * | 56 | * |
57 | */ | 57 | */ |
58 | #if !defined(NO_HMAC) && !defined(NO_SHA) | 58 | #if !defined(OPENSSL_NO_HMAC) && !defined(OPENSSL_NO_SHA) |
59 | #include <stdio.h> | 59 | #include <stdio.h> |
60 | #include <stdlib.h> | 60 | #include <stdlib.h> |
61 | #include <openssl/x509.h> | 61 | #include <openssl/x509.h> |
@@ -84,6 +84,8 @@ int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen, | |||
84 | int cplen, j, k, tkeylen; | 84 | int cplen, j, k, tkeylen; |
85 | unsigned long i = 1; | 85 | unsigned long i = 1; |
86 | HMAC_CTX hctx; | 86 | HMAC_CTX hctx; |
87 | |||
88 | HMAC_CTX_init(&hctx); | ||
87 | p = out; | 89 | p = out; |
88 | tkeylen = keylen; | 90 | tkeylen = keylen; |
89 | if(!pass) passlen = 0; | 91 | if(!pass) passlen = 0; |
@@ -98,7 +100,7 @@ int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen, | |||
98 | itmp[1] = (unsigned char)((i >> 16) & 0xff); | 100 | itmp[1] = (unsigned char)((i >> 16) & 0xff); |
99 | itmp[2] = (unsigned char)((i >> 8) & 0xff); | 101 | itmp[2] = (unsigned char)((i >> 8) & 0xff); |
100 | itmp[3] = (unsigned char)(i & 0xff); | 102 | itmp[3] = (unsigned char)(i & 0xff); |
101 | HMAC_Init(&hctx, pass, passlen, EVP_sha1()); | 103 | HMAC_Init_ex(&hctx, pass, passlen, EVP_sha1(), NULL); |
102 | HMAC_Update(&hctx, salt, saltlen); | 104 | HMAC_Update(&hctx, salt, saltlen); |
103 | HMAC_Update(&hctx, itmp, 4); | 105 | HMAC_Update(&hctx, itmp, 4); |
104 | HMAC_Final(&hctx, digtmp, NULL); | 106 | HMAC_Final(&hctx, digtmp, NULL); |
@@ -112,7 +114,7 @@ int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen, | |||
112 | i++; | 114 | i++; |
113 | p+= cplen; | 115 | p+= cplen; |
114 | } | 116 | } |
115 | HMAC_cleanup(&hctx); | 117 | HMAC_CTX_cleanup(&hctx); |
116 | #ifdef DEBUG_PKCS5V2 | 118 | #ifdef DEBUG_PKCS5V2 |
117 | fprintf(stderr, "Password:\n"); | 119 | fprintf(stderr, "Password:\n"); |
118 | h__dump (pass, passlen); | 120 | h__dump (pass, passlen); |
@@ -143,7 +145,7 @@ main() | |||
143 | */ | 145 | */ |
144 | 146 | ||
145 | int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, | 147 | int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, |
146 | ASN1_TYPE *param, EVP_CIPHER *c, EVP_MD *md, | 148 | ASN1_TYPE *param, const EVP_CIPHER *c, const EVP_MD *md, |
147 | int en_de) | 149 | int en_de) |
148 | { | 150 | { |
149 | unsigned char *pbuf, *salt, key[EVP_MAX_KEY_LENGTH]; | 151 | unsigned char *pbuf, *salt, key[EVP_MAX_KEY_LENGTH]; |
@@ -181,7 +183,7 @@ int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, | |||
181 | } | 183 | } |
182 | 184 | ||
183 | /* Fixup cipher based on AlgorithmIdentifier */ | 185 | /* Fixup cipher based on AlgorithmIdentifier */ |
184 | EVP_CipherInit(ctx, cipher, NULL, NULL, en_de); | 186 | EVP_CipherInit_ex(ctx, cipher, NULL, NULL, NULL, en_de); |
185 | if(EVP_CIPHER_asn1_to_param(ctx, pbe2->encryption->parameter) < 0) { | 187 | if(EVP_CIPHER_asn1_to_param(ctx, pbe2->encryption->parameter) < 0) { |
186 | EVPerr(EVP_F_PKCS5_V2_PBE_KEYIVGEN, | 188 | EVPerr(EVP_F_PKCS5_V2_PBE_KEYIVGEN, |
187 | EVP_R_CIPHER_PARAMETER_ERROR); | 189 | EVP_R_CIPHER_PARAMETER_ERROR); |
@@ -227,7 +229,7 @@ int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, | |||
227 | saltlen = kdf->salt->value.octet_string->length; | 229 | saltlen = kdf->salt->value.octet_string->length; |
228 | iter = ASN1_INTEGER_get(kdf->iter); | 230 | iter = ASN1_INTEGER_get(kdf->iter); |
229 | PKCS5_PBKDF2_HMAC_SHA1(pass, passlen, salt, saltlen, iter, keylen, key); | 231 | PKCS5_PBKDF2_HMAC_SHA1(pass, passlen, salt, saltlen, iter, keylen, key); |
230 | EVP_CipherInit(ctx, NULL, key, NULL, en_de); | 232 | EVP_CipherInit_ex(ctx, NULL, NULL, key, NULL, en_de); |
231 | memset(key, 0, keylen); | 233 | memset(key, 0, keylen); |
232 | PBKDF2PARAM_free(kdf); | 234 | PBKDF2PARAM_free(kdf); |
233 | return 1; | 235 | return 1; |