Branch data Line data Source code
1 : : /* tasn_typ.c */
2 : : /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 : : * project 2000.
4 : : */
5 : : /* ====================================================================
6 : : * Copyright (c) 2000 The OpenSSL Project. 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
17 : : * the documentation and/or other materials provided with the
18 : : * distribution.
19 : : *
20 : : * 3. All advertising materials mentioning features or use of this
21 : : * software must display the following acknowledgment:
22 : : * "This product includes software developed by the OpenSSL Project
23 : : * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
24 : : *
25 : : * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
26 : : * endorse or promote products derived from this software without
27 : : * prior written permission. For written permission, please contact
28 : : * licensing@OpenSSL.org.
29 : : *
30 : : * 5. Products derived from this software may not be called "OpenSSL"
31 : : * nor may "OpenSSL" appear in their names without prior written
32 : : * permission of the OpenSSL Project.
33 : : *
34 : : * 6. Redistributions of any form whatsoever must retain the following
35 : : * acknowledgment:
36 : : * "This product includes software developed by the OpenSSL Project
37 : : * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
38 : : *
39 : : * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
40 : : * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
41 : : * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
42 : : * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
43 : : * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
44 : : * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
45 : : * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
46 : : * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
47 : : * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
48 : : * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
49 : : * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
50 : : * OF THE POSSIBILITY OF SUCH DAMAGE.
51 : : * ====================================================================
52 : : *
53 : : * This product includes cryptographic software written by Eric Young
54 : : * (eay@cryptsoft.com). This product includes software written by Tim
55 : : * Hudson (tjh@cryptsoft.com).
56 : : *
57 : : */
58 : : #include <stdio.h>
59 : : #include <openssl/asn1.h>
60 : : #include <openssl/asn1t.h>
61 : :
62 : : /* Declarations for string types */
63 : :
64 : :
65 : : IMPLEMENT_ASN1_TYPE(ASN1_INTEGER)
66 : 47674 : IMPLEMENT_ASN1_FUNCTIONS(ASN1_INTEGER)
67 : :
68 : : IMPLEMENT_ASN1_TYPE(ASN1_ENUMERATED)
69 : 0 : IMPLEMENT_ASN1_FUNCTIONS(ASN1_ENUMERATED)
70 : :
71 : : IMPLEMENT_ASN1_TYPE(ASN1_BIT_STRING)
72 : 3694 : IMPLEMENT_ASN1_FUNCTIONS(ASN1_BIT_STRING)
73 : :
74 : : IMPLEMENT_ASN1_TYPE(ASN1_OCTET_STRING)
75 : 90910 : IMPLEMENT_ASN1_FUNCTIONS(ASN1_OCTET_STRING)
76 : :
77 : : IMPLEMENT_ASN1_TYPE(ASN1_NULL)
78 : 0 : IMPLEMENT_ASN1_FUNCTIONS(ASN1_NULL)
79 : :
80 : : IMPLEMENT_ASN1_TYPE(ASN1_OBJECT)
81 : :
82 : : IMPLEMENT_ASN1_TYPE(ASN1_UTF8STRING)
83 : 6 : IMPLEMENT_ASN1_FUNCTIONS(ASN1_UTF8STRING)
84 : :
85 : : IMPLEMENT_ASN1_TYPE(ASN1_PRINTABLESTRING)
86 : 0 : IMPLEMENT_ASN1_FUNCTIONS(ASN1_PRINTABLESTRING)
87 : :
88 : : IMPLEMENT_ASN1_TYPE(ASN1_T61STRING)
89 : 0 : IMPLEMENT_ASN1_FUNCTIONS(ASN1_T61STRING)
90 : :
91 : : IMPLEMENT_ASN1_TYPE(ASN1_IA5STRING)
92 : 344 : IMPLEMENT_ASN1_FUNCTIONS(ASN1_IA5STRING)
93 : :
94 : : IMPLEMENT_ASN1_TYPE(ASN1_GENERALSTRING)
95 : 0 : IMPLEMENT_ASN1_FUNCTIONS(ASN1_GENERALSTRING)
96 : :
97 : : IMPLEMENT_ASN1_TYPE(ASN1_UTCTIME)
98 : 8 : IMPLEMENT_ASN1_FUNCTIONS(ASN1_UTCTIME)
99 : :
100 : : IMPLEMENT_ASN1_TYPE(ASN1_GENERALIZEDTIME)
101 : 12 : IMPLEMENT_ASN1_FUNCTIONS(ASN1_GENERALIZEDTIME)
102 : :
103 : : IMPLEMENT_ASN1_TYPE(ASN1_VISIBLESTRING)
104 : 0 : IMPLEMENT_ASN1_FUNCTIONS(ASN1_VISIBLESTRING)
105 : :
106 : : IMPLEMENT_ASN1_TYPE(ASN1_UNIVERSALSTRING)
107 : 0 : IMPLEMENT_ASN1_FUNCTIONS(ASN1_UNIVERSALSTRING)
108 : :
109 : : IMPLEMENT_ASN1_TYPE(ASN1_BMPSTRING)
110 : 0 : IMPLEMENT_ASN1_FUNCTIONS(ASN1_BMPSTRING)
111 : :
112 : : IMPLEMENT_ASN1_TYPE(ASN1_ANY)
113 : :
114 : : /* Just swallow an ASN1_SEQUENCE in an ASN1_STRING */
115 : : IMPLEMENT_ASN1_TYPE(ASN1_SEQUENCE)
116 : :
117 : 35050 : IMPLEMENT_ASN1_FUNCTIONS_fname(ASN1_TYPE, ASN1_ANY, ASN1_TYPE)
118 : :
119 : : /* Multistring types */
120 : :
121 : : IMPLEMENT_ASN1_MSTRING(ASN1_PRINTABLE, B_ASN1_PRINTABLE)
122 : 0 : IMPLEMENT_ASN1_FUNCTIONS_name(ASN1_STRING, ASN1_PRINTABLE)
123 : :
124 : : IMPLEMENT_ASN1_MSTRING(DISPLAYTEXT, B_ASN1_DISPLAYTEXT)
125 : 0 : IMPLEMENT_ASN1_FUNCTIONS_name(ASN1_STRING, DISPLAYTEXT)
126 : :
127 : : IMPLEMENT_ASN1_MSTRING(DIRECTORYSTRING, B_ASN1_DIRECTORYSTRING)
128 : 0 : IMPLEMENT_ASN1_FUNCTIONS_name(ASN1_STRING, DIRECTORYSTRING)
129 : :
130 : : /* Three separate BOOLEAN type: normal, DEFAULT TRUE and DEFAULT FALSE */
131 : : IMPLEMENT_ASN1_TYPE_ex(ASN1_BOOLEAN, ASN1_BOOLEAN, -1)
132 : : IMPLEMENT_ASN1_TYPE_ex(ASN1_TBOOLEAN, ASN1_BOOLEAN, 1)
133 : : IMPLEMENT_ASN1_TYPE_ex(ASN1_FBOOLEAN, ASN1_BOOLEAN, 0)
134 : :
135 : : /* Special, OCTET STRING with indefinite length constructed support */
136 : :
137 : : IMPLEMENT_ASN1_TYPE_ex(ASN1_OCTET_STRING_NDEF, ASN1_OCTET_STRING, ASN1_TFLG_NDEF)
138 : :
139 : : ASN1_ITEM_TEMPLATE(ASN1_SEQUENCE_ANY) =
140 : : ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, ASN1_SEQUENCE_ANY, ASN1_ANY)
141 : : ASN1_ITEM_TEMPLATE_END(ASN1_SEQUENCE_ANY)
142 : :
143 : : ASN1_ITEM_TEMPLATE(ASN1_SET_ANY) =
144 : : ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SET_OF, 0, ASN1_SET_ANY, ASN1_ANY)
145 : : ASN1_ITEM_TEMPLATE_END(ASN1_SET_ANY)
146 : :
147 : 4 : IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(ASN1_SEQUENCE_ANY, ASN1_SEQUENCE_ANY, ASN1_SEQUENCE_ANY)
148 : 0 : IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(ASN1_SEQUENCE_ANY, ASN1_SET_ANY, ASN1_SET_ANY)
|