diff options
author | inoguchi <> | 2019-08-20 13:10:09 +0000 |
---|---|---|
committer | inoguchi <> | 2019-08-20 13:10:09 +0000 |
commit | afb72c7fb8953ade3f713148efaea4b25375c765 (patch) | |
tree | a2c998959489967dedbd6e4e12f11e3364ed2d53 | |
parent | ac910fc8efbc518a705326409d1b3ab0036d46af (diff) | |
download | openbsd-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.h | 73 |
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) \ |