summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/asn1/x_req.c
diff options
context:
space:
mode:
authorjsing <>2015-02-11 03:39:51 +0000
committerjsing <>2015-02-11 03:39:51 +0000
commita4446bfb10ec0a821da3861d90dc625a93d84cff (patch)
treed942bf9cb3a1b441f2c996072292ae69b1aa83d2 /src/lib/libcrypto/asn1/x_req.c
parentdea579e3ced20a997dc9c2b82eb0c086555a68b8 (diff)
downloadopenbsd-a4446bfb10ec0a821da3861d90dc625a93d84cff.tar.gz
openbsd-a4446bfb10ec0a821da3861d90dc625a93d84cff.tar.bz2
openbsd-a4446bfb10ec0a821da3861d90dc625a93d84cff.zip
Expand most of the 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 the generated assembly only differs by changes to line numbers. Discussed with beck@ miod@ tedu@
Diffstat (limited to 'src/lib/libcrypto/asn1/x_req.c')
-rw-r--r--src/lib/libcrypto/asn1/x_req.c102
1 files changed, 90 insertions, 12 deletions
diff --git a/src/lib/libcrypto/asn1/x_req.c b/src/lib/libcrypto/asn1/x_req.c
index 6ffcb9d03c..5e8aa21b0d 100644
--- a/src/lib/libcrypto/asn1/x_req.c
+++ b/src/lib/libcrypto/asn1/x_req.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_req.c,v 1.13 2015/02/10 05:25:45 jsing Exp $ */ 1/* $OpenBSD: x_req.c,v 1.14 2015/02/11 03:39:51 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -92,15 +92,57 @@ rinf_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg)
92 return 1; 92 return 1;
93} 93}
94 94
95ASN1_SEQUENCE_enc(X509_REQ_INFO, enc, rinf_cb) = { 95static const ASN1_AUX X509_REQ_INFO_aux = {
96 ASN1_SIMPLE(X509_REQ_INFO, version, ASN1_INTEGER), 96 .app_data = NULL,
97 ASN1_SIMPLE(X509_REQ_INFO, subject, X509_NAME), 97 .flags = ASN1_AFLG_ENCODING,
98 ASN1_SIMPLE(X509_REQ_INFO, pubkey, X509_PUBKEY), 98 .ref_offset = 0,
99 .ref_lock = 0,
100 .asn1_cb = rinf_cb,
101 .enc_offset = offsetof(X509_REQ_INFO, enc),
102};
103static const ASN1_TEMPLATE X509_REQ_INFO_seq_tt[] = {
104 {
105 .flags = 0,
106 .tag = 0,
107 .offset = offsetof(X509_REQ_INFO, version),
108 .field_name = "version",
109 .item = &ASN1_INTEGER_it,
110 },
111 {
112 .flags = 0,
113 .tag = 0,
114 .offset = offsetof(X509_REQ_INFO, subject),
115 .field_name = "subject",
116 .item = &X509_NAME_it,
117 },
118 {
119 .flags = 0,
120 .tag = 0,
121 .offset = offsetof(X509_REQ_INFO, pubkey),
122 .field_name = "pubkey",
123 .item = &X509_PUBKEY_it,
124 },
99 /* This isn't really OPTIONAL but it gets round invalid 125 /* This isn't really OPTIONAL but it gets round invalid
100 * encodings 126 * encodings
101 */ 127 */
102 ASN1_IMP_SET_OF_OPT(X509_REQ_INFO, attributes, X509_ATTRIBUTE, 0) 128 {
103} ASN1_SEQUENCE_END_enc(X509_REQ_INFO, X509_REQ_INFO) 129 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_SET_OF | ASN1_TFLG_OPTIONAL,
130 .tag = 0,
131 .offset = offsetof(X509_REQ_INFO, attributes),
132 .field_name = "attributes",
133 .item = &X509_ATTRIBUTE_it,
134 },
135};
136
137const ASN1_ITEM X509_REQ_INFO_it = {
138 .itype = ASN1_ITYPE_SEQUENCE,
139 .utype = V_ASN1_SEQUENCE,
140 .templates = X509_REQ_INFO_seq_tt,
141 .tcount = sizeof(X509_REQ_INFO_seq_tt) / sizeof(ASN1_TEMPLATE),
142 .funcs = &X509_REQ_INFO_aux,
143 .size = sizeof(X509_REQ_INFO),
144 .sname = "X509_REQ_INFO",
145};
104 146
105 147
106X509_REQ_INFO * 148X509_REQ_INFO *
@@ -128,11 +170,47 @@ X509_REQ_INFO_free(X509_REQ_INFO *a)
128 ASN1_item_free((ASN1_VALUE *)a, &X509_REQ_INFO_it); 170 ASN1_item_free((ASN1_VALUE *)a, &X509_REQ_INFO_it);
129} 171}
130 172
131ASN1_SEQUENCE_ref(X509_REQ, 0, CRYPTO_LOCK_X509_REQ) = { 173static const ASN1_AUX X509_REQ_aux = {
132 ASN1_SIMPLE(X509_REQ, req_info, X509_REQ_INFO), 174 .app_data = NULL,
133 ASN1_SIMPLE(X509_REQ, sig_alg, X509_ALGOR), 175 .flags = ASN1_AFLG_REFCOUNT,
134 ASN1_SIMPLE(X509_REQ, signature, ASN1_BIT_STRING) 176 .ref_offset = offsetof(X509_REQ, references),
135} ASN1_SEQUENCE_END_ref(X509_REQ, X509_REQ) 177 .ref_lock = CRYPTO_LOCK_X509_REQ,
178 .asn1_cb = 0,
179 .enc_offset = 0,
180};
181static const ASN1_TEMPLATE X509_REQ_seq_tt[] = {
182 {
183 .flags = 0,
184 .tag = 0,
185 .offset = offsetof(X509_REQ, req_info),
186 .field_name = "req_info",
187 .item = &X509_REQ_INFO_it,
188 },
189 {
190 .flags = 0,
191 .tag = 0,
192 .offset = offsetof(X509_REQ, sig_alg),
193 .field_name = "sig_alg",
194 .item = &X509_ALGOR_it,
195 },
196 {
197 .flags = 0,
198 .tag = 0,
199 .offset = offsetof(X509_REQ, signature),
200 .field_name = "signature",
201 .item = &ASN1_BIT_STRING_it,
202 },
203};
204
205const ASN1_ITEM X509_REQ_it = {
206 .itype = ASN1_ITYPE_SEQUENCE,
207 .utype = V_ASN1_SEQUENCE,
208 .templates = X509_REQ_seq_tt,
209 .tcount = sizeof(X509_REQ_seq_tt) / sizeof(ASN1_TEMPLATE),
210 .funcs = &X509_REQ_aux,
211 .size = sizeof(X509_REQ),
212 .sname = "X509_REQ",
213};
136 214
137 215
138X509_REQ * 216X509_REQ *