summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/asn1/x_x509.c
diff options
context:
space:
mode:
authorjsing <>2015-02-11 03:39:51 +0000
committerjsing <>2015-02-11 03:39:51 +0000
commitb07f4d1849544c2c966cb30d49bdb02358dc608d (patch)
treed942bf9cb3a1b441f2c996072292ae69b1aa83d2 /src/lib/libcrypto/asn1/x_x509.c
parente816a1ec1d4411707051912b945e8eab7a5a94e8 (diff)
downloadopenbsd-b07f4d1849544c2c966cb30d49bdb02358dc608d.tar.gz
openbsd-b07f4d1849544c2c966cb30d49bdb02358dc608d.tar.bz2
openbsd-b07f4d1849544c2c966cb30d49bdb02358dc608d.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_x509.c')
-rw-r--r--src/lib/libcrypto/asn1/x_x509.c150
1 files changed, 132 insertions, 18 deletions
diff --git a/src/lib/libcrypto/asn1/x_x509.c b/src/lib/libcrypto/asn1/x_x509.c
index 756848fe19..1f29d5498a 100644
--- a/src/lib/libcrypto/asn1/x_x509.c
+++ b/src/lib/libcrypto/asn1/x_x509.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_x509.c,v 1.21 2015/02/10 13:28:17 jsing Exp $ */ 1/* $OpenBSD: x_x509.c,v 1.22 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 *
@@ -65,18 +65,96 @@
65#include <openssl/x509.h> 65#include <openssl/x509.h>
66#include <openssl/x509v3.h> 66#include <openssl/x509v3.h>
67 67
68ASN1_SEQUENCE_enc(X509_CINF, enc, 0) = { 68static const ASN1_AUX X509_CINF_aux = {
69 ASN1_EXP_OPT(X509_CINF, version, ASN1_INTEGER, 0), 69 .app_data = NULL,
70 ASN1_SIMPLE(X509_CINF, serialNumber, ASN1_INTEGER), 70 .flags = ASN1_AFLG_ENCODING,
71 ASN1_SIMPLE(X509_CINF, signature, X509_ALGOR), 71 .ref_offset = 0,
72 ASN1_SIMPLE(X509_CINF, issuer, X509_NAME), 72 .ref_lock = 0,
73 ASN1_SIMPLE(X509_CINF, validity, X509_VAL), 73 .asn1_cb = 0,
74 ASN1_SIMPLE(X509_CINF, subject, X509_NAME), 74 .enc_offset = offsetof(X509_CINF, enc),
75 ASN1_SIMPLE(X509_CINF, key, X509_PUBKEY), 75};
76 ASN1_IMP_OPT(X509_CINF, issuerUID, ASN1_BIT_STRING, 1), 76static const ASN1_TEMPLATE X509_CINF_seq_tt[] = {
77 ASN1_IMP_OPT(X509_CINF, subjectUID, ASN1_BIT_STRING, 2), 77 {
78 ASN1_EXP_SEQUENCE_OF_OPT(X509_CINF, extensions, X509_EXTENSION, 3) 78 .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,
79} ASN1_SEQUENCE_END_enc(X509_CINF, X509_CINF) 79 .tag = 0,
80 .offset = offsetof(X509_CINF, version),
81 .field_name = "version",
82 .item = &ASN1_INTEGER_it,
83 },
84 {
85 .flags = 0,
86 .tag = 0,
87 .offset = offsetof(X509_CINF, serialNumber),
88 .field_name = "serialNumber",
89 .item = &ASN1_INTEGER_it,
90 },
91 {
92 .flags = 0,
93 .tag = 0,
94 .offset = offsetof(X509_CINF, signature),
95 .field_name = "signature",
96 .item = &X509_ALGOR_it,
97 },
98 {
99 .flags = 0,
100 .tag = 0,
101 .offset = offsetof(X509_CINF, issuer),
102 .field_name = "issuer",
103 .item = &X509_NAME_it,
104 },
105 {
106 .flags = 0,
107 .tag = 0,
108 .offset = offsetof(X509_CINF, validity),
109 .field_name = "validity",
110 .item = &X509_VAL_it,
111 },
112 {
113 .flags = 0,
114 .tag = 0,
115 .offset = offsetof(X509_CINF, subject),
116 .field_name = "subject",
117 .item = &X509_NAME_it,
118 },
119 {
120 .flags = 0,
121 .tag = 0,
122 .offset = offsetof(X509_CINF, key),
123 .field_name = "key",
124 .item = &X509_PUBKEY_it,
125 },
126 {
127 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
128 .tag = 1,
129 .offset = offsetof(X509_CINF, issuerUID),
130 .field_name = "issuerUID",
131 .item = &ASN1_BIT_STRING_it,
132 },
133 {
134 .flags = ASN1_TFLG_IMPLICIT | ASN1_TFLG_OPTIONAL,
135 .tag = 2,
136 .offset = offsetof(X509_CINF, subjectUID),
137 .field_name = "subjectUID",
138 .item = &ASN1_BIT_STRING_it,
139 },
140 {
141 .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL,
142 .tag = 3,
143 .offset = offsetof(X509_CINF, extensions),
144 .field_name = "extensions",
145 .item = &X509_EXTENSION_it,
146 },
147};
148
149const ASN1_ITEM X509_CINF_it = {
150 .itype = ASN1_ITYPE_SEQUENCE,
151 .utype = V_ASN1_SEQUENCE,
152 .templates = X509_CINF_seq_tt,
153 .tcount = sizeof(X509_CINF_seq_tt) / sizeof(ASN1_TEMPLATE),
154 .funcs = &X509_CINF_aux,
155 .size = sizeof(X509_CINF),
156 .sname = "X509_CINF",
157};
80 158
81 159
82X509_CINF * 160X509_CINF *
@@ -148,11 +226,47 @@ x509_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg)
148 return 1; 226 return 1;
149} 227}
150 228
151ASN1_SEQUENCE_ref(X509, x509_cb, CRYPTO_LOCK_X509) = { 229static const ASN1_AUX X509_aux = {
152 ASN1_SIMPLE(X509, cert_info, X509_CINF), 230 .app_data = NULL,
153 ASN1_SIMPLE(X509, sig_alg, X509_ALGOR), 231 .flags = ASN1_AFLG_REFCOUNT,
154 ASN1_SIMPLE(X509, signature, ASN1_BIT_STRING) 232 .ref_offset = offsetof(X509, references),
155} ASN1_SEQUENCE_END_ref(X509, X509) 233 .ref_lock = CRYPTO_LOCK_X509,
234 .asn1_cb = x509_cb,
235 .enc_offset = 0,
236};
237static const ASN1_TEMPLATE X509_seq_tt[] = {
238 {
239 .flags = 0,
240 .tag = 0,
241 .offset = offsetof(X509, cert_info),
242 .field_name = "cert_info",
243 .item = &X509_CINF_it,
244 },
245 {
246 .flags = 0,
247 .tag = 0,
248 .offset = offsetof(X509, sig_alg),
249 .field_name = "sig_alg",
250 .item = &X509_ALGOR_it,
251 },
252 {
253 .flags = 0,
254 .tag = 0,
255 .offset = offsetof(X509, signature),
256 .field_name = "signature",
257 .item = &ASN1_BIT_STRING_it,
258 },
259};
260
261const ASN1_ITEM X509_it = {
262 .itype = ASN1_ITYPE_SEQUENCE,
263 .utype = V_ASN1_SEQUENCE,
264 .templates = X509_seq_tt,
265 .tcount = sizeof(X509_seq_tt) / sizeof(ASN1_TEMPLATE),
266 .funcs = &X509_aux,
267 .size = sizeof(X509),
268 .sname = "X509",
269};
156 270
157 271
158X509 * 272X509 *