1 /* $NetBSD: der.h,v 1.1.1.2 2011/04/14 14:08:20 elric Exp $ */ 2 3 /* 4 * Copyright (c) 1997 - 2006 Kungliga Tekniska Högskolan 5 * (Royal Institute of Technology, Stockholm, Sweden). 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 12 * 1. Redistributions of source code must retain the above copyright 13 * notice, this list of conditions and the following disclaimer. 14 * 15 * 2. Redistributions in binary form must reproduce the above copyright 16 * notice, this list of conditions and the following disclaimer in the 17 * documentation and/or other materials provided with the distribution. 18 * 19 * 3. Neither the name of the Institute nor the names of its contributors 20 * may be used to endorse or promote products derived from this software 21 * without specific prior written permission. 22 * 23 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 24 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 25 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 26 * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 27 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33 * SUCH DAMAGE. 34 */ 35 36 /* Id */ 37 38 #ifndef __DER_H__ 39 #define __DER_H__ 40 41 typedef enum { 42 ASN1_C_UNIV = 0, 43 ASN1_C_APPL = 1, 44 ASN1_C_CONTEXT = 2, 45 ASN1_C_PRIVATE = 3 46 } Der_class; 47 48 typedef enum {PRIM = 0, CONS = 1} Der_type; 49 50 #define MAKE_TAG(CLASS, TYPE, TAG) (((CLASS) << 6) | ((TYPE) << 5) | (TAG)) 51 52 /* Universal tags */ 53 54 enum { 55 UT_EndOfContent = 0, 56 UT_Boolean = 1, 57 UT_Integer = 2, 58 UT_BitString = 3, 59 UT_OctetString = 4, 60 UT_Null = 5, 61 UT_OID = 6, 62 UT_Enumerated = 10, 63 UT_UTF8String = 12, 64 UT_Sequence = 16, 65 UT_Set = 17, 66 UT_PrintableString = 19, 67 UT_IA5String = 22, 68 UT_UTCTime = 23, 69 UT_GeneralizedTime = 24, 70 UT_UniversalString = 25, 71 UT_VisibleString = 26, 72 UT_GeneralString = 27, 73 UT_BMPString = 30, 74 /* unsupported types */ 75 UT_ObjectDescriptor = 7, 76 UT_External = 8, 77 UT_Real = 9, 78 UT_EmbeddedPDV = 11, 79 UT_RelativeOID = 13, 80 UT_NumericString = 18, 81 UT_TeletexString = 20, 82 UT_VideotexString = 21, 83 UT_GraphicString = 25 84 }; 85 86 #define ASN1_INDEFINITE 0xdce0deed 87 88 typedef struct heim_der_time_t { 89 time_t dt_sec; 90 unsigned long dt_nsec; 91 } heim_der_time_t; 92 93 typedef struct heim_ber_time_t { 94 time_t bt_sec; 95 unsigned bt_nsec; 96 int bt_zone; 97 } heim_ber_time_t; 98 99 struct asn1_template; 100 101 #include <krb5/der-protos.h> 102 103 int _heim_fix_dce(size_t reallen, size_t *len); 104 int _heim_der_set_sort(const void *, const void *); 105 int _heim_time2generalizedtime (time_t, heim_octet_string *, int); 106 107 #endif /* __DER_H__ */ 108