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} |