OpenCoverage

p12_npas.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/pkcs12/p12_npas.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4static int newpass_p12(PKCS12 *p12, const char *oldpass, const char *newpass);-
5static int newpass_bags(struct stack_st_PKCS12_SAFEBAG *bags, const char *oldpass,-
6 const char *newpass);-
7static int newpass_bag(PKCS12_SAFEBAG *bag, const char *oldpass,-
8 const char *newpass);-
9static int alg_get(const X509_ALGOR *alg, int *pnid, int *piter,-
10 int *psaltlen);-
11-
12-
13-
14-
15-
16int PKCS12_newpass(PKCS12 *p12, const char *oldpass, const char *newpass)-
17{-
18-
19-
20 if (!p12
!p12Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
21 ERR_put_error(35,(128),(105),__FILE__,38)-
22 ;-
23 return
never executed: return 0;
0;
never executed: return 0;
0
24 }-
25-
26-
27-
28 if (!PKCS12_verify_mac(p12, oldpass, -1)
!PKCS12_verify..., oldpass, -1)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
29 ERR_put_error(35,(128),(113),__FILE__,45);-
30 return
never executed: return 0;
0;
never executed: return 0;
0
31 }-
32-
33 if (!newpass_p12(p12, oldpass, newpass)
!newpass_p12(p...pass, newpass)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
34 ERR_put_error(35,(128),(114),__FILE__,50);-
35 return
never executed: return 0;
0;
never executed: return 0;
0
36 }-
37-
38 return
never executed: return 1;
1;
never executed: return 1;
0
39}-
40-
41-
42-
43static int newpass_p12(PKCS12 *p12, const char *oldpass, const char *newpass)-
44{-
45 struct stack_st_PKCS7 *asafes = -
46 ((void *)0)-
47 , *newsafes = -
48 ((void *)0)-
49 ;-
50 struct stack_st_PKCS12_SAFEBAG *bags = -
51 ((void *)0)-
52 ;-
53 int i, bagnid, pbe_nid = 0, pbe_iter = 0, pbe_saltlen = 0;-
54 PKCS7 *p7, *p7new;-
55 ASN1_OCTET_STRING *p12_data_tmp = -
56 ((void *)0)-
57 , *macoct = -
58 ((void *)0)-
59 ;-
60 unsigned char mac[64];-
61 unsigned int maclen;-
62 int rv = 0;-
63-
64 if ((
(asafes = PKCS...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
asafes = PKCS12_unpack_authsafes(p12)) ==
(asafes = PKCS...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
65 ((void *)0)
(asafes = PKCS...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
66 )-
67 goto
never executed: goto err;
err;
never executed: goto err;
0
68 if ((
(newsafes = sk...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
newsafes = sk_PKCS7_new_null()) ==
(newsafes = sk...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
69 ((void *)0)
(newsafes = sk...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
70 )-
71 goto
never executed: goto err;
err;
never executed: goto err;
0
72 for (i = 0; i < sk_PKCS7_num(asafes)
i < sk_PKCS7_num(asafes)Description
TRUEnever evaluated
FALSEnever evaluated
; i++) {
0
73 p7 = sk_PKCS7_value(asafes, i);-
74 bagnid = OBJ_obj2nid(p7->type);-
75 if (bagnid == 21
bagnid == 21Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
76 bags = PKCS12_unpack_p7data(p7);-
77 }
never executed: end of block
else if (bagnid == 26
bagnid == 26Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
78 bags = PKCS12_unpack_p7encdata(p7, oldpass, -1);-
79 if (!alg_get(p7->d.encrypted->enc_data->algorithm,
!alg_get(p7->d... &pbe_saltlen)Description
TRUEnever evaluated
FALSEnever evaluated
0
80 &pbe_nid, &pbe_iter, &pbe_saltlen)
!alg_get(p7->d... &pbe_saltlen)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
81 goto
never executed: goto err;
err;
never executed: goto err;
0
82 }
never executed: end of block
else {
0
83 continue;
never executed: continue;
0
84 }-
85 if (bags ==
bags == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
86 ((void *)0)
bags == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
87 )-
88 goto
never executed: goto err;
err;
never executed: goto err;
0
89 if (!newpass_bags(bags, oldpass, newpass)
!newpass_bags(...pass, newpass)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
90 goto
never executed: goto err;
err;
never executed: goto err;
0
91-
92 if (bagnid == 21
bagnid == 21Description
TRUEnever evaluated
FALSEnever evaluated
)
0
93 p7new = PKCS12_pack_p7data(bags);
never executed: p7new = PKCS12_pack_p7data(bags);
0
94 else-
95 p7new = PKCS12_pack_p7encdata(pbe_nid, newpass, -1,
never executed: p7new = PKCS12_pack_p7encdata(pbe_nid, newpass, -1, ((void *)0) , pbe_saltlen, pbe_iter, bags);
0
96 ((void *)0)
never executed: p7new = PKCS12_pack_p7encdata(pbe_nid, newpass, -1, ((void *)0) , pbe_saltlen, pbe_iter, bags);
0
97 ,
never executed: p7new = PKCS12_pack_p7encdata(pbe_nid, newpass, -1, ((void *)0) , pbe_saltlen, pbe_iter, bags);
0
98 pbe_saltlen, pbe_iter, bags);
never executed: p7new = PKCS12_pack_p7encdata(pbe_nid, newpass, -1, ((void *)0) , pbe_saltlen, pbe_iter, bags);
0
99 if (!p7new
!p7newDescription
TRUEnever evaluated
FALSEnever evaluated
|| !sk_PKCS7_push(newsafes, p7new)
!sk_PKCS7_push...wsafes, p7new)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
100 goto
never executed: goto err;
err;
never executed: goto err;
0
101 sk_PKCS12_SAFEBAG_pop_free(bags, PKCS12_SAFEBAG_free);-
102 bags = -
103 ((void *)0)-
104 ;-
105 }
never executed: end of block
0
106-
107-
108-
109 p12_data_tmp = p12->authsafes->d.data;-
110 if ((
(p12->authsafe...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
p12->authsafes->d.data = ASN1_OCTET_STRING_new()) ==
(p12->authsafe...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
111 ((void *)0)
(p12->authsafe...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
112 )-
113 goto
never executed: goto err;
err;
never executed: goto err;
0
114 if (!PKCS12_pack_authsafes(p12, newsafes)
!PKCS12_pack_a...p12, newsafes)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
115 goto
never executed: goto err;
err;
never executed: goto err;
0
116-
117 if (!PKCS12_gen_mac(p12, newpass, -1, mac, &maclen)
!PKCS12_gen_ma... mac, &maclen)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
118 goto
never executed: goto err;
err;
never executed: goto err;
0
119 X509_SIG_getm(p12->mac->dinfo, -
120 ((void *)0)-
121 , &macoct);-
122 if (!ASN1_OCTET_STRING_set(macoct, mac, maclen)
!ASN1_OCTET_ST..., mac, maclen)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
123 goto
never executed: goto err;
err;
never executed: goto err;
0
124-
125 rv = 1;-
126-
127err:
code before this statement never executed: err:
0
128-
129 if (rv == 1
rv == 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
130 ASN1_OCTET_STRING_free(p12_data_tmp);-
131 }
never executed: end of block
else if (p12_data_tmp !=
p12_data_tmp != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
132 ((void *)0)
p12_data_tmp != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
133 ) {-
134 ASN1_OCTET_STRING_free(p12->authsafes->d.data);-
135 p12->authsafes->d.data = p12_data_tmp;-
136 }
never executed: end of block
0
137 sk_PKCS12_SAFEBAG_pop_free(bags, PKCS12_SAFEBAG_free);-
138 sk_PKCS7_pop_free(asafes, PKCS7_free);-
139 sk_PKCS7_pop_free(newsafes, PKCS7_free);-
140 return
never executed: return rv;
rv;
never executed: return rv;
0
141}-
142-
143static int newpass_bags(struct stack_st_PKCS12_SAFEBAG *bags, const char *oldpass,-
144 const char *newpass)-
145{-
146 int i;-
147 for (i = 0; i < sk_PKCS12_SAFEBAG_num(bags)
i < sk_PKCS12_...EBAG_num(bags)Description
TRUEnever evaluated
FALSEnever evaluated
; i++) {
0
148 if (!newpass_bag(sk_PKCS12_SAFEBAG_value(bags, i), oldpass, newpass)
!newpass_bag(s...pass, newpass)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
149 return
never executed: return 0;
0;
never executed: return 0;
0
150 }
never executed: end of block
0
151 return
never executed: return 1;
1;
never executed: return 1;
0
152}-
153-
154-
155-
156static int newpass_bag(PKCS12_SAFEBAG *bag, const char *oldpass,-
157 const char *newpass)-
158{-
159 PKCS8_PRIV_KEY_INFO *p8;-
160 X509_SIG *p8new;-
161 int p8_nid, p8_saltlen, p8_iter;-
162 const X509_ALGOR *shalg;-
163-
164 if (PKCS12_SAFEBAG_get_nid(bag) != 151
PKCS12_SAFEBAG...id(bag) != 151Description
TRUEnever evaluated
FALSEnever evaluated
)
0
165 return
never executed: return 1;
1;
never executed: return 1;
0
166-
167 if ((
(p8 = PKCS8_de...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
p8 = PKCS8_decrypt(bag->value.shkeybag, oldpass, -1)) ==
(p8 = PKCS8_de...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
168 ((void *)0)
(p8 = PKCS8_de...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
169 )-
170 return
never executed: return 0;
0;
never executed: return 0;
0
171 X509_SIG_get0(bag->value.shkeybag, &shalg, -
172 ((void *)0)-
173 );-
174 if (!alg_get(shalg, &p8_nid, &p8_iter, &p8_saltlen)
!alg_get(shalg..., &p8_saltlen)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
175 return
never executed: return 0;
0;
never executed: return 0;
0
176 p8new = PKCS8_encrypt(p8_nid, -
177 ((void *)0)-
178 , newpass, -1, -
179 ((void *)0)-
180 , p8_saltlen,-
181 p8_iter, p8);-
182 PKCS8_PRIV_KEY_INFO_free(p8);-
183 if (p8new ==
p8new == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
184 ((void *)0)
p8new == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
185 )-
186 return
never executed: return 0;
0;
never executed: return 0;
0
187 X509_SIG_free(bag->value.shkeybag);-
188 bag->value.shkeybag = p8new;-
189 return
never executed: return 1;
1;
never executed: return 1;
0
190}-
191-
192static int alg_get(const X509_ALGOR *alg, int *pnid, int *piter,-
193 int *psaltlen)-
194{-
195 PBEPARAM *pbe;-
196 pbe = ASN1_TYPE_unpack_sequence((&(PBEPARAM_it)), alg->parameter);-
197 if (!pbe
!pbeDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
198 return
never executed: return 0;
0;
never executed: return 0;
0
199 *pnid = OBJ_obj2nid(alg->algorithm);-
200 *piter = ASN1_INTEGER_get(pbe->iter);-
201 *psaltlen = pbe->salt->length;-
202 PBEPARAM_free(pbe);-
203 return
never executed: return 1;
1;
never executed: return 1;
0
204}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2