OCSP and KRB5 Makefil.ssl should be consistent with all the others
[openssl.git] / crypto / krb5 / krb5_asn.h
1 /* krb5_asn.h */
2 /* Written by Vern Staats <staatsvr@asc.hpc.mil> for the OpenSSL project,
3 ** using ocsp/{*.h,*asn*.c} as a starting point
4 */
5
6 /* ====================================================================
7  * Copyright (c) 1998-2000 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  *    openssl-core@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_KRB5_ASN_H
61 #define HEADER_KRB5_ASN_H
62
63 /*
64 #include <krb5.h>
65 */
66 #include <openssl/safestack.h>
67
68 #ifdef  __cplusplus
69 extern "C" {
70 #endif
71
72
73 /*      ASN.1 from Kerberos RFC 1510
74 */
75
76 /*      EncryptedData ::=   SEQUENCE {
77 **              etype[0]                      INTEGER, -- EncryptionType
78 **              kvno[1]                       INTEGER OPTIONAL,
79 **              cipher[2]                     OCTET STRING -- ciphertext
80 **      }
81 */
82 typedef struct  krb5_encdata_st
83         {
84         ASN1_INTEGER                    *etype;
85         ASN1_INTEGER                    *kvno;
86         ASN1_OCTET_STRING               *cipher;
87         }       KRB5_ENCDATA;
88
89 DECLARE_STACK_OF(KRB5_ENCDATA)
90
91 /*      PrincipalName ::=   SEQUENCE {
92 **              name-type[0]                  INTEGER,
93 **              name-string[1]                SEQUENCE OF GeneralString
94 **      }
95 */
96 typedef struct  krb5_princname_st
97         {
98         ASN1_INTEGER                    *nametype;
99         STACK_OF(ASN1_GENERALSTRING)    *namestring;
100         }       KRB5_PRINCNAME;
101
102 DECLARE_STACK_OF(KRB5_PRINCNAME)
103
104
105 /*      Ticket ::=      [APPLICATION 1] SEQUENCE {
106 **              tkt-vno[0]                    INTEGER,
107 **              realm[1]                      Realm,
108 **              sname[2]                      PrincipalName,
109 **              enc-part[3]                   EncryptedData
110 **      }
111 */
112 typedef struct  krb5_tktbody_st
113         {
114         ASN1_INTEGER                    *tktvno;
115         ASN1_GENERALSTRING              *realm;
116         KRB5_PRINCNAME                  *sname;
117         KRB5_ENCDATA                    *encdata;
118         }       KRB5_TKTBODY;
119
120 typedef STACK_OF(KRB5_TKTBODY) KRB5_TICKET;
121 DECLARE_STACK_OF(KRB5_TKTBODY)
122
123
124 /*      AP-REQ ::=      [APPLICATION 14] SEQUENCE {
125 **              pvno[0]                       INTEGER,
126 **              msg-type[1]                   INTEGER,
127 **              ap-options[2]                 APOptions,
128 **              ticket[3]                     Ticket,
129 **              authenticator[4]              EncryptedData
130 **      }
131 **
132 **      APOptions ::=   BIT STRING {
133 **              reserved(0), use-session-key(1), mutual-required(2) }
134 */
135 typedef struct  krb5_ap_req_st
136         {
137         ASN1_INTEGER                    *pvno;
138         ASN1_INTEGER                    *msgtype;
139         ASN1_BIT_STRING                 *apoptions;
140         KRB5_TICKET                     *ticket;
141         KRB5_ENCDATA                    *authenticator;
142         }       KRB5_APREQBODY;
143
144 typedef STACK_OF(KRB5_APREQBODY) KRB5_APREQ;
145 DECLARE_STACK_OF(KRB5_APREQBODY)
146
147
148 /*      Authenticator Stuff     */
149
150
151 /*      Checksum ::=   SEQUENCE {
152 **              cksumtype[0]                  INTEGER,
153 **              checksum[1]                   OCTET STRING
154 **      }
155 */
156 typedef struct  krb5_checksum_st
157         {
158         ASN1_INTEGER                    *ctype;
159         ASN1_OCTET_STRING               *checksum;
160         }       KRB5_CHECKSUM;
161
162 DECLARE_STACK_OF(KRB5_CHECKSUM)
163
164
165 /*      EncryptionKey ::=   SEQUENCE {
166 **              keytype[0]                    INTEGER,
167 **              keyvalue[1]                   OCTET STRING
168 **      }
169 */
170 typedef struct  krb5_encryptionkey_st
171         {
172         ASN1_INTEGER                    *ktype;
173         ASN1_OCTET_STRING               *keyvalue;
174         }       KRB5_ENCKEY;
175
176 DECLARE_STACK_OF(KRB5_ENCKEY)
177
178
179 /*      AuthorizationData ::=   SEQUENCE OF SEQUENCE {
180 **              ad-type[0]                    INTEGER,
181 **              ad-data[1]                    OCTET STRING
182 **      }
183 */
184 typedef struct  krb5_authorization_st
185         {
186         ASN1_INTEGER                    *adtype;
187         ASN1_OCTET_STRING               *addata;
188         }       KRB5_AUTHDATA;
189
190 DECLARE_STACK_OF(KRB5_AUTHDATA)
191
192                         
193 /*      -- Unencrypted authenticator
194 **      Authenticator ::=    [APPLICATION 2] SEQUENCE    {
195 **              authenticator-vno[0]          INTEGER,
196 **              crealm[1]                     Realm,
197 **              cname[2]                      PrincipalName,
198 **              cksum[3]                      Checksum OPTIONAL,
199 **              cusec[4]                      INTEGER,
200 **              ctime[5]                      KerberosTime,
201 **              subkey[6]                     EncryptionKey OPTIONAL,
202 **              seq-number[7]                 INTEGER OPTIONAL,
203 **              authorization-data[8]         AuthorizationData OPTIONAL
204 **      }
205 */
206 typedef struct  krb5_authenticator_st
207         {
208         ASN1_INTEGER                    *avno;
209         ASN1_GENERALSTRING              *crealm;
210         KRB5_PRINCNAME                  *cname;
211         KRB5_CHECKSUM                   *cksum;
212         ASN1_INTEGER                    *cusec;
213         ASN1_GENERALIZEDTIME            *ctime;
214         KRB5_ENCKEY                     *subkey;
215         ASN1_INTEGER                    *seqnum;
216         KRB5_AUTHDATA                   *authorization;
217         }       KRB5_AUTHENTBODY;
218
219 typedef STACK_OF(KRB5_AUTHENTBODY) KRB5_AUTHENT;
220 DECLARE_STACK_OF(KRB5_AUTHENTBODY)
221
222
223 /*  DECLARE_ASN1_FUNCTIONS(type) = DECLARE_ASN1_FUNCTIONS_name(type, type) =
224 **      type *name##_new(void);
225 **      void name##_free(type *a);
226 **      DECLARE_ASN1_ENCODE_FUNCTIONS(type, name, name) =
227 **       DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) =
228 **        type *d2i_##name(type **a, unsigned char **in, long len);
229 **        int i2d_##name(type *a, unsigned char **out);
230 **        DECLARE_ASN1_ITEM(itname) = OPENSSL_EXTERN const ASN1_ITEM itname##_it
231 */
232
233 DECLARE_ASN1_FUNCTIONS(KRB5_ENCDATA)
234 DECLARE_ASN1_FUNCTIONS(KRB5_PRINCNAME)
235 DECLARE_ASN1_FUNCTIONS(KRB5_TKTBODY)
236 DECLARE_ASN1_FUNCTIONS(KRB5_APREQBODY)
237 DECLARE_ASN1_FUNCTIONS(KRB5_TICKET)
238 DECLARE_ASN1_FUNCTIONS(KRB5_APREQ)
239
240 DECLARE_ASN1_FUNCTIONS(KRB5_CHECKSUM)
241 DECLARE_ASN1_FUNCTIONS(KRB5_ENCKEY)
242 DECLARE_ASN1_FUNCTIONS(KRB5_AUTHDATA)
243 DECLARE_ASN1_FUNCTIONS(KRB5_AUTHENTBODY)
244 DECLARE_ASN1_FUNCTIONS(KRB5_AUTHENT)
245
246
247 /* BEGIN ERROR CODES */
248 /* The following lines are auto generated by the script mkerr.pl. Any changes
249  * made after this point may be overwritten when the script is next run.
250  */
251
252 #ifdef  __cplusplus
253 }
254 #endif
255 #endif
256