OpenCoverage

p12_crt.c

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

Generated by Squish Coco 4.2.2