OpenCoverage

p12_crt.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/pkcs12/p12_crt.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2static int pkcs12_add_bag(struct stack_st_PKCS12_SAFEBAG **pbags,-
3 PKCS12_SAFEBAG *bag);-
4-
5static int copy_bag_attr(PKCS12_SAFEBAG *bag, EVP_PKEY *pkey, int nid)-
6{-
7 int idx;-
8 X509_ATTRIBUTE *attr;-
9 idx = EVP_PKEY_get_attr_by_NID(pkey, nid, -1);-
10 if (idx < 0
idx < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
11 return
never executed: return 1;
1;
never executed: return 1;
0
12 attr = EVP_PKEY_get_attr(pkey, idx);-
13 if (!X509at_add1_attr(&bag->attrib, attr)
!X509at_add1_a...>attrib, attr)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
14 return
never executed: return 0;
0;
never executed: return 0;
0
15 return
never executed: return 1;
1;
never executed: return 1;
0
16}-
17-
18PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert,-
19 struct stack_st_X509 *ca, int nid_key, int nid_cert, int iter,-
20 int mac_iter, int keytype)-
21{-
22 PKCS12 *p12 = -
23 ((void *)0)-
24 ;-
25 struct stack_st_PKCS7 *safes = -
26 ((void *)0)-
27 ;-
28 struct stack_st_PKCS12_SAFEBAG *bags = -
29 ((void *)0)-
30 ;-
31 PKCS12_SAFEBAG *bag = -
32 ((void *)0)-
33 ;-
34 int i;-
35 unsigned char keyid[64];-
36 unsigned int keyidlen = 0;-
37-
38-
39 if (!nid_cert
!nid_certDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
40-
41-
42-
43 nid_cert = 149;
never executed: nid_cert = 149;
0
44-
45 if (!nid_key
!nid_keyDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
46 nid_key = 146;
never executed: nid_key = 146;
0
47 if (!iter
!iterDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
48 iter = 2048;
never executed: iter = 2048;
0
49 if (!mac_iter
!mac_iterDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
50 mac_iter = 1;
never executed: mac_iter = 1;
0
51-
52 if (!pkey
!pkeyDescription
TRUEnever evaluated
FALSEnever evaluated
&& !cert
!certDescription
TRUEnever evaluated
FALSEnever evaluated
&& !ca
!caDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
53 ERR_put_error(35,(105),(104),__FILE__,58);-
54 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
55 ((void *)0)
never executed: return ((void *)0) ;
0
56 ;
never executed: return ((void *)0) ;
0
57 }-
58-
59 if (pkey
pkeyDescription
TRUEnever evaluated
FALSEnever evaluated
&& cert
certDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
60 if (!X509_check_private_key(cert, pkey)
!X509_check_pr...ey(cert, pkey)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
61 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
62 ((void *)0)
never executed: return ((void *)0) ;
0
63 ;
never executed: return ((void *)0) ;
0
64 X509_digest(cert, EVP_sha1(), keyid, &keyidlen);-
65 }
never executed: end of block
0
66-
67 if (cert
certDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
68 bag = PKCS12_add_cert(&bags, cert);-
69 if (name
nameDescription
TRUEnever evaluated
FALSEnever evaluated
&& !PKCS12_add_friendlyname_utf8(bag, name, -1)
!PKCS12_add_fr...bag, name, -1)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
70 goto
never executed: goto err;
err;
never executed: goto err;
0
71 if (keyidlen
keyidlenDescription
TRUEnever evaluated
FALSEnever evaluated
&& !PKCS12_add_localkeyid(bag, keyid, keyidlen)
!PKCS12_add_lo...yid, keyidlen)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
72 goto
never executed: goto err;
err;
never executed: goto err;
0
73 }
never executed: end of block
0
74-
75-
76 for (i = 0; i < sk_X509_num(ca)
i < sk_X509_num(ca)Description
TRUEnever evaluated
FALSEnever evaluated
; i++) {
0
77 if (!PKCS12_add_cert(&bags, sk_X509_value(ca, i))
!PKCS12_add_ce..._value(ca, i))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
78 goto
never executed: goto err;
err;
never executed: goto err;
0
79 }
never executed: end of block
0
80-
81 if (bags
bagsDescription
TRUEnever evaluated
FALSEnever evaluated
&& !PKCS12_add_safe(&safes, bags, nid_cert, iter, pass)
!PKCS12_add_sa...t, iter, pass)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
82 goto
never executed: goto err;
err;
never executed: goto err;
0
83-
84 sk_PKCS12_SAFEBAG_pop_free(bags, PKCS12_SAFEBAG_free);-
85 bags = -
86 ((void *)0)-
87 ;-
88-
89 if (pkey
pkeyDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
90 bag = PKCS12_add_key(&bags, pkey, keytype, iter, nid_key, pass);-
91-
92 if (!bag
!bagDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
93 goto
never executed: goto err;
err;
never executed: goto err;
0
94-
95 if (!copy_bag_attr(bag, pkey, 417)
!copy_bag_attr(bag, pkey, 417)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
96 goto
never executed: goto err;
err;
never executed: goto err;
0
97 if (!copy_bag_attr(bag, pkey, 856)
!copy_bag_attr(bag, pkey, 856)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
98 goto
never executed: goto err;
err;
never executed: goto err;
0
99-
100 if (name
nameDescription
TRUEnever evaluated
FALSEnever evaluated
&& !PKCS12_add_friendlyname_utf8(bag, name, -1)
!PKCS12_add_fr...bag, name, -1)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
101 goto
never executed: goto err;
err;
never executed: goto err;
0
102 if (keyidlen
keyidlenDescription
TRUEnever evaluated
FALSEnever evaluated
&& !PKCS12_add_localkeyid(bag, keyid, keyidlen)
!PKCS12_add_lo...yid, keyidlen)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
103 goto
never executed: goto err;
err;
never executed: goto err;
0
104 }
never executed: end of block
0
105-
106 if (bags
bagsDescription
TRUEnever evaluated
FALSEnever evaluated
&& !PKCS12_add_safe(&safes, bags, -1, 0,
!PKCS12_add_sa... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
107 ((void *)0)
!PKCS12_add_sa... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
108 )
!PKCS12_add_sa... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
)
0
109 goto
never executed: goto err;
err;
never executed: goto err;
0
110-
111 sk_PKCS12_SAFEBAG_pop_free(bags, PKCS12_SAFEBAG_free);-
112 bags = -
113 ((void *)0)-
114 ;-
115-
116 p12 = PKCS12_add_safes(safes, 0);-
117-
118 if (!p12
!p12Description
TRUEnever evaluated
FALSEnever evaluated
)
0
119 goto
never executed: goto err;
err;
never executed: goto err;
0
120-
121 sk_PKCS7_pop_free(safes, PKCS7_free);-
122-
123 safes = -
124 ((void *)0)-
125 ;-
126-
127 if ((
(mac_iter != -1)Description
TRUEnever evaluated
FALSEnever evaluated
mac_iter != -1)
(mac_iter != -1)Description
TRUEnever evaluated
FALSEnever evaluated
&&
0
128 !PKCS12_set_mac(p12, pass, -1,
!PKCS12_set_ma... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
129 ((void *)0)
!PKCS12_set_ma... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
130 , 0, mac_iter,
!PKCS12_set_ma... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
131 ((void *)0)
!PKCS12_set_ma... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
132 )
!PKCS12_set_ma... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
)
0
133 goto
never executed: goto err;
err;
never executed: goto err;
0
134-
135 return
never executed: return p12;
p12;
never executed: return p12;
0
136-
137 err:-
138 PKCS12_free(p12);-
139 sk_PKCS7_pop_free(safes, PKCS7_free);-
140 sk_PKCS12_SAFEBAG_pop_free(bags, PKCS12_SAFEBAG_free);-
141 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
142 ((void *)0)
never executed: return ((void *)0) ;
0
143 ;
never executed: return ((void *)0) ;
0
144-
145}-
146-
147PKCS12_SAFEBAG *PKCS12_add_cert(struct stack_st_PKCS12_SAFEBAG **pbags, X509 *cert)-
148{-
149 PKCS12_SAFEBAG *bag = -
150 ((void *)0)-
151 ;-
152 char *name;-
153 int namelen = -1;-
154 unsigned char *keyid;-
155 int keyidlen = -1;-
156-
157-
158 if ((
(bag = PKCS12_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
bag = PKCS12_SAFEBAG_create_cert(cert)) ==
(bag = PKCS12_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
159 ((void *)0)
(bag = PKCS12_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
160 )-
161 goto
never executed: goto err;
err;
never executed: goto err;
0
162-
163-
164-
165-
166-
167 name = (char *)X509_alias_get0(cert, &namelen);-
168-
169 if (name
nameDescription
TRUEnever evaluated
FALSEnever evaluated
&& !PKCS12_add_friendlyname_utf8(bag, name, namelen)
!PKCS12_add_fr...name, namelen)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
170 goto
never executed: goto err;
err;
never executed: goto err;
0
171-
172 keyid = X509_keyid_get0(cert, &keyidlen);-
173-
174 if (keyid
keyidDescription
TRUEnever evaluated
FALSEnever evaluated
&& !PKCS12_add_localkeyid(bag, keyid, keyidlen)
!PKCS12_add_lo...yid, keyidlen)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
175 goto
never executed: goto err;
err;
never executed: goto err;
0
176-
177 if (!pkcs12_add_bag(pbags, bag)
!pkcs12_add_bag(pbags, bag)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
178 goto
never executed: goto err;
err;
never executed: goto err;
0
179-
180 return
never executed: return bag;
bag;
never executed: return bag;
0
181-
182 err:-
183 PKCS12_SAFEBAG_free(bag);-
184 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
185 ((void *)0)
never executed: return ((void *)0) ;
0
186 ;
never executed: return ((void *)0) ;
0
187-
188}-
189-
190PKCS12_SAFEBAG *PKCS12_add_key(struct stack_st_PKCS12_SAFEBAG **pbags,-
191 EVP_PKEY *key, int key_usage, int iter,-
192 int nid_key, const char *pass)-
193{-
194-
195 PKCS12_SAFEBAG *bag = -
196 ((void *)0)-
197 ;-
198 PKCS8_PRIV_KEY_INFO *p8 = -
199 ((void *)0)-
200 ;-
201-
202-
203 if ((
(p8 = EVP_PKEY...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
p8 = EVP_PKEY2PKCS8(key)) ==
(p8 = EVP_PKEY...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
204 ((void *)0)
(p8 = EVP_PKEY...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
205 )-
206 goto
never executed: goto err;
err;
never executed: goto err;
0
207 if (key_usage
key_usageDescription
TRUEnever evaluated
FALSEnever evaluated
&& !PKCS8_add_keyusage(p8, key_usage)
!PKCS8_add_key...p8, key_usage)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
208 goto
never executed: goto err;
err;
never executed: goto err;
0
209 if (nid_key != -1
nid_key != -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
210 bag = PKCS12_SAFEBAG_create_pkcs8_encrypt(nid_key, pass, -1, -
211 ((void *)0)-
212 , 0,-
213 iter, p8);-
214 PKCS8_PRIV_KEY_INFO_free(p8);-
215 }
never executed: end of block
else
0
216 bag = PKCS12_SAFEBAG_create0_p8inf(p8);
never executed: bag = PKCS12_SAFEBAG_create0_p8inf(p8);
0
217-
218 if (!bag
!bagDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
219 goto
never executed: goto err;
err;
never executed: goto err;
0
220-
221 if (!pkcs12_add_bag(pbags, bag)
!pkcs12_add_bag(pbags, bag)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
222 goto
never executed: goto err;
err;
never executed: goto err;
0
223-
224 return
never executed: return bag;
bag;
never executed: return bag;
0
225-
226 err:-
227 PKCS12_SAFEBAG_free(bag);-
228 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
229 ((void *)0)
never executed: return ((void *)0) ;
0
230 ;
never executed: return ((void *)0) ;
0
231-
232}-
233-
234int PKCS12_add_safe(struct stack_st_PKCS7 **psafes, struct stack_st_PKCS12_SAFEBAG *bags,-
235 int nid_safe, int iter, const char *pass)-
236{-
237 PKCS7 *p7 = -
238 ((void *)0)-
239 ;-
240 int free_safes = 0;-
241-
242 if (!*psafes
!*psafesDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
243 *psafes = sk_PKCS7_new_null();-
244 if (!*psafes
!*psafesDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
245 return
never executed: return 0;
0;
never executed: return 0;
0
246 free_safes = 1;-
247 }
never executed: end of block
else
0
248 free_safes = 0;
never executed: free_safes = 0;
0
249-
250 if (nid_safe == 0
nid_safe == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
251-
252-
253-
254 nid_safe = 149;
never executed: nid_safe = 149;
0
255-
256-
257 if (nid_safe == -1
nid_safe == -1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
258 p7 = PKCS12_pack_p7data(bags);
never executed: p7 = PKCS12_pack_p7data(bags);
0
259 else-
260 p7 = PKCS12_pack_p7encdata(nid_safe, pass, -1,
never executed: p7 = PKCS12_pack_p7encdata(nid_safe, pass, -1, ((void *)0) , 0, iter, bags);
0
261 ((void *)0)
never executed: p7 = PKCS12_pack_p7encdata(nid_safe, pass, -1, ((void *)0) , 0, iter, bags);
0
262 , 0, iter, bags);
never executed: p7 = PKCS12_pack_p7encdata(nid_safe, pass, -1, ((void *)0) , 0, iter, bags);
0
263 if (!p7
!p7Description
TRUEnever evaluated
FALSEnever evaluated
)
0
264 goto
never executed: goto err;
err;
never executed: goto err;
0
265-
266 if (!sk_PKCS7_push(*psafes, p7)
!sk_PKCS7_push(*psafes, p7)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
267 goto
never executed: goto err;
err;
never executed: goto err;
0
268-
269 return
never executed: return 1;
1;
never executed: return 1;
0
270-
271 err:-
272 if (free_safes
free_safesDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
273 sk_PKCS7_free(*psafes);-
274 *psafes = -
275 ((void *)0)-
276 ;-
277 }
never executed: end of block
0
278 PKCS7_free(p7);-
279 return
never executed: return 0;
0;
never executed: return 0;
0
280-
281}-
282-
283static int pkcs12_add_bag(struct stack_st_PKCS12_SAFEBAG **pbags,-
284 PKCS12_SAFEBAG *bag)-
285{-
286 int free_bags;-
287 if (!pbags
!pbagsDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
288 return
never executed: return 1;
1;
never executed: return 1;
0
289 if (!*pbags
!*pbagsDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
290 *pbags = sk_PKCS12_SAFEBAG_new_null();-
291 if (!*pbags
!*pbagsDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
292 return
never executed: return 0;
0;
never executed: return 0;
0
293 free_bags = 1;-
294 }
never executed: end of block
else
0
295 free_bags = 0;
never executed: free_bags = 0;
0
296-
297 if (!sk_PKCS12_SAFEBAG_push(*pbags, bag)
!sk_PKCS12_SAF...h(*pbags, bag)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
298 if (free_bags
free_bagsDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
299 sk_PKCS12_SAFEBAG_free(*pbags);-
300 *pbags = -
301 ((void *)0)-
302 ;-
303 }
never executed: end of block
0
304 return
never executed: return 0;
0;
never executed: return 0;
0
305 }-
306-
307 return
never executed: return 1;
1;
never executed: return 1;
0
308-
309}-
310-
311PKCS12 *PKCS12_add_safes(struct stack_st_PKCS7 *safes, int nid_p7)-
312{-
313 PKCS12 *p12;-
314 if (nid_p7 <= 0
nid_p7 <= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
315 nid_p7 = 21;
never executed: nid_p7 = 21;
0
316 p12 = PKCS12_init(nid_p7);-
317-
318 if (!p12
!p12Description
TRUEnever evaluated
FALSEnever evaluated
)
0
319 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
320 ((void *)0)
never executed: return ((void *)0) ;
0
321 ;
never executed: return ((void *)0) ;
0
322-
323 if (!PKCS12_pack_authsafes(p12, safes)
!PKCS12_pack_a...es(p12, safes)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
324 PKCS12_free(p12);-
325 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
326 ((void *)0)
never executed: return ((void *)0) ;
0
327 ;
never executed: return ((void *)0) ;
0
328 }-
329-
330 return
never executed: return p12;
p12;
never executed: return p12;
0
331-
332}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2