summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorinoguchi <>2019-08-20 13:10:09 +0000
committerinoguchi <>2019-08-20 13:10:09 +0000
commitafb72c7fb8953ade3f713148efaea4b25375c765 (patch)
treea2c998959489967dedbd6e4e12f11e3364ed2d53
parentac910fc8efbc518a705326409d1b3ab0036d46af (diff)
downloadopenbsd-afb72c7fb8953ade3f713148efaea4b25375c765.tar.gz
openbsd-afb72c7fb8953ade3f713148efaea4b25375c765.tar.bz2
openbsd-afb72c7fb8953ade3f713148efaea4b25375c765.zip
Add static_ASN1_* macro
- Add static_ASN1_* macro. Patch was provided by steils AT gentoo.org
-rw-r--r--src/lib/libcrypto/asn1/asn1t.h73
1 files changed, 72 insertions, 1 deletions
diff --git a/src/lib/libcrypto/asn1/asn1t.h b/src/lib/libcrypto/asn1/asn1t.h
index ba380bdf41..d6168b65e1 100644
--- a/src/lib/libcrypto/asn1/asn1t.h
+++ b/src/lib/libcrypto/asn1/asn1t.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: asn1t.h,v 1.14 2016/12/27 15:12:51 jsing Exp $ */ 1/* $OpenBSD: asn1t.h,v 1.15 2019/08/20 13:10:09 inoguchi Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 2000. 3 * project 2000.
4 */ 4 */
@@ -81,6 +81,9 @@ extern "C" {
81#define ASN1_ITEM_start(itname) \ 81#define ASN1_ITEM_start(itname) \
82 const ASN1_ITEM itname##_it = { 82 const ASN1_ITEM itname##_it = {
83 83
84#define static_ASN1_ITEM_start(itname) \
85 static const ASN1_ITEM itname##_it = {
86
84#define ASN1_ITEM_end(itname) \ 87#define ASN1_ITEM_end(itname) \
85 }; 88 };
86 89
@@ -103,6 +106,18 @@ extern "C" {
103 #tname \ 106 #tname \
104 ASN1_ITEM_end(tname) 107 ASN1_ITEM_end(tname)
105 108
109#define static_ASN1_ITEM_TEMPLATE_END(tname) \
110 ;\
111 static_ASN1_ITEM_start(tname) \
112 ASN1_ITYPE_PRIMITIVE,\
113 -1,\
114 &tname##_item_tt,\
115 0,\
116 NULL,\
117 0,\
118 #tname \
119 ASN1_ITEM_end(tname)
120
106 121
107/* This is a ASN1 type which just embeds a template */ 122/* This is a ASN1 type which just embeds a template */
108 123
@@ -131,6 +146,8 @@ extern "C" {
131 146
132#define ASN1_SEQUENCE_END(stname) ASN1_SEQUENCE_END_name(stname, stname) 147#define ASN1_SEQUENCE_END(stname) ASN1_SEQUENCE_END_name(stname, stname)
133 148
149#define static_ASN1_SEQUENCE_END(stname) static_ASN1_SEQUENCE_END_name(stname, stname)
150
134#define ASN1_SEQUENCE_END_name(stname, tname) \ 151#define ASN1_SEQUENCE_END_name(stname, tname) \
135 ;\ 152 ;\
136 ASN1_ITEM_start(tname) \ 153 ASN1_ITEM_start(tname) \
@@ -143,6 +160,18 @@ extern "C" {
143 #stname \ 160 #stname \
144 ASN1_ITEM_end(tname) 161 ASN1_ITEM_end(tname)
145 162
163#define static_ASN1_SEQUENCE_END_name(stname, tname) \
164 ;\
165 static_ASN1_ITEM_start(tname) \
166 ASN1_ITYPE_SEQUENCE,\
167 V_ASN1_SEQUENCE,\
168 tname##_seq_tt,\
169 sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
170 NULL,\
171 sizeof(stname),\
172 #stname \
173 ASN1_ITEM_end(tname)
174
146#define ASN1_NDEF_SEQUENCE(tname) \ 175#define ASN1_NDEF_SEQUENCE(tname) \
147 ASN1_SEQUENCE(tname) 176 ASN1_SEQUENCE(tname)
148 177
@@ -177,12 +206,26 @@ extern "C" {
177 #tname \ 206 #tname \
178 ASN1_ITEM_end(tname) 207 ASN1_ITEM_end(tname)
179 208
209#define static_ASN1_NDEF_SEQUENCE_END(tname) \
210 ;\
211 static_ASN1_ITEM_start(tname) \
212 ASN1_ITYPE_NDEF_SEQUENCE,\
213 V_ASN1_SEQUENCE,\
214 tname##_seq_tt,\
215 sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
216 NULL,\
217 sizeof(tname),\
218 #tname \
219 ASN1_ITEM_end(tname)
220
180#define ASN1_BROKEN_SEQUENCE_END(stname) ASN1_SEQUENCE_END_ref(stname, stname) 221#define ASN1_BROKEN_SEQUENCE_END(stname) ASN1_SEQUENCE_END_ref(stname, stname)
181 222
182#define ASN1_SEQUENCE_END_enc(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname) 223#define ASN1_SEQUENCE_END_enc(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname)
183 224
184#define ASN1_SEQUENCE_END_cb(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname) 225#define ASN1_SEQUENCE_END_cb(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname)
185 226
227#define static_ASN1_SEQUENCE_END_cb(stname, tname) static_ASN1_SEQUENCE_END_ref(stname, tname)
228
186#define ASN1_SEQUENCE_END_ref(stname, tname) \ 229#define ASN1_SEQUENCE_END_ref(stname, tname) \
187 ;\ 230 ;\
188 ASN1_ITEM_start(tname) \ 231 ASN1_ITEM_start(tname) \
@@ -195,6 +238,18 @@ extern "C" {
195 #stname \ 238 #stname \
196 ASN1_ITEM_end(tname) 239 ASN1_ITEM_end(tname)
197 240
241#define static_ASN1_SEQUENCE_END_ref(stname, tname) \
242 ;\
243 static_ASN1_ITEM_start(tname) \
244 ASN1_ITYPE_SEQUENCE,\
245 V_ASN1_SEQUENCE,\
246 tname##_seq_tt,\
247 sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
248 &tname##_aux,\
249 sizeof(stname),\
250 #stname \
251 ASN1_ITEM_end(tname)
252
198#define ASN1_NDEF_SEQUENCE_END_cb(stname, tname) \ 253#define ASN1_NDEF_SEQUENCE_END_cb(stname, tname) \
199 ;\ 254 ;\
200 ASN1_ITEM_start(tname) \ 255 ASN1_ITEM_start(tname) \
@@ -239,8 +294,12 @@ extern "C" {
239 294
240#define ASN1_CHOICE_END(stname) ASN1_CHOICE_END_name(stname, stname) 295#define ASN1_CHOICE_END(stname) ASN1_CHOICE_END_name(stname, stname)
241 296
297#define static_ASN1_CHOICE_END(stname) static_ASN1_CHOICE_END_name(stname, stname)
298
242#define ASN1_CHOICE_END_name(stname, tname) ASN1_CHOICE_END_selector(stname, tname, type) 299#define ASN1_CHOICE_END_name(stname, tname) ASN1_CHOICE_END_selector(stname, tname, type)
243 300
301#define static_ASN1_CHOICE_END_name(stname, tname) static_ASN1_CHOICE_END_selector(stname, tname, type)
302
244#define ASN1_CHOICE_END_selector(stname, tname, selname) \ 303#define ASN1_CHOICE_END_selector(stname, tname, selname) \
245 ;\ 304 ;\
246 ASN1_ITEM_start(tname) \ 305 ASN1_ITEM_start(tname) \
@@ -253,6 +312,18 @@ extern "C" {
253 #stname \ 312 #stname \
254 ASN1_ITEM_end(tname) 313 ASN1_ITEM_end(tname)
255 314
315#define static_ASN1_CHOICE_END_selector(stname, tname, selname) \
316 ;\
317 static_ASN1_ITEM_start(tname) \
318 ASN1_ITYPE_CHOICE,\
319 offsetof(stname,selname) ,\
320 tname##_ch_tt,\
321 sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE),\
322 NULL,\
323 sizeof(stname),\
324 #stname \
325 ASN1_ITEM_end(tname)
326
256#define ASN1_CHOICE_END_cb(stname, tname, selname) \ 327#define ASN1_CHOICE_END_cb(stname, tname, selname) \
257 ;\ 328 ;\
258 ASN1_ITEM_start(tname) \ 329 ASN1_ITEM_start(tname) \