diff options
author | jsing <> | 2015-02-14 15:06:55 +0000 |
---|---|---|
committer | jsing <> | 2015-02-14 15:06:55 +0000 |
commit | 5e65bc8b3214d70ba366a05d9640e405be041e6e (patch) | |
tree | 93d9f5d18362f93abc7e5fc8236fd6b1b970e861 | |
parent | dd33b182f2b43795910c8105f9def46b8ed87cb9 (diff) | |
download | openbsd-5e65bc8b3214d70ba366a05d9640e405be041e6e.tar.gz openbsd-5e65bc8b3214d70ba366a05d9640e405be041e6e.tar.bz2 openbsd-5e65bc8b3214d70ba366a05d9640e405be041e6e.zip |
Expand ASN1_CHOICE*, ASN1_SEQUENCE* and associated macros, making the
data structures visible and easier to review, without having to wade
through layers and layers of asn1t.h macros.
Change has been scripted and there is no change to the generated assembly.
Discussed with beck@ miod@ tedu@
Diffstat (limited to '')
-rw-r--r-- | src/lib/libcrypto/dh/dh_asn1.c | 48 | ||||
-rw-r--r-- | src/lib/libcrypto/dsa/dsa_asn1.c | 242 | ||||
-rw-r--r-- | src/lib/libcrypto/rsa/rsa_asn1.c | 186 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/dh/dh_asn1.c | 48 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/dsa/dsa_asn1.c | 242 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/rsa/rsa_asn1.c | 186 |
6 files changed, 832 insertions, 120 deletions
diff --git a/src/lib/libcrypto/dh/dh_asn1.c b/src/lib/libcrypto/dh/dh_asn1.c index 9d76974659..7060130ed8 100644 --- a/src/lib/libcrypto/dh/dh_asn1.c +++ b/src/lib/libcrypto/dh/dh_asn1.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: dh_asn1.c,v 1.7 2015/02/10 05:12:23 jsing Exp $ */ | 1 | /* $OpenBSD: dh_asn1.c,v 1.8 2015/02/14 15:06:55 jsing 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 | */ |
@@ -80,11 +80,47 @@ dh_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg) | |||
80 | return 1; | 80 | return 1; |
81 | } | 81 | } |
82 | 82 | ||
83 | ASN1_SEQUENCE_cb(DHparams, dh_cb) = { | 83 | static const ASN1_AUX DHparams_aux = { |
84 | ASN1_SIMPLE(DH, p, BIGNUM), | 84 | .app_data = NULL, |
85 | ASN1_SIMPLE(DH, g, BIGNUM), | 85 | .flags = 0, |
86 | ASN1_OPT(DH, length, ZLONG), | 86 | .ref_offset = 0, |
87 | } ASN1_SEQUENCE_END_cb(DH, DHparams) | 87 | .ref_lock = 0, |
88 | .asn1_cb = dh_cb, | ||
89 | .enc_offset = 0, | ||
90 | }; | ||
91 | static const ASN1_TEMPLATE DHparams_seq_tt[] = { | ||
92 | { | ||
93 | .flags = 0, | ||
94 | .tag = 0, | ||
95 | .offset = offsetof(DH, p), | ||
96 | .field_name = "p", | ||
97 | .item = &BIGNUM_it, | ||
98 | }, | ||
99 | { | ||
100 | .flags = 0, | ||
101 | .tag = 0, | ||
102 | .offset = offsetof(DH, g), | ||
103 | .field_name = "g", | ||
104 | .item = &BIGNUM_it, | ||
105 | }, | ||
106 | { | ||
107 | .flags = ASN1_TFLG_OPTIONAL, | ||
108 | .tag = 0, | ||
109 | .offset = offsetof(DH, length), | ||
110 | .field_name = "length", | ||
111 | .item = &ZLONG_it, | ||
112 | }, | ||
113 | }; | ||
114 | |||
115 | const ASN1_ITEM DHparams_it = { | ||
116 | .itype = ASN1_ITYPE_SEQUENCE, | ||
117 | .utype = V_ASN1_SEQUENCE, | ||
118 | .templates = DHparams_seq_tt, | ||
119 | .tcount = sizeof(DHparams_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
120 | .funcs = &DHparams_aux, | ||
121 | .size = sizeof(DH), | ||
122 | .sname = "DH", | ||
123 | }; | ||
88 | 124 | ||
89 | 125 | ||
90 | DH * | 126 | DH * |
diff --git a/src/lib/libcrypto/dsa/dsa_asn1.c b/src/lib/libcrypto/dsa/dsa_asn1.c index c6b00923fc..8c5d93105c 100644 --- a/src/lib/libcrypto/dsa/dsa_asn1.c +++ b/src/lib/libcrypto/dsa/dsa_asn1.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: dsa_asn1.c,v 1.15 2015/02/10 05:12:23 jsing Exp $ */ | 1 | /* $OpenBSD: dsa_asn1.c,v 1.16 2015/02/14 15:06:55 jsing 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 | */ |
@@ -84,10 +84,40 @@ sig_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg) | |||
84 | return 1; | 84 | return 1; |
85 | } | 85 | } |
86 | 86 | ||
87 | ASN1_SEQUENCE_cb(DSA_SIG, sig_cb) = { | 87 | static const ASN1_AUX DSA_SIG_aux = { |
88 | ASN1_SIMPLE(DSA_SIG, r, CBIGNUM), | 88 | .app_data = NULL, |
89 | ASN1_SIMPLE(DSA_SIG, s, CBIGNUM) | 89 | .flags = 0, |
90 | } ASN1_SEQUENCE_END_cb(DSA_SIG, DSA_SIG) | 90 | .ref_offset = 0, |
91 | .ref_lock = 0, | ||
92 | .asn1_cb = sig_cb, | ||
93 | .enc_offset = 0, | ||
94 | }; | ||
95 | static const ASN1_TEMPLATE DSA_SIG_seq_tt[] = { | ||
96 | { | ||
97 | .flags = 0, | ||
98 | .tag = 0, | ||
99 | .offset = offsetof(DSA_SIG, r), | ||
100 | .field_name = "r", | ||
101 | .item = &CBIGNUM_it, | ||
102 | }, | ||
103 | { | ||
104 | .flags = 0, | ||
105 | .tag = 0, | ||
106 | .offset = offsetof(DSA_SIG, s), | ||
107 | .field_name = "s", | ||
108 | .item = &CBIGNUM_it, | ||
109 | }, | ||
110 | }; | ||
111 | |||
112 | const ASN1_ITEM DSA_SIG_it = { | ||
113 | .itype = ASN1_ITYPE_SEQUENCE, | ||
114 | .utype = V_ASN1_SEQUENCE, | ||
115 | .templates = DSA_SIG_seq_tt, | ||
116 | .tcount = sizeof(DSA_SIG_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
117 | .funcs = &DSA_SIG_aux, | ||
118 | .size = sizeof(DSA_SIG), | ||
119 | .sname = "DSA_SIG", | ||
120 | }; | ||
91 | 121 | ||
92 | 122 | ||
93 | DSA_SIG * | 123 | DSA_SIG * |
@@ -120,14 +150,68 @@ dsa_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg) | |||
120 | return 1; | 150 | return 1; |
121 | } | 151 | } |
122 | 152 | ||
123 | ASN1_SEQUENCE_cb(DSAPrivateKey, dsa_cb) = { | 153 | static const ASN1_AUX DSAPrivateKey_aux = { |
124 | ASN1_SIMPLE(DSA, version, LONG), | 154 | .app_data = NULL, |
125 | ASN1_SIMPLE(DSA, p, BIGNUM), | 155 | .flags = 0, |
126 | ASN1_SIMPLE(DSA, q, BIGNUM), | 156 | .ref_offset = 0, |
127 | ASN1_SIMPLE(DSA, g, BIGNUM), | 157 | .ref_lock = 0, |
128 | ASN1_SIMPLE(DSA, pub_key, BIGNUM), | 158 | .asn1_cb = dsa_cb, |
129 | ASN1_SIMPLE(DSA, priv_key, BIGNUM) | 159 | .enc_offset = 0, |
130 | } ASN1_SEQUENCE_END_cb(DSA, DSAPrivateKey) | 160 | }; |
161 | static const ASN1_TEMPLATE DSAPrivateKey_seq_tt[] = { | ||
162 | { | ||
163 | .flags = 0, | ||
164 | .tag = 0, | ||
165 | .offset = offsetof(DSA, version), | ||
166 | .field_name = "version", | ||
167 | .item = &LONG_it, | ||
168 | }, | ||
169 | { | ||
170 | .flags = 0, | ||
171 | .tag = 0, | ||
172 | .offset = offsetof(DSA, p), | ||
173 | .field_name = "p", | ||
174 | .item = &BIGNUM_it, | ||
175 | }, | ||
176 | { | ||
177 | .flags = 0, | ||
178 | .tag = 0, | ||
179 | .offset = offsetof(DSA, q), | ||
180 | .field_name = "q", | ||
181 | .item = &BIGNUM_it, | ||
182 | }, | ||
183 | { | ||
184 | .flags = 0, | ||
185 | .tag = 0, | ||
186 | .offset = offsetof(DSA, g), | ||
187 | .field_name = "g", | ||
188 | .item = &BIGNUM_it, | ||
189 | }, | ||
190 | { | ||
191 | .flags = 0, | ||
192 | .tag = 0, | ||
193 | .offset = offsetof(DSA, pub_key), | ||
194 | .field_name = "pub_key", | ||
195 | .item = &BIGNUM_it, | ||
196 | }, | ||
197 | { | ||
198 | .flags = 0, | ||
199 | .tag = 0, | ||
200 | .offset = offsetof(DSA, priv_key), | ||
201 | .field_name = "priv_key", | ||
202 | .item = &BIGNUM_it, | ||
203 | }, | ||
204 | }; | ||
205 | |||
206 | const ASN1_ITEM DSAPrivateKey_it = { | ||
207 | .itype = ASN1_ITYPE_SEQUENCE, | ||
208 | .utype = V_ASN1_SEQUENCE, | ||
209 | .templates = DSAPrivateKey_seq_tt, | ||
210 | .tcount = sizeof(DSAPrivateKey_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
211 | .funcs = &DSAPrivateKey_aux, | ||
212 | .size = sizeof(DSA), | ||
213 | .sname = "DSA", | ||
214 | }; | ||
131 | 215 | ||
132 | 216 | ||
133 | DSA * | 217 | DSA * |
@@ -143,11 +227,47 @@ i2d_DSAPrivateKey(const DSA *a, unsigned char **out) | |||
143 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &DSAPrivateKey_it); | 227 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &DSAPrivateKey_it); |
144 | } | 228 | } |
145 | 229 | ||
146 | ASN1_SEQUENCE_cb(DSAparams, dsa_cb) = { | 230 | static const ASN1_AUX DSAparams_aux = { |
147 | ASN1_SIMPLE(DSA, p, BIGNUM), | 231 | .app_data = NULL, |
148 | ASN1_SIMPLE(DSA, q, BIGNUM), | 232 | .flags = 0, |
149 | ASN1_SIMPLE(DSA, g, BIGNUM), | 233 | .ref_offset = 0, |
150 | } ASN1_SEQUENCE_END_cb(DSA, DSAparams) | 234 | .ref_lock = 0, |
235 | .asn1_cb = dsa_cb, | ||
236 | .enc_offset = 0, | ||
237 | }; | ||
238 | static const ASN1_TEMPLATE DSAparams_seq_tt[] = { | ||
239 | { | ||
240 | .flags = 0, | ||
241 | .tag = 0, | ||
242 | .offset = offsetof(DSA, p), | ||
243 | .field_name = "p", | ||
244 | .item = &BIGNUM_it, | ||
245 | }, | ||
246 | { | ||
247 | .flags = 0, | ||
248 | .tag = 0, | ||
249 | .offset = offsetof(DSA, q), | ||
250 | .field_name = "q", | ||
251 | .item = &BIGNUM_it, | ||
252 | }, | ||
253 | { | ||
254 | .flags = 0, | ||
255 | .tag = 0, | ||
256 | .offset = offsetof(DSA, g), | ||
257 | .field_name = "g", | ||
258 | .item = &BIGNUM_it, | ||
259 | }, | ||
260 | }; | ||
261 | |||
262 | const ASN1_ITEM DSAparams_it = { | ||
263 | .itype = ASN1_ITYPE_SEQUENCE, | ||
264 | .utype = V_ASN1_SEQUENCE, | ||
265 | .templates = DSAparams_seq_tt, | ||
266 | .tcount = sizeof(DSAparams_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
267 | .funcs = &DSAparams_aux, | ||
268 | .size = sizeof(DSA), | ||
269 | .sname = "DSA", | ||
270 | }; | ||
151 | 271 | ||
152 | 272 | ||
153 | DSA * | 273 | DSA * |
@@ -170,17 +290,81 @@ i2d_DSAparams(const DSA *a, unsigned char **out) | |||
170 | * in a SEQUENCE | 290 | * in a SEQUENCE |
171 | */ | 291 | */ |
172 | 292 | ||
173 | ASN1_SEQUENCE(dsa_pub_internal) = { | 293 | static const ASN1_TEMPLATE dsa_pub_internal_seq_tt[] = { |
174 | ASN1_SIMPLE(DSA, pub_key, BIGNUM), | 294 | { |
175 | ASN1_SIMPLE(DSA, p, BIGNUM), | 295 | .flags = 0, |
176 | ASN1_SIMPLE(DSA, q, BIGNUM), | 296 | .tag = 0, |
177 | ASN1_SIMPLE(DSA, g, BIGNUM) | 297 | .offset = offsetof(DSA, pub_key), |
178 | } ASN1_SEQUENCE_END_name(DSA, dsa_pub_internal) | 298 | .field_name = "pub_key", |
179 | 299 | .item = &BIGNUM_it, | |
180 | ASN1_CHOICE_cb(DSAPublicKey, dsa_cb) = { | 300 | }, |
181 | ASN1_SIMPLE(DSA, pub_key, BIGNUM), | 301 | { |
182 | ASN1_EX_COMBINE(0, 0, dsa_pub_internal) | 302 | .flags = 0, |
183 | } ASN1_CHOICE_END_cb(DSA, DSAPublicKey, write_params) | 303 | .tag = 0, |
304 | .offset = offsetof(DSA, p), | ||
305 | .field_name = "p", | ||
306 | .item = &BIGNUM_it, | ||
307 | }, | ||
308 | { | ||
309 | .flags = 0, | ||
310 | .tag = 0, | ||
311 | .offset = offsetof(DSA, q), | ||
312 | .field_name = "q", | ||
313 | .item = &BIGNUM_it, | ||
314 | }, | ||
315 | { | ||
316 | .flags = 0, | ||
317 | .tag = 0, | ||
318 | .offset = offsetof(DSA, g), | ||
319 | .field_name = "g", | ||
320 | .item = &BIGNUM_it, | ||
321 | }, | ||
322 | }; | ||
323 | |||
324 | const ASN1_ITEM dsa_pub_internal_it = { | ||
325 | .itype = ASN1_ITYPE_SEQUENCE, | ||
326 | .utype = V_ASN1_SEQUENCE, | ||
327 | .templates = dsa_pub_internal_seq_tt, | ||
328 | .tcount = sizeof(dsa_pub_internal_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
329 | .funcs = NULL, | ||
330 | .size = sizeof(DSA), | ||
331 | .sname = "DSA", | ||
332 | }; | ||
333 | |||
334 | static const ASN1_AUX DSAPublicKey_aux = { | ||
335 | .app_data = NULL, | ||
336 | .flags = 0, | ||
337 | .ref_offset = 0, | ||
338 | .ref_lock = 0, | ||
339 | .asn1_cb = dsa_cb, | ||
340 | .enc_offset = 0, | ||
341 | }; | ||
342 | static const ASN1_TEMPLATE DSAPublicKey_ch_tt[] = { | ||
343 | { | ||
344 | .flags = 0, | ||
345 | .tag = 0, | ||
346 | .offset = offsetof(DSA, pub_key), | ||
347 | .field_name = "pub_key", | ||
348 | .item = &BIGNUM_it, | ||
349 | }, | ||
350 | { | ||
351 | .flags = 0 | ASN1_TFLG_COMBINE, | ||
352 | .tag = 0, | ||
353 | .offset = 0, | ||
354 | .field_name = NULL, | ||
355 | .item = &dsa_pub_internal_it, | ||
356 | }, | ||
357 | }; | ||
358 | |||
359 | const ASN1_ITEM DSAPublicKey_it = { | ||
360 | .itype = ASN1_ITYPE_CHOICE, | ||
361 | .utype = offsetof(DSA, write_params), | ||
362 | .templates = DSAPublicKey_ch_tt, | ||
363 | .tcount = sizeof(DSAPublicKey_ch_tt) / sizeof(ASN1_TEMPLATE), | ||
364 | .funcs = &DSAPublicKey_aux, | ||
365 | .size = sizeof(DSA), | ||
366 | .sname = "DSA", | ||
367 | }; | ||
184 | 368 | ||
185 | 369 | ||
186 | DSA * | 370 | DSA * |
diff --git a/src/lib/libcrypto/rsa/rsa_asn1.c b/src/lib/libcrypto/rsa/rsa_asn1.c index 525c9455bd..27afdece00 100644 --- a/src/lib/libcrypto/rsa/rsa_asn1.c +++ b/src/lib/libcrypto/rsa/rsa_asn1.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: rsa_asn1.c,v 1.11 2015/02/10 05:12:23 jsing Exp $ */ | 1 | /* $OpenBSD: rsa_asn1.c,v 1.12 2015/02/14 15:06:55 jsing 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 | */ |
@@ -80,30 +80,166 @@ rsa_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg) | |||
80 | return 1; | 80 | return 1; |
81 | } | 81 | } |
82 | 82 | ||
83 | ASN1_SEQUENCE_cb(RSAPrivateKey, rsa_cb) = { | 83 | static const ASN1_AUX RSAPrivateKey_aux = { |
84 | ASN1_SIMPLE(RSA, version, LONG), | 84 | .app_data = NULL, |
85 | ASN1_SIMPLE(RSA, n, BIGNUM), | 85 | .flags = 0, |
86 | ASN1_SIMPLE(RSA, e, BIGNUM), | 86 | .ref_offset = 0, |
87 | ASN1_SIMPLE(RSA, d, BIGNUM), | 87 | .ref_lock = 0, |
88 | ASN1_SIMPLE(RSA, p, BIGNUM), | 88 | .asn1_cb = rsa_cb, |
89 | ASN1_SIMPLE(RSA, q, BIGNUM), | 89 | .enc_offset = 0, |
90 | ASN1_SIMPLE(RSA, dmp1, BIGNUM), | 90 | }; |
91 | ASN1_SIMPLE(RSA, dmq1, BIGNUM), | 91 | static const ASN1_TEMPLATE RSAPrivateKey_seq_tt[] = { |
92 | ASN1_SIMPLE(RSA, iqmp, BIGNUM) | 92 | { |
93 | } ASN1_SEQUENCE_END_cb(RSA, RSAPrivateKey) | 93 | .flags = 0, |
94 | 94 | .tag = 0, | |
95 | 95 | .offset = offsetof(RSA, version), | |
96 | ASN1_SEQUENCE_cb(RSAPublicKey, rsa_cb) = { | 96 | .field_name = "version", |
97 | ASN1_SIMPLE(RSA, n, BIGNUM), | 97 | .item = &LONG_it, |
98 | ASN1_SIMPLE(RSA, e, BIGNUM), | 98 | }, |
99 | } ASN1_SEQUENCE_END_cb(RSA, RSAPublicKey) | 99 | { |
100 | 100 | .flags = 0, | |
101 | ASN1_SEQUENCE(RSA_PSS_PARAMS) = { | 101 | .tag = 0, |
102 | ASN1_EXP_OPT(RSA_PSS_PARAMS, hashAlgorithm, X509_ALGOR, 0), | 102 | .offset = offsetof(RSA, n), |
103 | ASN1_EXP_OPT(RSA_PSS_PARAMS, maskGenAlgorithm, X509_ALGOR, 1), | 103 | .field_name = "n", |
104 | ASN1_EXP_OPT(RSA_PSS_PARAMS, saltLength, ASN1_INTEGER, 2), | 104 | .item = &BIGNUM_it, |
105 | ASN1_EXP_OPT(RSA_PSS_PARAMS, trailerField, ASN1_INTEGER, 3) | 105 | }, |
106 | } ASN1_SEQUENCE_END(RSA_PSS_PARAMS) | 106 | { |
107 | .flags = 0, | ||
108 | .tag = 0, | ||
109 | .offset = offsetof(RSA, e), | ||
110 | .field_name = "e", | ||
111 | .item = &BIGNUM_it, | ||
112 | }, | ||
113 | { | ||
114 | .flags = 0, | ||
115 | .tag = 0, | ||
116 | .offset = offsetof(RSA, d), | ||
117 | .field_name = "d", | ||
118 | .item = &BIGNUM_it, | ||
119 | }, | ||
120 | { | ||
121 | .flags = 0, | ||
122 | .tag = 0, | ||
123 | .offset = offsetof(RSA, p), | ||
124 | .field_name = "p", | ||
125 | .item = &BIGNUM_it, | ||
126 | }, | ||
127 | { | ||
128 | .flags = 0, | ||
129 | .tag = 0, | ||
130 | .offset = offsetof(RSA, q), | ||
131 | .field_name = "q", | ||
132 | .item = &BIGNUM_it, | ||
133 | }, | ||
134 | { | ||
135 | .flags = 0, | ||
136 | .tag = 0, | ||
137 | .offset = offsetof(RSA, dmp1), | ||
138 | .field_name = "dmp1", | ||
139 | .item = &BIGNUM_it, | ||
140 | }, | ||
141 | { | ||
142 | .flags = 0, | ||
143 | .tag = 0, | ||
144 | .offset = offsetof(RSA, dmq1), | ||
145 | .field_name = "dmq1", | ||
146 | .item = &BIGNUM_it, | ||
147 | }, | ||
148 | { | ||
149 | .flags = 0, | ||
150 | .tag = 0, | ||
151 | .offset = offsetof(RSA, iqmp), | ||
152 | .field_name = "iqmp", | ||
153 | .item = &BIGNUM_it, | ||
154 | }, | ||
155 | }; | ||
156 | |||
157 | const ASN1_ITEM RSAPrivateKey_it = { | ||
158 | .itype = ASN1_ITYPE_SEQUENCE, | ||
159 | .utype = V_ASN1_SEQUENCE, | ||
160 | .templates = RSAPrivateKey_seq_tt, | ||
161 | .tcount = sizeof(RSAPrivateKey_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
162 | .funcs = &RSAPrivateKey_aux, | ||
163 | .size = sizeof(RSA), | ||
164 | .sname = "RSA", | ||
165 | }; | ||
166 | |||
167 | |||
168 | static const ASN1_AUX RSAPublicKey_aux = { | ||
169 | .app_data = NULL, | ||
170 | .flags = 0, | ||
171 | .ref_offset = 0, | ||
172 | .ref_lock = 0, | ||
173 | .asn1_cb = rsa_cb, | ||
174 | .enc_offset = 0, | ||
175 | }; | ||
176 | static const ASN1_TEMPLATE RSAPublicKey_seq_tt[] = { | ||
177 | { | ||
178 | .flags = 0, | ||
179 | .tag = 0, | ||
180 | .offset = offsetof(RSA, n), | ||
181 | .field_name = "n", | ||
182 | .item = &BIGNUM_it, | ||
183 | }, | ||
184 | { | ||
185 | .flags = 0, | ||
186 | .tag = 0, | ||
187 | .offset = offsetof(RSA, e), | ||
188 | .field_name = "e", | ||
189 | .item = &BIGNUM_it, | ||
190 | }, | ||
191 | }; | ||
192 | |||
193 | const ASN1_ITEM RSAPublicKey_it = { | ||
194 | .itype = ASN1_ITYPE_SEQUENCE, | ||
195 | .utype = V_ASN1_SEQUENCE, | ||
196 | .templates = RSAPublicKey_seq_tt, | ||
197 | .tcount = sizeof(RSAPublicKey_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
198 | .funcs = &RSAPublicKey_aux, | ||
199 | .size = sizeof(RSA), | ||
200 | .sname = "RSA", | ||
201 | }; | ||
202 | |||
203 | static const ASN1_TEMPLATE RSA_PSS_PARAMS_seq_tt[] = { | ||
204 | { | ||
205 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
206 | .tag = 0, | ||
207 | .offset = offsetof(RSA_PSS_PARAMS, hashAlgorithm), | ||
208 | .field_name = "hashAlgorithm", | ||
209 | .item = &X509_ALGOR_it, | ||
210 | }, | ||
211 | { | ||
212 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
213 | .tag = 1, | ||
214 | .offset = offsetof(RSA_PSS_PARAMS, maskGenAlgorithm), | ||
215 | .field_name = "maskGenAlgorithm", | ||
216 | .item = &X509_ALGOR_it, | ||
217 | }, | ||
218 | { | ||
219 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
220 | .tag = 2, | ||
221 | .offset = offsetof(RSA_PSS_PARAMS, saltLength), | ||
222 | .field_name = "saltLength", | ||
223 | .item = &ASN1_INTEGER_it, | ||
224 | }, | ||
225 | { | ||
226 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
227 | .tag = 3, | ||
228 | .offset = offsetof(RSA_PSS_PARAMS, trailerField), | ||
229 | .field_name = "trailerField", | ||
230 | .item = &ASN1_INTEGER_it, | ||
231 | }, | ||
232 | }; | ||
233 | |||
234 | const ASN1_ITEM RSA_PSS_PARAMS_it = { | ||
235 | .itype = ASN1_ITYPE_SEQUENCE, | ||
236 | .utype = V_ASN1_SEQUENCE, | ||
237 | .templates = RSA_PSS_PARAMS_seq_tt, | ||
238 | .tcount = sizeof(RSA_PSS_PARAMS_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
239 | .funcs = NULL, | ||
240 | .size = sizeof(RSA_PSS_PARAMS), | ||
241 | .sname = "RSA_PSS_PARAMS", | ||
242 | }; | ||
107 | 243 | ||
108 | 244 | ||
109 | RSA_PSS_PARAMS * | 245 | RSA_PSS_PARAMS * |
diff --git a/src/lib/libssl/src/crypto/dh/dh_asn1.c b/src/lib/libssl/src/crypto/dh/dh_asn1.c index 9d76974659..7060130ed8 100644 --- a/src/lib/libssl/src/crypto/dh/dh_asn1.c +++ b/src/lib/libssl/src/crypto/dh/dh_asn1.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: dh_asn1.c,v 1.7 2015/02/10 05:12:23 jsing Exp $ */ | 1 | /* $OpenBSD: dh_asn1.c,v 1.8 2015/02/14 15:06:55 jsing 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 | */ |
@@ -80,11 +80,47 @@ dh_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg) | |||
80 | return 1; | 80 | return 1; |
81 | } | 81 | } |
82 | 82 | ||
83 | ASN1_SEQUENCE_cb(DHparams, dh_cb) = { | 83 | static const ASN1_AUX DHparams_aux = { |
84 | ASN1_SIMPLE(DH, p, BIGNUM), | 84 | .app_data = NULL, |
85 | ASN1_SIMPLE(DH, g, BIGNUM), | 85 | .flags = 0, |
86 | ASN1_OPT(DH, length, ZLONG), | 86 | .ref_offset = 0, |
87 | } ASN1_SEQUENCE_END_cb(DH, DHparams) | 87 | .ref_lock = 0, |
88 | .asn1_cb = dh_cb, | ||
89 | .enc_offset = 0, | ||
90 | }; | ||
91 | static const ASN1_TEMPLATE DHparams_seq_tt[] = { | ||
92 | { | ||
93 | .flags = 0, | ||
94 | .tag = 0, | ||
95 | .offset = offsetof(DH, p), | ||
96 | .field_name = "p", | ||
97 | .item = &BIGNUM_it, | ||
98 | }, | ||
99 | { | ||
100 | .flags = 0, | ||
101 | .tag = 0, | ||
102 | .offset = offsetof(DH, g), | ||
103 | .field_name = "g", | ||
104 | .item = &BIGNUM_it, | ||
105 | }, | ||
106 | { | ||
107 | .flags = ASN1_TFLG_OPTIONAL, | ||
108 | .tag = 0, | ||
109 | .offset = offsetof(DH, length), | ||
110 | .field_name = "length", | ||
111 | .item = &ZLONG_it, | ||
112 | }, | ||
113 | }; | ||
114 | |||
115 | const ASN1_ITEM DHparams_it = { | ||
116 | .itype = ASN1_ITYPE_SEQUENCE, | ||
117 | .utype = V_ASN1_SEQUENCE, | ||
118 | .templates = DHparams_seq_tt, | ||
119 | .tcount = sizeof(DHparams_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
120 | .funcs = &DHparams_aux, | ||
121 | .size = sizeof(DH), | ||
122 | .sname = "DH", | ||
123 | }; | ||
88 | 124 | ||
89 | 125 | ||
90 | DH * | 126 | DH * |
diff --git a/src/lib/libssl/src/crypto/dsa/dsa_asn1.c b/src/lib/libssl/src/crypto/dsa/dsa_asn1.c index c6b00923fc..8c5d93105c 100644 --- a/src/lib/libssl/src/crypto/dsa/dsa_asn1.c +++ b/src/lib/libssl/src/crypto/dsa/dsa_asn1.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: dsa_asn1.c,v 1.15 2015/02/10 05:12:23 jsing Exp $ */ | 1 | /* $OpenBSD: dsa_asn1.c,v 1.16 2015/02/14 15:06:55 jsing 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 | */ |
@@ -84,10 +84,40 @@ sig_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg) | |||
84 | return 1; | 84 | return 1; |
85 | } | 85 | } |
86 | 86 | ||
87 | ASN1_SEQUENCE_cb(DSA_SIG, sig_cb) = { | 87 | static const ASN1_AUX DSA_SIG_aux = { |
88 | ASN1_SIMPLE(DSA_SIG, r, CBIGNUM), | 88 | .app_data = NULL, |
89 | ASN1_SIMPLE(DSA_SIG, s, CBIGNUM) | 89 | .flags = 0, |
90 | } ASN1_SEQUENCE_END_cb(DSA_SIG, DSA_SIG) | 90 | .ref_offset = 0, |
91 | .ref_lock = 0, | ||
92 | .asn1_cb = sig_cb, | ||
93 | .enc_offset = 0, | ||
94 | }; | ||
95 | static const ASN1_TEMPLATE DSA_SIG_seq_tt[] = { | ||
96 | { | ||
97 | .flags = 0, | ||
98 | .tag = 0, | ||
99 | .offset = offsetof(DSA_SIG, r), | ||
100 | .field_name = "r", | ||
101 | .item = &CBIGNUM_it, | ||
102 | }, | ||
103 | { | ||
104 | .flags = 0, | ||
105 | .tag = 0, | ||
106 | .offset = offsetof(DSA_SIG, s), | ||
107 | .field_name = "s", | ||
108 | .item = &CBIGNUM_it, | ||
109 | }, | ||
110 | }; | ||
111 | |||
112 | const ASN1_ITEM DSA_SIG_it = { | ||
113 | .itype = ASN1_ITYPE_SEQUENCE, | ||
114 | .utype = V_ASN1_SEQUENCE, | ||
115 | .templates = DSA_SIG_seq_tt, | ||
116 | .tcount = sizeof(DSA_SIG_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
117 | .funcs = &DSA_SIG_aux, | ||
118 | .size = sizeof(DSA_SIG), | ||
119 | .sname = "DSA_SIG", | ||
120 | }; | ||
91 | 121 | ||
92 | 122 | ||
93 | DSA_SIG * | 123 | DSA_SIG * |
@@ -120,14 +150,68 @@ dsa_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg) | |||
120 | return 1; | 150 | return 1; |
121 | } | 151 | } |
122 | 152 | ||
123 | ASN1_SEQUENCE_cb(DSAPrivateKey, dsa_cb) = { | 153 | static const ASN1_AUX DSAPrivateKey_aux = { |
124 | ASN1_SIMPLE(DSA, version, LONG), | 154 | .app_data = NULL, |
125 | ASN1_SIMPLE(DSA, p, BIGNUM), | 155 | .flags = 0, |
126 | ASN1_SIMPLE(DSA, q, BIGNUM), | 156 | .ref_offset = 0, |
127 | ASN1_SIMPLE(DSA, g, BIGNUM), | 157 | .ref_lock = 0, |
128 | ASN1_SIMPLE(DSA, pub_key, BIGNUM), | 158 | .asn1_cb = dsa_cb, |
129 | ASN1_SIMPLE(DSA, priv_key, BIGNUM) | 159 | .enc_offset = 0, |
130 | } ASN1_SEQUENCE_END_cb(DSA, DSAPrivateKey) | 160 | }; |
161 | static const ASN1_TEMPLATE DSAPrivateKey_seq_tt[] = { | ||
162 | { | ||
163 | .flags = 0, | ||
164 | .tag = 0, | ||
165 | .offset = offsetof(DSA, version), | ||
166 | .field_name = "version", | ||
167 | .item = &LONG_it, | ||
168 | }, | ||
169 | { | ||
170 | .flags = 0, | ||
171 | .tag = 0, | ||
172 | .offset = offsetof(DSA, p), | ||
173 | .field_name = "p", | ||
174 | .item = &BIGNUM_it, | ||
175 | }, | ||
176 | { | ||
177 | .flags = 0, | ||
178 | .tag = 0, | ||
179 | .offset = offsetof(DSA, q), | ||
180 | .field_name = "q", | ||
181 | .item = &BIGNUM_it, | ||
182 | }, | ||
183 | { | ||
184 | .flags = 0, | ||
185 | .tag = 0, | ||
186 | .offset = offsetof(DSA, g), | ||
187 | .field_name = "g", | ||
188 | .item = &BIGNUM_it, | ||
189 | }, | ||
190 | { | ||
191 | .flags = 0, | ||
192 | .tag = 0, | ||
193 | .offset = offsetof(DSA, pub_key), | ||
194 | .field_name = "pub_key", | ||
195 | .item = &BIGNUM_it, | ||
196 | }, | ||
197 | { | ||
198 | .flags = 0, | ||
199 | .tag = 0, | ||
200 | .offset = offsetof(DSA, priv_key), | ||
201 | .field_name = "priv_key", | ||
202 | .item = &BIGNUM_it, | ||
203 | }, | ||
204 | }; | ||
205 | |||
206 | const ASN1_ITEM DSAPrivateKey_it = { | ||
207 | .itype = ASN1_ITYPE_SEQUENCE, | ||
208 | .utype = V_ASN1_SEQUENCE, | ||
209 | .templates = DSAPrivateKey_seq_tt, | ||
210 | .tcount = sizeof(DSAPrivateKey_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
211 | .funcs = &DSAPrivateKey_aux, | ||
212 | .size = sizeof(DSA), | ||
213 | .sname = "DSA", | ||
214 | }; | ||
131 | 215 | ||
132 | 216 | ||
133 | DSA * | 217 | DSA * |
@@ -143,11 +227,47 @@ i2d_DSAPrivateKey(const DSA *a, unsigned char **out) | |||
143 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &DSAPrivateKey_it); | 227 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &DSAPrivateKey_it); |
144 | } | 228 | } |
145 | 229 | ||
146 | ASN1_SEQUENCE_cb(DSAparams, dsa_cb) = { | 230 | static const ASN1_AUX DSAparams_aux = { |
147 | ASN1_SIMPLE(DSA, p, BIGNUM), | 231 | .app_data = NULL, |
148 | ASN1_SIMPLE(DSA, q, BIGNUM), | 232 | .flags = 0, |
149 | ASN1_SIMPLE(DSA, g, BIGNUM), | 233 | .ref_offset = 0, |
150 | } ASN1_SEQUENCE_END_cb(DSA, DSAparams) | 234 | .ref_lock = 0, |
235 | .asn1_cb = dsa_cb, | ||
236 | .enc_offset = 0, | ||
237 | }; | ||
238 | static const ASN1_TEMPLATE DSAparams_seq_tt[] = { | ||
239 | { | ||
240 | .flags = 0, | ||
241 | .tag = 0, | ||
242 | .offset = offsetof(DSA, p), | ||
243 | .field_name = "p", | ||
244 | .item = &BIGNUM_it, | ||
245 | }, | ||
246 | { | ||
247 | .flags = 0, | ||
248 | .tag = 0, | ||
249 | .offset = offsetof(DSA, q), | ||
250 | .field_name = "q", | ||
251 | .item = &BIGNUM_it, | ||
252 | }, | ||
253 | { | ||
254 | .flags = 0, | ||
255 | .tag = 0, | ||
256 | .offset = offsetof(DSA, g), | ||
257 | .field_name = "g", | ||
258 | .item = &BIGNUM_it, | ||
259 | }, | ||
260 | }; | ||
261 | |||
262 | const ASN1_ITEM DSAparams_it = { | ||
263 | .itype = ASN1_ITYPE_SEQUENCE, | ||
264 | .utype = V_ASN1_SEQUENCE, | ||
265 | .templates = DSAparams_seq_tt, | ||
266 | .tcount = sizeof(DSAparams_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
267 | .funcs = &DSAparams_aux, | ||
268 | .size = sizeof(DSA), | ||
269 | .sname = "DSA", | ||
270 | }; | ||
151 | 271 | ||
152 | 272 | ||
153 | DSA * | 273 | DSA * |
@@ -170,17 +290,81 @@ i2d_DSAparams(const DSA *a, unsigned char **out) | |||
170 | * in a SEQUENCE | 290 | * in a SEQUENCE |
171 | */ | 291 | */ |
172 | 292 | ||
173 | ASN1_SEQUENCE(dsa_pub_internal) = { | 293 | static const ASN1_TEMPLATE dsa_pub_internal_seq_tt[] = { |
174 | ASN1_SIMPLE(DSA, pub_key, BIGNUM), | 294 | { |
175 | ASN1_SIMPLE(DSA, p, BIGNUM), | 295 | .flags = 0, |
176 | ASN1_SIMPLE(DSA, q, BIGNUM), | 296 | .tag = 0, |
177 | ASN1_SIMPLE(DSA, g, BIGNUM) | 297 | .offset = offsetof(DSA, pub_key), |
178 | } ASN1_SEQUENCE_END_name(DSA, dsa_pub_internal) | 298 | .field_name = "pub_key", |
179 | 299 | .item = &BIGNUM_it, | |
180 | ASN1_CHOICE_cb(DSAPublicKey, dsa_cb) = { | 300 | }, |
181 | ASN1_SIMPLE(DSA, pub_key, BIGNUM), | 301 | { |
182 | ASN1_EX_COMBINE(0, 0, dsa_pub_internal) | 302 | .flags = 0, |
183 | } ASN1_CHOICE_END_cb(DSA, DSAPublicKey, write_params) | 303 | .tag = 0, |
304 | .offset = offsetof(DSA, p), | ||
305 | .field_name = "p", | ||
306 | .item = &BIGNUM_it, | ||
307 | }, | ||
308 | { | ||
309 | .flags = 0, | ||
310 | .tag = 0, | ||
311 | .offset = offsetof(DSA, q), | ||
312 | .field_name = "q", | ||
313 | .item = &BIGNUM_it, | ||
314 | }, | ||
315 | { | ||
316 | .flags = 0, | ||
317 | .tag = 0, | ||
318 | .offset = offsetof(DSA, g), | ||
319 | .field_name = "g", | ||
320 | .item = &BIGNUM_it, | ||
321 | }, | ||
322 | }; | ||
323 | |||
324 | const ASN1_ITEM dsa_pub_internal_it = { | ||
325 | .itype = ASN1_ITYPE_SEQUENCE, | ||
326 | .utype = V_ASN1_SEQUENCE, | ||
327 | .templates = dsa_pub_internal_seq_tt, | ||
328 | .tcount = sizeof(dsa_pub_internal_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
329 | .funcs = NULL, | ||
330 | .size = sizeof(DSA), | ||
331 | .sname = "DSA", | ||
332 | }; | ||
333 | |||
334 | static const ASN1_AUX DSAPublicKey_aux = { | ||
335 | .app_data = NULL, | ||
336 | .flags = 0, | ||
337 | .ref_offset = 0, | ||
338 | .ref_lock = 0, | ||
339 | .asn1_cb = dsa_cb, | ||
340 | .enc_offset = 0, | ||
341 | }; | ||
342 | static const ASN1_TEMPLATE DSAPublicKey_ch_tt[] = { | ||
343 | { | ||
344 | .flags = 0, | ||
345 | .tag = 0, | ||
346 | .offset = offsetof(DSA, pub_key), | ||
347 | .field_name = "pub_key", | ||
348 | .item = &BIGNUM_it, | ||
349 | }, | ||
350 | { | ||
351 | .flags = 0 | ASN1_TFLG_COMBINE, | ||
352 | .tag = 0, | ||
353 | .offset = 0, | ||
354 | .field_name = NULL, | ||
355 | .item = &dsa_pub_internal_it, | ||
356 | }, | ||
357 | }; | ||
358 | |||
359 | const ASN1_ITEM DSAPublicKey_it = { | ||
360 | .itype = ASN1_ITYPE_CHOICE, | ||
361 | .utype = offsetof(DSA, write_params), | ||
362 | .templates = DSAPublicKey_ch_tt, | ||
363 | .tcount = sizeof(DSAPublicKey_ch_tt) / sizeof(ASN1_TEMPLATE), | ||
364 | .funcs = &DSAPublicKey_aux, | ||
365 | .size = sizeof(DSA), | ||
366 | .sname = "DSA", | ||
367 | }; | ||
184 | 368 | ||
185 | 369 | ||
186 | DSA * | 370 | DSA * |
diff --git a/src/lib/libssl/src/crypto/rsa/rsa_asn1.c b/src/lib/libssl/src/crypto/rsa/rsa_asn1.c index 525c9455bd..27afdece00 100644 --- a/src/lib/libssl/src/crypto/rsa/rsa_asn1.c +++ b/src/lib/libssl/src/crypto/rsa/rsa_asn1.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: rsa_asn1.c,v 1.11 2015/02/10 05:12:23 jsing Exp $ */ | 1 | /* $OpenBSD: rsa_asn1.c,v 1.12 2015/02/14 15:06:55 jsing 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 | */ |
@@ -80,30 +80,166 @@ rsa_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg) | |||
80 | return 1; | 80 | return 1; |
81 | } | 81 | } |
82 | 82 | ||
83 | ASN1_SEQUENCE_cb(RSAPrivateKey, rsa_cb) = { | 83 | static const ASN1_AUX RSAPrivateKey_aux = { |
84 | ASN1_SIMPLE(RSA, version, LONG), | 84 | .app_data = NULL, |
85 | ASN1_SIMPLE(RSA, n, BIGNUM), | 85 | .flags = 0, |
86 | ASN1_SIMPLE(RSA, e, BIGNUM), | 86 | .ref_offset = 0, |
87 | ASN1_SIMPLE(RSA, d, BIGNUM), | 87 | .ref_lock = 0, |
88 | ASN1_SIMPLE(RSA, p, BIGNUM), | 88 | .asn1_cb = rsa_cb, |
89 | ASN1_SIMPLE(RSA, q, BIGNUM), | 89 | .enc_offset = 0, |
90 | ASN1_SIMPLE(RSA, dmp1, BIGNUM), | 90 | }; |
91 | ASN1_SIMPLE(RSA, dmq1, BIGNUM), | 91 | static const ASN1_TEMPLATE RSAPrivateKey_seq_tt[] = { |
92 | ASN1_SIMPLE(RSA, iqmp, BIGNUM) | 92 | { |
93 | } ASN1_SEQUENCE_END_cb(RSA, RSAPrivateKey) | 93 | .flags = 0, |
94 | 94 | .tag = 0, | |
95 | 95 | .offset = offsetof(RSA, version), | |
96 | ASN1_SEQUENCE_cb(RSAPublicKey, rsa_cb) = { | 96 | .field_name = "version", |
97 | ASN1_SIMPLE(RSA, n, BIGNUM), | 97 | .item = &LONG_it, |
98 | ASN1_SIMPLE(RSA, e, BIGNUM), | 98 | }, |
99 | } ASN1_SEQUENCE_END_cb(RSA, RSAPublicKey) | 99 | { |
100 | 100 | .flags = 0, | |
101 | ASN1_SEQUENCE(RSA_PSS_PARAMS) = { | 101 | .tag = 0, |
102 | ASN1_EXP_OPT(RSA_PSS_PARAMS, hashAlgorithm, X509_ALGOR, 0), | 102 | .offset = offsetof(RSA, n), |
103 | ASN1_EXP_OPT(RSA_PSS_PARAMS, maskGenAlgorithm, X509_ALGOR, 1), | 103 | .field_name = "n", |
104 | ASN1_EXP_OPT(RSA_PSS_PARAMS, saltLength, ASN1_INTEGER, 2), | 104 | .item = &BIGNUM_it, |
105 | ASN1_EXP_OPT(RSA_PSS_PARAMS, trailerField, ASN1_INTEGER, 3) | 105 | }, |
106 | } ASN1_SEQUENCE_END(RSA_PSS_PARAMS) | 106 | { |
107 | .flags = 0, | ||
108 | .tag = 0, | ||
109 | .offset = offsetof(RSA, e), | ||
110 | .field_name = "e", | ||
111 | .item = &BIGNUM_it, | ||
112 | }, | ||
113 | { | ||
114 | .flags = 0, | ||
115 | .tag = 0, | ||
116 | .offset = offsetof(RSA, d), | ||
117 | .field_name = "d", | ||
118 | .item = &BIGNUM_it, | ||
119 | }, | ||
120 | { | ||
121 | .flags = 0, | ||
122 | .tag = 0, | ||
123 | .offset = offsetof(RSA, p), | ||
124 | .field_name = "p", | ||
125 | .item = &BIGNUM_it, | ||
126 | }, | ||
127 | { | ||
128 | .flags = 0, | ||
129 | .tag = 0, | ||
130 | .offset = offsetof(RSA, q), | ||
131 | .field_name = "q", | ||
132 | .item = &BIGNUM_it, | ||
133 | }, | ||
134 | { | ||
135 | .flags = 0, | ||
136 | .tag = 0, | ||
137 | .offset = offsetof(RSA, dmp1), | ||
138 | .field_name = "dmp1", | ||
139 | .item = &BIGNUM_it, | ||
140 | }, | ||
141 | { | ||
142 | .flags = 0, | ||
143 | .tag = 0, | ||
144 | .offset = offsetof(RSA, dmq1), | ||
145 | .field_name = "dmq1", | ||
146 | .item = &BIGNUM_it, | ||
147 | }, | ||
148 | { | ||
149 | .flags = 0, | ||
150 | .tag = 0, | ||
151 | .offset = offsetof(RSA, iqmp), | ||
152 | .field_name = "iqmp", | ||
153 | .item = &BIGNUM_it, | ||
154 | }, | ||
155 | }; | ||
156 | |||
157 | const ASN1_ITEM RSAPrivateKey_it = { | ||
158 | .itype = ASN1_ITYPE_SEQUENCE, | ||
159 | .utype = V_ASN1_SEQUENCE, | ||
160 | .templates = RSAPrivateKey_seq_tt, | ||
161 | .tcount = sizeof(RSAPrivateKey_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
162 | .funcs = &RSAPrivateKey_aux, | ||
163 | .size = sizeof(RSA), | ||
164 | .sname = "RSA", | ||
165 | }; | ||
166 | |||
167 | |||
168 | static const ASN1_AUX RSAPublicKey_aux = { | ||
169 | .app_data = NULL, | ||
170 | .flags = 0, | ||
171 | .ref_offset = 0, | ||
172 | .ref_lock = 0, | ||
173 | .asn1_cb = rsa_cb, | ||
174 | .enc_offset = 0, | ||
175 | }; | ||
176 | static const ASN1_TEMPLATE RSAPublicKey_seq_tt[] = { | ||
177 | { | ||
178 | .flags = 0, | ||
179 | .tag = 0, | ||
180 | .offset = offsetof(RSA, n), | ||
181 | .field_name = "n", | ||
182 | .item = &BIGNUM_it, | ||
183 | }, | ||
184 | { | ||
185 | .flags = 0, | ||
186 | .tag = 0, | ||
187 | .offset = offsetof(RSA, e), | ||
188 | .field_name = "e", | ||
189 | .item = &BIGNUM_it, | ||
190 | }, | ||
191 | }; | ||
192 | |||
193 | const ASN1_ITEM RSAPublicKey_it = { | ||
194 | .itype = ASN1_ITYPE_SEQUENCE, | ||
195 | .utype = V_ASN1_SEQUENCE, | ||
196 | .templates = RSAPublicKey_seq_tt, | ||
197 | .tcount = sizeof(RSAPublicKey_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
198 | .funcs = &RSAPublicKey_aux, | ||
199 | .size = sizeof(RSA), | ||
200 | .sname = "RSA", | ||
201 | }; | ||
202 | |||
203 | static const ASN1_TEMPLATE RSA_PSS_PARAMS_seq_tt[] = { | ||
204 | { | ||
205 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
206 | .tag = 0, | ||
207 | .offset = offsetof(RSA_PSS_PARAMS, hashAlgorithm), | ||
208 | .field_name = "hashAlgorithm", | ||
209 | .item = &X509_ALGOR_it, | ||
210 | }, | ||
211 | { | ||
212 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
213 | .tag = 1, | ||
214 | .offset = offsetof(RSA_PSS_PARAMS, maskGenAlgorithm), | ||
215 | .field_name = "maskGenAlgorithm", | ||
216 | .item = &X509_ALGOR_it, | ||
217 | }, | ||
218 | { | ||
219 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
220 | .tag = 2, | ||
221 | .offset = offsetof(RSA_PSS_PARAMS, saltLength), | ||
222 | .field_name = "saltLength", | ||
223 | .item = &ASN1_INTEGER_it, | ||
224 | }, | ||
225 | { | ||
226 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
227 | .tag = 3, | ||
228 | .offset = offsetof(RSA_PSS_PARAMS, trailerField), | ||
229 | .field_name = "trailerField", | ||
230 | .item = &ASN1_INTEGER_it, | ||
231 | }, | ||
232 | }; | ||
233 | |||
234 | const ASN1_ITEM RSA_PSS_PARAMS_it = { | ||
235 | .itype = ASN1_ITYPE_SEQUENCE, | ||
236 | .utype = V_ASN1_SEQUENCE, | ||
237 | .templates = RSA_PSS_PARAMS_seq_tt, | ||
238 | .tcount = sizeof(RSA_PSS_PARAMS_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
239 | .funcs = NULL, | ||
240 | .size = sizeof(RSA_PSS_PARAMS), | ||
241 | .sname = "RSA_PSS_PARAMS", | ||
242 | }; | ||
107 | 243 | ||
108 | 244 | ||
109 | RSA_PSS_PARAMS * | 245 | RSA_PSS_PARAMS * |