Deleted Added
full compact
p12_npas.c (194206) p12_npas.c (215697)
1/* p12_npas.c */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 1999.
4 */
5/* ====================================================================
6 * Copyright (c) 1999 The OpenSSL Project. All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 106 unchanged lines hidden (view full) ---

115 if(!(newsafes = sk_PKCS7_new_null())) return 0;
116 for (i = 0; i < sk_PKCS7_num (asafes); i++) {
117 p7 = sk_PKCS7_value(asafes, i);
118 bagnid = OBJ_obj2nid(p7->type);
119 if (bagnid == NID_pkcs7_data) {
120 bags = PKCS12_unpack_p7data(p7);
121 } else if (bagnid == NID_pkcs7_encrypted) {
122 bags = PKCS12_unpack_p7encdata(p7, oldpass, -1);
1/* p12_npas.c */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 1999.
4 */
5/* ====================================================================
6 * Copyright (c) 1999 The OpenSSL Project. All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 106 unchanged lines hidden (view full) ---

115 if(!(newsafes = sk_PKCS7_new_null())) return 0;
116 for (i = 0; i < sk_PKCS7_num (asafes); i++) {
117 p7 = sk_PKCS7_value(asafes, i);
118 bagnid = OBJ_obj2nid(p7->type);
119 if (bagnid == NID_pkcs7_data) {
120 bags = PKCS12_unpack_p7data(p7);
121 } else if (bagnid == NID_pkcs7_encrypted) {
122 bags = PKCS12_unpack_p7encdata(p7, oldpass, -1);
123 alg_get(p7->d.encrypted->enc_data->algorithm,
124 &pbe_nid, &pbe_iter, &pbe_saltlen);
123 if (!alg_get(p7->d.encrypted->enc_data->algorithm,
124 &pbe_nid, &pbe_iter, &pbe_saltlen))
125 {
126 sk_PKCS12_SAFEBAG_pop_free(bags,
127 PKCS12_SAFEBAG_free);
128 bags = NULL;
129 }
125 } else continue;
126 if (!bags) {
127 sk_PKCS7_pop_free(asafes, PKCS7_free);
128 return 0;
129 }
130 if (!newpass_bags(bags, oldpass, newpass)) {
131 sk_PKCS12_SAFEBAG_pop_free(bags, PKCS12_SAFEBAG_free);
132 sk_PKCS7_pop_free(asafes, PKCS7_free);

--- 55 unchanged lines hidden (view full) ---

188{
189 PKCS8_PRIV_KEY_INFO *p8;
190 X509_SIG *p8new;
191 int p8_nid, p8_saltlen, p8_iter;
192
193 if(M_PKCS12_bag_type(bag) != NID_pkcs8ShroudedKeyBag) return 1;
194
195 if (!(p8 = PKCS8_decrypt(bag->value.shkeybag, oldpass, -1))) return 0;
130 } else continue;
131 if (!bags) {
132 sk_PKCS7_pop_free(asafes, PKCS7_free);
133 return 0;
134 }
135 if (!newpass_bags(bags, oldpass, newpass)) {
136 sk_PKCS12_SAFEBAG_pop_free(bags, PKCS12_SAFEBAG_free);
137 sk_PKCS7_pop_free(asafes, PKCS7_free);

--- 55 unchanged lines hidden (view full) ---

193{
194 PKCS8_PRIV_KEY_INFO *p8;
195 X509_SIG *p8new;
196 int p8_nid, p8_saltlen, p8_iter;
197
198 if(M_PKCS12_bag_type(bag) != NID_pkcs8ShroudedKeyBag) return 1;
199
200 if (!(p8 = PKCS8_decrypt(bag->value.shkeybag, oldpass, -1))) return 0;
196 alg_get(bag->value.shkeybag->algor, &p8_nid, &p8_iter, &p8_saltlen);
201 if (!alg_get(bag->value.shkeybag->algor, &p8_nid, &p8_iter,
202 &p8_saltlen))
203 return 0;
197 if(!(p8new = PKCS8_encrypt(p8_nid, NULL, newpass, -1, NULL, p8_saltlen,
198 p8_iter, p8))) return 0;
199 X509_SIG_free(bag->value.shkeybag);
200 bag->value.shkeybag = p8new;
201 return 1;
202}
203
204static int alg_get(X509_ALGOR *alg, int *pnid, int *piter, int *psaltlen)
205{
206 PBEPARAM *pbe;
207 const unsigned char *p;
208
209 p = alg->parameter->value.sequence->data;
210 pbe = d2i_PBEPARAM(NULL, &p, alg->parameter->value.sequence->length);
204 if(!(p8new = PKCS8_encrypt(p8_nid, NULL, newpass, -1, NULL, p8_saltlen,
205 p8_iter, p8))) return 0;
206 X509_SIG_free(bag->value.shkeybag);
207 bag->value.shkeybag = p8new;
208 return 1;
209}
210
211static int alg_get(X509_ALGOR *alg, int *pnid, int *piter, int *psaltlen)
212{
213 PBEPARAM *pbe;
214 const unsigned char *p;
215
216 p = alg->parameter->value.sequence->data;
217 pbe = d2i_PBEPARAM(NULL, &p, alg->parameter->value.sequence->length);
218 if (!pbe)
219 return 0;
211 *pnid = OBJ_obj2nid(alg->algorithm);
212 *piter = ASN1_INTEGER_get(pbe->iter);
213 *psaltlen = pbe->salt->length;
214 PBEPARAM_free(pbe);
220 *pnid = OBJ_obj2nid(alg->algorithm);
221 *piter = ASN1_INTEGER_get(pbe->iter);
222 *psaltlen = pbe->salt->length;
223 PBEPARAM_free(pbe);
215 return 0;
224 return 1;
216}
225}