| Index: openssl/crypto/pkcs12/p12_add.c
|
| ===================================================================
|
| --- openssl/crypto/pkcs12/p12_add.c (revision 105093)
|
| +++ openssl/crypto/pkcs12/p12_add.c (working copy)
|
| @@ -106,6 +106,7 @@
|
| PKCS8_PRIV_KEY_INFO *p8)
|
| {
|
| PKCS12_SAFEBAG *bag;
|
| + const EVP_CIPHER *pbe_ciph;
|
|
|
| /* Set up the safe bag */
|
| if (!(bag = PKCS12_SAFEBAG_new())) {
|
| @@ -114,8 +115,14 @@
|
| }
|
|
|
| bag->type = OBJ_nid2obj(NID_pkcs8ShroudedKeyBag);
|
| +
|
| + pbe_ciph = EVP_get_cipherbynid(pbe_nid);
|
| +
|
| + if (pbe_ciph)
|
| + pbe_nid = -1;
|
| +
|
| if (!(bag->value.shkeybag =
|
| - PKCS8_encrypt(pbe_nid, NULL, pass, passlen, salt, saltlen, iter,
|
| + PKCS8_encrypt(pbe_nid, pbe_ciph, pass, passlen, salt, saltlen, iter,
|
| p8))) {
|
| PKCS12err(PKCS12_F_PKCS12_MAKE_SHKEYBAG, ERR_R_MALLOC_FAILURE);
|
| return NULL;
|
| @@ -164,6 +171,7 @@
|
| {
|
| PKCS7 *p7;
|
| X509_ALGOR *pbe;
|
| + const EVP_CIPHER *pbe_ciph;
|
| if (!(p7 = PKCS7_new())) {
|
| PKCS12err(PKCS12_F_PKCS12_PACK_P7ENCDATA, ERR_R_MALLOC_FAILURE);
|
| return NULL;
|
| @@ -173,7 +181,15 @@
|
| PKCS12_R_ERROR_SETTING_ENCRYPTED_DATA_TYPE);
|
| return NULL;
|
| }
|
| - if (!(pbe = PKCS5_pbe_set(pbe_nid, iter, salt, saltlen))) {
|
| +
|
| + pbe_ciph = EVP_get_cipherbynid(pbe_nid);
|
| +
|
| + if (pbe_ciph)
|
| + pbe = PKCS5_pbe2_set(pbe_ciph, iter, salt, saltlen);
|
| + else
|
| + pbe = PKCS5_pbe_set(pbe_nid, iter, salt, saltlen);
|
| +
|
| + if (!pbe) {
|
| PKCS12err(PKCS12_F_PKCS12_PACK_P7ENCDATA, ERR_R_MALLOC_FAILURE);
|
| return NULL;
|
| }
|
|
|