der.h revision 233294
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 39typedef 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 46typedef 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 52enum { 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 86typedef struct heim_der_time_t { 87 time_t dt_sec; 88 unsigned long dt_nsec; 89} heim_der_time_t; 90 91typedef struct heim_ber_time_t { 92 time_t bt_sec; 93 unsigned bt_nsec; 94 int bt_zone; 95} heim_ber_time_t; 96 97struct asn1_template; 98 99#include <der-protos.h> 100 101int _heim_fix_dce(size_t reallen, size_t *len); 102int _heim_der_set_sort(const void *, const void *); 103int _heim_time2generalizedtime (time_t, heim_octet_string *, int); 104 105#endif /* __DER_H__ */ 106