root / lab4 / .minix-src / include / openssl / ts.h @ 13
History | View | Annotate | Download (33.7 KB)
1 | 13 | up20180614 | /* crypto/ts/ts.h */
|
---|---|---|---|
2 | /*
|
||
3 | * Written by Zoltan Glozik (zglozik@opentsa.org) for the OpenSSL project
|
||
4 | * 2002, 2003, 2004.
|
||
5 | */
|
||
6 | /* ====================================================================
|
||
7 | * Copyright (c) 2006 The OpenSSL Project. All rights reserved.
|
||
8 | *
|
||
9 | * Redistribution and use in source and binary forms, with or without
|
||
10 | * modification, are permitted provided that the following conditions
|
||
11 | * are met:
|
||
12 | *
|
||
13 | * 1. Redistributions of source code must retain the above copyright
|
||
14 | * notice, this list of conditions and the following disclaimer.
|
||
15 | *
|
||
16 | * 2. Redistributions in binary form must reproduce the above copyright
|
||
17 | * notice, this list of conditions and the following disclaimer in
|
||
18 | * the documentation and/or other materials provided with the
|
||
19 | * distribution.
|
||
20 | *
|
||
21 | * 3. All advertising materials mentioning features or use of this
|
||
22 | * software must display the following acknowledgment:
|
||
23 | * "This product includes software developed by the OpenSSL Project
|
||
24 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
|
||
25 | *
|
||
26 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
|
||
27 | * endorse or promote products derived from this software without
|
||
28 | * prior written permission. For written permission, please contact
|
||
29 | * licensing@OpenSSL.org.
|
||
30 | *
|
||
31 | * 5. Products derived from this software may not be called "OpenSSL"
|
||
32 | * nor may "OpenSSL" appear in their names without prior written
|
||
33 | * permission of the OpenSSL Project.
|
||
34 | *
|
||
35 | * 6. Redistributions of any form whatsoever must retain the following
|
||
36 | * acknowledgment:
|
||
37 | * "This product includes software developed by the OpenSSL Project
|
||
38 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
|
||
39 | *
|
||
40 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
|
||
41 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
42 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||
43 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
|
||
44 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||
45 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||
46 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||
47 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||
49 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||
50 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||
51 | * OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
52 | * ====================================================================
|
||
53 | *
|
||
54 | * This product includes cryptographic software written by Eric Young
|
||
55 | * (eay@cryptsoft.com). This product includes software written by Tim
|
||
56 | * Hudson (tjh@cryptsoft.com).
|
||
57 | *
|
||
58 | */
|
||
59 | |||
60 | #ifndef HEADER_TS_H
|
||
61 | # define HEADER_TS_H
|
||
62 | |||
63 | # include <openssl/opensslconf.h> |
||
64 | # include <openssl/symhacks.h> |
||
65 | # ifndef OPENSSL_NO_BUFFER
|
||
66 | # include <openssl/buffer.h> |
||
67 | # endif
|
||
68 | # ifndef OPENSSL_NO_EVP
|
||
69 | # include <openssl/evp.h> |
||
70 | # endif
|
||
71 | # ifndef OPENSSL_NO_BIO
|
||
72 | # include <openssl/bio.h> |
||
73 | # endif
|
||
74 | # include <openssl/stack.h> |
||
75 | # include <openssl/asn1.h> |
||
76 | # include <openssl/safestack.h> |
||
77 | |||
78 | # ifndef OPENSSL_NO_RSA
|
||
79 | # include <openssl/rsa.h> |
||
80 | # endif
|
||
81 | |||
82 | # ifndef OPENSSL_NO_DSA
|
||
83 | # include <openssl/dsa.h> |
||
84 | # endif
|
||
85 | |||
86 | # ifndef OPENSSL_NO_DH
|
||
87 | # include <openssl/dh.h> |
||
88 | # endif
|
||
89 | |||
90 | #ifdef __cplusplus
|
||
91 | extern "C" { |
||
92 | #endif
|
||
93 | |||
94 | # ifdef WIN32
|
||
95 | /* Under Win32 this is defined in wincrypt.h */
|
||
96 | # undef X509_NAME
|
||
97 | # endif
|
||
98 | |||
99 | # include <openssl/x509.h> |
||
100 | # include <openssl/x509v3.h> |
||
101 | |||
102 | /*-
|
||
103 | MessageImprint ::= SEQUENCE {
|
||
104 | hashAlgorithm AlgorithmIdentifier,
|
||
105 | hashedMessage OCTET STRING }
|
||
106 | */
|
||
107 | |||
108 | typedef struct TS_msg_imprint_st { |
||
109 | X509_ALGOR *hash_algo; |
||
110 | ASN1_OCTET_STRING *hashed_msg; |
||
111 | } TS_MSG_IMPRINT; |
||
112 | |||
113 | /*-
|
||
114 | TimeStampReq ::= SEQUENCE {
|
||
115 | version INTEGER { v1(1) },
|
||
116 | messageImprint MessageImprint,
|
||
117 | --a hash algorithm OID and the hash value of the data to be
|
||
118 | --time-stamped
|
||
119 | reqPolicy TSAPolicyId OPTIONAL,
|
||
120 | nonce INTEGER OPTIONAL,
|
||
121 | certReq BOOLEAN DEFAULT FALSE,
|
||
122 | extensions [0] IMPLICIT Extensions OPTIONAL }
|
||
123 | */
|
||
124 | |||
125 | typedef struct TS_req_st { |
||
126 | ASN1_INTEGER *version; |
||
127 | TS_MSG_IMPRINT *msg_imprint; |
||
128 | ASN1_OBJECT *policy_id; /* OPTIONAL */
|
||
129 | ASN1_INTEGER *nonce; /* OPTIONAL */
|
||
130 | ASN1_BOOLEAN cert_req; /* DEFAULT FALSE */
|
||
131 | STACK_OF(X509_EXTENSION) *extensions; /* [0] OPTIONAL */
|
||
132 | } TS_REQ; |
||
133 | |||
134 | /*-
|
||
135 | Accuracy ::= SEQUENCE {
|
||
136 | seconds INTEGER OPTIONAL,
|
||
137 | millis [0] INTEGER (1..999) OPTIONAL,
|
||
138 | micros [1] INTEGER (1..999) OPTIONAL }
|
||
139 | */
|
||
140 | |||
141 | typedef struct TS_accuracy_st { |
||
142 | ASN1_INTEGER *seconds; |
||
143 | ASN1_INTEGER *millis; |
||
144 | ASN1_INTEGER *micros; |
||
145 | } TS_ACCURACY; |
||
146 | |||
147 | /*-
|
||
148 | TSTInfo ::= SEQUENCE {
|
||
149 | version INTEGER { v1(1) },
|
||
150 | policy TSAPolicyId,
|
||
151 | messageImprint MessageImprint,
|
||
152 | -- MUST have the same value as the similar field in
|
||
153 | -- TimeStampReq
|
||
154 | serialNumber INTEGER,
|
||
155 | -- Time-Stamping users MUST be ready to accommodate integers
|
||
156 | -- up to 160 bits.
|
||
157 | genTime GeneralizedTime,
|
||
158 | accuracy Accuracy OPTIONAL,
|
||
159 | ordering BOOLEAN DEFAULT FALSE,
|
||
160 | nonce INTEGER OPTIONAL,
|
||
161 | -- MUST be present if the similar field was present
|
||
162 | -- in TimeStampReq. In that case it MUST have the same value.
|
||
163 | tsa [0] GeneralName OPTIONAL,
|
||
164 | extensions [1] IMPLICIT Extensions OPTIONAL }
|
||
165 | */
|
||
166 | |||
167 | typedef struct TS_tst_info_st { |
||
168 | ASN1_INTEGER *version; |
||
169 | ASN1_OBJECT *policy_id; |
||
170 | TS_MSG_IMPRINT *msg_imprint; |
||
171 | ASN1_INTEGER *serial; |
||
172 | ASN1_GENERALIZEDTIME *time; |
||
173 | TS_ACCURACY *accuracy; |
||
174 | ASN1_BOOLEAN ordering; |
||
175 | ASN1_INTEGER *nonce; |
||
176 | GENERAL_NAME *tsa; |
||
177 | STACK_OF(X509_EXTENSION) *extensions; |
||
178 | } TS_TST_INFO; |
||
179 | |||
180 | /*-
|
||
181 | PKIStatusInfo ::= SEQUENCE {
|
||
182 | status PKIStatus,
|
||
183 | statusString PKIFreeText OPTIONAL,
|
||
184 | failInfo PKIFailureInfo OPTIONAL }
|
||
185 | |||
186 | From RFC 1510 - section 3.1.1:
|
||
187 | PKIFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String
|
||
188 | -- text encoded as UTF-8 String (note: each UTF8String SHOULD
|
||
189 | -- include an RFC 1766 language tag to indicate the language
|
||
190 | -- of the contained text)
|
||
191 | */
|
||
192 | |||
193 | /* Possible values for status. See ts_resp_print.c && ts_resp_verify.c. */
|
||
194 | |||
195 | # define TS_STATUS_GRANTED 0 |
||
196 | # define TS_STATUS_GRANTED_WITH_MODS 1 |
||
197 | # define TS_STATUS_REJECTION 2 |
||
198 | # define TS_STATUS_WAITING 3 |
||
199 | # define TS_STATUS_REVOCATION_WARNING 4 |
||
200 | # define TS_STATUS_REVOCATION_NOTIFICATION 5 |
||
201 | |||
202 | /*
|
||
203 | * Possible values for failure_info. See ts_resp_print.c && ts_resp_verify.c
|
||
204 | */
|
||
205 | |||
206 | # define TS_INFO_BAD_ALG 0 |
||
207 | # define TS_INFO_BAD_REQUEST 2 |
||
208 | # define TS_INFO_BAD_DATA_FORMAT 5 |
||
209 | # define TS_INFO_TIME_NOT_AVAILABLE 14 |
||
210 | # define TS_INFO_UNACCEPTED_POLICY 15 |
||
211 | # define TS_INFO_UNACCEPTED_EXTENSION 16 |
||
212 | # define TS_INFO_ADD_INFO_NOT_AVAILABLE 17 |
||
213 | # define TS_INFO_SYSTEM_FAILURE 25 |
||
214 | |||
215 | typedef struct TS_status_info_st { |
||
216 | ASN1_INTEGER *status; |
||
217 | STACK_OF(ASN1_UTF8STRING) *text; |
||
218 | ASN1_BIT_STRING *failure_info; |
||
219 | } TS_STATUS_INFO; |
||
220 | |||
221 | DECLARE_STACK_OF(ASN1_UTF8STRING) |
||
222 | DECLARE_ASN1_SET_OF(ASN1_UTF8STRING) |
||
223 | |||
224 | /*-
|
||
225 | TimeStampResp ::= SEQUENCE {
|
||
226 | status PKIStatusInfo,
|
||
227 | timeStampToken TimeStampToken OPTIONAL }
|
||
228 | */
|
||
229 | |||
230 | typedef struct TS_resp_st { |
||
231 | TS_STATUS_INFO *status_info; |
||
232 | PKCS7 *token; |
||
233 | TS_TST_INFO *tst_info; |
||
234 | } TS_RESP; |
||
235 | |||
236 | /* The structure below would belong to the ESS component. */
|
||
237 | |||
238 | /*-
|
||
239 | IssuerSerial ::= SEQUENCE {
|
||
240 | issuer GeneralNames,
|
||
241 | serialNumber CertificateSerialNumber
|
||
242 | }
|
||
243 | */
|
||
244 | |||
245 | typedef struct ESS_issuer_serial { |
||
246 | STACK_OF(GENERAL_NAME) *issuer; |
||
247 | ASN1_INTEGER *serial; |
||
248 | } ESS_ISSUER_SERIAL; |
||
249 | |||
250 | /*-
|
||
251 | ESSCertID ::= SEQUENCE {
|
||
252 | certHash Hash,
|
||
253 | issuerSerial IssuerSerial OPTIONAL
|
||
254 | }
|
||
255 | */
|
||
256 | |||
257 | typedef struct ESS_cert_id { |
||
258 | ASN1_OCTET_STRING *hash; /* Always SHA-1 digest. */
|
||
259 | ESS_ISSUER_SERIAL *issuer_serial; |
||
260 | } ESS_CERT_ID; |
||
261 | |||
262 | DECLARE_STACK_OF(ESS_CERT_ID) |
||
263 | DECLARE_ASN1_SET_OF(ESS_CERT_ID) |
||
264 | |||
265 | /*-
|
||
266 | SigningCertificate ::= SEQUENCE {
|
||
267 | certs SEQUENCE OF ESSCertID,
|
||
268 | policies SEQUENCE OF PolicyInformation OPTIONAL
|
||
269 | }
|
||
270 | */
|
||
271 | |||
272 | typedef struct ESS_signing_cert { |
||
273 | STACK_OF(ESS_CERT_ID) *cert_ids; |
||
274 | STACK_OF(POLICYINFO) *policy_info; |
||
275 | } ESS_SIGNING_CERT; |
||
276 | |||
277 | TS_REQ *TS_REQ_new(void);
|
||
278 | void TS_REQ_free(TS_REQ *a);
|
||
279 | int i2d_TS_REQ(const TS_REQ *a, unsigned char **pp); |
||
280 | TS_REQ *d2i_TS_REQ(TS_REQ **a, const unsigned char **pp, long length); |
||
281 | |||
282 | TS_REQ *TS_REQ_dup(TS_REQ *a); |
||
283 | |||
284 | TS_REQ *d2i_TS_REQ_fp(FILE *fp, TS_REQ **a); |
||
285 | int i2d_TS_REQ_fp(FILE *fp, TS_REQ *a);
|
||
286 | TS_REQ *d2i_TS_REQ_bio(BIO *fp, TS_REQ **a); |
||
287 | int i2d_TS_REQ_bio(BIO *fp, TS_REQ *a);
|
||
288 | |||
289 | TS_MSG_IMPRINT *TS_MSG_IMPRINT_new(void);
|
||
290 | void TS_MSG_IMPRINT_free(TS_MSG_IMPRINT *a);
|
||
291 | int i2d_TS_MSG_IMPRINT(const TS_MSG_IMPRINT *a, unsigned char **pp); |
||
292 | TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT(TS_MSG_IMPRINT **a, |
||
293 | const unsigned char **pp, long length); |
||
294 | |||
295 | TS_MSG_IMPRINT *TS_MSG_IMPRINT_dup(TS_MSG_IMPRINT *a); |
||
296 | |||
297 | TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_fp(FILE *fp, TS_MSG_IMPRINT **a); |
||
298 | int i2d_TS_MSG_IMPRINT_fp(FILE *fp, TS_MSG_IMPRINT *a);
|
||
299 | TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_bio(BIO *fp, TS_MSG_IMPRINT **a); |
||
300 | int i2d_TS_MSG_IMPRINT_bio(BIO *fp, TS_MSG_IMPRINT *a);
|
||
301 | |||
302 | TS_RESP *TS_RESP_new(void);
|
||
303 | void TS_RESP_free(TS_RESP *a);
|
||
304 | int i2d_TS_RESP(const TS_RESP *a, unsigned char **pp); |
||
305 | TS_RESP *d2i_TS_RESP(TS_RESP **a, const unsigned char **pp, long length); |
||
306 | TS_TST_INFO *PKCS7_to_TS_TST_INFO(PKCS7 *token); |
||
307 | TS_RESP *TS_RESP_dup(TS_RESP *a); |
||
308 | |||
309 | TS_RESP *d2i_TS_RESP_fp(FILE *fp, TS_RESP **a); |
||
310 | int i2d_TS_RESP_fp(FILE *fp, TS_RESP *a);
|
||
311 | TS_RESP *d2i_TS_RESP_bio(BIO *fp, TS_RESP **a); |
||
312 | int i2d_TS_RESP_bio(BIO *fp, TS_RESP *a);
|
||
313 | |||
314 | TS_STATUS_INFO *TS_STATUS_INFO_new(void);
|
||
315 | void TS_STATUS_INFO_free(TS_STATUS_INFO *a);
|
||
316 | int i2d_TS_STATUS_INFO(const TS_STATUS_INFO *a, unsigned char **pp); |
||
317 | TS_STATUS_INFO *d2i_TS_STATUS_INFO(TS_STATUS_INFO **a, |
||
318 | const unsigned char **pp, long length); |
||
319 | TS_STATUS_INFO *TS_STATUS_INFO_dup(TS_STATUS_INFO *a); |
||
320 | |||
321 | TS_TST_INFO *TS_TST_INFO_new(void);
|
||
322 | void TS_TST_INFO_free(TS_TST_INFO *a);
|
||
323 | int i2d_TS_TST_INFO(const TS_TST_INFO *a, unsigned char **pp); |
||
324 | TS_TST_INFO *d2i_TS_TST_INFO(TS_TST_INFO **a, const unsigned char **pp, |
||
325 | long length);
|
||
326 | TS_TST_INFO *TS_TST_INFO_dup(TS_TST_INFO *a); |
||
327 | |||
328 | TS_TST_INFO *d2i_TS_TST_INFO_fp(FILE *fp, TS_TST_INFO **a); |
||
329 | int i2d_TS_TST_INFO_fp(FILE *fp, TS_TST_INFO *a);
|
||
330 | TS_TST_INFO *d2i_TS_TST_INFO_bio(BIO *fp, TS_TST_INFO **a); |
||
331 | int i2d_TS_TST_INFO_bio(BIO *fp, TS_TST_INFO *a);
|
||
332 | |||
333 | TS_ACCURACY *TS_ACCURACY_new(void);
|
||
334 | void TS_ACCURACY_free(TS_ACCURACY *a);
|
||
335 | int i2d_TS_ACCURACY(const TS_ACCURACY *a, unsigned char **pp); |
||
336 | TS_ACCURACY *d2i_TS_ACCURACY(TS_ACCURACY **a, const unsigned char **pp, |
||
337 | long length);
|
||
338 | TS_ACCURACY *TS_ACCURACY_dup(TS_ACCURACY *a); |
||
339 | |||
340 | ESS_ISSUER_SERIAL *ESS_ISSUER_SERIAL_new(void);
|
||
341 | void ESS_ISSUER_SERIAL_free(ESS_ISSUER_SERIAL *a);
|
||
342 | int i2d_ESS_ISSUER_SERIAL(const ESS_ISSUER_SERIAL *a, unsigned char **pp); |
||
343 | ESS_ISSUER_SERIAL *d2i_ESS_ISSUER_SERIAL(ESS_ISSUER_SERIAL **a, |
||
344 | const unsigned char **pp, |
||
345 | long length);
|
||
346 | ESS_ISSUER_SERIAL *ESS_ISSUER_SERIAL_dup(ESS_ISSUER_SERIAL *a); |
||
347 | |||
348 | ESS_CERT_ID *ESS_CERT_ID_new(void);
|
||
349 | void ESS_CERT_ID_free(ESS_CERT_ID *a);
|
||
350 | int i2d_ESS_CERT_ID(const ESS_CERT_ID *a, unsigned char **pp); |
||
351 | ESS_CERT_ID *d2i_ESS_CERT_ID(ESS_CERT_ID **a, const unsigned char **pp, |
||
352 | long length);
|
||
353 | ESS_CERT_ID *ESS_CERT_ID_dup(ESS_CERT_ID *a); |
||
354 | |||
355 | ESS_SIGNING_CERT *ESS_SIGNING_CERT_new(void);
|
||
356 | void ESS_SIGNING_CERT_free(ESS_SIGNING_CERT *a);
|
||
357 | int i2d_ESS_SIGNING_CERT(const ESS_SIGNING_CERT *a, unsigned char **pp); |
||
358 | ESS_SIGNING_CERT *d2i_ESS_SIGNING_CERT(ESS_SIGNING_CERT **a, |
||
359 | const unsigned char **pp, long length); |
||
360 | ESS_SIGNING_CERT *ESS_SIGNING_CERT_dup(ESS_SIGNING_CERT *a); |
||
361 | |||
362 | void ERR_load_TS_strings(void); |
||
363 | |||
364 | int TS_REQ_set_version(TS_REQ *a, long version); |
||
365 | long TS_REQ_get_version(const TS_REQ *a); |
||
366 | |||
367 | int TS_REQ_set_msg_imprint(TS_REQ *a, TS_MSG_IMPRINT *msg_imprint);
|
||
368 | TS_MSG_IMPRINT *TS_REQ_get_msg_imprint(TS_REQ *a); |
||
369 | |||
370 | int TS_MSG_IMPRINT_set_algo(TS_MSG_IMPRINT *a, X509_ALGOR *alg);
|
||
371 | X509_ALGOR *TS_MSG_IMPRINT_get_algo(TS_MSG_IMPRINT *a); |
||
372 | |||
373 | int TS_MSG_IMPRINT_set_msg(TS_MSG_IMPRINT *a, unsigned char *d, int len); |
||
374 | ASN1_OCTET_STRING *TS_MSG_IMPRINT_get_msg(TS_MSG_IMPRINT *a); |
||
375 | |||
376 | int TS_REQ_set_policy_id(TS_REQ *a, ASN1_OBJECT *policy);
|
||
377 | ASN1_OBJECT *TS_REQ_get_policy_id(TS_REQ *a); |
||
378 | |||
379 | int TS_REQ_set_nonce(TS_REQ *a, const ASN1_INTEGER *nonce); |
||
380 | const ASN1_INTEGER *TS_REQ_get_nonce(const TS_REQ *a); |
||
381 | |||
382 | int TS_REQ_set_cert_req(TS_REQ *a, int cert_req); |
||
383 | int TS_REQ_get_cert_req(const TS_REQ *a); |
||
384 | |||
385 | STACK_OF(X509_EXTENSION) *TS_REQ_get_exts(TS_REQ *a); |
||
386 | void TS_REQ_ext_free(TS_REQ *a);
|
||
387 | int TS_REQ_get_ext_count(TS_REQ *a);
|
||
388 | int TS_REQ_get_ext_by_NID(TS_REQ *a, int nid, int lastpos); |
||
389 | int TS_REQ_get_ext_by_OBJ(TS_REQ *a, ASN1_OBJECT *obj, int lastpos); |
||
390 | int TS_REQ_get_ext_by_critical(TS_REQ *a, int crit, int lastpos); |
||
391 | X509_EXTENSION *TS_REQ_get_ext(TS_REQ *a, int loc);
|
||
392 | X509_EXTENSION *TS_REQ_delete_ext(TS_REQ *a, int loc);
|
||
393 | int TS_REQ_add_ext(TS_REQ *a, X509_EXTENSION *ex, int loc); |
||
394 | void *TS_REQ_get_ext_d2i(TS_REQ *a, int nid, int *crit, int *idx); |
||
395 | |||
396 | /* Function declarations for TS_REQ defined in ts/ts_req_print.c */
|
||
397 | |||
398 | int TS_REQ_print_bio(BIO *bio, TS_REQ *a);
|
||
399 | |||
400 | /* Function declarations for TS_RESP defined in ts/ts_resp_utils.c */
|
||
401 | |||
402 | int TS_RESP_set_status_info(TS_RESP *a, TS_STATUS_INFO *info);
|
||
403 | TS_STATUS_INFO *TS_RESP_get_status_info(TS_RESP *a); |
||
404 | |||
405 | /* Caller loses ownership of PKCS7 and TS_TST_INFO objects. */
|
||
406 | void TS_RESP_set_tst_info(TS_RESP *a, PKCS7 *p7, TS_TST_INFO *tst_info);
|
||
407 | PKCS7 *TS_RESP_get_token(TS_RESP *a); |
||
408 | TS_TST_INFO *TS_RESP_get_tst_info(TS_RESP *a); |
||
409 | |||
410 | int TS_TST_INFO_set_version(TS_TST_INFO *a, long version); |
||
411 | long TS_TST_INFO_get_version(const TS_TST_INFO *a); |
||
412 | |||
413 | int TS_TST_INFO_set_policy_id(TS_TST_INFO *a, ASN1_OBJECT *policy_id);
|
||
414 | ASN1_OBJECT *TS_TST_INFO_get_policy_id(TS_TST_INFO *a); |
||
415 | |||
416 | int TS_TST_INFO_set_msg_imprint(TS_TST_INFO *a, TS_MSG_IMPRINT *msg_imprint);
|
||
417 | TS_MSG_IMPRINT *TS_TST_INFO_get_msg_imprint(TS_TST_INFO *a); |
||
418 | |||
419 | int TS_TST_INFO_set_serial(TS_TST_INFO *a, const ASN1_INTEGER *serial); |
||
420 | const ASN1_INTEGER *TS_TST_INFO_get_serial(const TS_TST_INFO *a); |
||
421 | |||
422 | int TS_TST_INFO_set_time(TS_TST_INFO *a, const ASN1_GENERALIZEDTIME *gtime); |
||
423 | const ASN1_GENERALIZEDTIME *TS_TST_INFO_get_time(const TS_TST_INFO *a); |
||
424 | |||
425 | int TS_TST_INFO_set_accuracy(TS_TST_INFO *a, TS_ACCURACY *accuracy);
|
||
426 | TS_ACCURACY *TS_TST_INFO_get_accuracy(TS_TST_INFO *a); |
||
427 | |||
428 | int TS_ACCURACY_set_seconds(TS_ACCURACY *a, const ASN1_INTEGER *seconds); |
||
429 | const ASN1_INTEGER *TS_ACCURACY_get_seconds(const TS_ACCURACY *a); |
||
430 | |||
431 | int TS_ACCURACY_set_millis(TS_ACCURACY *a, const ASN1_INTEGER *millis); |
||
432 | const ASN1_INTEGER *TS_ACCURACY_get_millis(const TS_ACCURACY *a); |
||
433 | |||
434 | int TS_ACCURACY_set_micros(TS_ACCURACY *a, const ASN1_INTEGER *micros); |
||
435 | const ASN1_INTEGER *TS_ACCURACY_get_micros(const TS_ACCURACY *a); |
||
436 | |||
437 | int TS_TST_INFO_set_ordering(TS_TST_INFO *a, int ordering); |
||
438 | int TS_TST_INFO_get_ordering(const TS_TST_INFO *a); |
||
439 | |||
440 | int TS_TST_INFO_set_nonce(TS_TST_INFO *a, const ASN1_INTEGER *nonce); |
||
441 | const ASN1_INTEGER *TS_TST_INFO_get_nonce(const TS_TST_INFO *a); |
||
442 | |||
443 | int TS_TST_INFO_set_tsa(TS_TST_INFO *a, GENERAL_NAME *tsa);
|
||
444 | GENERAL_NAME *TS_TST_INFO_get_tsa(TS_TST_INFO *a); |
||
445 | |||
446 | STACK_OF(X509_EXTENSION) *TS_TST_INFO_get_exts(TS_TST_INFO *a); |
||
447 | void TS_TST_INFO_ext_free(TS_TST_INFO *a);
|
||
448 | int TS_TST_INFO_get_ext_count(TS_TST_INFO *a);
|
||
449 | int TS_TST_INFO_get_ext_by_NID(TS_TST_INFO *a, int nid, int lastpos); |
||
450 | int TS_TST_INFO_get_ext_by_OBJ(TS_TST_INFO *a, ASN1_OBJECT *obj, int lastpos); |
||
451 | int TS_TST_INFO_get_ext_by_critical(TS_TST_INFO *a, int crit, int lastpos); |
||
452 | X509_EXTENSION *TS_TST_INFO_get_ext(TS_TST_INFO *a, int loc);
|
||
453 | X509_EXTENSION *TS_TST_INFO_delete_ext(TS_TST_INFO *a, int loc);
|
||
454 | int TS_TST_INFO_add_ext(TS_TST_INFO *a, X509_EXTENSION *ex, int loc); |
||
455 | void *TS_TST_INFO_get_ext_d2i(TS_TST_INFO *a, int nid, int *crit, int *idx); |
||
456 | |||
457 | /*
|
||
458 | * Declarations related to response generation, defined in ts/ts_resp_sign.c.
|
||
459 | */
|
||
460 | |||
461 | /* Optional flags for response generation. */
|
||
462 | |||
463 | /* Don't include the TSA name in response. */
|
||
464 | # define TS_TSA_NAME 0x01 |
||
465 | |||
466 | /* Set ordering to true in response. */
|
||
467 | # define TS_ORDERING 0x02 |
||
468 | |||
469 | /*
|
||
470 | * Include the signer certificate and the other specified certificates in
|
||
471 | * the ESS signing certificate attribute beside the PKCS7 signed data.
|
||
472 | * Only the signer certificates is included by default.
|
||
473 | */
|
||
474 | # define TS_ESS_CERT_ID_CHAIN 0x04 |
||
475 | |||
476 | /* Forward declaration. */
|
||
477 | struct TS_resp_ctx;
|
||
478 | |||
479 | /* This must return a unique number less than 160 bits long. */
|
||
480 | typedef ASN1_INTEGER *(*TS_serial_cb) (struct TS_resp_ctx *, void *); |
||
481 | |||
482 | /*
|
||
483 | * This must return the seconds and microseconds since Jan 1, 1970 in the sec
|
||
484 | * and usec variables allocated by the caller. Return non-zero for success
|
||
485 | * and zero for failure.
|
||
486 | */
|
||
487 | typedef int (*TS_time_cb) (struct TS_resp_ctx *, void *, long *sec, |
||
488 | long *usec);
|
||
489 | |||
490 | /*
|
||
491 | * This must process the given extension. It can modify the TS_TST_INFO
|
||
492 | * object of the context. Return values: !0 (processed), 0 (error, it must
|
||
493 | * set the status info/failure info of the response).
|
||
494 | */
|
||
495 | typedef int (*TS_extension_cb) (struct TS_resp_ctx *, X509_EXTENSION *, |
||
496 | void *);
|
||
497 | |||
498 | typedef struct TS_resp_ctx { |
||
499 | X509 *signer_cert; |
||
500 | EVP_PKEY *signer_key; |
||
501 | STACK_OF(X509) *certs; /* Certs to include in signed data. */
|
||
502 | STACK_OF(ASN1_OBJECT) *policies; /* Acceptable policies. */
|
||
503 | ASN1_OBJECT *default_policy; /* It may appear in policies, too. */
|
||
504 | STACK_OF(EVP_MD) *mds; /* Acceptable message digests. */
|
||
505 | ASN1_INTEGER *seconds; /* accuracy, 0 means not specified. */
|
||
506 | ASN1_INTEGER *millis; /* accuracy, 0 means not specified. */
|
||
507 | ASN1_INTEGER *micros; /* accuracy, 0 means not specified. */
|
||
508 | unsigned clock_precision_digits; /* fraction of seconds in time stamp |
||
509 | * token. */
|
||
510 | unsigned flags; /* Optional info, see values above. */ |
||
511 | /* Callback functions. */
|
||
512 | TS_serial_cb serial_cb; |
||
513 | void *serial_cb_data; /* User data for serial_cb. */ |
||
514 | TS_time_cb time_cb; |
||
515 | void *time_cb_data; /* User data for time_cb. */ |
||
516 | TS_extension_cb extension_cb; |
||
517 | void *extension_cb_data; /* User data for extension_cb. */ |
||
518 | /* These members are used only while creating the response. */
|
||
519 | TS_REQ *request; |
||
520 | TS_RESP *response; |
||
521 | TS_TST_INFO *tst_info; |
||
522 | } TS_RESP_CTX; |
||
523 | |||
524 | DECLARE_STACK_OF(EVP_MD) |
||
525 | DECLARE_ASN1_SET_OF(EVP_MD) |
||
526 | |||
527 | /* Creates a response context that can be used for generating responses. */
|
||
528 | TS_RESP_CTX *TS_RESP_CTX_new(void);
|
||
529 | void TS_RESP_CTX_free(TS_RESP_CTX *ctx);
|
||
530 | |||
531 | /* This parameter must be set. */
|
||
532 | int TS_RESP_CTX_set_signer_cert(TS_RESP_CTX *ctx, X509 *signer);
|
||
533 | |||
534 | /* This parameter must be set. */
|
||
535 | int TS_RESP_CTX_set_signer_key(TS_RESP_CTX *ctx, EVP_PKEY *key);
|
||
536 | |||
537 | /* This parameter must be set. */
|
||
538 | int TS_RESP_CTX_set_def_policy(TS_RESP_CTX *ctx, ASN1_OBJECT *def_policy);
|
||
539 | |||
540 | /* No additional certs are included in the response by default. */
|
||
541 | int TS_RESP_CTX_set_certs(TS_RESP_CTX *ctx, STACK_OF(X509) *certs);
|
||
542 | |||
543 | /*
|
||
544 | * Adds a new acceptable policy, only the default policy is accepted by
|
||
545 | * default.
|
||
546 | */
|
||
547 | int TS_RESP_CTX_add_policy(TS_RESP_CTX *ctx, ASN1_OBJECT *policy);
|
||
548 | |||
549 | /*
|
||
550 | * Adds a new acceptable message digest. Note that no message digests are
|
||
551 | * accepted by default. The md argument is shared with the caller.
|
||
552 | */
|
||
553 | int TS_RESP_CTX_add_md(TS_RESP_CTX *ctx, const EVP_MD *md); |
||
554 | |||
555 | /* Accuracy is not included by default. */
|
||
556 | int TS_RESP_CTX_set_accuracy(TS_RESP_CTX *ctx,
|
||
557 | int secs, int millis, int micros); |
||
558 | |||
559 | /*
|
||
560 | * Clock precision digits, i.e. the number of decimal digits: '0' means sec,
|
||
561 | * '3' msec, '6' usec, and so on. Default is 0.
|
||
562 | */
|
||
563 | int TS_RESP_CTX_set_clock_precision_digits(TS_RESP_CTX *ctx,
|
||
564 | unsigned clock_precision_digits);
|
||
565 | /* At most we accept usec precision. */
|
||
566 | # define TS_MAX_CLOCK_PRECISION_DIGITS 6 |
||
567 | |||
568 | /* No flags are set by default. */
|
||
569 | void TS_RESP_CTX_add_flags(TS_RESP_CTX *ctx, int flags); |
||
570 | |||
571 | /* Default callback always returns a constant. */
|
||
572 | void TS_RESP_CTX_set_serial_cb(TS_RESP_CTX *ctx, TS_serial_cb cb, void *data); |
||
573 | |||
574 | /* Default callback uses the gettimeofday() and gmtime() system calls. */
|
||
575 | void TS_RESP_CTX_set_time_cb(TS_RESP_CTX *ctx, TS_time_cb cb, void *data); |
||
576 | |||
577 | /*
|
||
578 | * Default callback rejects all extensions. The extension callback is called
|
||
579 | * when the TS_TST_INFO object is already set up and not signed yet.
|
||
580 | */
|
||
581 | /* FIXME: extension handling is not tested yet. */
|
||
582 | void TS_RESP_CTX_set_extension_cb(TS_RESP_CTX *ctx,
|
||
583 | TS_extension_cb cb, void *data);
|
||
584 | |||
585 | /* The following methods can be used in the callbacks. */
|
||
586 | int TS_RESP_CTX_set_status_info(TS_RESP_CTX *ctx,
|
||
587 | int status, const char *text); |
||
588 | |||
589 | /* Sets the status info only if it is still TS_STATUS_GRANTED. */
|
||
590 | int TS_RESP_CTX_set_status_info_cond(TS_RESP_CTX *ctx,
|
||
591 | int status, const char *text); |
||
592 | |||
593 | int TS_RESP_CTX_add_failure_info(TS_RESP_CTX *ctx, int failure); |
||
594 | |||
595 | /* The get methods below can be used in the extension callback. */
|
||
596 | TS_REQ *TS_RESP_CTX_get_request(TS_RESP_CTX *ctx); |
||
597 | |||
598 | TS_TST_INFO *TS_RESP_CTX_get_tst_info(TS_RESP_CTX *ctx); |
||
599 | |||
600 | /*
|
||
601 | * Creates the signed TS_TST_INFO and puts it in TS_RESP.
|
||
602 | * In case of errors it sets the status info properly.
|
||
603 | * Returns NULL only in case of memory allocation/fatal error.
|
||
604 | */
|
||
605 | TS_RESP *TS_RESP_create_response(TS_RESP_CTX *ctx, BIO *req_bio); |
||
606 | |||
607 | /*
|
||
608 | * Declarations related to response verification,
|
||
609 | * they are defined in ts/ts_resp_verify.c.
|
||
610 | */
|
||
611 | |||
612 | int TS_RESP_verify_signature(PKCS7 *token, STACK_OF(X509) *certs,
|
||
613 | X509_STORE *store, X509 **signer_out); |
||
614 | |||
615 | /* Context structure for the generic verify method. */
|
||
616 | |||
617 | /* Verify the signer's certificate and the signature of the response. */
|
||
618 | # define TS_VFY_SIGNATURE (1u << 0) |
||
619 | /* Verify the version number of the response. */
|
||
620 | # define TS_VFY_VERSION (1u << 1) |
||
621 | /* Verify if the policy supplied by the user matches the policy of the TSA. */
|
||
622 | # define TS_VFY_POLICY (1u << 2) |
||
623 | /*
|
||
624 | * Verify the message imprint provided by the user. This flag should not be
|
||
625 | * specified with TS_VFY_DATA.
|
||
626 | */
|
||
627 | # define TS_VFY_IMPRINT (1u << 3) |
||
628 | /*
|
||
629 | * Verify the message imprint computed by the verify method from the user
|
||
630 | * provided data and the MD algorithm of the response. This flag should not
|
||
631 | * be specified with TS_VFY_IMPRINT.
|
||
632 | */
|
||
633 | # define TS_VFY_DATA (1u << 4) |
||
634 | /* Verify the nonce value. */
|
||
635 | # define TS_VFY_NONCE (1u << 5) |
||
636 | /* Verify if the TSA name field matches the signer certificate. */
|
||
637 | # define TS_VFY_SIGNER (1u << 6) |
||
638 | /* Verify if the TSA name field equals to the user provided name. */
|
||
639 | # define TS_VFY_TSA_NAME (1u << 7) |
||
640 | |||
641 | /* You can use the following convenience constants. */
|
||
642 | # define TS_VFY_ALL_IMPRINT (TS_VFY_SIGNATURE \
|
||
643 | | TS_VFY_VERSION \ |
||
644 | | TS_VFY_POLICY \ |
||
645 | | TS_VFY_IMPRINT \ |
||
646 | | TS_VFY_NONCE \ |
||
647 | | TS_VFY_SIGNER \ |
||
648 | | TS_VFY_TSA_NAME) |
||
649 | # define TS_VFY_ALL_DATA (TS_VFY_SIGNATURE \
|
||
650 | | TS_VFY_VERSION \ |
||
651 | | TS_VFY_POLICY \ |
||
652 | | TS_VFY_DATA \ |
||
653 | | TS_VFY_NONCE \ |
||
654 | | TS_VFY_SIGNER \ |
||
655 | | TS_VFY_TSA_NAME) |
||
656 | |||
657 | typedef struct TS_verify_ctx { |
||
658 | /* Set this to the union of TS_VFY_... flags you want to carry out. */
|
||
659 | unsigned flags;
|
||
660 | /* Must be set only with TS_VFY_SIGNATURE. certs is optional. */
|
||
661 | X509_STORE *store; |
||
662 | STACK_OF(X509) *certs; |
||
663 | /* Must be set only with TS_VFY_POLICY. */
|
||
664 | ASN1_OBJECT *policy; |
||
665 | /*
|
||
666 | * Must be set only with TS_VFY_IMPRINT. If md_alg is NULL, the
|
||
667 | * algorithm from the response is used.
|
||
668 | */
|
||
669 | X509_ALGOR *md_alg; |
||
670 | unsigned char *imprint; |
||
671 | unsigned imprint_len;
|
||
672 | /* Must be set only with TS_VFY_DATA. */
|
||
673 | BIO *data; |
||
674 | /* Must be set only with TS_VFY_TSA_NAME. */
|
||
675 | ASN1_INTEGER *nonce; |
||
676 | /* Must be set only with TS_VFY_TSA_NAME. */
|
||
677 | GENERAL_NAME *tsa_name; |
||
678 | } TS_VERIFY_CTX; |
||
679 | |||
680 | int TS_RESP_verify_response(TS_VERIFY_CTX *ctx, TS_RESP *response);
|
||
681 | int TS_RESP_verify_token(TS_VERIFY_CTX *ctx, PKCS7 *token);
|
||
682 | |||
683 | /*
|
||
684 | * Declarations related to response verification context,
|
||
685 | * they are defined in ts/ts_verify_ctx.c.
|
||
686 | */
|
||
687 | |||
688 | /* Set all fields to zero. */
|
||
689 | TS_VERIFY_CTX *TS_VERIFY_CTX_new(void);
|
||
690 | void TS_VERIFY_CTX_init(TS_VERIFY_CTX *ctx);
|
||
691 | void TS_VERIFY_CTX_free(TS_VERIFY_CTX *ctx);
|
||
692 | void TS_VERIFY_CTX_cleanup(TS_VERIFY_CTX *ctx);
|
||
693 | |||
694 | /*-
|
||
695 | * If ctx is NULL, it allocates and returns a new object, otherwise
|
||
696 | * it returns ctx. It initialises all the members as follows:
|
||
697 | * flags = TS_VFY_ALL_IMPRINT & ~(TS_VFY_TSA_NAME | TS_VFY_SIGNATURE)
|
||
698 | * certs = NULL
|
||
699 | * store = NULL
|
||
700 | * policy = policy from the request or NULL if absent (in this case
|
||
701 | * TS_VFY_POLICY is cleared from flags as well)
|
||
702 | * md_alg = MD algorithm from request
|
||
703 | * imprint, imprint_len = imprint from request
|
||
704 | * data = NULL
|
||
705 | * nonce, nonce_len = nonce from the request or NULL if absent (in this case
|
||
706 | * TS_VFY_NONCE is cleared from flags as well)
|
||
707 | * tsa_name = NULL
|
||
708 | * Important: after calling this method TS_VFY_SIGNATURE should be added!
|
||
709 | */
|
||
710 | TS_VERIFY_CTX *TS_REQ_to_TS_VERIFY_CTX(TS_REQ *req, TS_VERIFY_CTX *ctx); |
||
711 | |||
712 | /* Function declarations for TS_RESP defined in ts/ts_resp_print.c */
|
||
713 | |||
714 | int TS_RESP_print_bio(BIO *bio, TS_RESP *a);
|
||
715 | int TS_STATUS_INFO_print_bio(BIO *bio, TS_STATUS_INFO *a);
|
||
716 | int TS_TST_INFO_print_bio(BIO *bio, TS_TST_INFO *a);
|
||
717 | |||
718 | /* Common utility functions defined in ts/ts_lib.c */
|
||
719 | |||
720 | int TS_ASN1_INTEGER_print_bio(BIO *bio, const ASN1_INTEGER *num); |
||
721 | int TS_OBJ_print_bio(BIO *bio, const ASN1_OBJECT *obj); |
||
722 | int TS_ext_print_bio(BIO *bio, const STACK_OF(X509_EXTENSION) *extensions); |
||
723 | int TS_X509_ALGOR_print_bio(BIO *bio, const X509_ALGOR *alg); |
||
724 | int TS_MSG_IMPRINT_print_bio(BIO *bio, TS_MSG_IMPRINT *msg);
|
||
725 | |||
726 | /*
|
||
727 | * Function declarations for handling configuration options, defined in
|
||
728 | * ts/ts_conf.c
|
||
729 | */
|
||
730 | |||
731 | X509 *TS_CONF_load_cert(const char *file); |
||
732 | STACK_OF(X509) *TS_CONF_load_certs(const char *file); |
||
733 | EVP_PKEY *TS_CONF_load_key(const char *file, const char *pass); |
||
734 | const char *TS_CONF_get_tsa_section(CONF *conf, const char *section); |
||
735 | int TS_CONF_set_serial(CONF *conf, const char *section, TS_serial_cb cb, |
||
736 | TS_RESP_CTX *ctx); |
||
737 | int TS_CONF_set_crypto_device(CONF *conf, const char *section, |
||
738 | const char *device); |
||
739 | int TS_CONF_set_default_engine(const char *name); |
||
740 | int TS_CONF_set_signer_cert(CONF *conf, const char *section, |
||
741 | const char *cert, TS_RESP_CTX *ctx); |
||
742 | int TS_CONF_set_certs(CONF *conf, const char *section, const char *certs, |
||
743 | TS_RESP_CTX *ctx); |
||
744 | int TS_CONF_set_signer_key(CONF *conf, const char *section, |
||
745 | const char *key, const char *pass, |
||
746 | TS_RESP_CTX *ctx); |
||
747 | int TS_CONF_set_def_policy(CONF *conf, const char *section, |
||
748 | const char *policy, TS_RESP_CTX *ctx); |
||
749 | int TS_CONF_set_policies(CONF *conf, const char *section, TS_RESP_CTX *ctx); |
||
750 | int TS_CONF_set_digests(CONF *conf, const char *section, TS_RESP_CTX *ctx); |
||
751 | int TS_CONF_set_accuracy(CONF *conf, const char *section, TS_RESP_CTX *ctx); |
||
752 | int TS_CONF_set_clock_precision_digits(CONF *conf, const char *section, |
||
753 | TS_RESP_CTX *ctx); |
||
754 | int TS_CONF_set_ordering(CONF *conf, const char *section, TS_RESP_CTX *ctx); |
||
755 | int TS_CONF_set_tsa_name(CONF *conf, const char *section, TS_RESP_CTX *ctx); |
||
756 | int TS_CONF_set_ess_cert_id_chain(CONF *conf, const char *section, |
||
757 | TS_RESP_CTX *ctx); |
||
758 | |||
759 | /* -------------------------------------------------- */
|
||
760 | /* BEGIN ERROR CODES */
|
||
761 | /*
|
||
762 | * The following lines are auto generated by the script mkerr.pl. Any changes
|
||
763 | * made after this point may be overwritten when the script is next run.
|
||
764 | */
|
||
765 | void ERR_load_TS_strings(void); |
||
766 | |||
767 | /* Error codes for the TS functions. */
|
||
768 | |||
769 | /* Function codes. */
|
||
770 | # define TS_F_D2I_TS_RESP 147 |
||
771 | # define TS_F_DEF_SERIAL_CB 110 |
||
772 | # define TS_F_DEF_TIME_CB 111 |
||
773 | # define TS_F_ESS_ADD_SIGNING_CERT 112 |
||
774 | # define TS_F_ESS_CERT_ID_NEW_INIT 113 |
||
775 | # define TS_F_ESS_SIGNING_CERT_NEW_INIT 114 |
||
776 | # define TS_F_INT_TS_RESP_VERIFY_TOKEN 149 |
||
777 | # define TS_F_PKCS7_TO_TS_TST_INFO 148 |
||
778 | # define TS_F_TS_ACCURACY_SET_MICROS 115 |
||
779 | # define TS_F_TS_ACCURACY_SET_MILLIS 116 |
||
780 | # define TS_F_TS_ACCURACY_SET_SECONDS 117 |
||
781 | # define TS_F_TS_CHECK_IMPRINTS 100 |
||
782 | # define TS_F_TS_CHECK_NONCES 101 |
||
783 | # define TS_F_TS_CHECK_POLICY 102 |
||
784 | # define TS_F_TS_CHECK_SIGNING_CERTS 103 |
||
785 | # define TS_F_TS_CHECK_STATUS_INFO 104 |
||
786 | # define TS_F_TS_COMPUTE_IMPRINT 145 |
||
787 | # define TS_F_TS_CONF_SET_DEFAULT_ENGINE 146 |
||
788 | # define TS_F_TS_GET_STATUS_TEXT 105 |
||
789 | # define TS_F_TS_MSG_IMPRINT_SET_ALGO 118 |
||
790 | # define TS_F_TS_REQ_SET_MSG_IMPRINT 119 |
||
791 | # define TS_F_TS_REQ_SET_NONCE 120 |
||
792 | # define TS_F_TS_REQ_SET_POLICY_ID 121 |
||
793 | # define TS_F_TS_RESP_CREATE_RESPONSE 122 |
||
794 | # define TS_F_TS_RESP_CREATE_TST_INFO 123 |
||
795 | # define TS_F_TS_RESP_CTX_ADD_FAILURE_INFO 124 |
||
796 | # define TS_F_TS_RESP_CTX_ADD_MD 125 |
||
797 | # define TS_F_TS_RESP_CTX_ADD_POLICY 126 |
||
798 | # define TS_F_TS_RESP_CTX_NEW 127 |
||
799 | # define TS_F_TS_RESP_CTX_SET_ACCURACY 128 |
||
800 | # define TS_F_TS_RESP_CTX_SET_CERTS 129 |
||
801 | # define TS_F_TS_RESP_CTX_SET_DEF_POLICY 130 |
||
802 | # define TS_F_TS_RESP_CTX_SET_SIGNER_CERT 131 |
||
803 | # define TS_F_TS_RESP_CTX_SET_STATUS_INFO 132 |
||
804 | # define TS_F_TS_RESP_GET_POLICY 133 |
||
805 | # define TS_F_TS_RESP_SET_GENTIME_WITH_PRECISION 134 |
||
806 | # define TS_F_TS_RESP_SET_STATUS_INFO 135 |
||
807 | # define TS_F_TS_RESP_SET_TST_INFO 150 |
||
808 | # define TS_F_TS_RESP_SIGN 136 |
||
809 | # define TS_F_TS_RESP_VERIFY_SIGNATURE 106 |
||
810 | # define TS_F_TS_RESP_VERIFY_TOKEN 107 |
||
811 | # define TS_F_TS_TST_INFO_SET_ACCURACY 137 |
||
812 | # define TS_F_TS_TST_INFO_SET_MSG_IMPRINT 138 |
||
813 | # define TS_F_TS_TST_INFO_SET_NONCE 139 |
||
814 | # define TS_F_TS_TST_INFO_SET_POLICY_ID 140 |
||
815 | # define TS_F_TS_TST_INFO_SET_SERIAL 141 |
||
816 | # define TS_F_TS_TST_INFO_SET_TIME 142 |
||
817 | # define TS_F_TS_TST_INFO_SET_TSA 143 |
||
818 | # define TS_F_TS_VERIFY 108 |
||
819 | # define TS_F_TS_VERIFY_CERT 109 |
||
820 | # define TS_F_TS_VERIFY_CTX_NEW 144 |
||
821 | |||
822 | /* Reason codes. */
|
||
823 | # define TS_R_BAD_PKCS7_TYPE 132 |
||
824 | # define TS_R_BAD_TYPE 133 |
||
825 | # define TS_R_CERTIFICATE_VERIFY_ERROR 100 |
||
826 | # define TS_R_COULD_NOT_SET_ENGINE 127 |
||
827 | # define TS_R_COULD_NOT_SET_TIME 115 |
||
828 | # define TS_R_D2I_TS_RESP_INT_FAILED 128 |
||
829 | # define TS_R_DETACHED_CONTENT 134 |
||
830 | # define TS_R_ESS_ADD_SIGNING_CERT_ERROR 116 |
||
831 | # define TS_R_ESS_SIGNING_CERTIFICATE_ERROR 101 |
||
832 | # define TS_R_INVALID_NULL_POINTER 102 |
||
833 | # define TS_R_INVALID_SIGNER_CERTIFICATE_PURPOSE 117 |
||
834 | # define TS_R_MESSAGE_IMPRINT_MISMATCH 103 |
||
835 | # define TS_R_NONCE_MISMATCH 104 |
||
836 | # define TS_R_NONCE_NOT_RETURNED 105 |
||
837 | # define TS_R_NO_CONTENT 106 |
||
838 | # define TS_R_NO_TIME_STAMP_TOKEN 107 |
||
839 | # define TS_R_PKCS7_ADD_SIGNATURE_ERROR 118 |
||
840 | # define TS_R_PKCS7_ADD_SIGNED_ATTR_ERROR 119 |
||
841 | # define TS_R_PKCS7_TO_TS_TST_INFO_FAILED 129 |
||
842 | # define TS_R_POLICY_MISMATCH 108 |
||
843 | # define TS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 120 |
||
844 | # define TS_R_RESPONSE_SETUP_ERROR 121 |
||
845 | # define TS_R_SIGNATURE_FAILURE 109 |
||
846 | # define TS_R_THERE_MUST_BE_ONE_SIGNER 110 |
||
847 | # define TS_R_TIME_SYSCALL_ERROR 122 |
||
848 | # define TS_R_TOKEN_NOT_PRESENT 130 |
||
849 | # define TS_R_TOKEN_PRESENT 131 |
||
850 | # define TS_R_TSA_NAME_MISMATCH 111 |
||
851 | # define TS_R_TSA_UNTRUSTED 112 |
||
852 | # define TS_R_TST_INFO_SETUP_ERROR 123 |
||
853 | # define TS_R_TS_DATASIGN 124 |
||
854 | # define TS_R_UNACCEPTABLE_POLICY 125 |
||
855 | # define TS_R_UNSUPPORTED_MD_ALGORITHM 126 |
||
856 | # define TS_R_UNSUPPORTED_VERSION 113 |
||
857 | # define TS_R_WRONG_CONTENT_TYPE 114 |
||
858 | |||
859 | #ifdef __cplusplus
|
||
860 | } |
||
861 | #endif
|
||
862 | #endif |