OpenCoverage

ts.h

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssl/src/include/openssl/ts.h
Source codeSwitch to Preprocessed file
LineSourceCount
1/*-
2 * Copyright 2006-2018 The OpenSSL Project Authors. All Rights Reserved.-
3 *-
4 * Licensed under the OpenSSL license (the "License"). You may not use-
5 * this file except in compliance with the License. You can obtain a copy-
6 * in the file LICENSE in the source distribution or at-
7 * https://www.openssl.org/source/license.html-
8 */-
9-
10#ifndef HEADER_TS_H-
11# define HEADER_TS_H-
12-
13# include <openssl/opensslconf.h>-
14-
15# ifndef OPENSSL_NO_TS-
16# include <openssl/symhacks.h>-
17# include <openssl/buffer.h>-
18# include <openssl/evp.h>-
19# include <openssl/bio.h>-
20# include <openssl/asn1.h>-
21# include <openssl/safestack.h>-
22# include <openssl/rsa.h>-
23# include <openssl/dsa.h>-
24# include <openssl/dh.h>-
25# include <openssl/tserr.h>-
26# ifdef __cplusplus-
27extern "C" {-
28# endif-
29-
30# include <openssl/x509.h>-
31# include <openssl/x509v3.h>-
32-
33typedef struct TS_msg_imprint_st TS_MSG_IMPRINT;-
34typedef struct TS_req_st TS_REQ;-
35typedef struct TS_accuracy_st TS_ACCURACY;-
36typedef struct TS_tst_info_st TS_TST_INFO;-
37-
38/* Possible values for status. */-
39# define TS_STATUS_GRANTED 0-
40# define TS_STATUS_GRANTED_WITH_MODS 1-
41# define TS_STATUS_REJECTION 2-
42# define TS_STATUS_WAITING 3-
43# define TS_STATUS_REVOCATION_WARNING 4-
44# define TS_STATUS_REVOCATION_NOTIFICATION 5-
45-
46/* Possible values for failure_info. */-
47# define TS_INFO_BAD_ALG 0-
48# define TS_INFO_BAD_REQUEST 2-
49# define TS_INFO_BAD_DATA_FORMAT 5-
50# define TS_INFO_TIME_NOT_AVAILABLE 14-
51# define TS_INFO_UNACCEPTED_POLICY 15-
52# define TS_INFO_UNACCEPTED_EXTENSION 16-
53# define TS_INFO_ADD_INFO_NOT_AVAILABLE 17-
54# define TS_INFO_SYSTEM_FAILURE 25-
55-
56-
57typedef struct TS_status_info_st TS_STATUS_INFO;-
58typedef struct ESS_issuer_serial ESS_ISSUER_SERIAL;-
59typedef struct ESS_cert_id ESS_CERT_ID;-
60typedef struct ESS_signing_cert ESS_SIGNING_CERT;-
61-
62DEFINE_STACK_OF(ESS_CERT_ID)
never executed: end of block
never executed: end of block
never executed: end of block
never executed: end of block
never executed: return OPENSSL_sk_num((const OPENSSL_STACK *)sk);
never executed: return (ESS_CERT_ID *)OPENSSL_sk_value((const OPENSSL_STACK *)sk, idx);
never executed: return (struct stack_st_ESS_CERT_ID *)OPENSSL_sk_new((OPENSSL_sk_compfunc)compare);
never executed: return (struct stack_st_ESS_CERT_ID *)OPENSSL_sk_new_null();
never executed: return (struct stack_st_ESS_CERT_ID *)OPENSSL_sk_new_reserve((OPENSSL_sk_compfunc)compare, n);
never executed: return OPENSSL_sk_reserve((OPENSSL_STACK *)sk, n);
never executed: return (ESS_CERT_ID *)OPENSSL_sk_delete((OPENSSL_STACK *)sk, i);
never executed: return (ESS_CERT_ID *)OPENSSL_sk_delete_ptr((OPENSSL_STACK *)sk, (const void *)ptr);
never executed: return OPENSSL_sk_push((OPENSSL_STACK *)sk, (const void *)ptr);
never executed: return OPENSSL_sk_unshift((OPENSSL_STACK *)sk, (const void *)ptr);
never executed: return (ESS_CERT_ID *)OPENSSL_sk_pop((OPENSSL_STACK *)sk);
never executed: return (ESS_CERT_ID *)OPENSSL_sk_shift((OPENSSL_STACK *)sk);
never executed: return OPENSSL_sk_insert((OPENSSL_STACK *)sk, (const void *)ptr, idx);
never executed: return (ESS_CERT_ID *)OPENSSL_sk_set((OPENSSL_STACK *)sk, idx, (const void *)ptr);
never executed: return OPENSSL_sk_find((OPENSSL_STACK *)sk, (const void *)ptr);
never executed: return OPENSSL_sk_find_ex((OPENSSL_STACK *)sk, (const void *)ptr);
never executed: return OPENSSL_sk_is_sorted((const OPENSSL_STACK *)sk);
never executed: return (struct stack_st_ESS_CERT_ID *)OPENSSL_sk_dup((const OPENSSL_STACK *)sk);
never executed: return (struct stack_st_ESS_CERT_ID *)OPENSSL_sk_deep_copy((const OPENSSL_STACK *)sk, (OPENSSL_sk_copyfunc)copyfunc, (OPENSSL_sk_freefunc)freefunc);
never executed: return (sk_ESS_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func((OPENSSL_STACK *)sk, (OPENSSL_sk_compfunc)compare);
0
63-
64typedef struct ESS_cert_id_v2_st ESS_CERT_ID_V2;-
65typedef struct ESS_signing_cert_v2_st ESS_SIGNING_CERT_V2;-
66-
67DEFINE_STACK_OF(ESS_CERT_ID_V2)
never executed: end of block
never executed: end of block
never executed: end of block
never executed: end of block
never executed: return OPENSSL_sk_num((const OPENSSL_STACK *)sk);
never executed: return (ESS_CERT_ID_V2 *)OPENSSL_sk_value((const OPENSSL_STACK *)sk, idx);
never executed: return (struct stack_st_ESS_CERT_ID_V2 *)OPENSSL_sk_new((OPENSSL_sk_compfunc)compare);
never executed: return (struct stack_st_ESS_CERT_ID_V2 *)OPENSSL_sk_new_null();
never executed: return (struct stack_st_ESS_CERT_ID_V2 *)OPENSSL_sk_new_reserve((OPENSSL_sk_compfunc)compare, n);
never executed: return OPENSSL_sk_reserve((OPENSSL_STACK *)sk, n);
never executed: return (ESS_CERT_ID_V2 *)OPENSSL_sk_delete((OPENSSL_STACK *)sk, i);
never executed: return (ESS_CERT_ID_V2 *)OPENSSL_sk_delete_ptr((OPENSSL_STACK *)sk, (const void *)ptr);
never executed: return OPENSSL_sk_push((OPENSSL_STACK *)sk, (const void *)ptr);
never executed: return OPENSSL_sk_unshift((OPENSSL_STACK *)sk, (const void *)ptr);
never executed: return (ESS_CERT_ID_V2 *)OPENSSL_sk_pop((OPENSSL_STACK *)sk);
never executed: return (ESS_CERT_ID_V2 *)OPENSSL_sk_shift((OPENSSL_STACK *)sk);
never executed: return OPENSSL_sk_insert((OPENSSL_STACK *)sk, (const void *)ptr, idx);
never executed: return (ESS_CERT_ID_V2 *)OPENSSL_sk_set((OPENSSL_STACK *)sk, idx, (const void *)ptr);
never executed: return OPENSSL_sk_find((OPENSSL_STACK *)sk, (const void *)ptr);
never executed: return OPENSSL_sk_find_ex((OPENSSL_STACK *)sk, (const void *)ptr);
never executed: return OPENSSL_sk_is_sorted((const OPENSSL_STACK *)sk);
never executed: return (struct stack_st_ESS_CERT_ID_V2 *)OPENSSL_sk_dup((const OPENSSL_STACK *)sk);
never executed: return (struct stack_st_ESS_CERT_ID_V2 *)OPENSSL_sk_deep_copy((const OPENSSL_STACK *)sk, (OPENSSL_sk_copyfunc)copyfunc, (OPENSSL_sk_freefunc)freefunc);
never executed: return (sk_ESS_CERT_ID_V2_compfunc)OPENSSL_sk_set_cmp_func((OPENSSL_STACK *)sk, (OPENSSL_sk_compfunc)compare);
0
68-
69typedef struct TS_resp_st TS_RESP;-
70-
71TS_REQ *TS_REQ_new(void);-
72void TS_REQ_free(TS_REQ *a);-
73int i2d_TS_REQ(const TS_REQ *a, unsigned char **pp);-
74TS_REQ *d2i_TS_REQ(TS_REQ **a, const unsigned char **pp, long length);-
75-
76TS_REQ *TS_REQ_dup(TS_REQ *a);-
77-
78#ifndef OPENSSL_NO_STDIO-
79TS_REQ *d2i_TS_REQ_fp(FILE *fp, TS_REQ **a);-
80int i2d_TS_REQ_fp(FILE *fp, TS_REQ *a);-
81#endif-
82TS_REQ *d2i_TS_REQ_bio(BIO *fp, TS_REQ **a);-
83int i2d_TS_REQ_bio(BIO *fp, TS_REQ *a);-
84-
85TS_MSG_IMPRINT *TS_MSG_IMPRINT_new(void);-
86void TS_MSG_IMPRINT_free(TS_MSG_IMPRINT *a);-
87int i2d_TS_MSG_IMPRINT(const TS_MSG_IMPRINT *a, unsigned char **pp);-
88TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT(TS_MSG_IMPRINT **a,-
89 const unsigned char **pp, long length);-
90-
91TS_MSG_IMPRINT *TS_MSG_IMPRINT_dup(TS_MSG_IMPRINT *a);-
92-
93#ifndef OPENSSL_NO_STDIO-
94TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_fp(FILE *fp, TS_MSG_IMPRINT **a);-
95int i2d_TS_MSG_IMPRINT_fp(FILE *fp, TS_MSG_IMPRINT *a);-
96#endif-
97TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_bio(BIO *bio, TS_MSG_IMPRINT **a);-
98int i2d_TS_MSG_IMPRINT_bio(BIO *bio, TS_MSG_IMPRINT *a);-
99-
100TS_RESP *TS_RESP_new(void);-
101void TS_RESP_free(TS_RESP *a);-
102int i2d_TS_RESP(const TS_RESP *a, unsigned char **pp);-
103TS_RESP *d2i_TS_RESP(TS_RESP **a, const unsigned char **pp, long length);-
104TS_TST_INFO *PKCS7_to_TS_TST_INFO(PKCS7 *token);-
105TS_RESP *TS_RESP_dup(TS_RESP *a);-
106-
107#ifndef OPENSSL_NO_STDIO-
108TS_RESP *d2i_TS_RESP_fp(FILE *fp, TS_RESP **a);-
109int i2d_TS_RESP_fp(FILE *fp, TS_RESP *a);-
110#endif-
111TS_RESP *d2i_TS_RESP_bio(BIO *bio, TS_RESP **a);-
112int i2d_TS_RESP_bio(BIO *bio, TS_RESP *a);-
113-
114TS_STATUS_INFO *TS_STATUS_INFO_new(void);-
115void TS_STATUS_INFO_free(TS_STATUS_INFO *a);-
116int i2d_TS_STATUS_INFO(const TS_STATUS_INFO *a, unsigned char **pp);-
117TS_STATUS_INFO *d2i_TS_STATUS_INFO(TS_STATUS_INFO **a,-
118 const unsigned char **pp, long length);-
119TS_STATUS_INFO *TS_STATUS_INFO_dup(TS_STATUS_INFO *a);-
120-
121TS_TST_INFO *TS_TST_INFO_new(void);-
122void TS_TST_INFO_free(TS_TST_INFO *a);-
123int i2d_TS_TST_INFO(const TS_TST_INFO *a, unsigned char **pp);-
124TS_TST_INFO *d2i_TS_TST_INFO(TS_TST_INFO **a, const unsigned char **pp,-
125 long length);-
126TS_TST_INFO *TS_TST_INFO_dup(TS_TST_INFO *a);-
127-
128#ifndef OPENSSL_NO_STDIO-
129TS_TST_INFO *d2i_TS_TST_INFO_fp(FILE *fp, TS_TST_INFO **a);-
130int i2d_TS_TST_INFO_fp(FILE *fp, TS_TST_INFO *a);-
131#endif-
132TS_TST_INFO *d2i_TS_TST_INFO_bio(BIO *bio, TS_TST_INFO **a);-
133int i2d_TS_TST_INFO_bio(BIO *bio, TS_TST_INFO *a);-
134-
135TS_ACCURACY *TS_ACCURACY_new(void);-
136void TS_ACCURACY_free(TS_ACCURACY *a);-
137int i2d_TS_ACCURACY(const TS_ACCURACY *a, unsigned char **pp);-
138TS_ACCURACY *d2i_TS_ACCURACY(TS_ACCURACY **a, const unsigned char **pp,-
139 long length);-
140TS_ACCURACY *TS_ACCURACY_dup(TS_ACCURACY *a);-
141-
142ESS_ISSUER_SERIAL *ESS_ISSUER_SERIAL_new(void);-
143void ESS_ISSUER_SERIAL_free(ESS_ISSUER_SERIAL *a);-
144int i2d_ESS_ISSUER_SERIAL(const ESS_ISSUER_SERIAL *a, unsigned char **pp);-
145ESS_ISSUER_SERIAL *d2i_ESS_ISSUER_SERIAL(ESS_ISSUER_SERIAL **a,-
146 const unsigned char **pp,-
147 long length);-
148ESS_ISSUER_SERIAL *ESS_ISSUER_SERIAL_dup(ESS_ISSUER_SERIAL *a);-
149-
150ESS_CERT_ID *ESS_CERT_ID_new(void);-
151void ESS_CERT_ID_free(ESS_CERT_ID *a);-
152int i2d_ESS_CERT_ID(const ESS_CERT_ID *a, unsigned char **pp);-
153ESS_CERT_ID *d2i_ESS_CERT_ID(ESS_CERT_ID **a, const unsigned char **pp,-
154 long length);-
155ESS_CERT_ID *ESS_CERT_ID_dup(ESS_CERT_ID *a);-
156-
157ESS_SIGNING_CERT *ESS_SIGNING_CERT_new(void);-
158void ESS_SIGNING_CERT_free(ESS_SIGNING_CERT *a);-
159int i2d_ESS_SIGNING_CERT(const ESS_SIGNING_CERT *a, unsigned char **pp);-
160ESS_SIGNING_CERT *d2i_ESS_SIGNING_CERT(ESS_SIGNING_CERT **a,-
161 const unsigned char **pp, long length);-
162ESS_SIGNING_CERT *ESS_SIGNING_CERT_dup(ESS_SIGNING_CERT *a);-
163-
164ESS_CERT_ID_V2 *ESS_CERT_ID_V2_new(void);-
165void ESS_CERT_ID_V2_free(ESS_CERT_ID_V2 *a);-
166int i2d_ESS_CERT_ID_V2(const ESS_CERT_ID_V2 *a, unsigned char **pp);-
167ESS_CERT_ID_V2 *d2i_ESS_CERT_ID_V2(ESS_CERT_ID_V2 **a,-
168 const unsigned char **pp, long length);-
169ESS_CERT_ID_V2 *ESS_CERT_ID_V2_dup(ESS_CERT_ID_V2 *a);-
170-
171ESS_SIGNING_CERT_V2 *ESS_SIGNING_CERT_V2_new(void);-
172void ESS_SIGNING_CERT_V2_free(ESS_SIGNING_CERT_V2 *a);-
173int i2d_ESS_SIGNING_CERT_V2(const ESS_SIGNING_CERT_V2 *a, unsigned char **pp);-
174ESS_SIGNING_CERT_V2 *d2i_ESS_SIGNING_CERT_V2(ESS_SIGNING_CERT_V2 **a,-
175 const unsigned char **pp,-
176 long length);-
177ESS_SIGNING_CERT_V2 *ESS_SIGNING_CERT_V2_dup(ESS_SIGNING_CERT_V2 *a);-
178-
179int TS_REQ_set_version(TS_REQ *a, long version);-
180long TS_REQ_get_version(const TS_REQ *a);-
181-
182int TS_STATUS_INFO_set_status(TS_STATUS_INFO *a, int i);-
183const ASN1_INTEGER *TS_STATUS_INFO_get0_status(const TS_STATUS_INFO *a);-
184-
185const STACK_OF(ASN1_UTF8STRING) *-
186TS_STATUS_INFO_get0_text(const TS_STATUS_INFO *a);-
187-
188const ASN1_BIT_STRING *-
189TS_STATUS_INFO_get0_failure_info(const TS_STATUS_INFO *a);-
190-
191int TS_REQ_set_msg_imprint(TS_REQ *a, TS_MSG_IMPRINT *msg_imprint);-
192TS_MSG_IMPRINT *TS_REQ_get_msg_imprint(TS_REQ *a);-
193-
194int TS_MSG_IMPRINT_set_algo(TS_MSG_IMPRINT *a, X509_ALGOR *alg);-
195X509_ALGOR *TS_MSG_IMPRINT_get_algo(TS_MSG_IMPRINT *a);-
196-
197int TS_MSG_IMPRINT_set_msg(TS_MSG_IMPRINT *a, unsigned char *d, int len);-
198ASN1_OCTET_STRING *TS_MSG_IMPRINT_get_msg(TS_MSG_IMPRINT *a);-
199-
200int TS_REQ_set_policy_id(TS_REQ *a, const ASN1_OBJECT *policy);-
201ASN1_OBJECT *TS_REQ_get_policy_id(TS_REQ *a);-
202-
203int TS_REQ_set_nonce(TS_REQ *a, const ASN1_INTEGER *nonce);-
204const ASN1_INTEGER *TS_REQ_get_nonce(const TS_REQ *a);-
205-
206int TS_REQ_set_cert_req(TS_REQ *a, int cert_req);-
207int TS_REQ_get_cert_req(const TS_REQ *a);-
208-
209STACK_OF(X509_EXTENSION) *TS_REQ_get_exts(TS_REQ *a);-
210void TS_REQ_ext_free(TS_REQ *a);-
211int TS_REQ_get_ext_count(TS_REQ *a);-
212int TS_REQ_get_ext_by_NID(TS_REQ *a, int nid, int lastpos);-
213int TS_REQ_get_ext_by_OBJ(TS_REQ *a, const ASN1_OBJECT *obj, int lastpos);-
214int TS_REQ_get_ext_by_critical(TS_REQ *a, int crit, int lastpos);-
215X509_EXTENSION *TS_REQ_get_ext(TS_REQ *a, int loc);-
216X509_EXTENSION *TS_REQ_delete_ext(TS_REQ *a, int loc);-
217int TS_REQ_add_ext(TS_REQ *a, X509_EXTENSION *ex, int loc);-
218void *TS_REQ_get_ext_d2i(TS_REQ *a, int nid, int *crit, int *idx);-
219-
220/* Function declarations for TS_REQ defined in ts/ts_req_print.c */-
221-
222int TS_REQ_print_bio(BIO *bio, TS_REQ *a);-
223-
224/* Function declarations for TS_RESP defined in ts/ts_resp_utils.c */-
225-
226int TS_RESP_set_status_info(TS_RESP *a, TS_STATUS_INFO *info);-
227TS_STATUS_INFO *TS_RESP_get_status_info(TS_RESP *a);-
228-
229/* Caller loses ownership of PKCS7 and TS_TST_INFO objects. */-
230void TS_RESP_set_tst_info(TS_RESP *a, PKCS7 *p7, TS_TST_INFO *tst_info);-
231PKCS7 *TS_RESP_get_token(TS_RESP *a);-
232TS_TST_INFO *TS_RESP_get_tst_info(TS_RESP *a);-
233-
234int TS_TST_INFO_set_version(TS_TST_INFO *a, long version);-
235long TS_TST_INFO_get_version(const TS_TST_INFO *a);-
236-
237int TS_TST_INFO_set_policy_id(TS_TST_INFO *a, ASN1_OBJECT *policy_id);-
238ASN1_OBJECT *TS_TST_INFO_get_policy_id(TS_TST_INFO *a);-
239-
240int TS_TST_INFO_set_msg_imprint(TS_TST_INFO *a, TS_MSG_IMPRINT *msg_imprint);-
241TS_MSG_IMPRINT *TS_TST_INFO_get_msg_imprint(TS_TST_INFO *a);-
242-
243int TS_TST_INFO_set_serial(TS_TST_INFO *a, const ASN1_INTEGER *serial);-
244const ASN1_INTEGER *TS_TST_INFO_get_serial(const TS_TST_INFO *a);-
245-
246int TS_TST_INFO_set_time(TS_TST_INFO *a, const ASN1_GENERALIZEDTIME *gtime);-
247const ASN1_GENERALIZEDTIME *TS_TST_INFO_get_time(const TS_TST_INFO *a);-
248-
249int TS_TST_INFO_set_accuracy(TS_TST_INFO *a, TS_ACCURACY *accuracy);-
250TS_ACCURACY *TS_TST_INFO_get_accuracy(TS_TST_INFO *a);-
251-
252int TS_ACCURACY_set_seconds(TS_ACCURACY *a, const ASN1_INTEGER *seconds);-
253const ASN1_INTEGER *TS_ACCURACY_get_seconds(const TS_ACCURACY *a);-
254-
255int TS_ACCURACY_set_millis(TS_ACCURACY *a, const ASN1_INTEGER *millis);-
256const ASN1_INTEGER *TS_ACCURACY_get_millis(const TS_ACCURACY *a);-
257-
258int TS_ACCURACY_set_micros(TS_ACCURACY *a, const ASN1_INTEGER *micros);-
259const ASN1_INTEGER *TS_ACCURACY_get_micros(const TS_ACCURACY *a);-
260-
261int TS_TST_INFO_set_ordering(TS_TST_INFO *a, int ordering);-
262int TS_TST_INFO_get_ordering(const TS_TST_INFO *a);-
263-
264int TS_TST_INFO_set_nonce(TS_TST_INFO *a, const ASN1_INTEGER *nonce);-
265const ASN1_INTEGER *TS_TST_INFO_get_nonce(const TS_TST_INFO *a);-
266-
267int TS_TST_INFO_set_tsa(TS_TST_INFO *a, GENERAL_NAME *tsa);-
268GENERAL_NAME *TS_TST_INFO_get_tsa(TS_TST_INFO *a);-
269-
270STACK_OF(X509_EXTENSION) *TS_TST_INFO_get_exts(TS_TST_INFO *a);-
271void TS_TST_INFO_ext_free(TS_TST_INFO *a);-
272int TS_TST_INFO_get_ext_count(TS_TST_INFO *a);-
273int TS_TST_INFO_get_ext_by_NID(TS_TST_INFO *a, int nid, int lastpos);-
274int TS_TST_INFO_get_ext_by_OBJ(TS_TST_INFO *a, const ASN1_OBJECT *obj,-
275 int lastpos);-
276int TS_TST_INFO_get_ext_by_critical(TS_TST_INFO *a, int crit, int lastpos);-
277X509_EXTENSION *TS_TST_INFO_get_ext(TS_TST_INFO *a, int loc);-
278X509_EXTENSION *TS_TST_INFO_delete_ext(TS_TST_INFO *a, int loc);-
279int TS_TST_INFO_add_ext(TS_TST_INFO *a, X509_EXTENSION *ex, int loc);-
280void *TS_TST_INFO_get_ext_d2i(TS_TST_INFO *a, int nid, int *crit, int *idx);-
281-
282/*-
283 * Declarations related to response generation, defined in ts/ts_resp_sign.c.-
284 */-
285-
286/* Optional flags for response generation. */-
287-
288/* Don't include the TSA name in response. */-
289# define TS_TSA_NAME 0x01-
290-
291/* Set ordering to true in response. */-
292# define TS_ORDERING 0x02-
293-
294/*-
295 * Include the signer certificate and the other specified certificates in-
296 * the ESS signing certificate attribute beside the PKCS7 signed data.-
297 * Only the signer certificates is included by default.-
298 */-
299# define TS_ESS_CERT_ID_CHAIN 0x04-
300-
301/* Forward declaration. */-
302struct TS_resp_ctx;-
303-
304/* This must return a unique number less than 160 bits long. */-
305typedef ASN1_INTEGER *(*TS_serial_cb) (struct TS_resp_ctx *, void *);-
306-
307/*-
308 * This must return the seconds and microseconds since Jan 1, 1970 in the sec-
309 * and usec variables allocated by the caller. Return non-zero for success-
310 * and zero for failure.-
311 */-
312typedef int (*TS_time_cb) (struct TS_resp_ctx *, void *, long *sec,-
313 long *usec);-
314-
315/*-
316 * This must process the given extension. It can modify the TS_TST_INFO-
317 * object of the context. Return values: !0 (processed), 0 (error, it must-
318 * set the status info/failure info of the response).-
319 */-
320typedef int (*TS_extension_cb) (struct TS_resp_ctx *, X509_EXTENSION *,-
321 void *);-
322-
323typedef struct TS_resp_ctx TS_RESP_CTX;-
324-
325DEFINE_STACK_OF_CONST(EVP_MD)
never executed: end of block
never executed: end of block
never executed: end of block
never executed: end of block
never executed: return OPENSSL_sk_num((const OPENSSL_STACK *)sk);
never executed: return (const EVP_MD *)OPENSSL_sk_value((const OPENSSL_STACK *)sk, idx);
never executed: return (struct stack_st_EVP_MD *)OPENSSL_sk_new((OPENSSL_sk_compfunc)compare);
never executed: return (struct stack_st_EVP_MD *)OPENSSL_sk_new_null();
never executed: return (struct stack_st_EVP_MD *)OPENSSL_sk_new_reserve((OPENSSL_sk_compfunc)compare, n);
never executed: return OPENSSL_sk_reserve((OPENSSL_STACK *)sk, n);
never executed: return (const EVP_MD *)OPENSSL_sk_delete((OPENSSL_STACK *)sk, i);
never executed: return (const EVP_MD *)OPENSSL_sk_delete_ptr((OPENSSL_STACK *)sk, (const void *)ptr);
never executed: return OPENSSL_sk_push((OPENSSL_STACK *)sk, (const void *)ptr);
never executed: return OPENSSL_sk_unshift((OPENSSL_STACK *)sk, (const void *)ptr);
never executed: return (const EVP_MD *)OPENSSL_sk_pop((OPENSSL_STACK *)sk);
never executed: return (const EVP_MD *)OPENSSL_sk_shift((OPENSSL_STACK *)sk);
never executed: return OPENSSL_sk_insert((OPENSSL_STACK *)sk, (const void *)ptr, idx);
never executed: return (const EVP_MD *)OPENSSL_sk_set((OPENSSL_STACK *)sk, idx, (const void *)ptr);
never executed: return OPENSSL_sk_find((OPENSSL_STACK *)sk, (const void *)ptr);
never executed: return OPENSSL_sk_find_ex((OPENSSL_STACK *)sk, (const void *)ptr);
never executed: return OPENSSL_sk_is_sorted((const OPENSSL_STACK *)sk);
never executed: return (struct stack_st_EVP_MD *)OPENSSL_sk_dup((const OPENSSL_STACK *)sk);
never executed: return (struct stack_st_EVP_MD *)OPENSSL_sk_deep_copy((const OPENSSL_STACK *)sk, (OPENSSL_sk_copyfunc)copyfunc, (OPENSSL_sk_freefunc)freefunc);
never executed: return (sk_EVP_MD_compfunc)OPENSSL_sk_set_cmp_func((OPENSSL_STACK *)sk, (OPENSSL_sk_compfunc)compare);
0
326-
327/* Creates a response context that can be used for generating responses. */-
328TS_RESP_CTX *TS_RESP_CTX_new(void);-
329void TS_RESP_CTX_free(TS_RESP_CTX *ctx);-
330-
331/* This parameter must be set. */-
332int TS_RESP_CTX_set_signer_cert(TS_RESP_CTX *ctx, X509 *signer);-
333-
334/* This parameter must be set. */-
335int TS_RESP_CTX_set_signer_key(TS_RESP_CTX *ctx, EVP_PKEY *key);-
336-
337int TS_RESP_CTX_set_signer_digest(TS_RESP_CTX *ctx,-
338 const EVP_MD *signer_digest);-
339int TS_RESP_CTX_set_ess_cert_id_digest(TS_RESP_CTX *ctx, const EVP_MD *md);-
340-
341/* This parameter must be set. */-
342int TS_RESP_CTX_set_def_policy(TS_RESP_CTX *ctx, const ASN1_OBJECT *def_policy);-
343-
344/* No additional certs are included in the response by default. */-
345int TS_RESP_CTX_set_certs(TS_RESP_CTX *ctx, STACK_OF(X509) *certs);-
346-
347/*-
348 * Adds a new acceptable policy, only the default policy is accepted by-
349 * default.-
350 */-
351int TS_RESP_CTX_add_policy(TS_RESP_CTX *ctx, const ASN1_OBJECT *policy);-
352-
353/*-
354 * Adds a new acceptable message digest. Note that no message digests are-
355 * accepted by default. The md argument is shared with the caller.-
356 */-
357int TS_RESP_CTX_add_md(TS_RESP_CTX *ctx, const EVP_MD *md);-
358-
359/* Accuracy is not included by default. */-
360int TS_RESP_CTX_set_accuracy(TS_RESP_CTX *ctx,-
361 int secs, int millis, int micros);-
362-
363/*-
364 * Clock precision digits, i.e. the number of decimal digits: '0' means sec,-
365 * '3' msec, '6' usec, and so on. Default is 0.-
366 */-
367int TS_RESP_CTX_set_clock_precision_digits(TS_RESP_CTX *ctx,-
368 unsigned clock_precision_digits);-
369/* At most we accept usec precision. */-
370# define TS_MAX_CLOCK_PRECISION_DIGITS 6-
371-
372/* Maximum status message length */-
373# define TS_MAX_STATUS_LENGTH (1024 * 1024)-
374-
375/* No flags are set by default. */-
376void TS_RESP_CTX_add_flags(TS_RESP_CTX *ctx, int flags);-
377-
378/* Default callback always returns a constant. */-
379void TS_RESP_CTX_set_serial_cb(TS_RESP_CTX *ctx, TS_serial_cb cb, void *data);-
380-
381/* Default callback uses the gettimeofday() and gmtime() system calls. */-
382void TS_RESP_CTX_set_time_cb(TS_RESP_CTX *ctx, TS_time_cb cb, void *data);-
383-
384/*-
385 * Default callback rejects all extensions. The extension callback is called-
386 * when the TS_TST_INFO object is already set up and not signed yet.-
387 */-
388/* FIXME: extension handling is not tested yet. */-
389void TS_RESP_CTX_set_extension_cb(TS_RESP_CTX *ctx,-
390 TS_extension_cb cb, void *data);-
391-
392/* The following methods can be used in the callbacks. */-
393int TS_RESP_CTX_set_status_info(TS_RESP_CTX *ctx,-
394 int status, const char *text);-
395-
396/* Sets the status info only if it is still TS_STATUS_GRANTED. */-
397int TS_RESP_CTX_set_status_info_cond(TS_RESP_CTX *ctx,-
398 int status, const char *text);-
399-
400int TS_RESP_CTX_add_failure_info(TS_RESP_CTX *ctx, int failure);-
401-
402/* The get methods below can be used in the extension callback. */-
403TS_REQ *TS_RESP_CTX_get_request(TS_RESP_CTX *ctx);-
404-
405TS_TST_INFO *TS_RESP_CTX_get_tst_info(TS_RESP_CTX *ctx);-
406-
407/*-
408 * Creates the signed TS_TST_INFO and puts it in TS_RESP.-
409 * In case of errors it sets the status info properly.-
410 * Returns NULL only in case of memory allocation/fatal error.-
411 */-
412TS_RESP *TS_RESP_create_response(TS_RESP_CTX *ctx, BIO *req_bio);-
413-
414/*-
415 * Declarations related to response verification,-
416 * they are defined in ts/ts_resp_verify.c.-
417 */-
418-
419int TS_RESP_verify_signature(PKCS7 *token, STACK_OF(X509) *certs,-
420 X509_STORE *store, X509 **signer_out);-
421-
422/* Context structure for the generic verify method. */-
423-
424/* Verify the signer's certificate and the signature of the response. */-
425# define TS_VFY_SIGNATURE (1u << 0)-
426/* Verify the version number of the response. */-
427# define TS_VFY_VERSION (1u << 1)-
428/* Verify if the policy supplied by the user matches the policy of the TSA. */-
429# define TS_VFY_POLICY (1u << 2)-
430/*-
431 * Verify the message imprint provided by the user. This flag should not be-
432 * specified with TS_VFY_DATA.-
433 */-
434# define TS_VFY_IMPRINT (1u << 3)-
435/*-
436 * Verify the message imprint computed by the verify method from the user-
437 * provided data and the MD algorithm of the response. This flag should not-
438 * be specified with TS_VFY_IMPRINT.-
439 */-
440# define TS_VFY_DATA (1u << 4)-
441/* Verify the nonce value. */-
442# define TS_VFY_NONCE (1u << 5)-
443/* Verify if the TSA name field matches the signer certificate. */-
444# define TS_VFY_SIGNER (1u << 6)-
445/* Verify if the TSA name field equals to the user provided name. */-
446# define TS_VFY_TSA_NAME (1u << 7)-
447-
448/* You can use the following convenience constants. */-
449# define TS_VFY_ALL_IMPRINT (TS_VFY_SIGNATURE \-
450 | TS_VFY_VERSION \-
451 | TS_VFY_POLICY \-
452 | TS_VFY_IMPRINT \-
453 | TS_VFY_NONCE \-
454 | TS_VFY_SIGNER \-
455 | TS_VFY_TSA_NAME)-
456# define TS_VFY_ALL_DATA (TS_VFY_SIGNATURE \-
457 | TS_VFY_VERSION \-
458 | TS_VFY_POLICY \-
459 | TS_VFY_DATA \-
460 | TS_VFY_NONCE \-
461 | TS_VFY_SIGNER \-
462 | TS_VFY_TSA_NAME)-
463-
464typedef struct TS_verify_ctx TS_VERIFY_CTX;-
465-
466int TS_RESP_verify_response(TS_VERIFY_CTX *ctx, TS_RESP *response);-
467int TS_RESP_verify_token(TS_VERIFY_CTX *ctx, PKCS7 *token);-
468-
469/*-
470 * Declarations related to response verification context,-
471 */-
472TS_VERIFY_CTX *TS_VERIFY_CTX_new(void);-
473void TS_VERIFY_CTX_init(TS_VERIFY_CTX *ctx);-
474void TS_VERIFY_CTX_free(TS_VERIFY_CTX *ctx);-
475void TS_VERIFY_CTX_cleanup(TS_VERIFY_CTX *ctx);-
476int TS_VERIFY_CTX_set_flags(TS_VERIFY_CTX *ctx, int f);-
477int TS_VERIFY_CTX_add_flags(TS_VERIFY_CTX *ctx, int f);-
478BIO *TS_VERIFY_CTX_set_data(TS_VERIFY_CTX *ctx, BIO *b);-
479unsigned char *TS_VERIFY_CTX_set_imprint(TS_VERIFY_CTX *ctx,-
480 unsigned char *hexstr, long len);-
481X509_STORE *TS_VERIFY_CTX_set_store(TS_VERIFY_CTX *ctx, X509_STORE *s);-
482STACK_OF(X509) *TS_VERIFY_CTS_set_certs(TS_VERIFY_CTX *ctx, STACK_OF(X509) *certs);-
483-
484/*--
485 * If ctx is NULL, it allocates and returns a new object, otherwise-
486 * it returns ctx. It initialises all the members as follows:-
487 * flags = TS_VFY_ALL_IMPRINT & ~(TS_VFY_TSA_NAME | TS_VFY_SIGNATURE)-
488 * certs = NULL-
489 * store = NULL-
490 * policy = policy from the request or NULL if absent (in this case-
491 * TS_VFY_POLICY is cleared from flags as well)-
492 * md_alg = MD algorithm from request-
493 * imprint, imprint_len = imprint from request-
494 * data = NULL-
495 * nonce, nonce_len = nonce from the request or NULL if absent (in this case-
496 * TS_VFY_NONCE is cleared from flags as well)-
497 * tsa_name = NULL-
498 * Important: after calling this method TS_VFY_SIGNATURE should be added!-
499 */-
500TS_VERIFY_CTX *TS_REQ_to_TS_VERIFY_CTX(TS_REQ *req, TS_VERIFY_CTX *ctx);-
501-
502/* Function declarations for TS_RESP defined in ts/ts_resp_print.c */-
503-
504int TS_RESP_print_bio(BIO *bio, TS_RESP *a);-
505int TS_STATUS_INFO_print_bio(BIO *bio, TS_STATUS_INFO *a);-
506int TS_TST_INFO_print_bio(BIO *bio, TS_TST_INFO *a);-
507-
508/* Common utility functions defined in ts/ts_lib.c */-
509-
510int TS_ASN1_INTEGER_print_bio(BIO *bio, const ASN1_INTEGER *num);-
511int TS_OBJ_print_bio(BIO *bio, const ASN1_OBJECT *obj);-
512int TS_ext_print_bio(BIO *bio, const STACK_OF(X509_EXTENSION) *extensions);-
513int TS_X509_ALGOR_print_bio(BIO *bio, const X509_ALGOR *alg);-
514int TS_MSG_IMPRINT_print_bio(BIO *bio, TS_MSG_IMPRINT *msg);-
515-
516/*-
517 * Function declarations for handling configuration options, defined in-
518 * ts/ts_conf.c-
519 */-
520-
521X509 *TS_CONF_load_cert(const char *file);-
522STACK_OF(X509) *TS_CONF_load_certs(const char *file);-
523EVP_PKEY *TS_CONF_load_key(const char *file, const char *pass);-
524const char *TS_CONF_get_tsa_section(CONF *conf, const char *section);-
525int TS_CONF_set_serial(CONF *conf, const char *section, TS_serial_cb cb,-
526 TS_RESP_CTX *ctx);-
527#ifndef OPENSSL_NO_ENGINE-
528int TS_CONF_set_crypto_device(CONF *conf, const char *section,-
529 const char *device);-
530int TS_CONF_set_default_engine(const char *name);-
531#endif-
532int TS_CONF_set_signer_cert(CONF *conf, const char *section,-
533 const char *cert, TS_RESP_CTX *ctx);-
534int TS_CONF_set_certs(CONF *conf, const char *section, const char *certs,-
535 TS_RESP_CTX *ctx);-
536int TS_CONF_set_signer_key(CONF *conf, const char *section,-
537 const char *key, const char *pass,-
538 TS_RESP_CTX *ctx);-
539int TS_CONF_set_signer_digest(CONF *conf, const char *section,-
540 const char *md, TS_RESP_CTX *ctx);-
541int TS_CONF_set_def_policy(CONF *conf, const char *section,-
542 const char *policy, TS_RESP_CTX *ctx);-
543int TS_CONF_set_policies(CONF *conf, const char *section, TS_RESP_CTX *ctx);-
544int TS_CONF_set_digests(CONF *conf, const char *section, TS_RESP_CTX *ctx);-
545int TS_CONF_set_accuracy(CONF *conf, const char *section, TS_RESP_CTX *ctx);-
546int TS_CONF_set_clock_precision_digits(CONF *conf, const char *section,-
547 TS_RESP_CTX *ctx);-
548int TS_CONF_set_ordering(CONF *conf, const char *section, TS_RESP_CTX *ctx);-
549int TS_CONF_set_tsa_name(CONF *conf, const char *section, TS_RESP_CTX *ctx);-
550int TS_CONF_set_ess_cert_id_chain(CONF *conf, const char *section,-
551 TS_RESP_CTX *ctx);-
552int TS_CONF_set_ess_cert_id_digest(CONF *conf, const char *section,-
553 TS_RESP_CTX *ctx);-
554-
555# ifdef __cplusplus-
556}-
557# endif-
558# endif-
559#endif-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2