"Fossies" - the Fresh Open Source Software Archive 
Member "libksba-1.5.0/src/ksba.h.in" (18 Nov 2020, 26963 Bytes) of package /linux/privat/libksba-1.5.0.tar.bz2:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
See also the latest
Fossies "Diffs" side-by-side code changes report for "ksba.h.in":
1.4.0_vs_1.5.0.
1 /* ksba.h - X.509 library used by GnuPG
2 * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2010, 2011
3 * 2012, 2013, 2104, 2015, 2019, 2020 g10 Code GmbH
4 *
5 * This file is part of KSBA.
6 *
7 * KSBA is free software; you can redistribute it and/or modify
8 * it under the terms of either
9 *
10 * - the GNU Lesser General Public License as published by the Free
11 * Software Foundation; either version 3 of the License, or (at
12 * your option) any later version.
13 *
14 * or
15 *
16 * - the GNU General Public License as published by the Free
17 * Software Foundation; either version 2 of the License, or (at
18 * your option) any later version.
19 *
20 * or both in parallel, as here.
21 *
22 * KSBA is distributed in the hope that it will be useful, but WITHOUT
23 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
24 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
25 * License for more details.
26 *
27 * You should have received a copies of the GNU General Public License
28 * and the GNU Lesser General Public License along with this program;
29 * if not, see <http://www.gnu.org/licenses/>.
30 * SPDX-License-Identifier: LGPL-3.0-or-later OR GPL-2.0-or-later
31 */
32
33 #ifndef KSBA_H
34 #define KSBA_H 1
35
36 #include <gpg-error.h>
37 #include <stdio.h>
38
39 #ifdef __cplusplus
40 extern "C" {
41 #if 0
42 }
43 #endif
44 #endif
45
46 /* The version of this header should match the one of the library. Do
47 * not use this symbol in your application; use assuan_check_version
48 * instead. */
49 #define KSBA_VERSION "@VERSION@"
50
51 /* The version number of this header. It may be used to handle minor
52 * API incompatibilities. */
53 #define KSBA_VERSION_NUMBER @VERSION_NUMBER@
54
55
56
57 /* Check for compiler features. */
58 #ifdef __GNUC__
59 #define _KSBA_GCC_VERSION (__GNUC__ * 10000 \
60 + __GNUC_MINOR__ * 100 \
61 + __GNUC_PATCHLEVEL__)
62 #if _KSBA_GCC_VERSION > 30100
63 #define _KSBA_DEPRECATED __attribute__ ((__deprecated__))
64 #endif
65 #endif /*__GNUC__*/
66
67 #ifndef _KSBA_DEPRECATED
68 #define _KSBA_DEPRECATED
69 #endif
70
71
72 #define KSBA_CLASS_UNIVERSAL 0
73 #define KSBA_CLASS_APPLICATION 1
74 #define KSBA_CLASS_CONTEXT 2
75 #define KSBA_CLASS_PRIVATE 3
76 #define KSBA_CLASS_ENCAPSULATE 0x80 /* Pseudo class. */
77
78 #define KSBA_TYPE_BOOLEAN 1
79 #define KSBA_TYPE_INTEGER 2
80 #define KSBA_TYPE_BIT_STRING 3
81 #define KSBA_TYPE_OCTET_STRING 4
82 #define KSBA_TYPE_NULL 5
83 #define KSBA_TYPE_OBJECT_ID 6
84 #define KSBA_TYPE_OBJECT_DESCRIPTOR 7
85 #define KSBA_TYPE_EXTERNAL 8
86 #define KSBA_TYPE_REAL 9
87 #define KSBA_TYPE_ENUMERATED 10
88 #define KSBA_TYPE_EMBEDDED_PDV 11
89 #define KSBA_TYPE_UTF8_STRING 12
90 #define KSBA_TYPE_RELATIVE_OID 13
91 #define KSBA_TYPE_TIME 14
92 #define KSBA_TYPE_SEQUENCE 16
93 #define KSBA_TYPE_SET 17
94 #define KSBA_TYPE_NUMERIC_STRING 18
95 #define KSBA_TYPE_PRINTABLE_STRING 19
96 #define KSBA_TYPE_TELETEX_STRING 20
97 #define KSBA_TYPE_VIDEOTEX_STRING 21
98 #define KSBA_TYPE_IA5_STRING 22
99 #define KSBA_TYPE_UTC_TIME 23
100 #define KSBA_TYPE_GENERALIZED_TIME 24
101 #define KSBA_TYPE_GRAPHIC_STRING 25
102 #define KSBA_TYPE_VISIBLE_STRING 26
103 #define KSBA_TYPE_GENERAL_STRING 27
104 #define KSBA_TYPE_UNIVERSAL_STRING 28
105 #define KSBA_TYPE_CHARACTER_STRING 29
106 #define KSBA_TYPE_BMP_STRING 30
107 #define KSBA_TYPE_DATE 31
108 #define KSBA_TYPE_TIME_OF_DAY 32
109 #define KSBA_TYPE_DATE_TIME 33
110 #define KSBA_TYPE_DURATION 34
111 #define KSBA_TYPE_OID_IRI 35
112 #define KSBA_TYPE_RELATIVE_OID_IRI 36
113
114
115
116 typedef gpg_error_t KsbaError _KSBA_DEPRECATED;
117
118 typedef enum
119 {
120 KSBA_CT_NONE = 0,
121 KSBA_CT_DATA = 1,
122 KSBA_CT_SIGNED_DATA = 2,
123 KSBA_CT_ENVELOPED_DATA = 3,
124 KSBA_CT_DIGESTED_DATA = 4,
125 KSBA_CT_ENCRYPTED_DATA = 5,
126 KSBA_CT_AUTH_DATA = 6,
127 KSBA_CT_PKCS12 = 7,
128 KSBA_CT_SPC_IND_DATA_CTX = 8,
129 KSBA_CT_OPENPGP_KEYBLOCK = 9
130 }
131 ksba_content_type_t;
132 typedef ksba_content_type_t KsbaContentType _KSBA_DEPRECATED;
133
134
135
136 typedef enum
137 {
138 KSBA_SR_NONE = 0, /* Never seen by libksba user. */
139 KSBA_SR_RUNNING = 1, /* Never seen by libksba user. */
140 KSBA_SR_GOT_CONTENT = 2,
141 KSBA_SR_NEED_HASH = 3,
142 KSBA_SR_BEGIN_DATA = 4,
143 KSBA_SR_END_DATA = 5,
144 KSBA_SR_READY = 6,
145 KSBA_SR_NEED_SIG = 7,
146 KSBA_SR_DETACHED_DATA = 8,
147 KSBA_SR_BEGIN_ITEMS = 9,
148 KSBA_SR_GOT_ITEM = 10,
149 KSBA_SR_END_ITEMS = 11
150 }
151 ksba_stop_reason_t;
152 typedef ksba_stop_reason_t KsbaStopReason _KSBA_DEPRECATED;
153
154 typedef enum
155 {
156 KSBA_CRLREASON_UNSPECIFIED = 1,
157 KSBA_CRLREASON_KEY_COMPROMISE = 2,
158 KSBA_CRLREASON_CA_COMPROMISE = 4,
159 KSBA_CRLREASON_AFFILIATION_CHANGED = 8,
160 KSBA_CRLREASON_SUPERSEDED = 16,
161 KSBA_CRLREASON_CESSATION_OF_OPERATION = 32,
162 KSBA_CRLREASON_CERTIFICATE_HOLD = 64,
163 KSBA_CRLREASON_REMOVE_FROM_CRL = 256,
164 KSBA_CRLREASON_PRIVILEGE_WITHDRAWN = 512,
165 KSBA_CRLREASON_AA_COMPROMISE = 1024,
166 KSBA_CRLREASON_OTHER = 32768
167 }
168 ksba_crl_reason_t;
169 typedef ksba_crl_reason_t KsbaCRLReason _KSBA_DEPRECATED;
170
171 typedef enum
172 {
173 KSBA_OCSP_RSPSTATUS_SUCCESS = 0,
174 KSBA_OCSP_RSPSTATUS_MALFORMED = 1,
175 KSBA_OCSP_RSPSTATUS_INTERNAL = 2,
176 KSBA_OCSP_RSPSTATUS_TRYLATER = 3,
177 KSBA_OCSP_RSPSTATUS_SIGREQUIRED = 5,
178 KSBA_OCSP_RSPSTATUS_UNAUTHORIZED = 6,
179 KSBA_OCSP_RSPSTATUS_REPLAYED = 253,
180 KSBA_OCSP_RSPSTATUS_OTHER = 254,
181 KSBA_OCSP_RSPSTATUS_NONE = 255
182 }
183 ksba_ocsp_response_status_t;
184
185 typedef enum
186 {
187 KSBA_STATUS_NONE = 0,
188 KSBA_STATUS_UNKNOWN = 1,
189 KSBA_STATUS_GOOD = 2,
190 KSBA_STATUS_REVOKED = 4
191 }
192 ksba_status_t;
193
194
195 typedef enum
196 {
197 KSBA_KEYUSAGE_DIGITAL_SIGNATURE = 1,
198 KSBA_KEYUSAGE_NON_REPUDIATION = 2,
199 KSBA_KEYUSAGE_KEY_ENCIPHERMENT = 4,
200 KSBA_KEYUSAGE_DATA_ENCIPHERMENT = 8,
201 KSBA_KEYUSAGE_KEY_AGREEMENT = 16,
202 KSBA_KEYUSAGE_KEY_CERT_SIGN = 32,
203 KSBA_KEYUSAGE_CRL_SIGN = 64,
204 KSBA_KEYUSAGE_ENCIPHER_ONLY = 128,
205 KSBA_KEYUSAGE_DECIPHER_ONLY = 256
206 }
207 ksba_key_usage_t;
208 typedef ksba_key_usage_t KsbaKeyUsage _KSBA_DEPRECATED;
209
210 /* ISO format, e.g. "19610711T172059", assumed to be UTC. */
211 typedef char ksba_isotime_t[16];
212
213
214 /* X.509 certificates are represented by this object.
215 ksba_cert_new() creates such an object */
216 struct ksba_cert_s;
217 typedef struct ksba_cert_s *ksba_cert_t;
218 typedef struct ksba_cert_s *KsbaCert _KSBA_DEPRECATED;
219
220 /* CMS objects are controlled by this object.
221 ksba_cms_new() creates it */
222 struct ksba_cms_s;
223 typedef struct ksba_cms_s *ksba_cms_t;
224 typedef struct ksba_cms_s *KsbaCMS _KSBA_DEPRECATED;
225
226 /* CRL objects are controlled by this object.
227 ksba_crl_new() creates it */
228 struct ksba_crl_s;
229 typedef struct ksba_crl_s *ksba_crl_t;
230 typedef struct ksba_crl_s *KsbaCRL _KSBA_DEPRECATED;
231
232 /* OCSP objects are controlled by this object.
233 ksba_ocsp_new() creates it. */
234 struct ksba_ocsp_s;
235 typedef struct ksba_ocsp_s *ksba_ocsp_t;
236
237 /* PKCS-10 creation is controlled by this object.
238 ksba_certreq_new() creates it */
239 struct ksba_certreq_s;
240 typedef struct ksba_certreq_s *ksba_certreq_t;
241 typedef struct ksba_certreq_s *KsbaCertreq _KSBA_DEPRECATED;
242
243 /* This is a reader object for various purposes
244 see ksba_reader_new et al. */
245 struct ksba_reader_s;
246 typedef struct ksba_reader_s *ksba_reader_t;
247 typedef struct ksba_reader_s *KsbaReader _KSBA_DEPRECATED;
248
249 /* This is a writer object for various purposes
250 see ksba_writer_new et al. */
251 struct ksba_writer_s;
252 typedef struct ksba_writer_s *ksba_writer_t;
253 typedef struct ksba_writer_s *KsbaWriter _KSBA_DEPRECATED;
254
255 /* This is an object to store an ASN.1 parse tree as
256 create by ksba_asn_parse_file() */
257 struct ksba_asn_tree_s;
258 typedef struct ksba_asn_tree_s *ksba_asn_tree_t;
259 typedef struct ksba_asn_tree_s *KsbaAsnTree _KSBA_DEPRECATED;
260
261 /* This is an object to reference a General Name. Such an object is
262 returned by several functions. */
263 struct ksba_name_s;
264 typedef struct ksba_name_s *ksba_name_t;
265 typedef struct ksba_name_s *KsbaName _KSBA_DEPRECATED;
266
267 /* KsbaSexp is just an unsigned char * which should be used for
268 documentation purpose. The S-expressions returned by libksba are
269 always in canonical representation with an extra 0 byte at the end,
270 so that one can print the values in the debugger and at least see
271 the first bytes */
272 typedef unsigned char *ksba_sexp_t;
273 typedef unsigned char *KsbaSexp _KSBA_DEPRECATED;
274 typedef const unsigned char *ksba_const_sexp_t;
275 typedef const unsigned char *KsbaConstSexp _KSBA_DEPRECATED;
276
277
278 /* This is a generic object used by various functions. */
279 struct ksba_der_s;
280 typedef struct ksba_der_s *ksba_der_t;
281
282
283 /*-- cert.c --*/
284 gpg_error_t ksba_cert_new (ksba_cert_t *acert);
285 void ksba_cert_ref (ksba_cert_t cert);
286 void ksba_cert_release (ksba_cert_t cert);
287 gpg_error_t ksba_cert_set_user_data (ksba_cert_t cert, const char *key,
288 const void *data, size_t datalen);
289 gpg_error_t ksba_cert_get_user_data (ksba_cert_t cert, const char *key,
290 void *buffer, size_t bufferlen,
291 size_t *datalen);
292
293 gpg_error_t ksba_cert_read_der (ksba_cert_t cert, ksba_reader_t reader);
294 gpg_error_t ksba_cert_init_from_mem (ksba_cert_t cert,
295 const void *buffer, size_t length);
296 const unsigned char *ksba_cert_get_image (ksba_cert_t cert, size_t *r_length);
297 gpg_error_t ksba_cert_hash (ksba_cert_t cert,
298 int what,
299 void (*hasher)(void *,
300 const void *,
301 size_t length),
302 void *hasher_arg);
303 const char *ksba_cert_get_digest_algo (ksba_cert_t cert);
304 ksba_sexp_t ksba_cert_get_serial (ksba_cert_t cert);
305 char *ksba_cert_get_issuer (ksba_cert_t cert, int idx);
306 gpg_error_t ksba_cert_get_validity (ksba_cert_t cert, int what,
307 ksba_isotime_t r_time);
308 char *ksba_cert_get_subject (ksba_cert_t cert, int idx);
309 ksba_sexp_t ksba_cert_get_public_key (ksba_cert_t cert);
310 ksba_sexp_t ksba_cert_get_sig_val (ksba_cert_t cert);
311
312 gpg_error_t ksba_cert_get_extension (ksba_cert_t cert, int idx,
313 char const **r_oid, int *r_crit,
314 size_t *r_deroff, size_t *r_derlen);
315
316 gpg_error_t ksba_cert_is_ca (ksba_cert_t cert, int *r_ca, int *r_pathlen);
317 gpg_error_t ksba_cert_get_key_usage (ksba_cert_t cert, unsigned int *r_flags);
318 gpg_error_t ksba_cert_get_cert_policies (ksba_cert_t cert, char **r_policies);
319 gpg_error_t ksba_cert_get_ext_key_usages (ksba_cert_t cert, char **result);
320 gpg_error_t ksba_cert_get_crl_dist_point (ksba_cert_t cert, int idx,
321 ksba_name_t *r_distpoint,
322 ksba_name_t *r_issuer,
323 ksba_crl_reason_t *r_reason);
324 gpg_error_t ksba_cert_get_auth_key_id (ksba_cert_t cert,
325 ksba_sexp_t *r_keyid,
326 ksba_name_t *r_name,
327 ksba_sexp_t *r_serial);
328 gpg_error_t ksba_cert_get_subj_key_id (ksba_cert_t cert,
329 int *r_crit,
330 ksba_sexp_t *r_keyid);
331 gpg_error_t ksba_cert_get_authority_info_access (ksba_cert_t cert, int idx,
332 char **r_method,
333 ksba_name_t *r_location);
334 gpg_error_t ksba_cert_get_subject_info_access (ksba_cert_t cert, int idx,
335 char **r_method,
336 ksba_name_t *r_location);
337
338
339 /*-- cms.c --*/
340 ksba_content_type_t ksba_cms_identify (ksba_reader_t reader);
341
342 gpg_error_t ksba_cms_new (ksba_cms_t *r_cms);
343 void ksba_cms_release (ksba_cms_t cms);
344 gpg_error_t ksba_cms_set_reader_writer (ksba_cms_t cms,
345 ksba_reader_t r, ksba_writer_t w);
346
347 gpg_error_t ksba_cms_parse (ksba_cms_t cms, ksba_stop_reason_t *r_stopreason);
348 gpg_error_t ksba_cms_build (ksba_cms_t cms, ksba_stop_reason_t *r_stopreason);
349
350 ksba_content_type_t ksba_cms_get_content_type (ksba_cms_t cms, int what);
351 const char *ksba_cms_get_content_oid (ksba_cms_t cms, int what);
352 gpg_error_t ksba_cms_get_content_enc_iv (ksba_cms_t cms, void *iv,
353 size_t maxivlen, size_t *ivlen);
354 const char *ksba_cms_get_digest_algo_list (ksba_cms_t cms, int idx);
355 gpg_error_t ksba_cms_get_issuer_serial (ksba_cms_t cms, int idx,
356 char **r_issuer,
357 ksba_sexp_t *r_serial);
358 const char *ksba_cms_get_digest_algo (ksba_cms_t cms, int idx);
359 ksba_cert_t ksba_cms_get_cert (ksba_cms_t cms, int idx);
360 gpg_error_t ksba_cms_get_message_digest (ksba_cms_t cms, int idx,
361 char **r_digest, size_t *r_digest_len);
362 gpg_error_t ksba_cms_get_signing_time (ksba_cms_t cms, int idx,
363 ksba_isotime_t r_sigtime);
364 gpg_error_t ksba_cms_get_sigattr_oids (ksba_cms_t cms, int idx,
365 const char *reqoid, char **r_value);
366 ksba_sexp_t ksba_cms_get_sig_val (ksba_cms_t cms, int idx);
367 ksba_sexp_t ksba_cms_get_enc_val (ksba_cms_t cms, int idx);
368
369 void ksba_cms_set_hash_function (ksba_cms_t cms,
370 void (*hash_fnc)(void *, const void *, size_t),
371 void *hash_fnc_arg);
372
373 gpg_error_t ksba_cms_hash_signed_attrs (ksba_cms_t cms, int idx);
374
375
376 gpg_error_t ksba_cms_set_content_type (ksba_cms_t cms, int what,
377 ksba_content_type_t type);
378 gpg_error_t ksba_cms_add_digest_algo (ksba_cms_t cms, const char *oid);
379 gpg_error_t ksba_cms_add_signer (ksba_cms_t cms, ksba_cert_t cert);
380 gpg_error_t ksba_cms_add_cert (ksba_cms_t cms, ksba_cert_t cert);
381 gpg_error_t ksba_cms_add_smime_capability (ksba_cms_t cms, const char *oid,
382 const unsigned char *der,
383 size_t derlen);
384 gpg_error_t ksba_cms_set_message_digest (ksba_cms_t cms, int idx,
385 const unsigned char *digest,
386 size_t digest_len);
387 gpg_error_t ksba_cms_set_signing_time (ksba_cms_t cms, int idx,
388 const ksba_isotime_t sigtime);
389 gpg_error_t ksba_cms_set_sig_val (ksba_cms_t cms,
390 int idx, ksba_const_sexp_t sigval);
391
392 gpg_error_t ksba_cms_set_content_enc_algo (ksba_cms_t cms,
393 const char *oid,
394 const void *iv,
395 size_t ivlen);
396 gpg_error_t ksba_cms_add_recipient (ksba_cms_t cms, ksba_cert_t cert);
397 gpg_error_t ksba_cms_set_enc_val (ksba_cms_t cms,
398 int idx, ksba_const_sexp_t encval);
399
400
401 /*-- crl.c --*/
402 gpg_error_t ksba_crl_new (ksba_crl_t *r_crl);
403 void ksba_crl_release (ksba_crl_t crl);
404 gpg_error_t ksba_crl_set_reader (ksba_crl_t crl, ksba_reader_t r);
405 void ksba_crl_set_hash_function (ksba_crl_t crl,
406 void (*hash_fnc)(void *,
407 const void *, size_t),
408 void *hash_fnc_arg);
409 const char *ksba_crl_get_digest_algo (ksba_crl_t crl);
410 gpg_error_t ksba_crl_get_issuer (ksba_crl_t crl, char **r_issuer);
411 gpg_error_t ksba_crl_get_extension (ksba_crl_t crl, int idx,
412 char const **oid, int *critical,
413 unsigned char const **der, size_t *derlen);
414 gpg_error_t ksba_crl_get_auth_key_id (ksba_crl_t crl,
415 ksba_sexp_t *r_keyid,
416 ksba_name_t *r_name,
417 ksba_sexp_t *r_serial);
418 gpg_error_t ksba_crl_get_crl_number (ksba_crl_t crl, ksba_sexp_t *number);
419 gpg_error_t ksba_crl_get_update_times (ksba_crl_t crl,
420 ksba_isotime_t this_update,
421 ksba_isotime_t next_update);
422 gpg_error_t ksba_crl_get_item (ksba_crl_t crl,
423 ksba_sexp_t *r_serial,
424 ksba_isotime_t r_revocation_date,
425 ksba_crl_reason_t *r_reason);
426 ksba_sexp_t ksba_crl_get_sig_val (ksba_crl_t crl);
427 gpg_error_t ksba_crl_parse (ksba_crl_t crl, ksba_stop_reason_t *r_stopreason);
428
429
430
431 /*-- ocsp.c --*/
432 gpg_error_t ksba_ocsp_new (ksba_ocsp_t *r_oscp);
433 void ksba_ocsp_release (ksba_ocsp_t ocsp);
434 gpg_error_t ksba_ocsp_set_digest_algo (ksba_ocsp_t ocsp, const char *oid);
435 gpg_error_t ksba_ocsp_set_requestor (ksba_ocsp_t ocsp, ksba_cert_t cert);
436 gpg_error_t ksba_ocsp_add_target (ksba_ocsp_t ocsp,
437 ksba_cert_t cert, ksba_cert_t issuer_cert);
438 size_t ksba_ocsp_set_nonce (ksba_ocsp_t ocsp,
439 unsigned char *nonce, size_t noncelen);
440
441 gpg_error_t ksba_ocsp_prepare_request (ksba_ocsp_t ocsp);
442 gpg_error_t ksba_ocsp_hash_request (ksba_ocsp_t ocsp,
443 void (*hasher)(void *, const void *,
444 size_t length),
445 void *hasher_arg);
446 gpg_error_t ksba_ocsp_set_sig_val (ksba_ocsp_t ocsp,
447 ksba_const_sexp_t sigval);
448 gpg_error_t ksba_ocsp_add_cert (ksba_ocsp_t ocsp, ksba_cert_t cert);
449 gpg_error_t ksba_ocsp_build_request (ksba_ocsp_t ocsp,
450 unsigned char **r_buffer,
451 size_t *r_buflen);
452
453 gpg_error_t ksba_ocsp_parse_response (ksba_ocsp_t ocsp,
454 const unsigned char *msg, size_t msglen,
455 ksba_ocsp_response_status_t *resp_status);
456
457 const char *ksba_ocsp_get_digest_algo (ksba_ocsp_t ocsp);
458 gpg_error_t ksba_ocsp_hash_response (ksba_ocsp_t ocsp,
459 const unsigned char *msg, size_t msglen,
460 void (*hasher)(void *, const void *,
461 size_t length),
462 void *hasher_arg);
463 ksba_sexp_t ksba_ocsp_get_sig_val (ksba_ocsp_t ocsp,
464 ksba_isotime_t produced_at);
465 gpg_error_t ksba_ocsp_get_responder_id (ksba_ocsp_t ocsp,
466 char **r_name,
467 ksba_sexp_t *r_keyid);
468 ksba_cert_t ksba_ocsp_get_cert (ksba_ocsp_t ocsp, int idx);
469 gpg_error_t ksba_ocsp_get_status (ksba_ocsp_t ocsp, ksba_cert_t cert,
470 ksba_status_t *r_status,
471 ksba_isotime_t r_this_update,
472 ksba_isotime_t r_next_update,
473 ksba_isotime_t r_revocation_time,
474 ksba_crl_reason_t *r_reason);
475 gpg_error_t ksba_ocsp_get_extension (ksba_ocsp_t ocsp, ksba_cert_t cert,
476 int idx,
477 char const **r_oid, int *r_crit,
478 unsigned char const **r_der,
479 size_t *r_derlen);
480
481
482 /*-- certreq.c --*/
483 gpg_error_t ksba_certreq_new (ksba_certreq_t *r_cr);
484 void ksba_certreq_release (ksba_certreq_t cr);
485 gpg_error_t ksba_certreq_set_writer (ksba_certreq_t cr, ksba_writer_t w);
486 void ksba_certreq_set_hash_function (
487 ksba_certreq_t cr,
488 void (*hash_fnc)(void *, const void *, size_t),
489 void *hash_fnc_arg);
490 gpg_error_t ksba_certreq_add_subject (ksba_certreq_t cr, const char *name);
491 gpg_error_t ksba_certreq_set_public_key (ksba_certreq_t cr,
492 ksba_const_sexp_t key);
493 gpg_error_t ksba_certreq_add_extension (ksba_certreq_t cr,
494 const char *oid, int is_crit,
495 const void *der,
496 size_t derlen);
497 gpg_error_t ksba_certreq_set_sig_val (ksba_certreq_t cr,
498 ksba_const_sexp_t sigval);
499 gpg_error_t ksba_certreq_build (ksba_certreq_t cr,
500 ksba_stop_reason_t *r_stopreason);
501
502 /* The functions below are used to switch to X.509 certificate creation. */
503 gpg_error_t ksba_certreq_set_serial (ksba_certreq_t cr, ksba_const_sexp_t sn);
504 gpg_error_t ksba_certreq_set_issuer (ksba_certreq_t cr, const char *name);
505 gpg_error_t ksba_certreq_set_validity (ksba_certreq_t cr, int what,
506 const ksba_isotime_t timebuf);
507 gpg_error_t ksba_certreq_set_siginfo (ksba_certreq_t cr,
508 ksba_const_sexp_t siginfo);
509
510
511
512 /*-- reader.c --*/
513 gpg_error_t ksba_reader_new (ksba_reader_t *r_r);
514 void ksba_reader_release (ksba_reader_t r);
515 gpg_error_t ksba_reader_set_release_notify (ksba_reader_t r,
516 void (*notify)(void*,ksba_reader_t),
517 void *notify_value);
518 gpg_error_t ksba_reader_clear (ksba_reader_t r,
519 unsigned char **buffer, size_t *buflen);
520 gpg_error_t ksba_reader_error (ksba_reader_t r);
521
522 gpg_error_t ksba_reader_set_mem (ksba_reader_t r,
523 const void *buffer, size_t length);
524 gpg_error_t ksba_reader_set_fd (ksba_reader_t r, int fd);
525 gpg_error_t ksba_reader_set_file (ksba_reader_t r, FILE *fp);
526 gpg_error_t ksba_reader_set_cb (ksba_reader_t r,
527 int (*cb)(void*,char *,size_t,size_t*),
528 void *cb_value );
529
530 gpg_error_t ksba_reader_read (ksba_reader_t r,
531 char *buffer, size_t length, size_t *nread);
532 gpg_error_t ksba_reader_unread (ksba_reader_t r, const void *buffer, size_t count);
533 unsigned long ksba_reader_tell (ksba_reader_t r);
534
535 /*-- writer.c --*/
536 gpg_error_t ksba_writer_new (ksba_writer_t *r_w);
537 void ksba_writer_release (ksba_writer_t w);
538 gpg_error_t ksba_writer_set_release_notify (ksba_writer_t w,
539 void (*notify)(void*,ksba_writer_t),
540 void *notify_value);
541 int ksba_writer_error (ksba_writer_t w);
542 unsigned long ksba_writer_tell (ksba_writer_t w);
543 gpg_error_t ksba_writer_set_fd (ksba_writer_t w, int fd);
544 gpg_error_t ksba_writer_set_file (ksba_writer_t w, FILE *fp);
545 gpg_error_t ksba_writer_set_cb (ksba_writer_t w,
546 int (*cb)(void*,const void *,size_t),
547 void *cb_value);
548 gpg_error_t ksba_writer_set_mem (ksba_writer_t w, size_t initial_size);
549 const void *ksba_writer_get_mem (ksba_writer_t w, size_t *nbytes);
550 void * ksba_writer_snatch_mem (ksba_writer_t w, size_t *nbytes);
551 gpg_error_t ksba_writer_set_filter (ksba_writer_t w,
552 gpg_error_t (*filter)(void*,
553 const void *,size_t, size_t *,
554 void *, size_t, size_t *),
555 void *filter_arg);
556
557 gpg_error_t ksba_writer_write (ksba_writer_t w, const void *buffer, size_t length);
558 gpg_error_t ksba_writer_write_octet_string (ksba_writer_t w,
559 const void *buffer, size_t length,
560 int flush);
561
562 /*-- asn1-parse.y --*/
563 int ksba_asn_parse_file (const char *filename, ksba_asn_tree_t *result,
564 int debug);
565 void ksba_asn_tree_release (ksba_asn_tree_t tree);
566
567 /*-- asn1-func.c --*/
568 void ksba_asn_tree_dump (ksba_asn_tree_t tree, const char *name, FILE *fp);
569 gpg_error_t ksba_asn_create_tree (const char *mod_name, ksba_asn_tree_t *result);
570
571 /*-- oid.c --*/
572 char *ksba_oid_to_str (const char *buffer, size_t length);
573 gpg_error_t ksba_oid_from_str (const char *string,
574 unsigned char **rbuf, size_t *rlength);
575
576 /*-- dn.c --*/
577 gpg_error_t ksba_dn_der2str (const void *der, size_t derlen, char **r_string);
578 gpg_error_t ksba_dn_str2der (const char *string,
579 unsigned char **rder, size_t *rderlen);
580 gpg_error_t ksba_dn_teststr (const char *string, int seq,
581 size_t *rerroff, size_t *rerrlen);
582
583
584 /*-- name.c --*/
585 gpg_error_t ksba_name_new (ksba_name_t *r_name);
586 void ksba_name_ref (ksba_name_t name);
587 void ksba_name_release (ksba_name_t name);
588 const char *ksba_name_enum (ksba_name_t name, int idx);
589 char *ksba_name_get_uri (ksba_name_t name, int idx);
590
591
592 /*-- der-builder.c --*/
593 void ksba_der_release (ksba_der_t d);
594
595 ksba_der_t ksba_der_builder_new (unsigned int nitems);
596 void ksba_der_builder_reset (ksba_der_t d);
597
598 void ksba_der_add_ptr (ksba_der_t d, int cls, int tag,
599 void *value, size_t valuelen);
600 void ksba_der_add_val (ksba_der_t d, int cls, int tag,
601 const void *value, size_t valuelen);
602 void ksba_der_add_int (ksba_der_t d, const void *value, size_t valuelen,
603 int force_positive);
604 void ksba_der_add_oid (ksba_der_t d, const char *oidstr);
605 void ksba_der_add_bts (ksba_der_t d, const void *value, size_t valuelen,
606 unsigned int unusedbits);
607 void ksba_der_add_der (ksba_der_t d, const void *der, size_t derlen);
608 void ksba_der_add_tag (ksba_der_t d, int cls, int tag);
609 void ksba_der_add_end (ksba_der_t d);
610
611 gpg_error_t ksba_der_builder_get (ksba_der_t d,
612 unsigned char **r_obj, size_t *r_objlen);
613
614
615
616 /*-- util.c --*/
617 void ksba_set_malloc_hooks ( void *(*new_alloc_func)(size_t n),
618 void *(*new_realloc_func)(void *p, size_t n),
619 void (*new_free_func)(void*) );
620 void ksba_set_hash_buffer_function ( gpg_error_t (*fnc)
621 (void *arg, const char *oid,
622 const void *buffer, size_t length,
623 size_t resultsize,
624 unsigned char *result,
625 size_t *resultlen),
626 void *fnc_arg);
627 void *ksba_malloc (size_t n );
628 void *ksba_calloc (size_t n, size_t m );
629 void *ksba_realloc (void *p, size_t n);
630 char *ksba_strdup (const char *p);
631 void ksba_free ( void *a );
632
633 /*--version.c --*/
634 const char *ksba_check_version (const char *req_version);
635
636 #ifdef __cplusplus
637 }
638 #endif
639 #endif /*KSBA_H*/