Line | Source | Count |
1 | | - |
2 | | - |
3 | | - |
4 | | - |
5 | static char *file_get_pass(const UI_METHOD *ui_method, char *pass, | - |
6 | size_t maxsize, const char *prompt_info, void *data) | - |
7 | { | - |
8 | UI *ui = UI_new(); | - |
9 | char *prompt = | - |
10 | ((void *)0) | - |
11 | ; | - |
12 | | - |
13 | if (ui == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
14 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
15 | ) { | - |
16 | ERR_put_error(44,(118),((1|64)),__FILE__,54); | - |
17 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
18 | ((void *)0) never executed: return ((void *)0) ; | 0 |
19 | ; never executed: return ((void *)0) ; | 0 |
20 | } | - |
21 | | - |
22 | if (ui_method != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
23 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
24 | ) | - |
25 | UI_set_method(ui, ui_method); never executed: UI_set_method(ui, ui_method); | 0 |
26 | UI_add_user_data(ui, data); | - |
27 | | - |
28 | if ((TRUE | never evaluated | FALSE | never evaluated |
prompt = UI_construct_prompt(ui, "pass phrase",TRUE | never evaluated | FALSE | never evaluated |
| 0 |
29 | prompt_info)) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
30 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
31 | ) { | - |
32 | ERR_put_error(44,(118),((1|64)),__FILE__,64); | - |
33 | pass = | - |
34 | ((void *)0) | - |
35 | ; | - |
36 | } never executed: end of block else if (!UI_add_input_string(ui, prompt, 0x02,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
37 | pass, 0, maxsize - 1)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
38 | ERR_put_error(44,(118),(40),__FILE__,68); | - |
39 | pass = | - |
40 | ((void *)0) | - |
41 | ; | - |
42 | } never executed: end of block else { | 0 |
43 | switch (UI_process(ui)) { | - |
44 | case never executed: case -2: -2:never executed: case -2: | 0 |
45 | ERR_put_error(44,(118),(109),__FILE__,74) | - |
46 | ; | - |
47 | pass = | - |
48 | ((void *)0) | - |
49 | ; | - |
50 | break; never executed: break; | 0 |
51 | case never executed: case -1: -1:never executed: case -1: | 0 |
52 | ERR_put_error(44,(118),(40),__FILE__,78); | - |
53 | pass = | - |
54 | ((void *)0) | - |
55 | ; | - |
56 | break; never executed: break; | 0 |
57 | default never executed: default: :never executed: default: | 0 |
58 | break; never executed: break; | 0 |
59 | } | - |
60 | } | - |
61 | | - |
62 | CRYPTO_free(prompt, __FILE__, 86); | - |
63 | UI_free(ui); | - |
64 | return never executed: return pass; pass;never executed: return pass; | 0 |
65 | } | - |
66 | | - |
67 | struct pem_pass_data { | - |
68 | const UI_METHOD *ui_method; | - |
69 | void *data; | - |
70 | const char *prompt_info; | - |
71 | }; | - |
72 | | - |
73 | static int file_fill_pem_pass_data(struct pem_pass_data *pass_data, | - |
74 | const char *prompt_info, | - |
75 | const UI_METHOD *ui_method, void *ui_data) | - |
76 | { | - |
77 | if (pass_data == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
78 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
79 | ) | - |
80 | return never executed: return 0; 0;never executed: return 0; | 0 |
81 | pass_data->ui_method = ui_method; | - |
82 | pass_data->data = ui_data; | - |
83 | pass_data->prompt_info = prompt_info; | - |
84 | return never executed: return 1; 1;never executed: return 1; | 0 |
85 | } | - |
86 | | - |
87 | | - |
88 | static int file_get_pem_pass(char *buf, int num, int w, void *data) | - |
89 | { | - |
90 | struct pem_pass_data *pass_data = data; | - |
91 | char *pass = file_get_pass(pass_data->ui_method, buf, num, | - |
92 | pass_data->prompt_info, pass_data->data); | - |
93 | | - |
94 | return never executed: return pass == ((void *)0) ? 0 : strlen(pass); pass == TRUE | never evaluated | FALSE | never evaluated |
never executed: return pass == ((void *)0) ? 0 : strlen(pass); | 0 |
95 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
never executed: return pass == ((void *)0) ? 0 : strlen(pass); | 0 |
96 | ? 0 : strlen(pass); never executed: return pass == ((void *)0) ? 0 : strlen(pass); | 0 |
97 | } | - |
98 | typedef OSSL_STORE_INFO *(*file_try_decode_fn)(const char *pem_name, | - |
99 | const char *pem_header, | - |
100 | const unsigned char *blob, | - |
101 | size_t len, void **handler_ctx, | - |
102 | int *matchcount, | - |
103 | const UI_METHOD *ui_method, | - |
104 | void *ui_data); | - |
105 | | - |
106 | | - |
107 | | - |
108 | | - |
109 | | - |
110 | typedef int (*file_eof_fn)(void *handler_ctx); | - |
111 | | - |
112 | | - |
113 | | - |
114 | | - |
115 | | - |
116 | typedef void (*file_destroy_ctx_fn)(void **handler_ctx); | - |
117 | | - |
118 | typedef struct file_handler_st { | - |
119 | const char *name; | - |
120 | file_try_decode_fn try_decode; | - |
121 | file_eof_fn eof; | - |
122 | file_destroy_ctx_fn destroy_ctx; | - |
123 | | - |
124 | | - |
125 | int repeatable; | - |
126 | } FILE_HANDLER; | - |
127 | | - |
128 | | - |
129 | | - |
130 | | - |
131 | | - |
132 | | - |
133 | static OSSL_STORE_INFO *try_decode_PKCS12(const char *pem_name, | - |
134 | const char *pem_header, | - |
135 | const unsigned char *blob, | - |
136 | size_t len, void **pctx, | - |
137 | int *matchcount, | - |
138 | const UI_METHOD *ui_method, | - |
139 | void *ui_data) | - |
140 | { | - |
141 | OSSL_STORE_INFO *store_info = | - |
142 | ((void *)0) | - |
143 | ; | - |
144 | struct stack_st_OSSL_STORE_INFO *ctx = *pctx; | - |
145 | | - |
146 | if (ctx == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
147 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
148 | ) { | - |
149 | | - |
150 | PKCS12 *p12; | - |
151 | int ok = 0; | - |
152 | | - |
153 | if (pem_name != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
154 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
155 | ) | - |
156 | | - |
157 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
158 | ((void *)0) never executed: return ((void *)0) ; | 0 |
159 | ; never executed: return ((void *)0) ; | 0 |
160 | | - |
161 | if ((TRUE | never evaluated | FALSE | never evaluated |
p12 = d2i_PKCS12(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
162 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
163 | , &blob, len)) != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
164 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
165 | ) { | - |
166 | char *pass = | - |
167 | ((void *)0) | - |
168 | ; | - |
169 | char tpass[1024]; | - |
170 | EVP_PKEY *pkey = | - |
171 | ((void *)0) | - |
172 | ; | - |
173 | X509 *cert = | - |
174 | ((void *)0) | - |
175 | ; | - |
176 | struct stack_st_X509 *chain = | - |
177 | ((void *)0) | - |
178 | ; | - |
179 | | - |
180 | *matchcount = 1; | - |
181 | | - |
182 | if (PKCS12_verify_mac(p12, "", 0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
183 | || PKCS12_verify_mac(p12, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
184 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
185 | , 0)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
186 | pass = ""; | - |
187 | } never executed: end of block else { | 0 |
188 | if ((TRUE | never evaluated | FALSE | never evaluated |
pass = file_get_pass(ui_method, tpass, 1024,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
189 | "PKCS12 import password",TRUE | never evaluated | FALSE | never evaluated |
| 0 |
190 | ui_data)) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
191 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
192 | ) { | - |
193 | ERR_put_error(44,(122),(114),__FILE__,232) | - |
194 | ; | - |
195 | goto never executed: goto p12_end; p12_end;never executed: goto p12_end; | 0 |
196 | } | - |
197 | if (!PKCS12_verify_mac(p12, pass, strlen(pass))TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
198 | ERR_put_error(44,(122),(113),__FILE__,237) | - |
199 | ; | - |
200 | goto never executed: goto p12_end; p12_end;never executed: goto p12_end; | 0 |
201 | } | - |
202 | } never executed: end of block | 0 |
203 | | - |
204 | if (PKCS12_parse(p12, pass, &pkey, &cert, &chain)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
205 | OSSL_STORE_INFO *osi_pkey = | - |
206 | ((void *)0) | - |
207 | ; | - |
208 | OSSL_STORE_INFO *osi_cert = | - |
209 | ((void *)0) | - |
210 | ; | - |
211 | OSSL_STORE_INFO *osi_ca = | - |
212 | ((void *)0) | - |
213 | ; | - |
214 | | - |
215 | if ((TRUE | never evaluated | FALSE | never evaluated |
ctx = sk_OSSL_STORE_INFO_new_null()) != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
216 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
217 | | - |
218 | && (TRUE | never evaluated | FALSE | never evaluated |
osi_pkey = OSSL_STORE_INFO_new_PKEY(pkey)) != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
219 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
220 | | - |
221 | && sk_OSSL_STORE_INFO_push(ctx, osi_pkey) != 0TRUE | never evaluated | FALSE | never evaluated |
| 0 |
222 | && (TRUE | never evaluated | FALSE | never evaluated |
osi_cert = OSSL_STORE_INFO_new_CERT(cert)) != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
223 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
224 | | - |
225 | && sk_OSSL_STORE_INFO_push(ctx, osi_cert) != 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
226 | ok = 1; | - |
227 | osi_pkey = | - |
228 | ((void *)0) | - |
229 | ; | - |
230 | osi_cert = | - |
231 | ((void *)0) | - |
232 | ; | - |
233 | | - |
234 | while(sk_X509_num(chain) > 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
235 | X509 *ca = sk_X509_value(chain, 0); | - |
236 | | - |
237 | if ((TRUE | never evaluated | FALSE | never evaluated |
osi_ca = OSSL_STORE_INFO_new_CERT(ca)) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
238 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
239 | | - |
240 | || sk_OSSL_STORE_INFO_push(ctx, osi_ca) == 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
241 | ok = 0; | - |
242 | break; never executed: break; | 0 |
243 | } | - |
244 | osi_ca = | - |
245 | ((void *)0) | - |
246 | ; | - |
247 | (void)sk_X509_shift(chain); | - |
248 | } never executed: end of block | 0 |
249 | } never executed: end of block | 0 |
250 | if (!okTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
251 | OSSL_STORE_INFO_free(osi_ca); | - |
252 | OSSL_STORE_INFO_free(osi_cert); | - |
253 | OSSL_STORE_INFO_free(osi_pkey); | - |
254 | sk_OSSL_STORE_INFO_pop_free(ctx, OSSL_STORE_INFO_free); | - |
255 | EVP_PKEY_free(pkey); | - |
256 | X509_free(cert); | - |
257 | sk_X509_pop_free(chain, X509_free); | - |
258 | ctx = | - |
259 | ((void *)0) | - |
260 | ; | - |
261 | } never executed: end of block | 0 |
262 | *pctx = ctx; | - |
263 | } never executed: end of block | 0 |
264 | } never executed: end of block | 0 |
265 | p12_end: code before this statement never executed: p12_end: | 0 |
266 | PKCS12_free(p12); | - |
267 | if (!okTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
268 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
269 | ((void *)0) never executed: return ((void *)0) ; | 0 |
270 | ; never executed: return ((void *)0) ; | 0 |
271 | } never executed: end of block | 0 |
272 | | - |
273 | if (ctx != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
274 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
275 | ) { | - |
276 | *matchcount = 1; | - |
277 | store_info = sk_OSSL_STORE_INFO_shift(ctx); | - |
278 | } never executed: end of block | 0 |
279 | | - |
280 | return never executed: return store_info; store_info;never executed: return store_info; | 0 |
281 | } | - |
282 | | - |
283 | static int eof_PKCS12(void *ctx_) | - |
284 | { | - |
285 | struct stack_st_OSSL_STORE_INFO *ctx = ctx_; | - |
286 | | - |
287 | return never executed: return ctx == ((void *)0) || sk_OSSL_STORE_INFO_num(ctx) == 0; ctx == TRUE | never evaluated | FALSE | never evaluated |
never executed: return ctx == ((void *)0) || sk_OSSL_STORE_INFO_num(ctx) == 0; | 0 |
288 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
never executed: return ctx == ((void *)0) || sk_OSSL_STORE_INFO_num(ctx) == 0; | 0 |
289 | || sk_OSSL_STORE_INFO_num(ctx) == 0TRUE | never evaluated | FALSE | never evaluated |
;never executed: return ctx == ((void *)0) || sk_OSSL_STORE_INFO_num(ctx) == 0; | 0 |
290 | } | - |
291 | | - |
292 | static void destroy_ctx_PKCS12(void **pctx) | - |
293 | { | - |
294 | struct stack_st_OSSL_STORE_INFO *ctx = *pctx; | - |
295 | | - |
296 | sk_OSSL_STORE_INFO_pop_free(ctx, OSSL_STORE_INFO_free); | - |
297 | *pctx = | - |
298 | ((void *)0) | - |
299 | ; | - |
300 | } never executed: end of block | 0 |
301 | | - |
302 | static FILE_HANDLER PKCS12_handler = { | - |
303 | "PKCS12", | - |
304 | try_decode_PKCS12, | - |
305 | eof_PKCS12, | - |
306 | destroy_ctx_PKCS12, | - |
307 | 1 | - |
308 | }; | - |
309 | | - |
310 | | - |
311 | | - |
312 | | - |
313 | | - |
314 | | - |
315 | static OSSL_STORE_INFO *try_decode_PKCS8Encrypted(const char *pem_name, | - |
316 | const char *pem_header, | - |
317 | const unsigned char *blob, | - |
318 | size_t len, void **pctx, | - |
319 | int *matchcount, | - |
320 | const UI_METHOD *ui_method, | - |
321 | void *ui_data) | - |
322 | { | - |
323 | X509_SIG *p8 = | - |
324 | ((void *)0) | - |
325 | ; | - |
326 | char kbuf[1024]; | - |
327 | char *pass = | - |
328 | ((void *)0) | - |
329 | ; | - |
330 | const X509_ALGOR *dalg = | - |
331 | ((void *)0) | - |
332 | ; | - |
333 | const ASN1_OCTET_STRING *doct = | - |
334 | ((void *)0) | - |
335 | ; | - |
336 | OSSL_STORE_INFO *store_info = | - |
337 | ((void *)0) | - |
338 | ; | - |
339 | BUF_MEM *mem = | - |
340 | ((void *)0) | - |
341 | ; | - |
342 | unsigned char *new_data = | - |
343 | ((void *)0) | - |
344 | ; | - |
345 | int new_data_len; | - |
346 | | - |
347 | if (pem_name != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
348 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
349 | ) { | - |
350 | if ( | - |
351 | __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
352 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
353 | ) && __builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
354 | "ENCRYPTED PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
355 | ) && (__s1_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
356 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
357 | ), __s2_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
358 | "ENCRYPTED PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
359 | ), (!((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
360 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
361 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
362 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
363 | ) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
364 | "ENCRYPTED PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
365 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
366 | "ENCRYPTED PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
367 | ) == 1) || __s2_len >= 4)) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
368 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
369 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
370 | "ENCRYPTED PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
371 | ) : (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
372 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
373 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
374 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
375 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
376 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
377 | ) == 1) && (__s1_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
378 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
379 | ), __s1_len < 4) ? (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
380 | "ENCRYPTED PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
381 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
382 | "ENCRYPTED PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
383 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
384 | "ENCRYPTED PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
385 | ) == 1) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
386 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
387 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
388 | "ENCRYPTED PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
389 | ) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
390 | "ENCRYPTED PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
391 | ); int __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
392 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
393 | ))[0] - __s2[0]); if (__s1_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
394 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
395 | ))[1] - __s2[1]); if (__s1_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
396 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
397 | ))[2] - __s2[2]); if (__s1_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( pem_name ))[3] - __s2[3]); | 0 |
398 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
never executed: __result = (((const unsigned char *) (const char *) ( pem_name ))[3] - __s2[3]); | 0 |
399 | ))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
400 | "ENCRYPTED PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
401 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
402 | "ENCRYPTED PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
403 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
404 | "ENCRYPTED PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
405 | ) == 1) && (__s2_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
406 | "ENCRYPTED PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
407 | ), __s2_len < 4) ? (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
408 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
409 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
410 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
411 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
412 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
413 | ) == 1) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
414 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
415 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
416 | "ENCRYPTED PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
417 | ) : -(__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
418 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
419 | ); int __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
420 | "ENCRYPTED PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
421 | ))[0] - __s2[0]); if (__s2_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
422 | "ENCRYPTED PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
423 | ))[1] - __s2[1]); if (__s2_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
424 | "ENCRYPTED PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
425 | ))[2] - __s2[2]); if (__s2_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( "ENCRYPTED PRIVATE KEY" ))[3] - __s2[3]); | 0 |
426 | "ENCRYPTED PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
never executed: __result = (((const unsigned char *) (const char *) ( "ENCRYPTED PRIVATE KEY" ))[3] - __s2[3]); | 0 |
427 | ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
428 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
429 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
430 | "ENCRYPTED PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
431 | )))); }) TRUE | never evaluated | FALSE | never evaluated |
| 0 |
432 | != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
433 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
434 | ((void *)0) never executed: return ((void *)0) ; | 0 |
435 | ; never executed: return ((void *)0) ; | 0 |
436 | *matchcount = 1; | - |
437 | } never executed: end of block | 0 |
438 | | - |
439 | if ((TRUE | never evaluated | FALSE | never evaluated |
p8 = d2i_X509_SIG(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
440 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
441 | , &blob, len)) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
442 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
443 | ) | - |
444 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
445 | ((void *)0) never executed: return ((void *)0) ; | 0 |
446 | ; never executed: return ((void *)0) ; | 0 |
447 | | - |
448 | *matchcount = 1; | - |
449 | | - |
450 | if ((TRUE | never evaluated | FALSE | never evaluated |
mem = BUF_MEM_new()) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
451 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
452 | ) { | - |
453 | ERR_put_error(44,(125),((1|64)),__FILE__,354) | - |
454 | ; | - |
455 | goto never executed: goto nop8; nop8;never executed: goto nop8; | 0 |
456 | } | - |
457 | | - |
458 | if ((TRUE | never evaluated | FALSE | never evaluated |
pass = file_get_pass(ui_method, kbuf, 1024,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
459 | "PKCS8 decrypt password", ui_data)) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
460 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
461 | ) { | - |
462 | ERR_put_error(44,(125),(115),__FILE__,361) | - |
463 | ; | - |
464 | goto never executed: goto nop8; nop8;never executed: goto nop8; | 0 |
465 | } | - |
466 | | - |
467 | X509_SIG_get0(p8, &dalg, &doct); | - |
468 | if (!PKCS12_pbe_crypt(dalg, pass, strlen(pass), doct->data, doct->length,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
469 | &new_data, &new_data_len, 0)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
470 | goto never executed: goto nop8; nop8;never executed: goto nop8; | 0 |
471 | | - |
472 | mem->data = (char *)new_data; | - |
473 | mem->max = mem->length = (size_t)new_data_len; | - |
474 | X509_SIG_free(p8); | - |
475 | | - |
476 | store_info = ossl_store_info_new_EMBEDDED("PRIVATE KEY", mem); | - |
477 | if (store_info == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
478 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
479 | ) { | - |
480 | ERR_put_error(44,(125),((1|64)),__FILE__,377) | - |
481 | ; | - |
482 | goto never executed: goto nop8; nop8;never executed: goto nop8; | 0 |
483 | } | - |
484 | | - |
485 | return never executed: return store_info; store_info;never executed: return store_info; | 0 |
486 | nop8: | - |
487 | X509_SIG_free(p8); | - |
488 | BUF_MEM_free(mem); | - |
489 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
490 | ((void *)0) never executed: return ((void *)0) ; | 0 |
491 | ; never executed: return ((void *)0) ; | 0 |
492 | } | - |
493 | | - |
494 | static FILE_HANDLER PKCS8Encrypted_handler = { | - |
495 | "PKCS8Encrypted", | - |
496 | try_decode_PKCS8Encrypted | - |
497 | }; | - |
498 | | - |
499 | | - |
500 | | - |
501 | | - |
502 | | - |
503 | | - |
504 | int pem_check_suffix(const char *pem_str, const char *suffix); | - |
505 | static OSSL_STORE_INFO *try_decode_PrivateKey(const char *pem_name, | - |
506 | const char *pem_header, | - |
507 | const unsigned char *blob, | - |
508 | size_t len, void **pctx, | - |
509 | int *matchcount, | - |
510 | const UI_METHOD *ui_method, | - |
511 | void *ui_data) | - |
512 | { | - |
513 | OSSL_STORE_INFO *store_info = | - |
514 | ((void *)0) | - |
515 | ; | - |
516 | EVP_PKEY *pkey = | - |
517 | ((void *)0) | - |
518 | ; | - |
519 | const EVP_PKEY_ASN1_METHOD *ameth = | - |
520 | ((void *)0) | - |
521 | ; | - |
522 | | - |
523 | if (pem_name != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
524 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
525 | ) { | - |
526 | if ( | - |
527 | __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
528 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
529 | ) && __builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
530 | "PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
531 | ) && (__s1_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
532 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
533 | ), __s2_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
534 | "PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
535 | ), (!((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
536 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
537 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
538 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
539 | ) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
540 | "PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
541 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
542 | "PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
543 | ) == 1) || __s2_len >= 4)) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
544 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
545 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
546 | "PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
547 | ) : (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
548 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
549 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
550 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
551 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
552 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
553 | ) == 1) && (__s1_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
554 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
555 | ), __s1_len < 4) ? (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
556 | "PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
557 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
558 | "PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
559 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
560 | "PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
561 | ) == 1) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
562 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
563 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
564 | "PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
565 | ) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
566 | "PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
567 | ); int __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
568 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
569 | ))[0] - __s2[0]); if (__s1_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
570 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
571 | ))[1] - __s2[1]); if (__s1_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
572 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
573 | ))[2] - __s2[2]); if (__s1_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( pem_name ))[3] - __s2[3]); | 0 |
574 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
never executed: __result = (((const unsigned char *) (const char *) ( pem_name ))[3] - __s2[3]); | 0 |
575 | ))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
576 | "PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
577 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
578 | "PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
579 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
580 | "PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
581 | ) == 1) && (__s2_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
582 | "PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
583 | ), __s2_len < 4) ? (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
584 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
585 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
586 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
587 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
588 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
589 | ) == 1) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
590 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
591 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
592 | "PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
593 | ) : -(__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
594 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
595 | ); int __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
596 | "PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
597 | ))[0] - __s2[0]); if (__s2_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
598 | "PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
599 | ))[1] - __s2[1]); if (__s2_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
600 | "PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
601 | ))[2] - __s2[2]); if (__s2_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( "PRIVATE KEY" ))[3] - __s2[3]); | 0 |
602 | "PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
never executed: __result = (((const unsigned char *) (const char *) ( "PRIVATE KEY" ))[3] - __s2[3]); | 0 |
603 | ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
604 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
605 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
606 | "PRIVATE KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
607 | )))); }) TRUE | never evaluated | FALSE | never evaluated |
| 0 |
608 | == 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
609 | PKCS8_PRIV_KEY_INFO *p8inf = | - |
610 | d2i_PKCS8_PRIV_KEY_INFO( | - |
611 | ((void *)0) | - |
612 | , &blob, len); | - |
613 | | - |
614 | *matchcount = 1; | - |
615 | if (p8inf != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
616 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
617 | ) | - |
618 | pkey = EVP_PKCS82PKEY(p8inf); never executed: pkey = EVP_PKCS82PKEY(p8inf); | 0 |
619 | PKCS8_PRIV_KEY_INFO_free(p8inf); | - |
620 | } never executed: end of block else { | 0 |
621 | int slen; | - |
622 | | - |
623 | if ((TRUE | never evaluated | FALSE | never evaluated |
slen = pem_check_suffix(pem_name, "PRIVATE KEY")) > 0TRUE | never evaluated | FALSE | never evaluated |
| 0 |
624 | && (TRUE | never evaluated | FALSE | never evaluated |
ameth = EVP_PKEY_asn1_find_str(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
625 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
626 | , pem_name,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
627 | slen)) != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
628 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
629 | ) { | - |
630 | *matchcount = 1; | - |
631 | pkey = d2i_PrivateKey(ameth->pkey_id, | - |
632 | ((void *)0) | - |
633 | , &blob, len); | - |
634 | } never executed: end of block | 0 |
635 | } never executed: end of block | 0 |
636 | } else { | - |
637 | int i; | - |
638 | | - |
639 | for (i = 0; i < EVP_PKEY_asn1_get_count()TRUE | never evaluated | FALSE | never evaluated |
; i++) { | 0 |
640 | EVP_PKEY *tmp_pkey = | - |
641 | ((void *)0) | - |
642 | ; | - |
643 | const unsigned char *tmp_blob = blob; | - |
644 | | - |
645 | ameth = EVP_PKEY_asn1_get0(i); | - |
646 | if (ameth->pkey_flags & 0x1TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
647 | continue; never executed: continue; | 0 |
648 | | - |
649 | tmp_pkey = d2i_PrivateKey(ameth->pkey_id, | - |
650 | ((void *)0) | - |
651 | , &tmp_blob, len); | - |
652 | if (tmp_pkey != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
653 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
654 | ) { | - |
655 | if (pkey != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
656 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
657 | ) | - |
658 | EVP_PKEY_free(tmp_pkey); never executed: EVP_PKEY_free(tmp_pkey); | 0 |
659 | else | - |
660 | pkey = tmp_pkey; never executed: pkey = tmp_pkey; | 0 |
661 | (*matchcount)++; | - |
662 | } never executed: end of block | 0 |
663 | } never executed: end of block | 0 |
664 | | - |
665 | if (*TRUE | never evaluated | FALSE | never evaluated |
matchcount > 1TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
666 | EVP_PKEY_free(pkey); | - |
667 | pkey = | - |
668 | ((void *)0) | - |
669 | ; | - |
670 | } never executed: end of block | 0 |
671 | } never executed: end of block | 0 |
672 | if (pkey == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
673 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
674 | ) | - |
675 | | - |
676 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
677 | ((void *)0) never executed: return ((void *)0) ; | 0 |
678 | ; never executed: return ((void *)0) ; | 0 |
679 | | - |
680 | store_info = OSSL_STORE_INFO_new_PKEY(pkey); | - |
681 | if (store_info == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
682 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
683 | ) | - |
684 | EVP_PKEY_free(pkey); never executed: EVP_PKEY_free(pkey); | 0 |
685 | | - |
686 | return never executed: return store_info; store_info;never executed: return store_info; | 0 |
687 | } | - |
688 | | - |
689 | static FILE_HANDLER PrivateKey_handler = { | - |
690 | "PrivateKey", | - |
691 | try_decode_PrivateKey | - |
692 | }; | - |
693 | | - |
694 | | - |
695 | | - |
696 | | - |
697 | static OSSL_STORE_INFO *try_decode_PUBKEY(const char *pem_name, | - |
698 | const char *pem_header, | - |
699 | const unsigned char *blob, | - |
700 | size_t len, void **pctx, | - |
701 | int *matchcount, | - |
702 | const UI_METHOD *ui_method, | - |
703 | void *ui_data) | - |
704 | { | - |
705 | OSSL_STORE_INFO *store_info = | - |
706 | ((void *)0) | - |
707 | ; | - |
708 | EVP_PKEY *pkey = | - |
709 | ((void *)0) | - |
710 | ; | - |
711 | | - |
712 | if (pem_name != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
713 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
714 | ) { | - |
715 | if ( | - |
716 | __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
717 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
718 | ) && __builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
719 | "PUBLIC KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
720 | ) && (__s1_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
721 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
722 | ), __s2_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
723 | "PUBLIC KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
724 | ), (!((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
725 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
726 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
727 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
728 | ) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
729 | "PUBLIC KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
730 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
731 | "PUBLIC KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
732 | ) == 1) || __s2_len >= 4)) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
733 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
734 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
735 | "PUBLIC KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
736 | ) : (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
737 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
738 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
739 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
740 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
741 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
742 | ) == 1) && (__s1_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
743 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
744 | ), __s1_len < 4) ? (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
745 | "PUBLIC KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
746 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
747 | "PUBLIC KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
748 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
749 | "PUBLIC KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
750 | ) == 1) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
751 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
752 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
753 | "PUBLIC KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
754 | ) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
755 | "PUBLIC KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
756 | ); int __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
757 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
758 | ))[0] - __s2[0]); if (__s1_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
759 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
760 | ))[1] - __s2[1]); if (__s1_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
761 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
762 | ))[2] - __s2[2]); if (__s1_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( pem_name ))[3] - __s2[3]); | 0 |
763 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
never executed: __result = (((const unsigned char *) (const char *) ( pem_name ))[3] - __s2[3]); | 0 |
764 | ))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
765 | "PUBLIC KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
766 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
767 | "PUBLIC KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
768 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
769 | "PUBLIC KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
770 | ) == 1) && (__s2_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
771 | "PUBLIC KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
772 | ), __s2_len < 4) ? (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
773 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
774 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
775 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
776 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
777 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
778 | ) == 1) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
779 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
780 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
781 | "PUBLIC KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
782 | ) : -(__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
783 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
784 | ); int __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
785 | "PUBLIC KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
786 | ))[0] - __s2[0]); if (__s2_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
787 | "PUBLIC KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
788 | ))[1] - __s2[1]); if (__s2_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
789 | "PUBLIC KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
790 | ))[2] - __s2[2]); if (__s2_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( "PUBLIC KEY" ))[3] - __s2[3]); | 0 |
791 | "PUBLIC KEY"TRUE | never evaluated | FALSE | never evaluated |
never executed: __result = (((const unsigned char *) (const char *) ( "PUBLIC KEY" ))[3] - __s2[3]); | 0 |
792 | ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
793 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
794 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
795 | "PUBLIC KEY"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
796 | )))); }) TRUE | never evaluated | FALSE | never evaluated |
| 0 |
797 | != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
798 | | - |
799 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
800 | ((void *)0) never executed: return ((void *)0) ; | 0 |
801 | ; never executed: return ((void *)0) ; | 0 |
802 | *matchcount = 1; | - |
803 | } never executed: end of block | 0 |
804 | | - |
805 | if ((TRUE | never evaluated | FALSE | never evaluated |
pkey = d2i_PUBKEY(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
806 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
807 | , &blob, len)) != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
808 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
809 | ) { | - |
810 | *matchcount = 1; | - |
811 | store_info = OSSL_STORE_INFO_new_PKEY(pkey); | - |
812 | } never executed: end of block | 0 |
813 | | - |
814 | return never executed: return store_info; store_info;never executed: return store_info; | 0 |
815 | } | - |
816 | | - |
817 | static FILE_HANDLER PUBKEY_handler = { | - |
818 | "PUBKEY", | - |
819 | try_decode_PUBKEY | - |
820 | }; | - |
821 | | - |
822 | | - |
823 | | - |
824 | | - |
825 | static OSSL_STORE_INFO *try_decode_params(const char *pem_name, | - |
826 | const char *pem_header, | - |
827 | const unsigned char *blob, | - |
828 | size_t len, void **pctx, | - |
829 | int *matchcount, | - |
830 | const UI_METHOD *ui_method, | - |
831 | void *ui_data) | - |
832 | { | - |
833 | OSSL_STORE_INFO *store_info = | - |
834 | ((void *)0) | - |
835 | ; | - |
836 | int slen = 0; | - |
837 | EVP_PKEY *pkey = | - |
838 | ((void *)0) | - |
839 | ; | - |
840 | const EVP_PKEY_ASN1_METHOD *ameth = | - |
841 | ((void *)0) | - |
842 | ; | - |
843 | int ok = 0; | - |
844 | | - |
845 | if (pem_name != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
846 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
847 | ) { | - |
848 | if ((TRUE | never evaluated | FALSE | never evaluated |
slen = pem_check_suffix(pem_name, "PARAMETERS")) == 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
849 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
850 | ((void *)0) never executed: return ((void *)0) ; | 0 |
851 | ; never executed: return ((void *)0) ; | 0 |
852 | *matchcount = 1; | - |
853 | } never executed: end of block | 0 |
854 | | - |
855 | if (slen > 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
856 | if ((TRUE | never evaluated | FALSE | never evaluated |
pkey = EVP_PKEY_new()) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
857 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
858 | ) { | - |
859 | ERR_put_error(44,(121),(6),__FILE__,531); | - |
860 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
861 | ((void *)0) never executed: return ((void *)0) ; | 0 |
862 | ; never executed: return ((void *)0) ; | 0 |
863 | } | - |
864 | | - |
865 | | - |
866 | if (EVP_PKEY_set_type_str(pkey, pem_name, slen)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
867 | && (TRUE | never evaluated | FALSE | never evaluated |
ameth = EVP_PKEY_get0_asn1(pkey)) != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
868 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
869 | | - |
870 | && ameth->param_decode != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
871 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
872 | | - |
873 | && ameth->param_decode(pkey, &blob, len)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
874 | ok = 1; never executed: ok = 1; | 0 |
875 | } never executed: end of block else { | 0 |
876 | int i; | - |
877 | EVP_PKEY *tmp_pkey = | - |
878 | ((void *)0) | - |
879 | ; | - |
880 | | - |
881 | for (i = 0; i < EVP_PKEY_asn1_get_count()TRUE | never evaluated | FALSE | never evaluated |
; i++) { | 0 |
882 | const unsigned char *tmp_blob = blob; | - |
883 | | - |
884 | if (tmp_pkey == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
885 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
886 | && (TRUE | never evaluated | FALSE | never evaluated |
tmp_pkey = EVP_PKEY_new()) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
887 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
888 | ) { | - |
889 | ERR_put_error(44,(121),(6),__FILE__,549); | - |
890 | break; never executed: break; | 0 |
891 | } | - |
892 | | - |
893 | ameth = EVP_PKEY_asn1_get0(i); | - |
894 | if (ameth->pkey_flags & 0x1TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
895 | continue; never executed: continue; | 0 |
896 | | - |
897 | if (EVP_PKEY_set_type(tmp_pkey, ameth->pkey_id)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
898 | && (TRUE | never evaluated | FALSE | never evaluated |
ameth = EVP_PKEY_get0_asn1(tmp_pkey)) != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
899 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
900 | | - |
901 | && ameth->param_decode != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
902 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
903 | | - |
904 | && ameth->param_decode(tmp_pkey, &tmp_blob, len)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
905 | if (pkey != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
906 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
907 | ) | - |
908 | EVP_PKEY_free(tmp_pkey); never executed: EVP_PKEY_free(tmp_pkey); | 0 |
909 | else | - |
910 | pkey = tmp_pkey; never executed: pkey = tmp_pkey; | 0 |
911 | tmp_pkey = | - |
912 | ((void *)0) | - |
913 | ; | - |
914 | (*matchcount)++; | - |
915 | } never executed: end of block | 0 |
916 | } never executed: end of block | 0 |
917 | | - |
918 | EVP_PKEY_free(tmp_pkey); | - |
919 | if (*TRUE | never evaluated | FALSE | never evaluated |
matchcount == 1TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
920 | ok = 1; | - |
921 | } never executed: end of block | 0 |
922 | } never executed: end of block | 0 |
923 | | - |
924 | if (okTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
925 | store_info = OSSL_STORE_INFO_new_PARAMS(pkey); never executed: store_info = OSSL_STORE_INFO_new_PARAMS(pkey); | 0 |
926 | if (store_info == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
927 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
928 | ) | - |
929 | EVP_PKEY_free(pkey); never executed: EVP_PKEY_free(pkey); | 0 |
930 | | - |
931 | return never executed: return store_info; store_info;never executed: return store_info; | 0 |
932 | } | - |
933 | | - |
934 | static FILE_HANDLER params_handler = { | - |
935 | "params", | - |
936 | try_decode_params | - |
937 | }; | - |
938 | | - |
939 | | - |
940 | | - |
941 | | - |
942 | static OSSL_STORE_INFO *try_decode_X509Certificate(const char *pem_name, | - |
943 | const char *pem_header, | - |
944 | const unsigned char *blob, | - |
945 | size_t len, void **pctx, | - |
946 | int *matchcount, | - |
947 | const UI_METHOD *ui_method, | - |
948 | void *ui_data) | - |
949 | { | - |
950 | OSSL_STORE_INFO *store_info = | - |
951 | ((void *)0) | - |
952 | ; | - |
953 | X509 *cert = | - |
954 | ((void *)0) | - |
955 | ; | - |
956 | int ignore_trusted = 1; | - |
957 | | - |
958 | if (pem_name != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
959 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
960 | ) { | - |
961 | if ( | - |
962 | __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
963 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
964 | ) && __builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
965 | "TRUSTED CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
966 | ) && (__s1_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
967 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
968 | ), __s2_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
969 | "TRUSTED CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
970 | ), (!((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
971 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
972 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
973 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
974 | ) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
975 | "TRUSTED CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
976 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
977 | "TRUSTED CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
978 | ) == 1) || __s2_len >= 4)) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
979 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
980 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
981 | "TRUSTED CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
982 | ) : (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
983 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
984 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
985 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
986 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
987 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
988 | ) == 1) && (__s1_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
989 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
990 | ), __s1_len < 4) ? (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
991 | "TRUSTED CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
992 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
993 | "TRUSTED CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
994 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
995 | "TRUSTED CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
996 | ) == 1) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
997 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
998 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
999 | "TRUSTED CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1000 | ) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1001 | "TRUSTED CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1002 | ); int __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1003 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1004 | ))[0] - __s2[0]); if (__s1_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1005 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1006 | ))[1] - __s2[1]); if (__s1_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1007 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1008 | ))[2] - __s2[2]); if (__s1_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( pem_name ))[3] - __s2[3]); | 0 |
1009 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
never executed: __result = (((const unsigned char *) (const char *) ( pem_name ))[3] - __s2[3]); | 0 |
1010 | ))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1011 | "TRUSTED CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1012 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1013 | "TRUSTED CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1014 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1015 | "TRUSTED CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1016 | ) == 1) && (__s2_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1017 | "TRUSTED CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1018 | ), __s2_len < 4) ? (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1019 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1020 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1021 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1022 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1023 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1024 | ) == 1) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1025 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1026 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1027 | "TRUSTED CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1028 | ) : -(__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1029 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1030 | ); int __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1031 | "TRUSTED CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1032 | ))[0] - __s2[0]); if (__s2_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1033 | "TRUSTED CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1034 | ))[1] - __s2[1]); if (__s2_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1035 | "TRUSTED CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1036 | ))[2] - __s2[2]); if (__s2_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( "TRUSTED CERTIFICATE" ))[3] - __s2[3]); | 0 |
1037 | "TRUSTED CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
never executed: __result = (((const unsigned char *) (const char *) ( "TRUSTED CERTIFICATE" ))[3] - __s2[3]); | 0 |
1038 | ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1039 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1040 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1041 | "TRUSTED CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1042 | )))); }) TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1043 | == 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1044 | ignore_trusted = 0; never executed: ignore_trusted = 0; | 0 |
1045 | else if ( | - |
1046 | __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1047 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1048 | ) && __builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1049 | "X509 CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1050 | ) && (__s1_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1051 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1052 | ), __s2_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1053 | "X509 CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1054 | ), (!((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1055 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1056 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1057 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1058 | ) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1059 | "X509 CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1060 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1061 | "X509 CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1062 | ) == 1) || __s2_len >= 4)) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1063 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1064 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1065 | "X509 CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1066 | ) : (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1067 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1068 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1069 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1070 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1071 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1072 | ) == 1) && (__s1_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1073 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1074 | ), __s1_len < 4) ? (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1075 | "X509 CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1076 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1077 | "X509 CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1078 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1079 | "X509 CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1080 | ) == 1) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1081 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1082 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1083 | "X509 CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1084 | ) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1085 | "X509 CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1086 | ); int __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1087 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1088 | ))[0] - __s2[0]); if (__s1_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1089 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1090 | ))[1] - __s2[1]); if (__s1_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1091 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1092 | ))[2] - __s2[2]); if (__s1_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( pem_name ))[3] - __s2[3]); | 0 |
1093 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
never executed: __result = (((const unsigned char *) (const char *) ( pem_name ))[3] - __s2[3]); | 0 |
1094 | ))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1095 | "X509 CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1096 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1097 | "X509 CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1098 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1099 | "X509 CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1100 | ) == 1) && (__s2_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1101 | "X509 CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1102 | ), __s2_len < 4) ? (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1103 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1104 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1105 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1106 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1107 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1108 | ) == 1) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1109 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1110 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1111 | "X509 CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1112 | ) : -(__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1113 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1114 | ); int __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1115 | "X509 CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1116 | ))[0] - __s2[0]); if (__s2_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1117 | "X509 CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1118 | ))[1] - __s2[1]); if (__s2_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1119 | "X509 CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1120 | ))[2] - __s2[2]); if (__s2_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( "X509 CERTIFICATE" ))[3] - __s2[3]); | 0 |
1121 | "X509 CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
never executed: __result = (((const unsigned char *) (const char *) ( "X509 CERTIFICATE" ))[3] - __s2[3]); | 0 |
1122 | ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1123 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1124 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1125 | "X509 CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1126 | )))); }) TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1127 | != 0TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1128 | && | - |
1129 | __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1130 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1131 | ) && __builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1132 | "CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1133 | ) && (__s1_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1134 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1135 | ), __s2_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1136 | "CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1137 | ), (!((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1138 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1139 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1140 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1141 | ) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1142 | "CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1143 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1144 | "CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1145 | ) == 1) || __s2_len >= 4)) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1146 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1147 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1148 | "CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1149 | ) : (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1150 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1151 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1152 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1153 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1154 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1155 | ) == 1) && (__s1_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1156 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1157 | ), __s1_len < 4) ? (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1158 | "CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1159 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1160 | "CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1161 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1162 | "CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1163 | ) == 1) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1164 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1165 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1166 | "CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1167 | ) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1168 | "CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1169 | ); int __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1170 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1171 | ))[0] - __s2[0]); if (__s1_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1172 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1173 | ))[1] - __s2[1]); if (__s1_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1174 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1175 | ))[2] - __s2[2]); if (__s1_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( pem_name ))[3] - __s2[3]); | 0 |
1176 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
never executed: __result = (((const unsigned char *) (const char *) ( pem_name ))[3] - __s2[3]); | 0 |
1177 | ))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1178 | "CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1179 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1180 | "CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1181 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1182 | "CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1183 | ) == 1) && (__s2_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1184 | "CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1185 | ), __s2_len < 4) ? (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1186 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1187 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1188 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1189 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1190 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1191 | ) == 1) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1192 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1193 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1194 | "CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1195 | ) : -(__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1196 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1197 | ); int __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1198 | "CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1199 | ))[0] - __s2[0]); if (__s2_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1200 | "CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1201 | ))[1] - __s2[1]); if (__s2_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1202 | "CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1203 | ))[2] - __s2[2]); if (__s2_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( "CERTIFICATE" ))[3] - __s2[3]); | 0 |
1204 | "CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
never executed: __result = (((const unsigned char *) (const char *) ( "CERTIFICATE" ))[3] - __s2[3]); | 0 |
1205 | ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1206 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1207 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1208 | "CERTIFICATE"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1209 | )))); }) TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1210 | != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1211 | | - |
1212 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
1213 | ((void *)0) never executed: return ((void *)0) ; | 0 |
1214 | ; never executed: return ((void *)0) ; | 0 |
1215 | *matchcount = 1; | - |
1216 | } never executed: end of block | 0 |
1217 | | - |
1218 | if ((TRUE | never evaluated | FALSE | never evaluated |
cert = d2i_X509_AUX(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1219 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1220 | , &blob, len)) != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1221 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1222 | | - |
1223 | || (ignore_trustedTRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
cert = d2i_X509(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1224 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1225 | , &blob, len)) != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1226 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1227 | )) { | - |
1228 | *matchcount = 1; | - |
1229 | store_info = OSSL_STORE_INFO_new_CERT(cert); | - |
1230 | } never executed: end of block | 0 |
1231 | | - |
1232 | if (store_info == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1233 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1234 | ) | - |
1235 | X509_free(cert); never executed: X509_free(cert); | 0 |
1236 | | - |
1237 | return never executed: return store_info; store_info;never executed: return store_info; | 0 |
1238 | } | - |
1239 | | - |
1240 | static FILE_HANDLER X509Certificate_handler = { | - |
1241 | "X509Certificate", | - |
1242 | try_decode_X509Certificate | - |
1243 | }; | - |
1244 | | - |
1245 | | - |
1246 | | - |
1247 | | - |
1248 | static OSSL_STORE_INFO *try_decode_X509CRL(const char *pem_name, | - |
1249 | const char *pem_header, | - |
1250 | const unsigned char *blob, | - |
1251 | size_t len, void **pctx, | - |
1252 | int *matchcount, | - |
1253 | const UI_METHOD *ui_method, | - |
1254 | void *ui_data) | - |
1255 | { | - |
1256 | OSSL_STORE_INFO *store_info = | - |
1257 | ((void *)0) | - |
1258 | ; | - |
1259 | X509_CRL *crl = | - |
1260 | ((void *)0) | - |
1261 | ; | - |
1262 | | - |
1263 | if (pem_name != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1264 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1265 | ) { | - |
1266 | if ( | - |
1267 | __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1268 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1269 | ) && __builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1270 | "X509 CRL"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1271 | ) && (__s1_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1272 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1273 | ), __s2_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1274 | "X509 CRL"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1275 | ), (!((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1276 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1277 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1278 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1279 | ) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1280 | "X509 CRL"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1281 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1282 | "X509 CRL"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1283 | ) == 1) || __s2_len >= 4)) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1284 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1285 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1286 | "X509 CRL"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1287 | ) : (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1288 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1289 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1290 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1291 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1292 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1293 | ) == 1) && (__s1_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1294 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1295 | ), __s1_len < 4) ? (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1296 | "X509 CRL"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1297 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1298 | "X509 CRL"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1299 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1300 | "X509 CRL"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1301 | ) == 1) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1302 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1303 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1304 | "X509 CRL"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1305 | ) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1306 | "X509 CRL"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1307 | ); int __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1308 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1309 | ))[0] - __s2[0]); if (__s1_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1310 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1311 | ))[1] - __s2[1]); if (__s1_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1312 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1313 | ))[2] - __s2[2]); if (__s1_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( pem_name ))[3] - __s2[3]); | 0 |
1314 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
never executed: __result = (((const unsigned char *) (const char *) ( pem_name ))[3] - __s2[3]); | 0 |
1315 | ))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1316 | "X509 CRL"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1317 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1318 | "X509 CRL"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1319 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1320 | "X509 CRL"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1321 | ) == 1) && (__s2_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1322 | "X509 CRL"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1323 | ), __s2_len < 4) ? (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1324 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1325 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1326 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1327 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1328 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1329 | ) == 1) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1330 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1331 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1332 | "X509 CRL"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1333 | ) : -(__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1334 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1335 | ); int __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1336 | "X509 CRL"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1337 | ))[0] - __s2[0]); if (__s2_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1338 | "X509 CRL"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1339 | ))[1] - __s2[1]); if (__s2_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1340 | "X509 CRL"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1341 | ))[2] - __s2[2]); if (__s2_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( "X509 CRL" ))[3] - __s2[3]); | 0 |
1342 | "X509 CRL"TRUE | never evaluated | FALSE | never evaluated |
never executed: __result = (((const unsigned char *) (const char *) ( "X509 CRL" ))[3] - __s2[3]); | 0 |
1343 | ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1344 | pem_nameTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1345 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1346 | "X509 CRL"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1347 | )))); }) TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1348 | != 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1349 | | - |
1350 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
1351 | ((void *)0) never executed: return ((void *)0) ; | 0 |
1352 | ; never executed: return ((void *)0) ; | 0 |
1353 | *matchcount = 1; | - |
1354 | } never executed: end of block | 0 |
1355 | | - |
1356 | if ((TRUE | never evaluated | FALSE | never evaluated |
crl = d2i_X509_CRL(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1357 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1358 | , &blob, len)) != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1359 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1360 | ) { | - |
1361 | *matchcount = 1; | - |
1362 | store_info = OSSL_STORE_INFO_new_CRL(crl); | - |
1363 | } never executed: end of block | 0 |
1364 | | - |
1365 | if (store_info == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1366 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1367 | ) | - |
1368 | X509_CRL_free(crl); never executed: X509_CRL_free(crl); | 0 |
1369 | | - |
1370 | return never executed: return store_info; store_info;never executed: return store_info; | 0 |
1371 | } | - |
1372 | | - |
1373 | static FILE_HANDLER X509CRL_handler = { | - |
1374 | "X509CRL", | - |
1375 | try_decode_X509CRL | - |
1376 | }; | - |
1377 | | - |
1378 | | - |
1379 | | - |
1380 | | - |
1381 | static const FILE_HANDLER *file_handlers[] = { | - |
1382 | &PKCS12_handler, | - |
1383 | &PKCS8Encrypted_handler, | - |
1384 | &X509Certificate_handler, | - |
1385 | &X509CRL_handler, | - |
1386 | ¶ms_handler, | - |
1387 | &PUBKEY_handler, | - |
1388 | &PrivateKey_handler, | - |
1389 | }; | - |
1390 | | - |
1391 | | - |
1392 | | - |
1393 | | - |
1394 | | - |
1395 | | - |
1396 | | - |
1397 | struct ossl_store_loader_ctx_st { | - |
1398 | enum { | - |
1399 | is_raw = 0, | - |
1400 | is_pem, | - |
1401 | is_dir | - |
1402 | } type; | - |
1403 | int errcnt; | - |
1404 | | - |
1405 | unsigned int flags; | - |
1406 | union { | - |
1407 | struct { | - |
1408 | BIO *file; | - |
1409 | | - |
1410 | | - |
1411 | | - |
1412 | | - |
1413 | | - |
1414 | const FILE_HANDLER *last_handler; | - |
1415 | void *last_handler_ctx; | - |
1416 | } file; | - |
1417 | struct { | - |
1418 | OPENSSL_DIR_CTX *ctx; | - |
1419 | int end_reached; | - |
1420 | char *uri; | - |
1421 | | - |
1422 | | - |
1423 | | - |
1424 | | - |
1425 | | - |
1426 | | - |
1427 | char search_name[9]; | - |
1428 | | - |
1429 | | - |
1430 | | - |
1431 | | - |
1432 | | - |
1433 | | - |
1434 | const char *last_entry; | - |
1435 | int last_errno; | - |
1436 | } dir; | - |
1437 | } _; | - |
1438 | | - |
1439 | | - |
1440 | int expected_type; | - |
1441 | }; | - |
1442 | | - |
1443 | static void OSSL_STORE_LOADER_CTX_free(OSSL_STORE_LOADER_CTX *ctx) | - |
1444 | { | - |
1445 | if (ctx->type == is_dirTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1446 | CRYPTO_free(ctx->_.dir.uri, __FILE__, 744); | - |
1447 | } never executed: end of block else { | 0 |
1448 | if (ctx->_.file.last_handler != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1449 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1450 | ) { | - |
1451 | ctx->_.file.last_handler->destroy_ctx(&ctx->_.file.last_handler_ctx); | - |
1452 | ctx->_.file.last_handler_ctx = | - |
1453 | ((void *)0) | - |
1454 | ; | - |
1455 | ctx->_.file.last_handler = | - |
1456 | ((void *)0) | - |
1457 | ; | - |
1458 | } never executed: end of block | 0 |
1459 | } never executed: end of block | 0 |
1460 | CRYPTO_free(ctx, __FILE__, 752); | - |
1461 | } never executed: end of block | 0 |
1462 | | - |
1463 | static OSSL_STORE_LOADER_CTX *file_open(const OSSL_STORE_LOADER *loader, | - |
1464 | const char *uri, | - |
1465 | const UI_METHOD *ui_method, | - |
1466 | void *ui_data) | - |
1467 | { | - |
1468 | OSSL_STORE_LOADER_CTX *ctx = | - |
1469 | ((void *)0) | - |
1470 | ; | - |
1471 | struct stat st; | - |
1472 | struct { | - |
1473 | const char *path; | - |
1474 | unsigned int check_absolute:1; | - |
1475 | } path_data[2]; | - |
1476 | size_t path_data_n = 0, i; | - |
1477 | const char *path; | - |
1478 | | - |
1479 | | - |
1480 | | - |
1481 | | - |
1482 | path_data[path_data_n].check_absolute = 0; | - |
1483 | path_data[path_data_n++].path = uri; | - |
1484 | | - |
1485 | | - |
1486 | | - |
1487 | | - |
1488 | | - |
1489 | | - |
1490 | | - |
1491 | if (strncasecmp(uri, "file:", 5) == 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1492 | const char *p = &uri[5]; | - |
1493 | | - |
1494 | if ( | - |
1495 | (TRUE | never evaluated | FALSE | never evaluated |
__extension__ (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1496 | 2TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1497 | )TRUE | never evaluated | FALSE | never evaluated |
&& ((__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1498 | &uri[5]TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1499 | )TRUE | never evaluated | FALSE | never evaluated |
&& strlen (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1500 | &uri[5]TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1501 | ) < ((size_t) (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1502 | 2TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1503 | ))TRUE | never evaluated | FALSE | never evaluated |
) || (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1504 | "//"TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1505 | )TRUE | never evaluated | FALSE | never evaluated |
&& strlen (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1506 | "//"TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1507 | ) < ((size_t) (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1508 | 2TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1509 | ))TRUE | never evaluated | FALSE | never evaluated |
)) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1510 | &uri[5]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1511 | ) && __builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1512 | "//"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1513 | ) && (__s1_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1514 | &uri[5]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1515 | ), __s2_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1516 | "//"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1517 | ), (!((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1518 | &uri[5]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1519 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1520 | &uri[5]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1521 | ) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1522 | "//"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1523 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1524 | "//"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1525 | ) == 1) || __s2_len >= 4)) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1526 | &uri[5]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1527 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1528 | "//"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1529 | ) : (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1530 | &uri[5]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1531 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1532 | &uri[5]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1533 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1534 | &uri[5]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1535 | ) == 1) && (__s1_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1536 | &uri[5]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1537 | ), __s1_len < 4) ? (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1538 | "//"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1539 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1540 | "//"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1541 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1542 | "//"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1543 | ) == 1) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1544 | &uri[5]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1545 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1546 | "//"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1547 | ) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1548 | "//"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1549 | ); int __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1550 | &uri[5]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1551 | ))[0] - __s2[0]); if (__s1_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1552 | &uri[5]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1553 | ))[1] - __s2[1]); if (__s1_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1554 | &uri[5]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1555 | ))[2] - __s2[2]); if (__s1_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( &uri[5] ))[3] - __s2[3]); | 0 |
1556 | &uri[5]TRUE | never evaluated | FALSE | never evaluated |
never executed: __result = (((const unsigned char *) (const char *) ( &uri[5] ))[3] - __s2[3]); | 0 |
1557 | ))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1558 | "//"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1559 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1560 | "//"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1561 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1562 | "//"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1563 | ) == 1) && (__s2_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1564 | "//"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1565 | ), __s2_len < 4) ? (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1566 | &uri[5]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1567 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1568 | &uri[5]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1569 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1570 | &uri[5]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1571 | ) == 1) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1572 | &uri[5]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1573 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1574 | "//"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1575 | ) : -(__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1576 | &uri[5]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1577 | ); int __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1578 | "//"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1579 | ))[0] - __s2[0]); if (__s2_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1580 | "//"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1581 | ))[1] - __s2[1]); if (__s2_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1582 | "//"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1583 | ))[2] - __s2[2]); if (__s2_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( "//" ))[3] - __s2[3]); | 0 |
1584 | "//"TRUE | never evaluated | FALSE | never evaluated |
never executed: __result = (((const unsigned char *) (const char *) ( "//" ))[3] - __s2[3]); | 0 |
1585 | ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1586 | &uri[5]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1587 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1588 | "//"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1589 | )))); }) : strncmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1590 | &uri[5]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1591 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1592 | "//"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1593 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1594 | 2TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1595 | ))) TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1596 | == 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1597 | path_data_n--; | - |
1598 | if (strncasecmp(&uri[7], "localhost/", 10) == 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1599 | p = &uri[16]; | - |
1600 | } never executed: end of block else if (uri[7] == '/'TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1601 | p = &uri[7]; | - |
1602 | } never executed: end of block else { | 0 |
1603 | ERR_put_error(44,(120),(111),__FILE__,792) | - |
1604 | ; | - |
1605 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
1606 | ((void *)0) never executed: return ((void *)0) ; | 0 |
1607 | ; never executed: return ((void *)0) ; | 0 |
1608 | } | - |
1609 | } | - |
1610 | | - |
1611 | path_data[path_data_n].check_absolute = 1; | - |
1612 | path_data[path_data_n++].path = p; | - |
1613 | } never executed: end of block | 0 |
1614 | | - |
1615 | | - |
1616 | for (i = 0, path = | - |
1617 | ((void *)0) | - |
1618 | ; path == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1619 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1620 | && i < path_data_nTRUE | never evaluated | FALSE | never evaluated |
; i++) { | 0 |
1621 | | - |
1622 | | - |
1623 | | - |
1624 | | - |
1625 | if (path_data[i].check_absoluteTRUE | never evaluated | FALSE | never evaluated |
&& path_data[i].path[0] != '/'TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1626 | ERR_put_error(44,(120),(108),__FILE__,821) | - |
1627 | ; | - |
1628 | ERR_add_error_data(1, path_data[i].path); | - |
1629 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
1630 | ((void *)0) never executed: return ((void *)0) ; | 0 |
1631 | ; never executed: return ((void *)0) ; | 0 |
1632 | } | - |
1633 | | - |
1634 | if (stat(path_data[i].path, &st) < 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1635 | ERR_put_error(2,(22),( | - |
1636 | (*__errno_location ()) | - |
1637 | ),__FILE__,827); | - |
1638 | ERR_add_error_data(1, path_data[i].path); | - |
1639 | } never executed: end of block else { | 0 |
1640 | path = path_data[i].path; | - |
1641 | } never executed: end of block | 0 |
1642 | } | - |
1643 | if (path == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1644 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1645 | ) { | - |
1646 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
1647 | ((void *)0) never executed: return ((void *)0) ; | 0 |
1648 | ; never executed: return ((void *)0) ; | 0 |
1649 | } | - |
1650 | | - |
1651 | | - |
1652 | ERR_clear_error(); | - |
1653 | | - |
1654 | ctx = CRYPTO_zalloc(sizeof(*ctx), __FILE__, 840); | - |
1655 | if (ctx == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1656 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1657 | ) { | - |
1658 | ERR_put_error(44,(120),((1|64)),__FILE__,842); | - |
1659 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
1660 | ((void *)0) never executed: return ((void *)0) ; | 0 |
1661 | ; never executed: return ((void *)0) ; | 0 |
1662 | } | - |
1663 | | - |
1664 | if ( | - |
1665 | ((((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1666 | st.st_modeTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1667 | )) & 0170000) == (0040000))TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1668 | ) { | - |
1669 | | - |
1670 | | - |
1671 | | - |
1672 | | - |
1673 | | - |
1674 | ctx->_.dir.uri = CRYPTO_strdup(uri, __FILE__, 852); | - |
1675 | ctx->type = is_dir; | - |
1676 | | - |
1677 | if (ctx->_.dir.uri == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1678 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1679 | ) | - |
1680 | goto never executed: goto err; err;never executed: goto err; | 0 |
1681 | | - |
1682 | ctx->_.dir.last_entry = OPENSSL_DIR_read(&ctx->_.dir.ctx, path); | - |
1683 | ctx->_.dir.last_errno = | - |
1684 | (*__errno_location ()) | - |
1685 | ; | - |
1686 | if (ctx->_.dir.last_entry == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1687 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1688 | ) { | - |
1689 | if (ctx->_.dir.last_errno != 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1690 | char errbuf[256]; | - |
1691 | | - |
1692 | (*__errno_location ()) | - |
1693 | = ctx->_.dir.last_errno; | - |
1694 | openssl_strerror_r( | - |
1695 | (*__errno_location ()) | - |
1696 | , errbuf, sizeof(errbuf)); | - |
1697 | ERR_put_error(44,(120),(2),__FILE__,865); | - |
1698 | ERR_add_error_data(1, errbuf); | - |
1699 | goto never executed: goto err; err;never executed: goto err; | 0 |
1700 | } | - |
1701 | ctx->_.dir.end_reached = 1; | - |
1702 | } never executed: end of block | 0 |
1703 | } never executed: end of block else { | 0 |
1704 | BIO *buff = | - |
1705 | ((void *)0) | - |
1706 | ; | - |
1707 | char peekbuf[4096] = { 0, }; | - |
1708 | | - |
1709 | if ((TRUE | never evaluated | FALSE | never evaluated |
buff = BIO_new(BIO_f_buffer())) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1710 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1711 | | - |
1712 | || (TRUE | never evaluated | FALSE | never evaluated |
ctx->_.file.file = BIO_new_file(path, "rb")) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1713 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1714 | ) { | - |
1715 | BIO_free_all(buff); | - |
1716 | goto never executed: goto err; err;never executed: goto err; | 0 |
1717 | } | - |
1718 | | - |
1719 | ctx->_.file.file = BIO_push(buff, ctx->_.file.file); | - |
1720 | if (BIO_ctrl(ctx->_.file.file,29,(sizeof(peekbuf) - 1),(peekbuf)) > 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1721 | peekbuf[sizeof(peekbuf) - 1] = '\0'; | - |
1722 | if (strstr(peekbuf, "-----BEGIN ") != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1723 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1724 | ) | - |
1725 | ctx->type = is_pem; never executed: ctx->type = is_pem; | 0 |
1726 | } never executed: end of block | 0 |
1727 | } never executed: end of block | 0 |
1728 | | - |
1729 | return never executed: return ctx; ctx;never executed: return ctx; | 0 |
1730 | err: | - |
1731 | OSSL_STORE_LOADER_CTX_free(ctx); | - |
1732 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
1733 | ((void *)0) never executed: return ((void *)0) ; | 0 |
1734 | ; never executed: return ((void *)0) ; | 0 |
1735 | } | - |
1736 | | - |
1737 | static int file_ctrl(OSSL_STORE_LOADER_CTX *ctx, int cmd, va_list args) | - |
1738 | { | - |
1739 | int ret = 1; | - |
1740 | | - |
1741 | switch (cmd) { | - |
1742 | case never executed: case 1: 1:never executed: case 1: | 0 |
1743 | { | - |
1744 | int on = *( | - |
1745 | __builtin_va_arg( | - |
1746 | args | - |
1747 | , | - |
1748 | int * | - |
1749 | ) | - |
1750 | ); | - |
1751 | | - |
1752 | switch (on) { | - |
1753 | case never executed: case 0: 0:never executed: case 0: | 0 |
1754 | ctx->flags &= ~(1<<0); | - |
1755 | break; never executed: break; | 0 |
1756 | case never executed: case 1: 1:never executed: case 1: | 0 |
1757 | ctx->flags |= (1<<0); | - |
1758 | break; never executed: break; | 0 |
1759 | default never executed: default: :never executed: default: | 0 |
1760 | ERR_put_error(44,(129),((7)),__FILE__,913) | - |
1761 | ; | - |
1762 | ret = 0; | - |
1763 | break; never executed: break; | 0 |
1764 | } | - |
1765 | } | - |
1766 | break; never executed: break; | 0 |
1767 | default never executed: default: :never executed: default: | 0 |
1768 | break; never executed: break; | 0 |
1769 | } | - |
1770 | | - |
1771 | return never executed: return ret; ret;never executed: return ret; | 0 |
1772 | } | - |
1773 | | - |
1774 | static int file_expect(OSSL_STORE_LOADER_CTX *ctx, int expected) | - |
1775 | { | - |
1776 | ctx->expected_type = expected; | - |
1777 | return never executed: return 1; 1;never executed: return 1; | 0 |
1778 | } | - |
1779 | | - |
1780 | static int file_find(OSSL_STORE_LOADER_CTX *ctx, OSSL_STORE_SEARCH *search) | - |
1781 | { | - |
1782 | | - |
1783 | | - |
1784 | | - |
1785 | | - |
1786 | | - |
1787 | if (OSSL_STORE_SEARCH_get_type(search) == 1TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1788 | unsigned long hash = 0; | - |
1789 | | - |
1790 | if (ctx == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1791 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1792 | ) | - |
1793 | return never executed: return 1; 1;never executed: return 1; | 0 |
1794 | | - |
1795 | if (ctx->type != is_dirTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1796 | ERR_put_error(44,(138),(119),__FILE__,947) | - |
1797 | ; | - |
1798 | return never executed: return 0; 0;never executed: return 0; | 0 |
1799 | } | - |
1800 | | - |
1801 | hash = X509_NAME_hash(OSSL_STORE_SEARCH_get0_name(search)); | - |
1802 | BIO_snprintf(ctx->_.dir.search_name, sizeof(ctx->_.dir.search_name), | - |
1803 | "%08lx", hash); | - |
1804 | return never executed: return 1; 1;never executed: return 1; | 0 |
1805 | } | - |
1806 | | - |
1807 | if (ctx != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1808 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1809 | ) | - |
1810 | ERR_put_error(44,(138),(120),__FILE__,959) never executed: ERR_put_error(44,(138),(120),__FILE__,959) ; | 0 |
1811 | ; never executed: ERR_put_error(44,(138),(120),__FILE__,959) ; | 0 |
1812 | return never executed: return 0; 0;never executed: return 0; | 0 |
1813 | } | - |
1814 | | - |
1815 | | - |
1816 | OSSL_STORE_LOADER_CTX *ossl_store_file_attach_pem_bio_int(BIO *bp) | - |
1817 | { | - |
1818 | OSSL_STORE_LOADER_CTX *ctx = CRYPTO_zalloc(sizeof(*ctx), __FILE__, 966); | - |
1819 | | - |
1820 | if (ctx == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1821 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1822 | ) { | - |
1823 | ERR_put_error(44,(128),((1|64)),__FILE__,970) | - |
1824 | ; | - |
1825 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
1826 | ((void *)0) never executed: return ((void *)0) ; | 0 |
1827 | ; never executed: return ((void *)0) ; | 0 |
1828 | } | - |
1829 | | - |
1830 | ctx->_.file.file = bp; | - |
1831 | ctx->type = is_pem; | - |
1832 | | - |
1833 | return never executed: return ctx; ctx;never executed: return ctx; | 0 |
1834 | } | - |
1835 | | - |
1836 | static OSSL_STORE_INFO *file_load_try_decode(OSSL_STORE_LOADER_CTX *ctx, | - |
1837 | const char *pem_name, | - |
1838 | const char *pem_header, | - |
1839 | unsigned char *data, size_t len, | - |
1840 | const UI_METHOD *ui_method, | - |
1841 | void *ui_data, int *matchcount) | - |
1842 | { | - |
1843 | OSSL_STORE_INFO *result = | - |
1844 | ((void *)0) | - |
1845 | ; | - |
1846 | BUF_MEM *new_mem = | - |
1847 | ((void *)0) | - |
1848 | ; | - |
1849 | char *new_pem_name = | - |
1850 | ((void *)0) | - |
1851 | ; | - |
1852 | int t = 0; | - |
1853 | | - |
1854 | again: code before this statement never executed: again: | 0 |
1855 | { | - |
1856 | size_t i = 0; | - |
1857 | void *handler_ctx = | - |
1858 | ((void *)0) | - |
1859 | ; | - |
1860 | const FILE_HANDLER **matching_handlers = | - |
1861 | CRYPTO_zalloc(sizeof(*matching_handlers) * (sizeof(file_handlers)/sizeof((file_handlers)[0])), | - |
1862 | __FILE__ | - |
1863 | , | - |
1864 | 998 | - |
1865 | ) | - |
1866 | ; | - |
1867 | | - |
1868 | if (matching_handlers == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1869 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1870 | ) { | - |
1871 | ERR_put_error(44,(124),((1|64)),__FILE__,1002) | - |
1872 | ; | - |
1873 | goto never executed: goto err; err;never executed: goto err; | 0 |
1874 | } | - |
1875 | | - |
1876 | *matchcount = 0; | - |
1877 | for (i = 0; i < (sizeof(file_handlers)/sizeof((file_handlers)[0]))TRUE | never evaluated | FALSE | never evaluated |
; i++) { | 0 |
1878 | const FILE_HANDLER *handler = file_handlers[i]; | - |
1879 | int try_matchcount = 0; | - |
1880 | void *tmp_handler_ctx = | - |
1881 | ((void *)0) | - |
1882 | ; | - |
1883 | OSSL_STORE_INFO *tmp_result = | - |
1884 | handler->try_decode(pem_name, pem_header, data, len, | - |
1885 | &tmp_handler_ctx, &try_matchcount, | - |
1886 | ui_method, ui_data); | - |
1887 | | - |
1888 | if (try_matchcount > 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1889 | | - |
1890 | matching_handlers[*matchcount] = handler; | - |
1891 | | - |
1892 | if (handler_ctxTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1893 | handler->destroy_ctx(&handler_ctx); never executed: handler->destroy_ctx(&handler_ctx); | 0 |
1894 | handler_ctx = tmp_handler_ctx; | - |
1895 | | - |
1896 | if ((*TRUE | never evaluated | FALSE | never evaluated |
matchcount += try_matchcount) > 1TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1897 | | - |
1898 | OSSL_STORE_INFO_free(result); | - |
1899 | OSSL_STORE_INFO_free(tmp_result); | - |
1900 | if (handler->destroy_ctx != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1901 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1902 | ) | - |
1903 | handler->destroy_ctx(&handler_ctx); never executed: handler->destroy_ctx(&handler_ctx); | 0 |
1904 | handler_ctx = | - |
1905 | ((void *)0) | - |
1906 | ; | - |
1907 | tmp_result = | - |
1908 | ((void *)0) | - |
1909 | ; | - |
1910 | result = | - |
1911 | ((void *)0) | - |
1912 | ; | - |
1913 | } never executed: end of block | 0 |
1914 | if (result == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1915 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1916 | ) | - |
1917 | result = tmp_result; never executed: result = tmp_result; | 0 |
1918 | } never executed: end of block | 0 |
1919 | } never executed: end of block | 0 |
1920 | | - |
1921 | if (*TRUE | never evaluated | FALSE | never evaluated |
matchcount == 1TRUE | never evaluated | FALSE | never evaluated |
&& matching_handlers[0]->repeatableTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1922 | ctx->_.file.last_handler = matching_handlers[0]; | - |
1923 | ctx->_.file.last_handler_ctx = handler_ctx; | - |
1924 | } never executed: end of block | 0 |
1925 | | - |
1926 | CRYPTO_free(matching_handlers, __FILE__, 1044); | - |
1927 | } | - |
1928 | | - |
1929 | err: code before this statement never executed: err: | 0 |
1930 | CRYPTO_free(new_pem_name, __FILE__, 1048); | - |
1931 | BUF_MEM_free(new_mem); | - |
1932 | | - |
1933 | if (result != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1934 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1935 | | - |
1936 | && (TRUE | never evaluated | FALSE | never evaluated |
t = OSSL_STORE_INFO_get_type(result)) == -1TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
1937 | pem_name = new_pem_name = | - |
1938 | ossl_store_info_get0_EMBEDDED_pem_name(result); | - |
1939 | new_mem = ossl_store_info_get0_EMBEDDED_buffer(result); | - |
1940 | data = (unsigned char *)new_mem->data; | - |
1941 | len = new_mem->length; | - |
1942 | CRYPTO_free(result, __FILE__, 1058); | - |
1943 | result = | - |
1944 | ((void *)0) | - |
1945 | ; | - |
1946 | goto never executed: goto again; again;never executed: goto again; | 0 |
1947 | } | - |
1948 | | - |
1949 | if (result != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1950 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1951 | ) | - |
1952 | ERR_clear_error(); never executed: ERR_clear_error(); | 0 |
1953 | | - |
1954 | return never executed: return result; result;never executed: return result; | 0 |
1955 | } | - |
1956 | | - |
1957 | static OSSL_STORE_INFO *file_load_try_repeat(OSSL_STORE_LOADER_CTX *ctx, | - |
1958 | const UI_METHOD *ui_method, | - |
1959 | void *ui_data) | - |
1960 | { | - |
1961 | OSSL_STORE_INFO *result = | - |
1962 | ((void *)0) | - |
1963 | ; | - |
1964 | int try_matchcount = 0; | - |
1965 | | - |
1966 | if (ctx->_.file.last_handler != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1967 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1968 | ) { | - |
1969 | result = | - |
1970 | ctx->_.file.last_handler->try_decode( | - |
1971 | ((void *)0) | - |
1972 | , | - |
1973 | ((void *)0) | - |
1974 | , | - |
1975 | ((void *)0) | - |
1976 | , 0, | - |
1977 | &ctx->_.file.last_handler_ctx, | - |
1978 | &try_matchcount, | - |
1979 | ui_method, ui_data); | - |
1980 | | - |
1981 | if (result == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1982 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1983 | ) { | - |
1984 | ctx->_.file.last_handler->destroy_ctx(&ctx->_.file.last_handler_ctx); | - |
1985 | ctx->_.file.last_handler_ctx = | - |
1986 | ((void *)0) | - |
1987 | ; | - |
1988 | ctx->_.file.last_handler = | - |
1989 | ((void *)0) | - |
1990 | ; | - |
1991 | } never executed: end of block | 0 |
1992 | } never executed: end of block | 0 |
1993 | return never executed: return result; result;never executed: return result; | 0 |
1994 | } | - |
1995 | | - |
1996 | static void pem_free_flag(void *pem_data, int secure, size_t num) | - |
1997 | { | - |
1998 | if (secureTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
1999 | CRYPTO_secure_clear_free(pem_data, num, __FILE__, 1095); never executed: CRYPTO_secure_clear_free(pem_data, num, __FILE__, 1095); | 0 |
2000 | else | - |
2001 | CRYPTO_free(pem_data, __FILE__, 1097); never executed: CRYPTO_free(pem_data, __FILE__, 1097); | 0 |
2002 | } | - |
2003 | static int file_read_pem(BIO *bp, char **pem_name, char **pem_header, | - |
2004 | unsigned char **data, long *len, | - |
2005 | const UI_METHOD *ui_method, | - |
2006 | void *ui_data, int secure) | - |
2007 | { | - |
2008 | int i = secureTRUE | never evaluated | FALSE | never evaluated |
| 0 |
2009 | ? PEM_read_bio_ex(bp, pem_name, pem_header, data, len, | - |
2010 | 0x1 | 0x2) | - |
2011 | : PEM_read_bio(bp, pem_name, pem_header, data, len); | - |
2012 | | - |
2013 | if (i <= 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
2014 | return never executed: return 0; 0;never executed: return 0; | 0 |
2015 | | - |
2016 | | - |
2017 | | - |
2018 | | - |
2019 | | - |
2020 | | - |
2021 | | - |
2022 | if (strlen(*pem_header) > 10TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
2023 | EVP_CIPHER_INFO cipher; | - |
2024 | struct pem_pass_data pass_data; | - |
2025 | | - |
2026 | if (!PEM_get_EVP_CIPHER_INFO(*pem_header, &cipher)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2027 | || !file_fill_pem_pass_data(&pass_data, "PEM", ui_method, ui_data)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2028 | || !PEM_do_header(&cipher, *data, len, file_get_pem_pass,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2029 | &pass_data)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
2030 | return never executed: return 0; 0;never executed: return 0; | 0 |
2031 | } | - |
2032 | } never executed: end of block | 0 |
2033 | return never executed: return 1; 1;never executed: return 1; | 0 |
2034 | } | - |
2035 | | - |
2036 | static int file_read_asn1(BIO *bp, unsigned char **data, long *len) | - |
2037 | { | - |
2038 | BUF_MEM *mem = | - |
2039 | ((void *)0) | - |
2040 | ; | - |
2041 | | - |
2042 | if (asn1_d2i_read_bio(bp, &mem) < 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
2043 | return never executed: return 0; 0;never executed: return 0; | 0 |
2044 | | - |
2045 | *data = (unsigned char *)mem->data; | - |
2046 | *len = (long)mem->length; | - |
2047 | CRYPTO_free(mem, __FILE__, 1141); | - |
2048 | | - |
2049 | return never executed: return 1; 1;never executed: return 1; | 0 |
2050 | } | - |
2051 | | - |
2052 | static int ends_with_dirsep(const char *uri) | - |
2053 | { | - |
2054 | if (*TRUE | never evaluated | FALSE | never evaluated |
uri != '\0'TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
2055 | uri += strlen(uri) - 1; never executed: uri += strlen(uri) - 1; | 0 |
2056 | | - |
2057 | | - |
2058 | | - |
2059 | | - |
2060 | | - |
2061 | | - |
2062 | | - |
2063 | return never executed: return *uri == '/'; *uri == '/';never executed: return *uri == '/'; | 0 |
2064 | } | - |
2065 | | - |
2066 | static int file_name_to_uri(OSSL_STORE_LOADER_CTX *ctx, const char *name, | - |
2067 | char **data) | - |
2068 | { | - |
2069 | | - |
2070 | ((void) (0)) | - |
2071 | ; | - |
2072 | | - |
2073 | ((void) (0)) | - |
2074 | ; | - |
2075 | { | - |
2076 | const char *pathsep = ends_with_dirsep(ctx->_.dir.uri)TRUE | never evaluated | FALSE | never evaluated |
? "" : "/"; | 0 |
2077 | long calculated_length = strlen(ctx->_.dir.uri) + strlen(pathsep) | - |
2078 | + strlen(name) + 1 ; | - |
2079 | | - |
2080 | *data = CRYPTO_zalloc(calculated_length, __FILE__, 1170); | - |
2081 | if (*TRUE | never evaluated | FALSE | never evaluated |
data == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2082 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2083 | ) { | - |
2084 | ERR_put_error(44,(126),((1|64)),__FILE__,1172); | - |
2085 | return never executed: return 0; 0;never executed: return 0; | 0 |
2086 | } | - |
2087 | | - |
2088 | OPENSSL_strlcat(*data, ctx->_.dir.uri, calculated_length); | - |
2089 | OPENSSL_strlcat(*data, pathsep, calculated_length); | - |
2090 | OPENSSL_strlcat(*data, name, calculated_length); | - |
2091 | } | - |
2092 | return never executed: return 1; 1;never executed: return 1; | 0 |
2093 | } | - |
2094 | | - |
2095 | static int file_name_check(OSSL_STORE_LOADER_CTX *ctx, const char *name) | - |
2096 | { | - |
2097 | const char *p = | - |
2098 | ((void *)0) | - |
2099 | ; | - |
2100 | | - |
2101 | | - |
2102 | if (ctx->_.dir.search_name[0] == '\0'TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
2103 | return never executed: return 1; 1;never executed: return 1; | 0 |
2104 | | - |
2105 | | - |
2106 | if (ctx->expected_type != 0TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2107 | && ctx->expected_type != 4TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2108 | && ctx->expected_type != 5TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
2109 | return never executed: return 0; 0;never executed: return 0; | 0 |
2110 | | - |
2111 | | - |
2112 | | - |
2113 | | - |
2114 | if (strncasecmp(name, ctx->_.dir.search_name,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2115 | sizeof(ctx->_.dir.search_name) - 1) != 0TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2116 | || name[sizeof(ctx->_.dir.search_name) - 1] != '.'TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
2117 | return never executed: return 0; 0;never executed: return 0; | 0 |
2118 | p = &name[sizeof(ctx->_.dir.search_name)]; | - |
2119 | | - |
2120 | | - |
2121 | | - |
2122 | | - |
2123 | | - |
2124 | if (*TRUE | never evaluated | FALSE | never evaluated |
p == 'r'TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
2125 | p++; | - |
2126 | if (ctx->expected_type != 0TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2127 | && ctx->expected_type != 5TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
2128 | return never executed: return 0; 0;never executed: return 0; | 0 |
2129 | } never executed: end of block else if (ctx->expected_type == 5TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
2130 | return never executed: return 0; 0;never executed: return 0; | 0 |
2131 | } | - |
2132 | | - |
2133 | | - |
2134 | | - |
2135 | | - |
2136 | | - |
2137 | if (!(ossl_ctype_check((*p), 0x4))TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
2138 | return never executed: return 0; 0;never executed: return 0; | 0 |
2139 | while ((TRUE | never evaluated | FALSE | never evaluated |
ossl_ctype_check((*p), 0x4))TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
2140 | p++; never executed: p++; | 0 |
2141 | return never executed: return *p == '\0'; *p == '\0';never executed: return *p == '\0'; | 0 |
2142 | } | - |
2143 | | - |
2144 | static int file_eof(OSSL_STORE_LOADER_CTX *ctx); | - |
2145 | static int file_error(OSSL_STORE_LOADER_CTX *ctx); | - |
2146 | static OSSL_STORE_INFO *file_load(OSSL_STORE_LOADER_CTX *ctx, | - |
2147 | const UI_METHOD *ui_method, void *ui_data) | - |
2148 | { | - |
2149 | OSSL_STORE_INFO *result = | - |
2150 | ((void *)0) | - |
2151 | ; | - |
2152 | | - |
2153 | ctx->errcnt = 0; | - |
2154 | ERR_clear_error(); | - |
2155 | | - |
2156 | if (ctx->type == is_dirTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
2157 | do { | - |
2158 | char *newname = | - |
2159 | ((void *)0) | - |
2160 | ; | - |
2161 | | - |
2162 | if (ctx->_.dir.last_entry == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2163 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2164 | ) { | - |
2165 | if (!ctx->_.dir.end_reachedTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
2166 | char errbuf[256]; | - |
2167 | | - |
2168 | ((void) (0)) | - |
2169 | ; | - |
2170 | | - |
2171 | (*__errno_location ()) | - |
2172 | = ctx->_.dir.last_errno; | - |
2173 | ctx->errcnt++; | - |
2174 | openssl_strerror_r( | - |
2175 | (*__errno_location ()) | - |
2176 | , errbuf, sizeof(errbuf)); | - |
2177 | ERR_put_error(44,(119),(2),__FILE__,1266); | - |
2178 | ERR_add_error_data(1, errbuf); | - |
2179 | } never executed: end of block | 0 |
2180 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
2181 | ((void *)0) never executed: return ((void *)0) ; | 0 |
2182 | ; never executed: return ((void *)0) ; | 0 |
2183 | } | - |
2184 | | - |
2185 | if (ctx->_.dir.last_entry[0] != '.'TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2186 | && file_name_check(ctx, ctx->_.dir.last_entry)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2187 | && !file_name_to_uri(ctx, ctx->_.dir.last_entry, &newname)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
2188 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
2189 | ((void *)0) never executed: return ((void *)0) ; | 0 |
2190 | ; never executed: return ((void *)0) ; | 0 |
2191 | | - |
2192 | | - |
2193 | | - |
2194 | | - |
2195 | | - |
2196 | | - |
2197 | | - |
2198 | ctx->_.dir.last_entry = OPENSSL_DIR_read(&ctx->_.dir.ctx, | - |
2199 | ctx->_.dir.uri); | - |
2200 | ctx->_.dir.last_errno = | - |
2201 | (*__errno_location ()) | - |
2202 | ; | - |
2203 | if (ctx->_.dir.last_entry == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2204 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2205 | && ctx->_.dir.last_errno == 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
2206 | ctx->_.dir.end_reached = 1; never executed: ctx->_.dir.end_reached = 1; | 0 |
2207 | | - |
2208 | if (newname != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2209 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2210 | | - |
2211 | && (TRUE | never evaluated | FALSE | never evaluated |
result = OSSL_STORE_INFO_new_NAME(newname)) == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2212 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2213 | ) { | - |
2214 | CRYPTO_free(newname, __FILE__, 1291); | - |
2215 | ERR_put_error(44,(119),(44),__FILE__,1292); | - |
2216 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
2217 | ((void *)0) never executed: return ((void *)0) ; | 0 |
2218 | ; never executed: return ((void *)0) ; | 0 |
2219 | } | - |
2220 | } never executed: end of block while (result == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2221 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2222 | && !file_eof(ctx)TRUE | never evaluated | FALSE | never evaluated |
); | 0 |
2223 | } never executed: end of block else { | 0 |
2224 | int matchcount = -1; | - |
2225 | | - |
2226 | again: code before this statement never executed: again: | 0 |
2227 | result = file_load_try_repeat(ctx, ui_method, ui_data); | - |
2228 | if (result != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2229 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2230 | ) | - |
2231 | return never executed: return result; result;never executed: return result; | 0 |
2232 | | - |
2233 | if (file_eof(ctx)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
2234 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
2235 | ((void *)0) never executed: return ((void *)0) ; | 0 |
2236 | ; never executed: return ((void *)0) ; | 0 |
2237 | | - |
2238 | do { | - |
2239 | char *pem_name = | - |
2240 | ((void *)0) | - |
2241 | ; | - |
2242 | char *pem_header = | - |
2243 | ((void *)0) | - |
2244 | ; | - |
2245 | unsigned char *data = | - |
2246 | ((void *)0) | - |
2247 | ; | - |
2248 | long len = 0; | - |
2249 | | - |
2250 | matchcount = -1; | - |
2251 | if (ctx->type == is_pemTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
2252 | if (!file_read_pem(ctx->_.file.file, &pem_name, &pem_header,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2253 | &data, &len, ui_method, ui_data,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2254 | (ctx->flags & (1<<0)) != 0)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
2255 | ctx->errcnt++; | - |
2256 | goto never executed: goto endloop; endloop;never executed: goto endloop; | 0 |
2257 | } | - |
2258 | } never executed: end of block else { | 0 |
2259 | if (!file_read_asn1(ctx->_.file.file, &data, &len)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
2260 | ctx->errcnt++; | - |
2261 | goto never executed: goto endloop; endloop;never executed: goto endloop; | 0 |
2262 | } | - |
2263 | } never executed: end of block | 0 |
2264 | | - |
2265 | result = file_load_try_decode(ctx, pem_name, pem_header, data, len, | - |
2266 | ui_method, ui_data, &matchcount); | - |
2267 | | - |
2268 | if (result != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2269 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2270 | ) | - |
2271 | goto never executed: goto endloop; endloop;never executed: goto endloop; | 0 |
2272 | | - |
2273 | | - |
2274 | | - |
2275 | | - |
2276 | | - |
2277 | if (!((pem_name == TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2278 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2279 | || matchcount <= 1TRUE | never evaluated | FALSE | never evaluated |
) != 0)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
2280 | ctx->errcnt++; | - |
2281 | goto never executed: goto endloop; endloop;never executed: goto endloop; | 0 |
2282 | } | - |
2283 | | - |
2284 | if (matchcount > 1TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
2285 | ERR_put_error(44,(119),(107),__FILE__,1345) | - |
2286 | ; | - |
2287 | } never executed: end of block else if (matchcount == 1TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
2288 | | - |
2289 | | - |
2290 | | - |
2291 | | - |
2292 | if (ERR_peek_error() == 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
2293 | ERR_put_error(44,(119),(110),__FILE__,1353) | - |
2294 | ; | - |
2295 | if (pem_name != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2296 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2297 | ) | - |
2298 | ERR_add_error_data(3, "PEM type is '", pem_name, "'"); never executed: ERR_add_error_data(3, "PEM type is '", pem_name, "'"); | 0 |
2299 | } never executed: end of block | 0 |
2300 | } never executed: end of block | 0 |
2301 | if (matchcount > 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
2302 | ctx->errcnt++; never executed: ctx->errcnt++; | 0 |
2303 | | - |
2304 | endloop: code before this statement never executed: endloop: | 0 |
2305 | pem_free_flag(pem_name, (ctx->flags & (1<<0)) != 0, 0); | - |
2306 | pem_free_flag(pem_header, (ctx->flags & (1<<0)) != 0, 0); | - |
2307 | pem_free_flag(data, (ctx->flags & (1<<0)) != 0, len); | - |
2308 | } never executed: end of block while (matchcount == 0TRUE | never evaluated | FALSE | never evaluated |
&& !file_eof(ctx)TRUE | never evaluated | FALSE | never evaluated |
&& !file_error(ctx)TRUE | never evaluated | FALSE | never evaluated |
); | 0 |
2309 | | - |
2310 | | - |
2311 | if (matchcount > 1TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
2312 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
2313 | ((void *)0) never executed: return ((void *)0) ; | 0 |
2314 | ; never executed: return ((void *)0) ; | 0 |
2315 | | - |
2316 | if (result != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2317 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2318 | | - |
2319 | && ctx->expected_type != 0TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2320 | && ctx->expected_type != OSSL_STORE_INFO_get_type(result)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
2321 | OSSL_STORE_INFO_free(result); | - |
2322 | goto never executed: goto again; again;never executed: goto again; | 0 |
2323 | } | - |
2324 | } never executed: end of block | 0 |
2325 | | - |
2326 | return never executed: return result; result;never executed: return result; | 0 |
2327 | } | - |
2328 | | - |
2329 | static int file_error(OSSL_STORE_LOADER_CTX *ctx) | - |
2330 | { | - |
2331 | return never executed: return ctx->errcnt > 0; ctx->errcnt > 0;never executed: return ctx->errcnt > 0; | 0 |
2332 | } | - |
2333 | | - |
2334 | static int file_eof(OSSL_STORE_LOADER_CTX *ctx) | - |
2335 | { | - |
2336 | if (ctx->type == is_dirTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
2337 | return never executed: return ctx->_.dir.end_reached; ctx->_.dir.end_reached;never executed: return ctx->_.dir.end_reached; | 0 |
2338 | | - |
2339 | if (ctx->_.file.last_handler != TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2340 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2341 | | - |
2342 | && !ctx->_.file.last_handler->eof(ctx->_.file.last_handler_ctx)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
2343 | return never executed: return 0; 0;never executed: return 0; | 0 |
2344 | return never executed: return (int)BIO_ctrl(ctx->_.file.file,2,0, ((void *)0) ); (int)BIO_ctrl(ctx->_.file.file,2,0,never executed: return (int)BIO_ctrl(ctx->_.file.file,2,0, ((void *)0) ); | 0 |
2345 | ((void *)0) never executed: return (int)BIO_ctrl(ctx->_.file.file,2,0, ((void *)0) ); | 0 |
2346 | ); never executed: return (int)BIO_ctrl(ctx->_.file.file,2,0, ((void *)0) ); | 0 |
2347 | } | - |
2348 | | - |
2349 | static int file_close(OSSL_STORE_LOADER_CTX *ctx) | - |
2350 | { | - |
2351 | if (ctx->type == is_dirTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
2352 | OPENSSL_DIR_end(&ctx->_.dir.ctx); | - |
2353 | } never executed: end of block else { | 0 |
2354 | BIO_free_all(ctx->_.file.file); | - |
2355 | } never executed: end of block | 0 |
2356 | OSSL_STORE_LOADER_CTX_free(ctx); | - |
2357 | return never executed: return 1; 1;never executed: return 1; | 0 |
2358 | } | - |
2359 | | - |
2360 | int ossl_store_file_detach_pem_bio_int(OSSL_STORE_LOADER_CTX *ctx) | - |
2361 | { | - |
2362 | OSSL_STORE_LOADER_CTX_free(ctx); | - |
2363 | return never executed: return 1; 1;never executed: return 1; | 0 |
2364 | } | - |
2365 | | - |
2366 | static OSSL_STORE_LOADER file_loader = | - |
2367 | { | - |
2368 | "file", | - |
2369 | | - |
2370 | ((void *)0) | - |
2371 | , | - |
2372 | file_open, | - |
2373 | file_ctrl, | - |
2374 | file_expect, | - |
2375 | file_find, | - |
2376 | file_load, | - |
2377 | file_eof, | - |
2378 | file_error, | - |
2379 | file_close | - |
2380 | }; | - |
2381 | | - |
2382 | static void store_file_loader_deinit(void) | - |
2383 | { | - |
2384 | ossl_store_unregister_loader_int(file_loader.scheme); | - |
2385 | } never executed: end of block | 0 |
2386 | | - |
2387 | int ossl_store_file_loader_init(void) | - |
2388 | { | - |
2389 | int ret = ossl_store_register_loader_int(&file_loader); | - |
2390 | | - |
2391 | OPENSSL_atexit(store_file_loader_deinit); | - |
2392 | return never executed: return ret; ret;never executed: return ret; | 0 |
2393 | } | - |
| | |