summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/asn1/x_req.c
diff options
context:
space:
mode:
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 *