OpenCoverage

ts_rsp_sign.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/ts/ts_rsp_sign.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6static ASN1_INTEGER *def_serial_cb(struct TS_resp_ctx *, void *);-
7static int def_time_cb(struct TS_resp_ctx *, void *, time_t *sec, long *usec);-
8static int def_extension_cb(struct TS_resp_ctx *, X509_EXTENSION *, void *);-
9-
10static void TS_RESP_CTX_init(TS_RESP_CTX *ctx);-
11static void TS_RESP_CTX_cleanup(TS_RESP_CTX *ctx);-
12static int TS_RESP_check_request(TS_RESP_CTX *ctx);-
13static ASN1_OBJECT *TS_RESP_get_policy(TS_RESP_CTX *ctx);-
14static TS_TST_INFO *TS_RESP_create_tst_info(TS_RESP_CTX *ctx,-
15 ASN1_OBJECT *policy);-
16static int TS_RESP_process_extensions(TS_RESP_CTX *ctx);-
17static int TS_RESP_sign(TS_RESP_CTX *ctx);-
18-
19static ESS_SIGNING_CERT *ESS_SIGNING_CERT_new_init(X509 *signcert,-
20 struct stack_st_X509 *certs);-
21static ESS_CERT_ID *ESS_CERT_ID_new_init(X509 *cert, int issuer_needed);-
22static int TS_TST_INFO_content_new(PKCS7 *p7);-
23static int ESS_add_signing_cert(PKCS7_SIGNER_INFO *si, ESS_SIGNING_CERT *sc);-
24-
25static ASN1_GENERALIZEDTIME *TS_RESP_set_genTime_with_precision(-
26 ASN1_GENERALIZEDTIME *, time_t, long, unsigned);-
27-
28-
29-
30static ASN1_INTEGER *-
31def_serial_cb(struct TS_resp_ctx *ctx, void *data)-
32{-
33 ASN1_INTEGER *serial = ASN1_INTEGER_new();-
34-
35 if (!serial
!serialDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
36 goto
never executed: goto err;
err;
never executed: goto err;
0
37 if (!ASN1_INTEGER_set(serial, 1)
!ASN1_INTEGER_set(serial, 1)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
38 goto
never executed: goto err;
err;
never executed: goto err;
0
39 return
never executed: return serial;
serial;
never executed: return serial;
0
40-
41err:-
42 ERR_put_error(47,(0xfff),((1|64)),__FILE__,106);-
43 TS_RESP_CTX_set_status_info(ctx, 2,-
44 "Error during serial number generation.");-
45 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
46 ((void *)0)
never executed: return ((void *)0) ;
0
47 ;
never executed: return ((void *)0) ;
0
48}-
49-
50-
51static int-
52def_time_cb(struct TS_resp_ctx *ctx, void *data, time_t *sec, long *usec)-
53{-
54 struct timeval tv;-
55-
56 if (gettimeofday(&tv,
gettimeofday(&...id *)0) ) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
57 ((void *)0)
gettimeofday(&...id *)0) ) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
58 ) != 0
gettimeofday(&...id *)0) ) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
59 ERR_put_error(47,(0xfff),(122),__FILE__,119);-
60 TS_RESP_CTX_set_status_info(ctx, 2,-
61 "Time is not available.");-
62 TS_RESP_CTX_add_failure_info(ctx, 14);-
63 return
never executed: return 0;
0;
never executed: return 0;
0
64 }-
65-
66 *sec = tv.tv_sec;-
67 *usec = tv.tv_usec;-
68-
69 return
never executed: return 1;
1;
never executed: return 1;
0
70}-
71-
72static int-
73def_extension_cb(struct TS_resp_ctx *ctx, X509_EXTENSION *ext, void *data)-
74{-
75-
76 TS_RESP_CTX_set_status_info(ctx, 2,-
77 "Unsupported extension.");-
78 TS_RESP_CTX_add_failure_info(ctx, 16);-
79 return
never executed: return 0;
0;
never executed: return 0;
0
80}-
81-
82-
83-
84TS_RESP_CTX *-
85TS_RESP_CTX_new(void)-
86{-
87 TS_RESP_CTX *ctx;-
88-
89 if (!(ctx = calloc(1, sizeof(TS_RESP_CTX)))
!(ctx = calloc...TS_RESP_CTX)))Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
90 ERR_put_error(47,(0xfff),((1|64)),__FILE__,150);-
91 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
92 ((void *)0)
never executed: return ((void *)0) ;
0
93 ;
never executed: return ((void *)0) ;
0
94 }-
95-
96-
97 ctx->serial_cb = def_serial_cb;-
98 ctx->time_cb = def_time_cb;-
99 ctx->extension_cb = def_extension_cb;-
100-
101 return
never executed: return ctx;
ctx;
never executed: return ctx;
0
102}-
103-
104void-
105TS_RESP_CTX_free(TS_RESP_CTX *ctx)-
106{-
107 if (!ctx
!ctxDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • freenull
FALSEnever evaluated
)
0-1
108 return;
executed 1 time by 1 test: return;
Executed by:
  • freenull
1
109-
110 X509_free(ctx->signer_cert);-
111 EVP_PKEY_free(ctx->signer_key);-
112 sk_pop_free(((_STACK*) (1 ? (ctx->certs) : (struct stack_st_X509*)0)), ((void (*)(void *)) ((1 ? (X509_free) : (void (*)(X509 *))0))));-
113 sk_pop_free(((_STACK*) (1 ? (ctx->policies) : (struct stack_st_ASN1_OBJECT*)0)), ((void (*)(void *)) ((1 ? (ASN1_OBJECT_free) : (void (*)(ASN1_OBJECT *))0))));-
114 ASN1_OBJECT_free(ctx->default_policy);-
115 sk_free(((_STACK*) (1 ? (ctx->mds) : (struct stack_st_EVP_MD*)0)));-
116 ASN1_INTEGER_free(ctx->seconds);-
117 ASN1_INTEGER_free(ctx->millis);-
118 ASN1_INTEGER_free(ctx->micros);-
119 free(ctx);-
120}
never executed: end of block
0
121-
122int-
123TS_RESP_CTX_set_signer_cert(TS_RESP_CTX *ctx, X509 *signer)-
124{-
125 if (X509_check_purpose(signer, 9, 0) != 1
X509_check_pur...er, 9, 0) != 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
126 ERR_put_error(47,(0xfff),(117),__FILE__,184);-
127 return
never executed: return 0;
0;
never executed: return 0;
0
128 }-
129 X509_free(ctx->signer_cert);-
130 ctx->signer_cert = signer;-
131 CRYPTO_add_lock(&ctx->signer_cert->references,+1,3,__FILE__,189);-
132 return
never executed: return 1;
1;
never executed: return 1;
0
133}-
134-
135int-
136TS_RESP_CTX_set_signer_key(TS_RESP_CTX *ctx, EVP_PKEY *key)-
137{-
138 EVP_PKEY_free(ctx->signer_key);-
139 ctx->signer_key = key;-
140 CRYPTO_add_lock(&ctx->signer_key->references,+1,10,__FILE__,198);-
141-
142 return
never executed: return 1;
1;
never executed: return 1;
0
143}-
144-
145int-
146TS_RESP_CTX_set_def_policy(TS_RESP_CTX *ctx, const ASN1_OBJECT *def_policy)-
147{-
148 if (ctx->default_policy
ctx->default_policyDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
149 ASN1_OBJECT_free(ctx->default_policy);
never executed: ASN1_OBJECT_free(ctx->default_policy);
0
150 if (!(ctx->default_policy = OBJ_dup(def_policy))
!(ctx->default...p(def_policy))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
151 goto
never executed: goto err;
err;
never executed: goto err;
0
152 return
never executed: return 1;
1;
never executed: return 1;
0
153-
154err:-
155 ERR_put_error(47,(0xfff),((1|64)),__FILE__,213);-
156 return
never executed: return 0;
0;
never executed: return 0;
0
157}-
158-
159int-
160TS_RESP_CTX_set_certs(TS_RESP_CTX *ctx, struct stack_st_X509 *certs)-
161{-
162 int i;-
163-
164 if (ctx->certs
ctx->certsDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
165 sk_pop_free(((_STACK*) (1 ? (ctx->certs) : (struct stack_st_X509*)0)), ((void (*)(void *)) ((1 ? (X509_free) : (void (*)(X509 *))0))));-
166 ctx->certs = -
167 ((void *)0)-
168 ;-
169 }
never executed: end of block
0
170 if (!certs
!certsDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
171 return
never executed: return 1;
1;
never executed: return 1;
0
172 if (!(ctx->certs = (struct stack_st_X509 *)sk_dup(((_STACK*) (1 ? certs : (struct stack_st_X509*)0))))
!(ctx->certs =...st_X509*)0))))Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
173 ERR_put_error(47,(0xfff),((1|64)),__FILE__,229);-
174 return
never executed: return 0;
0;
never executed: return 0;
0
175 }-
176 for (i = 0; i < sk_num(((_STACK*) (1 ? (ctx->certs) : (struct stack_st_X509*)0)))
i < sk_num(((_..._st_X509*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
177 X509 *cert = ((X509 *)sk_value(((_STACK*) (1 ? (ctx->certs) : (struct stack_st_X509*)0)), (i)));-
178 CRYPTO_add_lock(&cert->references,+1,3,__FILE__,234);-
179 }
never executed: end of block
0
180-
181 return
never executed: return 1;
1;
never executed: return 1;
0
182}-
183-
184int-
185TS_RESP_CTX_add_policy(TS_RESP_CTX *ctx, const ASN1_OBJECT *policy)-
186{-
187 ASN1_OBJECT *copy = -
188 ((void *)0)-
189 ;-
190-
191-
192 if (!ctx->policies
!ctx->policiesDescription
TRUEnever evaluated
FALSEnever evaluated
&& !(ctx->policies = ((struct stack_st_ASN1_OBJECT *)sk_new_null()))
!(ctx->policie...k_new_null()))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
193 goto
never executed: goto err;
err;
never executed: goto err;
0
194 if (!(copy = OBJ_dup(policy))
!(copy = OBJ_dup(policy))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
195 goto
never executed: goto err;
err;
never executed: goto err;
0
196 if (!sk_push(((_STACK*) (1 ? (ctx->policies) : (struct stack_st_ASN1_OBJECT*)0)), ((void*) (1 ? (copy) : (ASN1_OBJECT*)0)))
!sk_push(((_ST...1_OBJECT*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
197 goto
never executed: goto err;
err;
never executed: goto err;
0
198-
199 return
never executed: return 1;
1;
never executed: return 1;
0
200-
201err:-
202 ERR_put_error(47,(0xfff),((1|64)),__FILE__,256);-
203 ASN1_OBJECT_free(copy);-
204 return
never executed: return 0;
0;
never executed: return 0;
0
205}-
206-
207int-
208TS_RESP_CTX_add_md(TS_RESP_CTX *ctx, const EVP_MD *md)-
209{-
210-
211 if (!ctx->mds
!ctx->mdsDescription
TRUEnever evaluated
FALSEnever evaluated
&& !(ctx->mds = ((struct stack_st_EVP_MD *)sk_new_null()))
!(ctx->mds = (...k_new_null()))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
212 goto
never executed: goto err;
err;
never executed: goto err;
0
213-
214 if (!sk_push(((_STACK*) (1 ? (ctx->mds) : (struct stack_st_EVP_MD*)0)), ((void*) (1 ? ((EVP_MD *)md) : (EVP_MD*)0)))
!sk_push(((_ST... (EVP_MD*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
215 goto
never executed: goto err;
err;
never executed: goto err;
0
216-
217 return
never executed: return 1;
1;
never executed: return 1;
0
218-
219err:-
220 ERR_put_error(47,(0xfff),((1|64)),__FILE__,274);-
221 return
never executed: return 0;
0;
never executed: return 0;
0
222}-
223int-
224TS_RESP_CTX_set_accuracy(TS_RESP_CTX *ctx, int secs, int millis, int micros)-
225{-
226 ASN1_INTEGER_free(ctx->seconds); ctx->seconds = -
227((void *)0)-
228; ASN1_INTEGER_free(ctx->millis); ctx->millis = -
229((void *)0)-
230; ASN1_INTEGER_free(ctx->micros); ctx->micros = -
231((void *)0)-
232;;-
233 if (secs
secsDescription
TRUEnever evaluated
FALSEnever evaluated
&& (!(ctx->seconds = ASN1_INTEGER_new())
!(ctx->seconds...INTEGER_new())Description
TRUEnever evaluated
FALSEnever evaluated
||
0
234 !ASN1_INTEGER_set(ctx->seconds, secs)
!ASN1_INTEGER_...seconds, secs)Description
TRUEnever evaluated
FALSEnever evaluated
))
0
235 goto
never executed: goto err;
err;
never executed: goto err;
0
236 if (millis
millisDescription
TRUEnever evaluated
FALSEnever evaluated
&& (!(ctx->millis = ASN1_INTEGER_new())
!(ctx->millis ...INTEGER_new())Description
TRUEnever evaluated
FALSEnever evaluated
||
0
237 !ASN1_INTEGER_set(ctx->millis, millis)
!ASN1_INTEGER_...illis, millis)Description
TRUEnever evaluated
FALSEnever evaluated
))
0
238 goto
never executed: goto err;
err;
never executed: goto err;
0
239 if (micros
microsDescription
TRUEnever evaluated
FALSEnever evaluated
&& (!(ctx->micros = ASN1_INTEGER_new())
!(ctx->micros ...INTEGER_new())Description
TRUEnever evaluated
FALSEnever evaluated
||
0
240 !ASN1_INTEGER_set(ctx->micros, micros)
!ASN1_INTEGER_...icros, micros)Description
TRUEnever evaluated
FALSEnever evaluated
))
0
241 goto
never executed: goto err;
err;
never executed: goto err;
0
242-
243 return
never executed: return 1;
1;
never executed: return 1;
0
244-
245err:-
246 ASN1_INTEGER_free(ctx->seconds); ctx->seconds = -
247((void *)0)-
248; ASN1_INTEGER_free(ctx->millis); ctx->millis = -
249((void *)0)-
250; ASN1_INTEGER_free(ctx->micros); ctx->micros = -
251((void *)0)-
252;;-
253 ERR_put_error(47,(0xfff),((1|64)),__FILE__,304);-
254 return
never executed: return 0;
0;
never executed: return 0;
0
255}-
256-
257void-
258TS_RESP_CTX_add_flags(TS_RESP_CTX *ctx, int flags)-
259{-
260 ctx->flags |= flags;-
261}
never executed: end of block
0
262-
263void-
264TS_RESP_CTX_set_serial_cb(TS_RESP_CTX *ctx, TS_serial_cb cb, void *data)-
265{-
266 ctx->serial_cb = cb;-
267 ctx->serial_cb_data = data;-
268}
never executed: end of block
0
269-
270void-
271TS_RESP_CTX_set_extension_cb(TS_RESP_CTX *ctx, TS_extension_cb cb, void *data)-
272{-
273 ctx->extension_cb = cb;-
274 ctx->extension_cb_data = data;-
275}
never executed: end of block
0
276-
277int-
278TS_RESP_CTX_set_status_info(TS_RESP_CTX *ctx, int status, const char *text)-
279{-
280 TS_STATUS_INFO *si = -
281 ((void *)0)-
282 ;-
283 ASN1_UTF8STRING *utf8_text = -
284 ((void *)0)-
285 ;-
286 int ret = 0;-
287-
288 if (!(si = TS_STATUS_INFO_new())
!(si = TS_STATUS_INFO_new())Description
TRUEnever evaluated
FALSEnever evaluated
)
0
289 goto
never executed: goto err;
err;
never executed: goto err;
0
290 if (!ASN1_INTEGER_set(si->status, status)
!ASN1_INTEGER_...tatus, status)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
291 goto
never executed: goto err;
err;
never executed: goto err;
0
292 if (text
textDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
293 if (!(utf8_text = ASN1_UTF8STRING_new())
!(utf8_text = ...8STRING_new())Description
TRUEnever evaluated
FALSEnever evaluated
||
0
294 !ASN1_STRING_set(utf8_text, text, strlen(text))
!ASN1_STRING_s... strlen(text))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
295 goto
never executed: goto err;
err;
never executed: goto err;
0
296 if (!si->text
!si->textDescription
TRUEnever evaluated
FALSEnever evaluated
&& !(si->text = ((struct stack_st_ASN1_UTF8STRING *)sk_new_null()))
!(si->text = (...k_new_null()))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
297 goto
never executed: goto err;
err;
never executed: goto err;
0
298 if (!sk_push(((_STACK*) (1 ? (si->text) : (struct stack_st_ASN1_UTF8STRING*)0)), ((void*) (1 ? (utf8_text) : (ASN1_UTF8STRING*)0)))
!sk_push(((_ST...F8STRING*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
299 goto
never executed: goto err;
err;
never executed: goto err;
0
300 utf8_text = -
301 ((void *)0)-
302 ;-
303 }
never executed: end of block
0
304 if (!TS_RESP_set_status_info(ctx->response, si)
!TS_RESP_set_s...>response, si)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
305 goto
never executed: goto err;
err;
never executed: goto err;
0
306 ret = 1;-
307-
308err:
code before this statement never executed: err:
0
309 if (!ret
!retDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
310 ERR_put_error(47,(0xfff),((1|64)),__FILE__,355);
never executed: ERR_put_error(47,(0xfff),((1|64)),__FILE__,355);
0
311 TS_STATUS_INFO_free(si);-
312 ASN1_UTF8STRING_free(utf8_text);-
313 return
never executed: return ret;
ret;
never executed: return ret;
0
314}-
315-
316int-
317TS_RESP_CTX_set_status_info_cond(TS_RESP_CTX *ctx, int status, const char *text)-
318{-
319 int ret = 1;-
320 TS_STATUS_INFO *si = TS_RESP_get_status_info(ctx->response);-
321-
322 if (ASN1_INTEGER_get(si->status) == 0
ASN1_INTEGER_g...->status) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
323-
324 ret = TS_RESP_CTX_set_status_info(ctx, status, text);-
325 }
never executed: end of block
0
326 return
never executed: return ret;
ret;
never executed: return ret;
0
327}-
328-
329int-
330TS_RESP_CTX_add_failure_info(TS_RESP_CTX *ctx, int failure)-
331{-
332 TS_STATUS_INFO *si = TS_RESP_get_status_info(ctx->response);-
333-
334 if (!si->failure_info
!si->failure_infoDescription
TRUEnever evaluated
FALSEnever evaluated
&& !(si->failure_info = ASN1_BIT_STRING_new())
!(si->failure_..._STRING_new())Description
TRUEnever evaluated
FALSEnever evaluated
)
0
335 goto
never executed: goto err;
err;
never executed: goto err;
0
336 if (!ASN1_BIT_STRING_set_bit(si->failure_info, failure, 1)
!ASN1_BIT_STRI...o, failure, 1)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
337 goto
never executed: goto err;
err;
never executed: goto err;
0
338 return
never executed: return 1;
1;
never executed: return 1;
0
339-
340err:-
341 ERR_put_error(47,(0xfff),((1|64)),__FILE__,386);-
342 return
never executed: return 0;
0;
never executed: return 0;
0
343}-
344-
345TS_REQ *-
346TS_RESP_CTX_get_request(TS_RESP_CTX *ctx)-
347{-
348 return
never executed: return ctx->request;
ctx->request;
never executed: return ctx->request;
0
349}-
350-
351TS_TST_INFO *-
352TS_RESP_CTX_get_tst_info(TS_RESP_CTX *ctx)-
353{-
354 return
never executed: return ctx->tst_info;
ctx->tst_info;
never executed: return ctx->tst_info;
0
355}-
356-
357int-
358TS_RESP_CTX_set_clock_precision_digits(TS_RESP_CTX *ctx, unsigned precision)-
359{-
360 if (precision > 6
precision > 6Description
TRUEnever evaluated
FALSEnever evaluated
)
0
361 return
never executed: return 0;
0;
never executed: return 0;
0
362 ctx->clock_precision_digits = precision;-
363 return
never executed: return 1;
1;
never executed: return 1;
0
364}-
365-
366-
367TS_RESP *-
368TS_RESP_create_response(TS_RESP_CTX *ctx, BIO *req_bio)-
369{-
370 ASN1_OBJECT *policy;-
371 TS_RESP *response;-
372 int result = 0;-
373-
374 TS_RESP_CTX_init(ctx);-
375-
376-
377 if (!(ctx->response = TS_RESP_new())
!(ctx->respons...TS_RESP_new())Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
378 ERR_put_error(47,(0xfff),((1|64)),__FILE__,423);-
379 goto
never executed: goto end;
end;
never executed: goto end;
0
380 }-
381-
382-
383 if (!(ctx->request = d2i_TS_REQ_bio(req_bio,
!(ctx->request...((void *)0) ))Description
TRUEnever evaluated
FALSEnever evaluated
0
384 ((void *)0)
!(ctx->request...((void *)0) ))Description
TRUEnever evaluated
FALSEnever evaluated
0
385 ))
!(ctx->request...((void *)0) ))Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
386 TS_RESP_CTX_set_status_info(ctx, 2,-
387 "Bad request format or "-
388 "system error.");-
389 TS_RESP_CTX_add_failure_info(ctx, 5);-
390 goto
never executed: goto end;
end;
never executed: goto end;
0
391 }-
392-
393-
394 if (!TS_RESP_CTX_set_status_info(ctx, 0,
!TS_RESP_CTX_s... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
395 ((void *)0)
!TS_RESP_CTX_s... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
396 )
!TS_RESP_CTX_s... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
)
0
397 goto
never executed: goto end;
end;
never executed: goto end;
0
398-
399-
400 if (!TS_RESP_check_request(ctx)
!TS_RESP_check_request(ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
401 goto
never executed: goto end;
end;
never executed: goto end;
0
402-
403-
404 if (!(policy = TS_RESP_get_policy(ctx))
!(policy = TS_...t_policy(ctx))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
405 goto
never executed: goto end;
end;
never executed: goto end;
0
406-
407-
408 if (!(ctx->tst_info = TS_RESP_create_tst_info(ctx, policy))
!(ctx->tst_inf...(ctx, policy))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
409 goto
never executed: goto end;
end;
never executed: goto end;
0
410-
411-
412 if (!TS_RESP_process_extensions(ctx)
!TS_RESP_proce...xtensions(ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
413 goto
never executed: goto end;
end;
never executed: goto end;
0
414-
415-
416 if (!TS_RESP_sign(ctx)
!TS_RESP_sign(ctx)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
417 goto
never executed: goto end;
end;
never executed: goto end;
0
418-
419-
420 result = 1;-
421-
422end:
code before this statement never executed: end:
0
423 if (!result
!resultDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
424 ERR_put_error(47,(0xfff),(121),__FILE__,465);-
425 if (ctx->response !=
ctx->response != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
426 ((void *)0)
ctx->response != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
427 ) {-
428 if (TS_RESP_CTX_set_status_info_cond(ctx,
TS_RESP_CTX_se...ration.") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
429 2, "Error during response "
TS_RESP_CTX_se...ration.") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
430 "generation.") == 0
TS_RESP_CTX_se...ration.") == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
431 TS_RESP_free(ctx->response);-
432 ctx->response = -
433 ((void *)0)-
434 ;-
435 }
never executed: end of block
0
436 }
never executed: end of block
0
437 }
never executed: end of block
0
438 response = ctx->response;-
439 ctx->response = -
440 ((void *)0)-
441 ;-
442 TS_RESP_CTX_cleanup(ctx);-
443 return
never executed: return response;
response;
never executed: return response;
0
444}-
445-
446-
447static void-
448TS_RESP_CTX_init(TS_RESP_CTX *ctx)-
449{-
450 ctx->request = -
451 ((void *)0)-
452 ;-
453 ctx->response = -
454 ((void *)0)-
455 ;-
456 ctx->tst_info = -
457 ((void *)0)-
458 ;-
459}
never executed: end of block
0
460-
461-
462static void-
463TS_RESP_CTX_cleanup(TS_RESP_CTX *ctx)-
464{-
465 TS_REQ_free(ctx->request);-
466 ctx->request = -
467 ((void *)0)-
468 ;-
469 TS_RESP_free(ctx->response);-
470 ctx->response = -
471 ((void *)0)-
472 ;-
473 TS_TST_INFO_free(ctx->tst_info);-
474 ctx->tst_info = -
475 ((void *)0)-
476 ;-
477}
never executed: end of block
0
478-
479-
480static int-
481TS_RESP_check_request(TS_RESP_CTX *ctx)-
482{-
483 TS_REQ *request = ctx->request;-
484 TS_MSG_IMPRINT *msg_imprint;-
485 X509_ALGOR *md_alg;-
486 int md_alg_id;-
487 const ASN1_OCTET_STRING *digest;-
488 EVP_MD *md = -
489 ((void *)0)-
490 ;-
491 int i;-
492-
493-
494 if (TS_REQ_get_version(request) != 1
TS_REQ_get_ver...(request) != 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
495 TS_RESP_CTX_set_status_info(ctx, 2,-
496 "Bad request version.");-
497 TS_RESP_CTX_add_failure_info(ctx, 2);-
498 return
never executed: return 0;
0;
never executed: return 0;
0
499 }-
500-
501-
502 msg_imprint = TS_REQ_get_msg_imprint(request);-
503 md_alg = TS_MSG_IMPRINT_get_algo(msg_imprint);-
504 md_alg_id = OBJ_obj2nid(md_alg->algorithm);-
505 for (i = 0; !md
!mdDescription
TRUEnever evaluated
FALSEnever evaluated
&& i < sk_num(((_STACK*) (1 ? (ctx->mds) : (struct stack_st_EVP_MD*)0)))
i < sk_num(((_...t_EVP_MD*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
506 EVP_MD *current_md = ((EVP_MD *)sk_value(((_STACK*) (1 ? (ctx->mds) : (struct stack_st_EVP_MD*)0)), (i)));-
507 if (md_alg_id == EVP_MD_type(current_md)
md_alg_id == E...pe(current_md)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
508 md = current_md;
never executed: md = current_md;
0
509 }
never executed: end of block
0
510 if (!md
!mdDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
511 TS_RESP_CTX_set_status_info(ctx, 2,-
512 "Message digest algorithm is "-
513 "not supported.");-
514 TS_RESP_CTX_add_failure_info(ctx, 0);-
515 return
never executed: return 0;
0;
never executed: return 0;
0
516 }-
517-
518-
519 if (md_alg->parameter
md_alg->parameterDescription
TRUEnever evaluated
FALSEnever evaluated
&&
0
520 ASN1_TYPE_get(md_alg->parameter) != 5
ASN1_TYPE_get(...arameter) != 5Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
521 TS_RESP_CTX_set_status_info(ctx, 2,-
522 "Superfluous message digest "-
523 "parameter.");-
524 TS_RESP_CTX_add_failure_info(ctx, 0);-
525 return
never executed: return 0;
0;
never executed: return 0;
0
526 }-
527-
528 digest = TS_MSG_IMPRINT_get_msg(msg_imprint);-
529 if (digest->length != EVP_MD_size(md)
digest->length...VP_MD_size(md)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
530 TS_RESP_CTX_set_status_info(ctx, 2,-
531 "Bad message digest.");-
532 TS_RESP_CTX_add_failure_info(ctx, 5);-
533 return
never executed: return 0;
0;
never executed: return 0;
0
534 }-
535-
536 return
never executed: return 1;
1;
never executed: return 1;
0
537}-
538-
539-
540static ASN1_OBJECT *-
541TS_RESP_get_policy(TS_RESP_CTX *ctx)-
542{-
543 ASN1_OBJECT *requested = TS_REQ_get_policy_id(ctx->request);-
544 ASN1_OBJECT *policy = -
545 ((void *)0)-
546 ;-
547 int i;-
548-
549 if (ctx->default_policy ==
ctx->default_p...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
550 ((void *)0)
ctx->default_p...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
551 ) {-
552 ERR_put_error(47,(0xfff),(102),__FILE__,569);-
553 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
554 ((void *)0)
never executed: return ((void *)0) ;
0
555 ;
never executed: return ((void *)0) ;
0
556 }-
557-
558-
559 if (!requested
!requestedDescription
TRUEnever evaluated
FALSEnever evaluated
|| !OBJ_cmp(requested, ctx->default_policy)
!OBJ_cmp(reque...efault_policy)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
560 policy = ctx->default_policy;
never executed: policy = ctx->default_policy;
0
561-
562-
563 for (i = 0; !policy
!policyDescription
TRUEnever evaluated
FALSEnever evaluated
&& i < sk_num(((_STACK*) (1 ? (ctx->policies) : (struct stack_st_ASN1_OBJECT*)0)))
i < sk_num(((_...1_OBJECT*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
564 ASN1_OBJECT *current = ((ASN1_OBJECT *)sk_value(((_STACK*) (1 ? (ctx->policies) : (struct stack_st_ASN1_OBJECT*)0)), (i)));-
565 if (!OBJ_cmp(requested, current)
!OBJ_cmp(requested, current)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
566 policy = current;
never executed: policy = current;
0
567 }
never executed: end of block
0
568 if (!policy
!policyDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
569 ERR_put_error(47,(0xfff),(125),__FILE__,584);-
570 TS_RESP_CTX_set_status_info(ctx, 2,-
571 "Requested policy is not "-
572 "supported.");-
573 TS_RESP_CTX_add_failure_info(ctx, 15);-
574 }
never executed: end of block
0
575 return
never executed: return policy;
policy;
never executed: return policy;
0
576}-
577-
578-
579static TS_TST_INFO *-
580TS_RESP_create_tst_info(TS_RESP_CTX *ctx, ASN1_OBJECT *policy)-
581{-
582 int result = 0;-
583 TS_TST_INFO *tst_info = -
584 ((void *)0)-
585 ;-
586 ASN1_INTEGER *serial = -
587 ((void *)0)-
588 ;-
589 ASN1_GENERALIZEDTIME *asn1_time = -
590 ((void *)0)-
591 ;-
592 time_t sec;-
593 long usec;-
594 TS_ACCURACY *accuracy = -
595 ((void *)0)-
596 ;-
597 const ASN1_INTEGER *nonce;-
598 GENERAL_NAME *tsa_name = -
599 ((void *)0)-
600 ;-
601-
602 if (!(tst_info = TS_TST_INFO_new())
!(tst_info = T...ST_INFO_new())Description
TRUEnever evaluated
FALSEnever evaluated
)
0
603 goto
never executed: goto end;
end;
never executed: goto end;
0
604 if (!TS_TST_INFO_set_version(tst_info, 1)
!TS_TST_INFO_s...n(tst_info, 1)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
605 goto
never executed: goto end;
end;
never executed: goto end;
0
606 if (!TS_TST_INFO_set_policy_id(tst_info, policy)
!TS_TST_INFO_s..._info, policy)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
607 goto
never executed: goto end;
end;
never executed: goto end;
0
608 if (!TS_TST_INFO_set_msg_imprint(tst_info, ctx->request->msg_imprint)
!TS_TST_INFO_s...->msg_imprint)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
609 goto
never executed: goto end;
end;
never executed: goto end;
0
610 if (!(serial = (*ctx->serial_cb)(ctx, ctx->serial_cb_data))
!(serial = (*c...rial_cb_data))Description
TRUEnever evaluated
FALSEnever evaluated
||
0
611 !TS_TST_INFO_set_serial(tst_info, serial)
!TS_TST_INFO_s..._info, serial)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
612 goto
never executed: goto end;
end;
never executed: goto end;
0
613 if (!(*ctx->time_cb)(ctx, ctx->time_cb_data, &sec, &usec)
!(*ctx->time_c..., &sec, &usec)Description
TRUEnever evaluated
FALSEnever evaluated
||
0
614 !(asn1_time = TS_RESP_set_genTime_with_precision(
!(asn1_time = ...ision_digits))Description
TRUEnever evaluated
FALSEnever evaluated
0
615 ((void *)0)
!(asn1_time = ...ision_digits))Description
TRUEnever evaluated
FALSEnever evaluated
0
616 , sec, usec,
!(asn1_time = ...ision_digits))Description
TRUEnever evaluated
FALSEnever evaluated
0
617 ctx->clock_precision_digits))
!(asn1_time = ...ision_digits))Description
TRUEnever evaluated
FALSEnever evaluated
||
0
618 !TS_TST_INFO_set_time(tst_info, asn1_time)
!TS_TST_INFO_s...fo, asn1_time)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
619 goto
never executed: goto end;
end;
never executed: goto end;
0
620-
621-
622 if ((ctx->seconds
ctx->secondsDescription
TRUEnever evaluated
FALSEnever evaluated
|| ctx->millis
ctx->millisDescription
TRUEnever evaluated
FALSEnever evaluated
|| ctx->micros
ctx->microsDescription
TRUEnever evaluated
FALSEnever evaluated
) &&
0
623 !(accuracy = TS_ACCURACY_new())
!(accuracy = T...CCURACY_new())Description
TRUEnever evaluated
FALSEnever evaluated
)
0
624 goto
never executed: goto end;
end;
never executed: goto end;
0
625-
626 if (ctx->seconds
ctx->secondsDescription
TRUEnever evaluated
FALSEnever evaluated
&& !TS_ACCURACY_set_seconds(accuracy, ctx->seconds)
!TS_ACCURACY_s... ctx->seconds)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
627 goto
never executed: goto end;
end;
never executed: goto end;
0
628 if (ctx->millis
ctx->millisDescription
TRUEnever evaluated
FALSEnever evaluated
&& !TS_ACCURACY_set_millis(accuracy, ctx->millis)
!TS_ACCURACY_s..., ctx->millis)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
629 goto
never executed: goto end;
end;
never executed: goto end;
0
630 if (ctx->micros
ctx->microsDescription
TRUEnever evaluated
FALSEnever evaluated
&& !TS_ACCURACY_set_micros(accuracy, ctx->micros)
!TS_ACCURACY_s..., ctx->micros)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
631 goto
never executed: goto end;
end;
never executed: goto end;
0
632 if (accuracy
accuracyDescription
TRUEnever evaluated
FALSEnever evaluated
&& !TS_TST_INFO_set_accuracy(tst_info, accuracy)
!TS_TST_INFO_s...nfo, accuracy)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
633 goto
never executed: goto end;
end;
never executed: goto end;
0
634-
635-
636 if ((
(ctx->flags & 0x02)Description
TRUEnever evaluated
FALSEnever evaluated
ctx->flags & 0x02)
(ctx->flags & 0x02)Description
TRUEnever evaluated
FALSEnever evaluated
&&
0
637 !TS_TST_INFO_set_ordering(tst_info, 1)
!TS_TST_INFO_s...g(tst_info, 1)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
638 goto
never executed: goto end;
end;
never executed: goto end;
0
639-
640-
641 if ((
(nonce = TS_RE...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
nonce = TS_REQ_get_nonce(ctx->request)) !=
(nonce = TS_RE...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
642 ((void *)0)
(nonce = TS_RE...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
643 &&-
644 !TS_TST_INFO_set_nonce(tst_info, nonce)
!TS_TST_INFO_s...t_info, nonce)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
645 goto
never executed: goto end;
end;
never executed: goto end;
0
646-
647-
648 if (ctx->flags & 0x01
ctx->flags & 0x01Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
649 if (!(tsa_name = GENERAL_NAME_new())
!(tsa_name = G...AL_NAME_new())Description
TRUEnever evaluated
FALSEnever evaluated
)
0
650 goto
never executed: goto end;
end;
never executed: goto end;
0
651 tsa_name->type = 4;-
652 tsa_name->d.dirn =-
653 X509_NAME_dup(ctx->signer_cert->cert_info->subject);-
654 if (!tsa_name->d.dirn
!tsa_name->d.dirnDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
655 goto
never executed: goto end;
end;
never executed: goto end;
0
656 if (!TS_TST_INFO_set_tsa(tst_info, tsa_name)
!TS_TST_INFO_s...nfo, tsa_name)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
657 goto
never executed: goto end;
end;
never executed: goto end;
0
658 }
never executed: end of block
0
659-
660 result = 1;-
661-
662end:
code before this statement never executed: end:
0
663 if (!result
!resultDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
664 TS_TST_INFO_free(tst_info);-
665 tst_info = -
666 ((void *)0)-
667 ;-
668 ERR_put_error(47,(0xfff),(123),__FILE__,667);-
669 TS_RESP_CTX_set_status_info_cond(ctx, 2,-
670 "Error during TSTInfo "-
671 "generation.");-
672 }
never executed: end of block
0
673 GENERAL_NAME_free(tsa_name);-
674 TS_ACCURACY_free(accuracy);-
675 ASN1_GENERALIZEDTIME_free(asn1_time);-
676 ASN1_INTEGER_free(serial);-
677-
678 return
never executed: return tst_info;
tst_info;
never executed: return tst_info;
0
679}-
680-
681-
682static int-
683TS_RESP_process_extensions(TS_RESP_CTX *ctx)-
684{-
685 struct stack_st_X509_EXTENSION *exts = TS_REQ_get_exts(ctx->request);-
686 int i;-
687 int ok = 1;-
688-
689 for (i = 0; ok
okDescription
TRUEnever evaluated
FALSEnever evaluated
&& i < sk_num(((_STACK*) (1 ? (exts) : (struct stack_st_X509_EXTENSION*)0)))
i < sk_num(((_...XTENSION*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
690 X509_EXTENSION *ext = ((X509_EXTENSION *)sk_value(((_STACK*) (1 ? (exts) : (struct stack_st_X509_EXTENSION*)0)), (i)));-
691-
692-
693-
694-
695-
696-
697-
698 ok = (*ctx->extension_cb)(ctx, ext, -
699 ((void *)0)-
700 );-
701 }
never executed: end of block
0
702-
703 return
never executed: return ok;
ok;
never executed: return ok;
0
704}-
705-
706-
707static int-
708TS_RESP_sign(TS_RESP_CTX *ctx)-
709{-
710 int ret = 0;-
711 PKCS7 *p7 = -
712 ((void *)0)-
713 ;-
714 PKCS7_SIGNER_INFO *si;-
715 struct stack_st_X509 *certs;-
716 ESS_SIGNING_CERT *sc = -
717 ((void *)0)-
718 ;-
719 ASN1_OBJECT *oid;-
720 BIO *p7bio = -
721 ((void *)0)-
722 ;-
723 int i;-
724-
725-
726 if (!X509_check_private_key(ctx->signer_cert, ctx->signer_key)
!X509_check_pr...x->signer_key)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
727 ERR_put_error(47,(0xfff),(120),__FILE__,718);-
728 goto
never executed: goto err;
err;
never executed: goto err;
0
729 }-
730-
731-
732 if (!(p7 = PKCS7_new())
!(p7 = PKCS7_new())Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
733 ERR_put_error(47,(0xfff),((1|64)),__FILE__,724);-
734 goto
never executed: goto err;
err;
never executed: goto err;
0
735 }-
736 if (!PKCS7_set_type(p7, 22)
!PKCS7_set_type(p7, 22)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
737 goto
never executed: goto err;
err;
never executed: goto err;
0
738-
739-
740 if (!ASN1_INTEGER_set(p7->d.sign->version, 3)
!ASN1_INTEGER_...n->version, 3)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
741 goto
never executed: goto err;
err;
never executed: goto err;
0
742-
743-
744 if (TS_REQ_get_cert_req(ctx->request)
TS_REQ_get_cer...(ctx->request)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
745 PKCS7_add_certificate(p7, ctx->signer_cert);-
746 if (ctx->certs
ctx->certsDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
747 for (i = 0; i < sk_num(((_STACK*) (1 ? (ctx->certs) : (struct stack_st_X509*)0)))
i < sk_num(((_..._st_X509*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
748 X509 *cert = ((X509 *)sk_value(((_STACK*) (1 ? (ctx->certs) : (struct stack_st_X509*)0)), (i)));-
749 PKCS7_add_certificate(p7, cert);-
750 }
never executed: end of block
0
751 }
never executed: end of block
0
752 }
never executed: end of block
0
753-
754-
755 if (!(si = PKCS7_add_signature(p7, ctx->signer_cert,
!(si = PKCS7_a..., EVP_sha1()))Description
TRUEnever evaluated
FALSEnever evaluated
0
756 ctx->signer_key, EVP_sha1()))
!(si = PKCS7_a..., EVP_sha1()))Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
757 ERR_put_error(47,(0xfff),(118),__FILE__,748);-
758 goto
never executed: goto err;
err;
never executed: goto err;
0
759 }-
760-
761-
762 oid = OBJ_nid2obj(207);-
763 if (!PKCS7_add_signed_attribute(si, 50,
!PKCS7_add_sig...i, 50, 6, oid)Description
TRUEnever evaluated
FALSEnever evaluated
0
764 6, oid)
!PKCS7_add_sig...i, 50, 6, oid)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
765 ERR_put_error(47,(0xfff),(119),__FILE__,756);-
766 goto
never executed: goto err;
err;
never executed: goto err;
0
767 }-
768-
769-
770-
771 certs = ctx->flags & 0x04
ctx->flags & 0x04Description
TRUEnever evaluated
FALSEnever evaluated
? ctx->certs :
0
772 ((void *)0)-
773 ;-
774 if (!(sc = ESS_SIGNING_CERT_new_init(ctx->signer_cert, certs))
!(sc = ESS_SIG..._cert, certs))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
775 goto
never executed: goto err;
err;
never executed: goto err;
0
776-
777-
778 if (!ESS_add_signing_cert(si, sc)
!ESS_add_signing_cert(si, sc)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
779 ERR_put_error(47,(0xfff),(116),__FILE__,768);-
780 goto
never executed: goto err;
err;
never executed: goto err;
0
781 }-
782-
783-
784 if (!TS_TST_INFO_content_new(p7)
!TS_TST_INFO_content_new(p7)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
785 goto
never executed: goto err;
err;
never executed: goto err;
0
786-
787-
788 if (!(p7bio = PKCS7_dataInit(p7,
!(p7bio = PKCS...((void *)0) ))Description
TRUEnever evaluated
FALSEnever evaluated
0
789 ((void *)0)
!(p7bio = PKCS...((void *)0) ))Description
TRUEnever evaluated
FALSEnever evaluated
0
790 ))
!(p7bio = PKCS...((void *)0) ))Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
791 ERR_put_error(47,(0xfff),((1|64)),__FILE__,778);-
792 goto
never executed: goto err;
err;
never executed: goto err;
0
793 }-
794-
795-
796 if (!i2d_TS_TST_INFO_bio(p7bio, ctx->tst_info)
!i2d_TS_TST_IN...ctx->tst_info)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
797 ERR_put_error(47,(0xfff),(124),__FILE__,784);-
798 goto
never executed: goto err;
err;
never executed: goto err;
0
799 }-
800-
801-
802 if (!PKCS7_dataFinal(p7, p7bio)
!PKCS7_dataFinal(p7, p7bio)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
803 ERR_put_error(47,(0xfff),(124),__FILE__,790);-
804 goto
never executed: goto err;
err;
never executed: goto err;
0
805 }-
806-
807-
808 TS_RESP_set_tst_info(ctx->response, p7, ctx->tst_info);-
809 p7 = -
810 ((void *)0)-
811 ;-
812 ctx->tst_info = -
813 ((void *)0)-
814 ;-
815-
816 ret = 1;-
817-
818err:
code before this statement never executed: err:
0
819 if (!ret
!retDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
820 TS_RESP_CTX_set_status_info_cond(ctx, 2,
never executed: TS_RESP_CTX_set_status_info_cond(ctx, 2, "Error during signature " "generation.");
0
821 "Error during signature "
never executed: TS_RESP_CTX_set_status_info_cond(ctx, 2, "Error during signature " "generation.");
0
822 "generation.");
never executed: TS_RESP_CTX_set_status_info_cond(ctx, 2, "Error during signature " "generation.");
0
823 BIO_free_all(p7bio);-
824 ESS_SIGNING_CERT_free(sc);-
825 PKCS7_free(p7);-
826 return
never executed: return ret;
ret;
never executed: return ret;
0
827}-
828-
829static ESS_SIGNING_CERT *-
830ESS_SIGNING_CERT_new_init(X509 *signcert, struct stack_st_X509 *certs)-
831{-
832 ESS_CERT_ID *cid;-
833 ESS_SIGNING_CERT *sc = -
834 ((void *)0)-
835 ;-
836 int i;-
837-
838-
839 if (!(sc = ESS_SIGNING_CERT_new())
!(sc = ESS_SIGNING_CERT_new())Description
TRUEnever evaluated
FALSEnever evaluated
)
0
840 goto
never executed: goto err;
err;
never executed: goto err;
0
841 if (!sc->cert_ids
!sc->cert_idsDescription
TRUEnever evaluated
FALSEnever evaluated
&& !(sc->cert_ids = ((struct stack_st_ESS_CERT_ID *)sk_new_null()))
!(sc->cert_ids...k_new_null()))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
842 goto
never executed: goto err;
err;
never executed: goto err;
0
843-
844-
845 if (!(cid = ESS_CERT_ID_new_init(signcert, 0))
!(cid = ESS_CE...(signcert, 0))Description
TRUEnever evaluated
FALSEnever evaluated
||
0
846 !sk_push(((_STACK*) (1 ? (sc->cert_ids) : (struct stack_st_ESS_CERT_ID*)0)), ((void*) (1 ? (cid) : (ESS_CERT_ID*)0)))
!sk_push(((_ST..._CERT_ID*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
847 goto
never executed: goto err;
err;
never executed: goto err;
0
848-
849 for (i = 0; i < sk_num(((_STACK*) (1 ? (certs) : (struct stack_st_X509*)0)))
i < sk_num(((_..._st_X509*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
850 X509 *cert = ((X509 *)sk_value(((_STACK*) (1 ? (certs) : (struct stack_st_X509*)0)), (i)));-
851 if (!(cid = ESS_CERT_ID_new_init(cert, 1))
!(cid = ESS_CE...init(cert, 1))Description
TRUEnever evaluated
FALSEnever evaluated
||
0
852 !sk_push(((_STACK*) (1 ? (sc->cert_ids) : (struct stack_st_ESS_CERT_ID*)0)), ((void*) (1 ? (cid) : (ESS_CERT_ID*)0)))
!sk_push(((_ST..._CERT_ID*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
853 goto
never executed: goto err;
err;
never executed: goto err;
0
854 }
never executed: end of block
0
855-
856 return
never executed: return sc;
sc;
never executed: return sc;
0
857-
858err:-
859 ESS_SIGNING_CERT_free(sc);-
860 ERR_put_error(47,(0xfff),((1|64)),__FILE__,841);-
861 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
862 ((void *)0)
never executed: return ((void *)0) ;
0
863 ;
never executed: return ((void *)0) ;
0
864}-
865-
866static ESS_CERT_ID *-
867ESS_CERT_ID_new_init(X509 *cert, int issuer_needed)-
868{-
869 ESS_CERT_ID *cid = -
870 ((void *)0)-
871 ;-
872 GENERAL_NAME *name = -
873 ((void *)0)-
874 ;-
875-
876-
877 X509_check_purpose(cert, -1, 0);-
878-
879 if (!(cid = ESS_CERT_ID_new())
!(cid = ESS_CERT_ID_new())Description
TRUEnever evaluated
FALSEnever evaluated
)
0
880 goto
never executed: goto err;
err;
never executed: goto err;
0
881 if (!ASN1_OCTET_STRING_set(cid->hash, cert->sha1_hash,
!ASN1_OCTET_ST...t->sha1_hash))Description
TRUEnever evaluated
FALSEnever evaluated
0
882 sizeof(cert->sha1_hash))
!ASN1_OCTET_ST...t->sha1_hash))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
883 goto
never executed: goto err;
err;
never executed: goto err;
0
884-
885-
886 if (issuer_needed
issuer_neededDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
887-
888 if (!cid->issuer_serial
!cid->issuer_serialDescription
TRUEnever evaluated
FALSEnever evaluated
&&
0
889 !(cid->issuer_serial = ESS_ISSUER_SERIAL_new())
!(cid->issuer_..._SERIAL_new())Description
TRUEnever evaluated
FALSEnever evaluated
)
0
890 goto
never executed: goto err;
err;
never executed: goto err;
0
891-
892 if (!(name = GENERAL_NAME_new())
!(name = GENERAL_NAME_new())Description
TRUEnever evaluated
FALSEnever evaluated
)
0
893 goto
never executed: goto err;
err;
never executed: goto err;
0
894 name->type = 4;-
895 if (!(name->d.dirn = X509_NAME_dup(cert->cert_info->issuer))
!(name->d.dirn...info->issuer))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
896 goto
never executed: goto err;
err;
never executed: goto err;
0
897 if (!sk_push(((_STACK*) (1 ? (cid->issuer_serial->issuer) : (struct stack_st_GENERAL_NAME*)0)), ((void*) (1 ? (name) : (GENERAL_NAME*)0)))
!sk_push(((_ST...RAL_NAME*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
898 goto
never executed: goto err;
err;
never executed: goto err;
0
899 name = -
900 ((void *)0)-
901 ;-
902-
903 ASN1_INTEGER_free(cid->issuer_serial->serial);-
904 if (!(cid->issuer_serial->serial =
!(cid->issuer_...serialNumber))Description
TRUEnever evaluated
FALSEnever evaluated
0
905 ASN1_INTEGER_dup(cert->cert_info->serialNumber))
!(cid->issuer_...serialNumber))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
906 goto
never executed: goto err;
err;
never executed: goto err;
0
907 }
never executed: end of block
0
908-
909 return
never executed: return cid;
cid;
never executed: return cid;
0
910-
911err:-
912 GENERAL_NAME_free(name);-
913 ESS_CERT_ID_free(cid);-
914 ERR_put_error(47,(0xfff),((1|64)),__FILE__,887);-
915 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
916 ((void *)0)
never executed: return ((void *)0) ;
0
917 ;
never executed: return ((void *)0) ;
0
918}-
919-
920static int-
921TS_TST_INFO_content_new(PKCS7 *p7)-
922{-
923 PKCS7 *ret = -
924 ((void *)0)-
925 ;-
926 ASN1_OCTET_STRING *octet_string = -
927 ((void *)0)-
928 ;-
929-
930-
931 if (!(ret = PKCS7_new())
!(ret = PKCS7_new())Description
TRUEnever evaluated
FALSEnever evaluated
)
0
932 goto
never executed: goto err;
err;
never executed: goto err;
0
933 if (!(ret->d.other = ASN1_TYPE_new())
!(ret->d.other...N1_TYPE_new())Description
TRUEnever evaluated
FALSEnever evaluated
)
0
934 goto
never executed: goto err;
err;
never executed: goto err;
0
935 ret->type = OBJ_nid2obj(207);-
936 if (!(octet_string = ASN1_OCTET_STRING_new())
!(octet_string..._STRING_new())Description
TRUEnever evaluated
FALSEnever evaluated
)
0
937 goto
never executed: goto err;
err;
never executed: goto err;
0
938 ASN1_TYPE_set(ret->d.other, 4, octet_string);-
939 octet_string = -
940 ((void *)0)-
941 ;-
942-
943-
944 if (!PKCS7_set_content(p7, ret)
!PKCS7_set_content(p7, ret)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
945 goto
never executed: goto err;
err;
never executed: goto err;
0
946-
947 return
never executed: return 1;
1;
never executed: return 1;
0
948-
949err:-
950 ASN1_OCTET_STRING_free(octet_string);-
951 PKCS7_free(ret);-
952 return
never executed: return 0;
0;
never executed: return 0;
0
953}-
954-
955static int-
956ESS_add_signing_cert(PKCS7_SIGNER_INFO *si, ESS_SIGNING_CERT *sc)-
957{-
958 ASN1_STRING *seq = -
959 ((void *)0)-
960 ;-
961 unsigned char *p, *pp = -
962 ((void *)0)-
963 ;-
964 int len;-
965-
966 len = i2d_ESS_SIGNING_CERT(sc, -
967 ((void *)0)-
968 );-
969 if (!(pp = malloc(len))
!(pp = malloc(len))Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
970 ERR_put_error(47,(0xfff),((1|64)),__FILE__,929);-
971 goto
never executed: goto err;
err;
never executed: goto err;
0
972 }-
973 p = pp;-
974 i2d_ESS_SIGNING_CERT(sc, &p);-
975 if (!(seq = ASN1_STRING_new())
!(seq = ASN1_STRING_new())Description
TRUEnever evaluated
FALSEnever evaluated
|| !ASN1_STRING_set(seq, pp, len)
!ASN1_STRING_set(seq, pp, len)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
976 ERR_put_error(47,(0xfff),((1|64)),__FILE__,935);-
977 goto
never executed: goto err;
err;
never executed: goto err;
0
978 }-
979 free(pp);-
980 pp = -
981 ((void *)0)-
982 ;-
983 return
never executed: return PKCS7_add_signed_attribute(si, 223, 16, seq);
PKCS7_add_signed_attribute(si,
never executed: return PKCS7_add_signed_attribute(si, 223, 16, seq);
0
984 223, 16, seq);
never executed: return PKCS7_add_signed_attribute(si, 223, 16, seq);
0
985-
986err:-
987 ASN1_STRING_free(seq);-
988 free(pp);-
989-
990 return
never executed: return 0;
0;
never executed: return 0;
0
991}-
992-
993-
994static ASN1_GENERALIZEDTIME *-
995TS_RESP_set_genTime_with_precision(ASN1_GENERALIZEDTIME *asn1_time,-
996 time_t sec, long usec, unsigned precision)-
997{-
998 struct tm *tm = -
999 ((void *)0)-
1000 ;-
1001 char genTime_str[17 + 6];-
1002 char usecstr[6 + 2];-
1003 char *p;-
1004 int rv;-
1005-
1006 if (precision > 6
precision > 6Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1007 goto
never executed: goto err;
err;
never executed: goto err;
0
1008-
1009 if (!(tm = gmtime(&sec))
!(tm = gmtime(&sec))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1010 goto
never executed: goto err;
err;
never executed: goto err;
0
1011 if (precision > 0
precision > 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1012 (void) snprintf(usecstr, sizeof(usecstr), ".%06ld", usec);-
1013-
1014 usecstr[precision + 1] = '\0';-
1015 p = usecstr + strlen(usecstr) - 1;-
1016 while (p > usecstr
p > usecstrDescription
TRUEnever evaluated
FALSEnever evaluated
&& *
*p == '0'Description
TRUEnever evaluated
FALSEnever evaluated
p == '0'
*p == '0'Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1017 *
never executed: *p-- = '\0';
p-- = '\0';
never executed: *p-- = '\0';
0
1018-
1019 if (p == usecstr
p == usecstrDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1020 *
never executed: *p = '\0';
p = '\0';
never executed: *p = '\0';
0
1021-
1022 }
never executed: end of block
else {
0
1023-
1024 usecstr[0] = '\0';-
1025 }
never executed: end of block
0
1026 rv = snprintf(genTime_str, sizeof(genTime_str),-
1027 "%04d%02d%02d%02d%02d%02d%sZ",-
1028 tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,-
1029 tm->tm_hour, tm->tm_min, tm->tm_sec, usecstr);-
1030 if (rv == -1
rv == -1Description
TRUEnever evaluated
FALSEnever evaluated
|| rv >= sizeof(genTime_str)
rv >= sizeof(genTime_str)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1031 goto
never executed: goto err;
err;
never executed: goto err;
0
1032-
1033-
1034 if (!asn1_time
!asn1_timeDescription
TRUEnever evaluated
FALSEnever evaluated
&& !(asn1_time = ASN1_GENERALIZEDTIME_new())
!(asn1_time = ...ZEDTIME_new())Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1035 goto
never executed: goto err;
err;
never executed: goto err;
0
1036 if (!ASN1_GENERALIZEDTIME_set_string(asn1_time, genTime_str)
!ASN1_GENERALI..., genTime_str)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1037 ASN1_GENERALIZEDTIME_free(asn1_time);-
1038 goto
never executed: goto err;
err;
never executed: goto err;
0
1039 }-
1040-
1041 return
never executed: return asn1_time;
asn1_time;
never executed: return asn1_time;
0
1042-
1043err:-
1044 ERR_put_error(47,(0xfff),(115),__FILE__,1018);-
1045 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
1046 ((void *)0)
never executed: return ((void *)0) ;
0
1047 ;
never executed: return ((void *)0) ;
0
1048}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2