1109998Smarkm/* krb5_asn.h */ 2280304Sjkim/* 3280304Sjkim * Written by Vern Staats <staatsvr@asc.hpc.mil> for the OpenSSL project, ** 4280304Sjkim * using ocsp/{*.h,*asn*.c} as a starting point 5280304Sjkim */ 6109998Smarkm 7109998Smarkm/* ==================================================================== 8109998Smarkm * Copyright (c) 1998-2000 The OpenSSL Project. All rights reserved. 9109998Smarkm * 10109998Smarkm * Redistribution and use in source and binary forms, with or without 11109998Smarkm * modification, are permitted provided that the following conditions 12109998Smarkm * are met: 13109998Smarkm * 14109998Smarkm * 1. Redistributions of source code must retain the above copyright 15280304Sjkim * notice, this list of conditions and the following disclaimer. 16109998Smarkm * 17109998Smarkm * 2. Redistributions in binary form must reproduce the above copyright 18109998Smarkm * notice, this list of conditions and the following disclaimer in 19109998Smarkm * the documentation and/or other materials provided with the 20109998Smarkm * distribution. 21109998Smarkm * 22109998Smarkm * 3. All advertising materials mentioning features or use of this 23109998Smarkm * software must display the following acknowledgment: 24109998Smarkm * "This product includes software developed by the OpenSSL Project 25109998Smarkm * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 26109998Smarkm * 27109998Smarkm * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 28109998Smarkm * endorse or promote products derived from this software without 29109998Smarkm * prior written permission. For written permission, please contact 30109998Smarkm * openssl-core@openssl.org. 31109998Smarkm * 32109998Smarkm * 5. Products derived from this software may not be called "OpenSSL" 33109998Smarkm * nor may "OpenSSL" appear in their names without prior written 34109998Smarkm * permission of the OpenSSL Project. 35109998Smarkm * 36109998Smarkm * 6. Redistributions of any form whatsoever must retain the following 37109998Smarkm * acknowledgment: 38109998Smarkm * "This product includes software developed by the OpenSSL Project 39109998Smarkm * for use in the OpenSSL Toolkit (http://www.openssl.org/)" 40109998Smarkm * 41109998Smarkm * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 42109998Smarkm * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 43109998Smarkm * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 44109998Smarkm * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 45109998Smarkm * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 46109998Smarkm * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 47109998Smarkm * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 48109998Smarkm * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 49109998Smarkm * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 50109998Smarkm * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 51109998Smarkm * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 52109998Smarkm * OF THE POSSIBILITY OF SUCH DAMAGE. 53109998Smarkm * ==================================================================== 54109998Smarkm * 55109998Smarkm * This product includes cryptographic software written by Eric Young 56109998Smarkm * (eay@cryptsoft.com). This product includes software written by Tim 57109998Smarkm * Hudson (tjh@cryptsoft.com). 58109998Smarkm * 59109998Smarkm */ 60109998Smarkm 61109998Smarkm#ifndef HEADER_KRB5_ASN_H 62280304Sjkim# define HEADER_KRB5_ASN_H 63109998Smarkm 64109998Smarkm/* 65280304Sjkim * #include <krb5.h> 66280304Sjkim */ 67280304Sjkim# include <openssl/safestack.h> 68109998Smarkm 69109998Smarkm#ifdef __cplusplus 70109998Smarkmextern "C" { 71109998Smarkm#endif 72109998Smarkm 73280304Sjkim/* 74280304Sjkim * ASN.1 from Kerberos RFC 1510 75280304Sjkim */ 76109998Smarkm 77280304Sjkim/*- EncryptedData ::= SEQUENCE { 78280304Sjkim * etype[0] INTEGER, -- EncryptionType 79280304Sjkim * kvno[1] INTEGER OPTIONAL, 80280304Sjkim * cipher[2] OCTET STRING -- ciphertext 81280304Sjkim * } 82280304Sjkim */ 83280304Sjkimtypedef struct krb5_encdata_st { 84280304Sjkim ASN1_INTEGER *etype; 85280304Sjkim ASN1_INTEGER *kvno; 86280304Sjkim ASN1_OCTET_STRING *cipher; 87280304Sjkim} KRB5_ENCDATA; 88109998Smarkm 89109998SmarkmDECLARE_STACK_OF(KRB5_ENCDATA) 90109998Smarkm 91280304Sjkim/*- PrincipalName ::= SEQUENCE { 92280304Sjkim * name-type[0] INTEGER, 93280304Sjkim * name-string[1] SEQUENCE OF GeneralString 94280304Sjkim * } 95280304Sjkim */ 96280304Sjkimtypedef struct krb5_princname_st { 97280304Sjkim ASN1_INTEGER *nametype; 98280304Sjkim STACK_OF(ASN1_GENERALSTRING) *namestring; 99280304Sjkim} KRB5_PRINCNAME; 100109998Smarkm 101109998SmarkmDECLARE_STACK_OF(KRB5_PRINCNAME) 102109998Smarkm 103280304Sjkim/*- Ticket ::= [APPLICATION 1] SEQUENCE { 104280304Sjkim * tkt-vno[0] INTEGER, 105280304Sjkim * realm[1] Realm, 106280304Sjkim * sname[2] PrincipalName, 107280304Sjkim * enc-part[3] EncryptedData 108280304Sjkim * } 109280304Sjkim */ 110280304Sjkimtypedef struct krb5_tktbody_st { 111280304Sjkim ASN1_INTEGER *tktvno; 112280304Sjkim ASN1_GENERALSTRING *realm; 113280304Sjkim KRB5_PRINCNAME *sname; 114280304Sjkim KRB5_ENCDATA *encdata; 115280304Sjkim} KRB5_TKTBODY; 116109998Smarkm 117109998Smarkmtypedef STACK_OF(KRB5_TKTBODY) KRB5_TICKET; 118109998SmarkmDECLARE_STACK_OF(KRB5_TKTBODY) 119109998Smarkm 120280304Sjkim/*- AP-REQ ::= [APPLICATION 14] SEQUENCE { 121280304Sjkim * pvno[0] INTEGER, 122280304Sjkim * msg-type[1] INTEGER, 123280304Sjkim * ap-options[2] APOptions, 124280304Sjkim * ticket[3] Ticket, 125280304Sjkim * authenticator[4] EncryptedData 126280304Sjkim * } 127280304Sjkim * 128280304Sjkim * APOptions ::= BIT STRING { 129280304Sjkim * reserved(0), use-session-key(1), mutual-required(2) } 130280304Sjkim */ 131280304Sjkimtypedef struct krb5_ap_req_st { 132280304Sjkim ASN1_INTEGER *pvno; 133280304Sjkim ASN1_INTEGER *msgtype; 134280304Sjkim ASN1_BIT_STRING *apoptions; 135280304Sjkim KRB5_TICKET *ticket; 136280304Sjkim KRB5_ENCDATA *authenticator; 137280304Sjkim} KRB5_APREQBODY; 138109998Smarkm 139109998Smarkmtypedef STACK_OF(KRB5_APREQBODY) KRB5_APREQ; 140109998SmarkmDECLARE_STACK_OF(KRB5_APREQBODY) 141109998Smarkm 142280304Sjkim/* Authenticator Stuff */ 143109998Smarkm 144280304Sjkim/*- Checksum ::= SEQUENCE { 145280304Sjkim * cksumtype[0] INTEGER, 146280304Sjkim * checksum[1] OCTET STRING 147280304Sjkim * } 148280304Sjkim */ 149280304Sjkimtypedef struct krb5_checksum_st { 150280304Sjkim ASN1_INTEGER *ctype; 151280304Sjkim ASN1_OCTET_STRING *checksum; 152280304Sjkim} KRB5_CHECKSUM; 153109998Smarkm 154109998SmarkmDECLARE_STACK_OF(KRB5_CHECKSUM) 155109998Smarkm 156280304Sjkim/*- EncryptionKey ::= SEQUENCE { 157280304Sjkim * keytype[0] INTEGER, 158280304Sjkim * keyvalue[1] OCTET STRING 159280304Sjkim * } 160280304Sjkim */ 161280304Sjkimtypedef struct krb5_encryptionkey_st { 162280304Sjkim ASN1_INTEGER *ktype; 163280304Sjkim ASN1_OCTET_STRING *keyvalue; 164280304Sjkim} KRB5_ENCKEY; 165109998Smarkm 166109998SmarkmDECLARE_STACK_OF(KRB5_ENCKEY) 167109998Smarkm 168280304Sjkim/*- AuthorizationData ::= SEQUENCE OF SEQUENCE { 169280304Sjkim * ad-type[0] INTEGER, 170280304Sjkim * ad-data[1] OCTET STRING 171280304Sjkim * } 172280304Sjkim */ 173280304Sjkimtypedef struct krb5_authorization_st { 174280304Sjkim ASN1_INTEGER *adtype; 175280304Sjkim ASN1_OCTET_STRING *addata; 176280304Sjkim} KRB5_AUTHDATA; 177109998Smarkm 178109998SmarkmDECLARE_STACK_OF(KRB5_AUTHDATA) 179109998Smarkm 180280304Sjkim/*- -- Unencrypted authenticator 181280304Sjkim * Authenticator ::= [APPLICATION 2] SEQUENCE { 182280304Sjkim * authenticator-vno[0] INTEGER, 183280304Sjkim * crealm[1] Realm, 184280304Sjkim * cname[2] PrincipalName, 185280304Sjkim * cksum[3] Checksum OPTIONAL, 186280304Sjkim * cusec[4] INTEGER, 187280304Sjkim * ctime[5] KerberosTime, 188280304Sjkim * subkey[6] EncryptionKey OPTIONAL, 189280304Sjkim * seq-number[7] INTEGER OPTIONAL, 190280304Sjkim * authorization-data[8] AuthorizationData OPTIONAL 191280304Sjkim * } 192280304Sjkim */ 193280304Sjkimtypedef struct krb5_authenticator_st { 194280304Sjkim ASN1_INTEGER *avno; 195280304Sjkim ASN1_GENERALSTRING *crealm; 196280304Sjkim KRB5_PRINCNAME *cname; 197280304Sjkim KRB5_CHECKSUM *cksum; 198280304Sjkim ASN1_INTEGER *cusec; 199280304Sjkim ASN1_GENERALIZEDTIME *ctime; 200280304Sjkim KRB5_ENCKEY *subkey; 201280304Sjkim ASN1_INTEGER *seqnum; 202280304Sjkim KRB5_AUTHDATA *authorization; 203280304Sjkim} KRB5_AUTHENTBODY; 204109998Smarkm 205109998Smarkmtypedef STACK_OF(KRB5_AUTHENTBODY) KRB5_AUTHENT; 206109998SmarkmDECLARE_STACK_OF(KRB5_AUTHENTBODY) 207109998Smarkm 208280304Sjkim/*- DECLARE_ASN1_FUNCTIONS(type) = DECLARE_ASN1_FUNCTIONS_name(type, type) = 209280304Sjkim * type *name##_new(void); 210280304Sjkim * void name##_free(type *a); 211280304Sjkim * DECLARE_ASN1_ENCODE_FUNCTIONS(type, name, name) = 212280304Sjkim * DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) = 213280304Sjkim * type *d2i_##name(type **a, const unsigned char **in, long len); 214280304Sjkim * int i2d_##name(type *a, unsigned char **out); 215280304Sjkim * DECLARE_ASN1_ITEM(itname) = OPENSSL_EXTERN const ASN1_ITEM itname##_it 216280304Sjkim */ 217109998Smarkm 218109998SmarkmDECLARE_ASN1_FUNCTIONS(KRB5_ENCDATA) 219109998SmarkmDECLARE_ASN1_FUNCTIONS(KRB5_PRINCNAME) 220109998SmarkmDECLARE_ASN1_FUNCTIONS(KRB5_TKTBODY) 221109998SmarkmDECLARE_ASN1_FUNCTIONS(KRB5_APREQBODY) 222109998SmarkmDECLARE_ASN1_FUNCTIONS(KRB5_TICKET) 223109998SmarkmDECLARE_ASN1_FUNCTIONS(KRB5_APREQ) 224109998Smarkm 225109998SmarkmDECLARE_ASN1_FUNCTIONS(KRB5_CHECKSUM) 226109998SmarkmDECLARE_ASN1_FUNCTIONS(KRB5_ENCKEY) 227109998SmarkmDECLARE_ASN1_FUNCTIONS(KRB5_AUTHDATA) 228109998SmarkmDECLARE_ASN1_FUNCTIONS(KRB5_AUTHENTBODY) 229109998SmarkmDECLARE_ASN1_FUNCTIONS(KRB5_AUTHENT) 230109998Smarkm 231109998Smarkm/* BEGIN ERROR CODES */ 232280304Sjkim/* 233280304Sjkim * The following lines are auto generated by the script mkerr.pl. Any changes 234109998Smarkm * made after this point may be overwritten when the script is next run. 235109998Smarkm */ 236109998Smarkm 237109998Smarkm#ifdef __cplusplus 238109998Smarkm} 239109998Smarkm#endif 240109998Smarkm#endif 241