diff options
author | Dr. Stephen Henson <steve@openssl.org> | 1999-06-06 18:41:52 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 1999-06-06 18:41:52 +0000 |
commit | 2bd83ca1c95405fe03b33cdc98e6fa43e7258246 (patch) | |
tree | 77db8e8be62a27adf992fa4d36d7f66b7a39a207 /crypto/pkcs12/p12_crpt.c | |
parent | 69cbf468119d6a85289e4720d609c38d4329de23 (diff) |
Change PBE handling a bit more: now the key and iv generator does calls
EVP_CipherInit() this because the IV wont be easily available when doing
PKCS#5 v2.0
Diffstat (limited to 'crypto/pkcs12/p12_crpt.c')
-rw-r--r-- | crypto/pkcs12/p12_crpt.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/crypto/pkcs12/p12_crpt.c b/crypto/pkcs12/p12_crpt.c index cb65c42000..ae516eeb8d 100644 --- a/crypto/pkcs12/p12_crpt.c +++ b/crypto/pkcs12/p12_crpt.c @@ -82,13 +82,13 @@ EVP_PBE_alg_add(NID_pbe_WithSHA1And40BitRC2_CBC, EVP_rc2_40_cbc(), #endif } -int PKCS12_PBE_keyivgen (const char *pass, int passlen, ASN1_TYPE *param, - EVP_CIPHER *cipher, EVP_MD *md, - unsigned char *key, unsigned char *iv) +int PKCS12_PBE_keyivgen (EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, EVP_CIPHER *cipher, EVP_MD *md, int en_de) { PBEPARAM *pbe; int saltlen, iter; unsigned char *salt, *pbuf; + unsigned char key[EVP_MAX_KEY_LENGTH], iv[EVP_MAX_IV_LENGTH]; /* Extract useful info from parameter */ pbuf = param->value.sequence->data; @@ -115,5 +115,8 @@ int PKCS12_PBE_keyivgen (const char *pass, int passlen, ASN1_TYPE *param, return 0; } PBEPARAM_free(pbe); + EVP_CipherInit(ctx, cipher, key, iv, en_de); + memset(key, 0, EVP_MAX_KEY_LENGTH); + memset(iv, 0, EVP_MAX_IV_LENGTH); return 1; } |