1 /* $NetBSD: der.h,v 1.2 2017/01/28 21:31:45 christos 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 #include <stdint.h> 42 43 typedef enum { 44 ASN1_C_UNIV = 0, 45 ASN1_C_APPL = 1, 46 ASN1_C_CONTEXT = 2, 47 ASN1_C_PRIVATE = 3 48 } Der_class; 49 50 typedef enum {PRIM = 0, CONS = 1} Der_type; 51 52 #define MAKE_TAG(CLASS, TYPE, TAG) (((CLASS) << 6) | ((TYPE) << 5) | (TAG)) 53 54 /* Universal tags */ 55 56 enum { 57 UT_EndOfContent = 0, 58 UT_Boolean = 1, 59 UT_Integer = 2, 60 UT_BitString = 3, 61 UT_OctetString = 4, 62 UT_Null = 5, 63 UT_OID = 6, 64 UT_Enumerated = 10, 65 UT_UTF8String = 12, 66 UT_Sequence = 16, 67 UT_Set = 17, 68 UT_PrintableString = 19, 69 UT_IA5String = 22, 70 UT_UTCTime = 23, 71 UT_GeneralizedTime = 24, 72 UT_UniversalString = 25, 73 UT_VisibleString = 26, 74 UT_GeneralString = 27, 75 UT_BMPString = 30, 76 /* unsupported types */ 77 UT_ObjectDescriptor = 7, 78 UT_External = 8, 79 UT_Real = 9, 80 UT_EmbeddedPDV = 11, 81 UT_RelativeOID = 13, 82 UT_NumericString = 18, 83 UT_TeletexString = 20, 84 UT_VideotexString = 21, 85 UT_GraphicString = 25 86 }; 87 88 #define ASN1_INDEFINITE 0xdce0deed 89 90 typedef struct heim_der_time_t { 91 time_t dt_sec; 92 unsigned long dt_nsec; 93 } heim_der_time_t; 94 95 typedef struct heim_ber_time_t { 96 time_t bt_sec; 97 unsigned bt_nsec; 98 int bt_zone; 99 } heim_ber_time_t; 100 101 struct asn1_template; 102 103 #include <krb5/der-protos.h> 104 105 int _heim_fix_dce(size_t reallen, size_t *len); 106 int _heim_der_set_sort(const void *, const void *); 107 int _heim_time2generalizedtime (time_t, heim_octet_string *, int); 108 109 #endif /* __DER_H__ */ 110