96a93ff4195698a4f91cd2e76538418ee819674d
[libksba.git] / src / ksba.h
1 /* ksba.h - X509 library for the Aegypten project
2  *      Copyright (C) 2001 g10 Code GmbH
3  *
4  * This file is part of KSBA.
5  *
6  * KSBA is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * KSBA is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
19  */
20
21 #ifndef KSBA_H
22 #define KSBA_H 1
23
24 #include <time.h>
25
26 #ifdef __cplusplus
27 extern "C" { 
28 #if 0
29  }
30 #endif
31 #endif
32
33 typedef enum {
34   KSBA_EOF = -1,
35   KSBA_No_Error = 0,
36   KSBA_General_Error = 1,
37   KSBA_Out_Of_Core = 2,
38   KSBA_Invalid_Value = 3,
39   KSBA_Not_Implemented = 4,
40   KSBA_Conflict = 5,
41   KSBA_Read_Error = 6,
42   KSBA_Write_Error = 7,
43   KSBA_Invalid_Attr = 8,
44   KSBA_No_Data = 9,
45   KSBA_No_Value = 10,
46   KSBA_Bug = 11,
47   KSBA_BER_Error = 12,
48   KSBA_Element_Not_Found = 13,
49   KSBA_Identifier_Not_Found = 14,
50   KSBA_Value_Not_Found = 15,  /* needed?*/
51   KSBA_Syntax_Error = 16,
52   KSBA_Invalid_Tag = 17,
53   KSBA_Invalid_Length = 18,
54   KSBA_Invalid_Keyinfo = 19,
55   KSBA_Unexpected_Tag = 20,
56   KSBA_Not_DER_Encoded = 21,
57   KSBA_Unknown_Algorithm = 22,
58   KSBA_Unsupported_Algorithm = 23,
59 } KsbaError;
60
61 typedef enum {
62   KSBA_ATTR_NONE = 0,
63   KSBA_ATTR_FOO = 1,
64 } KsbaAttr;
65
66 #define KSBA_SYM(a) ((sym_ ## a)? sym_ ## a:(sym_ ## a = ksba_make_sym (#a)))
67
68
69 /* X.509 certificates are represented by this object.
70  * ksba_cert_new() creates such an object */
71 struct ksba_cert_s;
72 typedef struct ksba_cert_s *KsbaCert;
73
74 /* This is a reader object vor various purposes
75    see ksba_reader_new et al. */
76 struct ksba_reader_s;
77 typedef struct ksba_reader_s *KsbaReader;
78
79 /* This is an object to store an ASN.1 parse tree as
80    create by ksba_asn_parse_file() */
81 struct ksba_asn_tree_s;
82 typedef struct ksba_asn_tree_s *KsbaAsnTree;
83    
84
85 /*-- cert.c --*/
86 KsbaCert ksba_cert_new (void);
87 void     ksba_cert_release (KsbaCert cert);
88 KsbaError ksba_cert_read_der (KsbaCert cert, KsbaReader reader);
89 KsbaError ksba_cert_hash (KsbaCert cert,
90                           void (*hasher)(void *,
91                                          const unsigned char *,
92                                          size_t length), 
93                           void *hasher_arg);
94 int  ksba_cert_get_digest_algo (KsbaCert cert);
95 unsigned char *ksba_cert_get_serial (KsbaCert cert);
96 char *ksba_cert_get_issuer (KsbaCert cert);
97 time_t ksba_cert_get_validity (KsbaCert cert, int what);
98 char *ksba_cert_get_subject (KsbaCert cert);
99 char *ksba_cert_get_public_key (KsbaCert cert);
100 char *ksba_cert_get_sig_val (KsbaCert cert);
101
102
103
104 /*-- reader.c --*/
105 KsbaReader ksba_reader_new (void);
106 void       ksba_reader_release (KsbaReader r);
107 int        ksba_reader_error (KsbaReader r);
108
109 KsbaError ksba_reader_set_mem (KsbaReader r,
110                                const void *buffer, size_t length);
111 KsbaError ksba_reader_set_fd (KsbaReader r, int fd);
112 KsbaError ksba_reader_set_file (KsbaReader r, FILE *fp);
113 KsbaError ksba_reader_set_cb (KsbaReader r, 
114                               int (*cb)(void*,char *,size_t,size_t*),
115                               void *cb_value );
116
117 KsbaError ksba_reader_read (KsbaReader r,
118                             char *buffer, size_t length, size_t *nread);
119 unsigned long ksba_reader_tell (KsbaReader r);
120
121
122 /*-- asn1-parse.y --*/
123 int ksba_asn_parse_file (const char *filename, KsbaAsnTree *result);
124 void ksba_asn_tree_release (KsbaAsnTree tree);
125
126 /*-- asn1-func.c --*/
127 void ksba_asn_tree_dump (KsbaAsnTree tree, const char *name, FILE *fp);
128
129 /*-- oid.c --*/
130 char *ksba_oid_to_str (const char *buffer, size_t length);
131 int ksba_oid_from_str (const char *string, char **rbuf, size_t *rlength);
132
133
134 /*-- util.c --*/
135 void *ksba_malloc (size_t n );
136 void *ksba_calloc (size_t n, size_t m );
137 void *ksba_realloc (void *p, size_t n);
138 char *ksba_strdup (const char *p);
139 void  ksba_free ( void *a );
140
141 /*-- errors.c (generated from this file) --*/
142 const char *ksba_strerror (KsbaError err);
143
144 #ifdef __cplusplus
145 }
146 #endif
147 #endif /*KSBA_H*/
148
149
150