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