Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/crypto/heimdal/lib/asn1/der.h
34879 views
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
107