root / lab4 / .minix-src / include / openssl / ts.h @ 13
History | View | Annotate | Download (33.7 KB)
1 |
/* 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
|