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 | |