diff options
author | tb <> | 2023-03-06 14:32:06 +0000 |
---|---|---|
committer | tb <> | 2023-03-06 14:32:06 +0000 |
commit | 6c965e26b1a93da63948edae6b68564be1ded507 (patch) | |
tree | bbe07d6e06b695cebe22802551f2db0a61354d7c | |
parent | 48e828ea26ee91710242131cd75cd9d1d20b773c (diff) | |
download | openbsd-6c965e26b1a93da63948edae6b68564be1ded507.tar.gz openbsd-6c965e26b1a93da63948edae6b68564be1ded507.tar.bz2 openbsd-6c965e26b1a93da63948edae6b68564be1ded507.zip |
Rename struct ${app}_config to plain cfg
All the structs are static and we need to reach into them many times.
Having a shorter name is more concise and results in less visual clutter.
It also avoids many overlong lines and we will be able to get rid of some
unfortunate line wrapping down the road.
Discussed with jsing
44 files changed, 3260 insertions, 3260 deletions
diff --git a/src/usr.bin/openssl/asn1pars.c b/src/usr.bin/openssl/asn1pars.c index 6f7fa18512..5824b0ea14 100644 --- a/src/usr.bin/openssl/asn1pars.c +++ b/src/usr.bin/openssl/asn1pars.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: asn1pars.c,v 1.12 2022/11/11 17:07:38 joshua Exp $ */ | 1 | /* $OpenBSD: asn1pars.c,v 1.13 2023/03/06 14:32:05 tb 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 | * |
@@ -86,14 +86,14 @@ static struct { | |||
86 | int offset; | 86 | int offset; |
87 | char *oidfile; | 87 | char *oidfile; |
88 | STACK_OF(OPENSSL_STRING) *osk; | 88 | STACK_OF(OPENSSL_STRING) *osk; |
89 | } asn1pars_config; | 89 | } cfg; |
90 | 90 | ||
91 | static int | 91 | static int |
92 | asn1pars_opt_dlimit(char *arg) | 92 | asn1pars_opt_dlimit(char *arg) |
93 | { | 93 | { |
94 | const char *errstr; | 94 | const char *errstr; |
95 | 95 | ||
96 | asn1pars_config.dump = strtonum(arg, 1, INT_MAX, &errstr); | 96 | cfg.dump = strtonum(arg, 1, INT_MAX, &errstr); |
97 | if (errstr) { | 97 | if (errstr) { |
98 | fprintf(stderr, "-dlimit must be from 1 to INT_MAX: %s\n", | 98 | fprintf(stderr, "-dlimit must be from 1 to INT_MAX: %s\n", |
99 | errstr); | 99 | errstr); |
@@ -107,7 +107,7 @@ asn1pars_opt_length(char *arg) | |||
107 | { | 107 | { |
108 | const char *errstr; | 108 | const char *errstr; |
109 | 109 | ||
110 | asn1pars_config.length = strtonum(arg, 1, UINT_MAX, &errstr); | 110 | cfg.length = strtonum(arg, 1, UINT_MAX, &errstr); |
111 | if (errstr) { | 111 | if (errstr) { |
112 | fprintf(stderr, "-length must be from 1 to UINT_MAX: %s\n", | 112 | fprintf(stderr, "-length must be from 1 to UINT_MAX: %s\n", |
113 | errstr); | 113 | errstr); |
@@ -119,7 +119,7 @@ asn1pars_opt_length(char *arg) | |||
119 | static int | 119 | static int |
120 | asn1pars_opt_strparse(char *arg) | 120 | asn1pars_opt_strparse(char *arg) |
121 | { | 121 | { |
122 | if (sk_OPENSSL_STRING_push(asn1pars_config.osk, arg) == 0) { | 122 | if (sk_OPENSSL_STRING_push(cfg.osk, arg) == 0) { |
123 | fprintf(stderr, "-strparse cannot add argument\n"); | 123 | fprintf(stderr, "-strparse cannot add argument\n"); |
124 | return (-1); | 124 | return (-1); |
125 | } | 125 | } |
@@ -132,7 +132,7 @@ static const struct option asn1pars_options[] = { | |||
132 | .desc = "Dump unknown data in hex form", | 132 | .desc = "Dump unknown data in hex form", |
133 | .type = OPTION_VALUE, | 133 | .type = OPTION_VALUE, |
134 | .value = -1, | 134 | .value = -1, |
135 | .opt.value = &asn1pars_config.dump, | 135 | .opt.value = &cfg.dump, |
136 | }, | 136 | }, |
137 | { | 137 | { |
138 | .name = "dlimit", | 138 | .name = "dlimit", |
@@ -146,34 +146,34 @@ static const struct option asn1pars_options[] = { | |||
146 | .argname = "file", | 146 | .argname = "file", |
147 | .desc = "File to generate ASN.1 structure from", | 147 | .desc = "File to generate ASN.1 structure from", |
148 | .type = OPTION_ARG, | 148 | .type = OPTION_ARG, |
149 | .opt.arg = &asn1pars_config.genconf, | 149 | .opt.arg = &cfg.genconf, |
150 | }, | 150 | }, |
151 | { | 151 | { |
152 | .name = "genstr", | 152 | .name = "genstr", |
153 | .argname = "string", | 153 | .argname = "string", |
154 | .desc = "String to generate ASN.1 structure from", | 154 | .desc = "String to generate ASN.1 structure from", |
155 | .type = OPTION_ARG, | 155 | .type = OPTION_ARG, |
156 | .opt.arg = &asn1pars_config.genstr, | 156 | .opt.arg = &cfg.genstr, |
157 | }, | 157 | }, |
158 | { | 158 | { |
159 | .name = "i", | 159 | .name = "i", |
160 | .desc = "Indent output according to depth of structures", | 160 | .desc = "Indent output according to depth of structures", |
161 | .type = OPTION_FLAG, | 161 | .type = OPTION_FLAG, |
162 | .opt.flag = &asn1pars_config.indent, | 162 | .opt.flag = &cfg.indent, |
163 | }, | 163 | }, |
164 | { | 164 | { |
165 | .name = "in", | 165 | .name = "in", |
166 | .argname = "file", | 166 | .argname = "file", |
167 | .desc = "The input file (default stdin)", | 167 | .desc = "The input file (default stdin)", |
168 | .type = OPTION_ARG, | 168 | .type = OPTION_ARG, |
169 | .opt.arg = &asn1pars_config.infile, | 169 | .opt.arg = &cfg.infile, |
170 | }, | 170 | }, |
171 | { | 171 | { |
172 | .name = "inform", | 172 | .name = "inform", |
173 | .argname = "fmt", | 173 | .argname = "fmt", |
174 | .desc = "Input format (DER, TXT or PEM (default))", | 174 | .desc = "Input format (DER, TXT or PEM (default))", |
175 | .type = OPTION_ARG_FORMAT, | 175 | .type = OPTION_ARG_FORMAT, |
176 | .opt.value = &asn1pars_config.informat, | 176 | .opt.value = &cfg.informat, |
177 | }, | 177 | }, |
178 | { | 178 | { |
179 | .name = "length", | 179 | .name = "length", |
@@ -186,28 +186,28 @@ static const struct option asn1pars_options[] = { | |||
186 | .name = "noout", | 186 | .name = "noout", |
187 | .desc = "Do not produce any output", | 187 | .desc = "Do not produce any output", |
188 | .type = OPTION_FLAG, | 188 | .type = OPTION_FLAG, |
189 | .opt.flag = &asn1pars_config.noout, | 189 | .opt.flag = &cfg.noout, |
190 | }, | 190 | }, |
191 | { | 191 | { |
192 | .name = "offset", | 192 | .name = "offset", |
193 | .argname = "num", | 193 | .argname = "num", |
194 | .desc = "Offset to begin parsing", | 194 | .desc = "Offset to begin parsing", |
195 | .type = OPTION_ARG_INT, | 195 | .type = OPTION_ARG_INT, |
196 | .opt.value = &asn1pars_config.offset, | 196 | .opt.value = &cfg.offset, |
197 | }, | 197 | }, |
198 | { | 198 | { |
199 | .name = "oid", | 199 | .name = "oid", |
200 | .argname = "file", | 200 | .argname = "file", |
201 | .desc = "File containing additional object identifiers (OIDs)", | 201 | .desc = "File containing additional object identifiers (OIDs)", |
202 | .type = OPTION_ARG, | 202 | .type = OPTION_ARG, |
203 | .opt.arg = &asn1pars_config.oidfile, | 203 | .opt.arg = &cfg.oidfile, |
204 | }, | 204 | }, |
205 | { | 205 | { |
206 | .name = "out", | 206 | .name = "out", |
207 | .argname = "file", | 207 | .argname = "file", |
208 | .desc = "Output file in DER format", | 208 | .desc = "Output file in DER format", |
209 | .type = OPTION_ARG, | 209 | .type = OPTION_ARG, |
210 | .opt.arg = &asn1pars_config.derfile, | 210 | .opt.arg = &cfg.derfile, |
211 | }, | 211 | }, |
212 | { | 212 | { |
213 | .name = "strparse", | 213 | .name = "strparse", |
@@ -252,10 +252,10 @@ asn1parse_main(int argc, char **argv) | |||
252 | exit(1); | 252 | exit(1); |
253 | } | 253 | } |
254 | 254 | ||
255 | memset(&asn1pars_config, 0, sizeof(asn1pars_config)); | 255 | memset(&cfg, 0, sizeof(cfg)); |
256 | 256 | ||
257 | asn1pars_config.informat = FORMAT_PEM; | 257 | cfg.informat = FORMAT_PEM; |
258 | if ((asn1pars_config.osk = sk_OPENSSL_STRING_new_null()) == NULL) { | 258 | if ((cfg.osk = sk_OPENSSL_STRING_new_null()) == NULL) { |
259 | BIO_printf(bio_err, "Memory allocation failure\n"); | 259 | BIO_printf(bio_err, "Memory allocation failure\n"); |
260 | goto end; | 260 | goto end; |
261 | } | 261 | } |
@@ -273,28 +273,28 @@ asn1parse_main(int argc, char **argv) | |||
273 | } | 273 | } |
274 | BIO_set_fp(out, stdout, BIO_NOCLOSE | BIO_FP_TEXT); | 274 | BIO_set_fp(out, stdout, BIO_NOCLOSE | BIO_FP_TEXT); |
275 | 275 | ||
276 | if (asn1pars_config.oidfile != NULL) { | 276 | if (cfg.oidfile != NULL) { |
277 | if (BIO_read_filename(in, asn1pars_config.oidfile) <= 0) { | 277 | if (BIO_read_filename(in, cfg.oidfile) <= 0) { |
278 | BIO_printf(bio_err, "problems opening %s\n", | 278 | BIO_printf(bio_err, "problems opening %s\n", |
279 | asn1pars_config.oidfile); | 279 | cfg.oidfile); |
280 | ERR_print_errors(bio_err); | 280 | ERR_print_errors(bio_err); |
281 | goto end; | 281 | goto end; |
282 | } | 282 | } |
283 | OBJ_create_objects(in); | 283 | OBJ_create_objects(in); |
284 | } | 284 | } |
285 | if (asn1pars_config.infile == NULL) | 285 | if (cfg.infile == NULL) |
286 | BIO_set_fp(in, stdin, BIO_NOCLOSE); | 286 | BIO_set_fp(in, stdin, BIO_NOCLOSE); |
287 | else { | 287 | else { |
288 | if (BIO_read_filename(in, asn1pars_config.infile) <= 0) { | 288 | if (BIO_read_filename(in, cfg.infile) <= 0) { |
289 | perror(asn1pars_config.infile); | 289 | perror(cfg.infile); |
290 | goto end; | 290 | goto end; |
291 | } | 291 | } |
292 | } | 292 | } |
293 | 293 | ||
294 | if (asn1pars_config.derfile) { | 294 | if (cfg.derfile) { |
295 | if (!(derout = BIO_new_file(asn1pars_config.derfile, "wb"))) { | 295 | if (!(derout = BIO_new_file(cfg.derfile, "wb"))) { |
296 | BIO_printf(bio_err, "problems opening %s\n", | 296 | BIO_printf(bio_err, "problems opening %s\n", |
297 | asn1pars_config.derfile); | 297 | cfg.derfile); |
298 | ERR_print_errors(bio_err); | 298 | ERR_print_errors(bio_err); |
299 | goto end; | 299 | goto end; |
300 | } | 300 | } |
@@ -304,16 +304,16 @@ asn1parse_main(int argc, char **argv) | |||
304 | if (!BUF_MEM_grow(buf, BUFSIZ * 8)) | 304 | if (!BUF_MEM_grow(buf, BUFSIZ * 8)) |
305 | goto end; /* Pre-allocate :-) */ | 305 | goto end; /* Pre-allocate :-) */ |
306 | 306 | ||
307 | if (asn1pars_config.genstr || asn1pars_config.genconf) { | 307 | if (cfg.genstr || cfg.genconf) { |
308 | num = do_generate(bio_err, asn1pars_config.genstr, | 308 | num = do_generate(bio_err, cfg.genstr, |
309 | asn1pars_config.genconf, buf); | 309 | cfg.genconf, buf); |
310 | if (num < 0) { | 310 | if (num < 0) { |
311 | ERR_print_errors(bio_err); | 311 | ERR_print_errors(bio_err); |
312 | goto end; | 312 | goto end; |
313 | } | 313 | } |
314 | } else { | 314 | } else { |
315 | 315 | ||
316 | if (asn1pars_config.informat == FORMAT_PEM) { | 316 | if (cfg.informat == FORMAT_PEM) { |
317 | BIO *tmp; | 317 | BIO *tmp; |
318 | 318 | ||
319 | if ((b64 = BIO_new(BIO_f_base64())) == NULL) | 319 | if ((b64 = BIO_new(BIO_f_base64())) == NULL) |
@@ -337,20 +337,20 @@ asn1parse_main(int argc, char **argv) | |||
337 | 337 | ||
338 | /* If any structs to parse go through in sequence */ | 338 | /* If any structs to parse go through in sequence */ |
339 | 339 | ||
340 | if (sk_OPENSSL_STRING_num(asn1pars_config.osk)) { | 340 | if (sk_OPENSSL_STRING_num(cfg.osk)) { |
341 | tmpbuf = (unsigned char *) str; | 341 | tmpbuf = (unsigned char *) str; |
342 | tmplen = num; | 342 | tmplen = num; |
343 | for (i = 0; i < sk_OPENSSL_STRING_num(asn1pars_config.osk); | 343 | for (i = 0; i < sk_OPENSSL_STRING_num(cfg.osk); |
344 | i++) { | 344 | i++) { |
345 | ASN1_TYPE *atmp; | 345 | ASN1_TYPE *atmp; |
346 | int typ; | 346 | int typ; |
347 | j = strtonum( | 347 | j = strtonum( |
348 | sk_OPENSSL_STRING_value(asn1pars_config.osk, i), | 348 | sk_OPENSSL_STRING_value(cfg.osk, i), |
349 | 1, INT_MAX, &errstr); | 349 | 1, INT_MAX, &errstr); |
350 | if (errstr) { | 350 | if (errstr) { |
351 | BIO_printf(bio_err, | 351 | BIO_printf(bio_err, |
352 | "'%s' is an invalid number: %s\n", | 352 | "'%s' is an invalid number: %s\n", |
353 | sk_OPENSSL_STRING_value(asn1pars_config.osk, | 353 | sk_OPENSSL_STRING_value(cfg.osk, |
354 | i), errstr); | 354 | i), errstr); |
355 | continue; | 355 | continue; |
356 | } | 356 | } |
@@ -380,28 +380,28 @@ asn1parse_main(int argc, char **argv) | |||
380 | str = (char *) tmpbuf; | 380 | str = (char *) tmpbuf; |
381 | num = tmplen; | 381 | num = tmplen; |
382 | } | 382 | } |
383 | if (asn1pars_config.offset >= num) { | 383 | if (cfg.offset >= num) { |
384 | BIO_printf(bio_err, "Error: offset too large\n"); | 384 | BIO_printf(bio_err, "Error: offset too large\n"); |
385 | goto end; | 385 | goto end; |
386 | } | 386 | } |
387 | num -= asn1pars_config.offset; | 387 | num -= cfg.offset; |
388 | 388 | ||
389 | if ((asn1pars_config.length == 0) || | 389 | if ((cfg.length == 0) || |
390 | ((long)asn1pars_config.length > num)) | 390 | ((long)cfg.length > num)) |
391 | asn1pars_config.length = (unsigned int) num; | 391 | cfg.length = (unsigned int) num; |
392 | if (derout) { | 392 | if (derout) { |
393 | if (BIO_write(derout, str + asn1pars_config.offset, | 393 | if (BIO_write(derout, str + cfg.offset, |
394 | asn1pars_config.length) != (int)asn1pars_config.length) { | 394 | cfg.length) != (int)cfg.length) { |
395 | BIO_printf(bio_err, "Error writing output\n"); | 395 | BIO_printf(bio_err, "Error writing output\n"); |
396 | ERR_print_errors(bio_err); | 396 | ERR_print_errors(bio_err); |
397 | goto end; | 397 | goto end; |
398 | } | 398 | } |
399 | } | 399 | } |
400 | if (!asn1pars_config.noout && | 400 | if (!cfg.noout && |
401 | !ASN1_parse_dump(out, | 401 | !ASN1_parse_dump(out, |
402 | (unsigned char *)&(str[asn1pars_config.offset]), | 402 | (unsigned char *)&(str[cfg.offset]), |
403 | asn1pars_config.length, asn1pars_config.indent, | 403 | cfg.length, cfg.indent, |
404 | asn1pars_config.dump)) { | 404 | cfg.dump)) { |
405 | ERR_print_errors(bio_err); | 405 | ERR_print_errors(bio_err); |
406 | goto end; | 406 | goto end; |
407 | } | 407 | } |
@@ -415,7 +415,7 @@ asn1parse_main(int argc, char **argv) | |||
415 | ERR_print_errors(bio_err); | 415 | ERR_print_errors(bio_err); |
416 | BUF_MEM_free(buf); | 416 | BUF_MEM_free(buf); |
417 | ASN1_TYPE_free(at); | 417 | ASN1_TYPE_free(at); |
418 | sk_OPENSSL_STRING_free(asn1pars_config.osk); | 418 | sk_OPENSSL_STRING_free(cfg.osk); |
419 | OBJ_cleanup(); | 419 | OBJ_cleanup(); |
420 | 420 | ||
421 | return (ret); | 421 | return (ret); |
diff --git a/src/usr.bin/openssl/ca.c b/src/usr.bin/openssl/ca.c index e13354f4af..369d11ead6 100644 --- a/src/usr.bin/openssl/ca.c +++ b/src/usr.bin/openssl/ca.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ca.c,v 1.54 2022/11/11 17:07:38 joshua Exp $ */ | 1 | /* $OpenBSD: ca.c,v 1.55 2023/03/06 14:32:05 tb 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 | * |
@@ -207,63 +207,63 @@ static struct { | |||
207 | char *startdate; | 207 | char *startdate; |
208 | char *subj; | 208 | char *subj; |
209 | int verbose; | 209 | int verbose; |
210 | } ca_config; | 210 | } cfg; |
211 | 211 | ||
212 | static int | 212 | static int |
213 | ca_opt_chtype_utf8(void) | 213 | ca_opt_chtype_utf8(void) |
214 | { | 214 | { |
215 | ca_config.chtype = MBSTRING_UTF8; | 215 | cfg.chtype = MBSTRING_UTF8; |
216 | return (0); | 216 | return (0); |
217 | } | 217 | } |
218 | 218 | ||
219 | static int | 219 | static int |
220 | ca_opt_crl_ca_compromise(char *arg) | 220 | ca_opt_crl_ca_compromise(char *arg) |
221 | { | 221 | { |
222 | ca_config.rev_arg = arg; | 222 | cfg.rev_arg = arg; |
223 | ca_config.rev_type = REV_CA_COMPROMISE; | 223 | cfg.rev_type = REV_CA_COMPROMISE; |
224 | return (0); | 224 | return (0); |
225 | } | 225 | } |
226 | 226 | ||
227 | static int | 227 | static int |
228 | ca_opt_crl_compromise(char *arg) | 228 | ca_opt_crl_compromise(char *arg) |
229 | { | 229 | { |
230 | ca_config.rev_arg = arg; | 230 | cfg.rev_arg = arg; |
231 | ca_config.rev_type = REV_KEY_COMPROMISE; | 231 | cfg.rev_type = REV_KEY_COMPROMISE; |
232 | return (0); | 232 | return (0); |
233 | } | 233 | } |
234 | 234 | ||
235 | static int | 235 | static int |
236 | ca_opt_crl_hold(char *arg) | 236 | ca_opt_crl_hold(char *arg) |
237 | { | 237 | { |
238 | ca_config.rev_arg = arg; | 238 | cfg.rev_arg = arg; |
239 | ca_config.rev_type = REV_HOLD; | 239 | cfg.rev_type = REV_HOLD; |
240 | return (0); | 240 | return (0); |
241 | } | 241 | } |
242 | 242 | ||
243 | static int | 243 | static int |
244 | ca_opt_crl_reason(char *arg) | 244 | ca_opt_crl_reason(char *arg) |
245 | { | 245 | { |
246 | ca_config.rev_arg = arg; | 246 | cfg.rev_arg = arg; |
247 | ca_config.rev_type = REV_CRL_REASON; | 247 | cfg.rev_type = REV_CRL_REASON; |
248 | return (0); | 248 | return (0); |
249 | } | 249 | } |
250 | 250 | ||
251 | static int | 251 | static int |
252 | ca_opt_in(char *arg) | 252 | ca_opt_in(char *arg) |
253 | { | 253 | { |
254 | ca_config.infile = arg; | 254 | cfg.infile = arg; |
255 | ca_config.req = 1; | 255 | cfg.req = 1; |
256 | return (0); | 256 | return (0); |
257 | } | 257 | } |
258 | 258 | ||
259 | static int | 259 | static int |
260 | ca_opt_infiles(int argc, char **argv, int *argsused) | 260 | ca_opt_infiles(int argc, char **argv, int *argsused) |
261 | { | 261 | { |
262 | ca_config.infiles_num = argc - 1; | 262 | cfg.infiles_num = argc - 1; |
263 | if (ca_config.infiles_num < 1) | 263 | if (cfg.infiles_num < 1) |
264 | return (1); | 264 | return (1); |
265 | ca_config.infiles = argv + 1; | 265 | cfg.infiles = argv + 1; |
266 | ca_config.req = 1; | 266 | cfg.req = 1; |
267 | *argsused = argc; | 267 | *argsused = argc; |
268 | return (0); | 268 | return (0); |
269 | } | 269 | } |
@@ -271,19 +271,19 @@ ca_opt_infiles(int argc, char **argv, int *argsused) | |||
271 | static int | 271 | static int |
272 | ca_opt_revoke(char *arg) | 272 | ca_opt_revoke(char *arg) |
273 | { | 273 | { |
274 | ca_config.infile = arg; | 274 | cfg.infile = arg; |
275 | ca_config.dorevoke = 1; | 275 | cfg.dorevoke = 1; |
276 | return (0); | 276 | return (0); |
277 | } | 277 | } |
278 | 278 | ||
279 | static int | 279 | static int |
280 | ca_opt_sigopt(char *arg) | 280 | ca_opt_sigopt(char *arg) |
281 | { | 281 | { |
282 | if (ca_config.sigopts == NULL) | 282 | if (cfg.sigopts == NULL) |
283 | ca_config.sigopts = sk_OPENSSL_STRING_new_null(); | 283 | cfg.sigopts = sk_OPENSSL_STRING_new_null(); |
284 | if (ca_config.sigopts == NULL) | 284 | if (cfg.sigopts == NULL) |
285 | return (1); | 285 | return (1); |
286 | if (!sk_OPENSSL_STRING_push(ca_config.sigopts, arg)) | 286 | if (!sk_OPENSSL_STRING_push(cfg.sigopts, arg)) |
287 | return (1); | 287 | return (1); |
288 | return (0); | 288 | return (0); |
289 | } | 289 | } |
@@ -291,16 +291,16 @@ ca_opt_sigopt(char *arg) | |||
291 | static int | 291 | static int |
292 | ca_opt_spkac(char *arg) | 292 | ca_opt_spkac(char *arg) |
293 | { | 293 | { |
294 | ca_config.spkac_file = arg; | 294 | cfg.spkac_file = arg; |
295 | ca_config.req = 1; | 295 | cfg.req = 1; |
296 | return (0); | 296 | return (0); |
297 | } | 297 | } |
298 | 298 | ||
299 | static int | 299 | static int |
300 | ca_opt_ss_cert(char *arg) | 300 | ca_opt_ss_cert(char *arg) |
301 | { | 301 | { |
302 | ca_config.ss_cert_file = arg; | 302 | cfg.ss_cert_file = arg; |
303 | ca_config.req = 1; | 303 | cfg.req = 1; |
304 | return (0); | 304 | return (0); |
305 | } | 305 | } |
306 | 306 | ||
@@ -309,27 +309,27 @@ static const struct option ca_options[] = { | |||
309 | .name = "batch", | 309 | .name = "batch", |
310 | .desc = "Operate in batch mode", | 310 | .desc = "Operate in batch mode", |
311 | .type = OPTION_FLAG, | 311 | .type = OPTION_FLAG, |
312 | .opt.flag = &ca_config.batch, | 312 | .opt.flag = &cfg.batch, |
313 | }, | 313 | }, |
314 | { | 314 | { |
315 | .name = "cert", | 315 | .name = "cert", |
316 | .argname = "file", | 316 | .argname = "file", |
317 | .desc = "File containing the CA certificate", | 317 | .desc = "File containing the CA certificate", |
318 | .type = OPTION_ARG, | 318 | .type = OPTION_ARG, |
319 | .opt.arg = &ca_config.certfile, | 319 | .opt.arg = &cfg.certfile, |
320 | }, | 320 | }, |
321 | { | 321 | { |
322 | .name = "config", | 322 | .name = "config", |
323 | .argname = "file", | 323 | .argname = "file", |
324 | .desc = "Specify an alternative configuration file", | 324 | .desc = "Specify an alternative configuration file", |
325 | .type = OPTION_ARG, | 325 | .type = OPTION_ARG, |
326 | .opt.arg = &ca_config.configfile, | 326 | .opt.arg = &cfg.configfile, |
327 | }, | 327 | }, |
328 | { | 328 | { |
329 | .name = "create_serial", | 329 | .name = "create_serial", |
330 | .desc = "If reading serial fails, create a new random serial", | 330 | .desc = "If reading serial fails, create a new random serial", |
331 | .type = OPTION_FLAG, | 331 | .type = OPTION_FLAG, |
332 | .opt.flag = &ca_config.create_serial, | 332 | .opt.flag = &cfg.create_serial, |
333 | }, | 333 | }, |
334 | { | 334 | { |
335 | .name = "crl_CA_compromise", | 335 | .name = "crl_CA_compromise", |
@@ -367,62 +367,62 @@ static const struct option ca_options[] = { | |||
367 | .argname = "days", | 367 | .argname = "days", |
368 | .desc = "Number of days before the next CRL is due", | 368 | .desc = "Number of days before the next CRL is due", |
369 | .type = OPTION_ARG_LONG, | 369 | .type = OPTION_ARG_LONG, |
370 | .opt.lvalue = &ca_config.crldays, | 370 | .opt.lvalue = &cfg.crldays, |
371 | }, | 371 | }, |
372 | { | 372 | { |
373 | .name = "crlexts", | 373 | .name = "crlexts", |
374 | .argname = "section", | 374 | .argname = "section", |
375 | .desc = "CRL extension section (override value in config file)", | 375 | .desc = "CRL extension section (override value in config file)", |
376 | .type = OPTION_ARG, | 376 | .type = OPTION_ARG, |
377 | .opt.arg = &ca_config.crl_ext, | 377 | .opt.arg = &cfg.crl_ext, |
378 | }, | 378 | }, |
379 | { | 379 | { |
380 | .name = "crlhours", | 380 | .name = "crlhours", |
381 | .argname = "hours", | 381 | .argname = "hours", |
382 | .desc = "Number of hours before the next CRL is due", | 382 | .desc = "Number of hours before the next CRL is due", |
383 | .type = OPTION_ARG_LONG, | 383 | .type = OPTION_ARG_LONG, |
384 | .opt.lvalue = &ca_config.crlhours, | 384 | .opt.lvalue = &cfg.crlhours, |
385 | }, | 385 | }, |
386 | { | 386 | { |
387 | .name = "crlsec", | 387 | .name = "crlsec", |
388 | .argname = "seconds", | 388 | .argname = "seconds", |
389 | .desc = "Number of seconds before the next CRL is due", | 389 | .desc = "Number of seconds before the next CRL is due", |
390 | .type = OPTION_ARG_LONG, | 390 | .type = OPTION_ARG_LONG, |
391 | .opt.lvalue = &ca_config.crlsec, | 391 | .opt.lvalue = &cfg.crlsec, |
392 | }, | 392 | }, |
393 | { | 393 | { |
394 | .name = "days", | 394 | .name = "days", |
395 | .argname = "arg", | 395 | .argname = "arg", |
396 | .desc = "Number of days to certify the certificate for", | 396 | .desc = "Number of days to certify the certificate for", |
397 | .type = OPTION_ARG_LONG, | 397 | .type = OPTION_ARG_LONG, |
398 | .opt.lvalue = &ca_config.days, | 398 | .opt.lvalue = &cfg.days, |
399 | }, | 399 | }, |
400 | { | 400 | { |
401 | .name = "enddate", | 401 | .name = "enddate", |
402 | .argname = "YYMMDDHHMMSSZ", | 402 | .argname = "YYMMDDHHMMSSZ", |
403 | .desc = "Certificate validity notAfter (overrides -days)", | 403 | .desc = "Certificate validity notAfter (overrides -days)", |
404 | .type = OPTION_ARG, | 404 | .type = OPTION_ARG, |
405 | .opt.arg = &ca_config.enddate, | 405 | .opt.arg = &cfg.enddate, |
406 | }, | 406 | }, |
407 | { | 407 | { |
408 | .name = "extensions", | 408 | .name = "extensions", |
409 | .argname = "section", | 409 | .argname = "section", |
410 | .desc = "Extension section (override value in config file)", | 410 | .desc = "Extension section (override value in config file)", |
411 | .type = OPTION_ARG, | 411 | .type = OPTION_ARG, |
412 | .opt.arg = &ca_config.extensions, | 412 | .opt.arg = &cfg.extensions, |
413 | }, | 413 | }, |
414 | { | 414 | { |
415 | .name = "extfile", | 415 | .name = "extfile", |
416 | .argname = "file", | 416 | .argname = "file", |
417 | .desc = "Configuration file with X509v3 extentions to add", | 417 | .desc = "Configuration file with X509v3 extentions to add", |
418 | .type = OPTION_ARG, | 418 | .type = OPTION_ARG, |
419 | .opt.arg = &ca_config.extfile, | 419 | .opt.arg = &cfg.extfile, |
420 | }, | 420 | }, |
421 | { | 421 | { |
422 | .name = "gencrl", | 422 | .name = "gencrl", |
423 | .desc = "Generate a new CRL", | 423 | .desc = "Generate a new CRL", |
424 | .type = OPTION_FLAG, | 424 | .type = OPTION_FLAG, |
425 | .opt.flag = &ca_config.gencrl, | 425 | .opt.flag = &cfg.gencrl, |
426 | }, | 426 | }, |
427 | { | 427 | { |
428 | .name = "in", | 428 | .name = "in", |
@@ -443,93 +443,93 @@ static const struct option ca_options[] = { | |||
443 | .argname = "password", | 443 | .argname = "password", |
444 | .desc = "Key to decode the private key if it is encrypted", | 444 | .desc = "Key to decode the private key if it is encrypted", |
445 | .type = OPTION_ARG, | 445 | .type = OPTION_ARG, |
446 | .opt.arg = &ca_config.key, | 446 | .opt.arg = &cfg.key, |
447 | }, | 447 | }, |
448 | { | 448 | { |
449 | .name = "keyfile", | 449 | .name = "keyfile", |
450 | .argname = "file", | 450 | .argname = "file", |
451 | .desc = "Private key file", | 451 | .desc = "Private key file", |
452 | .type = OPTION_ARG, | 452 | .type = OPTION_ARG, |
453 | .opt.arg = &ca_config.keyfile, | 453 | .opt.arg = &cfg.keyfile, |
454 | }, | 454 | }, |
455 | { | 455 | { |
456 | .name = "keyform", | 456 | .name = "keyform", |
457 | .argname = "fmt", | 457 | .argname = "fmt", |
458 | .desc = "Private key file format (DER or PEM (default))", | 458 | .desc = "Private key file format (DER or PEM (default))", |
459 | .type = OPTION_ARG_FORMAT, | 459 | .type = OPTION_ARG_FORMAT, |
460 | .opt.value = &ca_config.keyform, | 460 | .opt.value = &cfg.keyform, |
461 | }, | 461 | }, |
462 | { | 462 | { |
463 | .name = "md", | 463 | .name = "md", |
464 | .argname = "alg", | 464 | .argname = "alg", |
465 | .desc = "Message digest to use", | 465 | .desc = "Message digest to use", |
466 | .type = OPTION_ARG, | 466 | .type = OPTION_ARG, |
467 | .opt.arg = &ca_config.md, | 467 | .opt.arg = &cfg.md, |
468 | }, | 468 | }, |
469 | { | 469 | { |
470 | .name = "msie_hack", | 470 | .name = "msie_hack", |
471 | .type = OPTION_FLAG, | 471 | .type = OPTION_FLAG, |
472 | .opt.flag = &ca_config.msie_hack, | 472 | .opt.flag = &cfg.msie_hack, |
473 | }, | 473 | }, |
474 | { | 474 | { |
475 | .name = "multivalue-rdn", | 475 | .name = "multivalue-rdn", |
476 | .desc = "Enable support for multivalued RDNs", | 476 | .desc = "Enable support for multivalued RDNs", |
477 | .type = OPTION_FLAG, | 477 | .type = OPTION_FLAG, |
478 | .opt.flag = &ca_config.multirdn, | 478 | .opt.flag = &cfg.multirdn, |
479 | }, | 479 | }, |
480 | { | 480 | { |
481 | .name = "name", | 481 | .name = "name", |
482 | .argname = "section", | 482 | .argname = "section", |
483 | .desc = "Specifies the configuration file section to use", | 483 | .desc = "Specifies the configuration file section to use", |
484 | .type = OPTION_ARG, | 484 | .type = OPTION_ARG, |
485 | .opt.arg = &ca_config.section, | 485 | .opt.arg = &cfg.section, |
486 | }, | 486 | }, |
487 | { | 487 | { |
488 | .name = "noemailDN", | 488 | .name = "noemailDN", |
489 | .desc = "Do not add the EMAIL field to the DN", | 489 | .desc = "Do not add the EMAIL field to the DN", |
490 | .type = OPTION_VALUE, | 490 | .type = OPTION_VALUE, |
491 | .opt.value = &ca_config.email_dn, | 491 | .opt.value = &cfg.email_dn, |
492 | .value = 0, | 492 | .value = 0, |
493 | }, | 493 | }, |
494 | { | 494 | { |
495 | .name = "notext", | 495 | .name = "notext", |
496 | .desc = "Do not print the generated certificate", | 496 | .desc = "Do not print the generated certificate", |
497 | .type = OPTION_FLAG, | 497 | .type = OPTION_FLAG, |
498 | .opt.flag = &ca_config.notext, | 498 | .opt.flag = &cfg.notext, |
499 | }, | 499 | }, |
500 | { | 500 | { |
501 | .name = "out", | 501 | .name = "out", |
502 | .argname = "file", | 502 | .argname = "file", |
503 | .desc = "Output file (default stdout)", | 503 | .desc = "Output file (default stdout)", |
504 | .type = OPTION_ARG, | 504 | .type = OPTION_ARG, |
505 | .opt.arg = &ca_config.outfile, | 505 | .opt.arg = &cfg.outfile, |
506 | }, | 506 | }, |
507 | { | 507 | { |
508 | .name = "outdir", | 508 | .name = "outdir", |
509 | .argname = "directory", | 509 | .argname = "directory", |
510 | .desc = " Directory to output certificates to", | 510 | .desc = " Directory to output certificates to", |
511 | .type = OPTION_ARG, | 511 | .type = OPTION_ARG, |
512 | .opt.arg = &ca_config.outdir, | 512 | .opt.arg = &cfg.outdir, |
513 | }, | 513 | }, |
514 | { | 514 | { |
515 | .name = "passin", | 515 | .name = "passin", |
516 | .argname = "src", | 516 | .argname = "src", |
517 | .desc = "Private key input password source", | 517 | .desc = "Private key input password source", |
518 | .type = OPTION_ARG, | 518 | .type = OPTION_ARG, |
519 | .opt.arg = &ca_config.passargin, | 519 | .opt.arg = &cfg.passargin, |
520 | }, | 520 | }, |
521 | { | 521 | { |
522 | .name = "policy", | 522 | .name = "policy", |
523 | .argname = "name", | 523 | .argname = "name", |
524 | .desc = "The CA 'policy' to support", | 524 | .desc = "The CA 'policy' to support", |
525 | .type = OPTION_ARG, | 525 | .type = OPTION_ARG, |
526 | .opt.arg = &ca_config.policy, | 526 | .opt.arg = &cfg.policy, |
527 | }, | 527 | }, |
528 | { | 528 | { |
529 | .name = "preserveDN", | 529 | .name = "preserveDN", |
530 | .desc = "Do not re-order the DN", | 530 | .desc = "Do not re-order the DN", |
531 | .type = OPTION_FLAG, | 531 | .type = OPTION_FLAG, |
532 | .opt.flag = &ca_config.preserve, | 532 | .opt.flag = &cfg.preserve, |
533 | }, | 533 | }, |
534 | { | 534 | { |
535 | .name = "revoke", | 535 | .name = "revoke", |
@@ -542,7 +542,7 @@ static const struct option ca_options[] = { | |||
542 | .name = "selfsign", | 542 | .name = "selfsign", |
543 | .desc = "Sign a certificate using the key associated with it", | 543 | .desc = "Sign a certificate using the key associated with it", |
544 | .type = OPTION_FLAG, | 544 | .type = OPTION_FLAG, |
545 | .opt.flag = &ca_config.selfsign, | 545 | .opt.flag = &cfg.selfsign, |
546 | }, | 546 | }, |
547 | { | 547 | { |
548 | .name = "sigopt", | 548 | .name = "sigopt", |
@@ -570,27 +570,27 @@ static const struct option ca_options[] = { | |||
570 | .argname = "YYMMDDHHMMSSZ", | 570 | .argname = "YYMMDDHHMMSSZ", |
571 | .desc = "Certificate validity notBefore", | 571 | .desc = "Certificate validity notBefore", |
572 | .type = OPTION_ARG, | 572 | .type = OPTION_ARG, |
573 | .opt.arg = &ca_config.startdate, | 573 | .opt.arg = &cfg.startdate, |
574 | }, | 574 | }, |
575 | { | 575 | { |
576 | .name = "status", | 576 | .name = "status", |
577 | .argname = "serial", | 577 | .argname = "serial", |
578 | .desc = "Shows certificate status given the serial number", | 578 | .desc = "Shows certificate status given the serial number", |
579 | .type = OPTION_ARG, | 579 | .type = OPTION_ARG, |
580 | .opt.arg = &ca_config.serial_status, | 580 | .opt.arg = &cfg.serial_status, |
581 | }, | 581 | }, |
582 | { | 582 | { |
583 | .name = "subj", | 583 | .name = "subj", |
584 | .argname = "arg", | 584 | .argname = "arg", |
585 | .desc = "Use arg instead of request's subject", | 585 | .desc = "Use arg instead of request's subject", |
586 | .type = OPTION_ARG, | 586 | .type = OPTION_ARG, |
587 | .opt.arg = &ca_config.subj, | 587 | .opt.arg = &cfg.subj, |
588 | }, | 588 | }, |
589 | { | 589 | { |
590 | .name = "updatedb", | 590 | .name = "updatedb", |
591 | .desc = "Updates db for expired certificates", | 591 | .desc = "Updates db for expired certificates", |
592 | .type = OPTION_FLAG, | 592 | .type = OPTION_FLAG, |
593 | .opt.flag = &ca_config.doupdatedb, | 593 | .opt.flag = &cfg.doupdatedb, |
594 | }, | 594 | }, |
595 | { | 595 | { |
596 | .name = "utf8", | 596 | .name = "utf8", |
@@ -602,7 +602,7 @@ static const struct option ca_options[] = { | |||
602 | .name = "verbose", | 602 | .name = "verbose", |
603 | .desc = "Verbose output during processing", | 603 | .desc = "Verbose output during processing", |
604 | .type = OPTION_FLAG, | 604 | .type = OPTION_FLAG, |
605 | .opt.flag = &ca_config.verbose, | 605 | .opt.flag = &cfg.verbose, |
606 | }, | 606 | }, |
607 | { NULL }, | 607 | { NULL }, |
608 | }; | 608 | }; |
@@ -690,11 +690,11 @@ ca_main(int argc, char **argv) | |||
690 | exit(1); | 690 | exit(1); |
691 | } | 691 | } |
692 | 692 | ||
693 | memset(&ca_config, 0, sizeof(ca_config)); | 693 | memset(&cfg, 0, sizeof(cfg)); |
694 | ca_config.email_dn = 1; | 694 | cfg.email_dn = 1; |
695 | ca_config.keyform = FORMAT_PEM; | 695 | cfg.keyform = FORMAT_PEM; |
696 | ca_config.chtype = MBSTRING_ASC; | 696 | cfg.chtype = MBSTRING_ASC; |
697 | ca_config.rev_type = REV_NONE; | 697 | cfg.rev_type = REV_NONE; |
698 | 698 | ||
699 | conf = NULL; | 699 | conf = NULL; |
700 | 700 | ||
@@ -705,37 +705,37 @@ ca_main(int argc, char **argv) | |||
705 | 705 | ||
706 | /*****************************************************************/ | 706 | /*****************************************************************/ |
707 | tofree = NULL; | 707 | tofree = NULL; |
708 | if (ca_config.configfile == NULL) | 708 | if (cfg.configfile == NULL) |
709 | ca_config.configfile = getenv("OPENSSL_CONF"); | 709 | cfg.configfile = getenv("OPENSSL_CONF"); |
710 | if (ca_config.configfile == NULL) { | 710 | if (cfg.configfile == NULL) { |
711 | if ((tofree = make_config_name()) == NULL) { | 711 | if ((tofree = make_config_name()) == NULL) { |
712 | BIO_printf(bio_err, "error making config file name\n"); | 712 | BIO_printf(bio_err, "error making config file name\n"); |
713 | goto err; | 713 | goto err; |
714 | } | 714 | } |
715 | ca_config.configfile = tofree; | 715 | cfg.configfile = tofree; |
716 | } | 716 | } |
717 | BIO_printf(bio_err, "Using configuration from %s\n", | 717 | BIO_printf(bio_err, "Using configuration from %s\n", |
718 | ca_config.configfile); | 718 | cfg.configfile); |
719 | conf = NCONF_new(NULL); | 719 | conf = NCONF_new(NULL); |
720 | if (NCONF_load(conf, ca_config.configfile, &errorline) <= 0) { | 720 | if (NCONF_load(conf, cfg.configfile, &errorline) <= 0) { |
721 | if (errorline <= 0) | 721 | if (errorline <= 0) |
722 | BIO_printf(bio_err, | 722 | BIO_printf(bio_err, |
723 | "error loading the config file '%s'\n", | 723 | "error loading the config file '%s'\n", |
724 | ca_config.configfile); | 724 | cfg.configfile); |
725 | else | 725 | else |
726 | BIO_printf(bio_err, | 726 | BIO_printf(bio_err, |
727 | "error on line %ld of config file '%s'\n", | 727 | "error on line %ld of config file '%s'\n", |
728 | errorline, ca_config.configfile); | 728 | errorline, cfg.configfile); |
729 | goto err; | 729 | goto err; |
730 | } | 730 | } |
731 | free(tofree); | 731 | free(tofree); |
732 | tofree = NULL; | 732 | tofree = NULL; |
733 | 733 | ||
734 | /* Lets get the config section we are using */ | 734 | /* Lets get the config section we are using */ |
735 | if (ca_config.section == NULL) { | 735 | if (cfg.section == NULL) { |
736 | ca_config.section = NCONF_get_string(conf, BASE_SECTION, | 736 | cfg.section = NCONF_get_string(conf, BASE_SECTION, |
737 | ENV_DEFAULT_CA); | 737 | ENV_DEFAULT_CA); |
738 | if (ca_config.section == NULL) { | 738 | if (cfg.section == NULL) { |
739 | lookup_fail(BASE_SECTION, ENV_DEFAULT_CA); | 739 | lookup_fail(BASE_SECTION, ENV_DEFAULT_CA); |
740 | goto err; | 740 | goto err; |
741 | } | 741 | } |
@@ -765,7 +765,7 @@ ca_main(int argc, char **argv) | |||
765 | goto err; | 765 | goto err; |
766 | } | 766 | } |
767 | } | 767 | } |
768 | f = NCONF_get_string(conf, ca_config.section, STRING_MASK); | 768 | f = NCONF_get_string(conf, cfg.section, STRING_MASK); |
769 | if (f == NULL) | 769 | if (f == NULL) |
770 | ERR_clear_error(); | 770 | ERR_clear_error(); |
771 | 771 | ||
@@ -774,15 +774,15 @@ ca_main(int argc, char **argv) | |||
774 | "Invalid global string mask setting %s\n", f); | 774 | "Invalid global string mask setting %s\n", f); |
775 | goto err; | 775 | goto err; |
776 | } | 776 | } |
777 | if (ca_config.chtype != MBSTRING_UTF8) { | 777 | if (cfg.chtype != MBSTRING_UTF8) { |
778 | f = NCONF_get_string(conf, ca_config.section, UTF8_IN); | 778 | f = NCONF_get_string(conf, cfg.section, UTF8_IN); |
779 | if (f == NULL) | 779 | if (f == NULL) |
780 | ERR_clear_error(); | 780 | ERR_clear_error(); |
781 | else if (strcmp(f, "yes") == 0) | 781 | else if (strcmp(f, "yes") == 0) |
782 | ca_config.chtype = MBSTRING_UTF8; | 782 | cfg.chtype = MBSTRING_UTF8; |
783 | } | 783 | } |
784 | db_attr.unique_subject = 1; | 784 | db_attr.unique_subject = 1; |
785 | p = NCONF_get_string(conf, ca_config.section, ENV_UNIQUE_SUBJECT); | 785 | p = NCONF_get_string(conf, cfg.section, ENV_UNIQUE_SUBJECT); |
786 | if (p != NULL) { | 786 | if (p != NULL) { |
787 | db_attr.unique_subject = parse_yesno(p, 1); | 787 | db_attr.unique_subject = parse_yesno(p, 1); |
788 | } else | 788 | } else |
@@ -798,10 +798,10 @@ ca_main(int argc, char **argv) | |||
798 | } | 798 | } |
799 | /*****************************************************************/ | 799 | /*****************************************************************/ |
800 | /* report status of cert with serial number given on command line */ | 800 | /* report status of cert with serial number given on command line */ |
801 | if (ca_config.serial_status) { | 801 | if (cfg.serial_status) { |
802 | if ((dbfile = NCONF_get_string(conf, ca_config.section, | 802 | if ((dbfile = NCONF_get_string(conf, cfg.section, |
803 | ENV_DATABASE)) == NULL) { | 803 | ENV_DATABASE)) == NULL) { |
804 | lookup_fail(ca_config.section, ENV_DATABASE); | 804 | lookup_fail(cfg.section, ENV_DATABASE); |
805 | goto err; | 805 | goto err; |
806 | } | 806 | } |
807 | db = load_index(dbfile, &db_attr); | 807 | db = load_index(dbfile, &db_attr); |
@@ -811,47 +811,47 @@ ca_main(int argc, char **argv) | |||
811 | if (!index_index(db)) | 811 | if (!index_index(db)) |
812 | goto err; | 812 | goto err; |
813 | 813 | ||
814 | if (get_certificate_status(ca_config.serial_status, db) != 1) | 814 | if (get_certificate_status(cfg.serial_status, db) != 1) |
815 | BIO_printf(bio_err, "Error verifying serial %s!\n", | 815 | BIO_printf(bio_err, "Error verifying serial %s!\n", |
816 | ca_config.serial_status); | 816 | cfg.serial_status); |
817 | goto err; | 817 | goto err; |
818 | } | 818 | } |
819 | /*****************************************************************/ | 819 | /*****************************************************************/ |
820 | /* we definitely need a private key, so let's get it */ | 820 | /* we definitely need a private key, so let's get it */ |
821 | 821 | ||
822 | if ((ca_config.keyfile == NULL) && | 822 | if ((cfg.keyfile == NULL) && |
823 | ((ca_config.keyfile = NCONF_get_string(conf, ca_config.section, | 823 | ((cfg.keyfile = NCONF_get_string(conf, cfg.section, |
824 | ENV_PRIVATE_KEY)) == NULL)) { | 824 | ENV_PRIVATE_KEY)) == NULL)) { |
825 | lookup_fail(ca_config.section, ENV_PRIVATE_KEY); | 825 | lookup_fail(cfg.section, ENV_PRIVATE_KEY); |
826 | goto err; | 826 | goto err; |
827 | } | 827 | } |
828 | if (ca_config.key == NULL) { | 828 | if (cfg.key == NULL) { |
829 | free_key = 1; | 829 | free_key = 1; |
830 | if (!app_passwd(bio_err, ca_config.passargin, NULL, | 830 | if (!app_passwd(bio_err, cfg.passargin, NULL, |
831 | &ca_config.key, NULL)) { | 831 | &cfg.key, NULL)) { |
832 | BIO_printf(bio_err, "Error getting password\n"); | 832 | BIO_printf(bio_err, "Error getting password\n"); |
833 | goto err; | 833 | goto err; |
834 | } | 834 | } |
835 | } | 835 | } |
836 | pkey = load_key(bio_err, ca_config.keyfile, ca_config.keyform, 0, | 836 | pkey = load_key(bio_err, cfg.keyfile, cfg.keyform, 0, |
837 | ca_config.key, "CA private key"); | 837 | cfg.key, "CA private key"); |
838 | if (ca_config.key != NULL) | 838 | if (cfg.key != NULL) |
839 | explicit_bzero(ca_config.key, strlen(ca_config.key)); | 839 | explicit_bzero(cfg.key, strlen(cfg.key)); |
840 | if (pkey == NULL) { | 840 | if (pkey == NULL) { |
841 | /* load_key() has already printed an appropriate message */ | 841 | /* load_key() has already printed an appropriate message */ |
842 | goto err; | 842 | goto err; |
843 | } | 843 | } |
844 | /*****************************************************************/ | 844 | /*****************************************************************/ |
845 | /* we need a certificate */ | 845 | /* we need a certificate */ |
846 | if (!ca_config.selfsign || ca_config.spkac_file != NULL || | 846 | if (!cfg.selfsign || cfg.spkac_file != NULL || |
847 | ca_config.ss_cert_file != NULL || ca_config.gencrl) { | 847 | cfg.ss_cert_file != NULL || cfg.gencrl) { |
848 | if ((ca_config.certfile == NULL) && | 848 | if ((cfg.certfile == NULL) && |
849 | ((ca_config.certfile = NCONF_get_string(conf, | 849 | ((cfg.certfile = NCONF_get_string(conf, |
850 | ca_config.section, ENV_CERTIFICATE)) == NULL)) { | 850 | cfg.section, ENV_CERTIFICATE)) == NULL)) { |
851 | lookup_fail(ca_config.section, ENV_CERTIFICATE); | 851 | lookup_fail(cfg.section, ENV_CERTIFICATE); |
852 | goto err; | 852 | goto err; |
853 | } | 853 | } |
854 | x509 = load_cert(bio_err, ca_config.certfile, FORMAT_PEM, NULL, | 854 | x509 = load_cert(bio_err, cfg.certfile, FORMAT_PEM, NULL, |
855 | "CA certificate"); | 855 | "CA certificate"); |
856 | if (x509 == NULL) | 856 | if (x509 == NULL) |
857 | goto err; | 857 | goto err; |
@@ -862,21 +862,21 @@ ca_main(int argc, char **argv) | |||
862 | goto err; | 862 | goto err; |
863 | } | 863 | } |
864 | } | 864 | } |
865 | if (!ca_config.selfsign) | 865 | if (!cfg.selfsign) |
866 | x509p = x509; | 866 | x509p = x509; |
867 | 867 | ||
868 | f = NCONF_get_string(conf, BASE_SECTION, ENV_PRESERVE); | 868 | f = NCONF_get_string(conf, BASE_SECTION, ENV_PRESERVE); |
869 | if (f == NULL) | 869 | if (f == NULL) |
870 | ERR_clear_error(); | 870 | ERR_clear_error(); |
871 | if ((f != NULL) && ((*f == 'y') || (*f == 'Y'))) | 871 | if ((f != NULL) && ((*f == 'y') || (*f == 'Y'))) |
872 | ca_config.preserve = 1; | 872 | cfg.preserve = 1; |
873 | f = NCONF_get_string(conf, BASE_SECTION, ENV_MSIE_HACK); | 873 | f = NCONF_get_string(conf, BASE_SECTION, ENV_MSIE_HACK); |
874 | if (f == NULL) | 874 | if (f == NULL) |
875 | ERR_clear_error(); | 875 | ERR_clear_error(); |
876 | if ((f != NULL) && ((*f == 'y') || (*f == 'Y'))) | 876 | if ((f != NULL) && ((*f == 'y') || (*f == 'Y'))) |
877 | ca_config.msie_hack = 1; | 877 | cfg.msie_hack = 1; |
878 | 878 | ||
879 | f = NCONF_get_string(conf, ca_config.section, ENV_NAMEOPT); | 879 | f = NCONF_get_string(conf, cfg.section, ENV_NAMEOPT); |
880 | 880 | ||
881 | if (f != NULL) { | 881 | if (f != NULL) { |
882 | if (!set_name_ex(&nameopt, f)) { | 882 | if (!set_name_ex(&nameopt, f)) { |
@@ -888,7 +888,7 @@ ca_main(int argc, char **argv) | |||
888 | } else | 888 | } else |
889 | ERR_clear_error(); | 889 | ERR_clear_error(); |
890 | 890 | ||
891 | f = NCONF_get_string(conf, ca_config.section, ENV_CERTOPT); | 891 | f = NCONF_get_string(conf, cfg.section, ENV_CERTOPT); |
892 | 892 | ||
893 | if (f != NULL) { | 893 | if (f != NULL) { |
894 | if (!set_cert_ex(&certopt, f)) { | 894 | if (!set_cert_ex(&certopt, f)) { |
@@ -900,7 +900,7 @@ ca_main(int argc, char **argv) | |||
900 | } else | 900 | } else |
901 | ERR_clear_error(); | 901 | ERR_clear_error(); |
902 | 902 | ||
903 | f = NCONF_get_string(conf, ca_config.section, ENV_EXTCOPY); | 903 | f = NCONF_get_string(conf, cfg.section, ENV_EXTCOPY); |
904 | 904 | ||
905 | if (f != NULL) { | 905 | if (f != NULL) { |
906 | if (!set_ext_copy(&ext_copy, f)) { | 906 | if (!set_ext_copy(&ext_copy, f)) { |
@@ -913,9 +913,9 @@ ca_main(int argc, char **argv) | |||
913 | 913 | ||
914 | /*****************************************************************/ | 914 | /*****************************************************************/ |
915 | /* lookup where to write new certificates */ | 915 | /* lookup where to write new certificates */ |
916 | if (ca_config.outdir == NULL && ca_config.req) { | 916 | if (cfg.outdir == NULL && cfg.req) { |
917 | if ((ca_config.outdir = NCONF_get_string(conf, | 917 | if ((cfg.outdir = NCONF_get_string(conf, |
918 | ca_config.section, ENV_NEW_CERTS_DIR)) == NULL) { | 918 | cfg.section, ENV_NEW_CERTS_DIR)) == NULL) { |
919 | BIO_printf(bio_err, "output directory %s not defined\n", | 919 | BIO_printf(bio_err, "output directory %s not defined\n", |
920 | ENV_NEW_CERTS_DIR); | 920 | ENV_NEW_CERTS_DIR); |
921 | goto err; | 921 | goto err; |
@@ -923,9 +923,9 @@ ca_main(int argc, char **argv) | |||
923 | } | 923 | } |
924 | /*****************************************************************/ | 924 | /*****************************************************************/ |
925 | /* we need to load the database file */ | 925 | /* we need to load the database file */ |
926 | if ((dbfile = NCONF_get_string(conf, ca_config.section, | 926 | if ((dbfile = NCONF_get_string(conf, cfg.section, |
927 | ENV_DATABASE)) == NULL) { | 927 | ENV_DATABASE)) == NULL) { |
928 | lookup_fail(ca_config.section, ENV_DATABASE); | 928 | lookup_fail(cfg.section, ENV_DATABASE); |
929 | goto err; | 929 | goto err; |
930 | } | 930 | } |
931 | db = load_index(dbfile, &db_attr); | 931 | db = load_index(dbfile, &db_attr); |
@@ -976,7 +976,7 @@ ca_main(int argc, char **argv) | |||
976 | p++; | 976 | p++; |
977 | } | 977 | } |
978 | } | 978 | } |
979 | if (ca_config.verbose) { | 979 | if (cfg.verbose) { |
980 | BIO_set_fp(out, stdout, BIO_NOCLOSE | BIO_FP_TEXT); | 980 | BIO_set_fp(out, stdout, BIO_NOCLOSE | BIO_FP_TEXT); |
981 | TXT_DB_write(out, db->db); | 981 | TXT_DB_write(out, db->db); |
982 | BIO_printf(bio_err, "%d entries loaded from the database\n", | 982 | BIO_printf(bio_err, "%d entries loaded from the database\n", |
@@ -988,8 +988,8 @@ ca_main(int argc, char **argv) | |||
988 | 988 | ||
989 | /*****************************************************************/ | 989 | /*****************************************************************/ |
990 | /* Update the db file for expired certificates */ | 990 | /* Update the db file for expired certificates */ |
991 | if (ca_config.doupdatedb) { | 991 | if (cfg.doupdatedb) { |
992 | if (ca_config.verbose) | 992 | if (cfg.verbose) |
993 | BIO_printf(bio_err, "Updating %s ...\n", dbfile); | 993 | BIO_printf(bio_err, "Updating %s ...\n", dbfile); |
994 | 994 | ||
995 | i = do_updatedb(db); | 995 | i = do_updatedb(db); |
@@ -997,7 +997,7 @@ ca_main(int argc, char **argv) | |||
997 | BIO_printf(bio_err, "Malloc failure\n"); | 997 | BIO_printf(bio_err, "Malloc failure\n"); |
998 | goto err; | 998 | goto err; |
999 | } else if (i == 0) { | 999 | } else if (i == 0) { |
1000 | if (ca_config.verbose) | 1000 | if (cfg.verbose) |
1001 | BIO_printf(bio_err, | 1001 | BIO_printf(bio_err, |
1002 | "No entries found to mark expired\n"); | 1002 | "No entries found to mark expired\n"); |
1003 | } else { | 1003 | } else { |
@@ -1007,92 +1007,92 @@ ca_main(int argc, char **argv) | |||
1007 | if (!rotate_index(dbfile, "new", "old")) | 1007 | if (!rotate_index(dbfile, "new", "old")) |
1008 | goto err; | 1008 | goto err; |
1009 | 1009 | ||
1010 | if (ca_config.verbose) | 1010 | if (cfg.verbose) |
1011 | BIO_printf(bio_err, | 1011 | BIO_printf(bio_err, |
1012 | "Done. %d entries marked as expired\n", i); | 1012 | "Done. %d entries marked as expired\n", i); |
1013 | } | 1013 | } |
1014 | } | 1014 | } |
1015 | /*****************************************************************/ | 1015 | /*****************************************************************/ |
1016 | /* Read extentions config file */ | 1016 | /* Read extentions config file */ |
1017 | if (ca_config.extfile != NULL) { | 1017 | if (cfg.extfile != NULL) { |
1018 | extconf = NCONF_new(NULL); | 1018 | extconf = NCONF_new(NULL); |
1019 | if (NCONF_load(extconf, ca_config.extfile, &errorline) <= 0) { | 1019 | if (NCONF_load(extconf, cfg.extfile, &errorline) <= 0) { |
1020 | if (errorline <= 0) | 1020 | if (errorline <= 0) |
1021 | BIO_printf(bio_err, | 1021 | BIO_printf(bio_err, |
1022 | "ERROR: loading the config file '%s'\n", | 1022 | "ERROR: loading the config file '%s'\n", |
1023 | ca_config.extfile); | 1023 | cfg.extfile); |
1024 | else | 1024 | else |
1025 | BIO_printf(bio_err, | 1025 | BIO_printf(bio_err, |
1026 | "ERROR: on line %ld of config file '%s'\n", | 1026 | "ERROR: on line %ld of config file '%s'\n", |
1027 | errorline, ca_config.extfile); | 1027 | errorline, cfg.extfile); |
1028 | ret = 1; | 1028 | ret = 1; |
1029 | goto err; | 1029 | goto err; |
1030 | } | 1030 | } |
1031 | if (ca_config.verbose) | 1031 | if (cfg.verbose) |
1032 | BIO_printf(bio_err, | 1032 | BIO_printf(bio_err, |
1033 | "Successfully loaded extensions file %s\n", | 1033 | "Successfully loaded extensions file %s\n", |
1034 | ca_config.extfile); | 1034 | cfg.extfile); |
1035 | 1035 | ||
1036 | /* We can have sections in the ext file */ | 1036 | /* We can have sections in the ext file */ |
1037 | if (ca_config.extensions == NULL && | 1037 | if (cfg.extensions == NULL && |
1038 | (ca_config.extensions = NCONF_get_string(extconf, "default", | 1038 | (cfg.extensions = NCONF_get_string(extconf, "default", |
1039 | "extensions")) == NULL) | 1039 | "extensions")) == NULL) |
1040 | ca_config.extensions = "default"; | 1040 | cfg.extensions = "default"; |
1041 | } | 1041 | } |
1042 | /*****************************************************************/ | 1042 | /*****************************************************************/ |
1043 | if (ca_config.req || ca_config.gencrl) { | 1043 | if (cfg.req || cfg.gencrl) { |
1044 | if (ca_config.outfile != NULL) { | 1044 | if (cfg.outfile != NULL) { |
1045 | if (BIO_write_filename(Sout, ca_config.outfile) <= 0) { | 1045 | if (BIO_write_filename(Sout, cfg.outfile) <= 0) { |
1046 | perror(ca_config.outfile); | 1046 | perror(cfg.outfile); |
1047 | goto err; | 1047 | goto err; |
1048 | } | 1048 | } |
1049 | } else { | 1049 | } else { |
1050 | BIO_set_fp(Sout, stdout, BIO_NOCLOSE | BIO_FP_TEXT); | 1050 | BIO_set_fp(Sout, stdout, BIO_NOCLOSE | BIO_FP_TEXT); |
1051 | } | 1051 | } |
1052 | } | 1052 | } |
1053 | if ((ca_config.md == NULL) && | 1053 | if ((cfg.md == NULL) && |
1054 | ((ca_config.md = NCONF_get_string(conf, ca_config.section, | 1054 | ((cfg.md = NCONF_get_string(conf, cfg.section, |
1055 | ENV_DEFAULT_MD)) == NULL)) { | 1055 | ENV_DEFAULT_MD)) == NULL)) { |
1056 | lookup_fail(ca_config.section, ENV_DEFAULT_MD); | 1056 | lookup_fail(cfg.section, ENV_DEFAULT_MD); |
1057 | goto err; | 1057 | goto err; |
1058 | } | 1058 | } |
1059 | if (strcmp(ca_config.md, "default") == 0) { | 1059 | if (strcmp(cfg.md, "default") == 0) { |
1060 | int def_nid; | 1060 | int def_nid; |
1061 | if (EVP_PKEY_get_default_digest_nid(pkey, &def_nid) <= 0) { | 1061 | if (EVP_PKEY_get_default_digest_nid(pkey, &def_nid) <= 0) { |
1062 | BIO_puts(bio_err, "no default digest\n"); | 1062 | BIO_puts(bio_err, "no default digest\n"); |
1063 | goto err; | 1063 | goto err; |
1064 | } | 1064 | } |
1065 | ca_config.md = (char *) OBJ_nid2sn(def_nid); | 1065 | cfg.md = (char *) OBJ_nid2sn(def_nid); |
1066 | if (ca_config.md == NULL) | 1066 | if (cfg.md == NULL) |
1067 | goto err; | 1067 | goto err; |
1068 | } | 1068 | } |
1069 | if ((dgst = EVP_get_digestbyname(ca_config.md)) == NULL) { | 1069 | if ((dgst = EVP_get_digestbyname(cfg.md)) == NULL) { |
1070 | BIO_printf(bio_err, | 1070 | BIO_printf(bio_err, |
1071 | "%s is an unsupported message digest type\n", ca_config.md); | 1071 | "%s is an unsupported message digest type\n", cfg.md); |
1072 | goto err; | 1072 | goto err; |
1073 | } | 1073 | } |
1074 | if (ca_config.req) { | 1074 | if (cfg.req) { |
1075 | if ((ca_config.email_dn == 1) && | 1075 | if ((cfg.email_dn == 1) && |
1076 | ((tmp_email_dn = NCONF_get_string(conf, ca_config.section, | 1076 | ((tmp_email_dn = NCONF_get_string(conf, cfg.section, |
1077 | ENV_DEFAULT_EMAIL_DN)) != NULL)) { | 1077 | ENV_DEFAULT_EMAIL_DN)) != NULL)) { |
1078 | if (strcmp(tmp_email_dn, "no") == 0) | 1078 | if (strcmp(tmp_email_dn, "no") == 0) |
1079 | ca_config.email_dn = 0; | 1079 | cfg.email_dn = 0; |
1080 | } | 1080 | } |
1081 | if (ca_config.verbose) | 1081 | if (cfg.verbose) |
1082 | BIO_printf(bio_err, "message digest is %s\n", | 1082 | BIO_printf(bio_err, "message digest is %s\n", |
1083 | OBJ_nid2ln(EVP_MD_type(dgst))); | 1083 | OBJ_nid2ln(EVP_MD_type(dgst))); |
1084 | if ((ca_config.policy == NULL) && | 1084 | if ((cfg.policy == NULL) && |
1085 | ((ca_config.policy = NCONF_get_string(conf, | 1085 | ((cfg.policy = NCONF_get_string(conf, |
1086 | ca_config.section, ENV_POLICY)) == NULL)) { | 1086 | cfg.section, ENV_POLICY)) == NULL)) { |
1087 | lookup_fail(ca_config.section, ENV_POLICY); | 1087 | lookup_fail(cfg.section, ENV_POLICY); |
1088 | goto err; | 1088 | goto err; |
1089 | } | 1089 | } |
1090 | if (ca_config.verbose) | 1090 | if (cfg.verbose) |
1091 | BIO_printf(bio_err, "policy is %s\n", ca_config.policy); | 1091 | BIO_printf(bio_err, "policy is %s\n", cfg.policy); |
1092 | 1092 | ||
1093 | if ((serialfile = NCONF_get_string(conf, ca_config.section, | 1093 | if ((serialfile = NCONF_get_string(conf, cfg.section, |
1094 | ENV_SERIAL)) == NULL) { | 1094 | ENV_SERIAL)) == NULL) { |
1095 | lookup_fail(ca_config.section, ENV_SERIAL); | 1095 | lookup_fail(cfg.section, ENV_SERIAL); |
1096 | goto err; | 1096 | goto err; |
1097 | } | 1097 | } |
1098 | if (extconf == NULL) { | 1098 | if (extconf == NULL) { |
@@ -1100,59 +1100,59 @@ ca_main(int argc, char **argv) | |||
1100 | * no '-extfile' option, so we look for extensions in | 1100 | * no '-extfile' option, so we look for extensions in |
1101 | * the main configuration file | 1101 | * the main configuration file |
1102 | */ | 1102 | */ |
1103 | if (ca_config.extensions == NULL) { | 1103 | if (cfg.extensions == NULL) { |
1104 | ca_config.extensions = NCONF_get_string(conf, | 1104 | cfg.extensions = NCONF_get_string(conf, |
1105 | ca_config.section, ENV_EXTENSIONS); | 1105 | cfg.section, ENV_EXTENSIONS); |
1106 | if (ca_config.extensions == NULL) | 1106 | if (cfg.extensions == NULL) |
1107 | ERR_clear_error(); | 1107 | ERR_clear_error(); |
1108 | } | 1108 | } |
1109 | if (ca_config.extensions != NULL) { | 1109 | if (cfg.extensions != NULL) { |
1110 | /* Check syntax of file */ | 1110 | /* Check syntax of file */ |
1111 | X509V3_CTX ctx; | 1111 | X509V3_CTX ctx; |
1112 | X509V3_set_ctx_test(&ctx); | 1112 | X509V3_set_ctx_test(&ctx); |
1113 | X509V3_set_nconf(&ctx, conf); | 1113 | X509V3_set_nconf(&ctx, conf); |
1114 | if (!X509V3_EXT_add_nconf(conf, &ctx, | 1114 | if (!X509V3_EXT_add_nconf(conf, &ctx, |
1115 | ca_config.extensions, NULL)) { | 1115 | cfg.extensions, NULL)) { |
1116 | BIO_printf(bio_err, | 1116 | BIO_printf(bio_err, |
1117 | "Error Loading extension section %s\n", | 1117 | "Error Loading extension section %s\n", |
1118 | ca_config.extensions); | 1118 | cfg.extensions); |
1119 | ret = 1; | 1119 | ret = 1; |
1120 | goto err; | 1120 | goto err; |
1121 | } | 1121 | } |
1122 | } | 1122 | } |
1123 | } | 1123 | } |
1124 | if (ca_config.startdate == NULL) { | 1124 | if (cfg.startdate == NULL) { |
1125 | ca_config.startdate = NCONF_get_string(conf, | 1125 | cfg.startdate = NCONF_get_string(conf, |
1126 | ca_config.section, ENV_DEFAULT_STARTDATE); | 1126 | cfg.section, ENV_DEFAULT_STARTDATE); |
1127 | if (ca_config.startdate == NULL) | 1127 | if (cfg.startdate == NULL) |
1128 | ERR_clear_error(); | 1128 | ERR_clear_error(); |
1129 | } | 1129 | } |
1130 | if (ca_config.startdate == NULL) | 1130 | if (cfg.startdate == NULL) |
1131 | ca_config.startdate = "today"; | 1131 | cfg.startdate = "today"; |
1132 | 1132 | ||
1133 | if (ca_config.enddate == NULL) { | 1133 | if (cfg.enddate == NULL) { |
1134 | ca_config.enddate = NCONF_get_string(conf, | 1134 | cfg.enddate = NCONF_get_string(conf, |
1135 | ca_config.section, ENV_DEFAULT_ENDDATE); | 1135 | cfg.section, ENV_DEFAULT_ENDDATE); |
1136 | if (ca_config.enddate == NULL) | 1136 | if (cfg.enddate == NULL) |
1137 | ERR_clear_error(); | 1137 | ERR_clear_error(); |
1138 | } | 1138 | } |
1139 | if (ca_config.days == 0 && ca_config.enddate == NULL) { | 1139 | if (cfg.days == 0 && cfg.enddate == NULL) { |
1140 | if (!NCONF_get_number(conf, ca_config.section, | 1140 | if (!NCONF_get_number(conf, cfg.section, |
1141 | ENV_DEFAULT_DAYS, &ca_config.days)) | 1141 | ENV_DEFAULT_DAYS, &cfg.days)) |
1142 | ca_config.days = 0; | 1142 | cfg.days = 0; |
1143 | } | 1143 | } |
1144 | if (ca_config.enddate == NULL && ca_config.days == 0) { | 1144 | if (cfg.enddate == NULL && cfg.days == 0) { |
1145 | BIO_printf(bio_err, | 1145 | BIO_printf(bio_err, |
1146 | "cannot lookup how many days to certify for\n"); | 1146 | "cannot lookup how many days to certify for\n"); |
1147 | goto err; | 1147 | goto err; |
1148 | } | 1148 | } |
1149 | if ((serial = load_serial(serialfile, ca_config.create_serial, | 1149 | if ((serial = load_serial(serialfile, cfg.create_serial, |
1150 | NULL)) == NULL) { | 1150 | NULL)) == NULL) { |
1151 | BIO_printf(bio_err, | 1151 | BIO_printf(bio_err, |
1152 | "error while loading serial number\n"); | 1152 | "error while loading serial number\n"); |
1153 | goto err; | 1153 | goto err; |
1154 | } | 1154 | } |
1155 | if (ca_config.verbose) { | 1155 | if (cfg.verbose) { |
1156 | if (BN_is_zero(serial)) | 1156 | if (BN_is_zero(serial)) |
1157 | BIO_printf(bio_err, | 1157 | BIO_printf(bio_err, |
1158 | "next serial number is 00\n"); | 1158 | "next serial number is 00\n"); |
@@ -1164,25 +1164,25 @@ ca_main(int argc, char **argv) | |||
1164 | free(f); | 1164 | free(f); |
1165 | } | 1165 | } |
1166 | } | 1166 | } |
1167 | if ((attribs = NCONF_get_section(conf, ca_config.policy)) == | 1167 | if ((attribs = NCONF_get_section(conf, cfg.policy)) == |
1168 | NULL) { | 1168 | NULL) { |
1169 | BIO_printf(bio_err, "unable to find 'section' for %s\n", | 1169 | BIO_printf(bio_err, "unable to find 'section' for %s\n", |
1170 | ca_config.policy); | 1170 | cfg.policy); |
1171 | goto err; | 1171 | goto err; |
1172 | } | 1172 | } |
1173 | if ((cert_sk = sk_X509_new_null()) == NULL) { | 1173 | if ((cert_sk = sk_X509_new_null()) == NULL) { |
1174 | BIO_printf(bio_err, "Memory allocation failure\n"); | 1174 | BIO_printf(bio_err, "Memory allocation failure\n"); |
1175 | goto err; | 1175 | goto err; |
1176 | } | 1176 | } |
1177 | if (ca_config.spkac_file != NULL) { | 1177 | if (cfg.spkac_file != NULL) { |
1178 | total++; | 1178 | total++; |
1179 | j = certify_spkac(&x, ca_config.spkac_file, pkey, x509, | 1179 | j = certify_spkac(&x, cfg.spkac_file, pkey, x509, |
1180 | dgst, ca_config.sigopts, attribs, db, serial, | 1180 | dgst, cfg.sigopts, attribs, db, serial, |
1181 | ca_config.subj, ca_config.chtype, | 1181 | cfg.subj, cfg.chtype, |
1182 | ca_config.multirdn, ca_config.email_dn, | 1182 | cfg.multirdn, cfg.email_dn, |
1183 | ca_config.startdate, ca_config.enddate, | 1183 | cfg.startdate, cfg.enddate, |
1184 | ca_config.days, ca_config.extensions, conf, | 1184 | cfg.days, cfg.extensions, conf, |
1185 | ca_config.verbose, certopt, nameopt, default_op, | 1185 | cfg.verbose, certopt, nameopt, default_op, |
1186 | ext_copy); | 1186 | ext_copy); |
1187 | if (j < 0) | 1187 | if (j < 0) |
1188 | goto err; | 1188 | goto err; |
@@ -1196,21 +1196,21 @@ ca_main(int argc, char **argv) | |||
1196 | "Memory allocation failure\n"); | 1196 | "Memory allocation failure\n"); |
1197 | goto err; | 1197 | goto err; |
1198 | } | 1198 | } |
1199 | if (ca_config.outfile != NULL) { | 1199 | if (cfg.outfile != NULL) { |
1200 | output_der = 1; | 1200 | output_der = 1; |
1201 | ca_config.batch = 1; | 1201 | cfg.batch = 1; |
1202 | } | 1202 | } |
1203 | } | 1203 | } |
1204 | } | 1204 | } |
1205 | if (ca_config.ss_cert_file != NULL) { | 1205 | if (cfg.ss_cert_file != NULL) { |
1206 | total++; | 1206 | total++; |
1207 | j = certify_cert(&x, ca_config.ss_cert_file, pkey, x509, | 1207 | j = certify_cert(&x, cfg.ss_cert_file, pkey, x509, |
1208 | dgst, ca_config.sigopts, attribs, db, serial, | 1208 | dgst, cfg.sigopts, attribs, db, serial, |
1209 | ca_config.subj, ca_config.chtype, | 1209 | cfg.subj, cfg.chtype, |
1210 | ca_config.multirdn, ca_config.email_dn, | 1210 | cfg.multirdn, cfg.email_dn, |
1211 | ca_config.startdate, ca_config.enddate, | 1211 | cfg.startdate, cfg.enddate, |
1212 | ca_config.days, ca_config.batch, | 1212 | cfg.days, cfg.batch, |
1213 | ca_config.extensions, conf, ca_config.verbose, | 1213 | cfg.extensions, conf, cfg.verbose, |
1214 | certopt, nameopt, default_op, ext_copy); | 1214 | certopt, nameopt, default_op, ext_copy); |
1215 | if (j < 0) | 1215 | if (j < 0) |
1216 | goto err; | 1216 | goto err; |
@@ -1226,17 +1226,17 @@ ca_main(int argc, char **argv) | |||
1226 | } | 1226 | } |
1227 | } | 1227 | } |
1228 | } | 1228 | } |
1229 | if (ca_config.infile != NULL) { | 1229 | if (cfg.infile != NULL) { |
1230 | total++; | 1230 | total++; |
1231 | j = certify(&x, ca_config.infile, pkey, x509p, dgst, | 1231 | j = certify(&x, cfg.infile, pkey, x509p, dgst, |
1232 | ca_config.sigopts, attribs, db, serial, | 1232 | cfg.sigopts, attribs, db, serial, |
1233 | ca_config.subj, ca_config.chtype, | 1233 | cfg.subj, cfg.chtype, |
1234 | ca_config.multirdn, ca_config.email_dn, | 1234 | cfg.multirdn, cfg.email_dn, |
1235 | ca_config.startdate, ca_config.enddate, | 1235 | cfg.startdate, cfg.enddate, |
1236 | ca_config.days, ca_config.batch, | 1236 | cfg.days, cfg.batch, |
1237 | ca_config.extensions, conf, ca_config.verbose, | 1237 | cfg.extensions, conf, cfg.verbose, |
1238 | certopt, nameopt, default_op, ext_copy, | 1238 | certopt, nameopt, default_op, ext_copy, |
1239 | ca_config.selfsign); | 1239 | cfg.selfsign); |
1240 | if (j < 0) | 1240 | if (j < 0) |
1241 | goto err; | 1241 | goto err; |
1242 | if (j > 0) { | 1242 | if (j > 0) { |
@@ -1251,17 +1251,17 @@ ca_main(int argc, char **argv) | |||
1251 | } | 1251 | } |
1252 | } | 1252 | } |
1253 | } | 1253 | } |
1254 | for (i = 0; i < ca_config.infiles_num; i++) { | 1254 | for (i = 0; i < cfg.infiles_num; i++) { |
1255 | total++; | 1255 | total++; |
1256 | j = certify(&x, ca_config.infiles[i], pkey, x509p, dgst, | 1256 | j = certify(&x, cfg.infiles[i], pkey, x509p, dgst, |
1257 | ca_config.sigopts, attribs, db, serial, | 1257 | cfg.sigopts, attribs, db, serial, |
1258 | ca_config.subj, ca_config.chtype, | 1258 | cfg.subj, cfg.chtype, |
1259 | ca_config.multirdn, ca_config.email_dn, | 1259 | cfg.multirdn, cfg.email_dn, |
1260 | ca_config.startdate, ca_config.enddate, | 1260 | cfg.startdate, cfg.enddate, |
1261 | ca_config.days, ca_config.batch, | 1261 | cfg.days, cfg.batch, |
1262 | ca_config.extensions, conf, ca_config.verbose, | 1262 | cfg.extensions, conf, cfg.verbose, |
1263 | certopt, nameopt, default_op, ext_copy, | 1263 | certopt, nameopt, default_op, ext_copy, |
1264 | ca_config.selfsign); | 1264 | cfg.selfsign); |
1265 | if (j < 0) | 1265 | if (j < 0) |
1266 | goto err; | 1266 | goto err; |
1267 | if (j > 0) { | 1267 | if (j > 0) { |
@@ -1282,7 +1282,7 @@ ca_main(int argc, char **argv) | |||
1282 | */ | 1282 | */ |
1283 | 1283 | ||
1284 | if (sk_X509_num(cert_sk) > 0) { | 1284 | if (sk_X509_num(cert_sk) > 0) { |
1285 | if (!ca_config.batch) { | 1285 | if (!cfg.batch) { |
1286 | char answer[10]; | 1286 | char answer[10]; |
1287 | 1287 | ||
1288 | BIO_printf(bio_err, | 1288 | BIO_printf(bio_err, |
@@ -1313,7 +1313,7 @@ ca_main(int argc, char **argv) | |||
1313 | if (!save_index(dbfile, "new", db)) | 1313 | if (!save_index(dbfile, "new", db)) |
1314 | goto err; | 1314 | goto err; |
1315 | } | 1315 | } |
1316 | if (ca_config.verbose) | 1316 | if (cfg.verbose) |
1317 | BIO_printf(bio_err, "writing new certificates\n"); | 1317 | BIO_printf(bio_err, "writing new certificates\n"); |
1318 | for (i = 0; i < sk_X509_num(cert_sk); i++) { | 1318 | for (i = 0; i < sk_X509_num(cert_sk); i++) { |
1319 | ASN1_INTEGER *serialNumber; | 1319 | ASN1_INTEGER *serialNumber; |
@@ -1334,7 +1334,7 @@ ca_main(int argc, char **argv) | |||
1334 | serialstr = strdup("00"); | 1334 | serialstr = strdup("00"); |
1335 | if (serialstr != NULL) { | 1335 | if (serialstr != NULL) { |
1336 | k = snprintf(pempath, sizeof(pempath), | 1336 | k = snprintf(pempath, sizeof(pempath), |
1337 | "%s/%s.pem", ca_config.outdir, serialstr); | 1337 | "%s/%s.pem", cfg.outdir, serialstr); |
1338 | free(serialstr); | 1338 | free(serialstr); |
1339 | if (k < 0 || k >= sizeof(pempath)) { | 1339 | if (k < 0 || k >= sizeof(pempath)) { |
1340 | BIO_printf(bio_err, | 1340 | BIO_printf(bio_err, |
@@ -1346,7 +1346,7 @@ ca_main(int argc, char **argv) | |||
1346 | "memory allocation failed\n"); | 1346 | "memory allocation failed\n"); |
1347 | goto err; | 1347 | goto err; |
1348 | } | 1348 | } |
1349 | if (ca_config.verbose) | 1349 | if (cfg.verbose) |
1350 | BIO_printf(bio_err, "writing %s\n", pempath); | 1350 | BIO_printf(bio_err, "writing %s\n", pempath); |
1351 | 1351 | ||
1352 | if (BIO_write_filename(Cout, pempath) <= 0) { | 1352 | if (BIO_write_filename(Cout, pempath) <= 0) { |
@@ -1354,10 +1354,10 @@ ca_main(int argc, char **argv) | |||
1354 | goto err; | 1354 | goto err; |
1355 | } | 1355 | } |
1356 | if (!write_new_certificate(Cout, x, 0, | 1356 | if (!write_new_certificate(Cout, x, 0, |
1357 | ca_config.notext)) | 1357 | cfg.notext)) |
1358 | goto err; | 1358 | goto err; |
1359 | if (!write_new_certificate(Sout, x, output_der, | 1359 | if (!write_new_certificate(Sout, x, output_der, |
1360 | ca_config.notext)) | 1360 | cfg.notext)) |
1361 | goto err; | 1361 | goto err; |
1362 | } | 1362 | } |
1363 | 1363 | ||
@@ -1373,29 +1373,29 @@ ca_main(int argc, char **argv) | |||
1373 | } | 1373 | } |
1374 | } | 1374 | } |
1375 | /*****************************************************************/ | 1375 | /*****************************************************************/ |
1376 | if (ca_config.gencrl) { | 1376 | if (cfg.gencrl) { |
1377 | int crl_v2 = 0; | 1377 | int crl_v2 = 0; |
1378 | if (ca_config.crl_ext == NULL) { | 1378 | if (cfg.crl_ext == NULL) { |
1379 | ca_config.crl_ext = NCONF_get_string(conf, | 1379 | cfg.crl_ext = NCONF_get_string(conf, |
1380 | ca_config.section, ENV_CRLEXT); | 1380 | cfg.section, ENV_CRLEXT); |
1381 | if (ca_config.crl_ext == NULL) | 1381 | if (cfg.crl_ext == NULL) |
1382 | ERR_clear_error(); | 1382 | ERR_clear_error(); |
1383 | } | 1383 | } |
1384 | if (ca_config.crl_ext != NULL) { | 1384 | if (cfg.crl_ext != NULL) { |
1385 | /* Check syntax of file */ | 1385 | /* Check syntax of file */ |
1386 | X509V3_CTX ctx; | 1386 | X509V3_CTX ctx; |
1387 | X509V3_set_ctx_test(&ctx); | 1387 | X509V3_set_ctx_test(&ctx); |
1388 | X509V3_set_nconf(&ctx, conf); | 1388 | X509V3_set_nconf(&ctx, conf); |
1389 | if (!X509V3_EXT_add_nconf(conf, &ctx, ca_config.crl_ext, | 1389 | if (!X509V3_EXT_add_nconf(conf, &ctx, cfg.crl_ext, |
1390 | NULL)) { | 1390 | NULL)) { |
1391 | BIO_printf(bio_err, | 1391 | BIO_printf(bio_err, |
1392 | "Error Loading CRL extension section %s\n", | 1392 | "Error Loading CRL extension section %s\n", |
1393 | ca_config.crl_ext); | 1393 | cfg.crl_ext); |
1394 | ret = 1; | 1394 | ret = 1; |
1395 | goto err; | 1395 | goto err; |
1396 | } | 1396 | } |
1397 | } | 1397 | } |
1398 | if ((crlnumberfile = NCONF_get_string(conf, ca_config.section, | 1398 | if ((crlnumberfile = NCONF_get_string(conf, cfg.section, |
1399 | ENV_CRLNUMBER)) != NULL) | 1399 | ENV_CRLNUMBER)) != NULL) |
1400 | if ((crlnumber = load_serial(crlnumberfile, 0, | 1400 | if ((crlnumber = load_serial(crlnumberfile, 0, |
1401 | NULL)) == NULL) { | 1401 | NULL)) == NULL) { |
@@ -1403,23 +1403,23 @@ ca_main(int argc, char **argv) | |||
1403 | "error while loading CRL number\n"); | 1403 | "error while loading CRL number\n"); |
1404 | goto err; | 1404 | goto err; |
1405 | } | 1405 | } |
1406 | if (!ca_config.crldays && !ca_config.crlhours && | 1406 | if (!cfg.crldays && !cfg.crlhours && |
1407 | !ca_config.crlsec) { | 1407 | !cfg.crlsec) { |
1408 | if (!NCONF_get_number(conf, ca_config.section, | 1408 | if (!NCONF_get_number(conf, cfg.section, |
1409 | ENV_DEFAULT_CRL_DAYS, &ca_config.crldays)) | 1409 | ENV_DEFAULT_CRL_DAYS, &cfg.crldays)) |
1410 | ca_config.crldays = 0; | 1410 | cfg.crldays = 0; |
1411 | if (!NCONF_get_number(conf, ca_config.section, | 1411 | if (!NCONF_get_number(conf, cfg.section, |
1412 | ENV_DEFAULT_CRL_HOURS, &ca_config.crlhours)) | 1412 | ENV_DEFAULT_CRL_HOURS, &cfg.crlhours)) |
1413 | ca_config.crlhours = 0; | 1413 | cfg.crlhours = 0; |
1414 | ERR_clear_error(); | 1414 | ERR_clear_error(); |
1415 | } | 1415 | } |
1416 | if ((ca_config.crldays == 0) && (ca_config.crlhours == 0) && | 1416 | if ((cfg.crldays == 0) && (cfg.crlhours == 0) && |
1417 | (ca_config.crlsec == 0)) { | 1417 | (cfg.crlsec == 0)) { |
1418 | BIO_printf(bio_err, | 1418 | BIO_printf(bio_err, |
1419 | "cannot lookup how long until the next CRL is issued\n"); | 1419 | "cannot lookup how long until the next CRL is issued\n"); |
1420 | goto err; | 1420 | goto err; |
1421 | } | 1421 | } |
1422 | if (ca_config.verbose) | 1422 | if (cfg.verbose) |
1423 | BIO_printf(bio_err, "making CRL\n"); | 1423 | BIO_printf(bio_err, "making CRL\n"); |
1424 | if ((crl = X509_CRL_new()) == NULL) | 1424 | if ((crl = X509_CRL_new()) == NULL) |
1425 | goto err; | 1425 | goto err; |
@@ -1430,8 +1430,8 @@ ca_main(int argc, char **argv) | |||
1430 | goto err; | 1430 | goto err; |
1431 | if (!X509_CRL_set_lastUpdate(crl, tmptm)) | 1431 | if (!X509_CRL_set_lastUpdate(crl, tmptm)) |
1432 | goto err; | 1432 | goto err; |
1433 | if (X509_time_adj_ex(tmptm, ca_config.crldays, | 1433 | if (X509_time_adj_ex(tmptm, cfg.crldays, |
1434 | ca_config.crlhours * 60 * 60 + ca_config.crlsec, NULL) == | 1434 | cfg.crlhours * 60 * 60 + cfg.crlsec, NULL) == |
1435 | NULL) { | 1435 | NULL) { |
1436 | BIO_puts(bio_err, "error setting CRL nextUpdate\n"); | 1436 | BIO_puts(bio_err, "error setting CRL nextUpdate\n"); |
1437 | goto err; | 1437 | goto err; |
@@ -1475,19 +1475,19 @@ ca_main(int argc, char **argv) | |||
1475 | X509_CRL_sort(crl); | 1475 | X509_CRL_sort(crl); |
1476 | 1476 | ||
1477 | /* we now have a CRL */ | 1477 | /* we now have a CRL */ |
1478 | if (ca_config.verbose) | 1478 | if (cfg.verbose) |
1479 | BIO_printf(bio_err, "signing CRL\n"); | 1479 | BIO_printf(bio_err, "signing CRL\n"); |
1480 | 1480 | ||
1481 | /* Add any extensions asked for */ | 1481 | /* Add any extensions asked for */ |
1482 | 1482 | ||
1483 | if (ca_config.crl_ext != NULL || crlnumberfile != NULL) { | 1483 | if (cfg.crl_ext != NULL || crlnumberfile != NULL) { |
1484 | X509V3_CTX crlctx; | 1484 | X509V3_CTX crlctx; |
1485 | X509V3_set_ctx(&crlctx, x509, NULL, NULL, crl, 0); | 1485 | X509V3_set_ctx(&crlctx, x509, NULL, NULL, crl, 0); |
1486 | X509V3_set_nconf(&crlctx, conf); | 1486 | X509V3_set_nconf(&crlctx, conf); |
1487 | 1487 | ||
1488 | if (ca_config.crl_ext != NULL) | 1488 | if (cfg.crl_ext != NULL) |
1489 | if (!X509V3_EXT_CRL_add_nconf(conf, &crlctx, | 1489 | if (!X509V3_EXT_CRL_add_nconf(conf, &crlctx, |
1490 | ca_config.crl_ext, crl)) | 1490 | cfg.crl_ext, crl)) |
1491 | goto err; | 1491 | goto err; |
1492 | if (crlnumberfile != NULL) { | 1492 | if (crlnumberfile != NULL) { |
1493 | tmpserial = BN_to_ASN1_INTEGER(crlnumber, NULL); | 1493 | tmpserial = BN_to_ASN1_INTEGER(crlnumber, NULL); |
@@ -1504,7 +1504,7 @@ ca_main(int argc, char **argv) | |||
1504 | goto err; | 1504 | goto err; |
1505 | } | 1505 | } |
1506 | } | 1506 | } |
1507 | if (ca_config.crl_ext != NULL || crl_v2) { | 1507 | if (cfg.crl_ext != NULL || crl_v2) { |
1508 | if (!X509_CRL_set_version(crl, 1)) | 1508 | if (!X509_CRL_set_version(crl, 1)) |
1509 | goto err; /* version 2 CRL */ | 1509 | goto err; /* version 2 CRL */ |
1510 | } | 1510 | } |
@@ -1517,7 +1517,7 @@ ca_main(int argc, char **argv) | |||
1517 | crlnumber = NULL; | 1517 | crlnumber = NULL; |
1518 | 1518 | ||
1519 | if (!do_X509_CRL_sign(bio_err, crl, pkey, dgst, | 1519 | if (!do_X509_CRL_sign(bio_err, crl, pkey, dgst, |
1520 | ca_config.sigopts)) | 1520 | cfg.sigopts)) |
1521 | goto err; | 1521 | goto err; |
1522 | 1522 | ||
1523 | if (!PEM_write_bio_X509_CRL(Sout, crl)) | 1523 | if (!PEM_write_bio_X509_CRL(Sout, crl)) |
@@ -1529,18 +1529,18 @@ ca_main(int argc, char **argv) | |||
1529 | 1529 | ||
1530 | } | 1530 | } |
1531 | /*****************************************************************/ | 1531 | /*****************************************************************/ |
1532 | if (ca_config.dorevoke) { | 1532 | if (cfg.dorevoke) { |
1533 | if (ca_config.infile == NULL) { | 1533 | if (cfg.infile == NULL) { |
1534 | BIO_printf(bio_err, "no input files\n"); | 1534 | BIO_printf(bio_err, "no input files\n"); |
1535 | goto err; | 1535 | goto err; |
1536 | } else { | 1536 | } else { |
1537 | X509 *revcert; | 1537 | X509 *revcert; |
1538 | revcert = load_cert(bio_err, ca_config.infile, | 1538 | revcert = load_cert(bio_err, cfg.infile, |
1539 | FORMAT_PEM, NULL, ca_config.infile); | 1539 | FORMAT_PEM, NULL, cfg.infile); |
1540 | if (revcert == NULL) | 1540 | if (revcert == NULL) |
1541 | goto err; | 1541 | goto err; |
1542 | j = do_revoke(revcert, db, ca_config.rev_type, | 1542 | j = do_revoke(revcert, db, cfg.rev_type, |
1543 | ca_config.rev_arg); | 1543 | cfg.rev_arg); |
1544 | if (j <= 0) | 1544 | if (j <= 0) |
1545 | goto err; | 1545 | goto err; |
1546 | X509_free(revcert); | 1546 | X509_free(revcert); |
@@ -1570,11 +1570,11 @@ ca_main(int argc, char **argv) | |||
1570 | if (ret) | 1570 | if (ret) |
1571 | ERR_print_errors(bio_err); | 1571 | ERR_print_errors(bio_err); |
1572 | if (free_key) | 1572 | if (free_key) |
1573 | free(ca_config.key); | 1573 | free(cfg.key); |
1574 | BN_free(serial); | 1574 | BN_free(serial); |
1575 | BN_free(crlnumber); | 1575 | BN_free(crlnumber); |
1576 | free_index(db); | 1576 | free_index(db); |
1577 | sk_OPENSSL_STRING_free(ca_config.sigopts); | 1577 | sk_OPENSSL_STRING_free(cfg.sigopts); |
1578 | EVP_PKEY_free(pkey); | 1578 | EVP_PKEY_free(pkey); |
1579 | X509_free(x509); | 1579 | X509_free(x509); |
1580 | X509_CRL_free(crl); | 1580 | X509_CRL_free(crl); |
@@ -1778,7 +1778,7 @@ do_body(X509 **xret, EVP_PKEY *pkey, X509 *x509, const EVP_MD *dgst, | |||
1778 | if (obj == NULL) | 1778 | if (obj == NULL) |
1779 | goto err; | 1779 | goto err; |
1780 | 1780 | ||
1781 | if (ca_config.msie_hack) { | 1781 | if (cfg.msie_hack) { |
1782 | /* assume all type should be strings */ | 1782 | /* assume all type should be strings */ |
1783 | nid = OBJ_obj2nid(X509_NAME_ENTRY_get_object(ne)); | 1783 | nid = OBJ_obj2nid(X509_NAME_ENTRY_get_object(ne)); |
1784 | if (nid == NID_undef) | 1784 | if (nid == NID_undef) |
@@ -1940,7 +1940,7 @@ do_body(X509 **xret, EVP_PKEY *pkey, X509 *x509, const EVP_MD *dgst, | |||
1940 | } | 1940 | } |
1941 | } | 1941 | } |
1942 | 1942 | ||
1943 | if (ca_config.preserve) { | 1943 | if (cfg.preserve) { |
1944 | X509_NAME_free(subject); | 1944 | X509_NAME_free(subject); |
1945 | /* subject=X509_NAME_dup(X509_REQ_get_subject_name(req)); */ | 1945 | /* subject=X509_NAME_dup(X509_REQ_get_subject_name(req)); */ |
1946 | subject = X509_NAME_dup(name); | 1946 | subject = X509_NAME_dup(name); |
diff --git a/src/usr.bin/openssl/certhash.c b/src/usr.bin/openssl/certhash.c index 785f1216ad..5ee29b8d01 100644 --- a/src/usr.bin/openssl/certhash.c +++ b/src/usr.bin/openssl/certhash.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: certhash.c,v 1.20 2022/11/11 17:07:38 joshua Exp $ */ | 1 | /* $OpenBSD: certhash.c,v 1.21 2023/03/06 14:32:05 tb Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014, 2015 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2014, 2015 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -36,20 +36,20 @@ | |||
36 | static struct { | 36 | static struct { |
37 | int dryrun; | 37 | int dryrun; |
38 | int verbose; | 38 | int verbose; |
39 | } certhash_config; | 39 | } cfg; |
40 | 40 | ||
41 | static const struct option certhash_options[] = { | 41 | static const struct option certhash_options[] = { |
42 | { | 42 | { |
43 | .name = "n", | 43 | .name = "n", |
44 | .desc = "Perform a dry-run - do not make any changes", | 44 | .desc = "Perform a dry-run - do not make any changes", |
45 | .type = OPTION_FLAG, | 45 | .type = OPTION_FLAG, |
46 | .opt.flag = &certhash_config.dryrun, | 46 | .opt.flag = &cfg.dryrun, |
47 | }, | 47 | }, |
48 | { | 48 | { |
49 | .name = "v", | 49 | .name = "v", |
50 | .desc = "Verbose", | 50 | .desc = "Verbose", |
51 | .type = OPTION_FLAG, | 51 | .type = OPTION_FLAG, |
52 | .opt.flag = &certhash_config.verbose, | 52 | .opt.flag = &cfg.verbose, |
53 | }, | 53 | }, |
54 | { NULL }, | 54 | { NULL }, |
55 | }; | 55 | }; |
@@ -569,7 +569,7 @@ certhash_directory(const char *path) | |||
569 | goto err; | 569 | goto err; |
570 | } | 570 | } |
571 | 571 | ||
572 | if (certhash_config.verbose) | 572 | if (cfg.verbose) |
573 | fprintf(stdout, "scanning directory %s\n", path); | 573 | fprintf(stdout, "scanning directory %s\n", path); |
574 | 574 | ||
575 | /* Create lists of existing hash links, certs and CRLs. */ | 575 | /* Create lists of existing hash links, certs and CRLs. */ |
@@ -594,11 +594,11 @@ certhash_directory(const char *path) | |||
594 | if (link->exists == 0 || | 594 | if (link->exists == 0 || |
595 | (link->reference != NULL && link->changed == 0)) | 595 | (link->reference != NULL && link->changed == 0)) |
596 | continue; | 596 | continue; |
597 | if (certhash_config.verbose) | 597 | if (cfg.verbose) |
598 | fprintf(stdout, "%s link %s -> %s\n", | 598 | fprintf(stdout, "%s link %s -> %s\n", |
599 | (certhash_config.dryrun ? "would remove" : | 599 | (cfg.dryrun ? "would remove" : |
600 | "removing"), link->filename, link->target); | 600 | "removing"), link->filename, link->target); |
601 | if (certhash_config.dryrun) | 601 | if (cfg.dryrun) |
602 | continue; | 602 | continue; |
603 | if (unlink(link->filename) == -1) { | 603 | if (unlink(link->filename) == -1) { |
604 | fprintf(stderr, "failed to remove link %s\n", | 604 | fprintf(stderr, "failed to remove link %s\n", |
@@ -611,12 +611,12 @@ certhash_directory(const char *path) | |||
611 | for (link = links; link != NULL; link = link->next) { | 611 | for (link = links; link != NULL; link = link->next) { |
612 | if (link->exists == 1 && link->changed == 0) | 612 | if (link->exists == 1 && link->changed == 0) |
613 | continue; | 613 | continue; |
614 | if (certhash_config.verbose) | 614 | if (cfg.verbose) |
615 | fprintf(stdout, "%s link %s -> %s\n", | 615 | fprintf(stdout, "%s link %s -> %s\n", |
616 | (certhash_config.dryrun ? "would create" : | 616 | (cfg.dryrun ? "would create" : |
617 | "creating"), link->filename, | 617 | "creating"), link->filename, |
618 | link->reference->filename); | 618 | link->reference->filename); |
619 | if (certhash_config.dryrun) | 619 | if (cfg.dryrun) |
620 | continue; | 620 | continue; |
621 | if (symlink(link->reference->filename, link->filename) == -1) { | 621 | if (symlink(link->reference->filename, link->filename) == -1) { |
622 | fprintf(stderr, "failed to create link %s -> %s\n", | 622 | fprintf(stderr, "failed to create link %s -> %s\n", |
@@ -658,7 +658,7 @@ certhash_main(int argc, char **argv) | |||
658 | exit(1); | 658 | exit(1); |
659 | } | 659 | } |
660 | 660 | ||
661 | memset(&certhash_config, 0, sizeof(certhash_config)); | 661 | memset(&cfg, 0, sizeof(cfg)); |
662 | 662 | ||
663 | if (options_parse(argc, argv, certhash_options, NULL, &argsused) != 0) { | 663 | if (options_parse(argc, argv, certhash_options, NULL, &argsused) != 0) { |
664 | certhash_usage(); | 664 | certhash_usage(); |
diff --git a/src/usr.bin/openssl/ciphers.c b/src/usr.bin/openssl/ciphers.c index 73d9e63b6f..247929bb9e 100644 --- a/src/usr.bin/openssl/ciphers.c +++ b/src/usr.bin/openssl/ciphers.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ciphers.c,v 1.17 2023/03/05 13:12:53 tb Exp $ */ | 1 | /* $OpenBSD: ciphers.c,v 1.18 2023/03/06 14:32:05 tb Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -29,65 +29,65 @@ static struct { | |||
29 | int use_supported; | 29 | int use_supported; |
30 | int verbose; | 30 | int verbose; |
31 | int version; | 31 | int version; |
32 | } ciphers_config; | 32 | } cfg; |
33 | 33 | ||
34 | static const struct option ciphers_options[] = { | 34 | static const struct option ciphers_options[] = { |
35 | { | 35 | { |
36 | .name = "h", | 36 | .name = "h", |
37 | .type = OPTION_FLAG, | 37 | .type = OPTION_FLAG, |
38 | .opt.flag = &ciphers_config.usage, | 38 | .opt.flag = &cfg.usage, |
39 | }, | 39 | }, |
40 | { | 40 | { |
41 | .name = "?", | 41 | .name = "?", |
42 | .type = OPTION_FLAG, | 42 | .type = OPTION_FLAG, |
43 | .opt.flag = &ciphers_config.usage, | 43 | .opt.flag = &cfg.usage, |
44 | }, | 44 | }, |
45 | { | 45 | { |
46 | .name = "s", | 46 | .name = "s", |
47 | .desc = "Only list ciphers that are supported by the TLS method", | 47 | .desc = "Only list ciphers that are supported by the TLS method", |
48 | .type = OPTION_FLAG, | 48 | .type = OPTION_FLAG, |
49 | .opt.flag = &ciphers_config.use_supported, | 49 | .opt.flag = &cfg.use_supported, |
50 | }, | 50 | }, |
51 | { | 51 | { |
52 | .name = "tls1", | 52 | .name = "tls1", |
53 | .desc = "Use TLS protocol version 1", | 53 | .desc = "Use TLS protocol version 1", |
54 | .type = OPTION_VALUE, | 54 | .type = OPTION_VALUE, |
55 | .opt.value = &ciphers_config.version, | 55 | .opt.value = &cfg.version, |
56 | .value = TLS1_VERSION, | 56 | .value = TLS1_VERSION, |
57 | }, | 57 | }, |
58 | { | 58 | { |
59 | .name = "tls1_1", | 59 | .name = "tls1_1", |
60 | .desc = "Use TLS protocol version 1.1", | 60 | .desc = "Use TLS protocol version 1.1", |
61 | .type = OPTION_VALUE, | 61 | .type = OPTION_VALUE, |
62 | .opt.value = &ciphers_config.version, | 62 | .opt.value = &cfg.version, |
63 | .value = TLS1_1_VERSION, | 63 | .value = TLS1_1_VERSION, |
64 | }, | 64 | }, |
65 | { | 65 | { |
66 | .name = "tls1_2", | 66 | .name = "tls1_2", |
67 | .desc = "Use TLS protocol version 1.2", | 67 | .desc = "Use TLS protocol version 1.2", |
68 | .type = OPTION_VALUE, | 68 | .type = OPTION_VALUE, |
69 | .opt.value = &ciphers_config.version, | 69 | .opt.value = &cfg.version, |
70 | .value = TLS1_2_VERSION, | 70 | .value = TLS1_2_VERSION, |
71 | }, | 71 | }, |
72 | { | 72 | { |
73 | .name = "tls1_3", | 73 | .name = "tls1_3", |
74 | .desc = "Use TLS protocol version 1.3", | 74 | .desc = "Use TLS protocol version 1.3", |
75 | .type = OPTION_VALUE, | 75 | .type = OPTION_VALUE, |
76 | .opt.value = &ciphers_config.version, | 76 | .opt.value = &cfg.version, |
77 | .value = TLS1_3_VERSION, | 77 | .value = TLS1_3_VERSION, |
78 | }, | 78 | }, |
79 | { | 79 | { |
80 | .name = "v", | 80 | .name = "v", |
81 | .desc = "Provide cipher listing", | 81 | .desc = "Provide cipher listing", |
82 | .type = OPTION_VALUE, | 82 | .type = OPTION_VALUE, |
83 | .opt.value = &ciphers_config.verbose, | 83 | .opt.value = &cfg.verbose, |
84 | .value = 1, | 84 | .value = 1, |
85 | }, | 85 | }, |
86 | { | 86 | { |
87 | .name = "V", | 87 | .name = "V", |
88 | .desc = "Provide cipher listing with cipher suite values", | 88 | .desc = "Provide cipher listing with cipher suite values", |
89 | .type = OPTION_VALUE, | 89 | .type = OPTION_VALUE, |
90 | .opt.value = &ciphers_config.verbose, | 90 | .opt.value = &cfg.verbose, |
91 | .value = 2, | 91 | .value = 2, |
92 | }, | 92 | }, |
93 | { NULL }, | 93 | { NULL }, |
@@ -119,7 +119,7 @@ ciphers_main(int argc, char **argv) | |||
119 | exit(1); | 119 | exit(1); |
120 | } | 120 | } |
121 | 121 | ||
122 | memset(&ciphers_config, 0, sizeof(ciphers_config)); | 122 | memset(&cfg, 0, sizeof(cfg)); |
123 | 123 | ||
124 | if (options_parse(argc, argv, ciphers_options, &cipherlist, | 124 | if (options_parse(argc, argv, ciphers_options, &cipherlist, |
125 | NULL) != 0) { | 125 | NULL) != 0) { |
@@ -127,7 +127,7 @@ ciphers_main(int argc, char **argv) | |||
127 | return (1); | 127 | return (1); |
128 | } | 128 | } |
129 | 129 | ||
130 | if (ciphers_config.usage) { | 130 | if (cfg.usage) { |
131 | ciphers_usage(); | 131 | ciphers_usage(); |
132 | return (1); | 132 | return (1); |
133 | } | 133 | } |
@@ -135,12 +135,12 @@ ciphers_main(int argc, char **argv) | |||
135 | if ((ssl_ctx = SSL_CTX_new(TLS_method())) == NULL) | 135 | if ((ssl_ctx = SSL_CTX_new(TLS_method())) == NULL) |
136 | goto err; | 136 | goto err; |
137 | 137 | ||
138 | if (ciphers_config.version != 0) { | 138 | if (cfg.version != 0) { |
139 | if (!SSL_CTX_set_min_proto_version(ssl_ctx, | 139 | if (!SSL_CTX_set_min_proto_version(ssl_ctx, |
140 | ciphers_config.version)) | 140 | cfg.version)) |
141 | goto err; | 141 | goto err; |
142 | if (!SSL_CTX_set_max_proto_version(ssl_ctx, | 142 | if (!SSL_CTX_set_max_proto_version(ssl_ctx, |
143 | ciphers_config.version)) | 143 | cfg.version)) |
144 | goto err; | 144 | goto err; |
145 | } | 145 | } |
146 | 146 | ||
@@ -152,7 +152,7 @@ ciphers_main(int argc, char **argv) | |||
152 | if ((ssl = SSL_new(ssl_ctx)) == NULL) | 152 | if ((ssl = SSL_new(ssl_ctx)) == NULL) |
153 | goto err; | 153 | goto err; |
154 | 154 | ||
155 | if (ciphers_config.use_supported) { | 155 | if (cfg.use_supported) { |
156 | if ((supported_ciphers = | 156 | if ((supported_ciphers = |
157 | SSL_get1_supported_ciphers(ssl)) == NULL) | 157 | SSL_get1_supported_ciphers(ssl)) == NULL) |
158 | goto err; | 158 | goto err; |
@@ -164,12 +164,12 @@ ciphers_main(int argc, char **argv) | |||
164 | 164 | ||
165 | for (i = 0; i < sk_SSL_CIPHER_num(ciphers); i++) { | 165 | for (i = 0; i < sk_SSL_CIPHER_num(ciphers); i++) { |
166 | cipher = sk_SSL_CIPHER_value(ciphers, i); | 166 | cipher = sk_SSL_CIPHER_value(ciphers, i); |
167 | if (ciphers_config.verbose == 0) { | 167 | if (cfg.verbose == 0) { |
168 | fprintf(stdout, "%s%s", (i ? ":" : ""), | 168 | fprintf(stdout, "%s%s", (i ? ":" : ""), |
169 | SSL_CIPHER_get_name(cipher)); | 169 | SSL_CIPHER_get_name(cipher)); |
170 | continue; | 170 | continue; |
171 | } | 171 | } |
172 | if (ciphers_config.verbose > 1) { | 172 | if (cfg.verbose > 1) { |
173 | value = SSL_CIPHER_get_value(cipher); | 173 | value = SSL_CIPHER_get_value(cipher); |
174 | fprintf(stdout, "%-*s0x%02X,0x%02X - ", 10, "", | 174 | fprintf(stdout, "%-*s0x%02X,0x%02X - ", 10, "", |
175 | ((value >> 8) & 0xff), (value & 0xff)); | 175 | ((value >> 8) & 0xff), (value & 0xff)); |
@@ -182,7 +182,7 @@ ciphers_main(int argc, char **argv) | |||
182 | fprintf(stdout, "%s", desc); | 182 | fprintf(stdout, "%s", desc); |
183 | free(desc); | 183 | free(desc); |
184 | } | 184 | } |
185 | if (ciphers_config.verbose == 0) | 185 | if (cfg.verbose == 0) |
186 | fprintf(stdout, "\n"); | 186 | fprintf(stdout, "\n"); |
187 | 187 | ||
188 | goto done; | 188 | goto done; |
diff --git a/src/usr.bin/openssl/cms.c b/src/usr.bin/openssl/cms.c index b88fd55b3c..0ddf26e5a7 100644 --- a/src/usr.bin/openssl/cms.c +++ b/src/usr.bin/openssl/cms.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: cms.c,v 1.32 2023/03/05 13:08:22 tb Exp $ */ | 1 | /* $OpenBSD: cms.c,v 1.33 2023/03/06 14:32:05 tb 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. | 3 | * project. |
4 | */ | 4 | */ |
@@ -149,7 +149,7 @@ static struct { | |||
149 | char *to; | 149 | char *to; |
150 | int verify_retcode; | 150 | int verify_retcode; |
151 | X509_VERIFY_PARAM *vpm; | 151 | X509_VERIFY_PARAM *vpm; |
152 | } cms_config; | 152 | } cfg; |
153 | 153 | ||
154 | static const EVP_CIPHER * | 154 | static const EVP_CIPHER * |
155 | get_cipher_by_name(char *name) | 155 | get_cipher_by_name(char *name) |
@@ -198,8 +198,8 @@ cms_opt_cipher(int argc, char **argv, int *argsused) | |||
198 | if (*name++ != '-') | 198 | if (*name++ != '-') |
199 | return (1); | 199 | return (1); |
200 | 200 | ||
201 | if ((cms_config.cipher = get_cipher_by_name(name)) == NULL) | 201 | if ((cfg.cipher = get_cipher_by_name(name)) == NULL) |
202 | if ((cms_config.cipher = EVP_get_cipherbyname(name)) == NULL) | 202 | if ((cfg.cipher = EVP_get_cipherbyname(name)) == NULL) |
203 | return (1); | 203 | return (1); |
204 | 204 | ||
205 | *argsused = 1; | 205 | *argsused = 1; |
@@ -209,9 +209,9 @@ cms_opt_cipher(int argc, char **argv, int *argsused) | |||
209 | static int | 209 | static int |
210 | cms_opt_econtent_type(char *arg) | 210 | cms_opt_econtent_type(char *arg) |
211 | { | 211 | { |
212 | ASN1_OBJECT_free(cms_config.econtent_type); | 212 | ASN1_OBJECT_free(cfg.econtent_type); |
213 | 213 | ||
214 | if ((cms_config.econtent_type = OBJ_txt2obj(arg, 0)) == NULL) { | 214 | if ((cfg.econtent_type = OBJ_txt2obj(arg, 0)) == NULL) { |
215 | BIO_printf(bio_err, "Invalid OID %s\n", arg); | 215 | BIO_printf(bio_err, "Invalid OID %s\n", arg); |
216 | return (1); | 216 | return (1); |
217 | } | 217 | } |
@@ -221,33 +221,33 @@ cms_opt_econtent_type(char *arg) | |||
221 | static int | 221 | static int |
222 | cms_opt_inkey(char *arg) | 222 | cms_opt_inkey(char *arg) |
223 | { | 223 | { |
224 | if (cms_config.keyfile == NULL) { | 224 | if (cfg.keyfile == NULL) { |
225 | cms_config.keyfile = arg; | 225 | cfg.keyfile = arg; |
226 | return (0); | 226 | return (0); |
227 | } | 227 | } |
228 | 228 | ||
229 | if (cms_config.signerfile == NULL) { | 229 | if (cfg.signerfile == NULL) { |
230 | BIO_puts(bio_err, "Illegal -inkey without -signer\n"); | 230 | BIO_puts(bio_err, "Illegal -inkey without -signer\n"); |
231 | return (1); | 231 | return (1); |
232 | } | 232 | } |
233 | 233 | ||
234 | if (cms_config.sksigners == NULL) | 234 | if (cfg.sksigners == NULL) |
235 | cms_config.sksigners = sk_OPENSSL_STRING_new_null(); | 235 | cfg.sksigners = sk_OPENSSL_STRING_new_null(); |
236 | if (cms_config.sksigners == NULL) | 236 | if (cfg.sksigners == NULL) |
237 | return (1); | 237 | return (1); |
238 | if (!sk_OPENSSL_STRING_push(cms_config.sksigners, cms_config.signerfile)) | 238 | if (!sk_OPENSSL_STRING_push(cfg.sksigners, cfg.signerfile)) |
239 | return (1); | 239 | return (1); |
240 | 240 | ||
241 | cms_config.signerfile = NULL; | 241 | cfg.signerfile = NULL; |
242 | 242 | ||
243 | if (cms_config.skkeys == NULL) | 243 | if (cfg.skkeys == NULL) |
244 | cms_config.skkeys = sk_OPENSSL_STRING_new_null(); | 244 | cfg.skkeys = sk_OPENSSL_STRING_new_null(); |
245 | if (cms_config.skkeys == NULL) | 245 | if (cfg.skkeys == NULL) |
246 | return (1); | 246 | return (1); |
247 | if (!sk_OPENSSL_STRING_push(cms_config.skkeys, cms_config.keyfile)) | 247 | if (!sk_OPENSSL_STRING_push(cfg.skkeys, cfg.keyfile)) |
248 | return (1); | 248 | return (1); |
249 | 249 | ||
250 | cms_config.keyfile = arg; | 250 | cfg.keyfile = arg; |
251 | return (0); | 251 | return (0); |
252 | } | 252 | } |
253 | 253 | ||
@@ -256,14 +256,14 @@ cms_opt_keyopt(char *arg) | |||
256 | { | 256 | { |
257 | int keyidx = -1; | 257 | int keyidx = -1; |
258 | 258 | ||
259 | if (cms_config.operation == SMIME_ENCRYPT) { | 259 | if (cfg.operation == SMIME_ENCRYPT) { |
260 | if (cms_config.encerts != NULL) | 260 | if (cfg.encerts != NULL) |
261 | keyidx += sk_X509_num(cms_config.encerts); | 261 | keyidx += sk_X509_num(cfg.encerts); |
262 | } else { | 262 | } else { |
263 | if (cms_config.keyfile != NULL || cms_config.signerfile != NULL) | 263 | if (cfg.keyfile != NULL || cfg.signerfile != NULL) |
264 | keyidx++; | 264 | keyidx++; |
265 | if (cms_config.skkeys != NULL) | 265 | if (cfg.skkeys != NULL) |
266 | keyidx += sk_OPENSSL_STRING_num(cms_config.skkeys); | 266 | keyidx += sk_OPENSSL_STRING_num(cfg.skkeys); |
267 | } | 267 | } |
268 | 268 | ||
269 | if (keyidx < 0) { | 269 | if (keyidx < 0) { |
@@ -271,8 +271,8 @@ cms_opt_keyopt(char *arg) | |||
271 | return (1); | 271 | return (1); |
272 | } | 272 | } |
273 | 273 | ||
274 | if (cms_config.key_param == NULL || | 274 | if (cfg.key_param == NULL || |
275 | cms_config.key_param->idx != keyidx) { | 275 | cfg.key_param->idx != keyidx) { |
276 | struct cms_key_param *nparam; | 276 | struct cms_key_param *nparam; |
277 | 277 | ||
278 | if ((nparam = calloc(1, sizeof(struct cms_key_param))) == NULL) | 278 | if ((nparam = calloc(1, sizeof(struct cms_key_param))) == NULL) |
@@ -285,15 +285,15 @@ cms_opt_keyopt(char *arg) | |||
285 | } | 285 | } |
286 | 286 | ||
287 | nparam->next = NULL; | 287 | nparam->next = NULL; |
288 | if (cms_config.key_first == NULL) | 288 | if (cfg.key_first == NULL) |
289 | cms_config.key_first = nparam; | 289 | cfg.key_first = nparam; |
290 | else | 290 | else |
291 | cms_config.key_param->next = nparam; | 291 | cfg.key_param->next = nparam; |
292 | 292 | ||
293 | cms_config.key_param = nparam; | 293 | cfg.key_param = nparam; |
294 | } | 294 | } |
295 | 295 | ||
296 | if (!sk_OPENSSL_STRING_push(cms_config.key_param->param, arg)) | 296 | if (!sk_OPENSSL_STRING_push(cfg.key_param->param, arg)) |
297 | return (1); | 297 | return (1); |
298 | 298 | ||
299 | return (0); | 299 | return (0); |
@@ -302,7 +302,7 @@ cms_opt_keyopt(char *arg) | |||
302 | static int | 302 | static int |
303 | cms_opt_md(char *arg) | 303 | cms_opt_md(char *arg) |
304 | { | 304 | { |
305 | if ((cms_config.sign_md = EVP_get_digestbyname(arg)) == NULL) { | 305 | if ((cfg.sign_md = EVP_get_digestbyname(arg)) == NULL) { |
306 | BIO_printf(bio_err, "Unknown digest %s\n", arg); | 306 | BIO_printf(bio_err, "Unknown digest %s\n", arg); |
307 | return (1); | 307 | return (1); |
308 | } | 308 | } |
@@ -312,38 +312,38 @@ cms_opt_md(char *arg) | |||
312 | static int | 312 | static int |
313 | cms_opt_print(void) | 313 | cms_opt_print(void) |
314 | { | 314 | { |
315 | cms_config.noout = 1; | 315 | cfg.noout = 1; |
316 | cms_config.print = 1; | 316 | cfg.print = 1; |
317 | return (0); | 317 | return (0); |
318 | } | 318 | } |
319 | 319 | ||
320 | static int | 320 | static int |
321 | cms_opt_pwri_pass(char *arg) | 321 | cms_opt_pwri_pass(char *arg) |
322 | { | 322 | { |
323 | cms_config.pwri_pass = (unsigned char *)arg; | 323 | cfg.pwri_pass = (unsigned char *)arg; |
324 | return (0); | 324 | return (0); |
325 | } | 325 | } |
326 | 326 | ||
327 | static int | 327 | static int |
328 | cms_opt_recip(char *arg) | 328 | cms_opt_recip(char *arg) |
329 | { | 329 | { |
330 | if (cms_config.operation == SMIME_ENCRYPT) { | 330 | if (cfg.operation == SMIME_ENCRYPT) { |
331 | if (cms_config.encerts == NULL) { | 331 | if (cfg.encerts == NULL) { |
332 | if ((cms_config.encerts = sk_X509_new_null()) == NULL) | 332 | if ((cfg.encerts = sk_X509_new_null()) == NULL) |
333 | return (1); | 333 | return (1); |
334 | } | 334 | } |
335 | 335 | ||
336 | cms_config.cert = load_cert(bio_err, arg, FORMAT_PEM, | 336 | cfg.cert = load_cert(bio_err, arg, FORMAT_PEM, |
337 | NULL, "recipient certificate file"); | 337 | NULL, "recipient certificate file"); |
338 | if (cms_config.cert == NULL) | 338 | if (cfg.cert == NULL) |
339 | return (1); | 339 | return (1); |
340 | 340 | ||
341 | if (!sk_X509_push(cms_config.encerts, cms_config.cert)) | 341 | if (!sk_X509_push(cfg.encerts, cfg.cert)) |
342 | return (1); | 342 | return (1); |
343 | 343 | ||
344 | cms_config.cert = NULL; | 344 | cfg.cert = NULL; |
345 | } else { | 345 | } else { |
346 | cms_config.recipfile = arg; | 346 | cfg.recipfile = arg; |
347 | } | 347 | } |
348 | return (0); | 348 | return (0); |
349 | } | 349 | } |
@@ -351,11 +351,11 @@ cms_opt_recip(char *arg) | |||
351 | static int | 351 | static int |
352 | cms_opt_receipt_request_from(char *arg) | 352 | cms_opt_receipt_request_from(char *arg) |
353 | { | 353 | { |
354 | if (cms_config.rr_from == NULL) | 354 | if (cfg.rr_from == NULL) |
355 | cms_config.rr_from = sk_OPENSSL_STRING_new_null(); | 355 | cfg.rr_from = sk_OPENSSL_STRING_new_null(); |
356 | if (cms_config.rr_from == NULL) | 356 | if (cfg.rr_from == NULL) |
357 | return (1); | 357 | return (1); |
358 | if (!sk_OPENSSL_STRING_push(cms_config.rr_from, arg)) | 358 | if (!sk_OPENSSL_STRING_push(cfg.rr_from, arg)) |
359 | return (1); | 359 | return (1); |
360 | 360 | ||
361 | return (0); | 361 | return (0); |
@@ -364,11 +364,11 @@ cms_opt_receipt_request_from(char *arg) | |||
364 | static int | 364 | static int |
365 | cms_opt_receipt_request_to(char *arg) | 365 | cms_opt_receipt_request_to(char *arg) |
366 | { | 366 | { |
367 | if (cms_config.rr_to == NULL) | 367 | if (cfg.rr_to == NULL) |
368 | cms_config.rr_to = sk_OPENSSL_STRING_new_null(); | 368 | cfg.rr_to = sk_OPENSSL_STRING_new_null(); |
369 | if (cms_config.rr_to == NULL) | 369 | if (cfg.rr_to == NULL) |
370 | return (1); | 370 | return (1); |
371 | if (!sk_OPENSSL_STRING_push(cms_config.rr_to, arg)) | 371 | if (!sk_OPENSSL_STRING_push(cfg.rr_to, arg)) |
372 | return (1); | 372 | return (1); |
373 | 373 | ||
374 | return (0); | 374 | return (0); |
@@ -379,13 +379,13 @@ cms_opt_secretkey(char *arg) | |||
379 | { | 379 | { |
380 | long ltmp; | 380 | long ltmp; |
381 | 381 | ||
382 | free(cms_config.secret_key); | 382 | free(cfg.secret_key); |
383 | 383 | ||
384 | if ((cms_config.secret_key = string_to_hex(arg, <mp)) == NULL) { | 384 | if ((cfg.secret_key = string_to_hex(arg, <mp)) == NULL) { |
385 | BIO_printf(bio_err, "Invalid key %s\n", arg); | 385 | BIO_printf(bio_err, "Invalid key %s\n", arg); |
386 | return (1); | 386 | return (1); |
387 | } | 387 | } |
388 | cms_config.secret_keylen = (size_t)ltmp; | 388 | cfg.secret_keylen = (size_t)ltmp; |
389 | return (0); | 389 | return (0); |
390 | } | 390 | } |
391 | 391 | ||
@@ -394,44 +394,44 @@ cms_opt_secretkeyid(char *arg) | |||
394 | { | 394 | { |
395 | long ltmp; | 395 | long ltmp; |
396 | 396 | ||
397 | free(cms_config.secret_keyid); | 397 | free(cfg.secret_keyid); |
398 | 398 | ||
399 | if ((cms_config.secret_keyid = string_to_hex(arg, <mp)) == NULL) { | 399 | if ((cfg.secret_keyid = string_to_hex(arg, <mp)) == NULL) { |
400 | BIO_printf(bio_err, "Invalid id %s\n", arg); | 400 | BIO_printf(bio_err, "Invalid id %s\n", arg); |
401 | return (1); | 401 | return (1); |
402 | } | 402 | } |
403 | cms_config.secret_keyidlen = (size_t)ltmp; | 403 | cfg.secret_keyidlen = (size_t)ltmp; |
404 | return (0); | 404 | return (0); |
405 | } | 405 | } |
406 | 406 | ||
407 | static int | 407 | static int |
408 | cms_opt_signer(char *arg) | 408 | cms_opt_signer(char *arg) |
409 | { | 409 | { |
410 | if (cms_config.signerfile == NULL) { | 410 | if (cfg.signerfile == NULL) { |
411 | cms_config.signerfile = arg; | 411 | cfg.signerfile = arg; |
412 | return (0); | 412 | return (0); |
413 | } | 413 | } |
414 | 414 | ||
415 | if (cms_config.sksigners == NULL) | 415 | if (cfg.sksigners == NULL) |
416 | cms_config.sksigners = sk_OPENSSL_STRING_new_null(); | 416 | cfg.sksigners = sk_OPENSSL_STRING_new_null(); |
417 | if (cms_config.sksigners == NULL) | 417 | if (cfg.sksigners == NULL) |
418 | return (1); | 418 | return (1); |
419 | if (!sk_OPENSSL_STRING_push(cms_config.sksigners, cms_config.signerfile)) | 419 | if (!sk_OPENSSL_STRING_push(cfg.sksigners, cfg.signerfile)) |
420 | return (1); | 420 | return (1); |
421 | 421 | ||
422 | if (cms_config.keyfile == NULL) | 422 | if (cfg.keyfile == NULL) |
423 | cms_config.keyfile = cms_config.signerfile; | 423 | cfg.keyfile = cfg.signerfile; |
424 | 424 | ||
425 | if (cms_config.skkeys == NULL) | 425 | if (cfg.skkeys == NULL) |
426 | cms_config.skkeys = sk_OPENSSL_STRING_new_null(); | 426 | cfg.skkeys = sk_OPENSSL_STRING_new_null(); |
427 | if (cms_config.skkeys == NULL) | 427 | if (cfg.skkeys == NULL) |
428 | return (1); | 428 | return (1); |
429 | if (!sk_OPENSSL_STRING_push(cms_config.skkeys, cms_config.keyfile)) | 429 | if (!sk_OPENSSL_STRING_push(cfg.skkeys, cfg.keyfile)) |
430 | return (1); | 430 | return (1); |
431 | 431 | ||
432 | cms_config.keyfile = NULL; | 432 | cfg.keyfile = NULL; |
433 | 433 | ||
434 | cms_config.signerfile = arg; | 434 | cfg.signerfile = arg; |
435 | return (0); | 435 | return (0); |
436 | } | 436 | } |
437 | 437 | ||
@@ -441,7 +441,7 @@ cms_opt_verify_param(int argc, char **argv, int *argsused) | |||
441 | int oargc = argc; | 441 | int oargc = argc; |
442 | int badarg = 0; | 442 | int badarg = 0; |
443 | 443 | ||
444 | if (!args_verify(&argv, &argc, &badarg, bio_err, &cms_config.vpm)) | 444 | if (!args_verify(&argv, &argc, &badarg, bio_err, &cfg.vpm)) |
445 | return (1); | 445 | return (1); |
446 | if (badarg) | 446 | if (badarg) |
447 | return (1); | 447 | return (1); |
@@ -454,8 +454,8 @@ cms_opt_verify_param(int argc, char **argv, int *argsused) | |||
454 | static int | 454 | static int |
455 | cms_opt_verify_receipt(char *arg) | 455 | cms_opt_verify_receipt(char *arg) |
456 | { | 456 | { |
457 | cms_config.operation = SMIME_VERIFY_RECEIPT; | 457 | cfg.operation = SMIME_VERIFY_RECEIPT; |
458 | cms_config.rctfile = arg; | 458 | cfg.rctfile = arg; |
459 | return (0); | 459 | return (0); |
460 | } | 460 | } |
461 | 461 | ||
@@ -539,20 +539,20 @@ static const struct option cms_options[] = { | |||
539 | .argname = "file", | 539 | .argname = "file", |
540 | .desc = "Certificate Authority file", | 540 | .desc = "Certificate Authority file", |
541 | .type = OPTION_ARG, | 541 | .type = OPTION_ARG, |
542 | .opt.arg = &cms_config.CAfile, | 542 | .opt.arg = &cfg.CAfile, |
543 | }, | 543 | }, |
544 | { | 544 | { |
545 | .name = "CApath", | 545 | .name = "CApath", |
546 | .argname = "path", | 546 | .argname = "path", |
547 | .desc = "Certificate Authority path", | 547 | .desc = "Certificate Authority path", |
548 | .type = OPTION_ARG, | 548 | .type = OPTION_ARG, |
549 | .opt.arg = &cms_config.CApath, | 549 | .opt.arg = &cfg.CApath, |
550 | }, | 550 | }, |
551 | { | 551 | { |
552 | .name = "binary", | 552 | .name = "binary", |
553 | .desc = "Do not translate message to text", | 553 | .desc = "Do not translate message to text", |
554 | .type = OPTION_VALUE_OR, | 554 | .type = OPTION_VALUE_OR, |
555 | .opt.value = &cms_config.flags, | 555 | .opt.value = &cfg.flags, |
556 | .value = CMS_BINARY, | 556 | .value = CMS_BINARY, |
557 | }, | 557 | }, |
558 | { | 558 | { |
@@ -560,27 +560,27 @@ static const struct option cms_options[] = { | |||
560 | .argname = "file", | 560 | .argname = "file", |
561 | .desc = "Other certificates file", | 561 | .desc = "Other certificates file", |
562 | .type = OPTION_ARG, | 562 | .type = OPTION_ARG, |
563 | .opt.arg = &cms_config.certfile, | 563 | .opt.arg = &cfg.certfile, |
564 | }, | 564 | }, |
565 | { | 565 | { |
566 | .name = "certsout", | 566 | .name = "certsout", |
567 | .argname = "file", | 567 | .argname = "file", |
568 | .desc = "Certificate output file", | 568 | .desc = "Certificate output file", |
569 | .type = OPTION_ARG, | 569 | .type = OPTION_ARG, |
570 | .opt.arg = &cms_config.certsoutfile, | 570 | .opt.arg = &cfg.certsoutfile, |
571 | }, | 571 | }, |
572 | { | 572 | { |
573 | .name = "cmsout", | 573 | .name = "cmsout", |
574 | .desc = "Output CMS structure", | 574 | .desc = "Output CMS structure", |
575 | .type = OPTION_VALUE, | 575 | .type = OPTION_VALUE, |
576 | .opt.value = &cms_config.operation, | 576 | .opt.value = &cfg.operation, |
577 | .value = SMIME_CMSOUT, | 577 | .value = SMIME_CMSOUT, |
578 | }, | 578 | }, |
579 | { | 579 | { |
580 | .name = "compress", | 580 | .name = "compress", |
581 | .desc = "Create CMS CompressedData type", | 581 | .desc = "Create CMS CompressedData type", |
582 | .type = OPTION_VALUE, | 582 | .type = OPTION_VALUE, |
583 | .opt.value = &cms_config.operation, | 583 | .opt.value = &cfg.operation, |
584 | .value = SMIME_COMPRESS, | 584 | .value = SMIME_COMPRESS, |
585 | }, | 585 | }, |
586 | { | 586 | { |
@@ -588,55 +588,55 @@ static const struct option cms_options[] = { | |||
588 | .argname = "file", | 588 | .argname = "file", |
589 | .desc = "Supply or override content for detached signature", | 589 | .desc = "Supply or override content for detached signature", |
590 | .type = OPTION_ARG, | 590 | .type = OPTION_ARG, |
591 | .opt.arg = &cms_config.contfile, | 591 | .opt.arg = &cfg.contfile, |
592 | }, | 592 | }, |
593 | { | 593 | { |
594 | .name = "crlfeol", | 594 | .name = "crlfeol", |
595 | .desc = "Use CRLF as EOL termination instead of CR only", | 595 | .desc = "Use CRLF as EOL termination instead of CR only", |
596 | .type = OPTION_VALUE_OR, | 596 | .type = OPTION_VALUE_OR, |
597 | .opt.value = &cms_config.flags, | 597 | .opt.value = &cfg.flags, |
598 | .value = CMS_CRLFEOL, | 598 | .value = CMS_CRLFEOL, |
599 | }, | 599 | }, |
600 | { | 600 | { |
601 | .name = "data_create", | 601 | .name = "data_create", |
602 | .desc = "Create CMS Data type", | 602 | .desc = "Create CMS Data type", |
603 | .type = OPTION_VALUE, | 603 | .type = OPTION_VALUE, |
604 | .opt.value = &cms_config.operation, | 604 | .opt.value = &cfg.operation, |
605 | .value = SMIME_DATA_CREATE, | 605 | .value = SMIME_DATA_CREATE, |
606 | }, | 606 | }, |
607 | { | 607 | { |
608 | .name = "data_out", | 608 | .name = "data_out", |
609 | .desc = "Output content from the input CMS Data type", | 609 | .desc = "Output content from the input CMS Data type", |
610 | .type = OPTION_VALUE, | 610 | .type = OPTION_VALUE, |
611 | .opt.value = &cms_config.operation, | 611 | .opt.value = &cfg.operation, |
612 | .value = SMIME_DATAOUT, | 612 | .value = SMIME_DATAOUT, |
613 | }, | 613 | }, |
614 | { | 614 | { |
615 | .name = "debug_decrypt", | 615 | .name = "debug_decrypt", |
616 | .desc = "Set the CMS_DEBUG_DECRYPT flag when decrypting", | 616 | .desc = "Set the CMS_DEBUG_DECRYPT flag when decrypting", |
617 | .type = OPTION_VALUE_OR, | 617 | .type = OPTION_VALUE_OR, |
618 | .opt.value = &cms_config.flags, | 618 | .opt.value = &cfg.flags, |
619 | .value = CMS_DEBUG_DECRYPT, | 619 | .value = CMS_DEBUG_DECRYPT, |
620 | }, | 620 | }, |
621 | { | 621 | { |
622 | .name = "decrypt", | 622 | .name = "decrypt", |
623 | .desc = "Decrypt encrypted message", | 623 | .desc = "Decrypt encrypted message", |
624 | .type = OPTION_VALUE, | 624 | .type = OPTION_VALUE, |
625 | .opt.value = &cms_config.operation, | 625 | .opt.value = &cfg.operation, |
626 | .value = SMIME_DECRYPT, | 626 | .value = SMIME_DECRYPT, |
627 | }, | 627 | }, |
628 | { | 628 | { |
629 | .name = "digest_create", | 629 | .name = "digest_create", |
630 | .desc = "Create CMS DigestedData type", | 630 | .desc = "Create CMS DigestedData type", |
631 | .type = OPTION_VALUE, | 631 | .type = OPTION_VALUE, |
632 | .opt.value = &cms_config.operation, | 632 | .opt.value = &cfg.operation, |
633 | .value = SMIME_DIGEST_CREATE, | 633 | .value = SMIME_DIGEST_CREATE, |
634 | }, | 634 | }, |
635 | { | 635 | { |
636 | .name = "digest_verify", | 636 | .name = "digest_verify", |
637 | .desc = "Verify CMS DigestedData type and output the content", | 637 | .desc = "Verify CMS DigestedData type and output the content", |
638 | .type = OPTION_VALUE, | 638 | .type = OPTION_VALUE, |
639 | .opt.value = &cms_config.operation, | 639 | .opt.value = &cfg.operation, |
640 | .value = SMIME_DIGEST_VERIFY, | 640 | .value = SMIME_DIGEST_VERIFY, |
641 | }, | 641 | }, |
642 | { | 642 | { |
@@ -650,21 +650,21 @@ static const struct option cms_options[] = { | |||
650 | .name = "encrypt", | 650 | .name = "encrypt", |
651 | .desc = "Encrypt message", | 651 | .desc = "Encrypt message", |
652 | .type = OPTION_VALUE, | 652 | .type = OPTION_VALUE, |
653 | .opt.value = &cms_config.operation, | 653 | .opt.value = &cfg.operation, |
654 | .value = SMIME_ENCRYPT, | 654 | .value = SMIME_ENCRYPT, |
655 | }, | 655 | }, |
656 | { | 656 | { |
657 | .name = "EncryptedData_decrypt", | 657 | .name = "EncryptedData_decrypt", |
658 | .desc = "Decrypt CMS EncryptedData", | 658 | .desc = "Decrypt CMS EncryptedData", |
659 | .type = OPTION_VALUE, | 659 | .type = OPTION_VALUE, |
660 | .opt.value = &cms_config.operation, | 660 | .opt.value = &cfg.operation, |
661 | .value = SMIME_ENCRYPTED_DECRYPT, | 661 | .value = SMIME_ENCRYPTED_DECRYPT, |
662 | }, | 662 | }, |
663 | { | 663 | { |
664 | .name = "EncryptedData_encrypt", | 664 | .name = "EncryptedData_encrypt", |
665 | .desc = "Encrypt content using supplied symmetric key and algorithm", | 665 | .desc = "Encrypt content using supplied symmetric key and algorithm", |
666 | .type = OPTION_VALUE, | 666 | .type = OPTION_VALUE, |
667 | .opt.value = &cms_config.operation, | 667 | .opt.value = &cfg.operation, |
668 | .value = SMIME_ENCRYPTED_ENCRYPT, | 668 | .value = SMIME_ENCRYPTED_ENCRYPT, |
669 | }, | 669 | }, |
670 | { | 670 | { |
@@ -672,20 +672,20 @@ static const struct option cms_options[] = { | |||
672 | .argname = "addr", | 672 | .argname = "addr", |
673 | .desc = "From address", | 673 | .desc = "From address", |
674 | .type = OPTION_ARG, | 674 | .type = OPTION_ARG, |
675 | .opt.arg = &cms_config.from, | 675 | .opt.arg = &cfg.from, |
676 | }, | 676 | }, |
677 | { | 677 | { |
678 | .name = "in", | 678 | .name = "in", |
679 | .argname = "file", | 679 | .argname = "file", |
680 | .desc = "Input file", | 680 | .desc = "Input file", |
681 | .type = OPTION_ARG, | 681 | .type = OPTION_ARG, |
682 | .opt.arg = &cms_config.infile, | 682 | .opt.arg = &cfg.infile, |
683 | }, | 683 | }, |
684 | { | 684 | { |
685 | .name = "indef", | 685 | .name = "indef", |
686 | .desc = "Same as -stream", | 686 | .desc = "Same as -stream", |
687 | .type = OPTION_VALUE_OR, | 687 | .type = OPTION_VALUE_OR, |
688 | .opt.value = &cms_config.flags, | 688 | .opt.value = &cfg.flags, |
689 | .value = CMS_STREAM, | 689 | .value = CMS_STREAM, |
690 | }, | 690 | }, |
691 | { | 691 | { |
@@ -693,7 +693,7 @@ static const struct option cms_options[] = { | |||
693 | .argname = "fmt", | 693 | .argname = "fmt", |
694 | .desc = "Input format (DER, PEM or SMIME (default))", | 694 | .desc = "Input format (DER, PEM or SMIME (default))", |
695 | .type = OPTION_ARG_FORMAT, | 695 | .type = OPTION_ARG_FORMAT, |
696 | .opt.value = &cms_config.informat, | 696 | .opt.value = &cfg.informat, |
697 | }, | 697 | }, |
698 | { | 698 | { |
699 | .name = "inkey", | 699 | .name = "inkey", |
@@ -707,13 +707,13 @@ static const struct option cms_options[] = { | |||
707 | .argname = "fmt", | 707 | .argname = "fmt", |
708 | .desc = "Input key format (DER or PEM (default))", | 708 | .desc = "Input key format (DER or PEM (default))", |
709 | .type = OPTION_ARG_FORMAT, | 709 | .type = OPTION_ARG_FORMAT, |
710 | .opt.value = &cms_config.keyform, | 710 | .opt.value = &cfg.keyform, |
711 | }, | 711 | }, |
712 | { | 712 | { |
713 | .name = "keyid", | 713 | .name = "keyid", |
714 | .desc = "Use subject key identifier", | 714 | .desc = "Use subject key identifier", |
715 | .type = OPTION_VALUE_OR, | 715 | .type = OPTION_VALUE_OR, |
716 | .opt.value = &cms_config.flags, | 716 | .opt.value = &cfg.flags, |
717 | .value = CMS_USE_KEYID, | 717 | .value = CMS_USE_KEYID, |
718 | }, | 718 | }, |
719 | { | 719 | { |
@@ -734,90 +734,90 @@ static const struct option cms_options[] = { | |||
734 | .name = "no_attr_verify", | 734 | .name = "no_attr_verify", |
735 | .desc = "Do not verify the signer's attribute of a signature", | 735 | .desc = "Do not verify the signer's attribute of a signature", |
736 | .type = OPTION_VALUE_OR, | 736 | .type = OPTION_VALUE_OR, |
737 | .opt.value = &cms_config.flags, | 737 | .opt.value = &cfg.flags, |
738 | .value = CMS_NO_ATTR_VERIFY, | 738 | .value = CMS_NO_ATTR_VERIFY, |
739 | }, | 739 | }, |
740 | { | 740 | { |
741 | .name = "no_content_verify", | 741 | .name = "no_content_verify", |
742 | .desc = "Do not verify the content of a signed message", | 742 | .desc = "Do not verify the content of a signed message", |
743 | .type = OPTION_VALUE_OR, | 743 | .type = OPTION_VALUE_OR, |
744 | .opt.value = &cms_config.flags, | 744 | .opt.value = &cfg.flags, |
745 | .value = CMS_NO_CONTENT_VERIFY, | 745 | .value = CMS_NO_CONTENT_VERIFY, |
746 | }, | 746 | }, |
747 | { | 747 | { |
748 | .name = "no_signer_cert_verify", | 748 | .name = "no_signer_cert_verify", |
749 | .desc = "Do not verify the signer's certificate", | 749 | .desc = "Do not verify the signer's certificate", |
750 | .type = OPTION_VALUE_OR, | 750 | .type = OPTION_VALUE_OR, |
751 | .opt.value = &cms_config.flags, | 751 | .opt.value = &cfg.flags, |
752 | .value = CMS_NO_SIGNER_CERT_VERIFY, | 752 | .value = CMS_NO_SIGNER_CERT_VERIFY, |
753 | }, | 753 | }, |
754 | { | 754 | { |
755 | .name = "noattr", | 755 | .name = "noattr", |
756 | .desc = "Do not include any signed attributes", | 756 | .desc = "Do not include any signed attributes", |
757 | .type = OPTION_VALUE_OR, | 757 | .type = OPTION_VALUE_OR, |
758 | .opt.value = &cms_config.flags, | 758 | .opt.value = &cfg.flags, |
759 | .value = CMS_NOATTR, | 759 | .value = CMS_NOATTR, |
760 | }, | 760 | }, |
761 | { | 761 | { |
762 | .name = "nocerts", | 762 | .name = "nocerts", |
763 | .desc = "Do not include signer's certificate when signing", | 763 | .desc = "Do not include signer's certificate when signing", |
764 | .type = OPTION_VALUE_OR, | 764 | .type = OPTION_VALUE_OR, |
765 | .opt.value = &cms_config.flags, | 765 | .opt.value = &cfg.flags, |
766 | .value = CMS_NOCERTS, | 766 | .value = CMS_NOCERTS, |
767 | }, | 767 | }, |
768 | { | 768 | { |
769 | .name = "nodetach", | 769 | .name = "nodetach", |
770 | .desc = "Use opaque signing", | 770 | .desc = "Use opaque signing", |
771 | .type = OPTION_VALUE_AND, | 771 | .type = OPTION_VALUE_AND, |
772 | .opt.value = &cms_config.flags, | 772 | .opt.value = &cfg.flags, |
773 | .value = ~CMS_DETACHED, | 773 | .value = ~CMS_DETACHED, |
774 | }, | 774 | }, |
775 | { | 775 | { |
776 | .name = "noindef", | 776 | .name = "noindef", |
777 | .desc = "Disable CMS streaming", | 777 | .desc = "Disable CMS streaming", |
778 | .type = OPTION_VALUE_AND, | 778 | .type = OPTION_VALUE_AND, |
779 | .opt.value = &cms_config.flags, | 779 | .opt.value = &cfg.flags, |
780 | .value = ~CMS_STREAM, | 780 | .value = ~CMS_STREAM, |
781 | }, | 781 | }, |
782 | { | 782 | { |
783 | .name = "nointern", | 783 | .name = "nointern", |
784 | .desc = "Do not search certificates in message for signer", | 784 | .desc = "Do not search certificates in message for signer", |
785 | .type = OPTION_VALUE_OR, | 785 | .type = OPTION_VALUE_OR, |
786 | .opt.value = &cms_config.flags, | 786 | .opt.value = &cfg.flags, |
787 | .value = CMS_NOINTERN, | 787 | .value = CMS_NOINTERN, |
788 | }, | 788 | }, |
789 | { | 789 | { |
790 | .name = "nooldmime", | 790 | .name = "nooldmime", |
791 | .desc = "Output old S/MIME content type", | 791 | .desc = "Output old S/MIME content type", |
792 | .type = OPTION_VALUE_OR, | 792 | .type = OPTION_VALUE_OR, |
793 | .opt.value = &cms_config.flags, | 793 | .opt.value = &cfg.flags, |
794 | .value = CMS_NOOLDMIMETYPE, | 794 | .value = CMS_NOOLDMIMETYPE, |
795 | }, | 795 | }, |
796 | { | 796 | { |
797 | .name = "noout", | 797 | .name = "noout", |
798 | .desc = "Do not output the parsed CMS structure", | 798 | .desc = "Do not output the parsed CMS structure", |
799 | .type = OPTION_FLAG, | 799 | .type = OPTION_FLAG, |
800 | .opt.flag = &cms_config.noout, | 800 | .opt.flag = &cfg.noout, |
801 | }, | 801 | }, |
802 | { | 802 | { |
803 | .name = "nosigs", | 803 | .name = "nosigs", |
804 | .desc = "Do not verify message signature", | 804 | .desc = "Do not verify message signature", |
805 | .type = OPTION_VALUE_OR, | 805 | .type = OPTION_VALUE_OR, |
806 | .opt.value = &cms_config.flags, | 806 | .opt.value = &cfg.flags, |
807 | .value = CMS_NOSIGS, | 807 | .value = CMS_NOSIGS, |
808 | }, | 808 | }, |
809 | { | 809 | { |
810 | .name = "nosmimecap", | 810 | .name = "nosmimecap", |
811 | .desc = "Omit the SMIMECapabilities attribute", | 811 | .desc = "Omit the SMIMECapabilities attribute", |
812 | .type = OPTION_VALUE_OR, | 812 | .type = OPTION_VALUE_OR, |
813 | .opt.value = &cms_config.flags, | 813 | .opt.value = &cfg.flags, |
814 | .value = CMS_NOSMIMECAP, | 814 | .value = CMS_NOSMIMECAP, |
815 | }, | 815 | }, |
816 | { | 816 | { |
817 | .name = "noverify", | 817 | .name = "noverify", |
818 | .desc = "Do not verify signer's certificate", | 818 | .desc = "Do not verify signer's certificate", |
819 | .type = OPTION_VALUE_OR, | 819 | .type = OPTION_VALUE_OR, |
820 | .opt.value = &cms_config.flags, | 820 | .opt.value = &cfg.flags, |
821 | .value = CMS_NO_SIGNER_CERT_VERIFY, | 821 | .value = CMS_NO_SIGNER_CERT_VERIFY, |
822 | }, | 822 | }, |
823 | { | 823 | { |
@@ -825,21 +825,21 @@ static const struct option cms_options[] = { | |||
825 | .argname = "file", | 825 | .argname = "file", |
826 | .desc = "Output file", | 826 | .desc = "Output file", |
827 | .type = OPTION_ARG, | 827 | .type = OPTION_ARG, |
828 | .opt.arg = &cms_config.outfile, | 828 | .opt.arg = &cfg.outfile, |
829 | }, | 829 | }, |
830 | { | 830 | { |
831 | .name = "outform", | 831 | .name = "outform", |
832 | .argname = "fmt", | 832 | .argname = "fmt", |
833 | .desc = "Output format (DER, PEM or SMIME (default))", | 833 | .desc = "Output format (DER, PEM or SMIME (default))", |
834 | .type = OPTION_ARG_FORMAT, | 834 | .type = OPTION_ARG_FORMAT, |
835 | .opt.value = &cms_config.outformat, | 835 | .opt.value = &cfg.outformat, |
836 | }, | 836 | }, |
837 | { | 837 | { |
838 | .name = "passin", | 838 | .name = "passin", |
839 | .argname = "src", | 839 | .argname = "src", |
840 | .desc = "Private key password source", | 840 | .desc = "Private key password source", |
841 | .type = OPTION_ARG, | 841 | .type = OPTION_ARG, |
842 | .opt.arg = &cms_config.passargin, | 842 | .opt.arg = &cfg.passargin, |
843 | }, | 843 | }, |
844 | { | 844 | { |
845 | .name = "print", | 845 | .name = "print", |
@@ -859,20 +859,20 @@ static const struct option cms_options[] = { | |||
859 | .argname = "fmt", | 859 | .argname = "fmt", |
860 | .desc = "Receipt file format (DER, PEM or SMIME (default))", | 860 | .desc = "Receipt file format (DER, PEM or SMIME (default))", |
861 | .type = OPTION_ARG_FORMAT, | 861 | .type = OPTION_ARG_FORMAT, |
862 | .opt.value = &cms_config.rctformat, | 862 | .opt.value = &cfg.rctformat, |
863 | }, | 863 | }, |
864 | { | 864 | { |
865 | .name = "receipt_request_all", | 865 | .name = "receipt_request_all", |
866 | .desc = "Indicate requests should be provided by all recipients", | 866 | .desc = "Indicate requests should be provided by all recipients", |
867 | .type = OPTION_VALUE, | 867 | .type = OPTION_VALUE, |
868 | .opt.value = &cms_config.rr_allorfirst, | 868 | .opt.value = &cfg.rr_allorfirst, |
869 | .value = 0, | 869 | .value = 0, |
870 | }, | 870 | }, |
871 | { | 871 | { |
872 | .name = "receipt_request_first", | 872 | .name = "receipt_request_first", |
873 | .desc = "Indicate requests should be provided by first tier recipient", | 873 | .desc = "Indicate requests should be provided by first tier recipient", |
874 | .type = OPTION_VALUE, | 874 | .type = OPTION_VALUE, |
875 | .opt.value = &cms_config.rr_allorfirst, | 875 | .opt.value = &cfg.rr_allorfirst, |
876 | .value = 1, | 876 | .value = 1, |
877 | }, | 877 | }, |
878 | { | 878 | { |
@@ -886,7 +886,7 @@ static const struct option cms_options[] = { | |||
886 | .name = "receipt_request_print", | 886 | .name = "receipt_request_print", |
887 | .desc = "Print out the contents of any signed receipt requests", | 887 | .desc = "Print out the contents of any signed receipt requests", |
888 | .type = OPTION_FLAG, | 888 | .type = OPTION_FLAG, |
889 | .opt.flag = &cms_config.rr_print, | 889 | .opt.flag = &cfg.rr_print, |
890 | }, | 890 | }, |
891 | { | 891 | { |
892 | .name = "receipt_request_to", | 892 | .name = "receipt_request_to", |
@@ -906,7 +906,7 @@ static const struct option cms_options[] = { | |||
906 | .name = "resign", | 906 | .name = "resign", |
907 | .desc = "Resign a signed message", | 907 | .desc = "Resign a signed message", |
908 | .type = OPTION_VALUE, | 908 | .type = OPTION_VALUE, |
909 | .opt.value = &cms_config.operation, | 909 | .opt.value = &cfg.operation, |
910 | .value = SMIME_RESIGN, | 910 | .value = SMIME_RESIGN, |
911 | }, | 911 | }, |
912 | { | 912 | { |
@@ -927,14 +927,14 @@ static const struct option cms_options[] = { | |||
927 | .name = "sign", | 927 | .name = "sign", |
928 | .desc = "Sign message", | 928 | .desc = "Sign message", |
929 | .type = OPTION_VALUE, | 929 | .type = OPTION_VALUE, |
930 | .opt.value = &cms_config.operation, | 930 | .opt.value = &cfg.operation, |
931 | .value = SMIME_SIGN, | 931 | .value = SMIME_SIGN, |
932 | }, | 932 | }, |
933 | { | 933 | { |
934 | .name = "sign_receipt", | 934 | .name = "sign_receipt", |
935 | .desc = "Generate a signed receipt for the message", | 935 | .desc = "Generate a signed receipt for the message", |
936 | .type = OPTION_VALUE, | 936 | .type = OPTION_VALUE, |
937 | .opt.value = &cms_config.operation, | 937 | .opt.value = &cfg.operation, |
938 | .value = SMIME_SIGN_RECEIPT, | 938 | .value = SMIME_SIGN_RECEIPT, |
939 | }, | 939 | }, |
940 | { | 940 | { |
@@ -948,7 +948,7 @@ static const struct option cms_options[] = { | |||
948 | .name = "stream", | 948 | .name = "stream", |
949 | .desc = "Enable CMS streaming", | 949 | .desc = "Enable CMS streaming", |
950 | .type = OPTION_VALUE_OR, | 950 | .type = OPTION_VALUE_OR, |
951 | .opt.value = &cms_config.flags, | 951 | .opt.value = &cfg.flags, |
952 | .value = CMS_STREAM, | 952 | .value = CMS_STREAM, |
953 | }, | 953 | }, |
954 | { | 954 | { |
@@ -956,13 +956,13 @@ static const struct option cms_options[] = { | |||
956 | .argname = "s", | 956 | .argname = "s", |
957 | .desc = "Subject", | 957 | .desc = "Subject", |
958 | .type = OPTION_ARG, | 958 | .type = OPTION_ARG, |
959 | .opt.arg = &cms_config.subject, | 959 | .opt.arg = &cfg.subject, |
960 | }, | 960 | }, |
961 | { | 961 | { |
962 | .name = "text", | 962 | .name = "text", |
963 | .desc = "Include or delete text MIME headers", | 963 | .desc = "Include or delete text MIME headers", |
964 | .type = OPTION_VALUE_OR, | 964 | .type = OPTION_VALUE_OR, |
965 | .opt.value = &cms_config.flags, | 965 | .opt.value = &cfg.flags, |
966 | .value = CMS_TEXT, | 966 | .value = CMS_TEXT, |
967 | }, | 967 | }, |
968 | { | 968 | { |
@@ -970,20 +970,20 @@ static const struct option cms_options[] = { | |||
970 | .argname = "addr", | 970 | .argname = "addr", |
971 | .desc = "To address", | 971 | .desc = "To address", |
972 | .type = OPTION_ARG, | 972 | .type = OPTION_ARG, |
973 | .opt.arg = &cms_config.to, | 973 | .opt.arg = &cfg.to, |
974 | }, | 974 | }, |
975 | { | 975 | { |
976 | .name = "uncompress", | 976 | .name = "uncompress", |
977 | .desc = "Uncompress CMS CompressedData type", | 977 | .desc = "Uncompress CMS CompressedData type", |
978 | .type = OPTION_VALUE, | 978 | .type = OPTION_VALUE, |
979 | .opt.value = &cms_config.operation, | 979 | .opt.value = &cfg.operation, |
980 | .value = SMIME_UNCOMPRESS, | 980 | .value = SMIME_UNCOMPRESS, |
981 | }, | 981 | }, |
982 | { | 982 | { |
983 | .name = "verify", | 983 | .name = "verify", |
984 | .desc = "Verify signed message", | 984 | .desc = "Verify signed message", |
985 | .type = OPTION_VALUE, | 985 | .type = OPTION_VALUE, |
986 | .opt.value = &cms_config.operation, | 986 | .opt.value = &cfg.operation, |
987 | .value = SMIME_VERIFY, | 987 | .value = SMIME_VERIFY, |
988 | }, | 988 | }, |
989 | { | 989 | { |
@@ -997,7 +997,7 @@ static const struct option cms_options[] = { | |||
997 | .name = "verify_retcode", | 997 | .name = "verify_retcode", |
998 | .desc = "Set verification error code to exit code", | 998 | .desc = "Set verification error code to exit code", |
999 | .type = OPTION_FLAG, | 999 | .type = OPTION_FLAG, |
1000 | .opt.flag = &cms_config.verify_retcode, | 1000 | .opt.flag = &cfg.verify_retcode, |
1001 | }, | 1001 | }, |
1002 | { | 1002 | { |
1003 | .name = "check_ss_sig", | 1003 | .name = "check_ss_sig", |
@@ -1170,84 +1170,84 @@ cms_main(int argc, char **argv) | |||
1170 | exit(1); | 1170 | exit(1); |
1171 | } | 1171 | } |
1172 | 1172 | ||
1173 | memset(&cms_config, 0, sizeof(cms_config)); | 1173 | memset(&cfg, 0, sizeof(cfg)); |
1174 | cms_config.flags = CMS_DETACHED; | 1174 | cfg.flags = CMS_DETACHED; |
1175 | cms_config.rr_allorfirst = -1; | 1175 | cfg.rr_allorfirst = -1; |
1176 | cms_config.informat = FORMAT_SMIME; | 1176 | cfg.informat = FORMAT_SMIME; |
1177 | cms_config.outformat = FORMAT_SMIME; | 1177 | cfg.outformat = FORMAT_SMIME; |
1178 | cms_config.rctformat = FORMAT_SMIME; | 1178 | cfg.rctformat = FORMAT_SMIME; |
1179 | cms_config.keyform = FORMAT_PEM; | 1179 | cfg.keyform = FORMAT_PEM; |
1180 | if (options_parse(argc, argv, cms_options, NULL, &argsused) != 0) { | 1180 | if (options_parse(argc, argv, cms_options, NULL, &argsused) != 0) { |
1181 | goto argerr; | 1181 | goto argerr; |
1182 | } | 1182 | } |
1183 | args = argv + argsused; | 1183 | args = argv + argsused; |
1184 | ret = 1; | 1184 | ret = 1; |
1185 | 1185 | ||
1186 | if (((cms_config.rr_allorfirst != -1) || cms_config.rr_from != NULL) && | 1186 | if (((cfg.rr_allorfirst != -1) || cfg.rr_from != NULL) && |
1187 | cms_config.rr_to == NULL) { | 1187 | cfg.rr_to == NULL) { |
1188 | BIO_puts(bio_err, "No Signed Receipts Recipients\n"); | 1188 | BIO_puts(bio_err, "No Signed Receipts Recipients\n"); |
1189 | goto argerr; | 1189 | goto argerr; |
1190 | } | 1190 | } |
1191 | if (!(cms_config.operation & SMIME_SIGNERS) && | 1191 | if (!(cfg.operation & SMIME_SIGNERS) && |
1192 | (cms_config.rr_to != NULL || cms_config.rr_from != NULL)) { | 1192 | (cfg.rr_to != NULL || cfg.rr_from != NULL)) { |
1193 | BIO_puts(bio_err, "Signed receipts only allowed with -sign\n"); | 1193 | BIO_puts(bio_err, "Signed receipts only allowed with -sign\n"); |
1194 | goto argerr; | 1194 | goto argerr; |
1195 | } | 1195 | } |
1196 | if (!(cms_config.operation & SMIME_SIGNERS) && | 1196 | if (!(cfg.operation & SMIME_SIGNERS) && |
1197 | (cms_config.skkeys != NULL || cms_config.sksigners != NULL)) { | 1197 | (cfg.skkeys != NULL || cfg.sksigners != NULL)) { |
1198 | BIO_puts(bio_err, "Multiple signers or keys not allowed\n"); | 1198 | BIO_puts(bio_err, "Multiple signers or keys not allowed\n"); |
1199 | goto argerr; | 1199 | goto argerr; |
1200 | } | 1200 | } |
1201 | if (cms_config.operation & SMIME_SIGNERS) { | 1201 | if (cfg.operation & SMIME_SIGNERS) { |
1202 | if (cms_config.keyfile != NULL && | 1202 | if (cfg.keyfile != NULL && |
1203 | cms_config.signerfile == NULL) { | 1203 | cfg.signerfile == NULL) { |
1204 | BIO_puts(bio_err, "Illegal -inkey without -signer\n"); | 1204 | BIO_puts(bio_err, "Illegal -inkey without -signer\n"); |
1205 | goto argerr; | 1205 | goto argerr; |
1206 | } | 1206 | } |
1207 | /* Check to see if any final signer needs to be appended */ | 1207 | /* Check to see if any final signer needs to be appended */ |
1208 | if (cms_config.signerfile != NULL) { | 1208 | if (cfg.signerfile != NULL) { |
1209 | if (cms_config.sksigners == NULL && | 1209 | if (cfg.sksigners == NULL && |
1210 | (cms_config.sksigners = | 1210 | (cfg.sksigners = |
1211 | sk_OPENSSL_STRING_new_null()) == NULL) | 1211 | sk_OPENSSL_STRING_new_null()) == NULL) |
1212 | goto end; | 1212 | goto end; |
1213 | if (!sk_OPENSSL_STRING_push(cms_config.sksigners, | 1213 | if (!sk_OPENSSL_STRING_push(cfg.sksigners, |
1214 | cms_config.signerfile)) | 1214 | cfg.signerfile)) |
1215 | goto end; | 1215 | goto end; |
1216 | if (cms_config.skkeys == NULL && | 1216 | if (cfg.skkeys == NULL && |
1217 | (cms_config.skkeys = | 1217 | (cfg.skkeys = |
1218 | sk_OPENSSL_STRING_new_null()) == NULL) | 1218 | sk_OPENSSL_STRING_new_null()) == NULL) |
1219 | goto end; | 1219 | goto end; |
1220 | if (cms_config.keyfile == NULL) | 1220 | if (cfg.keyfile == NULL) |
1221 | cms_config.keyfile = cms_config.signerfile; | 1221 | cfg.keyfile = cfg.signerfile; |
1222 | if (!sk_OPENSSL_STRING_push(cms_config.skkeys, | 1222 | if (!sk_OPENSSL_STRING_push(cfg.skkeys, |
1223 | cms_config.keyfile)) | 1223 | cfg.keyfile)) |
1224 | goto end; | 1224 | goto end; |
1225 | } | 1225 | } |
1226 | if (cms_config.sksigners == NULL) { | 1226 | if (cfg.sksigners == NULL) { |
1227 | BIO_printf(bio_err, | 1227 | BIO_printf(bio_err, |
1228 | "No signer certificate specified\n"); | 1228 | "No signer certificate specified\n"); |
1229 | badarg = 1; | 1229 | badarg = 1; |
1230 | } | 1230 | } |
1231 | cms_config.signerfile = NULL; | 1231 | cfg.signerfile = NULL; |
1232 | cms_config.keyfile = NULL; | 1232 | cfg.keyfile = NULL; |
1233 | } else if (cms_config.operation == SMIME_DECRYPT) { | 1233 | } else if (cfg.operation == SMIME_DECRYPT) { |
1234 | if (cms_config.recipfile == NULL && | 1234 | if (cfg.recipfile == NULL && |
1235 | cms_config.keyfile == NULL && | 1235 | cfg.keyfile == NULL && |
1236 | cms_config.secret_key == NULL && | 1236 | cfg.secret_key == NULL && |
1237 | cms_config.pwri_pass == NULL) { | 1237 | cfg.pwri_pass == NULL) { |
1238 | BIO_printf(bio_err, | 1238 | BIO_printf(bio_err, |
1239 | "No recipient certificate or key specified\n"); | 1239 | "No recipient certificate or key specified\n"); |
1240 | badarg = 1; | 1240 | badarg = 1; |
1241 | } | 1241 | } |
1242 | } else if (cms_config.operation == SMIME_ENCRYPT) { | 1242 | } else if (cfg.operation == SMIME_ENCRYPT) { |
1243 | if (*args == NULL && cms_config.secret_key == NULL && | 1243 | if (*args == NULL && cfg.secret_key == NULL && |
1244 | cms_config.pwri_pass == NULL && | 1244 | cfg.pwri_pass == NULL && |
1245 | cms_config.encerts == NULL) { | 1245 | cfg.encerts == NULL) { |
1246 | BIO_printf(bio_err, | 1246 | BIO_printf(bio_err, |
1247 | "No recipient(s) certificate(s) specified\n"); | 1247 | "No recipient(s) certificate(s) specified\n"); |
1248 | badarg = 1; | 1248 | badarg = 1; |
1249 | } | 1249 | } |
1250 | } else if (!cms_config.operation) { | 1250 | } else if (!cfg.operation) { |
1251 | badarg = 1; | 1251 | badarg = 1; |
1252 | } | 1252 | } |
1253 | 1253 | ||
@@ -1257,103 +1257,103 @@ cms_main(int argc, char **argv) | |||
1257 | goto end; | 1257 | goto end; |
1258 | } | 1258 | } |
1259 | 1259 | ||
1260 | if (!app_passwd(bio_err, cms_config.passargin, NULL, &passin, NULL)) { | 1260 | if (!app_passwd(bio_err, cfg.passargin, NULL, &passin, NULL)) { |
1261 | BIO_printf(bio_err, "Error getting password\n"); | 1261 | BIO_printf(bio_err, "Error getting password\n"); |
1262 | goto end; | 1262 | goto end; |
1263 | } | 1263 | } |
1264 | ret = 2; | 1264 | ret = 2; |
1265 | 1265 | ||
1266 | if (!(cms_config.operation & SMIME_SIGNERS)) | 1266 | if (!(cfg.operation & SMIME_SIGNERS)) |
1267 | cms_config.flags &= ~CMS_DETACHED; | 1267 | cfg.flags &= ~CMS_DETACHED; |
1268 | 1268 | ||
1269 | if (cms_config.operation & SMIME_OP) { | 1269 | if (cfg.operation & SMIME_OP) { |
1270 | if (cms_config.outformat == FORMAT_ASN1) | 1270 | if (cfg.outformat == FORMAT_ASN1) |
1271 | outmode = "wb"; | 1271 | outmode = "wb"; |
1272 | } else { | 1272 | } else { |
1273 | if (cms_config.flags & CMS_BINARY) | 1273 | if (cfg.flags & CMS_BINARY) |
1274 | outmode = "wb"; | 1274 | outmode = "wb"; |
1275 | } | 1275 | } |
1276 | 1276 | ||
1277 | if (cms_config.operation & SMIME_IP) { | 1277 | if (cfg.operation & SMIME_IP) { |
1278 | if (cms_config.informat == FORMAT_ASN1) | 1278 | if (cfg.informat == FORMAT_ASN1) |
1279 | inmode = "rb"; | 1279 | inmode = "rb"; |
1280 | } else { | 1280 | } else { |
1281 | if (cms_config.flags & CMS_BINARY) | 1281 | if (cfg.flags & CMS_BINARY) |
1282 | inmode = "rb"; | 1282 | inmode = "rb"; |
1283 | } | 1283 | } |
1284 | 1284 | ||
1285 | if (cms_config.operation == SMIME_ENCRYPT) { | 1285 | if (cfg.operation == SMIME_ENCRYPT) { |
1286 | if (cms_config.cipher == NULL) { | 1286 | if (cfg.cipher == NULL) { |
1287 | #ifndef OPENSSL_NO_DES | 1287 | #ifndef OPENSSL_NO_DES |
1288 | cms_config.cipher = EVP_des_ede3_cbc(); | 1288 | cfg.cipher = EVP_des_ede3_cbc(); |
1289 | #else | 1289 | #else |
1290 | BIO_printf(bio_err, "No cipher selected\n"); | 1290 | BIO_printf(bio_err, "No cipher selected\n"); |
1291 | goto end; | 1291 | goto end; |
1292 | #endif | 1292 | #endif |
1293 | } | 1293 | } |
1294 | if (cms_config.secret_key != NULL && | 1294 | if (cfg.secret_key != NULL && |
1295 | cms_config.secret_keyid == NULL) { | 1295 | cfg.secret_keyid == NULL) { |
1296 | BIO_printf(bio_err, "No secret key id\n"); | 1296 | BIO_printf(bio_err, "No secret key id\n"); |
1297 | goto end; | 1297 | goto end; |
1298 | } | 1298 | } |
1299 | if (*args != NULL && cms_config.encerts == NULL) | 1299 | if (*args != NULL && cfg.encerts == NULL) |
1300 | if ((cms_config.encerts = sk_X509_new_null()) == NULL) | 1300 | if ((cfg.encerts = sk_X509_new_null()) == NULL) |
1301 | goto end; | 1301 | goto end; |
1302 | while (*args) { | 1302 | while (*args) { |
1303 | if ((cms_config.cert = load_cert(bio_err, *args, | 1303 | if ((cfg.cert = load_cert(bio_err, *args, |
1304 | FORMAT_PEM, NULL, | 1304 | FORMAT_PEM, NULL, |
1305 | "recipient certificate file")) == NULL) | 1305 | "recipient certificate file")) == NULL) |
1306 | goto end; | 1306 | goto end; |
1307 | if (!sk_X509_push(cms_config.encerts, cms_config.cert)) | 1307 | if (!sk_X509_push(cfg.encerts, cfg.cert)) |
1308 | goto end; | 1308 | goto end; |
1309 | cms_config.cert = NULL; | 1309 | cfg.cert = NULL; |
1310 | args++; | 1310 | args++; |
1311 | } | 1311 | } |
1312 | } | 1312 | } |
1313 | if (cms_config.certfile != NULL) { | 1313 | if (cfg.certfile != NULL) { |
1314 | if ((other = load_certs(bio_err, cms_config.certfile, | 1314 | if ((other = load_certs(bio_err, cfg.certfile, |
1315 | FORMAT_PEM, NULL, "certificate file")) == NULL) { | 1315 | FORMAT_PEM, NULL, "certificate file")) == NULL) { |
1316 | ERR_print_errors(bio_err); | 1316 | ERR_print_errors(bio_err); |
1317 | goto end; | 1317 | goto end; |
1318 | } | 1318 | } |
1319 | } | 1319 | } |
1320 | if (cms_config.recipfile != NULL && | 1320 | if (cfg.recipfile != NULL && |
1321 | (cms_config.operation == SMIME_DECRYPT)) { | 1321 | (cfg.operation == SMIME_DECRYPT)) { |
1322 | if ((recip = load_cert(bio_err, cms_config.recipfile, | 1322 | if ((recip = load_cert(bio_err, cfg.recipfile, |
1323 | FORMAT_PEM, NULL, "recipient certificate file")) == NULL) { | 1323 | FORMAT_PEM, NULL, "recipient certificate file")) == NULL) { |
1324 | ERR_print_errors(bio_err); | 1324 | ERR_print_errors(bio_err); |
1325 | goto end; | 1325 | goto end; |
1326 | } | 1326 | } |
1327 | } | 1327 | } |
1328 | if (cms_config.operation == SMIME_SIGN_RECEIPT) { | 1328 | if (cfg.operation == SMIME_SIGN_RECEIPT) { |
1329 | if ((signer = load_cert(bio_err, cms_config.signerfile, | 1329 | if ((signer = load_cert(bio_err, cfg.signerfile, |
1330 | FORMAT_PEM, NULL, | 1330 | FORMAT_PEM, NULL, |
1331 | "receipt signer certificate file")) == NULL) { | 1331 | "receipt signer certificate file")) == NULL) { |
1332 | ERR_print_errors(bio_err); | 1332 | ERR_print_errors(bio_err); |
1333 | goto end; | 1333 | goto end; |
1334 | } | 1334 | } |
1335 | } | 1335 | } |
1336 | if (cms_config.operation == SMIME_DECRYPT) { | 1336 | if (cfg.operation == SMIME_DECRYPT) { |
1337 | if (cms_config.keyfile == NULL) | 1337 | if (cfg.keyfile == NULL) |
1338 | cms_config.keyfile = cms_config.recipfile; | 1338 | cfg.keyfile = cfg.recipfile; |
1339 | } else if ((cms_config.operation == SMIME_SIGN) || | 1339 | } else if ((cfg.operation == SMIME_SIGN) || |
1340 | (cms_config.operation == SMIME_SIGN_RECEIPT)) { | 1340 | (cfg.operation == SMIME_SIGN_RECEIPT)) { |
1341 | if (cms_config.keyfile == NULL) | 1341 | if (cfg.keyfile == NULL) |
1342 | cms_config.keyfile = cms_config.signerfile; | 1342 | cfg.keyfile = cfg.signerfile; |
1343 | } else { | 1343 | } else { |
1344 | cms_config.keyfile = NULL; | 1344 | cfg.keyfile = NULL; |
1345 | } | 1345 | } |
1346 | 1346 | ||
1347 | if (cms_config.keyfile != NULL) { | 1347 | if (cfg.keyfile != NULL) { |
1348 | key = load_key(bio_err, cms_config.keyfile, cms_config.keyform, | 1348 | key = load_key(bio_err, cfg.keyfile, cfg.keyform, |
1349 | 0, passin, "signing key file"); | 1349 | 0, passin, "signing key file"); |
1350 | if (key == NULL) | 1350 | if (key == NULL) |
1351 | goto end; | 1351 | goto end; |
1352 | } | 1352 | } |
1353 | if (cms_config.infile != NULL) { | 1353 | if (cfg.infile != NULL) { |
1354 | if ((in = BIO_new_file(cms_config.infile, inmode)) == NULL) { | 1354 | if ((in = BIO_new_file(cfg.infile, inmode)) == NULL) { |
1355 | BIO_printf(bio_err, | 1355 | BIO_printf(bio_err, |
1356 | "Can't open input file %s\n", cms_config.infile); | 1356 | "Can't open input file %s\n", cfg.infile); |
1357 | goto end; | 1357 | goto end; |
1358 | } | 1358 | } |
1359 | } else { | 1359 | } else { |
@@ -1361,12 +1361,12 @@ cms_main(int argc, char **argv) | |||
1361 | goto end; | 1361 | goto end; |
1362 | } | 1362 | } |
1363 | 1363 | ||
1364 | if (cms_config.operation & SMIME_IP) { | 1364 | if (cfg.operation & SMIME_IP) { |
1365 | if (cms_config.informat == FORMAT_SMIME) | 1365 | if (cfg.informat == FORMAT_SMIME) |
1366 | cms = SMIME_read_CMS(in, &indata); | 1366 | cms = SMIME_read_CMS(in, &indata); |
1367 | else if (cms_config.informat == FORMAT_PEM) | 1367 | else if (cfg.informat == FORMAT_PEM) |
1368 | cms = PEM_read_bio_CMS(in, NULL, NULL, NULL); | 1368 | cms = PEM_read_bio_CMS(in, NULL, NULL, NULL); |
1369 | else if (cms_config.informat == FORMAT_ASN1) | 1369 | else if (cfg.informat == FORMAT_ASN1) |
1370 | cms = d2i_CMS_bio(in, NULL); | 1370 | cms = d2i_CMS_bio(in, NULL); |
1371 | else { | 1371 | else { |
1372 | BIO_printf(bio_err, "Bad input format for CMS file\n"); | 1372 | BIO_printf(bio_err, "Bad input format for CMS file\n"); |
@@ -1377,24 +1377,24 @@ cms_main(int argc, char **argv) | |||
1377 | BIO_printf(bio_err, "Error reading S/MIME message\n"); | 1377 | BIO_printf(bio_err, "Error reading S/MIME message\n"); |
1378 | goto end; | 1378 | goto end; |
1379 | } | 1379 | } |
1380 | if (cms_config.contfile != NULL) { | 1380 | if (cfg.contfile != NULL) { |
1381 | BIO_free(indata); | 1381 | BIO_free(indata); |
1382 | if ((indata = BIO_new_file(cms_config.contfile, | 1382 | if ((indata = BIO_new_file(cfg.contfile, |
1383 | "rb")) == NULL) { | 1383 | "rb")) == NULL) { |
1384 | BIO_printf(bio_err, | 1384 | BIO_printf(bio_err, |
1385 | "Can't read content file %s\n", | 1385 | "Can't read content file %s\n", |
1386 | cms_config.contfile); | 1386 | cfg.contfile); |
1387 | goto end; | 1387 | goto end; |
1388 | } | 1388 | } |
1389 | } | 1389 | } |
1390 | if (cms_config.certsoutfile != NULL) { | 1390 | if (cfg.certsoutfile != NULL) { |
1391 | STACK_OF(X509) *allcerts; | 1391 | STACK_OF(X509) *allcerts; |
1392 | if ((allcerts = CMS_get1_certs(cms)) == NULL) | 1392 | if ((allcerts = CMS_get1_certs(cms)) == NULL) |
1393 | goto end; | 1393 | goto end; |
1394 | if (!save_certs(cms_config.certsoutfile, allcerts)) { | 1394 | if (!save_certs(cfg.certsoutfile, allcerts)) { |
1395 | BIO_printf(bio_err, | 1395 | BIO_printf(bio_err, |
1396 | "Error writing certs to %s\n", | 1396 | "Error writing certs to %s\n", |
1397 | cms_config.certsoutfile); | 1397 | cfg.certsoutfile); |
1398 | sk_X509_pop_free(allcerts, X509_free); | 1398 | sk_X509_pop_free(allcerts, X509_free); |
1399 | ret = 5; | 1399 | ret = 5; |
1400 | goto end; | 1400 | goto end; |
@@ -1402,19 +1402,19 @@ cms_main(int argc, char **argv) | |||
1402 | sk_X509_pop_free(allcerts, X509_free); | 1402 | sk_X509_pop_free(allcerts, X509_free); |
1403 | } | 1403 | } |
1404 | } | 1404 | } |
1405 | if (cms_config.rctfile != NULL) { | 1405 | if (cfg.rctfile != NULL) { |
1406 | char *rctmode = (cms_config.rctformat == FORMAT_ASN1) ? | 1406 | char *rctmode = (cfg.rctformat == FORMAT_ASN1) ? |
1407 | "rb" : "r"; | 1407 | "rb" : "r"; |
1408 | if ((rctin = BIO_new_file(cms_config.rctfile, rctmode)) == NULL) { | 1408 | if ((rctin = BIO_new_file(cfg.rctfile, rctmode)) == NULL) { |
1409 | BIO_printf(bio_err, | 1409 | BIO_printf(bio_err, |
1410 | "Can't open receipt file %s\n", cms_config.rctfile); | 1410 | "Can't open receipt file %s\n", cfg.rctfile); |
1411 | goto end; | 1411 | goto end; |
1412 | } | 1412 | } |
1413 | if (cms_config.rctformat == FORMAT_SMIME) | 1413 | if (cfg.rctformat == FORMAT_SMIME) |
1414 | rcms = SMIME_read_CMS(rctin, NULL); | 1414 | rcms = SMIME_read_CMS(rctin, NULL); |
1415 | else if (cms_config.rctformat == FORMAT_PEM) | 1415 | else if (cfg.rctformat == FORMAT_PEM) |
1416 | rcms = PEM_read_bio_CMS(rctin, NULL, NULL, NULL); | 1416 | rcms = PEM_read_bio_CMS(rctin, NULL, NULL, NULL); |
1417 | else if (cms_config.rctformat == FORMAT_ASN1) | 1417 | else if (cfg.rctformat == FORMAT_ASN1) |
1418 | rcms = d2i_CMS_bio(rctin, NULL); | 1418 | rcms = d2i_CMS_bio(rctin, NULL); |
1419 | else { | 1419 | else { |
1420 | BIO_printf(bio_err, "Bad input format for receipt\n"); | 1420 | BIO_printf(bio_err, "Bad input format for receipt\n"); |
@@ -1426,10 +1426,10 @@ cms_main(int argc, char **argv) | |||
1426 | goto end; | 1426 | goto end; |
1427 | } | 1427 | } |
1428 | } | 1428 | } |
1429 | if (cms_config.outfile != NULL) { | 1429 | if (cfg.outfile != NULL) { |
1430 | if ((out = BIO_new_file(cms_config.outfile, outmode)) == NULL) { | 1430 | if ((out = BIO_new_file(cfg.outfile, outmode)) == NULL) { |
1431 | BIO_printf(bio_err, | 1431 | BIO_printf(bio_err, |
1432 | "Can't open output file %s\n", cms_config.outfile); | 1432 | "Can't open output file %s\n", cfg.outfile); |
1433 | goto end; | 1433 | goto end; |
1434 | } | 1434 | } |
1435 | } else { | 1435 | } else { |
@@ -1437,42 +1437,42 @@ cms_main(int argc, char **argv) | |||
1437 | goto end; | 1437 | goto end; |
1438 | } | 1438 | } |
1439 | 1439 | ||
1440 | if ((cms_config.operation == SMIME_VERIFY) || | 1440 | if ((cfg.operation == SMIME_VERIFY) || |
1441 | (cms_config.operation == SMIME_VERIFY_RECEIPT)) { | 1441 | (cfg.operation == SMIME_VERIFY_RECEIPT)) { |
1442 | if ((store = setup_verify(bio_err, cms_config.CAfile, | 1442 | if ((store = setup_verify(bio_err, cfg.CAfile, |
1443 | cms_config.CApath)) == NULL) | 1443 | cfg.CApath)) == NULL) |
1444 | goto end; | 1444 | goto end; |
1445 | X509_STORE_set_verify_cb(store, cms_cb); | 1445 | X509_STORE_set_verify_cb(store, cms_cb); |
1446 | if (cms_config.vpm != NULL) { | 1446 | if (cfg.vpm != NULL) { |
1447 | if (!X509_STORE_set1_param(store, cms_config.vpm)) | 1447 | if (!X509_STORE_set1_param(store, cfg.vpm)) |
1448 | goto end; | 1448 | goto end; |
1449 | } | 1449 | } |
1450 | } | 1450 | } |
1451 | ret = 3; | 1451 | ret = 3; |
1452 | 1452 | ||
1453 | if (cms_config.operation == SMIME_DATA_CREATE) { | 1453 | if (cfg.operation == SMIME_DATA_CREATE) { |
1454 | cms = CMS_data_create(in, cms_config.flags); | 1454 | cms = CMS_data_create(in, cfg.flags); |
1455 | } else if (cms_config.operation == SMIME_DIGEST_CREATE) { | 1455 | } else if (cfg.operation == SMIME_DIGEST_CREATE) { |
1456 | cms = CMS_digest_create(in, cms_config.sign_md, | 1456 | cms = CMS_digest_create(in, cfg.sign_md, |
1457 | cms_config.flags); | 1457 | cfg.flags); |
1458 | } else if (cms_config.operation == SMIME_COMPRESS) { | 1458 | } else if (cfg.operation == SMIME_COMPRESS) { |
1459 | cms = CMS_compress(in, -1, cms_config.flags); | 1459 | cms = CMS_compress(in, -1, cfg.flags); |
1460 | } else if (cms_config.operation == SMIME_ENCRYPT) { | 1460 | } else if (cfg.operation == SMIME_ENCRYPT) { |
1461 | int i; | 1461 | int i; |
1462 | cms_config.flags |= CMS_PARTIAL; | 1462 | cfg.flags |= CMS_PARTIAL; |
1463 | cms = CMS_encrypt(NULL, in, cms_config.cipher, | 1463 | cms = CMS_encrypt(NULL, in, cfg.cipher, |
1464 | cms_config.flags); | 1464 | cfg.flags); |
1465 | if (cms == NULL) | 1465 | if (cms == NULL) |
1466 | goto end; | 1466 | goto end; |
1467 | for (i = 0; i < sk_X509_num(cms_config.encerts); i++) { | 1467 | for (i = 0; i < sk_X509_num(cfg.encerts); i++) { |
1468 | CMS_RecipientInfo *ri; | 1468 | CMS_RecipientInfo *ri; |
1469 | struct cms_key_param *kparam; | 1469 | struct cms_key_param *kparam; |
1470 | int tflags = cms_config.flags; | 1470 | int tflags = cfg.flags; |
1471 | X509 *x; | 1471 | X509 *x; |
1472 | 1472 | ||
1473 | if ((x = sk_X509_value(cms_config.encerts, i)) == NULL) | 1473 | if ((x = sk_X509_value(cfg.encerts, i)) == NULL) |
1474 | goto end; | 1474 | goto end; |
1475 | for (kparam = cms_config.key_first; kparam != NULL; | 1475 | for (kparam = cfg.key_first; kparam != NULL; |
1476 | kparam = kparam->next) { | 1476 | kparam = kparam->next) { |
1477 | if (kparam->idx == i) { | 1477 | if (kparam->idx == i) { |
1478 | tflags |= CMS_KEY_PARAM; | 1478 | tflags |= CMS_KEY_PARAM; |
@@ -1492,18 +1492,18 @@ cms_main(int argc, char **argv) | |||
1492 | } | 1492 | } |
1493 | } | 1493 | } |
1494 | 1494 | ||
1495 | if (cms_config.secret_key != NULL) { | 1495 | if (cfg.secret_key != NULL) { |
1496 | if (CMS_add0_recipient_key(cms, NID_undef, | 1496 | if (CMS_add0_recipient_key(cms, NID_undef, |
1497 | cms_config.secret_key, cms_config.secret_keylen, | 1497 | cfg.secret_key, cfg.secret_keylen, |
1498 | cms_config.secret_keyid, cms_config.secret_keyidlen, | 1498 | cfg.secret_keyid, cfg.secret_keyidlen, |
1499 | NULL, NULL, NULL) == NULL) | 1499 | NULL, NULL, NULL) == NULL) |
1500 | goto end; | 1500 | goto end; |
1501 | /* NULL these because call absorbs them */ | 1501 | /* NULL these because call absorbs them */ |
1502 | cms_config.secret_key = NULL; | 1502 | cfg.secret_key = NULL; |
1503 | cms_config.secret_keyid = NULL; | 1503 | cfg.secret_keyid = NULL; |
1504 | } | 1504 | } |
1505 | if (cms_config.pwri_pass != NULL) { | 1505 | if (cfg.pwri_pass != NULL) { |
1506 | pwri_tmp = strdup(cms_config.pwri_pass); | 1506 | pwri_tmp = strdup(cfg.pwri_pass); |
1507 | if (pwri_tmp == NULL) | 1507 | if (pwri_tmp == NULL) |
1508 | goto end; | 1508 | goto end; |
1509 | if (CMS_add0_recipient_password(cms, -1, NID_undef, | 1509 | if (CMS_add0_recipient_password(cms, -1, NID_undef, |
@@ -1511,16 +1511,16 @@ cms_main(int argc, char **argv) | |||
1511 | goto end; | 1511 | goto end; |
1512 | pwri_tmp = NULL; | 1512 | pwri_tmp = NULL; |
1513 | } | 1513 | } |
1514 | if (!(cms_config.flags & CMS_STREAM)) { | 1514 | if (!(cfg.flags & CMS_STREAM)) { |
1515 | if (!CMS_final(cms, in, NULL, cms_config.flags)) | 1515 | if (!CMS_final(cms, in, NULL, cfg.flags)) |
1516 | goto end; | 1516 | goto end; |
1517 | } | 1517 | } |
1518 | } else if (cms_config.operation == SMIME_ENCRYPTED_ENCRYPT) { | 1518 | } else if (cfg.operation == SMIME_ENCRYPTED_ENCRYPT) { |
1519 | cms = CMS_EncryptedData_encrypt(in, cms_config.cipher, | 1519 | cms = CMS_EncryptedData_encrypt(in, cfg.cipher, |
1520 | cms_config.secret_key, cms_config.secret_keylen, | 1520 | cfg.secret_key, cfg.secret_keylen, |
1521 | cms_config.flags); | 1521 | cfg.flags); |
1522 | 1522 | ||
1523 | } else if (cms_config.operation == SMIME_SIGN_RECEIPT) { | 1523 | } else if (cfg.operation == SMIME_SIGN_RECEIPT) { |
1524 | CMS_ContentInfo *srcms = NULL; | 1524 | CMS_ContentInfo *srcms = NULL; |
1525 | STACK_OF(CMS_SignerInfo) *sis; | 1525 | STACK_OF(CMS_SignerInfo) *sis; |
1526 | CMS_SignerInfo *si; | 1526 | CMS_SignerInfo *si; |
@@ -1531,36 +1531,36 @@ cms_main(int argc, char **argv) | |||
1531 | if (si == NULL) | 1531 | if (si == NULL) |
1532 | goto end; | 1532 | goto end; |
1533 | srcms = CMS_sign_receipt(si, signer, key, other, | 1533 | srcms = CMS_sign_receipt(si, signer, key, other, |
1534 | cms_config.flags); | 1534 | cfg.flags); |
1535 | if (srcms == NULL) | 1535 | if (srcms == NULL) |
1536 | goto end; | 1536 | goto end; |
1537 | CMS_ContentInfo_free(cms); | 1537 | CMS_ContentInfo_free(cms); |
1538 | cms = srcms; | 1538 | cms = srcms; |
1539 | } else if (cms_config.operation & SMIME_SIGNERS) { | 1539 | } else if (cfg.operation & SMIME_SIGNERS) { |
1540 | int i; | 1540 | int i; |
1541 | /* | 1541 | /* |
1542 | * If detached data content we enable streaming if S/MIME | 1542 | * If detached data content we enable streaming if S/MIME |
1543 | * output format. | 1543 | * output format. |
1544 | */ | 1544 | */ |
1545 | if (cms_config.operation == SMIME_SIGN) { | 1545 | if (cfg.operation == SMIME_SIGN) { |
1546 | 1546 | ||
1547 | if (cms_config.flags & CMS_DETACHED) { | 1547 | if (cfg.flags & CMS_DETACHED) { |
1548 | if (cms_config.outformat == FORMAT_SMIME) | 1548 | if (cfg.outformat == FORMAT_SMIME) |
1549 | cms_config.flags |= CMS_STREAM; | 1549 | cfg.flags |= CMS_STREAM; |
1550 | } | 1550 | } |
1551 | cms_config.flags |= CMS_PARTIAL; | 1551 | cfg.flags |= CMS_PARTIAL; |
1552 | cms = CMS_sign(NULL, NULL, other, in, cms_config.flags); | 1552 | cms = CMS_sign(NULL, NULL, other, in, cfg.flags); |
1553 | if (cms == NULL) | 1553 | if (cms == NULL) |
1554 | goto end; | 1554 | goto end; |
1555 | if (cms_config.econtent_type != NULL) | 1555 | if (cfg.econtent_type != NULL) |
1556 | if (!CMS_set1_eContentType(cms, | 1556 | if (!CMS_set1_eContentType(cms, |
1557 | cms_config.econtent_type)) | 1557 | cfg.econtent_type)) |
1558 | goto end; | 1558 | goto end; |
1559 | 1559 | ||
1560 | if (cms_config.rr_to != NULL) { | 1560 | if (cfg.rr_to != NULL) { |
1561 | rr = make_receipt_request(cms_config.rr_to, | 1561 | rr = make_receipt_request(cfg.rr_to, |
1562 | cms_config.rr_allorfirst, | 1562 | cfg.rr_allorfirst, |
1563 | cms_config.rr_from); | 1563 | cfg.rr_from); |
1564 | if (rr == NULL) { | 1564 | if (rr == NULL) { |
1565 | BIO_puts(bio_err, | 1565 | BIO_puts(bio_err, |
1566 | "Signed Receipt Request Creation Error\n"); | 1566 | "Signed Receipt Request Creation Error\n"); |
@@ -1568,28 +1568,28 @@ cms_main(int argc, char **argv) | |||
1568 | } | 1568 | } |
1569 | } | 1569 | } |
1570 | } else { | 1570 | } else { |
1571 | cms_config.flags |= CMS_REUSE_DIGEST; | 1571 | cfg.flags |= CMS_REUSE_DIGEST; |
1572 | } | 1572 | } |
1573 | 1573 | ||
1574 | for (i = 0; i < sk_OPENSSL_STRING_num(cms_config.sksigners); i++) { | 1574 | for (i = 0; i < sk_OPENSSL_STRING_num(cfg.sksigners); i++) { |
1575 | CMS_SignerInfo *si; | 1575 | CMS_SignerInfo *si; |
1576 | struct cms_key_param *kparam; | 1576 | struct cms_key_param *kparam; |
1577 | int tflags = cms_config.flags; | 1577 | int tflags = cfg.flags; |
1578 | 1578 | ||
1579 | cms_config.signerfile = sk_OPENSSL_STRING_value( | 1579 | cfg.signerfile = sk_OPENSSL_STRING_value( |
1580 | cms_config.sksigners, i); | 1580 | cfg.sksigners, i); |
1581 | cms_config.keyfile = sk_OPENSSL_STRING_value( | 1581 | cfg.keyfile = sk_OPENSSL_STRING_value( |
1582 | cms_config.skkeys, i); | 1582 | cfg.skkeys, i); |
1583 | 1583 | ||
1584 | signer = load_cert(bio_err, cms_config.signerfile, | 1584 | signer = load_cert(bio_err, cfg.signerfile, |
1585 | FORMAT_PEM, NULL, "signer certificate"); | 1585 | FORMAT_PEM, NULL, "signer certificate"); |
1586 | if (signer == NULL) | 1586 | if (signer == NULL) |
1587 | goto end; | 1587 | goto end; |
1588 | key = load_key(bio_err, cms_config.keyfile, | 1588 | key = load_key(bio_err, cfg.keyfile, |
1589 | cms_config.keyform, 0, passin, "signing key file"); | 1589 | cfg.keyform, 0, passin, "signing key file"); |
1590 | if (key == NULL) | 1590 | if (key == NULL) |
1591 | goto end; | 1591 | goto end; |
1592 | for (kparam = cms_config.key_first; kparam != NULL; | 1592 | for (kparam = cfg.key_first; kparam != NULL; |
1593 | kparam = kparam->next) { | 1593 | kparam = kparam->next) { |
1594 | if (kparam->idx == i) { | 1594 | if (kparam->idx == i) { |
1595 | tflags |= CMS_KEY_PARAM; | 1595 | tflags |= CMS_KEY_PARAM; |
@@ -1597,7 +1597,7 @@ cms_main(int argc, char **argv) | |||
1597 | } | 1597 | } |
1598 | } | 1598 | } |
1599 | si = CMS_add1_signer(cms, signer, key, | 1599 | si = CMS_add1_signer(cms, signer, key, |
1600 | cms_config.sign_md, tflags); | 1600 | cfg.sign_md, tflags); |
1601 | if (si == NULL) | 1601 | if (si == NULL) |
1602 | goto end; | 1602 | goto end; |
1603 | if (kparam != NULL) { | 1603 | if (kparam != NULL) { |
@@ -1616,9 +1616,9 @@ cms_main(int argc, char **argv) | |||
1616 | key = NULL; | 1616 | key = NULL; |
1617 | } | 1617 | } |
1618 | /* If not streaming or resigning finalize structure */ | 1618 | /* If not streaming or resigning finalize structure */ |
1619 | if ((cms_config.operation == SMIME_SIGN) && | 1619 | if ((cfg.operation == SMIME_SIGN) && |
1620 | !(cms_config.flags & CMS_STREAM)) { | 1620 | !(cfg.flags & CMS_STREAM)) { |
1621 | if (!CMS_final(cms, in, NULL, cms_config.flags)) | 1621 | if (!CMS_final(cms, in, NULL, cfg.flags)) |
1622 | goto end; | 1622 | goto end; |
1623 | } | 1623 | } |
1624 | } | 1624 | } |
@@ -1627,15 +1627,15 @@ cms_main(int argc, char **argv) | |||
1627 | goto end; | 1627 | goto end; |
1628 | } | 1628 | } |
1629 | ret = 4; | 1629 | ret = 4; |
1630 | if (cms_config.operation == SMIME_DECRYPT) { | 1630 | if (cfg.operation == SMIME_DECRYPT) { |
1631 | if (cms_config.flags & CMS_DEBUG_DECRYPT) | 1631 | if (cfg.flags & CMS_DEBUG_DECRYPT) |
1632 | CMS_decrypt(cms, NULL, NULL, NULL, NULL, | 1632 | CMS_decrypt(cms, NULL, NULL, NULL, NULL, |
1633 | cms_config.flags); | 1633 | cfg.flags); |
1634 | 1634 | ||
1635 | if (cms_config.secret_key != NULL) { | 1635 | if (cfg.secret_key != NULL) { |
1636 | if (!CMS_decrypt_set1_key(cms, cms_config.secret_key, | 1636 | if (!CMS_decrypt_set1_key(cms, cfg.secret_key, |
1637 | cms_config.secret_keylen, cms_config.secret_keyid, | 1637 | cfg.secret_keylen, cfg.secret_keyid, |
1638 | cms_config.secret_keyidlen)) { | 1638 | cfg.secret_keyidlen)) { |
1639 | BIO_puts(bio_err, | 1639 | BIO_puts(bio_err, |
1640 | "Error decrypting CMS using secret key\n"); | 1640 | "Error decrypting CMS using secret key\n"); |
1641 | goto end; | 1641 | goto end; |
@@ -1648,95 +1648,95 @@ cms_main(int argc, char **argv) | |||
1648 | goto end; | 1648 | goto end; |
1649 | } | 1649 | } |
1650 | } | 1650 | } |
1651 | if (cms_config.pwri_pass != NULL) { | 1651 | if (cfg.pwri_pass != NULL) { |
1652 | if (!CMS_decrypt_set1_password(cms, | 1652 | if (!CMS_decrypt_set1_password(cms, |
1653 | cms_config.pwri_pass, -1)) { | 1653 | cfg.pwri_pass, -1)) { |
1654 | BIO_puts(bio_err, | 1654 | BIO_puts(bio_err, |
1655 | "Error decrypting CMS using password\n"); | 1655 | "Error decrypting CMS using password\n"); |
1656 | goto end; | 1656 | goto end; |
1657 | } | 1657 | } |
1658 | } | 1658 | } |
1659 | if (!CMS_decrypt(cms, NULL, NULL, indata, out, | 1659 | if (!CMS_decrypt(cms, NULL, NULL, indata, out, |
1660 | cms_config.flags)) { | 1660 | cfg.flags)) { |
1661 | BIO_printf(bio_err, "Error decrypting CMS structure\n"); | 1661 | BIO_printf(bio_err, "Error decrypting CMS structure\n"); |
1662 | goto end; | 1662 | goto end; |
1663 | } | 1663 | } |
1664 | } else if (cms_config.operation == SMIME_DATAOUT) { | 1664 | } else if (cfg.operation == SMIME_DATAOUT) { |
1665 | if (!CMS_data(cms, out, cms_config.flags)) | 1665 | if (!CMS_data(cms, out, cfg.flags)) |
1666 | goto end; | 1666 | goto end; |
1667 | } else if (cms_config.operation == SMIME_UNCOMPRESS) { | 1667 | } else if (cfg.operation == SMIME_UNCOMPRESS) { |
1668 | if (!CMS_uncompress(cms, indata, out, cms_config.flags)) | 1668 | if (!CMS_uncompress(cms, indata, out, cfg.flags)) |
1669 | goto end; | 1669 | goto end; |
1670 | } else if (cms_config.operation == SMIME_DIGEST_VERIFY) { | 1670 | } else if (cfg.operation == SMIME_DIGEST_VERIFY) { |
1671 | if (CMS_digest_verify(cms, indata, out, cms_config.flags) > 0) | 1671 | if (CMS_digest_verify(cms, indata, out, cfg.flags) > 0) |
1672 | BIO_printf(bio_err, "Verification successful\n"); | 1672 | BIO_printf(bio_err, "Verification successful\n"); |
1673 | else { | 1673 | else { |
1674 | BIO_printf(bio_err, "Verification failure\n"); | 1674 | BIO_printf(bio_err, "Verification failure\n"); |
1675 | goto end; | 1675 | goto end; |
1676 | } | 1676 | } |
1677 | } else if (cms_config.operation == SMIME_ENCRYPTED_DECRYPT) { | 1677 | } else if (cfg.operation == SMIME_ENCRYPTED_DECRYPT) { |
1678 | if (!CMS_EncryptedData_decrypt(cms, cms_config.secret_key, | 1678 | if (!CMS_EncryptedData_decrypt(cms, cfg.secret_key, |
1679 | cms_config.secret_keylen, indata, out, cms_config.flags)) | 1679 | cfg.secret_keylen, indata, out, cfg.flags)) |
1680 | goto end; | 1680 | goto end; |
1681 | } else if (cms_config.operation == SMIME_VERIFY) { | 1681 | } else if (cfg.operation == SMIME_VERIFY) { |
1682 | if (CMS_verify(cms, other, store, indata, out, | 1682 | if (CMS_verify(cms, other, store, indata, out, |
1683 | cms_config.flags) > 0) { | 1683 | cfg.flags) > 0) { |
1684 | BIO_printf(bio_err, "Verification successful\n"); | 1684 | BIO_printf(bio_err, "Verification successful\n"); |
1685 | } else { | 1685 | } else { |
1686 | BIO_printf(bio_err, "Verification failure\n"); | 1686 | BIO_printf(bio_err, "Verification failure\n"); |
1687 | if (cms_config.verify_retcode) | 1687 | if (cfg.verify_retcode) |
1688 | ret = verify_err + 32; | 1688 | ret = verify_err + 32; |
1689 | goto end; | 1689 | goto end; |
1690 | } | 1690 | } |
1691 | if (cms_config.signerfile != NULL) { | 1691 | if (cfg.signerfile != NULL) { |
1692 | STACK_OF(X509) *signers; | 1692 | STACK_OF(X509) *signers; |
1693 | if ((signers = CMS_get0_signers(cms)) == NULL) | 1693 | if ((signers = CMS_get0_signers(cms)) == NULL) |
1694 | goto end; | 1694 | goto end; |
1695 | if (!save_certs(cms_config.signerfile, signers)) { | 1695 | if (!save_certs(cfg.signerfile, signers)) { |
1696 | BIO_printf(bio_err, | 1696 | BIO_printf(bio_err, |
1697 | "Error writing signers to %s\n", | 1697 | "Error writing signers to %s\n", |
1698 | cms_config.signerfile); | 1698 | cfg.signerfile); |
1699 | sk_X509_free(signers); | 1699 | sk_X509_free(signers); |
1700 | ret = 5; | 1700 | ret = 5; |
1701 | goto end; | 1701 | goto end; |
1702 | } | 1702 | } |
1703 | sk_X509_free(signers); | 1703 | sk_X509_free(signers); |
1704 | } | 1704 | } |
1705 | if (cms_config.rr_print) | 1705 | if (cfg.rr_print) |
1706 | receipt_request_print(bio_err, cms); | 1706 | receipt_request_print(bio_err, cms); |
1707 | 1707 | ||
1708 | } else if (cms_config.operation == SMIME_VERIFY_RECEIPT) { | 1708 | } else if (cfg.operation == SMIME_VERIFY_RECEIPT) { |
1709 | if (CMS_verify_receipt(rcms, cms, other, store, | 1709 | if (CMS_verify_receipt(rcms, cms, other, store, |
1710 | cms_config.flags) > 0) { | 1710 | cfg.flags) > 0) { |
1711 | BIO_printf(bio_err, "Verification successful\n"); | 1711 | BIO_printf(bio_err, "Verification successful\n"); |
1712 | } else { | 1712 | } else { |
1713 | BIO_printf(bio_err, "Verification failure\n"); | 1713 | BIO_printf(bio_err, "Verification failure\n"); |
1714 | goto end; | 1714 | goto end; |
1715 | } | 1715 | } |
1716 | } else { | 1716 | } else { |
1717 | if (cms_config.noout) { | 1717 | if (cfg.noout) { |
1718 | if (cms_config.print && | 1718 | if (cfg.print && |
1719 | !CMS_ContentInfo_print_ctx(out, cms, 0, NULL)) | 1719 | !CMS_ContentInfo_print_ctx(out, cms, 0, NULL)) |
1720 | goto end; | 1720 | goto end; |
1721 | } else if (cms_config.outformat == FORMAT_SMIME) { | 1721 | } else if (cfg.outformat == FORMAT_SMIME) { |
1722 | if (cms_config.to != NULL) | 1722 | if (cfg.to != NULL) |
1723 | BIO_printf(out, "To: %s\n", cms_config.to); | 1723 | BIO_printf(out, "To: %s\n", cfg.to); |
1724 | if (cms_config.from != NULL) | 1724 | if (cfg.from != NULL) |
1725 | BIO_printf(out, "From: %s\n", cms_config.from); | 1725 | BIO_printf(out, "From: %s\n", cfg.from); |
1726 | if (cms_config.subject != NULL) | 1726 | if (cfg.subject != NULL) |
1727 | BIO_printf(out, "Subject: %s\n", | 1727 | BIO_printf(out, "Subject: %s\n", |
1728 | cms_config.subject); | 1728 | cfg.subject); |
1729 | if (cms_config.operation == SMIME_RESIGN) | 1729 | if (cfg.operation == SMIME_RESIGN) |
1730 | ret = SMIME_write_CMS(out, cms, indata, | 1730 | ret = SMIME_write_CMS(out, cms, indata, |
1731 | cms_config.flags); | 1731 | cfg.flags); |
1732 | else | 1732 | else |
1733 | ret = SMIME_write_CMS(out, cms, in, | 1733 | ret = SMIME_write_CMS(out, cms, in, |
1734 | cms_config.flags); | 1734 | cfg.flags); |
1735 | } else if (cms_config.outformat == FORMAT_PEM) { | 1735 | } else if (cfg.outformat == FORMAT_PEM) { |
1736 | ret = PEM_write_bio_CMS_stream(out, cms, in, | 1736 | ret = PEM_write_bio_CMS_stream(out, cms, in, |
1737 | cms_config.flags); | 1737 | cfg.flags); |
1738 | } else if (cms_config.outformat == FORMAT_ASN1) { | 1738 | } else if (cfg.outformat == FORMAT_ASN1) { |
1739 | ret = i2d_CMS_bio_stream(out, cms, in, cms_config.flags); | 1739 | ret = i2d_CMS_bio_stream(out, cms, in, cfg.flags); |
1740 | } else { | 1740 | } else { |
1741 | BIO_printf(bio_err, "Bad output format for CMS file\n"); | 1741 | BIO_printf(bio_err, "Bad output format for CMS file\n"); |
1742 | goto end; | 1742 | goto end; |
@@ -1752,27 +1752,27 @@ cms_main(int argc, char **argv) | |||
1752 | if (ret) | 1752 | if (ret) |
1753 | ERR_print_errors(bio_err); | 1753 | ERR_print_errors(bio_err); |
1754 | 1754 | ||
1755 | sk_X509_pop_free(cms_config.encerts, X509_free); | 1755 | sk_X509_pop_free(cfg.encerts, X509_free); |
1756 | sk_X509_pop_free(other, X509_free); | 1756 | sk_X509_pop_free(other, X509_free); |
1757 | X509_VERIFY_PARAM_free(cms_config.vpm); | 1757 | X509_VERIFY_PARAM_free(cfg.vpm); |
1758 | sk_OPENSSL_STRING_free(cms_config.sksigners); | 1758 | sk_OPENSSL_STRING_free(cfg.sksigners); |
1759 | sk_OPENSSL_STRING_free(cms_config.skkeys); | 1759 | sk_OPENSSL_STRING_free(cfg.skkeys); |
1760 | free(cms_config.secret_key); | 1760 | free(cfg.secret_key); |
1761 | free(cms_config.secret_keyid); | 1761 | free(cfg.secret_keyid); |
1762 | free(pwri_tmp); | 1762 | free(pwri_tmp); |
1763 | ASN1_OBJECT_free(cms_config.econtent_type); | 1763 | ASN1_OBJECT_free(cfg.econtent_type); |
1764 | CMS_ReceiptRequest_free(rr); | 1764 | CMS_ReceiptRequest_free(rr); |
1765 | sk_OPENSSL_STRING_free(cms_config.rr_to); | 1765 | sk_OPENSSL_STRING_free(cfg.rr_to); |
1766 | sk_OPENSSL_STRING_free(cms_config.rr_from); | 1766 | sk_OPENSSL_STRING_free(cfg.rr_from); |
1767 | for (cms_config.key_param = cms_config.key_first; cms_config.key_param;) { | 1767 | for (cfg.key_param = cfg.key_first; cfg.key_param;) { |
1768 | struct cms_key_param *tparam; | 1768 | struct cms_key_param *tparam; |
1769 | sk_OPENSSL_STRING_free(cms_config.key_param->param); | 1769 | sk_OPENSSL_STRING_free(cfg.key_param->param); |
1770 | tparam = cms_config.key_param->next; | 1770 | tparam = cfg.key_param->next; |
1771 | free(cms_config.key_param); | 1771 | free(cfg.key_param); |
1772 | cms_config.key_param = tparam; | 1772 | cfg.key_param = tparam; |
1773 | } | 1773 | } |
1774 | X509_STORE_free(store); | 1774 | X509_STORE_free(store); |
1775 | X509_free(cms_config.cert); | 1775 | X509_free(cfg.cert); |
1776 | X509_free(recip); | 1776 | X509_free(recip); |
1777 | X509_free(signer); | 1777 | X509_free(signer); |
1778 | EVP_PKEY_free(key); | 1778 | EVP_PKEY_free(key); |
diff --git a/src/usr.bin/openssl/crl.c b/src/usr.bin/openssl/crl.c index 6b7bc5b72e..e64038dfda 100644 --- a/src/usr.bin/openssl/crl.c +++ b/src/usr.bin/openssl/crl.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: crl.c,v 1.16 2022/11/11 17:07:38 joshua Exp $ */ | 1 | /* $OpenBSD: crl.c,v 1.17 2023/03/06 14:32:05 tb 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 | * |
@@ -86,7 +86,7 @@ static struct { | |||
86 | int outformat; | 86 | int outformat; |
87 | int text; | 87 | int text; |
88 | int verify; | 88 | int verify; |
89 | } crl_config; | 89 | } cfg; |
90 | 90 | ||
91 | static const struct option crl_options[] = { | 91 | static const struct option crl_options[] = { |
92 | { | 92 | { |
@@ -94,109 +94,109 @@ static const struct option crl_options[] = { | |||
94 | .argname = "file", | 94 | .argname = "file", |
95 | .desc = "Verify the CRL using certificates in the given file", | 95 | .desc = "Verify the CRL using certificates in the given file", |
96 | .type = OPTION_ARG, | 96 | .type = OPTION_ARG, |
97 | .opt.arg = &crl_config.cafile, | 97 | .opt.arg = &cfg.cafile, |
98 | }, | 98 | }, |
99 | { | 99 | { |
100 | .name = "CApath", | 100 | .name = "CApath", |
101 | .argname = "path", | 101 | .argname = "path", |
102 | .desc = "Verify the CRL using certificates in the given path", | 102 | .desc = "Verify the CRL using certificates in the given path", |
103 | .type = OPTION_ARG, | 103 | .type = OPTION_ARG, |
104 | .opt.arg = &crl_config.capath, | 104 | .opt.arg = &cfg.capath, |
105 | }, | 105 | }, |
106 | { | 106 | { |
107 | .name = "crlnumber", | 107 | .name = "crlnumber", |
108 | .desc = "Print the CRL number", | 108 | .desc = "Print the CRL number", |
109 | .type = OPTION_FLAG_ORD, | 109 | .type = OPTION_FLAG_ORD, |
110 | .opt.flag = &crl_config.crlnumber, | 110 | .opt.flag = &cfg.crlnumber, |
111 | }, | 111 | }, |
112 | { | 112 | { |
113 | .name = "fingerprint", | 113 | .name = "fingerprint", |
114 | .desc = "Print the CRL fingerprint", | 114 | .desc = "Print the CRL fingerprint", |
115 | .type = OPTION_FLAG_ORD, | 115 | .type = OPTION_FLAG_ORD, |
116 | .opt.flag = &crl_config.fingerprint, | 116 | .opt.flag = &cfg.fingerprint, |
117 | }, | 117 | }, |
118 | { | 118 | { |
119 | .name = "hash", | 119 | .name = "hash", |
120 | .desc = "Print the hash of the issuer name", | 120 | .desc = "Print the hash of the issuer name", |
121 | .type = OPTION_FLAG_ORD, | 121 | .type = OPTION_FLAG_ORD, |
122 | .opt.flag = &crl_config.hash, | 122 | .opt.flag = &cfg.hash, |
123 | }, | 123 | }, |
124 | { | 124 | { |
125 | .name = "hash_old", | 125 | .name = "hash_old", |
126 | .desc = "Print an old-style (MD5) hash of the issuer name", | 126 | .desc = "Print an old-style (MD5) hash of the issuer name", |
127 | .type = OPTION_FLAG_ORD, | 127 | .type = OPTION_FLAG_ORD, |
128 | .opt.flag = &crl_config.hash_old, | 128 | .opt.flag = &cfg.hash_old, |
129 | }, | 129 | }, |
130 | { | 130 | { |
131 | .name = "in", | 131 | .name = "in", |
132 | .argname = "file", | 132 | .argname = "file", |
133 | .desc = "Input file to read from (stdin if unspecified)", | 133 | .desc = "Input file to read from (stdin if unspecified)", |
134 | .type = OPTION_ARG, | 134 | .type = OPTION_ARG, |
135 | .opt.arg = &crl_config.infile, | 135 | .opt.arg = &cfg.infile, |
136 | }, | 136 | }, |
137 | { | 137 | { |
138 | .name = "inform", | 138 | .name = "inform", |
139 | .argname = "format", | 139 | .argname = "format", |
140 | .desc = "Input format (DER or PEM)", | 140 | .desc = "Input format (DER or PEM)", |
141 | .type = OPTION_ARG_FORMAT, | 141 | .type = OPTION_ARG_FORMAT, |
142 | .opt.value = &crl_config.informat, | 142 | .opt.value = &cfg.informat, |
143 | }, | 143 | }, |
144 | { | 144 | { |
145 | .name = "issuer", | 145 | .name = "issuer", |
146 | .desc = "Print the issuer name", | 146 | .desc = "Print the issuer name", |
147 | .type = OPTION_FLAG_ORD, | 147 | .type = OPTION_FLAG_ORD, |
148 | .opt.flag = &crl_config.issuer, | 148 | .opt.flag = &cfg.issuer, |
149 | }, | 149 | }, |
150 | { | 150 | { |
151 | .name = "lastupdate", | 151 | .name = "lastupdate", |
152 | .desc = "Print the lastUpdate field", | 152 | .desc = "Print the lastUpdate field", |
153 | .type = OPTION_FLAG_ORD, | 153 | .type = OPTION_FLAG_ORD, |
154 | .opt.flag = &crl_config.lastupdate, | 154 | .opt.flag = &cfg.lastupdate, |
155 | }, | 155 | }, |
156 | { | 156 | { |
157 | .name = "nameopt", | 157 | .name = "nameopt", |
158 | .argname = "options", | 158 | .argname = "options", |
159 | .desc = "Specify certificate name options", | 159 | .desc = "Specify certificate name options", |
160 | .type = OPTION_ARG, | 160 | .type = OPTION_ARG, |
161 | .opt.arg = &crl_config.nameopt, | 161 | .opt.arg = &cfg.nameopt, |
162 | }, | 162 | }, |
163 | { | 163 | { |
164 | .name = "nextupdate", | 164 | .name = "nextupdate", |
165 | .desc = "Print the nextUpdate field", | 165 | .desc = "Print the nextUpdate field", |
166 | .type = OPTION_FLAG_ORD, | 166 | .type = OPTION_FLAG_ORD, |
167 | .opt.flag = &crl_config.nextupdate, | 167 | .opt.flag = &cfg.nextupdate, |
168 | }, | 168 | }, |
169 | { | 169 | { |
170 | .name = "noout", | 170 | .name = "noout", |
171 | .desc = "Do not output the encoded version of the CRL", | 171 | .desc = "Do not output the encoded version of the CRL", |
172 | .type = OPTION_FLAG, | 172 | .type = OPTION_FLAG, |
173 | .opt.flag = &crl_config.noout, | 173 | .opt.flag = &cfg.noout, |
174 | }, | 174 | }, |
175 | { | 175 | { |
176 | .name = "out", | 176 | .name = "out", |
177 | .argname = "file", | 177 | .argname = "file", |
178 | .desc = "Output file to write to (stdout if unspecified)", | 178 | .desc = "Output file to write to (stdout if unspecified)", |
179 | .type = OPTION_ARG, | 179 | .type = OPTION_ARG, |
180 | .opt.arg = &crl_config.outfile, | 180 | .opt.arg = &cfg.outfile, |
181 | }, | 181 | }, |
182 | { | 182 | { |
183 | .name = "outform", | 183 | .name = "outform", |
184 | .argname = "format", | 184 | .argname = "format", |
185 | .desc = "Output format (DER or PEM)", | 185 | .desc = "Output format (DER or PEM)", |
186 | .type = OPTION_ARG_FORMAT, | 186 | .type = OPTION_ARG_FORMAT, |
187 | .opt.value = &crl_config.outformat, | 187 | .opt.value = &cfg.outformat, |
188 | }, | 188 | }, |
189 | { | 189 | { |
190 | .name = "text", | 190 | .name = "text", |
191 | .desc = "Print out the CRL in text form", | 191 | .desc = "Print out the CRL in text form", |
192 | .type = OPTION_FLAG, | 192 | .type = OPTION_FLAG, |
193 | .opt.flag = &crl_config.text, | 193 | .opt.flag = &cfg.text, |
194 | }, | 194 | }, |
195 | { | 195 | { |
196 | .name = "verify", | 196 | .name = "verify", |
197 | .desc = "Verify the signature on the CRL", | 197 | .desc = "Verify the signature on the CRL", |
198 | .type = OPTION_FLAG, | 198 | .type = OPTION_FLAG, |
199 | .opt.flag = &crl_config.verify, | 199 | .opt.flag = &cfg.verify, |
200 | }, | 200 | }, |
201 | {NULL}, | 201 | {NULL}, |
202 | }; | 202 | }; |
@@ -243,23 +243,23 @@ crl_main(int argc, char **argv) | |||
243 | 243 | ||
244 | digest = EVP_sha256(); | 244 | digest = EVP_sha256(); |
245 | 245 | ||
246 | memset(&crl_config, 0, sizeof(crl_config)); | 246 | memset(&cfg, 0, sizeof(cfg)); |
247 | crl_config.informat = FORMAT_PEM; | 247 | cfg.informat = FORMAT_PEM; |
248 | crl_config.outformat = FORMAT_PEM; | 248 | cfg.outformat = FORMAT_PEM; |
249 | 249 | ||
250 | if (options_parse(argc, argv, crl_options, &digest_name, NULL) != 0) { | 250 | if (options_parse(argc, argv, crl_options, &digest_name, NULL) != 0) { |
251 | crl_usage(); | 251 | crl_usage(); |
252 | goto end; | 252 | goto end; |
253 | } | 253 | } |
254 | 254 | ||
255 | if (crl_config.cafile != NULL || crl_config.capath != NULL) | 255 | if (cfg.cafile != NULL || cfg.capath != NULL) |
256 | crl_config.verify = 1; | 256 | cfg.verify = 1; |
257 | 257 | ||
258 | if (crl_config.nameopt != NULL) { | 258 | if (cfg.nameopt != NULL) { |
259 | if (set_name_ex(&nmflag, crl_config.nameopt) != 1) { | 259 | if (set_name_ex(&nmflag, cfg.nameopt) != 1) { |
260 | fprintf(stderr, | 260 | fprintf(stderr, |
261 | "Invalid -nameopt argument '%s'\n", | 261 | "Invalid -nameopt argument '%s'\n", |
262 | crl_config.nameopt); | 262 | cfg.nameopt); |
263 | goto end; | 263 | goto end; |
264 | } | 264 | } |
265 | } | 265 | } |
@@ -273,18 +273,18 @@ crl_main(int argc, char **argv) | |||
273 | } | 273 | } |
274 | } | 274 | } |
275 | 275 | ||
276 | x = load_crl(crl_config.infile, crl_config.informat); | 276 | x = load_crl(cfg.infile, cfg.informat); |
277 | if (x == NULL) | 277 | if (x == NULL) |
278 | goto end; | 278 | goto end; |
279 | 279 | ||
280 | if (crl_config.verify) { | 280 | if (cfg.verify) { |
281 | store = X509_STORE_new(); | 281 | store = X509_STORE_new(); |
282 | if (store == NULL) | 282 | if (store == NULL) |
283 | goto end; | 283 | goto end; |
284 | lookup = X509_STORE_add_lookup(store, X509_LOOKUP_file()); | 284 | lookup = X509_STORE_add_lookup(store, X509_LOOKUP_file()); |
285 | if (lookup == NULL) | 285 | if (lookup == NULL) |
286 | goto end; | 286 | goto end; |
287 | if (!X509_LOOKUP_load_file(lookup, crl_config.cafile, | 287 | if (!X509_LOOKUP_load_file(lookup, cfg.cafile, |
288 | X509_FILETYPE_PEM)) | 288 | X509_FILETYPE_PEM)) |
289 | X509_LOOKUP_load_file(lookup, NULL, | 289 | X509_LOOKUP_load_file(lookup, NULL, |
290 | X509_FILETYPE_DEFAULT); | 290 | X509_FILETYPE_DEFAULT); |
@@ -292,7 +292,7 @@ crl_main(int argc, char **argv) | |||
292 | lookup = X509_STORE_add_lookup(store, X509_LOOKUP_hash_dir()); | 292 | lookup = X509_STORE_add_lookup(store, X509_LOOKUP_hash_dir()); |
293 | if (lookup == NULL) | 293 | if (lookup == NULL) |
294 | goto end; | 294 | goto end; |
295 | if (!X509_LOOKUP_add_dir(lookup, crl_config.capath, | 295 | if (!X509_LOOKUP_add_dir(lookup, cfg.capath, |
296 | X509_FILETYPE_PEM)) | 296 | X509_FILETYPE_PEM)) |
297 | X509_LOOKUP_add_dir(lookup, NULL, | 297 | X509_LOOKUP_add_dir(lookup, NULL, |
298 | X509_FILETYPE_DEFAULT); | 298 | X509_FILETYPE_DEFAULT); |
@@ -335,11 +335,11 @@ crl_main(int argc, char **argv) | |||
335 | 335 | ||
336 | /* Print requested information the order that the flags were given. */ | 336 | /* Print requested information the order that the flags were given. */ |
337 | for (i = 1; i <= argc; i++) { | 337 | for (i = 1; i <= argc; i++) { |
338 | if (crl_config.issuer == i) { | 338 | if (cfg.issuer == i) { |
339 | print_name(bio_out, "issuer=", | 339 | print_name(bio_out, "issuer=", |
340 | X509_CRL_get_issuer(x), nmflag); | 340 | X509_CRL_get_issuer(x), nmflag); |
341 | } | 341 | } |
342 | if (crl_config.crlnumber == i) { | 342 | if (cfg.crlnumber == i) { |
343 | ASN1_INTEGER *crlnum; | 343 | ASN1_INTEGER *crlnum; |
344 | crlnum = X509_CRL_get_ext_d2i(x, | 344 | crlnum = X509_CRL_get_ext_d2i(x, |
345 | NID_crl_number, NULL, NULL); | 345 | NID_crl_number, NULL, NULL); |
@@ -351,23 +351,23 @@ crl_main(int argc, char **argv) | |||
351 | BIO_puts(bio_out, "<NONE>"); | 351 | BIO_puts(bio_out, "<NONE>"); |
352 | BIO_printf(bio_out, "\n"); | 352 | BIO_printf(bio_out, "\n"); |
353 | } | 353 | } |
354 | if (crl_config.hash == i) { | 354 | if (cfg.hash == i) { |
355 | BIO_printf(bio_out, "%08lx\n", | 355 | BIO_printf(bio_out, "%08lx\n", |
356 | X509_NAME_hash(X509_CRL_get_issuer(x))); | 356 | X509_NAME_hash(X509_CRL_get_issuer(x))); |
357 | } | 357 | } |
358 | #ifndef OPENSSL_NO_MD5 | 358 | #ifndef OPENSSL_NO_MD5 |
359 | if (crl_config.hash_old == i) { | 359 | if (cfg.hash_old == i) { |
360 | BIO_printf(bio_out, "%08lx\n", | 360 | BIO_printf(bio_out, "%08lx\n", |
361 | X509_NAME_hash_old(X509_CRL_get_issuer(x))); | 361 | X509_NAME_hash_old(X509_CRL_get_issuer(x))); |
362 | } | 362 | } |
363 | #endif | 363 | #endif |
364 | if (crl_config.lastupdate == i) { | 364 | if (cfg.lastupdate == i) { |
365 | BIO_printf(bio_out, "lastUpdate="); | 365 | BIO_printf(bio_out, "lastUpdate="); |
366 | ASN1_TIME_print(bio_out, | 366 | ASN1_TIME_print(bio_out, |
367 | X509_CRL_get_lastUpdate(x)); | 367 | X509_CRL_get_lastUpdate(x)); |
368 | BIO_printf(bio_out, "\n"); | 368 | BIO_printf(bio_out, "\n"); |
369 | } | 369 | } |
370 | if (crl_config.nextupdate == i) { | 370 | if (cfg.nextupdate == i) { |
371 | BIO_printf(bio_out, "nextUpdate="); | 371 | BIO_printf(bio_out, "nextUpdate="); |
372 | if (X509_CRL_get_nextUpdate(x)) | 372 | if (X509_CRL_get_nextUpdate(x)) |
373 | ASN1_TIME_print(bio_out, | 373 | ASN1_TIME_print(bio_out, |
@@ -376,7 +376,7 @@ crl_main(int argc, char **argv) | |||
376 | BIO_printf(bio_out, "NONE"); | 376 | BIO_printf(bio_out, "NONE"); |
377 | BIO_printf(bio_out, "\n"); | 377 | BIO_printf(bio_out, "\n"); |
378 | } | 378 | } |
379 | if (crl_config.fingerprint == i) { | 379 | if (cfg.fingerprint == i) { |
380 | int j; | 380 | int j; |
381 | unsigned int n; | 381 | unsigned int n; |
382 | unsigned char md[EVP_MAX_MD_SIZE]; | 382 | unsigned char md[EVP_MAX_MD_SIZE]; |
@@ -399,25 +399,25 @@ crl_main(int argc, char **argv) | |||
399 | ERR_print_errors(bio_err); | 399 | ERR_print_errors(bio_err); |
400 | goto end; | 400 | goto end; |
401 | } | 401 | } |
402 | if (crl_config.outfile == NULL) { | 402 | if (cfg.outfile == NULL) { |
403 | BIO_set_fp(out, stdout, BIO_NOCLOSE); | 403 | BIO_set_fp(out, stdout, BIO_NOCLOSE); |
404 | } else { | 404 | } else { |
405 | if (BIO_write_filename(out, crl_config.outfile) <= 0) { | 405 | if (BIO_write_filename(out, cfg.outfile) <= 0) { |
406 | perror(crl_config.outfile); | 406 | perror(cfg.outfile); |
407 | goto end; | 407 | goto end; |
408 | } | 408 | } |
409 | } | 409 | } |
410 | 410 | ||
411 | if (crl_config.text) | 411 | if (cfg.text) |
412 | X509_CRL_print(out, x); | 412 | X509_CRL_print(out, x); |
413 | 413 | ||
414 | if (crl_config.noout) { | 414 | if (cfg.noout) { |
415 | ret = 0; | 415 | ret = 0; |
416 | goto end; | 416 | goto end; |
417 | } | 417 | } |
418 | if (crl_config.outformat == FORMAT_ASN1) | 418 | if (cfg.outformat == FORMAT_ASN1) |
419 | i = (int) i2d_X509_CRL_bio(out, x); | 419 | i = (int) i2d_X509_CRL_bio(out, x); |
420 | else if (crl_config.outformat == FORMAT_PEM) | 420 | else if (cfg.outformat == FORMAT_PEM) |
421 | i = PEM_write_bio_X509_CRL(out, x); | 421 | i = PEM_write_bio_X509_CRL(out, x); |
422 | else { | 422 | else { |
423 | BIO_printf(bio_err, | 423 | BIO_printf(bio_err, |
diff --git a/src/usr.bin/openssl/crl2p7.c b/src/usr.bin/openssl/crl2p7.c index 0b0eae2a99..dfbc896a21 100644 --- a/src/usr.bin/openssl/crl2p7.c +++ b/src/usr.bin/openssl/crl2p7.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: crl2p7.c,v 1.10 2022/11/11 17:07:38 joshua Exp $ */ | 1 | /* $OpenBSD: crl2p7.c,v 1.11 2023/03/06 14:32:05 tb 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 | * |
@@ -83,18 +83,18 @@ static struct { | |||
83 | int nocrl; | 83 | int nocrl; |
84 | char *outfile; | 84 | char *outfile; |
85 | int outformat; | 85 | int outformat; |
86 | } crl2p7_config; | 86 | } cfg; |
87 | 87 | ||
88 | static int | 88 | static int |
89 | crl2p7_opt_certfile(char *arg) | 89 | crl2p7_opt_certfile(char *arg) |
90 | { | 90 | { |
91 | if (crl2p7_config.certflst == NULL) | 91 | if (cfg.certflst == NULL) |
92 | crl2p7_config.certflst = sk_OPENSSL_STRING_new_null(); | 92 | cfg.certflst = sk_OPENSSL_STRING_new_null(); |
93 | if (crl2p7_config.certflst == NULL) { | 93 | if (cfg.certflst == NULL) { |
94 | fprintf(stderr, "out of memory\n"); | 94 | fprintf(stderr, "out of memory\n"); |
95 | return (1); | 95 | return (1); |
96 | } | 96 | } |
97 | if (!sk_OPENSSL_STRING_push(crl2p7_config.certflst, arg)) { | 97 | if (!sk_OPENSSL_STRING_push(cfg.certflst, arg)) { |
98 | fprintf(stderr, "out of memory\n"); | 98 | fprintf(stderr, "out of memory\n"); |
99 | return (1); | 99 | return (1); |
100 | } | 100 | } |
@@ -115,34 +115,34 @@ static const struct option crl2p7_options[] = { | |||
115 | .argname = "file", | 115 | .argname = "file", |
116 | .desc = "Input file (default stdin)", | 116 | .desc = "Input file (default stdin)", |
117 | .type = OPTION_ARG, | 117 | .type = OPTION_ARG, |
118 | .opt.arg = &crl2p7_config.infile, | 118 | .opt.arg = &cfg.infile, |
119 | }, | 119 | }, |
120 | { | 120 | { |
121 | .name = "inform", | 121 | .name = "inform", |
122 | .argname = "format", | 122 | .argname = "format", |
123 | .desc = "Input format (DER or PEM (default))", | 123 | .desc = "Input format (DER or PEM (default))", |
124 | .type = OPTION_ARG_FORMAT, | 124 | .type = OPTION_ARG_FORMAT, |
125 | .opt.value = &crl2p7_config.informat, | 125 | .opt.value = &cfg.informat, |
126 | }, | 126 | }, |
127 | { | 127 | { |
128 | .name = "nocrl", | 128 | .name = "nocrl", |
129 | .desc = "Do not read CRL from input or include CRL in output", | 129 | .desc = "Do not read CRL from input or include CRL in output", |
130 | .type = OPTION_FLAG, | 130 | .type = OPTION_FLAG, |
131 | .opt.flag = &crl2p7_config.nocrl, | 131 | .opt.flag = &cfg.nocrl, |
132 | }, | 132 | }, |
133 | { | 133 | { |
134 | .name = "out", | 134 | .name = "out", |
135 | .argname = "file", | 135 | .argname = "file", |
136 | .desc = "Output file (default stdout)", | 136 | .desc = "Output file (default stdout)", |
137 | .type = OPTION_ARG, | 137 | .type = OPTION_ARG, |
138 | .opt.arg = &crl2p7_config.outfile, | 138 | .opt.arg = &cfg.outfile, |
139 | }, | 139 | }, |
140 | { | 140 | { |
141 | .name = "outform", | 141 | .name = "outform", |
142 | .argname = "format", | 142 | .argname = "format", |
143 | .desc = "Output format (DER or PEM (default))", | 143 | .desc = "Output format (DER or PEM (default))", |
144 | .type = OPTION_ARG_FORMAT, | 144 | .type = OPTION_ARG_FORMAT, |
145 | .opt.value = &crl2p7_config.outformat, | 145 | .opt.value = &cfg.outformat, |
146 | }, | 146 | }, |
147 | { NULL }, | 147 | { NULL }, |
148 | }; | 148 | }; |
@@ -174,10 +174,10 @@ crl2pkcs7_main(int argc, char **argv) | |||
174 | exit(1); | 174 | exit(1); |
175 | } | 175 | } |
176 | 176 | ||
177 | memset(&crl2p7_config, 0, sizeof(crl2p7_config)); | 177 | memset(&cfg, 0, sizeof(cfg)); |
178 | 178 | ||
179 | crl2p7_config.informat = FORMAT_PEM; | 179 | cfg.informat = FORMAT_PEM; |
180 | crl2p7_config.outformat = FORMAT_PEM; | 180 | cfg.outformat = FORMAT_PEM; |
181 | 181 | ||
182 | if (options_parse(argc, argv, crl2p7_options, NULL, NULL) != 0) { | 182 | if (options_parse(argc, argv, crl2p7_options, NULL, NULL) != 0) { |
183 | crl2p7_usage(); | 183 | crl2p7_usage(); |
@@ -190,19 +190,19 @@ crl2pkcs7_main(int argc, char **argv) | |||
190 | ERR_print_errors(bio_err); | 190 | ERR_print_errors(bio_err); |
191 | goto end; | 191 | goto end; |
192 | } | 192 | } |
193 | if (!crl2p7_config.nocrl) { | 193 | if (!cfg.nocrl) { |
194 | if (crl2p7_config.infile == NULL) | 194 | if (cfg.infile == NULL) |
195 | BIO_set_fp(in, stdin, BIO_NOCLOSE); | 195 | BIO_set_fp(in, stdin, BIO_NOCLOSE); |
196 | else { | 196 | else { |
197 | if (BIO_read_filename(in, crl2p7_config.infile) <= 0) { | 197 | if (BIO_read_filename(in, cfg.infile) <= 0) { |
198 | perror(crl2p7_config.infile); | 198 | perror(cfg.infile); |
199 | goto end; | 199 | goto end; |
200 | } | 200 | } |
201 | } | 201 | } |
202 | 202 | ||
203 | if (crl2p7_config.informat == FORMAT_ASN1) | 203 | if (cfg.informat == FORMAT_ASN1) |
204 | crl = d2i_X509_CRL_bio(in, NULL); | 204 | crl = d2i_X509_CRL_bio(in, NULL); |
205 | else if (crl2p7_config.informat == FORMAT_PEM) | 205 | else if (cfg.informat == FORMAT_PEM) |
206 | crl = PEM_read_bio_X509_CRL(in, NULL, NULL, NULL); | 206 | crl = PEM_read_bio_X509_CRL(in, NULL, NULL, NULL); |
207 | else { | 207 | else { |
208 | BIO_printf(bio_err, | 208 | BIO_printf(bio_err, |
@@ -236,9 +236,9 @@ crl2pkcs7_main(int argc, char **argv) | |||
236 | goto end; | 236 | goto end; |
237 | p7s->cert = cert_stack; | 237 | p7s->cert = cert_stack; |
238 | 238 | ||
239 | if (crl2p7_config.certflst) { | 239 | if (cfg.certflst) { |
240 | for (i = 0; i < sk_OPENSSL_STRING_num(crl2p7_config.certflst); i++) { | 240 | for (i = 0; i < sk_OPENSSL_STRING_num(cfg.certflst); i++) { |
241 | certfile = sk_OPENSSL_STRING_value(crl2p7_config.certflst, i); | 241 | certfile = sk_OPENSSL_STRING_value(cfg.certflst, i); |
242 | if (add_certs_from_file(cert_stack, certfile) < 0) { | 242 | if (add_certs_from_file(cert_stack, certfile) < 0) { |
243 | BIO_printf(bio_err, | 243 | BIO_printf(bio_err, |
244 | "error loading certificates\n"); | 244 | "error loading certificates\n"); |
@@ -248,20 +248,20 @@ crl2pkcs7_main(int argc, char **argv) | |||
248 | } | 248 | } |
249 | } | 249 | } |
250 | 250 | ||
251 | sk_OPENSSL_STRING_free(crl2p7_config.certflst); | 251 | sk_OPENSSL_STRING_free(cfg.certflst); |
252 | 252 | ||
253 | if (crl2p7_config.outfile == NULL) { | 253 | if (cfg.outfile == NULL) { |
254 | BIO_set_fp(out, stdout, BIO_NOCLOSE); | 254 | BIO_set_fp(out, stdout, BIO_NOCLOSE); |
255 | } else { | 255 | } else { |
256 | if (BIO_write_filename(out, crl2p7_config.outfile) <= 0) { | 256 | if (BIO_write_filename(out, cfg.outfile) <= 0) { |
257 | perror(crl2p7_config.outfile); | 257 | perror(cfg.outfile); |
258 | goto end; | 258 | goto end; |
259 | } | 259 | } |
260 | } | 260 | } |
261 | 261 | ||
262 | if (crl2p7_config.outformat == FORMAT_ASN1) | 262 | if (cfg.outformat == FORMAT_ASN1) |
263 | i = i2d_PKCS7_bio(out, p7); | 263 | i = i2d_PKCS7_bio(out, p7); |
264 | else if (crl2p7_config.outformat == FORMAT_PEM) | 264 | else if (cfg.outformat == FORMAT_PEM) |
265 | i = PEM_write_bio_PKCS7(out, p7); | 265 | i = PEM_write_bio_PKCS7(out, p7); |
266 | else { | 266 | else { |
267 | BIO_printf(bio_err, | 267 | BIO_printf(bio_err, |
diff --git a/src/usr.bin/openssl/dgst.c b/src/usr.bin/openssl/dgst.c index d29bc6f98c..3979966481 100644 --- a/src/usr.bin/openssl/dgst.c +++ b/src/usr.bin/openssl/dgst.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: dgst.c,v 1.20 2022/11/11 17:07:38 joshua Exp $ */ | 1 | /* $OpenBSD: dgst.c,v 1.21 2023/03/06 14:32:05 tb 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 | * |
@@ -96,7 +96,7 @@ static struct { | |||
96 | char *sigfile; | 96 | char *sigfile; |
97 | STACK_OF(OPENSSL_STRING) *sigopts; | 97 | STACK_OF(OPENSSL_STRING) *sigopts; |
98 | int want_pub; | 98 | int want_pub; |
99 | } dgst_config; | 99 | } cfg; |
100 | 100 | ||
101 | static int | 101 | static int |
102 | dgst_opt_macopt(char *arg) | 102 | dgst_opt_macopt(char *arg) |
@@ -104,11 +104,11 @@ dgst_opt_macopt(char *arg) | |||
104 | if (arg == NULL) | 104 | if (arg == NULL) |
105 | return (1); | 105 | return (1); |
106 | 106 | ||
107 | if (dgst_config.macopts == NULL && | 107 | if (cfg.macopts == NULL && |
108 | (dgst_config.macopts = sk_OPENSSL_STRING_new_null()) == NULL) | 108 | (cfg.macopts = sk_OPENSSL_STRING_new_null()) == NULL) |
109 | return (1); | 109 | return (1); |
110 | 110 | ||
111 | if (!sk_OPENSSL_STRING_push(dgst_config.macopts, arg)) | 111 | if (!sk_OPENSSL_STRING_push(cfg.macopts, arg)) |
112 | return (1); | 112 | return (1); |
113 | 113 | ||
114 | return (0); | 114 | return (0); |
@@ -122,10 +122,10 @@ dgst_opt_md(int argc, char **argv, int *argsused) | |||
122 | if (*name++ != '-') | 122 | if (*name++ != '-') |
123 | return (1); | 123 | return (1); |
124 | 124 | ||
125 | if ((dgst_config.m = EVP_get_digestbyname(name)) == NULL) | 125 | if ((cfg.m = EVP_get_digestbyname(name)) == NULL) |
126 | return (1); | 126 | return (1); |
127 | 127 | ||
128 | dgst_config.md = dgst_config.m; | 128 | cfg.md = cfg.m; |
129 | 129 | ||
130 | *argsused = 1; | 130 | *argsused = 1; |
131 | return (0); | 131 | return (0); |
@@ -137,8 +137,8 @@ dgst_opt_prverify(char *arg) | |||
137 | if (arg == NULL) | 137 | if (arg == NULL) |
138 | return (1); | 138 | return (1); |
139 | 139 | ||
140 | dgst_config.keyfile = arg; | 140 | cfg.keyfile = arg; |
141 | dgst_config.do_verify = 1; | 141 | cfg.do_verify = 1; |
142 | return (0); | 142 | return (0); |
143 | } | 143 | } |
144 | 144 | ||
@@ -148,11 +148,11 @@ dgst_opt_sigopt(char *arg) | |||
148 | if (arg == NULL) | 148 | if (arg == NULL) |
149 | return (1); | 149 | return (1); |
150 | 150 | ||
151 | if (dgst_config.sigopts == NULL && | 151 | if (cfg.sigopts == NULL && |
152 | (dgst_config.sigopts = sk_OPENSSL_STRING_new_null()) == NULL) | 152 | (cfg.sigopts = sk_OPENSSL_STRING_new_null()) == NULL) |
153 | return (1); | 153 | return (1); |
154 | 154 | ||
155 | if (!sk_OPENSSL_STRING_push(dgst_config.sigopts, arg)) | 155 | if (!sk_OPENSSL_STRING_push(cfg.sigopts, arg)) |
156 | return (1); | 156 | return (1); |
157 | 157 | ||
158 | return (0); | 158 | return (0); |
@@ -164,9 +164,9 @@ dgst_opt_verify(char *arg) | |||
164 | if (arg == NULL) | 164 | if (arg == NULL) |
165 | return (1); | 165 | return (1); |
166 | 166 | ||
167 | dgst_config.keyfile = arg; | 167 | cfg.keyfile = arg; |
168 | dgst_config.want_pub = 1; | 168 | cfg.want_pub = 1; |
169 | dgst_config.do_verify = 1; | 169 | cfg.do_verify = 1; |
170 | return (0); | 170 | return (0); |
171 | } | 171 | } |
172 | 172 | ||
@@ -175,27 +175,27 @@ static const struct option dgst_options[] = { | |||
175 | .name = "binary", | 175 | .name = "binary", |
176 | .desc = "Output the digest or signature in binary form", | 176 | .desc = "Output the digest or signature in binary form", |
177 | .type = OPTION_VALUE, | 177 | .type = OPTION_VALUE, |
178 | .opt.value = &dgst_config.out_bin, | 178 | .opt.value = &cfg.out_bin, |
179 | .value = 1, | 179 | .value = 1, |
180 | }, | 180 | }, |
181 | { | 181 | { |
182 | .name = "c", | 182 | .name = "c", |
183 | .desc = "Print the digest in two-digit groups separated by colons", | 183 | .desc = "Print the digest in two-digit groups separated by colons", |
184 | .type = OPTION_VALUE, | 184 | .type = OPTION_VALUE, |
185 | .opt.value = &dgst_config.separator, | 185 | .opt.value = &cfg.separator, |
186 | .value = 1, | 186 | .value = 1, |
187 | }, | 187 | }, |
188 | { | 188 | { |
189 | .name = "d", | 189 | .name = "d", |
190 | .desc = "Print BIO debugging information", | 190 | .desc = "Print BIO debugging information", |
191 | .type = OPTION_FLAG, | 191 | .type = OPTION_FLAG, |
192 | .opt.flag = &dgst_config.debug, | 192 | .opt.flag = &cfg.debug, |
193 | }, | 193 | }, |
194 | { | 194 | { |
195 | .name = "hex", | 195 | .name = "hex", |
196 | .desc = "Output as hex dump", | 196 | .desc = "Output as hex dump", |
197 | .type = OPTION_VALUE, | 197 | .type = OPTION_VALUE, |
198 | .opt.value = &dgst_config.out_bin, | 198 | .opt.value = &cfg.out_bin, |
199 | .value = 0, | 199 | .value = 0, |
200 | }, | 200 | }, |
201 | { | 201 | { |
@@ -203,21 +203,21 @@ static const struct option dgst_options[] = { | |||
203 | .argname = "key", | 203 | .argname = "key", |
204 | .desc = "Create hashed MAC with key", | 204 | .desc = "Create hashed MAC with key", |
205 | .type = OPTION_ARG, | 205 | .type = OPTION_ARG, |
206 | .opt.arg = &dgst_config.hmac_key, | 206 | .opt.arg = &cfg.hmac_key, |
207 | }, | 207 | }, |
208 | { | 208 | { |
209 | .name = "keyform", | 209 | .name = "keyform", |
210 | .argname = "format", | 210 | .argname = "format", |
211 | .desc = "Key file format (PEM)", | 211 | .desc = "Key file format (PEM)", |
212 | .type = OPTION_ARG_FORMAT, | 212 | .type = OPTION_ARG_FORMAT, |
213 | .opt.value = &dgst_config.keyform, | 213 | .opt.value = &cfg.keyform, |
214 | }, | 214 | }, |
215 | { | 215 | { |
216 | .name = "mac", | 216 | .name = "mac", |
217 | .argname = "algorithm", | 217 | .argname = "algorithm", |
218 | .desc = "Create MAC (not necessarily HMAC)", | 218 | .desc = "Create MAC (not necessarily HMAC)", |
219 | .type = OPTION_ARG, | 219 | .type = OPTION_ARG, |
220 | .opt.arg = &dgst_config.mac_name, | 220 | .opt.arg = &cfg.mac_name, |
221 | }, | 221 | }, |
222 | { | 222 | { |
223 | .name = "macopt", | 223 | .name = "macopt", |
@@ -231,14 +231,14 @@ static const struct option dgst_options[] = { | |||
231 | .argname = "file", | 231 | .argname = "file", |
232 | .desc = "Output to file rather than stdout", | 232 | .desc = "Output to file rather than stdout", |
233 | .type = OPTION_ARG, | 233 | .type = OPTION_ARG, |
234 | .opt.arg = &dgst_config.outfile, | 234 | .opt.arg = &cfg.outfile, |
235 | }, | 235 | }, |
236 | { | 236 | { |
237 | .name = "passin", | 237 | .name = "passin", |
238 | .argname = "arg", | 238 | .argname = "arg", |
239 | .desc = "Input file passphrase source", | 239 | .desc = "Input file passphrase source", |
240 | .type = OPTION_ARG, | 240 | .type = OPTION_ARG, |
241 | .opt.arg = &dgst_config.passargin, | 241 | .opt.arg = &cfg.passargin, |
242 | }, | 242 | }, |
243 | { | 243 | { |
244 | .name = "prverify", | 244 | .name = "prverify", |
@@ -251,7 +251,7 @@ static const struct option dgst_options[] = { | |||
251 | .name = "r", | 251 | .name = "r", |
252 | .desc = "Output the digest in coreutils format", | 252 | .desc = "Output the digest in coreutils format", |
253 | .type = OPTION_VALUE, | 253 | .type = OPTION_VALUE, |
254 | .opt.value = &dgst_config.separator, | 254 | .opt.value = &cfg.separator, |
255 | .value = 2, | 255 | .value = 2, |
256 | }, | 256 | }, |
257 | { | 257 | { |
@@ -259,14 +259,14 @@ static const struct option dgst_options[] = { | |||
259 | .argname = "file", | 259 | .argname = "file", |
260 | .desc = "Sign digest using private key in file", | 260 | .desc = "Sign digest using private key in file", |
261 | .type = OPTION_ARG, | 261 | .type = OPTION_ARG, |
262 | .opt.arg = &dgst_config.keyfile, | 262 | .opt.arg = &cfg.keyfile, |
263 | }, | 263 | }, |
264 | { | 264 | { |
265 | .name = "signature", | 265 | .name = "signature", |
266 | .argname = "file", | 266 | .argname = "file", |
267 | .desc = "Signature to verify", | 267 | .desc = "Signature to verify", |
268 | .type = OPTION_ARG, | 268 | .type = OPTION_ARG, |
269 | .opt.arg = &dgst_config.sigfile, | 269 | .opt.arg = &cfg.sigfile, |
270 | }, | 270 | }, |
271 | { | 271 | { |
272 | .name = "sigopt", | 272 | .name = "sigopt", |
@@ -348,24 +348,24 @@ dgst_main(int argc, char **argv) | |||
348 | goto end; | 348 | goto end; |
349 | } | 349 | } |
350 | 350 | ||
351 | memset(&dgst_config, 0, sizeof(dgst_config)); | 351 | memset(&cfg, 0, sizeof(cfg)); |
352 | dgst_config.keyform = FORMAT_PEM; | 352 | cfg.keyform = FORMAT_PEM; |
353 | dgst_config.out_bin = -1; | 353 | cfg.out_bin = -1; |
354 | 354 | ||
355 | /* first check the program name */ | 355 | /* first check the program name */ |
356 | program_name(argv[0], pname, sizeof pname); | 356 | program_name(argv[0], pname, sizeof pname); |
357 | 357 | ||
358 | dgst_config.md = EVP_get_digestbyname(pname); | 358 | cfg.md = EVP_get_digestbyname(pname); |
359 | 359 | ||
360 | if (options_parse(argc, argv, dgst_options, NULL, | 360 | if (options_parse(argc, argv, dgst_options, NULL, |
361 | &dgst_config.argsused) != 0) { | 361 | &cfg.argsused) != 0) { |
362 | dgst_usage(); | 362 | dgst_usage(); |
363 | goto end; | 363 | goto end; |
364 | } | 364 | } |
365 | argc -= dgst_config.argsused; | 365 | argc -= cfg.argsused; |
366 | argv += dgst_config.argsused; | 366 | argv += cfg.argsused; |
367 | 367 | ||
368 | if (dgst_config.do_verify && !dgst_config.sigfile) { | 368 | if (cfg.do_verify && !cfg.sigfile) { |
369 | BIO_printf(bio_err, | 369 | BIO_printf(bio_err, |
370 | "No signature to verify: use the -signature option\n"); | 370 | "No signature to verify: use the -signature option\n"); |
371 | goto end; | 371 | goto end; |
@@ -378,50 +378,50 @@ dgst_main(int argc, char **argv) | |||
378 | goto end; | 378 | goto end; |
379 | } | 379 | } |
380 | 380 | ||
381 | if (dgst_config.debug) { | 381 | if (cfg.debug) { |
382 | BIO_set_callback(in, BIO_debug_callback); | 382 | BIO_set_callback(in, BIO_debug_callback); |
383 | /* needed for windows 3.1 */ | 383 | /* needed for windows 3.1 */ |
384 | BIO_set_callback_arg(in, (char *) bio_err); | 384 | BIO_set_callback_arg(in, (char *) bio_err); |
385 | } | 385 | } |
386 | if (!app_passwd(bio_err, dgst_config.passargin, NULL, &passin, NULL)) { | 386 | if (!app_passwd(bio_err, cfg.passargin, NULL, &passin, NULL)) { |
387 | BIO_printf(bio_err, "Error getting password\n"); | 387 | BIO_printf(bio_err, "Error getting password\n"); |
388 | goto end; | 388 | goto end; |
389 | } | 389 | } |
390 | if (dgst_config.out_bin == -1) { | 390 | if (cfg.out_bin == -1) { |
391 | if (dgst_config.keyfile) | 391 | if (cfg.keyfile) |
392 | dgst_config.out_bin = 1; | 392 | cfg.out_bin = 1; |
393 | else | 393 | else |
394 | dgst_config.out_bin = 0; | 394 | cfg.out_bin = 0; |
395 | } | 395 | } |
396 | 396 | ||
397 | if (dgst_config.outfile) { | 397 | if (cfg.outfile) { |
398 | if (dgst_config.out_bin) | 398 | if (cfg.out_bin) |
399 | out = BIO_new_file(dgst_config.outfile, "wb"); | 399 | out = BIO_new_file(cfg.outfile, "wb"); |
400 | else | 400 | else |
401 | out = BIO_new_file(dgst_config.outfile, "w"); | 401 | out = BIO_new_file(cfg.outfile, "w"); |
402 | } else { | 402 | } else { |
403 | out = BIO_new_fp(stdout, BIO_NOCLOSE); | 403 | out = BIO_new_fp(stdout, BIO_NOCLOSE); |
404 | } | 404 | } |
405 | 405 | ||
406 | if (!out) { | 406 | if (!out) { |
407 | BIO_printf(bio_err, "Error opening output file %s\n", | 407 | BIO_printf(bio_err, "Error opening output file %s\n", |
408 | dgst_config.outfile ? dgst_config.outfile : "(stdout)"); | 408 | cfg.outfile ? cfg.outfile : "(stdout)"); |
409 | ERR_print_errors(bio_err); | 409 | ERR_print_errors(bio_err); |
410 | goto end; | 410 | goto end; |
411 | } | 411 | } |
412 | if ((!!dgst_config.mac_name + !!dgst_config.keyfile + | 412 | if ((!!cfg.mac_name + !!cfg.keyfile + |
413 | !!dgst_config.hmac_key) > 1) { | 413 | !!cfg.hmac_key) > 1) { |
414 | BIO_printf(bio_err, | 414 | BIO_printf(bio_err, |
415 | "MAC and Signing key cannot both be specified\n"); | 415 | "MAC and Signing key cannot both be specified\n"); |
416 | goto end; | 416 | goto end; |
417 | } | 417 | } |
418 | if (dgst_config.keyfile) { | 418 | if (cfg.keyfile) { |
419 | if (dgst_config.want_pub) | 419 | if (cfg.want_pub) |
420 | sigkey = load_pubkey(bio_err, dgst_config.keyfile, | 420 | sigkey = load_pubkey(bio_err, cfg.keyfile, |
421 | dgst_config.keyform, 0, NULL, "key file"); | 421 | cfg.keyform, 0, NULL, "key file"); |
422 | else | 422 | else |
423 | sigkey = load_key(bio_err, dgst_config.keyfile, | 423 | sigkey = load_key(bio_err, cfg.keyfile, |
424 | dgst_config.keyform, 0, passin, "key file"); | 424 | cfg.keyform, 0, passin, "key file"); |
425 | if (!sigkey) { | 425 | if (!sigkey) { |
426 | /* | 426 | /* |
427 | * load_[pub]key() has already printed an appropriate | 427 | * load_[pub]key() has already printed an appropriate |
@@ -430,17 +430,17 @@ dgst_main(int argc, char **argv) | |||
430 | goto end; | 430 | goto end; |
431 | } | 431 | } |
432 | } | 432 | } |
433 | if (dgst_config.mac_name) { | 433 | if (cfg.mac_name) { |
434 | EVP_PKEY_CTX *mac_ctx = NULL; | 434 | EVP_PKEY_CTX *mac_ctx = NULL; |
435 | int r = 0; | 435 | int r = 0; |
436 | if (!init_gen_str(bio_err, &mac_ctx, dgst_config.mac_name, 0)) | 436 | if (!init_gen_str(bio_err, &mac_ctx, cfg.mac_name, 0)) |
437 | goto mac_end; | 437 | goto mac_end; |
438 | if (dgst_config.macopts) { | 438 | if (cfg.macopts) { |
439 | char *macopt; | 439 | char *macopt; |
440 | for (i = 0; i < sk_OPENSSL_STRING_num( | 440 | for (i = 0; i < sk_OPENSSL_STRING_num( |
441 | dgst_config.macopts); i++) { | 441 | cfg.macopts); i++) { |
442 | macopt = sk_OPENSSL_STRING_value( | 442 | macopt = sk_OPENSSL_STRING_value( |
443 | dgst_config.macopts, i); | 443 | cfg.macopts, i); |
444 | if (pkey_ctrl_string(mac_ctx, macopt) <= 0) { | 444 | if (pkey_ctrl_string(mac_ctx, macopt) <= 0) { |
445 | BIO_printf(bio_err, | 445 | BIO_printf(bio_err, |
446 | "MAC parameter error \"%s\"\n", | 446 | "MAC parameter error \"%s\"\n", |
@@ -461,9 +461,9 @@ dgst_main(int argc, char **argv) | |||
461 | if (r == 0) | 461 | if (r == 0) |
462 | goto end; | 462 | goto end; |
463 | } | 463 | } |
464 | if (dgst_config.hmac_key) { | 464 | if (cfg.hmac_key) { |
465 | sigkey = EVP_PKEY_new_mac_key(EVP_PKEY_HMAC, NULL, | 465 | sigkey = EVP_PKEY_new_mac_key(EVP_PKEY_HMAC, NULL, |
466 | (unsigned char *) dgst_config.hmac_key, -1); | 466 | (unsigned char *) cfg.hmac_key, -1); |
467 | if (!sigkey) | 467 | if (!sigkey) |
468 | goto end; | 468 | goto end; |
469 | } | 469 | } |
@@ -476,23 +476,23 @@ dgst_main(int argc, char **argv) | |||
476 | ERR_print_errors(bio_err); | 476 | ERR_print_errors(bio_err); |
477 | goto end; | 477 | goto end; |
478 | } | 478 | } |
479 | if (dgst_config.do_verify) | 479 | if (cfg.do_verify) |
480 | r = EVP_DigestVerifyInit(mctx, &pctx, dgst_config.md, | 480 | r = EVP_DigestVerifyInit(mctx, &pctx, cfg.md, |
481 | NULL, sigkey); | 481 | NULL, sigkey); |
482 | else | 482 | else |
483 | r = EVP_DigestSignInit(mctx, &pctx, dgst_config.md, | 483 | r = EVP_DigestSignInit(mctx, &pctx, cfg.md, |
484 | NULL, sigkey); | 484 | NULL, sigkey); |
485 | if (!r) { | 485 | if (!r) { |
486 | BIO_printf(bio_err, "Error setting context\n"); | 486 | BIO_printf(bio_err, "Error setting context\n"); |
487 | ERR_print_errors(bio_err); | 487 | ERR_print_errors(bio_err); |
488 | goto end; | 488 | goto end; |
489 | } | 489 | } |
490 | if (dgst_config.sigopts) { | 490 | if (cfg.sigopts) { |
491 | char *sigopt; | 491 | char *sigopt; |
492 | for (i = 0; i < sk_OPENSSL_STRING_num( | 492 | for (i = 0; i < sk_OPENSSL_STRING_num( |
493 | dgst_config.sigopts); i++) { | 493 | cfg.sigopts); i++) { |
494 | sigopt = sk_OPENSSL_STRING_value( | 494 | sigopt = sk_OPENSSL_STRING_value( |
495 | dgst_config.sigopts, i); | 495 | cfg.sigopts, i); |
496 | if (pkey_ctrl_string(pctx, sigopt) <= 0) { | 496 | if (pkey_ctrl_string(pctx, sigopt) <= 0) { |
497 | BIO_printf(bio_err, | 497 | BIO_printf(bio_err, |
498 | "parameter error \"%s\"\n", | 498 | "parameter error \"%s\"\n", |
@@ -505,16 +505,16 @@ dgst_main(int argc, char **argv) | |||
505 | } | 505 | } |
506 | /* we use md as a filter, reading from 'in' */ | 506 | /* we use md as a filter, reading from 'in' */ |
507 | else { | 507 | else { |
508 | if (dgst_config.md == NULL) | 508 | if (cfg.md == NULL) |
509 | dgst_config.md = EVP_sha256(); | 509 | cfg.md = EVP_sha256(); |
510 | if (!BIO_set_md(bmd, dgst_config.md)) { | 510 | if (!BIO_set_md(bmd, cfg.md)) { |
511 | BIO_printf(bio_err, "Error setting digest %s\n", pname); | 511 | BIO_printf(bio_err, "Error setting digest %s\n", pname); |
512 | ERR_print_errors(bio_err); | 512 | ERR_print_errors(bio_err); |
513 | goto end; | 513 | goto end; |
514 | } | 514 | } |
515 | } | 515 | } |
516 | 516 | ||
517 | if (dgst_config.sigfile && sigkey) { | 517 | if (cfg.sigfile && sigkey) { |
518 | BIO *sigbio; | 518 | BIO *sigbio; |
519 | siglen = EVP_PKEY_size(sigkey); | 519 | siglen = EVP_PKEY_size(sigkey); |
520 | sigbuf = malloc(siglen); | 520 | sigbuf = malloc(siglen); |
@@ -523,10 +523,10 @@ dgst_main(int argc, char **argv) | |||
523 | ERR_print_errors(bio_err); | 523 | ERR_print_errors(bio_err); |
524 | goto end; | 524 | goto end; |
525 | } | 525 | } |
526 | sigbio = BIO_new_file(dgst_config.sigfile, "rb"); | 526 | sigbio = BIO_new_file(cfg.sigfile, "rb"); |
527 | if (!sigbio) { | 527 | if (!sigbio) { |
528 | BIO_printf(bio_err, "Error opening signature file %s\n", | 528 | BIO_printf(bio_err, "Error opening signature file %s\n", |
529 | dgst_config.sigfile); | 529 | cfg.sigfile); |
530 | ERR_print_errors(bio_err); | 530 | ERR_print_errors(bio_err); |
531 | goto end; | 531 | goto end; |
532 | } | 532 | } |
@@ -534,26 +534,26 @@ dgst_main(int argc, char **argv) | |||
534 | BIO_free(sigbio); | 534 | BIO_free(sigbio); |
535 | if (siglen <= 0) { | 535 | if (siglen <= 0) { |
536 | BIO_printf(bio_err, "Error reading signature file %s\n", | 536 | BIO_printf(bio_err, "Error reading signature file %s\n", |
537 | dgst_config.sigfile); | 537 | cfg.sigfile); |
538 | ERR_print_errors(bio_err); | 538 | ERR_print_errors(bio_err); |
539 | goto end; | 539 | goto end; |
540 | } | 540 | } |
541 | } | 541 | } |
542 | inp = BIO_push(bmd, in); | 542 | inp = BIO_push(bmd, in); |
543 | 543 | ||
544 | if (dgst_config.md == NULL) { | 544 | if (cfg.md == NULL) { |
545 | EVP_MD_CTX *tctx; | 545 | EVP_MD_CTX *tctx; |
546 | BIO_get_md_ctx(bmd, &tctx); | 546 | BIO_get_md_ctx(bmd, &tctx); |
547 | dgst_config.md = EVP_MD_CTX_md(tctx); | 547 | cfg.md = EVP_MD_CTX_md(tctx); |
548 | } | 548 | } |
549 | if (argc == 0) { | 549 | if (argc == 0) { |
550 | BIO_set_fp(in, stdin, BIO_NOCLOSE); | 550 | BIO_set_fp(in, stdin, BIO_NOCLOSE); |
551 | err = do_fp(out, buf, inp, dgst_config.separator, | 551 | err = do_fp(out, buf, inp, cfg.separator, |
552 | dgst_config.out_bin, sigkey, sigbuf, siglen, NULL, NULL, | 552 | cfg.out_bin, sigkey, sigbuf, siglen, NULL, NULL, |
553 | "stdin", bmd); | 553 | "stdin", bmd); |
554 | } else { | 554 | } else { |
555 | const char *md_name = NULL, *sig_name = NULL; | 555 | const char *md_name = NULL, *sig_name = NULL; |
556 | if (!dgst_config.out_bin) { | 556 | if (!cfg.out_bin) { |
557 | if (sigkey) { | 557 | if (sigkey) { |
558 | const EVP_PKEY_ASN1_METHOD *ameth; | 558 | const EVP_PKEY_ASN1_METHOD *ameth; |
559 | ameth = EVP_PKEY_get0_asn1(sigkey); | 559 | ameth = EVP_PKEY_get0_asn1(sigkey); |
@@ -561,7 +561,7 @@ dgst_main(int argc, char **argv) | |||
561 | EVP_PKEY_asn1_get0_info(NULL, NULL, | 561 | EVP_PKEY_asn1_get0_info(NULL, NULL, |
562 | NULL, NULL, &sig_name, ameth); | 562 | NULL, NULL, &sig_name, ameth); |
563 | } | 563 | } |
564 | md_name = EVP_MD_name(dgst_config.md); | 564 | md_name = EVP_MD_name(cfg.md); |
565 | } | 565 | } |
566 | err = 0; | 566 | err = 0; |
567 | for (i = 0; i < argc; i++) { | 567 | for (i = 0; i < argc; i++) { |
@@ -571,8 +571,8 @@ dgst_main(int argc, char **argv) | |||
571 | err++; | 571 | err++; |
572 | continue; | 572 | continue; |
573 | } else { | 573 | } else { |
574 | r = do_fp(out, buf, inp, dgst_config.separator, | 574 | r = do_fp(out, buf, inp, cfg.separator, |
575 | dgst_config.out_bin, sigkey, sigbuf, siglen, | 575 | cfg.out_bin, sigkey, sigbuf, siglen, |
576 | sig_name, md_name, argv[i], bmd); | 576 | sig_name, md_name, argv[i], bmd); |
577 | } | 577 | } |
578 | if (r) | 578 | if (r) |
@@ -587,8 +587,8 @@ dgst_main(int argc, char **argv) | |||
587 | free(passin); | 587 | free(passin); |
588 | BIO_free_all(out); | 588 | BIO_free_all(out); |
589 | EVP_PKEY_free(sigkey); | 589 | EVP_PKEY_free(sigkey); |
590 | sk_OPENSSL_STRING_free(dgst_config.sigopts); | 590 | sk_OPENSSL_STRING_free(cfg.sigopts); |
591 | sk_OPENSSL_STRING_free(dgst_config.macopts); | 591 | sk_OPENSSL_STRING_free(cfg.macopts); |
592 | free(sigbuf); | 592 | free(sigbuf); |
593 | BIO_free(bmd); | 593 | BIO_free(bmd); |
594 | 594 | ||
diff --git a/src/usr.bin/openssl/dh.c b/src/usr.bin/openssl/dh.c index 200233c0f2..a4c02235f2 100644 --- a/src/usr.bin/openssl/dh.c +++ b/src/usr.bin/openssl/dh.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: dh.c,v 1.14 2022/11/11 17:07:38 joshua Exp $ */ | 1 | /* $OpenBSD: dh.c,v 1.15 2023/03/06 14:32:05 tb 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 | * |
@@ -83,60 +83,60 @@ static struct { | |||
83 | char *outfile; | 83 | char *outfile; |
84 | int outformat; | 84 | int outformat; |
85 | int text; | 85 | int text; |
86 | } dh_config; | 86 | } cfg; |
87 | 87 | ||
88 | static const struct option dh_options[] = { | 88 | static const struct option dh_options[] = { |
89 | { | 89 | { |
90 | .name = "C", | 90 | .name = "C", |
91 | .desc = "Convert DH parameters into C code", | 91 | .desc = "Convert DH parameters into C code", |
92 | .type = OPTION_FLAG, | 92 | .type = OPTION_FLAG, |
93 | .opt.flag = &dh_config.C, | 93 | .opt.flag = &cfg.C, |
94 | }, | 94 | }, |
95 | { | 95 | { |
96 | .name = "check", | 96 | .name = "check", |
97 | .desc = "Check the DH parameters", | 97 | .desc = "Check the DH parameters", |
98 | .type = OPTION_FLAG, | 98 | .type = OPTION_FLAG, |
99 | .opt.flag = &dh_config.check, | 99 | .opt.flag = &cfg.check, |
100 | }, | 100 | }, |
101 | { | 101 | { |
102 | .name = "in", | 102 | .name = "in", |
103 | .argname = "file", | 103 | .argname = "file", |
104 | .desc = "Input file (default stdin)", | 104 | .desc = "Input file (default stdin)", |
105 | .type = OPTION_ARG, | 105 | .type = OPTION_ARG, |
106 | .opt.arg = &dh_config.infile, | 106 | .opt.arg = &cfg.infile, |
107 | }, | 107 | }, |
108 | { | 108 | { |
109 | .name = "inform", | 109 | .name = "inform", |
110 | .argname = "format", | 110 | .argname = "format", |
111 | .desc = "Input format (DER or PEM (default))", | 111 | .desc = "Input format (DER or PEM (default))", |
112 | .type = OPTION_ARG_FORMAT, | 112 | .type = OPTION_ARG_FORMAT, |
113 | .opt.value = &dh_config.informat, | 113 | .opt.value = &cfg.informat, |
114 | }, | 114 | }, |
115 | { | 115 | { |
116 | .name = "noout", | 116 | .name = "noout", |
117 | .desc = "No output", | 117 | .desc = "No output", |
118 | .type = OPTION_FLAG, | 118 | .type = OPTION_FLAG, |
119 | .opt.flag = &dh_config.noout, | 119 | .opt.flag = &cfg.noout, |
120 | }, | 120 | }, |
121 | { | 121 | { |
122 | .name = "out", | 122 | .name = "out", |
123 | .argname = "file", | 123 | .argname = "file", |
124 | .desc = "Output file (default stdout)", | 124 | .desc = "Output file (default stdout)", |
125 | .type = OPTION_ARG, | 125 | .type = OPTION_ARG, |
126 | .opt.arg = &dh_config.outfile, | 126 | .opt.arg = &cfg.outfile, |
127 | }, | 127 | }, |
128 | { | 128 | { |
129 | .name = "outform", | 129 | .name = "outform", |
130 | .argname = "format", | 130 | .argname = "format", |
131 | .desc = "Output format (DER or PEM (default))", | 131 | .desc = "Output format (DER or PEM (default))", |
132 | .type = OPTION_ARG_FORMAT, | 132 | .type = OPTION_ARG_FORMAT, |
133 | .opt.value = &dh_config.outformat, | 133 | .opt.value = &cfg.outformat, |
134 | }, | 134 | }, |
135 | { | 135 | { |
136 | .name = "text", | 136 | .name = "text", |
137 | .desc = "Print a text form of the DH parameters", | 137 | .desc = "Print a text form of the DH parameters", |
138 | .type = OPTION_FLAG, | 138 | .type = OPTION_FLAG, |
139 | .opt.flag = &dh_config.text, | 139 | .opt.flag = &cfg.text, |
140 | }, | 140 | }, |
141 | { NULL }, | 141 | { NULL }, |
142 | }; | 142 | }; |
@@ -163,10 +163,10 @@ dh_main(int argc, char **argv) | |||
163 | exit(1); | 163 | exit(1); |
164 | } | 164 | } |
165 | 165 | ||
166 | memset(&dh_config, 0, sizeof(dh_config)); | 166 | memset(&cfg, 0, sizeof(cfg)); |
167 | 167 | ||
168 | dh_config.informat = FORMAT_PEM; | 168 | cfg.informat = FORMAT_PEM; |
169 | dh_config.outformat = FORMAT_PEM; | 169 | cfg.outformat = FORMAT_PEM; |
170 | 170 | ||
171 | if (options_parse(argc, argv, dh_options, NULL, NULL) != 0) { | 171 | if (options_parse(argc, argv, dh_options, NULL, NULL) != 0) { |
172 | dh_usage(); | 172 | dh_usage(); |
@@ -179,26 +179,26 @@ dh_main(int argc, char **argv) | |||
179 | ERR_print_errors(bio_err); | 179 | ERR_print_errors(bio_err); |
180 | goto end; | 180 | goto end; |
181 | } | 181 | } |
182 | if (dh_config.infile == NULL) | 182 | if (cfg.infile == NULL) |
183 | BIO_set_fp(in, stdin, BIO_NOCLOSE); | 183 | BIO_set_fp(in, stdin, BIO_NOCLOSE); |
184 | else { | 184 | else { |
185 | if (BIO_read_filename(in, dh_config.infile) <= 0) { | 185 | if (BIO_read_filename(in, cfg.infile) <= 0) { |
186 | perror(dh_config.infile); | 186 | perror(cfg.infile); |
187 | goto end; | 187 | goto end; |
188 | } | 188 | } |
189 | } | 189 | } |
190 | if (dh_config.outfile == NULL) { | 190 | if (cfg.outfile == NULL) { |
191 | BIO_set_fp(out, stdout, BIO_NOCLOSE); | 191 | BIO_set_fp(out, stdout, BIO_NOCLOSE); |
192 | } else { | 192 | } else { |
193 | if (BIO_write_filename(out, dh_config.outfile) <= 0) { | 193 | if (BIO_write_filename(out, cfg.outfile) <= 0) { |
194 | perror(dh_config.outfile); | 194 | perror(cfg.outfile); |
195 | goto end; | 195 | goto end; |
196 | } | 196 | } |
197 | } | 197 | } |
198 | 198 | ||
199 | if (dh_config.informat == FORMAT_ASN1) | 199 | if (cfg.informat == FORMAT_ASN1) |
200 | dh = d2i_DHparams_bio(in, NULL); | 200 | dh = d2i_DHparams_bio(in, NULL); |
201 | else if (dh_config.informat == FORMAT_PEM) | 201 | else if (cfg.informat == FORMAT_PEM) |
202 | dh = PEM_read_bio_DHparams(in, NULL, NULL, NULL); | 202 | dh = PEM_read_bio_DHparams(in, NULL, NULL, NULL); |
203 | else { | 203 | else { |
204 | BIO_printf(bio_err, "bad input format specified\n"); | 204 | BIO_printf(bio_err, "bad input format specified\n"); |
@@ -209,10 +209,10 @@ dh_main(int argc, char **argv) | |||
209 | ERR_print_errors(bio_err); | 209 | ERR_print_errors(bio_err); |
210 | goto end; | 210 | goto end; |
211 | } | 211 | } |
212 | if (dh_config.text) { | 212 | if (cfg.text) { |
213 | DHparams_print(out, dh); | 213 | DHparams_print(out, dh); |
214 | } | 214 | } |
215 | if (dh_config.check) { | 215 | if (cfg.check) { |
216 | if (!DH_check(dh, &i)) { | 216 | if (!DH_check(dh, &i)) { |
217 | ERR_print_errors(bio_err); | 217 | ERR_print_errors(bio_err); |
218 | goto end; | 218 | goto end; |
@@ -228,7 +228,7 @@ dh_main(int argc, char **argv) | |||
228 | if (i == 0) | 228 | if (i == 0) |
229 | printf("DH parameters appear to be ok.\n"); | 229 | printf("DH parameters appear to be ok.\n"); |
230 | } | 230 | } |
231 | if (dh_config.C) { | 231 | if (cfg.C) { |
232 | unsigned char *data; | 232 | unsigned char *data; |
233 | int len, l, bits; | 233 | int len, l, bits; |
234 | 234 | ||
@@ -271,10 +271,10 @@ dh_main(int argc, char **argv) | |||
271 | printf("\treturn(dh);\n\t}\n"); | 271 | printf("\treturn(dh);\n\t}\n"); |
272 | free(data); | 272 | free(data); |
273 | } | 273 | } |
274 | if (!dh_config.noout) { | 274 | if (!cfg.noout) { |
275 | if (dh_config.outformat == FORMAT_ASN1) | 275 | if (cfg.outformat == FORMAT_ASN1) |
276 | i = i2d_DHparams_bio(out, dh); | 276 | i = i2d_DHparams_bio(out, dh); |
277 | else if (dh_config.outformat == FORMAT_PEM) | 277 | else if (cfg.outformat == FORMAT_PEM) |
278 | i = PEM_write_bio_DHparams(out, dh); | 278 | i = PEM_write_bio_DHparams(out, dh); |
279 | else { | 279 | else { |
280 | BIO_printf(bio_err, "bad output format specified for outfile\n"); | 280 | BIO_printf(bio_err, "bad output format specified for outfile\n"); |
diff --git a/src/usr.bin/openssl/dhparam.c b/src/usr.bin/openssl/dhparam.c index 8a487cb918..0542464d7b 100644 --- a/src/usr.bin/openssl/dhparam.c +++ b/src/usr.bin/openssl/dhparam.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: dhparam.c,v 1.16 2023/03/05 13:12:53 tb Exp $ */ | 1 | /* $OpenBSD: dhparam.c,v 1.17 2023/03/06 14:32:06 tb 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 | * |
@@ -142,7 +142,7 @@ static struct { | |||
142 | char *outfile; | 142 | char *outfile; |
143 | int outformat; | 143 | int outformat; |
144 | int text; | 144 | int text; |
145 | } dhparam_config; | 145 | } cfg; |
146 | 146 | ||
147 | static const struct option dhparam_options[] = { | 147 | static const struct option dhparam_options[] = { |
148 | { | 148 | { |
@@ -150,73 +150,73 @@ static const struct option dhparam_options[] = { | |||
150 | .desc = "Generate DH parameters with a generator value of 2 " | 150 | .desc = "Generate DH parameters with a generator value of 2 " |
151 | "(default)", | 151 | "(default)", |
152 | .type = OPTION_VALUE, | 152 | .type = OPTION_VALUE, |
153 | .opt.value = &dhparam_config.g, | 153 | .opt.value = &cfg.g, |
154 | .value = 2, | 154 | .value = 2, |
155 | }, | 155 | }, |
156 | { | 156 | { |
157 | .name = "5", | 157 | .name = "5", |
158 | .desc = "Generate DH parameters with a generator value of 5", | 158 | .desc = "Generate DH parameters with a generator value of 5", |
159 | .type = OPTION_VALUE, | 159 | .type = OPTION_VALUE, |
160 | .opt.value = &dhparam_config.g, | 160 | .opt.value = &cfg.g, |
161 | .value = 5, | 161 | .value = 5, |
162 | }, | 162 | }, |
163 | { | 163 | { |
164 | .name = "C", | 164 | .name = "C", |
165 | .desc = "Convert DH parameters into C code", | 165 | .desc = "Convert DH parameters into C code", |
166 | .type = OPTION_FLAG, | 166 | .type = OPTION_FLAG, |
167 | .opt.flag = &dhparam_config.C, | 167 | .opt.flag = &cfg.C, |
168 | }, | 168 | }, |
169 | { | 169 | { |
170 | .name = "check", | 170 | .name = "check", |
171 | .desc = "Check the DH parameters", | 171 | .desc = "Check the DH parameters", |
172 | .type = OPTION_FLAG, | 172 | .type = OPTION_FLAG, |
173 | .opt.flag = &dhparam_config.check, | 173 | .opt.flag = &cfg.check, |
174 | }, | 174 | }, |
175 | { | 175 | { |
176 | .name = "dsaparam", | 176 | .name = "dsaparam", |
177 | .desc = "Read or generate DSA parameters and convert to DH", | 177 | .desc = "Read or generate DSA parameters and convert to DH", |
178 | .type = OPTION_FLAG, | 178 | .type = OPTION_FLAG, |
179 | .opt.flag = &dhparam_config.dsaparam, | 179 | .opt.flag = &cfg.dsaparam, |
180 | }, | 180 | }, |
181 | { | 181 | { |
182 | .name = "in", | 182 | .name = "in", |
183 | .argname = "file", | 183 | .argname = "file", |
184 | .desc = "Input file (default stdin)", | 184 | .desc = "Input file (default stdin)", |
185 | .type = OPTION_ARG, | 185 | .type = OPTION_ARG, |
186 | .opt.arg = &dhparam_config.infile, | 186 | .opt.arg = &cfg.infile, |
187 | }, | 187 | }, |
188 | { | 188 | { |
189 | .name = "inform", | 189 | .name = "inform", |
190 | .argname = "format", | 190 | .argname = "format", |
191 | .desc = "Input format (DER or PEM (default))", | 191 | .desc = "Input format (DER or PEM (default))", |
192 | .type = OPTION_ARG_FORMAT, | 192 | .type = OPTION_ARG_FORMAT, |
193 | .opt.value = &dhparam_config.informat, | 193 | .opt.value = &cfg.informat, |
194 | }, | 194 | }, |
195 | { | 195 | { |
196 | .name = "noout", | 196 | .name = "noout", |
197 | .desc = "Do not output encoded version of DH parameters", | 197 | .desc = "Do not output encoded version of DH parameters", |
198 | .type = OPTION_FLAG, | 198 | .type = OPTION_FLAG, |
199 | .opt.flag = &dhparam_config.noout, | 199 | .opt.flag = &cfg.noout, |
200 | }, | 200 | }, |
201 | { | 201 | { |
202 | .name = "out", | 202 | .name = "out", |
203 | .argname = "file", | 203 | .argname = "file", |
204 | .desc = "Output file (default stdout)", | 204 | .desc = "Output file (default stdout)", |
205 | .type = OPTION_ARG, | 205 | .type = OPTION_ARG, |
206 | .opt.arg = &dhparam_config.outfile, | 206 | .opt.arg = &cfg.outfile, |
207 | }, | 207 | }, |
208 | { | 208 | { |
209 | .name = "outform", | 209 | .name = "outform", |
210 | .argname = "format", | 210 | .argname = "format", |
211 | .desc = "Output format (DER or PEM (default))", | 211 | .desc = "Output format (DER or PEM (default))", |
212 | .type = OPTION_ARG_FORMAT, | 212 | .type = OPTION_ARG_FORMAT, |
213 | .opt.value = &dhparam_config.outformat, | 213 | .opt.value = &cfg.outformat, |
214 | }, | 214 | }, |
215 | { | 215 | { |
216 | .name = "text", | 216 | .name = "text", |
217 | .desc = "Print DH parameters in plain text", | 217 | .desc = "Print DH parameters in plain text", |
218 | .type = OPTION_FLAG, | 218 | .type = OPTION_FLAG, |
219 | .opt.flag = &dhparam_config.text, | 219 | .opt.flag = &cfg.text, |
220 | }, | 220 | }, |
221 | { NULL }, | 221 | { NULL }, |
222 | }; | 222 | }; |
@@ -249,10 +249,10 @@ dhparam_main(int argc, char **argv) | |||
249 | exit(1); | 249 | exit(1); |
250 | } | 250 | } |
251 | 251 | ||
252 | memset(&dhparam_config, 0, sizeof(dhparam_config)); | 252 | memset(&cfg, 0, sizeof(cfg)); |
253 | 253 | ||
254 | dhparam_config.informat = FORMAT_PEM; | 254 | cfg.informat = FORMAT_PEM; |
255 | dhparam_config.outformat = FORMAT_PEM; | 255 | cfg.outformat = FORMAT_PEM; |
256 | 256 | ||
257 | if (options_parse(argc, argv, dhparam_options, &num_bits, NULL) != 0) { | 257 | if (options_parse(argc, argv, dhparam_options, &num_bits, NULL) != 0) { |
258 | dhparam_usage(); | 258 | dhparam_usage(); |
@@ -267,18 +267,18 @@ dhparam_main(int argc, char **argv) | |||
267 | } | 267 | } |
268 | } | 268 | } |
269 | 269 | ||
270 | if (dhparam_config.g && !num) | 270 | if (cfg.g && !num) |
271 | num = DEFBITS; | 271 | num = DEFBITS; |
272 | 272 | ||
273 | if (dhparam_config.dsaparam) { | 273 | if (cfg.dsaparam) { |
274 | if (dhparam_config.g) { | 274 | if (cfg.g) { |
275 | BIO_printf(bio_err, "generator may not be chosen for DSA parameters\n"); | 275 | BIO_printf(bio_err, "generator may not be chosen for DSA parameters\n"); |
276 | goto end; | 276 | goto end; |
277 | } | 277 | } |
278 | } else { | 278 | } else { |
279 | /* DH parameters */ | 279 | /* DH parameters */ |
280 | if (num && !dhparam_config.g) | 280 | if (num && !cfg.g) |
281 | dhparam_config.g = 2; | 281 | cfg.g = 2; |
282 | } | 282 | } |
283 | 283 | ||
284 | if (num) { | 284 | if (num) { |
@@ -289,7 +289,7 @@ dhparam_main(int argc, char **argv) | |||
289 | } | 289 | } |
290 | 290 | ||
291 | BN_GENCB_set(cb, dh_cb, bio_err); | 291 | BN_GENCB_set(cb, dh_cb, bio_err); |
292 | if (dhparam_config.dsaparam) { | 292 | if (cfg.dsaparam) { |
293 | DSA *dsa = DSA_new(); | 293 | DSA *dsa = DSA_new(); |
294 | 294 | ||
295 | BIO_printf(bio_err, "Generating DSA parameters, %d bit long prime\n", num); | 295 | BIO_printf(bio_err, "Generating DSA parameters, %d bit long prime\n", num); |
@@ -307,9 +307,9 @@ dhparam_main(int argc, char **argv) | |||
307 | } | 307 | } |
308 | } else { | 308 | } else { |
309 | dh = DH_new(); | 309 | dh = DH_new(); |
310 | BIO_printf(bio_err, "Generating DH parameters, %d bit long safe prime, generator %d\n", num, dhparam_config.g); | 310 | BIO_printf(bio_err, "Generating DH parameters, %d bit long safe prime, generator %d\n", num, cfg.g); |
311 | BIO_printf(bio_err, "This is going to take a long time\n"); | 311 | BIO_printf(bio_err, "This is going to take a long time\n"); |
312 | if (!dh || !DH_generate_parameters_ex(dh, num, dhparam_config.g, cb)) { | 312 | if (!dh || !DH_generate_parameters_ex(dh, num, cfg.g, cb)) { |
313 | ERR_print_errors(bio_err); | 313 | ERR_print_errors(bio_err); |
314 | goto end; | 314 | goto end; |
315 | } | 315 | } |
@@ -321,24 +321,24 @@ dhparam_main(int argc, char **argv) | |||
321 | ERR_print_errors(bio_err); | 321 | ERR_print_errors(bio_err); |
322 | goto end; | 322 | goto end; |
323 | } | 323 | } |
324 | if (dhparam_config.infile == NULL) | 324 | if (cfg.infile == NULL) |
325 | BIO_set_fp(in, stdin, BIO_NOCLOSE); | 325 | BIO_set_fp(in, stdin, BIO_NOCLOSE); |
326 | else { | 326 | else { |
327 | if (BIO_read_filename(in, dhparam_config.infile) <= 0) { | 327 | if (BIO_read_filename(in, cfg.infile) <= 0) { |
328 | perror(dhparam_config.infile); | 328 | perror(cfg.infile); |
329 | goto end; | 329 | goto end; |
330 | } | 330 | } |
331 | } | 331 | } |
332 | 332 | ||
333 | if (dhparam_config.informat != FORMAT_ASN1 && | 333 | if (cfg.informat != FORMAT_ASN1 && |
334 | dhparam_config.informat != FORMAT_PEM) { | 334 | cfg.informat != FORMAT_PEM) { |
335 | BIO_printf(bio_err, "bad input format specified\n"); | 335 | BIO_printf(bio_err, "bad input format specified\n"); |
336 | goto end; | 336 | goto end; |
337 | } | 337 | } |
338 | if (dhparam_config.dsaparam) { | 338 | if (cfg.dsaparam) { |
339 | DSA *dsa; | 339 | DSA *dsa; |
340 | 340 | ||
341 | if (dhparam_config.informat == FORMAT_ASN1) | 341 | if (cfg.informat == FORMAT_ASN1) |
342 | dsa = d2i_DSAparams_bio(in, NULL); | 342 | dsa = d2i_DSAparams_bio(in, NULL); |
343 | else /* informat == FORMAT_PEM */ | 343 | else /* informat == FORMAT_PEM */ |
344 | dsa = PEM_read_bio_DSAparams(in, NULL, NULL, NULL); | 344 | dsa = PEM_read_bio_DSAparams(in, NULL, NULL, NULL); |
@@ -356,7 +356,7 @@ dhparam_main(int argc, char **argv) | |||
356 | } | 356 | } |
357 | } else | 357 | } else |
358 | { | 358 | { |
359 | if (dhparam_config.informat == FORMAT_ASN1) | 359 | if (cfg.informat == FORMAT_ASN1) |
360 | dh = d2i_DHparams_bio(in, NULL); | 360 | dh = d2i_DHparams_bio(in, NULL); |
361 | else /* informat == FORMAT_PEM */ | 361 | else /* informat == FORMAT_PEM */ |
362 | dh = PEM_read_bio_DHparams(in, NULL, NULL, NULL); | 362 | dh = PEM_read_bio_DHparams(in, NULL, NULL, NULL); |
@@ -376,20 +376,20 @@ dhparam_main(int argc, char **argv) | |||
376 | ERR_print_errors(bio_err); | 376 | ERR_print_errors(bio_err); |
377 | goto end; | 377 | goto end; |
378 | } | 378 | } |
379 | if (dhparam_config.outfile == NULL) { | 379 | if (cfg.outfile == NULL) { |
380 | BIO_set_fp(out, stdout, BIO_NOCLOSE); | 380 | BIO_set_fp(out, stdout, BIO_NOCLOSE); |
381 | } else { | 381 | } else { |
382 | if (BIO_write_filename(out, dhparam_config.outfile) <= 0) { | 382 | if (BIO_write_filename(out, cfg.outfile) <= 0) { |
383 | perror(dhparam_config.outfile); | 383 | perror(cfg.outfile); |
384 | goto end; | 384 | goto end; |
385 | } | 385 | } |
386 | } | 386 | } |
387 | 387 | ||
388 | 388 | ||
389 | if (dhparam_config.text) { | 389 | if (cfg.text) { |
390 | DHparams_print(out, dh); | 390 | DHparams_print(out, dh); |
391 | } | 391 | } |
392 | if (dhparam_config.check) { | 392 | if (cfg.check) { |
393 | if (!DH_check(dh, &i)) { | 393 | if (!DH_check(dh, &i)) { |
394 | ERR_print_errors(bio_err); | 394 | ERR_print_errors(bio_err); |
395 | goto end; | 395 | goto end; |
@@ -405,7 +405,7 @@ dhparam_main(int argc, char **argv) | |||
405 | if (i == 0) | 405 | if (i == 0) |
406 | printf("DH parameters appear to be ok.\n"); | 406 | printf("DH parameters appear to be ok.\n"); |
407 | } | 407 | } |
408 | if (dhparam_config.C) { | 408 | if (cfg.C) { |
409 | unsigned char *data; | 409 | unsigned char *data; |
410 | int len, l, bits; | 410 | int len, l, bits; |
411 | 411 | ||
@@ -454,10 +454,10 @@ dhparam_main(int argc, char **argv) | |||
454 | printf("\treturn(dh);\n\t}\n"); | 454 | printf("\treturn(dh);\n\t}\n"); |
455 | free(data); | 455 | free(data); |
456 | } | 456 | } |
457 | if (!dhparam_config.noout) { | 457 | if (!cfg.noout) { |
458 | if (dhparam_config.outformat == FORMAT_ASN1) | 458 | if (cfg.outformat == FORMAT_ASN1) |
459 | i = i2d_DHparams_bio(out, dh); | 459 | i = i2d_DHparams_bio(out, dh); |
460 | else if (dhparam_config.outformat == FORMAT_PEM) | 460 | else if (cfg.outformat == FORMAT_PEM) |
461 | i = PEM_write_bio_DHparams(out, dh); | 461 | i = PEM_write_bio_DHparams(out, dh); |
462 | else { | 462 | else { |
463 | BIO_printf(bio_err, "bad output format specified for outfile\n"); | 463 | BIO_printf(bio_err, "bad output format specified for outfile\n"); |
diff --git a/src/usr.bin/openssl/dsa.c b/src/usr.bin/openssl/dsa.c index 0a3772dff7..f1de78cf4d 100644 --- a/src/usr.bin/openssl/dsa.c +++ b/src/usr.bin/openssl/dsa.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: dsa.c,v 1.17 2022/11/11 17:07:38 joshua Exp $ */ | 1 | /* $OpenBSD: dsa.c,v 1.18 2023/03/06 14:32:06 tb 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 | * |
@@ -87,7 +87,7 @@ static struct { | |||
87 | int pubout; | 87 | int pubout; |
88 | int pvk_encr; | 88 | int pvk_encr; |
89 | int text; | 89 | int text; |
90 | } dsa_config; | 90 | } cfg; |
91 | 91 | ||
92 | static int | 92 | static int |
93 | dsa_opt_enc(int argc, char **argv, int *argsused) | 93 | dsa_opt_enc(int argc, char **argv, int *argsused) |
@@ -97,7 +97,7 @@ dsa_opt_enc(int argc, char **argv, int *argsused) | |||
97 | if (*name++ != '-') | 97 | if (*name++ != '-') |
98 | return (1); | 98 | return (1); |
99 | 99 | ||
100 | if ((dsa_config.enc = EVP_get_cipherbyname(name)) != NULL) { | 100 | if ((cfg.enc = EVP_get_cipherbyname(name)) != NULL) { |
101 | *argsused = 1; | 101 | *argsused = 1; |
102 | return (0); | 102 | return (0); |
103 | } | 103 | } |
@@ -111,7 +111,7 @@ static const struct option dsa_options[] = { | |||
111 | .argname = "file", | 111 | .argname = "file", |
112 | .desc = "Input file (default stdin)", | 112 | .desc = "Input file (default stdin)", |
113 | .type = OPTION_ARG, | 113 | .type = OPTION_ARG, |
114 | .opt.arg = &dsa_config.infile, | 114 | .opt.arg = &cfg.infile, |
115 | }, | 115 | }, |
116 | { | 116 | { |
117 | .name = "inform", | 117 | .name = "inform", |
@@ -119,87 +119,87 @@ static const struct option dsa_options[] = { | |||
119 | .desc = "Input format (PEM (default) or any other supported" | 119 | .desc = "Input format (PEM (default) or any other supported" |
120 | " format)", | 120 | " format)", |
121 | .type = OPTION_ARG_FORMAT, | 121 | .type = OPTION_ARG_FORMAT, |
122 | .opt.value = &dsa_config.informat, | 122 | .opt.value = &cfg.informat, |
123 | }, | 123 | }, |
124 | { | 124 | { |
125 | .name = "modulus", | 125 | .name = "modulus", |
126 | .desc = "Print the DSA public value", | 126 | .desc = "Print the DSA public value", |
127 | .type = OPTION_FLAG, | 127 | .type = OPTION_FLAG, |
128 | .opt.flag = &dsa_config.modulus, | 128 | .opt.flag = &cfg.modulus, |
129 | }, | 129 | }, |
130 | { | 130 | { |
131 | .name = "noout", | 131 | .name = "noout", |
132 | .desc = "No output", | 132 | .desc = "No output", |
133 | .type = OPTION_FLAG, | 133 | .type = OPTION_FLAG, |
134 | .opt.flag = &dsa_config.noout, | 134 | .opt.flag = &cfg.noout, |
135 | }, | 135 | }, |
136 | { | 136 | { |
137 | .name = "out", | 137 | .name = "out", |
138 | .argname = "file", | 138 | .argname = "file", |
139 | .desc = "Output file (default stdout)", | 139 | .desc = "Output file (default stdout)", |
140 | .type = OPTION_ARG, | 140 | .type = OPTION_ARG, |
141 | .opt.arg = &dsa_config.outfile, | 141 | .opt.arg = &cfg.outfile, |
142 | }, | 142 | }, |
143 | { | 143 | { |
144 | .name = "outform", | 144 | .name = "outform", |
145 | .argname = "format", | 145 | .argname = "format", |
146 | .desc = "Output format (DER, MSBLOB, PEM (default) or PVK)", | 146 | .desc = "Output format (DER, MSBLOB, PEM (default) or PVK)", |
147 | .type = OPTION_ARG_FORMAT, | 147 | .type = OPTION_ARG_FORMAT, |
148 | .opt.value = &dsa_config.outformat, | 148 | .opt.value = &cfg.outformat, |
149 | }, | 149 | }, |
150 | { | 150 | { |
151 | .name = "passin", | 151 | .name = "passin", |
152 | .argname = "source", | 152 | .argname = "source", |
153 | .desc = "Input file passphrase source", | 153 | .desc = "Input file passphrase source", |
154 | .type = OPTION_ARG, | 154 | .type = OPTION_ARG, |
155 | .opt.arg = &dsa_config.passargin, | 155 | .opt.arg = &cfg.passargin, |
156 | }, | 156 | }, |
157 | { | 157 | { |
158 | .name = "passout", | 158 | .name = "passout", |
159 | .argname = "source", | 159 | .argname = "source", |
160 | .desc = "Output file passphrase source", | 160 | .desc = "Output file passphrase source", |
161 | .type = OPTION_ARG, | 161 | .type = OPTION_ARG, |
162 | .opt.arg = &dsa_config.passargout, | 162 | .opt.arg = &cfg.passargout, |
163 | }, | 163 | }, |
164 | { | 164 | { |
165 | .name = "pubin", | 165 | .name = "pubin", |
166 | .desc = "Read a public key from the input file instead of" | 166 | .desc = "Read a public key from the input file instead of" |
167 | " private key", | 167 | " private key", |
168 | .type = OPTION_FLAG, | 168 | .type = OPTION_FLAG, |
169 | .opt.flag = &dsa_config.pubin, | 169 | .opt.flag = &cfg.pubin, |
170 | }, | 170 | }, |
171 | { | 171 | { |
172 | .name = "pubout", | 172 | .name = "pubout", |
173 | .desc = "Output a public key instead of private key", | 173 | .desc = "Output a public key instead of private key", |
174 | .type = OPTION_FLAG, | 174 | .type = OPTION_FLAG, |
175 | .opt.flag = &dsa_config.pubout, | 175 | .opt.flag = &cfg.pubout, |
176 | }, | 176 | }, |
177 | { | 177 | { |
178 | .name = "pvk-none", | 178 | .name = "pvk-none", |
179 | .desc = "PVK encryption level", | 179 | .desc = "PVK encryption level", |
180 | .type = OPTION_VALUE, | 180 | .type = OPTION_VALUE, |
181 | .value = 0, | 181 | .value = 0, |
182 | .opt.value = &dsa_config.pvk_encr, | 182 | .opt.value = &cfg.pvk_encr, |
183 | }, | 183 | }, |
184 | { | 184 | { |
185 | .name = "pvk-strong", | 185 | .name = "pvk-strong", |
186 | .desc = "PVK encryption level (default)", | 186 | .desc = "PVK encryption level (default)", |
187 | .type = OPTION_VALUE, | 187 | .type = OPTION_VALUE, |
188 | .value = 2, | 188 | .value = 2, |
189 | .opt.value = &dsa_config.pvk_encr, | 189 | .opt.value = &cfg.pvk_encr, |
190 | }, | 190 | }, |
191 | { | 191 | { |
192 | .name = "pvk-weak", | 192 | .name = "pvk-weak", |
193 | .desc = "PVK encryption level", | 193 | .desc = "PVK encryption level", |
194 | .type = OPTION_VALUE, | 194 | .type = OPTION_VALUE, |
195 | .value = 1, | 195 | .value = 1, |
196 | .opt.value = &dsa_config.pvk_encr, | 196 | .opt.value = &cfg.pvk_encr, |
197 | }, | 197 | }, |
198 | { | 198 | { |
199 | .name = "text", | 199 | .name = "text", |
200 | .desc = "Print the key in text form", | 200 | .desc = "Print the key in text form", |
201 | .type = OPTION_FLAG, | 201 | .type = OPTION_FLAG, |
202 | .opt.flag = &dsa_config.text, | 202 | .opt.flag = &cfg.text, |
203 | }, | 203 | }, |
204 | { | 204 | { |
205 | .name = NULL, | 205 | .name = NULL, |
@@ -241,18 +241,18 @@ dsa_main(int argc, char **argv) | |||
241 | exit(1); | 241 | exit(1); |
242 | } | 242 | } |
243 | 243 | ||
244 | memset(&dsa_config, 0, sizeof(dsa_config)); | 244 | memset(&cfg, 0, sizeof(cfg)); |
245 | 245 | ||
246 | dsa_config.pvk_encr = 2; | 246 | cfg.pvk_encr = 2; |
247 | dsa_config.informat = FORMAT_PEM; | 247 | cfg.informat = FORMAT_PEM; |
248 | dsa_config.outformat = FORMAT_PEM; | 248 | cfg.outformat = FORMAT_PEM; |
249 | 249 | ||
250 | if (options_parse(argc, argv, dsa_options, NULL, NULL) != 0) { | 250 | if (options_parse(argc, argv, dsa_options, NULL, NULL) != 0) { |
251 | dsa_usage(); | 251 | dsa_usage(); |
252 | goto end; | 252 | goto end; |
253 | } | 253 | } |
254 | 254 | ||
255 | if (!app_passwd(bio_err, dsa_config.passargin, dsa_config.passargout, | 255 | if (!app_passwd(bio_err, cfg.passargin, cfg.passargout, |
256 | &passin, &passout)) { | 256 | &passin, &passout)) { |
257 | BIO_printf(bio_err, "Error getting passwords\n"); | 257 | BIO_printf(bio_err, "Error getting passwords\n"); |
258 | goto end; | 258 | goto end; |
@@ -264,11 +264,11 @@ dsa_main(int argc, char **argv) | |||
264 | ERR_print_errors(bio_err); | 264 | ERR_print_errors(bio_err); |
265 | goto end; | 265 | goto end; |
266 | } | 266 | } |
267 | if (dsa_config.infile == NULL) | 267 | if (cfg.infile == NULL) |
268 | BIO_set_fp(in, stdin, BIO_NOCLOSE); | 268 | BIO_set_fp(in, stdin, BIO_NOCLOSE); |
269 | else { | 269 | else { |
270 | if (BIO_read_filename(in, dsa_config.infile) <= 0) { | 270 | if (BIO_read_filename(in, cfg.infile) <= 0) { |
271 | perror(dsa_config.infile); | 271 | perror(cfg.infile); |
272 | goto end; | 272 | goto end; |
273 | } | 273 | } |
274 | } | 274 | } |
@@ -278,12 +278,12 @@ dsa_main(int argc, char **argv) | |||
278 | { | 278 | { |
279 | EVP_PKEY *pkey; | 279 | EVP_PKEY *pkey; |
280 | 280 | ||
281 | if (dsa_config.pubin) | 281 | if (cfg.pubin) |
282 | pkey = load_pubkey(bio_err, dsa_config.infile, | 282 | pkey = load_pubkey(bio_err, cfg.infile, |
283 | dsa_config.informat, 1, passin, "Public Key"); | 283 | cfg.informat, 1, passin, "Public Key"); |
284 | else | 284 | else |
285 | pkey = load_key(bio_err, dsa_config.infile, | 285 | pkey = load_key(bio_err, cfg.infile, |
286 | dsa_config.informat, 1, passin, "Private Key"); | 286 | cfg.informat, 1, passin, "Private Key"); |
287 | 287 | ||
288 | if (pkey) { | 288 | if (pkey) { |
289 | dsa = EVP_PKEY_get1_DSA(pkey); | 289 | dsa = EVP_PKEY_get1_DSA(pkey); |
@@ -295,51 +295,51 @@ dsa_main(int argc, char **argv) | |||
295 | ERR_print_errors(bio_err); | 295 | ERR_print_errors(bio_err); |
296 | goto end; | 296 | goto end; |
297 | } | 297 | } |
298 | if (dsa_config.outfile == NULL) { | 298 | if (cfg.outfile == NULL) { |
299 | BIO_set_fp(out, stdout, BIO_NOCLOSE); | 299 | BIO_set_fp(out, stdout, BIO_NOCLOSE); |
300 | } else { | 300 | } else { |
301 | if (BIO_write_filename(out, dsa_config.outfile) <= 0) { | 301 | if (BIO_write_filename(out, cfg.outfile) <= 0) { |
302 | perror(dsa_config.outfile); | 302 | perror(cfg.outfile); |
303 | goto end; | 303 | goto end; |
304 | } | 304 | } |
305 | } | 305 | } |
306 | 306 | ||
307 | if (dsa_config.text) { | 307 | if (cfg.text) { |
308 | if (!DSA_print(out, dsa, 0)) { | 308 | if (!DSA_print(out, dsa, 0)) { |
309 | perror(dsa_config.outfile); | 309 | perror(cfg.outfile); |
310 | ERR_print_errors(bio_err); | 310 | ERR_print_errors(bio_err); |
311 | goto end; | 311 | goto end; |
312 | } | 312 | } |
313 | } | 313 | } |
314 | if (dsa_config.modulus) { | 314 | if (cfg.modulus) { |
315 | fprintf(stdout, "Public Key="); | 315 | fprintf(stdout, "Public Key="); |
316 | BN_print(out, DSA_get0_pub_key(dsa)); | 316 | BN_print(out, DSA_get0_pub_key(dsa)); |
317 | fprintf(stdout, "\n"); | 317 | fprintf(stdout, "\n"); |
318 | } | 318 | } |
319 | if (dsa_config.noout) | 319 | if (cfg.noout) |
320 | goto end; | 320 | goto end; |
321 | BIO_printf(bio_err, "writing DSA key\n"); | 321 | BIO_printf(bio_err, "writing DSA key\n"); |
322 | if (dsa_config.outformat == FORMAT_ASN1) { | 322 | if (cfg.outformat == FORMAT_ASN1) { |
323 | if (dsa_config.pubin || dsa_config.pubout) | 323 | if (cfg.pubin || cfg.pubout) |
324 | i = i2d_DSA_PUBKEY_bio(out, dsa); | 324 | i = i2d_DSA_PUBKEY_bio(out, dsa); |
325 | else | 325 | else |
326 | i = i2d_DSAPrivateKey_bio(out, dsa); | 326 | i = i2d_DSAPrivateKey_bio(out, dsa); |
327 | } else if (dsa_config.outformat == FORMAT_PEM) { | 327 | } else if (cfg.outformat == FORMAT_PEM) { |
328 | if (dsa_config.pubin || dsa_config.pubout) | 328 | if (cfg.pubin || cfg.pubout) |
329 | i = PEM_write_bio_DSA_PUBKEY(out, dsa); | 329 | i = PEM_write_bio_DSA_PUBKEY(out, dsa); |
330 | else | 330 | else |
331 | i = PEM_write_bio_DSAPrivateKey(out, dsa, dsa_config.enc, | 331 | i = PEM_write_bio_DSAPrivateKey(out, dsa, cfg.enc, |
332 | NULL, 0, NULL, passout); | 332 | NULL, 0, NULL, passout); |
333 | #if !defined(OPENSSL_NO_RSA) && !defined(OPENSSL_NO_RC4) | 333 | #if !defined(OPENSSL_NO_RSA) && !defined(OPENSSL_NO_RC4) |
334 | } else if (dsa_config.outformat == FORMAT_MSBLOB || | 334 | } else if (cfg.outformat == FORMAT_MSBLOB || |
335 | dsa_config.outformat == FORMAT_PVK) { | 335 | cfg.outformat == FORMAT_PVK) { |
336 | EVP_PKEY *pk; | 336 | EVP_PKEY *pk; |
337 | pk = EVP_PKEY_new(); | 337 | pk = EVP_PKEY_new(); |
338 | EVP_PKEY_set1_DSA(pk, dsa); | 338 | EVP_PKEY_set1_DSA(pk, dsa); |
339 | if (dsa_config.outformat == FORMAT_PVK) | 339 | if (cfg.outformat == FORMAT_PVK) |
340 | i = i2b_PVK_bio(out, pk, dsa_config.pvk_encr, 0, | 340 | i = i2b_PVK_bio(out, pk, cfg.pvk_encr, 0, |
341 | passout); | 341 | passout); |
342 | else if (dsa_config.pubin || dsa_config.pubout) | 342 | else if (cfg.pubin || cfg.pubout) |
343 | i = i2b_PublicKey_bio(out, pk); | 343 | i = i2b_PublicKey_bio(out, pk); |
344 | else | 344 | else |
345 | i = i2b_PrivateKey_bio(out, pk); | 345 | i = i2b_PrivateKey_bio(out, pk); |
diff --git a/src/usr.bin/openssl/dsaparam.c b/src/usr.bin/openssl/dsaparam.c index 892ae72ba1..bc9ccd14d8 100644 --- a/src/usr.bin/openssl/dsaparam.c +++ b/src/usr.bin/openssl/dsaparam.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: dsaparam.c,v 1.14 2022/11/11 17:07:38 joshua Exp $ */ | 1 | /* $OpenBSD: dsaparam.c,v 1.15 2023/03/06 14:32:06 tb 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 | * |
@@ -88,60 +88,60 @@ static struct { | |||
88 | char *outfile; | 88 | char *outfile; |
89 | int outformat; | 89 | int outformat; |
90 | int text; | 90 | int text; |
91 | } dsaparam_config; | 91 | } cfg; |
92 | 92 | ||
93 | static const struct option dsaparam_options[] = { | 93 | static const struct option dsaparam_options[] = { |
94 | { | 94 | { |
95 | .name = "C", | 95 | .name = "C", |
96 | .desc = "Convert DSA parameters into C code", | 96 | .desc = "Convert DSA parameters into C code", |
97 | .type = OPTION_FLAG, | 97 | .type = OPTION_FLAG, |
98 | .opt.flag = &dsaparam_config.C, | 98 | .opt.flag = &cfg.C, |
99 | }, | 99 | }, |
100 | { | 100 | { |
101 | .name = "genkey", | 101 | .name = "genkey", |
102 | .desc = "Generate a DSA key", | 102 | .desc = "Generate a DSA key", |
103 | .type = OPTION_FLAG, | 103 | .type = OPTION_FLAG, |
104 | .opt.flag = &dsaparam_config.genkey, | 104 | .opt.flag = &cfg.genkey, |
105 | }, | 105 | }, |
106 | { | 106 | { |
107 | .name = "in", | 107 | .name = "in", |
108 | .argname = "file", | 108 | .argname = "file", |
109 | .desc = "Input file (default stdin)", | 109 | .desc = "Input file (default stdin)", |
110 | .type = OPTION_ARG, | 110 | .type = OPTION_ARG, |
111 | .opt.arg = &dsaparam_config.infile, | 111 | .opt.arg = &cfg.infile, |
112 | }, | 112 | }, |
113 | { | 113 | { |
114 | .name = "inform", | 114 | .name = "inform", |
115 | .argname = "format", | 115 | .argname = "format", |
116 | .desc = "Input format (DER or PEM (default))", | 116 | .desc = "Input format (DER or PEM (default))", |
117 | .type = OPTION_ARG_FORMAT, | 117 | .type = OPTION_ARG_FORMAT, |
118 | .opt.value = &dsaparam_config.informat, | 118 | .opt.value = &cfg.informat, |
119 | }, | 119 | }, |
120 | { | 120 | { |
121 | .name = "noout", | 121 | .name = "noout", |
122 | .desc = "No output", | 122 | .desc = "No output", |
123 | .type = OPTION_FLAG, | 123 | .type = OPTION_FLAG, |
124 | .opt.flag = &dsaparam_config.noout, | 124 | .opt.flag = &cfg.noout, |
125 | }, | 125 | }, |
126 | { | 126 | { |
127 | .name = "out", | 127 | .name = "out", |
128 | .argname = "file", | 128 | .argname = "file", |
129 | .desc = "Output file (default stdout)", | 129 | .desc = "Output file (default stdout)", |
130 | .type = OPTION_ARG, | 130 | .type = OPTION_ARG, |
131 | .opt.arg = &dsaparam_config.outfile, | 131 | .opt.arg = &cfg.outfile, |
132 | }, | 132 | }, |
133 | { | 133 | { |
134 | .name = "outform", | 134 | .name = "outform", |
135 | .argname = "format", | 135 | .argname = "format", |
136 | .desc = "Output format (DER or PEM (default))", | 136 | .desc = "Output format (DER or PEM (default))", |
137 | .type = OPTION_ARG_FORMAT, | 137 | .type = OPTION_ARG_FORMAT, |
138 | .opt.value = &dsaparam_config.outformat, | 138 | .opt.value = &cfg.outformat, |
139 | }, | 139 | }, |
140 | { | 140 | { |
141 | .name = "text", | 141 | .name = "text", |
142 | .desc = "Print as text", | 142 | .desc = "Print as text", |
143 | .type = OPTION_FLAG, | 143 | .type = OPTION_FLAG, |
144 | .opt.flag = &dsaparam_config.text, | 144 | .opt.flag = &cfg.text, |
145 | }, | 145 | }, |
146 | { NULL }, | 146 | { NULL }, |
147 | }; | 147 | }; |
@@ -174,10 +174,10 @@ dsaparam_main(int argc, char **argv) | |||
174 | exit(1); | 174 | exit(1); |
175 | } | 175 | } |
176 | 176 | ||
177 | memset(&dsaparam_config, 0, sizeof(dsaparam_config)); | 177 | memset(&cfg, 0, sizeof(cfg)); |
178 | 178 | ||
179 | dsaparam_config.informat = FORMAT_PEM; | 179 | cfg.informat = FORMAT_PEM; |
180 | dsaparam_config.outformat = FORMAT_PEM; | 180 | cfg.outformat = FORMAT_PEM; |
181 | 181 | ||
182 | if (options_parse(argc, argv, dsaparam_options, &strbits, NULL) != 0) { | 182 | if (options_parse(argc, argv, dsaparam_options, &strbits, NULL) != 0) { |
183 | dsaparam_usage(); | 183 | dsaparam_usage(); |
@@ -199,19 +199,19 @@ dsaparam_main(int argc, char **argv) | |||
199 | ERR_print_errors(bio_err); | 199 | ERR_print_errors(bio_err); |
200 | goto end; | 200 | goto end; |
201 | } | 201 | } |
202 | if (dsaparam_config.infile == NULL) | 202 | if (cfg.infile == NULL) |
203 | BIO_set_fp(in, stdin, BIO_NOCLOSE); | 203 | BIO_set_fp(in, stdin, BIO_NOCLOSE); |
204 | else { | 204 | else { |
205 | if (BIO_read_filename(in, dsaparam_config.infile) <= 0) { | 205 | if (BIO_read_filename(in, cfg.infile) <= 0) { |
206 | perror(dsaparam_config.infile); | 206 | perror(cfg.infile); |
207 | goto end; | 207 | goto end; |
208 | } | 208 | } |
209 | } | 209 | } |
210 | if (dsaparam_config.outfile == NULL) { | 210 | if (cfg.outfile == NULL) { |
211 | BIO_set_fp(out, stdout, BIO_NOCLOSE); | 211 | BIO_set_fp(out, stdout, BIO_NOCLOSE); |
212 | } else { | 212 | } else { |
213 | if (BIO_write_filename(out, dsaparam_config.outfile) <= 0) { | 213 | if (BIO_write_filename(out, cfg.outfile) <= 0) { |
214 | perror(dsaparam_config.outfile); | 214 | perror(cfg.outfile); |
215 | goto end; | 215 | goto end; |
216 | } | 216 | } |
217 | } | 217 | } |
@@ -237,9 +237,9 @@ dsaparam_main(int argc, char **argv) | |||
237 | BIO_printf(bio_err, "Error, DSA key generation failed\n"); | 237 | BIO_printf(bio_err, "Error, DSA key generation failed\n"); |
238 | goto end; | 238 | goto end; |
239 | } | 239 | } |
240 | } else if (dsaparam_config.informat == FORMAT_ASN1) | 240 | } else if (cfg.informat == FORMAT_ASN1) |
241 | dsa = d2i_DSAparams_bio(in, NULL); | 241 | dsa = d2i_DSAparams_bio(in, NULL); |
242 | else if (dsaparam_config.informat == FORMAT_PEM) | 242 | else if (cfg.informat == FORMAT_PEM) |
243 | dsa = PEM_read_bio_DSAparams(in, NULL, NULL, NULL); | 243 | dsa = PEM_read_bio_DSAparams(in, NULL, NULL, NULL); |
244 | else { | 244 | else { |
245 | BIO_printf(bio_err, "bad input format specified\n"); | 245 | BIO_printf(bio_err, "bad input format specified\n"); |
@@ -250,10 +250,10 @@ dsaparam_main(int argc, char **argv) | |||
250 | ERR_print_errors(bio_err); | 250 | ERR_print_errors(bio_err); |
251 | goto end; | 251 | goto end; |
252 | } | 252 | } |
253 | if (dsaparam_config.text) { | 253 | if (cfg.text) { |
254 | DSAparams_print(out, dsa); | 254 | DSAparams_print(out, dsa); |
255 | } | 255 | } |
256 | if (dsaparam_config.C) { | 256 | if (cfg.C) { |
257 | unsigned char *data; | 257 | unsigned char *data; |
258 | int l, len, bits_p; | 258 | int l, len, bits_p; |
259 | 259 | ||
@@ -307,10 +307,10 @@ dsaparam_main(int argc, char **argv) | |||
307 | printf("\tDSA_set0_pqg(dsa, p, q, g);\n"); | 307 | printf("\tDSA_set0_pqg(dsa, p, q, g);\n"); |
308 | printf("\treturn(dsa);\n\t}\n"); | 308 | printf("\treturn(dsa);\n\t}\n"); |
309 | } | 309 | } |
310 | if (!dsaparam_config.noout) { | 310 | if (!cfg.noout) { |
311 | if (dsaparam_config.outformat == FORMAT_ASN1) | 311 | if (cfg.outformat == FORMAT_ASN1) |
312 | i = i2d_DSAparams_bio(out, dsa); | 312 | i = i2d_DSAparams_bio(out, dsa); |
313 | else if (dsaparam_config.outformat == FORMAT_PEM) | 313 | else if (cfg.outformat == FORMAT_PEM) |
314 | i = PEM_write_bio_DSAparams(out, dsa); | 314 | i = PEM_write_bio_DSAparams(out, dsa); |
315 | else { | 315 | else { |
316 | BIO_printf(bio_err, "bad output format specified for outfile\n"); | 316 | BIO_printf(bio_err, "bad output format specified for outfile\n"); |
@@ -322,7 +322,7 @@ dsaparam_main(int argc, char **argv) | |||
322 | goto end; | 322 | goto end; |
323 | } | 323 | } |
324 | } | 324 | } |
325 | if (dsaparam_config.genkey) { | 325 | if (cfg.genkey) { |
326 | DSA *dsakey; | 326 | DSA *dsakey; |
327 | 327 | ||
328 | if ((dsakey = DSAparams_dup(dsa)) == NULL) | 328 | if ((dsakey = DSAparams_dup(dsa)) == NULL) |
@@ -332,9 +332,9 @@ dsaparam_main(int argc, char **argv) | |||
332 | DSA_free(dsakey); | 332 | DSA_free(dsakey); |
333 | goto end; | 333 | goto end; |
334 | } | 334 | } |
335 | if (dsaparam_config.outformat == FORMAT_ASN1) | 335 | if (cfg.outformat == FORMAT_ASN1) |
336 | i = i2d_DSAPrivateKey_bio(out, dsakey); | 336 | i = i2d_DSAPrivateKey_bio(out, dsakey); |
337 | else if (dsaparam_config.outformat == FORMAT_PEM) | 337 | else if (cfg.outformat == FORMAT_PEM) |
338 | i = PEM_write_bio_DSAPrivateKey(out, dsakey, NULL, NULL, 0, NULL, NULL); | 338 | i = PEM_write_bio_DSAPrivateKey(out, dsakey, NULL, NULL, 0, NULL, NULL); |
339 | else { | 339 | else { |
340 | BIO_printf(bio_err, "bad output format specified for outfile\n"); | 340 | BIO_printf(bio_err, "bad output format specified for outfile\n"); |
diff --git a/src/usr.bin/openssl/ec.c b/src/usr.bin/openssl/ec.c index 3dace88d6f..c6af1263d4 100644 --- a/src/usr.bin/openssl/ec.c +++ b/src/usr.bin/openssl/ec.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ec.c,v 1.15 2022/11/11 17:07:38 joshua Exp $ */ | 1 | /* $OpenBSD: ec.c,v 1.16 2023/03/06 14:32:06 tb Exp $ */ |
2 | /* | 2 | /* |
3 | * Written by Nils Larsch for the OpenSSL project. | 3 | * Written by Nils Larsch for the OpenSSL project. |
4 | */ | 4 | */ |
@@ -88,7 +88,7 @@ static struct { | |||
88 | int pubin; | 88 | int pubin; |
89 | int pubout; | 89 | int pubout; |
90 | int text; | 90 | int text; |
91 | } ec_config; | 91 | } cfg; |
92 | 92 | ||
93 | static int | 93 | static int |
94 | ec_opt_enc(int argc, char **argv, int *argsused) | 94 | ec_opt_enc(int argc, char **argv, int *argsused) |
@@ -98,7 +98,7 @@ ec_opt_enc(int argc, char **argv, int *argsused) | |||
98 | if (*name++ != '-') | 98 | if (*name++ != '-') |
99 | return (1); | 99 | return (1); |
100 | 100 | ||
101 | if ((ec_config.enc = EVP_get_cipherbyname(name)) != NULL) { | 101 | if ((cfg.enc = EVP_get_cipherbyname(name)) != NULL) { |
102 | *argsused = 1; | 102 | *argsused = 1; |
103 | return (0); | 103 | return (0); |
104 | } | 104 | } |
@@ -110,17 +110,17 @@ static int | |||
110 | ec_opt_form(char *arg) | 110 | ec_opt_form(char *arg) |
111 | { | 111 | { |
112 | if (strcmp(arg, "compressed") == 0) | 112 | if (strcmp(arg, "compressed") == 0) |
113 | ec_config.form = POINT_CONVERSION_COMPRESSED; | 113 | cfg.form = POINT_CONVERSION_COMPRESSED; |
114 | else if (strcmp(arg, "uncompressed") == 0) | 114 | else if (strcmp(arg, "uncompressed") == 0) |
115 | ec_config.form = POINT_CONVERSION_UNCOMPRESSED; | 115 | cfg.form = POINT_CONVERSION_UNCOMPRESSED; |
116 | else if (strcmp(arg, "hybrid") == 0) | 116 | else if (strcmp(arg, "hybrid") == 0) |
117 | ec_config.form = POINT_CONVERSION_HYBRID; | 117 | cfg.form = POINT_CONVERSION_HYBRID; |
118 | else { | 118 | else { |
119 | fprintf(stderr, "Invalid point conversion: %s\n", arg); | 119 | fprintf(stderr, "Invalid point conversion: %s\n", arg); |
120 | return (1); | 120 | return (1); |
121 | } | 121 | } |
122 | 122 | ||
123 | ec_config.new_form = 1; | 123 | cfg.new_form = 1; |
124 | return (0); | 124 | return (0); |
125 | } | 125 | } |
126 | 126 | ||
@@ -128,15 +128,15 @@ static int | |||
128 | ec_opt_named(char *arg) | 128 | ec_opt_named(char *arg) |
129 | { | 129 | { |
130 | if (strcmp(arg, "named_curve") == 0) | 130 | if (strcmp(arg, "named_curve") == 0) |
131 | ec_config.asn1_flag = OPENSSL_EC_NAMED_CURVE; | 131 | cfg.asn1_flag = OPENSSL_EC_NAMED_CURVE; |
132 | else if (strcmp(arg, "explicit") == 0) | 132 | else if (strcmp(arg, "explicit") == 0) |
133 | ec_config.asn1_flag = 0; | 133 | cfg.asn1_flag = 0; |
134 | else { | 134 | else { |
135 | fprintf(stderr, "Invalid curve type: %s\n", arg); | 135 | fprintf(stderr, "Invalid curve type: %s\n", arg); |
136 | return (1); | 136 | return (1); |
137 | } | 137 | } |
138 | 138 | ||
139 | ec_config.new_asn1_flag = 1; | 139 | cfg.new_asn1_flag = 1; |
140 | return (0); | 140 | return (0); |
141 | } | 141 | } |
142 | 142 | ||
@@ -154,34 +154,34 @@ static const struct option ec_options[] = { | |||
154 | .argname = "file", | 154 | .argname = "file", |
155 | .desc = "Input file (default stdin)", | 155 | .desc = "Input file (default stdin)", |
156 | .type = OPTION_ARG, | 156 | .type = OPTION_ARG, |
157 | .opt.arg = &ec_config.infile, | 157 | .opt.arg = &cfg.infile, |
158 | }, | 158 | }, |
159 | { | 159 | { |
160 | .name = "inform", | 160 | .name = "inform", |
161 | .argname = "format", | 161 | .argname = "format", |
162 | .desc = "Input format (DER or PEM (default))", | 162 | .desc = "Input format (DER or PEM (default))", |
163 | .type = OPTION_ARG_FORMAT, | 163 | .type = OPTION_ARG_FORMAT, |
164 | .opt.value = &ec_config.informat, | 164 | .opt.value = &cfg.informat, |
165 | }, | 165 | }, |
166 | { | 166 | { |
167 | .name = "noout", | 167 | .name = "noout", |
168 | .desc = "No output", | 168 | .desc = "No output", |
169 | .type = OPTION_FLAG, | 169 | .type = OPTION_FLAG, |
170 | .opt.flag = &ec_config.noout, | 170 | .opt.flag = &cfg.noout, |
171 | }, | 171 | }, |
172 | { | 172 | { |
173 | .name = "out", | 173 | .name = "out", |
174 | .argname = "file", | 174 | .argname = "file", |
175 | .desc = "Output file (default stdout)", | 175 | .desc = "Output file (default stdout)", |
176 | .type = OPTION_ARG, | 176 | .type = OPTION_ARG, |
177 | .opt.arg = &ec_config.outfile, | 177 | .opt.arg = &cfg.outfile, |
178 | }, | 178 | }, |
179 | { | 179 | { |
180 | .name = "outform", | 180 | .name = "outform", |
181 | .argname = "format", | 181 | .argname = "format", |
182 | .desc = "Output format (DER or PEM (default))", | 182 | .desc = "Output format (DER or PEM (default))", |
183 | .type = OPTION_ARG_FORMAT, | 183 | .type = OPTION_ARG_FORMAT, |
184 | .opt.value = &ec_config.outformat, | 184 | .opt.value = &cfg.outformat, |
185 | }, | 185 | }, |
186 | { | 186 | { |
187 | .name = "param_enc", | 187 | .name = "param_enc", |
@@ -195,39 +195,39 @@ static const struct option ec_options[] = { | |||
195 | .name = "param_out", | 195 | .name = "param_out", |
196 | .desc = "Print the elliptic curve parameters", | 196 | .desc = "Print the elliptic curve parameters", |
197 | .type = OPTION_FLAG, | 197 | .type = OPTION_FLAG, |
198 | .opt.flag = &ec_config.param_out, | 198 | .opt.flag = &cfg.param_out, |
199 | }, | 199 | }, |
200 | { | 200 | { |
201 | .name = "passin", | 201 | .name = "passin", |
202 | .argname = "source", | 202 | .argname = "source", |
203 | .desc = "Input file passphrase source", | 203 | .desc = "Input file passphrase source", |
204 | .type = OPTION_ARG, | 204 | .type = OPTION_ARG, |
205 | .opt.arg = &ec_config.passargin, | 205 | .opt.arg = &cfg.passargin, |
206 | }, | 206 | }, |
207 | { | 207 | { |
208 | .name = "passout", | 208 | .name = "passout", |
209 | .argname = "source", | 209 | .argname = "source", |
210 | .desc = "Output file passphrase source", | 210 | .desc = "Output file passphrase source", |
211 | .type = OPTION_ARG, | 211 | .type = OPTION_ARG, |
212 | .opt.arg = &ec_config.passargout, | 212 | .opt.arg = &cfg.passargout, |
213 | }, | 213 | }, |
214 | { | 214 | { |
215 | .name = "pubin", | 215 | .name = "pubin", |
216 | .desc = "Read public key instead of private key from input", | 216 | .desc = "Read public key instead of private key from input", |
217 | .type = OPTION_FLAG, | 217 | .type = OPTION_FLAG, |
218 | .opt.flag = &ec_config.pubin, | 218 | .opt.flag = &cfg.pubin, |
219 | }, | 219 | }, |
220 | { | 220 | { |
221 | .name = "pubout", | 221 | .name = "pubout", |
222 | .desc = "Output public key instead of private key in output", | 222 | .desc = "Output public key instead of private key in output", |
223 | .type = OPTION_FLAG, | 223 | .type = OPTION_FLAG, |
224 | .opt.flag = &ec_config.pubout, | 224 | .opt.flag = &cfg.pubout, |
225 | }, | 225 | }, |
226 | { | 226 | { |
227 | .name = "text", | 227 | .name = "text", |
228 | .desc = "Print the public/private key components and parameters", | 228 | .desc = "Print the public/private key components and parameters", |
229 | .type = OPTION_FLAG, | 229 | .type = OPTION_FLAG, |
230 | .opt.flag = &ec_config.text, | 230 | .opt.flag = &cfg.text, |
231 | }, | 231 | }, |
232 | { | 232 | { |
233 | .name = NULL, | 233 | .name = NULL, |
@@ -272,19 +272,19 @@ ec_main(int argc, char **argv) | |||
272 | exit(1); | 272 | exit(1); |
273 | } | 273 | } |
274 | 274 | ||
275 | memset(&ec_config, 0, sizeof(ec_config)); | 275 | memset(&cfg, 0, sizeof(cfg)); |
276 | 276 | ||
277 | ec_config.asn1_flag = OPENSSL_EC_NAMED_CURVE; | 277 | cfg.asn1_flag = OPENSSL_EC_NAMED_CURVE; |
278 | ec_config.form = POINT_CONVERSION_UNCOMPRESSED; | 278 | cfg.form = POINT_CONVERSION_UNCOMPRESSED; |
279 | ec_config.informat = FORMAT_PEM; | 279 | cfg.informat = FORMAT_PEM; |
280 | ec_config.outformat = FORMAT_PEM; | 280 | cfg.outformat = FORMAT_PEM; |
281 | 281 | ||
282 | if (options_parse(argc, argv, ec_options, NULL, NULL) != 0) { | 282 | if (options_parse(argc, argv, ec_options, NULL, NULL) != 0) { |
283 | ec_usage(); | 283 | ec_usage(); |
284 | goto end; | 284 | goto end; |
285 | } | 285 | } |
286 | 286 | ||
287 | if (!app_passwd(bio_err, ec_config.passargin, ec_config.passargout, | 287 | if (!app_passwd(bio_err, cfg.passargin, cfg.passargout, |
288 | &passin, &passout)) { | 288 | &passin, &passout)) { |
289 | BIO_printf(bio_err, "Error getting passwords\n"); | 289 | BIO_printf(bio_err, "Error getting passwords\n"); |
290 | goto end; | 290 | goto end; |
@@ -295,23 +295,23 @@ ec_main(int argc, char **argv) | |||
295 | ERR_print_errors(bio_err); | 295 | ERR_print_errors(bio_err); |
296 | goto end; | 296 | goto end; |
297 | } | 297 | } |
298 | if (ec_config.infile == NULL) | 298 | if (cfg.infile == NULL) |
299 | BIO_set_fp(in, stdin, BIO_NOCLOSE); | 299 | BIO_set_fp(in, stdin, BIO_NOCLOSE); |
300 | else { | 300 | else { |
301 | if (BIO_read_filename(in, ec_config.infile) <= 0) { | 301 | if (BIO_read_filename(in, cfg.infile) <= 0) { |
302 | perror(ec_config.infile); | 302 | perror(cfg.infile); |
303 | goto end; | 303 | goto end; |
304 | } | 304 | } |
305 | } | 305 | } |
306 | 306 | ||
307 | BIO_printf(bio_err, "read EC key\n"); | 307 | BIO_printf(bio_err, "read EC key\n"); |
308 | if (ec_config.informat == FORMAT_ASN1) { | 308 | if (cfg.informat == FORMAT_ASN1) { |
309 | if (ec_config.pubin) | 309 | if (cfg.pubin) |
310 | eckey = d2i_EC_PUBKEY_bio(in, NULL); | 310 | eckey = d2i_EC_PUBKEY_bio(in, NULL); |
311 | else | 311 | else |
312 | eckey = d2i_ECPrivateKey_bio(in, NULL); | 312 | eckey = d2i_ECPrivateKey_bio(in, NULL); |
313 | } else if (ec_config.informat == FORMAT_PEM) { | 313 | } else if (cfg.informat == FORMAT_PEM) { |
314 | if (ec_config.pubin) | 314 | if (cfg.pubin) |
315 | eckey = PEM_read_bio_EC_PUBKEY(in, NULL, NULL, | 315 | eckey = PEM_read_bio_EC_PUBKEY(in, NULL, NULL, |
316 | NULL); | 316 | NULL); |
317 | else | 317 | else |
@@ -326,49 +326,49 @@ ec_main(int argc, char **argv) | |||
326 | ERR_print_errors(bio_err); | 326 | ERR_print_errors(bio_err); |
327 | goto end; | 327 | goto end; |
328 | } | 328 | } |
329 | if (ec_config.outfile == NULL) { | 329 | if (cfg.outfile == NULL) { |
330 | BIO_set_fp(out, stdout, BIO_NOCLOSE); | 330 | BIO_set_fp(out, stdout, BIO_NOCLOSE); |
331 | } else { | 331 | } else { |
332 | if (BIO_write_filename(out, ec_config.outfile) <= 0) { | 332 | if (BIO_write_filename(out, cfg.outfile) <= 0) { |
333 | perror(ec_config.outfile); | 333 | perror(cfg.outfile); |
334 | goto end; | 334 | goto end; |
335 | } | 335 | } |
336 | } | 336 | } |
337 | 337 | ||
338 | group = EC_KEY_get0_group(eckey); | 338 | group = EC_KEY_get0_group(eckey); |
339 | 339 | ||
340 | if (ec_config.new_form) | 340 | if (cfg.new_form) |
341 | EC_KEY_set_conv_form(eckey, ec_config.form); | 341 | EC_KEY_set_conv_form(eckey, cfg.form); |
342 | 342 | ||
343 | if (ec_config.new_asn1_flag) | 343 | if (cfg.new_asn1_flag) |
344 | EC_KEY_set_asn1_flag(eckey, ec_config.asn1_flag); | 344 | EC_KEY_set_asn1_flag(eckey, cfg.asn1_flag); |
345 | 345 | ||
346 | if (ec_config.text) | 346 | if (cfg.text) |
347 | if (!EC_KEY_print(out, eckey, 0)) { | 347 | if (!EC_KEY_print(out, eckey, 0)) { |
348 | perror(ec_config.outfile); | 348 | perror(cfg.outfile); |
349 | ERR_print_errors(bio_err); | 349 | ERR_print_errors(bio_err); |
350 | goto end; | 350 | goto end; |
351 | } | 351 | } |
352 | if (ec_config.noout) { | 352 | if (cfg.noout) { |
353 | ret = 0; | 353 | ret = 0; |
354 | goto end; | 354 | goto end; |
355 | } | 355 | } |
356 | BIO_printf(bio_err, "writing EC key\n"); | 356 | BIO_printf(bio_err, "writing EC key\n"); |
357 | if (ec_config.outformat == FORMAT_ASN1) { | 357 | if (cfg.outformat == FORMAT_ASN1) { |
358 | if (ec_config.param_out) | 358 | if (cfg.param_out) |
359 | i = i2d_ECPKParameters_bio(out, group); | 359 | i = i2d_ECPKParameters_bio(out, group); |
360 | else if (ec_config.pubin || ec_config.pubout) | 360 | else if (cfg.pubin || cfg.pubout) |
361 | i = i2d_EC_PUBKEY_bio(out, eckey); | 361 | i = i2d_EC_PUBKEY_bio(out, eckey); |
362 | else | 362 | else |
363 | i = i2d_ECPrivateKey_bio(out, eckey); | 363 | i = i2d_ECPrivateKey_bio(out, eckey); |
364 | } else if (ec_config.outformat == FORMAT_PEM) { | 364 | } else if (cfg.outformat == FORMAT_PEM) { |
365 | if (ec_config.param_out) | 365 | if (cfg.param_out) |
366 | i = PEM_write_bio_ECPKParameters(out, group); | 366 | i = PEM_write_bio_ECPKParameters(out, group); |
367 | else if (ec_config.pubin || ec_config.pubout) | 367 | else if (cfg.pubin || cfg.pubout) |
368 | i = PEM_write_bio_EC_PUBKEY(out, eckey); | 368 | i = PEM_write_bio_EC_PUBKEY(out, eckey); |
369 | else | 369 | else |
370 | i = PEM_write_bio_ECPrivateKey(out, eckey, | 370 | i = PEM_write_bio_ECPrivateKey(out, eckey, |
371 | ec_config.enc, NULL, 0, NULL, passout); | 371 | cfg.enc, NULL, 0, NULL, passout); |
372 | } else { | 372 | } else { |
373 | BIO_printf(bio_err, "bad output format specified for " | 373 | BIO_printf(bio_err, "bad output format specified for " |
374 | "outfile\n"); | 374 | "outfile\n"); |
diff --git a/src/usr.bin/openssl/ecparam.c b/src/usr.bin/openssl/ecparam.c index 52ccc491fc..933cd3eb69 100644 --- a/src/usr.bin/openssl/ecparam.c +++ b/src/usr.bin/openssl/ecparam.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ecparam.c,v 1.22 2022/11/11 17:07:38 joshua Exp $ */ | 1 | /* $OpenBSD: ecparam.c,v 1.23 2023/03/06 14:32:06 tb Exp $ */ |
2 | /* | 2 | /* |
3 | * Written by Nils Larsch for the OpenSSL project. | 3 | * Written by Nils Larsch for the OpenSSL project. |
4 | */ | 4 | */ |
@@ -107,21 +107,21 @@ static struct { | |||
107 | char *outfile; | 107 | char *outfile; |
108 | int outformat; | 108 | int outformat; |
109 | int text; | 109 | int text; |
110 | } ecparam_config; | 110 | } cfg; |
111 | 111 | ||
112 | static int | 112 | static int |
113 | ecparam_opt_form(char *arg) | 113 | ecparam_opt_form(char *arg) |
114 | { | 114 | { |
115 | if (strcmp(arg, "compressed") == 0) | 115 | if (strcmp(arg, "compressed") == 0) |
116 | ecparam_config.form = POINT_CONVERSION_COMPRESSED; | 116 | cfg.form = POINT_CONVERSION_COMPRESSED; |
117 | else if (strcmp(arg, "uncompressed") == 0) | 117 | else if (strcmp(arg, "uncompressed") == 0) |
118 | ecparam_config.form = POINT_CONVERSION_UNCOMPRESSED; | 118 | cfg.form = POINT_CONVERSION_UNCOMPRESSED; |
119 | else if (strcmp(arg, "hybrid") == 0) | 119 | else if (strcmp(arg, "hybrid") == 0) |
120 | ecparam_config.form = POINT_CONVERSION_HYBRID; | 120 | cfg.form = POINT_CONVERSION_HYBRID; |
121 | else | 121 | else |
122 | return (1); | 122 | return (1); |
123 | 123 | ||
124 | ecparam_config.new_form = 1; | 124 | cfg.new_form = 1; |
125 | return (0); | 125 | return (0); |
126 | } | 126 | } |
127 | 127 | ||
@@ -129,13 +129,13 @@ static int | |||
129 | ecparam_opt_enctype(char *arg) | 129 | ecparam_opt_enctype(char *arg) |
130 | { | 130 | { |
131 | if (strcmp(arg, "explicit") == 0) | 131 | if (strcmp(arg, "explicit") == 0) |
132 | ecparam_config.asn1_flag = 0; | 132 | cfg.asn1_flag = 0; |
133 | else if (strcmp(arg, "named_curve") == 0) | 133 | else if (strcmp(arg, "named_curve") == 0) |
134 | ecparam_config.asn1_flag = OPENSSL_EC_NAMED_CURVE; | 134 | cfg.asn1_flag = OPENSSL_EC_NAMED_CURVE; |
135 | else | 135 | else |
136 | return (1); | 136 | return (1); |
137 | 137 | ||
138 | ecparam_config.new_asn1_flag = 1; | 138 | cfg.new_asn1_flag = 1; |
139 | return (0); | 139 | return (0); |
140 | } | 140 | } |
141 | 141 | ||
@@ -144,13 +144,13 @@ static const struct option ecparam_options[] = { | |||
144 | .name = "C", | 144 | .name = "C", |
145 | .desc = "Convert the EC parameters into C code", | 145 | .desc = "Convert the EC parameters into C code", |
146 | .type = OPTION_FLAG, | 146 | .type = OPTION_FLAG, |
147 | .opt.flag = &ecparam_config.C, | 147 | .opt.flag = &cfg.C, |
148 | }, | 148 | }, |
149 | { | 149 | { |
150 | .name = "check", | 150 | .name = "check", |
151 | .desc = "Validate the elliptic curve parameters", | 151 | .desc = "Validate the elliptic curve parameters", |
152 | .type = OPTION_FLAG, | 152 | .type = OPTION_FLAG, |
153 | .opt.flag = &ecparam_config.check, | 153 | .opt.flag = &cfg.check, |
154 | }, | 154 | }, |
155 | { | 155 | { |
156 | .name = "conv_form", | 156 | .name = "conv_form", |
@@ -165,61 +165,61 @@ static const struct option ecparam_options[] = { | |||
165 | .desc = "Generate an EC private key using the specified " | 165 | .desc = "Generate an EC private key using the specified " |
166 | "parameters", | 166 | "parameters", |
167 | .type = OPTION_FLAG, | 167 | .type = OPTION_FLAG, |
168 | .opt.flag = &ecparam_config.genkey, | 168 | .opt.flag = &cfg.genkey, |
169 | }, | 169 | }, |
170 | { | 170 | { |
171 | .name = "in", | 171 | .name = "in", |
172 | .argname = "file", | 172 | .argname = "file", |
173 | .desc = "Input file to read parameters from (default stdin)", | 173 | .desc = "Input file to read parameters from (default stdin)", |
174 | .type = OPTION_ARG, | 174 | .type = OPTION_ARG, |
175 | .opt.arg = &ecparam_config.infile, | 175 | .opt.arg = &cfg.infile, |
176 | }, | 176 | }, |
177 | { | 177 | { |
178 | .name = "inform", | 178 | .name = "inform", |
179 | .argname = "format", | 179 | .argname = "format", |
180 | .desc = "Input format (DER or PEM)", | 180 | .desc = "Input format (DER or PEM)", |
181 | .type = OPTION_ARG_FORMAT, | 181 | .type = OPTION_ARG_FORMAT, |
182 | .opt.value = &ecparam_config.informat, | 182 | .opt.value = &cfg.informat, |
183 | }, | 183 | }, |
184 | { | 184 | { |
185 | .name = "list_curves", | 185 | .name = "list_curves", |
186 | .desc = "Print list of all currently implemented EC " | 186 | .desc = "Print list of all currently implemented EC " |
187 | "parameter names", | 187 | "parameter names", |
188 | .type = OPTION_FLAG, | 188 | .type = OPTION_FLAG, |
189 | .opt.flag = &ecparam_config.list_curves, | 189 | .opt.flag = &cfg.list_curves, |
190 | }, | 190 | }, |
191 | { | 191 | { |
192 | .name = "name", | 192 | .name = "name", |
193 | .argname = "curve", | 193 | .argname = "curve", |
194 | .desc = "Use the EC parameters with the specified name", | 194 | .desc = "Use the EC parameters with the specified name", |
195 | .type = OPTION_ARG, | 195 | .type = OPTION_ARG, |
196 | .opt.arg = &ecparam_config.curve_name, | 196 | .opt.arg = &cfg.curve_name, |
197 | }, | 197 | }, |
198 | { | 198 | { |
199 | .name = "no_seed", | 199 | .name = "no_seed", |
200 | .desc = "Do not output seed with explicit parameter encoding", | 200 | .desc = "Do not output seed with explicit parameter encoding", |
201 | .type = OPTION_FLAG, | 201 | .type = OPTION_FLAG, |
202 | .opt.flag = &ecparam_config.no_seed, | 202 | .opt.flag = &cfg.no_seed, |
203 | }, | 203 | }, |
204 | { | 204 | { |
205 | .name = "noout", | 205 | .name = "noout", |
206 | .desc = "Do not output encoded version of EC parameters", | 206 | .desc = "Do not output encoded version of EC parameters", |
207 | .type = OPTION_FLAG, | 207 | .type = OPTION_FLAG, |
208 | .opt.flag = &ecparam_config.noout, | 208 | .opt.flag = &cfg.noout, |
209 | }, | 209 | }, |
210 | { | 210 | { |
211 | .name = "out", | 211 | .name = "out", |
212 | .argname = "file", | 212 | .argname = "file", |
213 | .desc = "Output file to write parameters to (default stdout)", | 213 | .desc = "Output file to write parameters to (default stdout)", |
214 | .type = OPTION_ARG, | 214 | .type = OPTION_ARG, |
215 | .opt.arg = &ecparam_config.outfile, | 215 | .opt.arg = &cfg.outfile, |
216 | }, | 216 | }, |
217 | { | 217 | { |
218 | .name = "outform", | 218 | .name = "outform", |
219 | .argname = "format", | 219 | .argname = "format", |
220 | .desc = "Output format (DER or PEM)", | 220 | .desc = "Output format (DER or PEM)", |
221 | .type = OPTION_ARG_FORMAT, | 221 | .type = OPTION_ARG_FORMAT, |
222 | .opt.value = &ecparam_config.outformat, | 222 | .opt.value = &cfg.outformat, |
223 | }, | 223 | }, |
224 | { | 224 | { |
225 | .name = "param_enc", | 225 | .name = "param_enc", |
@@ -233,7 +233,7 @@ static const struct option ecparam_options[] = { | |||
233 | .name = "text", | 233 | .name = "text", |
234 | .desc = "Print out the EC parameters in human readable form", | 234 | .desc = "Print out the EC parameters in human readable form", |
235 | .type = OPTION_FLAG, | 235 | .type = OPTION_FLAG, |
236 | .opt.flag = &ecparam_config.text, | 236 | .opt.flag = &cfg.text, |
237 | }, | 237 | }, |
238 | {NULL}, | 238 | {NULL}, |
239 | }; | 239 | }; |
@@ -264,11 +264,11 @@ ecparam_main(int argc, char **argv) | |||
264 | exit(1); | 264 | exit(1); |
265 | } | 265 | } |
266 | 266 | ||
267 | memset(&ecparam_config, 0, sizeof(ecparam_config)); | 267 | memset(&cfg, 0, sizeof(cfg)); |
268 | ecparam_config.asn1_flag = OPENSSL_EC_NAMED_CURVE; | 268 | cfg.asn1_flag = OPENSSL_EC_NAMED_CURVE; |
269 | ecparam_config.form = POINT_CONVERSION_UNCOMPRESSED; | 269 | cfg.form = POINT_CONVERSION_UNCOMPRESSED; |
270 | ecparam_config.informat = FORMAT_PEM; | 270 | cfg.informat = FORMAT_PEM; |
271 | ecparam_config.outformat = FORMAT_PEM; | 271 | cfg.outformat = FORMAT_PEM; |
272 | 272 | ||
273 | if (options_parse(argc, argv, ecparam_options, NULL, NULL) != 0) { | 273 | if (options_parse(argc, argv, ecparam_options, NULL, NULL) != 0) { |
274 | ecparam_usage(); | 274 | ecparam_usage(); |
@@ -281,24 +281,24 @@ ecparam_main(int argc, char **argv) | |||
281 | ERR_print_errors(bio_err); | 281 | ERR_print_errors(bio_err); |
282 | goto end; | 282 | goto end; |
283 | } | 283 | } |
284 | if (ecparam_config.infile == NULL) | 284 | if (cfg.infile == NULL) |
285 | BIO_set_fp(in, stdin, BIO_NOCLOSE); | 285 | BIO_set_fp(in, stdin, BIO_NOCLOSE); |
286 | else { | 286 | else { |
287 | if (BIO_read_filename(in, ecparam_config.infile) <= 0) { | 287 | if (BIO_read_filename(in, cfg.infile) <= 0) { |
288 | perror(ecparam_config.infile); | 288 | perror(cfg.infile); |
289 | goto end; | 289 | goto end; |
290 | } | 290 | } |
291 | } | 291 | } |
292 | if (ecparam_config.outfile == NULL) { | 292 | if (cfg.outfile == NULL) { |
293 | BIO_set_fp(out, stdout, BIO_NOCLOSE); | 293 | BIO_set_fp(out, stdout, BIO_NOCLOSE); |
294 | } else { | 294 | } else { |
295 | if (BIO_write_filename(out, ecparam_config.outfile) <= 0) { | 295 | if (BIO_write_filename(out, cfg.outfile) <= 0) { |
296 | perror(ecparam_config.outfile); | 296 | perror(cfg.outfile); |
297 | goto end; | 297 | goto end; |
298 | } | 298 | } |
299 | } | 299 | } |
300 | 300 | ||
301 | if (ecparam_config.list_curves) { | 301 | if (cfg.list_curves) { |
302 | EC_builtin_curve *curves = NULL; | 302 | EC_builtin_curve *curves = NULL; |
303 | size_t crv_len = 0; | 303 | size_t crv_len = 0; |
304 | size_t n = 0; | 304 | size_t n = 0; |
@@ -331,7 +331,7 @@ ecparam_main(int argc, char **argv) | |||
331 | ret = 0; | 331 | ret = 0; |
332 | goto end; | 332 | goto end; |
333 | } | 333 | } |
334 | if (ecparam_config.curve_name != NULL) { | 334 | if (cfg.curve_name != NULL) { |
335 | int nid; | 335 | int nid; |
336 | 336 | ||
337 | /* | 337 | /* |
@@ -339,36 +339,36 @@ ecparam_main(int argc, char **argv) | |||
339 | * secp256r1 (which are the same as the curves prime192v1 and | 339 | * secp256r1 (which are the same as the curves prime192v1 and |
340 | * prime256v1 defined in X9.62) | 340 | * prime256v1 defined in X9.62) |
341 | */ | 341 | */ |
342 | if (!strcmp(ecparam_config.curve_name, "secp192r1")) { | 342 | if (!strcmp(cfg.curve_name, "secp192r1")) { |
343 | BIO_printf(bio_err, "using curve name prime192v1 " | 343 | BIO_printf(bio_err, "using curve name prime192v1 " |
344 | "instead of secp192r1\n"); | 344 | "instead of secp192r1\n"); |
345 | nid = NID_X9_62_prime192v1; | 345 | nid = NID_X9_62_prime192v1; |
346 | } else if (!strcmp(ecparam_config.curve_name, "secp256r1")) { | 346 | } else if (!strcmp(cfg.curve_name, "secp256r1")) { |
347 | BIO_printf(bio_err, "using curve name prime256v1 " | 347 | BIO_printf(bio_err, "using curve name prime256v1 " |
348 | "instead of secp256r1\n"); | 348 | "instead of secp256r1\n"); |
349 | nid = NID_X9_62_prime256v1; | 349 | nid = NID_X9_62_prime256v1; |
350 | } else | 350 | } else |
351 | nid = OBJ_sn2nid(ecparam_config.curve_name); | 351 | nid = OBJ_sn2nid(cfg.curve_name); |
352 | 352 | ||
353 | if (nid == 0) | 353 | if (nid == 0) |
354 | nid = EC_curve_nist2nid(ecparam_config.curve_name); | 354 | nid = EC_curve_nist2nid(cfg.curve_name); |
355 | 355 | ||
356 | if (nid == 0) { | 356 | if (nid == 0) { |
357 | BIO_printf(bio_err, "unknown curve name (%s)\n", | 357 | BIO_printf(bio_err, "unknown curve name (%s)\n", |
358 | ecparam_config.curve_name); | 358 | cfg.curve_name); |
359 | goto end; | 359 | goto end; |
360 | } | 360 | } |
361 | group = EC_GROUP_new_by_curve_name(nid); | 361 | group = EC_GROUP_new_by_curve_name(nid); |
362 | if (group == NULL) { | 362 | if (group == NULL) { |
363 | BIO_printf(bio_err, "unable to create curve (%s)\n", | 363 | BIO_printf(bio_err, "unable to create curve (%s)\n", |
364 | ecparam_config.curve_name); | 364 | cfg.curve_name); |
365 | goto end; | 365 | goto end; |
366 | } | 366 | } |
367 | EC_GROUP_set_asn1_flag(group, ecparam_config.asn1_flag); | 367 | EC_GROUP_set_asn1_flag(group, cfg.asn1_flag); |
368 | EC_GROUP_set_point_conversion_form(group, ecparam_config.form); | 368 | EC_GROUP_set_point_conversion_form(group, cfg.form); |
369 | } else if (ecparam_config.informat == FORMAT_ASN1) { | 369 | } else if (cfg.informat == FORMAT_ASN1) { |
370 | group = d2i_ECPKParameters_bio(in, NULL); | 370 | group = d2i_ECPKParameters_bio(in, NULL); |
371 | } else if (ecparam_config.informat == FORMAT_PEM) { | 371 | } else if (cfg.informat == FORMAT_PEM) { |
372 | group = PEM_read_bio_ECPKParameters(in, NULL, NULL, NULL); | 372 | group = PEM_read_bio_ECPKParameters(in, NULL, NULL, NULL); |
373 | } else { | 373 | } else { |
374 | BIO_printf(bio_err, "bad input format specified\n"); | 374 | BIO_printf(bio_err, "bad input format specified\n"); |
@@ -381,20 +381,20 @@ ecparam_main(int argc, char **argv) | |||
381 | ERR_print_errors(bio_err); | 381 | ERR_print_errors(bio_err); |
382 | goto end; | 382 | goto end; |
383 | } | 383 | } |
384 | if (ecparam_config.new_form) | 384 | if (cfg.new_form) |
385 | EC_GROUP_set_point_conversion_form(group, ecparam_config.form); | 385 | EC_GROUP_set_point_conversion_form(group, cfg.form); |
386 | 386 | ||
387 | if (ecparam_config.new_asn1_flag) | 387 | if (cfg.new_asn1_flag) |
388 | EC_GROUP_set_asn1_flag(group, ecparam_config.asn1_flag); | 388 | EC_GROUP_set_asn1_flag(group, cfg.asn1_flag); |
389 | 389 | ||
390 | if (ecparam_config.no_seed) | 390 | if (cfg.no_seed) |
391 | EC_GROUP_set_seed(group, NULL, 0); | 391 | EC_GROUP_set_seed(group, NULL, 0); |
392 | 392 | ||
393 | if (ecparam_config.text) { | 393 | if (cfg.text) { |
394 | if (!ECPKParameters_print(out, group, 0)) | 394 | if (!ECPKParameters_print(out, group, 0)) |
395 | goto end; | 395 | goto end; |
396 | } | 396 | } |
397 | if (ecparam_config.check) { | 397 | if (cfg.check) { |
398 | BIO_printf(bio_err, "checking elliptic curve parameters: "); | 398 | BIO_printf(bio_err, "checking elliptic curve parameters: "); |
399 | if (!EC_GROUP_check(group, NULL)) { | 399 | if (!EC_GROUP_check(group, NULL)) { |
400 | BIO_printf(bio_err, "failed\n"); | 400 | BIO_printf(bio_err, "failed\n"); |
@@ -403,7 +403,7 @@ ecparam_main(int argc, char **argv) | |||
403 | BIO_printf(bio_err, "ok\n"); | 403 | BIO_printf(bio_err, "ok\n"); |
404 | 404 | ||
405 | } | 405 | } |
406 | if (ecparam_config.C) { | 406 | if (cfg.C) { |
407 | size_t buf_len = 0, tmp_len = 0; | 407 | size_t buf_len = 0, tmp_len = 0; |
408 | const EC_POINT *point; | 408 | const EC_POINT *point; |
409 | int is_prime, len = 0; | 409 | int is_prime, len = 0; |
@@ -516,10 +516,10 @@ ecparam_main(int argc, char **argv) | |||
516 | BIO_printf(out, "\t\t}\n"); | 516 | BIO_printf(out, "\t\t}\n"); |
517 | BIO_printf(out, "\treturn(group);\n\t}\n"); | 517 | BIO_printf(out, "\treturn(group);\n\t}\n"); |
518 | } | 518 | } |
519 | if (!ecparam_config.noout) { | 519 | if (!cfg.noout) { |
520 | if (ecparam_config.outformat == FORMAT_ASN1) | 520 | if (cfg.outformat == FORMAT_ASN1) |
521 | i = i2d_ECPKParameters_bio(out, group); | 521 | i = i2d_ECPKParameters_bio(out, group); |
522 | else if (ecparam_config.outformat == FORMAT_PEM) | 522 | else if (cfg.outformat == FORMAT_PEM) |
523 | i = PEM_write_bio_ECPKParameters(out, group); | 523 | i = PEM_write_bio_ECPKParameters(out, group); |
524 | else { | 524 | else { |
525 | BIO_printf(bio_err, "bad output format specified for" | 525 | BIO_printf(bio_err, "bad output format specified for" |
@@ -533,7 +533,7 @@ ecparam_main(int argc, char **argv) | |||
533 | goto end; | 533 | goto end; |
534 | } | 534 | } |
535 | } | 535 | } |
536 | if (ecparam_config.genkey) { | 536 | if (cfg.genkey) { |
537 | EC_KEY *eckey = EC_KEY_new(); | 537 | EC_KEY *eckey = EC_KEY_new(); |
538 | 538 | ||
539 | if (eckey == NULL) | 539 | if (eckey == NULL) |
@@ -548,9 +548,9 @@ ecparam_main(int argc, char **argv) | |||
548 | EC_KEY_free(eckey); | 548 | EC_KEY_free(eckey); |
549 | goto end; | 549 | goto end; |
550 | } | 550 | } |
551 | if (ecparam_config.outformat == FORMAT_ASN1) | 551 | if (cfg.outformat == FORMAT_ASN1) |
552 | i = i2d_ECPrivateKey_bio(out, eckey); | 552 | i = i2d_ECPrivateKey_bio(out, eckey); |
553 | else if (ecparam_config.outformat == FORMAT_PEM) | 553 | else if (cfg.outformat == FORMAT_PEM) |
554 | i = PEM_write_bio_ECPrivateKey(out, eckey, NULL, | 554 | i = PEM_write_bio_ECPrivateKey(out, eckey, NULL, |
555 | NULL, 0, NULL, NULL); | 555 | NULL, 0, NULL, NULL); |
556 | else { | 556 | else { |
diff --git a/src/usr.bin/openssl/enc.c b/src/usr.bin/openssl/enc.c index 6be0a30dec..b80a177cd8 100644 --- a/src/usr.bin/openssl/enc.c +++ b/src/usr.bin/openssl/enc.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: enc.c,v 1.26 2023/03/04 21:58:54 tb Exp $ */ | 1 | /* $OpenBSD: enc.c,v 1.27 2023/03/06 14:32:06 tb 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 | * |
@@ -100,7 +100,7 @@ static struct { | |||
100 | int pbkdf2; | 100 | int pbkdf2; |
101 | int printkey; | 101 | int printkey; |
102 | int verbose; | 102 | int verbose; |
103 | } enc_config; | 103 | } cfg; |
104 | 104 | ||
105 | static int | 105 | static int |
106 | enc_opt_cipher(int argc, char **argv, int *argsused) | 106 | enc_opt_cipher(int argc, char **argv, int *argsused) |
@@ -111,12 +111,12 @@ enc_opt_cipher(int argc, char **argv, int *argsused) | |||
111 | return (1); | 111 | return (1); |
112 | 112 | ||
113 | if (strcmp(name, "none") == 0) { | 113 | if (strcmp(name, "none") == 0) { |
114 | enc_config.cipher = NULL; | 114 | cfg.cipher = NULL; |
115 | *argsused = 1; | 115 | *argsused = 1; |
116 | return (0); | 116 | return (0); |
117 | } | 117 | } |
118 | 118 | ||
119 | if ((enc_config.cipher = EVP_get_cipherbyname(name)) != NULL) { | 119 | if ((cfg.cipher = EVP_get_cipherbyname(name)) != NULL) { |
120 | *argsused = 1; | 120 | *argsused = 1; |
121 | return (0); | 121 | return (0); |
122 | } | 122 | } |
@@ -129,44 +129,44 @@ static const struct option enc_options[] = { | |||
129 | .name = "A", | 129 | .name = "A", |
130 | .desc = "Process base64 data on one line (requires -a)", | 130 | .desc = "Process base64 data on one line (requires -a)", |
131 | .type = OPTION_FLAG, | 131 | .type = OPTION_FLAG, |
132 | .opt.flag = &enc_config.olb64, | 132 | .opt.flag = &cfg.olb64, |
133 | }, | 133 | }, |
134 | { | 134 | { |
135 | .name = "a", | 135 | .name = "a", |
136 | .desc = "Perform base64 encoding/decoding (alias -base64)", | 136 | .desc = "Perform base64 encoding/decoding (alias -base64)", |
137 | .type = OPTION_FLAG, | 137 | .type = OPTION_FLAG, |
138 | .opt.flag = &enc_config.base64, | 138 | .opt.flag = &cfg.base64, |
139 | }, | 139 | }, |
140 | { | 140 | { |
141 | .name = "base64", | 141 | .name = "base64", |
142 | .type = OPTION_FLAG, | 142 | .type = OPTION_FLAG, |
143 | .opt.flag = &enc_config.base64, | 143 | .opt.flag = &cfg.base64, |
144 | }, | 144 | }, |
145 | { | 145 | { |
146 | .name = "bufsize", | 146 | .name = "bufsize", |
147 | .argname = "size", | 147 | .argname = "size", |
148 | .desc = "Specify the buffer size to use for I/O", | 148 | .desc = "Specify the buffer size to use for I/O", |
149 | .type = OPTION_ARG, | 149 | .type = OPTION_ARG, |
150 | .opt.arg = &enc_config.bufsize, | 150 | .opt.arg = &cfg.bufsize, |
151 | }, | 151 | }, |
152 | { | 152 | { |
153 | .name = "d", | 153 | .name = "d", |
154 | .desc = "Decrypt the input data", | 154 | .desc = "Decrypt the input data", |
155 | .type = OPTION_VALUE, | 155 | .type = OPTION_VALUE, |
156 | .opt.value = &enc_config.enc, | 156 | .opt.value = &cfg.enc, |
157 | .value = 0, | 157 | .value = 0, |
158 | }, | 158 | }, |
159 | { | 159 | { |
160 | .name = "debug", | 160 | .name = "debug", |
161 | .desc = "Print debugging information", | 161 | .desc = "Print debugging information", |
162 | .type = OPTION_FLAG, | 162 | .type = OPTION_FLAG, |
163 | .opt.flag = &enc_config.debug, | 163 | .opt.flag = &cfg.debug, |
164 | }, | 164 | }, |
165 | { | 165 | { |
166 | .name = "e", | 166 | .name = "e", |
167 | .desc = "Encrypt the input data (default)", | 167 | .desc = "Encrypt the input data (default)", |
168 | .type = OPTION_VALUE, | 168 | .type = OPTION_VALUE, |
169 | .opt.value = &enc_config.enc, | 169 | .opt.value = &cfg.enc, |
170 | .value = 1, | 170 | .value = 1, |
171 | }, | 171 | }, |
172 | { | 172 | { |
@@ -174,45 +174,45 @@ static const struct option enc_options[] = { | |||
174 | .argname = "file", | 174 | .argname = "file", |
175 | .desc = "Input file to read from (default stdin)", | 175 | .desc = "Input file to read from (default stdin)", |
176 | .type = OPTION_ARG, | 176 | .type = OPTION_ARG, |
177 | .opt.arg = &enc_config.inf, | 177 | .opt.arg = &cfg.inf, |
178 | }, | 178 | }, |
179 | { | 179 | { |
180 | .name = "iter", | 180 | .name = "iter", |
181 | .argname = "iterations", | 181 | .argname = "iterations", |
182 | .desc = "Specify iteration count and force use of PBKDF2", | 182 | .desc = "Specify iteration count and force use of PBKDF2", |
183 | .type = OPTION_ARG_INT, | 183 | .type = OPTION_ARG_INT, |
184 | .opt.value = &enc_config.iter, | 184 | .opt.value = &cfg.iter, |
185 | }, | 185 | }, |
186 | { | 186 | { |
187 | .name = "iv", | 187 | .name = "iv", |
188 | .argname = "IV", | 188 | .argname = "IV", |
189 | .desc = "IV to use, specified as a hexadecimal string", | 189 | .desc = "IV to use, specified as a hexadecimal string", |
190 | .type = OPTION_ARG, | 190 | .type = OPTION_ARG, |
191 | .opt.arg = &enc_config.hiv, | 191 | .opt.arg = &cfg.hiv, |
192 | }, | 192 | }, |
193 | { | 193 | { |
194 | .name = "K", | 194 | .name = "K", |
195 | .argname = "key", | 195 | .argname = "key", |
196 | .desc = "Key to use, specified as a hexadecimal string", | 196 | .desc = "Key to use, specified as a hexadecimal string", |
197 | .type = OPTION_ARG, | 197 | .type = OPTION_ARG, |
198 | .opt.arg = &enc_config.hkey, | 198 | .opt.arg = &cfg.hkey, |
199 | }, | 199 | }, |
200 | { | 200 | { |
201 | .name = "k", /* Superseded by -pass. */ | 201 | .name = "k", /* Superseded by -pass. */ |
202 | .type = OPTION_ARG, | 202 | .type = OPTION_ARG, |
203 | .opt.arg = &enc_config.keystr, | 203 | .opt.arg = &cfg.keystr, |
204 | }, | 204 | }, |
205 | { | 205 | { |
206 | .name = "kfile", /* Superseded by -pass. */ | 206 | .name = "kfile", /* Superseded by -pass. */ |
207 | .type = OPTION_ARG, | 207 | .type = OPTION_ARG, |
208 | .opt.arg = &enc_config.keyfile, | 208 | .opt.arg = &cfg.keyfile, |
209 | }, | 209 | }, |
210 | { | 210 | { |
211 | .name = "md", | 211 | .name = "md", |
212 | .argname = "digest", | 212 | .argname = "digest", |
213 | .desc = "Digest to use to create a key from the passphrase", | 213 | .desc = "Digest to use to create a key from the passphrase", |
214 | .type = OPTION_ARG, | 214 | .type = OPTION_ARG, |
215 | .opt.arg = &enc_config.md, | 215 | .opt.arg = &cfg.md, |
216 | }, | 216 | }, |
217 | { | 217 | { |
218 | .name = "none", | 218 | .name = "none", |
@@ -224,12 +224,12 @@ static const struct option enc_options[] = { | |||
224 | .name = "nopad", | 224 | .name = "nopad", |
225 | .desc = "Disable standard block padding", | 225 | .desc = "Disable standard block padding", |
226 | .type = OPTION_FLAG, | 226 | .type = OPTION_FLAG, |
227 | .opt.flag = &enc_config.nopad, | 227 | .opt.flag = &cfg.nopad, |
228 | }, | 228 | }, |
229 | { | 229 | { |
230 | .name = "nosalt", | 230 | .name = "nosalt", |
231 | .type = OPTION_VALUE, | 231 | .type = OPTION_VALUE, |
232 | .opt.value = &enc_config.nosalt, | 232 | .opt.value = &cfg.nosalt, |
233 | .value = 1, | 233 | .value = 1, |
234 | }, | 234 | }, |
235 | { | 235 | { |
@@ -237,21 +237,21 @@ static const struct option enc_options[] = { | |||
237 | .argname = "file", | 237 | .argname = "file", |
238 | .desc = "Output file to write to (default stdout)", | 238 | .desc = "Output file to write to (default stdout)", |
239 | .type = OPTION_ARG, | 239 | .type = OPTION_ARG, |
240 | .opt.arg = &enc_config.outf, | 240 | .opt.arg = &cfg.outf, |
241 | }, | 241 | }, |
242 | { | 242 | { |
243 | .name = "P", | 243 | .name = "P", |
244 | .desc = "Print out the salt, key and IV used, then exit\n" | 244 | .desc = "Print out the salt, key and IV used, then exit\n" |
245 | " (no encryption or decryption is performed)", | 245 | " (no encryption or decryption is performed)", |
246 | .type = OPTION_VALUE, | 246 | .type = OPTION_VALUE, |
247 | .opt.value = &enc_config.printkey, | 247 | .opt.value = &cfg.printkey, |
248 | .value = 2, | 248 | .value = 2, |
249 | }, | 249 | }, |
250 | { | 250 | { |
251 | .name = "p", | 251 | .name = "p", |
252 | .desc = "Print out the salt, key and IV used", | 252 | .desc = "Print out the salt, key and IV used", |
253 | .type = OPTION_VALUE, | 253 | .type = OPTION_VALUE, |
254 | .opt.value = &enc_config.printkey, | 254 | .opt.value = &cfg.printkey, |
255 | .value = 1, | 255 | .value = 1, |
256 | }, | 256 | }, |
257 | { | 257 | { |
@@ -259,40 +259,40 @@ static const struct option enc_options[] = { | |||
259 | .argname = "source", | 259 | .argname = "source", |
260 | .desc = "Password source", | 260 | .desc = "Password source", |
261 | .type = OPTION_ARG, | 261 | .type = OPTION_ARG, |
262 | .opt.arg = &enc_config.passarg, | 262 | .opt.arg = &cfg.passarg, |
263 | }, | 263 | }, |
264 | { | 264 | { |
265 | .name = "pbkdf2", | 265 | .name = "pbkdf2", |
266 | .desc = "Use the pbkdf2 key derivation function", | 266 | .desc = "Use the pbkdf2 key derivation function", |
267 | .type = OPTION_FLAG, | 267 | .type = OPTION_FLAG, |
268 | .opt.flag = &enc_config.pbkdf2, | 268 | .opt.flag = &cfg.pbkdf2, |
269 | }, | 269 | }, |
270 | { | 270 | { |
271 | .name = "S", | 271 | .name = "S", |
272 | .argname = "salt", | 272 | .argname = "salt", |
273 | .desc = "Salt to use, specified as a hexadecimal string", | 273 | .desc = "Salt to use, specified as a hexadecimal string", |
274 | .type = OPTION_ARG, | 274 | .type = OPTION_ARG, |
275 | .opt.arg = &enc_config.hsalt, | 275 | .opt.arg = &cfg.hsalt, |
276 | }, | 276 | }, |
277 | { | 277 | { |
278 | .name = "salt", | 278 | .name = "salt", |
279 | .desc = "Use a salt in the key derivation routines (default)", | 279 | .desc = "Use a salt in the key derivation routines (default)", |
280 | .type = OPTION_VALUE, | 280 | .type = OPTION_VALUE, |
281 | .opt.value = &enc_config.nosalt, | 281 | .opt.value = &cfg.nosalt, |
282 | .value = 0, | 282 | .value = 0, |
283 | }, | 283 | }, |
284 | { | 284 | { |
285 | .name = "v", | 285 | .name = "v", |
286 | .desc = "Verbose", | 286 | .desc = "Verbose", |
287 | .type = OPTION_FLAG, | 287 | .type = OPTION_FLAG, |
288 | .opt.flag = &enc_config.verbose, | 288 | .opt.flag = &cfg.verbose, |
289 | }, | 289 | }, |
290 | #ifdef ZLIB | 290 | #ifdef ZLIB |
291 | { | 291 | { |
292 | .name = "z", | 292 | .name = "z", |
293 | .desc = "Perform zlib compression/decompression", | 293 | .desc = "Perform zlib compression/decompression", |
294 | .type = OPTION_FLAG, | 294 | .type = OPTION_FLAG, |
295 | .opt.flag = &enc_config.do_zlib, | 295 | .opt.flag = &cfg.do_zlib, |
296 | }, | 296 | }, |
297 | #endif | 297 | #endif |
298 | { | 298 | { |
@@ -365,27 +365,27 @@ enc_main(int argc, char **argv) | |||
365 | exit(1); | 365 | exit(1); |
366 | } | 366 | } |
367 | 367 | ||
368 | memset(&enc_config, 0, sizeof(enc_config)); | 368 | memset(&cfg, 0, sizeof(cfg)); |
369 | enc_config.enc = 1; | 369 | cfg.enc = 1; |
370 | 370 | ||
371 | /* first check the program name */ | 371 | /* first check the program name */ |
372 | program_name(argv[0], pname, sizeof(pname)); | 372 | program_name(argv[0], pname, sizeof(pname)); |
373 | 373 | ||
374 | if (strcmp(pname, "base64") == 0) | 374 | if (strcmp(pname, "base64") == 0) |
375 | enc_config.base64 = 1; | 375 | cfg.base64 = 1; |
376 | 376 | ||
377 | #ifdef ZLIB | 377 | #ifdef ZLIB |
378 | if (strcmp(pname, "zlib") == 0) | 378 | if (strcmp(pname, "zlib") == 0) |
379 | enc_config.do_zlib = 1; | 379 | cfg.do_zlib = 1; |
380 | #endif | 380 | #endif |
381 | 381 | ||
382 | enc_config.cipher = EVP_get_cipherbyname(pname); | 382 | cfg.cipher = EVP_get_cipherbyname(pname); |
383 | 383 | ||
384 | #ifdef ZLIB | 384 | #ifdef ZLIB |
385 | if (!enc_config.do_zlib && !enc_config.base64 && | 385 | if (!cfg.do_zlib && !cfg.base64 && |
386 | enc_config.cipher == NULL && strcmp(pname, "enc") != 0) | 386 | cfg.cipher == NULL && strcmp(pname, "enc") != 0) |
387 | #else | 387 | #else |
388 | if (!enc_config.base64 && enc_config.cipher == NULL && | 388 | if (!cfg.base64 && cfg.cipher == NULL && |
389 | strcmp(pname, "enc") != 0) | 389 | strcmp(pname, "enc") != 0) |
390 | #endif | 390 | #endif |
391 | { | 391 | { |
@@ -398,20 +398,20 @@ enc_main(int argc, char **argv) | |||
398 | goto end; | 398 | goto end; |
399 | } | 399 | } |
400 | 400 | ||
401 | if (enc_config.keyfile != NULL) { | 401 | if (cfg.keyfile != NULL) { |
402 | static char buf[128]; | 402 | static char buf[128]; |
403 | FILE *infile; | 403 | FILE *infile; |
404 | 404 | ||
405 | infile = fopen(enc_config.keyfile, "r"); | 405 | infile = fopen(cfg.keyfile, "r"); |
406 | if (infile == NULL) { | 406 | if (infile == NULL) { |
407 | BIO_printf(bio_err, "unable to read key from '%s'\n", | 407 | BIO_printf(bio_err, "unable to read key from '%s'\n", |
408 | enc_config.keyfile); | 408 | cfg.keyfile); |
409 | goto end; | 409 | goto end; |
410 | } | 410 | } |
411 | buf[0] = '\0'; | 411 | buf[0] = '\0'; |
412 | if (!fgets(buf, sizeof buf, infile)) { | 412 | if (!fgets(buf, sizeof buf, infile)) { |
413 | BIO_printf(bio_err, "unable to read key from '%s'\n", | 413 | BIO_printf(bio_err, "unable to read key from '%s'\n", |
414 | enc_config.keyfile); | 414 | cfg.keyfile); |
415 | fclose(infile); | 415 | fclose(infile); |
416 | goto end; | 416 | goto end; |
417 | } | 417 | } |
@@ -425,34 +425,34 @@ enc_main(int argc, char **argv) | |||
425 | BIO_printf(bio_err, "zero length password\n"); | 425 | BIO_printf(bio_err, "zero length password\n"); |
426 | goto end; | 426 | goto end; |
427 | } | 427 | } |
428 | enc_config.keystr = buf; | 428 | cfg.keystr = buf; |
429 | } | 429 | } |
430 | 430 | ||
431 | if (enc_config.cipher != NULL && | 431 | if (cfg.cipher != NULL && |
432 | (EVP_CIPHER_flags(enc_config.cipher) & EVP_CIPH_FLAG_AEAD_CIPHER) != 0) { | 432 | (EVP_CIPHER_flags(cfg.cipher) & EVP_CIPH_FLAG_AEAD_CIPHER) != 0) { |
433 | BIO_printf(bio_err, "enc does not support AEAD ciphers\n"); | 433 | BIO_printf(bio_err, "enc does not support AEAD ciphers\n"); |
434 | goto end; | 434 | goto end; |
435 | } | 435 | } |
436 | 436 | ||
437 | if (enc_config.cipher != NULL && | 437 | if (cfg.cipher != NULL && |
438 | EVP_CIPHER_mode(enc_config.cipher) == EVP_CIPH_XTS_MODE) { | 438 | EVP_CIPHER_mode(cfg.cipher) == EVP_CIPH_XTS_MODE) { |
439 | BIO_printf(bio_err, "enc does not support XTS mode\n"); | 439 | BIO_printf(bio_err, "enc does not support XTS mode\n"); |
440 | goto end; | 440 | goto end; |
441 | } | 441 | } |
442 | 442 | ||
443 | if (enc_config.md != NULL && | 443 | if (cfg.md != NULL && |
444 | (dgst = EVP_get_digestbyname(enc_config.md)) == NULL) { | 444 | (dgst = EVP_get_digestbyname(cfg.md)) == NULL) { |
445 | BIO_printf(bio_err, | 445 | BIO_printf(bio_err, |
446 | "%s is an unsupported message digest type\n", | 446 | "%s is an unsupported message digest type\n", |
447 | enc_config.md); | 447 | cfg.md); |
448 | goto end; | 448 | goto end; |
449 | } | 449 | } |
450 | if (dgst == NULL) { | 450 | if (dgst == NULL) { |
451 | dgst = EVP_sha256(); | 451 | dgst = EVP_sha256(); |
452 | } | 452 | } |
453 | 453 | ||
454 | if (enc_config.bufsize != NULL) { | 454 | if (cfg.bufsize != NULL) { |
455 | char *p = enc_config.bufsize; | 455 | char *p = cfg.bufsize; |
456 | unsigned long n; | 456 | unsigned long n; |
457 | 457 | ||
458 | /* XXX - provide an OPTION_ARG_DISKUNIT. */ | 458 | /* XXX - provide an OPTION_ARG_DISKUNIT. */ |
@@ -471,11 +471,11 @@ enc_main(int argc, char **argv) | |||
471 | goto end; | 471 | goto end; |
472 | } | 472 | } |
473 | /* It must be large enough for a base64 encoded line. */ | 473 | /* It must be large enough for a base64 encoded line. */ |
474 | if (enc_config.base64 && n < 80) | 474 | if (cfg.base64 && n < 80) |
475 | n = 80; | 475 | n = 80; |
476 | 476 | ||
477 | bsize = (int)n; | 477 | bsize = (int)n; |
478 | if (enc_config.verbose) | 478 | if (cfg.verbose) |
479 | BIO_printf(bio_err, "bufsize=%d\n", bsize); | 479 | BIO_printf(bio_err, "bufsize=%d\n", bsize); |
480 | } | 480 | } |
481 | strbuf = malloc(SIZE); | 481 | strbuf = malloc(SIZE); |
@@ -490,41 +490,41 @@ enc_main(int argc, char **argv) | |||
490 | ERR_print_errors(bio_err); | 490 | ERR_print_errors(bio_err); |
491 | goto end; | 491 | goto end; |
492 | } | 492 | } |
493 | if (enc_config.debug) { | 493 | if (cfg.debug) { |
494 | BIO_set_callback(in, BIO_debug_callback); | 494 | BIO_set_callback(in, BIO_debug_callback); |
495 | BIO_set_callback(out, BIO_debug_callback); | 495 | BIO_set_callback(out, BIO_debug_callback); |
496 | BIO_set_callback_arg(in, (char *) bio_err); | 496 | BIO_set_callback_arg(in, (char *) bio_err); |
497 | BIO_set_callback_arg(out, (char *) bio_err); | 497 | BIO_set_callback_arg(out, (char *) bio_err); |
498 | } | 498 | } |
499 | if (enc_config.inf == NULL) { | 499 | if (cfg.inf == NULL) { |
500 | if (enc_config.bufsize != NULL) | 500 | if (cfg.bufsize != NULL) |
501 | setvbuf(stdin, (char *) NULL, _IONBF, 0); | 501 | setvbuf(stdin, (char *) NULL, _IONBF, 0); |
502 | BIO_set_fp(in, stdin, BIO_NOCLOSE); | 502 | BIO_set_fp(in, stdin, BIO_NOCLOSE); |
503 | } else { | 503 | } else { |
504 | if (BIO_read_filename(in, enc_config.inf) <= 0) { | 504 | if (BIO_read_filename(in, cfg.inf) <= 0) { |
505 | perror(enc_config.inf); | 505 | perror(cfg.inf); |
506 | goto end; | 506 | goto end; |
507 | } | 507 | } |
508 | } | 508 | } |
509 | 509 | ||
510 | if (!enc_config.keystr && enc_config.passarg) { | 510 | if (!cfg.keystr && cfg.passarg) { |
511 | if (!app_passwd(bio_err, enc_config.passarg, NULL, | 511 | if (!app_passwd(bio_err, cfg.passarg, NULL, |
512 | &pass, NULL)) { | 512 | &pass, NULL)) { |
513 | BIO_printf(bio_err, "Error getting password\n"); | 513 | BIO_printf(bio_err, "Error getting password\n"); |
514 | goto end; | 514 | goto end; |
515 | } | 515 | } |
516 | enc_config.keystr = pass; | 516 | cfg.keystr = pass; |
517 | } | 517 | } |
518 | if (enc_config.keystr == NULL && enc_config.cipher != NULL && | 518 | if (cfg.keystr == NULL && cfg.cipher != NULL && |
519 | enc_config.hkey == NULL) { | 519 | cfg.hkey == NULL) { |
520 | for (;;) { | 520 | for (;;) { |
521 | char buf[200]; | 521 | char buf[200]; |
522 | int retval; | 522 | int retval; |
523 | 523 | ||
524 | retval = snprintf(buf, sizeof buf, | 524 | retval = snprintf(buf, sizeof buf, |
525 | "enter %s %s password:", | 525 | "enter %s %s password:", |
526 | OBJ_nid2ln(EVP_CIPHER_nid(enc_config.cipher)), | 526 | OBJ_nid2ln(EVP_CIPHER_nid(cfg.cipher)), |
527 | enc_config.enc ? "encryption" : "decryption"); | 527 | cfg.enc ? "encryption" : "decryption"); |
528 | if ((size_t)retval >= sizeof buf) { | 528 | if ((size_t)retval >= sizeof buf) { |
529 | BIO_printf(bio_err, | 529 | BIO_printf(bio_err, |
530 | "Password prompt too long\n"); | 530 | "Password prompt too long\n"); |
@@ -532,13 +532,13 @@ enc_main(int argc, char **argv) | |||
532 | } | 532 | } |
533 | strbuf[0] = '\0'; | 533 | strbuf[0] = '\0'; |
534 | i = EVP_read_pw_string((char *)strbuf, SIZE, buf, | 534 | i = EVP_read_pw_string((char *)strbuf, SIZE, buf, |
535 | enc_config.enc); | 535 | cfg.enc); |
536 | if (i == 0) { | 536 | if (i == 0) { |
537 | if (strbuf[0] == '\0') { | 537 | if (strbuf[0] == '\0') { |
538 | ret = 1; | 538 | ret = 1; |
539 | goto end; | 539 | goto end; |
540 | } | 540 | } |
541 | enc_config.keystr = strbuf; | 541 | cfg.keystr = strbuf; |
542 | break; | 542 | break; |
543 | } | 543 | } |
544 | if (i < 0) { | 544 | if (i < 0) { |
@@ -547,13 +547,13 @@ enc_main(int argc, char **argv) | |||
547 | } | 547 | } |
548 | } | 548 | } |
549 | } | 549 | } |
550 | if (enc_config.outf == NULL) { | 550 | if (cfg.outf == NULL) { |
551 | BIO_set_fp(out, stdout, BIO_NOCLOSE); | 551 | BIO_set_fp(out, stdout, BIO_NOCLOSE); |
552 | if (enc_config.bufsize != NULL) | 552 | if (cfg.bufsize != NULL) |
553 | setvbuf(stdout, (char *)NULL, _IONBF, 0); | 553 | setvbuf(stdout, (char *)NULL, _IONBF, 0); |
554 | } else { | 554 | } else { |
555 | if (BIO_write_filename(out, enc_config.outf) <= 0) { | 555 | if (BIO_write_filename(out, cfg.outf) <= 0) { |
556 | perror(enc_config.outf); | 556 | perror(cfg.outf); |
557 | goto end; | 557 | goto end; |
558 | } | 558 | } |
559 | } | 559 | } |
@@ -572,38 +572,38 @@ enc_main(int argc, char **argv) | |||
572 | } | 572 | } |
573 | #endif | 573 | #endif |
574 | 574 | ||
575 | if (enc_config.base64) { | 575 | if (cfg.base64) { |
576 | if ((b64 = BIO_new(BIO_f_base64())) == NULL) | 576 | if ((b64 = BIO_new(BIO_f_base64())) == NULL) |
577 | goto end; | 577 | goto end; |
578 | if (enc_config.debug) { | 578 | if (cfg.debug) { |
579 | BIO_set_callback(b64, BIO_debug_callback); | 579 | BIO_set_callback(b64, BIO_debug_callback); |
580 | BIO_set_callback_arg(b64, (char *) bio_err); | 580 | BIO_set_callback_arg(b64, (char *) bio_err); |
581 | } | 581 | } |
582 | if (enc_config.olb64) | 582 | if (cfg.olb64) |
583 | BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL); | 583 | BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL); |
584 | if (enc_config.enc) | 584 | if (cfg.enc) |
585 | wbio = BIO_push(b64, wbio); | 585 | wbio = BIO_push(b64, wbio); |
586 | else | 586 | else |
587 | rbio = BIO_push(b64, rbio); | 587 | rbio = BIO_push(b64, rbio); |
588 | } | 588 | } |
589 | if (enc_config.cipher != NULL) { | 589 | if (cfg.cipher != NULL) { |
590 | /* | 590 | /* |
591 | * Note that keystr is NULL if a key was passed on the command | 591 | * Note that keystr is NULL if a key was passed on the command |
592 | * line, so we get no salt in that case. Is this a bug? | 592 | * line, so we get no salt in that case. Is this a bug? |
593 | */ | 593 | */ |
594 | if (enc_config.keystr != NULL) { | 594 | if (cfg.keystr != NULL) { |
595 | /* | 595 | /* |
596 | * Salt handling: if encrypting generate a salt and | 596 | * Salt handling: if encrypting generate a salt and |
597 | * write to output BIO. If decrypting read salt from | 597 | * write to output BIO. If decrypting read salt from |
598 | * input BIO. | 598 | * input BIO. |
599 | */ | 599 | */ |
600 | unsigned char *sptr; | 600 | unsigned char *sptr; |
601 | if (enc_config.nosalt) | 601 | if (cfg.nosalt) |
602 | sptr = NULL; | 602 | sptr = NULL; |
603 | else { | 603 | else { |
604 | if (enc_config.enc) { | 604 | if (cfg.enc) { |
605 | if (enc_config.hsalt) { | 605 | if (cfg.hsalt) { |
606 | if (!set_hex(enc_config.hsalt, salt, sizeof salt)) { | 606 | if (!set_hex(cfg.hsalt, salt, sizeof salt)) { |
607 | BIO_printf(bio_err, | 607 | BIO_printf(bio_err, |
608 | "invalid hex salt value\n"); | 608 | "invalid hex salt value\n"); |
609 | goto end; | 609 | goto end; |
@@ -615,7 +615,7 @@ enc_main(int argc, char **argv) | |||
615 | * If -P option then don't bother | 615 | * If -P option then don't bother |
616 | * writing | 616 | * writing |
617 | */ | 617 | */ |
618 | if ((enc_config.printkey != 2) | 618 | if ((cfg.printkey != 2) |
619 | && (BIO_write(wbio, magic, | 619 | && (BIO_write(wbio, magic, |
620 | sizeof magic - 1) != sizeof magic - 1 | 620 | sizeof magic - 1) != sizeof magic - 1 |
621 | || BIO_write(wbio, | 621 | || BIO_write(wbio, |
@@ -636,23 +636,23 @@ enc_main(int argc, char **argv) | |||
636 | } | 636 | } |
637 | sptr = salt; | 637 | sptr = salt; |
638 | } | 638 | } |
639 | if (enc_config.pbkdf2 == 1 || enc_config.iter > 0) { | 639 | if (cfg.pbkdf2 == 1 || cfg.iter > 0) { |
640 | /* | 640 | /* |
641 | * derive key and default iv | 641 | * derive key and default iv |
642 | * concatenated into a temporary buffer | 642 | * concatenated into a temporary buffer |
643 | */ | 643 | */ |
644 | unsigned char tmpkeyiv[EVP_MAX_KEY_LENGTH + EVP_MAX_IV_LENGTH]; | 644 | unsigned char tmpkeyiv[EVP_MAX_KEY_LENGTH + EVP_MAX_IV_LENGTH]; |
645 | int iklen = EVP_CIPHER_key_length(enc_config.cipher); | 645 | int iklen = EVP_CIPHER_key_length(cfg.cipher); |
646 | int ivlen = EVP_CIPHER_iv_length(enc_config.cipher); | 646 | int ivlen = EVP_CIPHER_iv_length(cfg.cipher); |
647 | /* not needed if HASH_UPDATE() is fixed : */ | 647 | /* not needed if HASH_UPDATE() is fixed : */ |
648 | int islen = (sptr != NULL ? sizeof(salt) : 0); | 648 | int islen = (sptr != NULL ? sizeof(salt) : 0); |
649 | 649 | ||
650 | if (enc_config.iter == 0) | 650 | if (cfg.iter == 0) |
651 | enc_config.iter = 10000; | 651 | cfg.iter = 10000; |
652 | 652 | ||
653 | if (!PKCS5_PBKDF2_HMAC(enc_config.keystr, | 653 | if (!PKCS5_PBKDF2_HMAC(cfg.keystr, |
654 | strlen(enc_config.keystr), sptr, islen, | 654 | strlen(cfg.keystr), sptr, islen, |
655 | enc_config.iter, dgst, iklen+ivlen, tmpkeyiv)) { | 655 | cfg.iter, dgst, iklen+ivlen, tmpkeyiv)) { |
656 | BIO_printf(bio_err, "PKCS5_PBKDF2_HMAC failed\n"); | 656 | BIO_printf(bio_err, "PKCS5_PBKDF2_HMAC failed\n"); |
657 | goto end; | 657 | goto end; |
658 | } | 658 | } |
@@ -661,9 +661,9 @@ enc_main(int argc, char **argv) | |||
661 | memcpy(iv, tmpkeyiv + iklen, ivlen); | 661 | memcpy(iv, tmpkeyiv + iklen, ivlen); |
662 | explicit_bzero(tmpkeyiv, sizeof tmpkeyiv); | 662 | explicit_bzero(tmpkeyiv, sizeof tmpkeyiv); |
663 | } else { | 663 | } else { |
664 | EVP_BytesToKey(enc_config.cipher, dgst, sptr, | 664 | EVP_BytesToKey(cfg.cipher, dgst, sptr, |
665 | (unsigned char *)enc_config.keystr, | 665 | (unsigned char *)cfg.keystr, |
666 | strlen(enc_config.keystr), 1, key, iv); | 666 | strlen(cfg.keystr), 1, key, iv); |
667 | } | 667 | } |
668 | 668 | ||
669 | /* | 669 | /* |
@@ -671,19 +671,19 @@ enc_main(int argc, char **argv) | |||
671 | * the command line bug picked up by Larry J. Hughes | 671 | * the command line bug picked up by Larry J. Hughes |
672 | * Jr. <hughes@indiana.edu> | 672 | * Jr. <hughes@indiana.edu> |
673 | */ | 673 | */ |
674 | if (enc_config.keystr == strbuf) | 674 | if (cfg.keystr == strbuf) |
675 | explicit_bzero(enc_config.keystr, SIZE); | 675 | explicit_bzero(cfg.keystr, SIZE); |
676 | else | 676 | else |
677 | explicit_bzero(enc_config.keystr, | 677 | explicit_bzero(cfg.keystr, |
678 | strlen(enc_config.keystr)); | 678 | strlen(cfg.keystr)); |
679 | } | 679 | } |
680 | if (enc_config.hiv != NULL && | 680 | if (cfg.hiv != NULL && |
681 | !set_hex(enc_config.hiv, iv, sizeof iv)) { | 681 | !set_hex(cfg.hiv, iv, sizeof iv)) { |
682 | BIO_printf(bio_err, "invalid hex iv value\n"); | 682 | BIO_printf(bio_err, "invalid hex iv value\n"); |
683 | goto end; | 683 | goto end; |
684 | } | 684 | } |
685 | if (enc_config.hiv == NULL && enc_config.keystr == NULL && | 685 | if (cfg.hiv == NULL && cfg.keystr == NULL && |
686 | EVP_CIPHER_iv_length(enc_config.cipher) != 0) { | 686 | EVP_CIPHER_iv_length(cfg.cipher) != 0) { |
687 | /* | 687 | /* |
688 | * No IV was explicitly set and no IV was generated | 688 | * No IV was explicitly set and no IV was generated |
689 | * during EVP_BytesToKey. Hence the IV is undefined, | 689 | * during EVP_BytesToKey. Hence the IV is undefined, |
@@ -692,8 +692,8 @@ enc_main(int argc, char **argv) | |||
692 | BIO_printf(bio_err, "iv undefined\n"); | 692 | BIO_printf(bio_err, "iv undefined\n"); |
693 | goto end; | 693 | goto end; |
694 | } | 694 | } |
695 | if (enc_config.hkey != NULL && | 695 | if (cfg.hkey != NULL && |
696 | !set_hex(enc_config.hkey, key, sizeof key)) { | 696 | !set_hex(cfg.hkey, key, sizeof key)) { |
697 | BIO_printf(bio_err, "invalid hex key value\n"); | 697 | BIO_printf(bio_err, "invalid hex key value\n"); |
698 | goto end; | 698 | goto end; |
699 | } | 699 | } |
@@ -707,51 +707,51 @@ enc_main(int argc, char **argv) | |||
707 | 707 | ||
708 | BIO_get_cipher_ctx(benc, &ctx); | 708 | BIO_get_cipher_ctx(benc, &ctx); |
709 | 709 | ||
710 | if (!EVP_CipherInit_ex(ctx, enc_config.cipher, NULL, NULL, | 710 | if (!EVP_CipherInit_ex(ctx, cfg.cipher, NULL, NULL, |
711 | NULL, enc_config.enc)) { | 711 | NULL, cfg.enc)) { |
712 | BIO_printf(bio_err, "Error setting cipher %s\n", | 712 | BIO_printf(bio_err, "Error setting cipher %s\n", |
713 | EVP_CIPHER_name(enc_config.cipher)); | 713 | EVP_CIPHER_name(cfg.cipher)); |
714 | ERR_print_errors(bio_err); | 714 | ERR_print_errors(bio_err); |
715 | goto end; | 715 | goto end; |
716 | } | 716 | } |
717 | if (enc_config.nopad) | 717 | if (cfg.nopad) |
718 | EVP_CIPHER_CTX_set_padding(ctx, 0); | 718 | EVP_CIPHER_CTX_set_padding(ctx, 0); |
719 | 719 | ||
720 | if (!EVP_CipherInit_ex(ctx, NULL, NULL, key, iv, | 720 | if (!EVP_CipherInit_ex(ctx, NULL, NULL, key, iv, |
721 | enc_config.enc)) { | 721 | cfg.enc)) { |
722 | BIO_printf(bio_err, "Error setting cipher %s\n", | 722 | BIO_printf(bio_err, "Error setting cipher %s\n", |
723 | EVP_CIPHER_name(enc_config.cipher)); | 723 | EVP_CIPHER_name(cfg.cipher)); |
724 | ERR_print_errors(bio_err); | 724 | ERR_print_errors(bio_err); |
725 | goto end; | 725 | goto end; |
726 | } | 726 | } |
727 | if (enc_config.debug) { | 727 | if (cfg.debug) { |
728 | BIO_set_callback(benc, BIO_debug_callback); | 728 | BIO_set_callback(benc, BIO_debug_callback); |
729 | BIO_set_callback_arg(benc, (char *) bio_err); | 729 | BIO_set_callback_arg(benc, (char *) bio_err); |
730 | } | 730 | } |
731 | if (enc_config.printkey) { | 731 | if (cfg.printkey) { |
732 | int key_len, iv_len; | 732 | int key_len, iv_len; |
733 | 733 | ||
734 | if (!enc_config.nosalt) { | 734 | if (!cfg.nosalt) { |
735 | printf("salt="); | 735 | printf("salt="); |
736 | for (i = 0; i < (int) sizeof(salt); i++) | 736 | for (i = 0; i < (int) sizeof(salt); i++) |
737 | printf("%02X", salt[i]); | 737 | printf("%02X", salt[i]); |
738 | printf("\n"); | 738 | printf("\n"); |
739 | } | 739 | } |
740 | key_len = EVP_CIPHER_key_length(enc_config.cipher); | 740 | key_len = EVP_CIPHER_key_length(cfg.cipher); |
741 | if (key_len > 0) { | 741 | if (key_len > 0) { |
742 | printf("key="); | 742 | printf("key="); |
743 | for (i = 0; i < key_len; i++) | 743 | for (i = 0; i < key_len; i++) |
744 | printf("%02X", key[i]); | 744 | printf("%02X", key[i]); |
745 | printf("\n"); | 745 | printf("\n"); |
746 | } | 746 | } |
747 | iv_len = EVP_CIPHER_iv_length(enc_config.cipher); | 747 | iv_len = EVP_CIPHER_iv_length(cfg.cipher); |
748 | if (iv_len > 0) { | 748 | if (iv_len > 0) { |
749 | printf("iv ="); | 749 | printf("iv ="); |
750 | for (i = 0; i < iv_len; i++) | 750 | for (i = 0; i < iv_len; i++) |
751 | printf("%02X", iv[i]); | 751 | printf("%02X", iv[i]); |
752 | printf("\n"); | 752 | printf("\n"); |
753 | } | 753 | } |
754 | if (enc_config.printkey == 2) { | 754 | if (cfg.printkey == 2) { |
755 | ret = 0; | 755 | ret = 0; |
756 | goto end; | 756 | goto end; |
757 | } | 757 | } |
@@ -775,7 +775,7 @@ enc_main(int argc, char **argv) | |||
775 | goto end; | 775 | goto end; |
776 | } | 776 | } |
777 | ret = 0; | 777 | ret = 0; |
778 | if (enc_config.verbose) { | 778 | if (cfg.verbose) { |
779 | BIO_printf(bio_err, "bytes read :%8ld\n", BIO_number_read(in)); | 779 | BIO_printf(bio_err, "bytes read :%8ld\n", BIO_number_read(in)); |
780 | BIO_printf(bio_err, "bytes written:%8ld\n", BIO_number_written(out)); | 780 | BIO_printf(bio_err, "bytes written:%8ld\n", BIO_number_written(out)); |
781 | } | 781 | } |
diff --git a/src/usr.bin/openssl/errstr.c b/src/usr.bin/openssl/errstr.c index 64f0141ba0..cb7cf1d5a3 100644 --- a/src/usr.bin/openssl/errstr.c +++ b/src/usr.bin/openssl/errstr.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: errstr.c,v 1.9 2023/03/05 13:12:53 tb Exp $ */ | 1 | /* $OpenBSD: errstr.c,v 1.10 2023/03/06 14:32:06 tb 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 | * |
@@ -70,14 +70,14 @@ | |||
70 | 70 | ||
71 | static struct { | 71 | static struct { |
72 | int stats; | 72 | int stats; |
73 | } errstr_config; | 73 | } cfg; |
74 | 74 | ||
75 | static const struct option errstr_options[] = { | 75 | static const struct option errstr_options[] = { |
76 | { | 76 | { |
77 | .name = "stats", | 77 | .name = "stats", |
78 | .desc = "Print debugging statistics for the hash table", | 78 | .desc = "Print debugging statistics for the hash table", |
79 | .type = OPTION_FLAG, | 79 | .type = OPTION_FLAG, |
80 | .opt.flag = &errstr_config.stats, | 80 | .opt.flag = &cfg.stats, |
81 | }, | 81 | }, |
82 | { NULL }, | 82 | { NULL }, |
83 | }; | 83 | }; |
@@ -103,14 +103,14 @@ errstr_main(int argc, char **argv) | |||
103 | exit(1); | 103 | exit(1); |
104 | } | 104 | } |
105 | 105 | ||
106 | memset(&errstr_config, 0, sizeof(errstr_config)); | 106 | memset(&cfg, 0, sizeof(cfg)); |
107 | 107 | ||
108 | if (options_parse(argc, argv, errstr_options, NULL, &argsused) != 0) { | 108 | if (options_parse(argc, argv, errstr_options, NULL, &argsused) != 0) { |
109 | errstr_usage(); | 109 | errstr_usage(); |
110 | return (1); | 110 | return (1); |
111 | } | 111 | } |
112 | 112 | ||
113 | if (errstr_config.stats) { | 113 | if (cfg.stats) { |
114 | BIO *out; | 114 | BIO *out; |
115 | 115 | ||
116 | if ((out = BIO_new_fp(stdout, BIO_NOCLOSE)) == NULL) { | 116 | if ((out = BIO_new_fp(stdout, BIO_NOCLOSE)) == NULL) { |
diff --git a/src/usr.bin/openssl/gendh.c b/src/usr.bin/openssl/gendh.c index b4e4f29111..b9dde3c773 100644 --- a/src/usr.bin/openssl/gendh.c +++ b/src/usr.bin/openssl/gendh.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: gendh.c,v 1.13 2022/11/11 17:07:39 joshua Exp $ */ | 1 | /* $OpenBSD: gendh.c,v 1.14 2023/03/06 14:32:06 tb 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 | * |
@@ -89,7 +89,7 @@ static int dh_cb(int p, int n, BN_GENCB *cb); | |||
89 | static struct { | 89 | static struct { |
90 | int g; | 90 | int g; |
91 | char *outfile; | 91 | char *outfile; |
92 | } gendh_config; | 92 | } cfg; |
93 | 93 | ||
94 | static const struct option gendh_options[] = { | 94 | static const struct option gendh_options[] = { |
95 | { | 95 | { |
@@ -98,21 +98,21 @@ static const struct option gendh_options[] = { | |||
98 | "(default)", | 98 | "(default)", |
99 | .type = OPTION_VALUE, | 99 | .type = OPTION_VALUE, |
100 | .value = 2, | 100 | .value = 2, |
101 | .opt.value = &gendh_config.g, | 101 | .opt.value = &cfg.g, |
102 | }, | 102 | }, |
103 | { | 103 | { |
104 | .name = "5", | 104 | .name = "5", |
105 | .desc = "Generate DH parameters with a generator value of 5", | 105 | .desc = "Generate DH parameters with a generator value of 5", |
106 | .type = OPTION_VALUE, | 106 | .type = OPTION_VALUE, |
107 | .value = 5, | 107 | .value = 5, |
108 | .opt.value = &gendh_config.g, | 108 | .opt.value = &cfg.g, |
109 | }, | 109 | }, |
110 | { | 110 | { |
111 | .name = "out", | 111 | .name = "out", |
112 | .argname = "file", | 112 | .argname = "file", |
113 | .desc = "Output file (default stdout)", | 113 | .desc = "Output file (default stdout)", |
114 | .type = OPTION_ARG, | 114 | .type = OPTION_ARG, |
115 | .opt.arg = &gendh_config.outfile, | 115 | .opt.arg = &cfg.outfile, |
116 | }, | 116 | }, |
117 | { NULL }, | 117 | { NULL }, |
118 | }; | 118 | }; |
@@ -146,9 +146,9 @@ gendh_main(int argc, char **argv) | |||
146 | 146 | ||
147 | BN_GENCB_set(cb, dh_cb, bio_err); | 147 | BN_GENCB_set(cb, dh_cb, bio_err); |
148 | 148 | ||
149 | memset(&gendh_config, 0, sizeof(gendh_config)); | 149 | memset(&cfg, 0, sizeof(cfg)); |
150 | 150 | ||
151 | gendh_config.g = 2; | 151 | cfg.g = 2; |
152 | 152 | ||
153 | if (options_parse(argc, argv, gendh_options, &strbits, NULL) != 0) { | 153 | if (options_parse(argc, argv, gendh_options, &strbits, NULL) != 0) { |
154 | gendh_usage(); | 154 | gendh_usage(); |
@@ -169,21 +169,21 @@ gendh_main(int argc, char **argv) | |||
169 | ERR_print_errors(bio_err); | 169 | ERR_print_errors(bio_err); |
170 | goto end; | 170 | goto end; |
171 | } | 171 | } |
172 | if (gendh_config.outfile == NULL) { | 172 | if (cfg.outfile == NULL) { |
173 | BIO_set_fp(out, stdout, BIO_NOCLOSE); | 173 | BIO_set_fp(out, stdout, BIO_NOCLOSE); |
174 | } else { | 174 | } else { |
175 | if (BIO_write_filename(out, gendh_config.outfile) <= 0) { | 175 | if (BIO_write_filename(out, cfg.outfile) <= 0) { |
176 | perror(gendh_config.outfile); | 176 | perror(cfg.outfile); |
177 | goto end; | 177 | goto end; |
178 | } | 178 | } |
179 | } | 179 | } |
180 | 180 | ||
181 | BIO_printf(bio_err, "Generating DH parameters, %d bit long safe prime," | 181 | BIO_printf(bio_err, "Generating DH parameters, %d bit long safe prime," |
182 | " generator %d\n", numbits, gendh_config.g); | 182 | " generator %d\n", numbits, cfg.g); |
183 | BIO_printf(bio_err, "This is going to take a long time\n"); | 183 | BIO_printf(bio_err, "This is going to take a long time\n"); |
184 | 184 | ||
185 | if (((dh = DH_new()) == NULL) || | 185 | if (((dh = DH_new()) == NULL) || |
186 | !DH_generate_parameters_ex(dh, numbits, gendh_config.g, cb)) | 186 | !DH_generate_parameters_ex(dh, numbits, cfg.g, cb)) |
187 | goto end; | 187 | goto end; |
188 | 188 | ||
189 | if (!PEM_write_bio_DHparams(out, dh)) | 189 | if (!PEM_write_bio_DHparams(out, dh)) |
diff --git a/src/usr.bin/openssl/gendsa.c b/src/usr.bin/openssl/gendsa.c index fa83ea2c67..00635c4551 100644 --- a/src/usr.bin/openssl/gendsa.c +++ b/src/usr.bin/openssl/gendsa.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: gendsa.c,v 1.16 2022/11/11 17:07:39 joshua Exp $ */ | 1 | /* $OpenBSD: gendsa.c,v 1.17 2023/03/06 14:32:06 tb 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 | * |
@@ -78,7 +78,7 @@ static struct { | |||
78 | const EVP_CIPHER *enc; | 78 | const EVP_CIPHER *enc; |
79 | char *outfile; | 79 | char *outfile; |
80 | char *passargout; | 80 | char *passargout; |
81 | } gendsa_config; | 81 | } cfg; |
82 | 82 | ||
83 | static const EVP_CIPHER *get_cipher_by_name(char *name) | 83 | static const EVP_CIPHER *get_cipher_by_name(char *name) |
84 | { | 84 | { |
@@ -122,7 +122,7 @@ set_enc(int argc, char **argv, int *argsused) | |||
122 | if (*name++ != '-') | 122 | if (*name++ != '-') |
123 | return (1); | 123 | return (1); |
124 | 124 | ||
125 | if ((gendsa_config.enc = get_cipher_by_name(name)) == NULL) | 125 | if ((cfg.enc = get_cipher_by_name(name)) == NULL) |
126 | return (1); | 126 | return (1); |
127 | 127 | ||
128 | *argsused = 1; | 128 | *argsused = 1; |
@@ -197,14 +197,14 @@ static const struct option gendsa_options[] = { | |||
197 | .argname = "file", | 197 | .argname = "file", |
198 | .desc = "Output the key to 'file'", | 198 | .desc = "Output the key to 'file'", |
199 | .type = OPTION_ARG, | 199 | .type = OPTION_ARG, |
200 | .opt.arg = &gendsa_config.outfile, | 200 | .opt.arg = &cfg.outfile, |
201 | }, | 201 | }, |
202 | { | 202 | { |
203 | .name = "passout", | 203 | .name = "passout", |
204 | .argname = "src", | 204 | .argname = "src", |
205 | .desc = "Output file passphrase source", | 205 | .desc = "Output file passphrase source", |
206 | .type = OPTION_ARG, | 206 | .type = OPTION_ARG, |
207 | .opt.arg = &gendsa_config.passargout, | 207 | .opt.arg = &cfg.passargout, |
208 | }, | 208 | }, |
209 | { NULL }, | 209 | { NULL }, |
210 | }; | 210 | }; |
@@ -234,7 +234,7 @@ gendsa_main(int argc, char **argv) | |||
234 | exit(1); | 234 | exit(1); |
235 | } | 235 | } |
236 | 236 | ||
237 | memset(&gendsa_config, 0, sizeof(gendsa_config)); | 237 | memset(&cfg, 0, sizeof(cfg)); |
238 | 238 | ||
239 | if (options_parse(argc, argv, gendsa_options, &dsaparams, NULL) != 0) { | 239 | if (options_parse(argc, argv, gendsa_options, &dsaparams, NULL) != 0) { |
240 | gendsa_usage(); | 240 | gendsa_usage(); |
@@ -245,7 +245,7 @@ gendsa_main(int argc, char **argv) | |||
245 | gendsa_usage(); | 245 | gendsa_usage(); |
246 | goto end; | 246 | goto end; |
247 | } | 247 | } |
248 | if (!app_passwd(bio_err, NULL, gendsa_config.passargout, NULL, | 248 | if (!app_passwd(bio_err, NULL, cfg.passargout, NULL, |
249 | &passout)) { | 249 | &passout)) { |
250 | BIO_printf(bio_err, "Error getting password\n"); | 250 | BIO_printf(bio_err, "Error getting password\n"); |
251 | goto end; | 251 | goto end; |
@@ -266,11 +266,11 @@ gendsa_main(int argc, char **argv) | |||
266 | if (out == NULL) | 266 | if (out == NULL) |
267 | goto end; | 267 | goto end; |
268 | 268 | ||
269 | if (gendsa_config.outfile == NULL) { | 269 | if (cfg.outfile == NULL) { |
270 | BIO_set_fp(out, stdout, BIO_NOCLOSE); | 270 | BIO_set_fp(out, stdout, BIO_NOCLOSE); |
271 | } else { | 271 | } else { |
272 | if (BIO_write_filename(out, gendsa_config.outfile) <= 0) { | 272 | if (BIO_write_filename(out, cfg.outfile) <= 0) { |
273 | perror(gendsa_config.outfile); | 273 | perror(cfg.outfile); |
274 | goto end; | 274 | goto end; |
275 | } | 275 | } |
276 | } | 276 | } |
@@ -280,7 +280,7 @@ gendsa_main(int argc, char **argv) | |||
280 | if (!DSA_generate_key(dsa)) | 280 | if (!DSA_generate_key(dsa)) |
281 | goto end; | 281 | goto end; |
282 | 282 | ||
283 | if (!PEM_write_bio_DSAPrivateKey(out, dsa, gendsa_config.enc, NULL, 0, | 283 | if (!PEM_write_bio_DSAPrivateKey(out, dsa, cfg.enc, NULL, 0, |
284 | NULL, passout)) | 284 | NULL, passout)) |
285 | goto end; | 285 | goto end; |
286 | ret = 0; | 286 | ret = 0; |
diff --git a/src/usr.bin/openssl/genpkey.c b/src/usr.bin/openssl/genpkey.c index ce266f404c..e2445c1433 100644 --- a/src/usr.bin/openssl/genpkey.c +++ b/src/usr.bin/openssl/genpkey.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: genpkey.c,v 1.15 2023/03/05 13:12:53 tb Exp $ */ | 1 | /* $OpenBSD: genpkey.c,v 1.16 2023/03/06 14:32:06 tb 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 2006 | 3 | * project 2006 |
4 | */ | 4 | */ |
@@ -76,13 +76,13 @@ static struct { | |||
76 | int outformat; | 76 | int outformat; |
77 | char *passarg; | 77 | char *passarg; |
78 | int text; | 78 | int text; |
79 | } genpkey_config; | 79 | } cfg; |
80 | 80 | ||
81 | static int | 81 | static int |
82 | genpkey_opt_algorithm(char *arg) | 82 | genpkey_opt_algorithm(char *arg) |
83 | { | 83 | { |
84 | if (!init_gen_str(bio_err, genpkey_config.ctx, arg, | 84 | if (!init_gen_str(bio_err, cfg.ctx, arg, |
85 | genpkey_config.do_param)) | 85 | cfg.do_param)) |
86 | return (1); | 86 | return (1); |
87 | 87 | ||
88 | return (0); | 88 | return (0); |
@@ -96,16 +96,16 @@ genpkey_opt_cipher(int argc, char **argv, int *argsused) | |||
96 | if (*name++ != '-') | 96 | if (*name++ != '-') |
97 | return (1); | 97 | return (1); |
98 | 98 | ||
99 | if (genpkey_config.do_param == 1) | 99 | if (cfg.do_param == 1) |
100 | return (1); | 100 | return (1); |
101 | 101 | ||
102 | if (strcmp(name, "none") == 0) { | 102 | if (strcmp(name, "none") == 0) { |
103 | genpkey_config.cipher = NULL; | 103 | cfg.cipher = NULL; |
104 | *argsused = 1; | 104 | *argsused = 1; |
105 | return (0); | 105 | return (0); |
106 | } | 106 | } |
107 | 107 | ||
108 | if ((genpkey_config.cipher = EVP_get_cipherbyname(name)) != NULL) { | 108 | if ((cfg.cipher = EVP_get_cipherbyname(name)) != NULL) { |
109 | *argsused = 1; | 109 | *argsused = 1; |
110 | return (0); | 110 | return (0); |
111 | } | 111 | } |
@@ -116,9 +116,9 @@ genpkey_opt_cipher(int argc, char **argv, int *argsused) | |||
116 | static int | 116 | static int |
117 | genpkey_opt_paramfile(char *arg) | 117 | genpkey_opt_paramfile(char *arg) |
118 | { | 118 | { |
119 | if (genpkey_config.do_param == 1) | 119 | if (cfg.do_param == 1) |
120 | return (1); | 120 | return (1); |
121 | if (!init_keygen_file(bio_err, genpkey_config.ctx, arg)) | 121 | if (!init_keygen_file(bio_err, cfg.ctx, arg)) |
122 | return (1); | 122 | return (1); |
123 | 123 | ||
124 | return (0); | 124 | return (0); |
@@ -127,12 +127,12 @@ genpkey_opt_paramfile(char *arg) | |||
127 | static int | 127 | static int |
128 | genpkey_opt_pkeyopt(char *arg) | 128 | genpkey_opt_pkeyopt(char *arg) |
129 | { | 129 | { |
130 | if (*genpkey_config.ctx == NULL) { | 130 | if (*cfg.ctx == NULL) { |
131 | BIO_puts(bio_err, "No keytype specified\n"); | 131 | BIO_puts(bio_err, "No keytype specified\n"); |
132 | return (1); | 132 | return (1); |
133 | } | 133 | } |
134 | 134 | ||
135 | if (pkey_ctrl_string(*genpkey_config.ctx, arg) <= 0) { | 135 | if (pkey_ctrl_string(*cfg.ctx, arg) <= 0) { |
136 | BIO_puts(bio_err, "parameter setting error\n"); | 136 | BIO_puts(bio_err, "parameter setting error\n"); |
137 | ERR_print_errors(bio_err); | 137 | ERR_print_errors(bio_err); |
138 | return (1); | 138 | return (1); |
@@ -153,21 +153,21 @@ static const struct option genpkey_options[] = { | |||
153 | .name = "genparam", | 153 | .name = "genparam", |
154 | .desc = "Generate a set of parameters instead of a private key", | 154 | .desc = "Generate a set of parameters instead of a private key", |
155 | .type = OPTION_FLAG, | 155 | .type = OPTION_FLAG, |
156 | .opt.flag = &genpkey_config.do_param, | 156 | .opt.flag = &cfg.do_param, |
157 | }, | 157 | }, |
158 | { | 158 | { |
159 | .name = "out", | 159 | .name = "out", |
160 | .argname = "file", | 160 | .argname = "file", |
161 | .desc = "Output file to write to (default stdout)", | 161 | .desc = "Output file to write to (default stdout)", |
162 | .type = OPTION_ARG, | 162 | .type = OPTION_ARG, |
163 | .opt.arg = &genpkey_config.outfile, | 163 | .opt.arg = &cfg.outfile, |
164 | }, | 164 | }, |
165 | { | 165 | { |
166 | .name = "outform", | 166 | .name = "outform", |
167 | .argname = "format", | 167 | .argname = "format", |
168 | .desc = "Output format (DER or PEM)", | 168 | .desc = "Output format (DER or PEM)", |
169 | .type = OPTION_ARG_FORMAT, | 169 | .type = OPTION_ARG_FORMAT, |
170 | .opt.value = &genpkey_config.outformat, | 170 | .opt.value = &cfg.outformat, |
171 | }, | 171 | }, |
172 | { | 172 | { |
173 | .name = "paramfile", | 173 | .name = "paramfile", |
@@ -182,7 +182,7 @@ static const struct option genpkey_options[] = { | |||
182 | .argname = "arg", | 182 | .argname = "arg", |
183 | .desc = "Output file password source", | 183 | .desc = "Output file password source", |
184 | .type = OPTION_ARG, | 184 | .type = OPTION_ARG, |
185 | .opt.arg = &genpkey_config.passarg, | 185 | .opt.arg = &cfg.passarg, |
186 | }, | 186 | }, |
187 | { | 187 | { |
188 | .name = "pkeyopt", | 188 | .name = "pkeyopt", |
@@ -195,7 +195,7 @@ static const struct option genpkey_options[] = { | |||
195 | .name = "text", | 195 | .name = "text", |
196 | .desc = "Print the private/public key in human readable form", | 196 | .desc = "Print the private/public key in human readable form", |
197 | .type = OPTION_FLAG, | 197 | .type = OPTION_FLAG, |
198 | .opt.flag = &genpkey_config.text, | 198 | .opt.flag = &cfg.text, |
199 | }, | 199 | }, |
200 | { | 200 | { |
201 | .name = NULL, | 201 | .name = NULL, |
@@ -229,9 +229,9 @@ genpkey_main(int argc, char **argv) | |||
229 | exit(1); | 229 | exit(1); |
230 | } | 230 | } |
231 | 231 | ||
232 | memset(&genpkey_config, 0, sizeof(genpkey_config)); | 232 | memset(&cfg, 0, sizeof(cfg)); |
233 | genpkey_config.ctx = &ctx; | 233 | cfg.ctx = &ctx; |
234 | genpkey_config.outformat = FORMAT_PEM; | 234 | cfg.outformat = FORMAT_PEM; |
235 | 235 | ||
236 | if (options_parse(argc, argv, genpkey_options, NULL, NULL) != 0) { | 236 | if (options_parse(argc, argv, genpkey_options, NULL, NULL) != 0) { |
237 | genpkey_usage(); | 237 | genpkey_usage(); |
@@ -243,15 +243,15 @@ genpkey_main(int argc, char **argv) | |||
243 | goto end; | 243 | goto end; |
244 | } | 244 | } |
245 | 245 | ||
246 | if (!app_passwd(bio_err, genpkey_config.passarg, NULL, &pass, NULL)) { | 246 | if (!app_passwd(bio_err, cfg.passarg, NULL, &pass, NULL)) { |
247 | BIO_puts(bio_err, "Error getting password\n"); | 247 | BIO_puts(bio_err, "Error getting password\n"); |
248 | goto end; | 248 | goto end; |
249 | } | 249 | } |
250 | if (genpkey_config.outfile != NULL) { | 250 | if (cfg.outfile != NULL) { |
251 | if ((out = BIO_new_file(genpkey_config.outfile, "wb")) == | 251 | if ((out = BIO_new_file(cfg.outfile, "wb")) == |
252 | NULL) { | 252 | NULL) { |
253 | BIO_printf(bio_err, "Can't open output file %s\n", | 253 | BIO_printf(bio_err, "Can't open output file %s\n", |
254 | genpkey_config.outfile); | 254 | cfg.outfile); |
255 | goto end; | 255 | goto end; |
256 | } | 256 | } |
257 | } else { | 257 | } else { |
@@ -261,7 +261,7 @@ genpkey_main(int argc, char **argv) | |||
261 | EVP_PKEY_CTX_set_cb(ctx, genpkey_cb); | 261 | EVP_PKEY_CTX_set_cb(ctx, genpkey_cb); |
262 | EVP_PKEY_CTX_set_app_data(ctx, bio_err); | 262 | EVP_PKEY_CTX_set_app_data(ctx, bio_err); |
263 | 263 | ||
264 | if (genpkey_config.do_param) { | 264 | if (cfg.do_param) { |
265 | if (EVP_PKEY_paramgen(ctx, &pkey) <= 0) { | 265 | if (EVP_PKEY_paramgen(ctx, &pkey) <= 0) { |
266 | BIO_puts(bio_err, "Error generating parameters\n"); | 266 | BIO_puts(bio_err, "Error generating parameters\n"); |
267 | ERR_print_errors(bio_err); | 267 | ERR_print_errors(bio_err); |
@@ -275,12 +275,12 @@ genpkey_main(int argc, char **argv) | |||
275 | } | 275 | } |
276 | } | 276 | } |
277 | 277 | ||
278 | if (genpkey_config.do_param) | 278 | if (cfg.do_param) |
279 | rv = PEM_write_bio_Parameters(out, pkey); | 279 | rv = PEM_write_bio_Parameters(out, pkey); |
280 | else if (genpkey_config.outformat == FORMAT_PEM) | 280 | else if (cfg.outformat == FORMAT_PEM) |
281 | rv = PEM_write_bio_PrivateKey(out, pkey, genpkey_config.cipher, | 281 | rv = PEM_write_bio_PrivateKey(out, pkey, cfg.cipher, |
282 | NULL, 0, NULL, pass); | 282 | NULL, 0, NULL, pass); |
283 | else if (genpkey_config.outformat == FORMAT_ASN1) | 283 | else if (cfg.outformat == FORMAT_ASN1) |
284 | rv = i2d_PrivateKey_bio(out, pkey); | 284 | rv = i2d_PrivateKey_bio(out, pkey); |
285 | else { | 285 | else { |
286 | BIO_printf(bio_err, "Bad format specified for key\n"); | 286 | BIO_printf(bio_err, "Bad format specified for key\n"); |
@@ -291,8 +291,8 @@ genpkey_main(int argc, char **argv) | |||
291 | BIO_puts(bio_err, "Error writing key\n"); | 291 | BIO_puts(bio_err, "Error writing key\n"); |
292 | ERR_print_errors(bio_err); | 292 | ERR_print_errors(bio_err); |
293 | } | 293 | } |
294 | if (genpkey_config.text) { | 294 | if (cfg.text) { |
295 | if (genpkey_config.do_param) | 295 | if (cfg.do_param) |
296 | rv = EVP_PKEY_print_params(out, pkey, 0, NULL); | 296 | rv = EVP_PKEY_print_params(out, pkey, 0, NULL); |
297 | else | 297 | else |
298 | rv = EVP_PKEY_print_private(out, pkey, 0, NULL); | 298 | rv = EVP_PKEY_print_private(out, pkey, 0, NULL); |
diff --git a/src/usr.bin/openssl/genrsa.c b/src/usr.bin/openssl/genrsa.c index e1628a682e..0b5323fa5f 100644 --- a/src/usr.bin/openssl/genrsa.c +++ b/src/usr.bin/openssl/genrsa.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: genrsa.c,v 1.21 2022/11/11 17:07:39 joshua Exp $ */ | 1 | /* $OpenBSD: genrsa.c,v 1.22 2023/03/06 14:32:06 tb 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 | * |
@@ -90,7 +90,7 @@ static struct { | |||
90 | unsigned long f4; | 90 | unsigned long f4; |
91 | char *outfile; | 91 | char *outfile; |
92 | char *passargout; | 92 | char *passargout; |
93 | } genrsa_config; | 93 | } cfg; |
94 | 94 | ||
95 | static int | 95 | static int |
96 | set_public_exponent(int argc, char **argv, int *argsused) | 96 | set_public_exponent(int argc, char **argv, int *argsused) |
@@ -98,9 +98,9 @@ set_public_exponent(int argc, char **argv, int *argsused) | |||
98 | char *option = argv[0]; | 98 | char *option = argv[0]; |
99 | 99 | ||
100 | if (strcmp(option, "-3") == 0) | 100 | if (strcmp(option, "-3") == 0) |
101 | genrsa_config.f4 = 3; | 101 | cfg.f4 = 3; |
102 | else if (strcmp(option, "-f4") == 0 || strcmp(option, "-F4") == 0) | 102 | else if (strcmp(option, "-f4") == 0 || strcmp(option, "-F4") == 0) |
103 | genrsa_config.f4 = RSA_F4; | 103 | cfg.f4 = RSA_F4; |
104 | else | 104 | else |
105 | return (1); | 105 | return (1); |
106 | 106 | ||
@@ -150,7 +150,7 @@ set_enc(int argc, char **argv, int *argsused) | |||
150 | if (*name++ != '-') | 150 | if (*name++ != '-') |
151 | return (1); | 151 | return (1); |
152 | 152 | ||
153 | if ((genrsa_config.enc = get_cipher_by_name(name)) == NULL) | 153 | if ((cfg.enc = get_cipher_by_name(name)) == NULL) |
154 | return (1); | 154 | return (1); |
155 | 155 | ||
156 | *argsused = 1; | 156 | *argsused = 1; |
@@ -243,14 +243,14 @@ static const struct option genrsa_options[] = { | |||
243 | .argname = "file", | 243 | .argname = "file", |
244 | .desc = "Output the key to 'file'", | 244 | .desc = "Output the key to 'file'", |
245 | .type = OPTION_ARG, | 245 | .type = OPTION_ARG, |
246 | .opt.arg = &genrsa_config.outfile, | 246 | .opt.arg = &cfg.outfile, |
247 | }, | 247 | }, |
248 | { | 248 | { |
249 | .name = "passout", | 249 | .name = "passout", |
250 | .argname = "arg", | 250 | .argname = "arg", |
251 | .desc = "Output file passphrase source", | 251 | .desc = "Output file passphrase source", |
252 | .type = OPTION_ARG, | 252 | .type = OPTION_ARG, |
253 | .opt.arg = &genrsa_config.passargout, | 253 | .opt.arg = &cfg.passargout, |
254 | }, | 254 | }, |
255 | { NULL }, | 255 | { NULL }, |
256 | }; | 256 | }; |
@@ -300,8 +300,8 @@ genrsa_main(int argc, char **argv) | |||
300 | goto err; | 300 | goto err; |
301 | } | 301 | } |
302 | 302 | ||
303 | memset(&genrsa_config, 0, sizeof(genrsa_config)); | 303 | memset(&cfg, 0, sizeof(cfg)); |
304 | genrsa_config.f4 = RSA_F4; | 304 | cfg.f4 = RSA_F4; |
305 | 305 | ||
306 | if (options_parse(argc, argv, genrsa_options, &numbits, NULL) != 0) { | 306 | if (options_parse(argc, argv, genrsa_options, &numbits, NULL) != 0) { |
307 | genrsa_usage(); | 307 | genrsa_usage(); |
@@ -314,17 +314,17 @@ genrsa_main(int argc, char **argv) | |||
314 | goto err; | 314 | goto err; |
315 | } | 315 | } |
316 | 316 | ||
317 | if (!app_passwd(bio_err, NULL, genrsa_config.passargout, NULL, | 317 | if (!app_passwd(bio_err, NULL, cfg.passargout, NULL, |
318 | &passout)) { | 318 | &passout)) { |
319 | BIO_printf(bio_err, "Error getting password\n"); | 319 | BIO_printf(bio_err, "Error getting password\n"); |
320 | goto err; | 320 | goto err; |
321 | } | 321 | } |
322 | 322 | ||
323 | if (genrsa_config.outfile == NULL) { | 323 | if (cfg.outfile == NULL) { |
324 | BIO_set_fp(out, stdout, BIO_NOCLOSE); | 324 | BIO_set_fp(out, stdout, BIO_NOCLOSE); |
325 | } else { | 325 | } else { |
326 | if (BIO_write_filename(out, genrsa_config.outfile) <= 0) { | 326 | if (BIO_write_filename(out, cfg.outfile) <= 0) { |
327 | perror(genrsa_config.outfile); | 327 | perror(cfg.outfile); |
328 | goto err; | 328 | goto err; |
329 | } | 329 | } |
330 | } | 330 | } |
@@ -335,7 +335,7 @@ genrsa_main(int argc, char **argv) | |||
335 | if (!rsa) | 335 | if (!rsa) |
336 | goto err; | 336 | goto err; |
337 | 337 | ||
338 | if (!BN_set_word(bn, genrsa_config.f4) || | 338 | if (!BN_set_word(bn, cfg.f4) || |
339 | !RSA_generate_key_ex(rsa, num, bn, cb)) | 339 | !RSA_generate_key_ex(rsa, num, bn, cb)) |
340 | goto err; | 340 | goto err; |
341 | 341 | ||
@@ -348,8 +348,8 @@ genrsa_main(int argc, char **argv) | |||
348 | { | 348 | { |
349 | PW_CB_DATA cb_data; | 349 | PW_CB_DATA cb_data; |
350 | cb_data.password = passout; | 350 | cb_data.password = passout; |
351 | cb_data.prompt_info = genrsa_config.outfile; | 351 | cb_data.prompt_info = cfg.outfile; |
352 | if (!PEM_write_bio_RSAPrivateKey(out, rsa, genrsa_config.enc, | 352 | if (!PEM_write_bio_RSAPrivateKey(out, rsa, cfg.enc, |
353 | NULL, 0, password_callback, &cb_data)) | 353 | NULL, 0, password_callback, &cb_data)) |
354 | goto err; | 354 | goto err; |
355 | } | 355 | } |
diff --git a/src/usr.bin/openssl/nseq.c b/src/usr.bin/openssl/nseq.c index 7be116e67b..fb0dda5dca 100644 --- a/src/usr.bin/openssl/nseq.c +++ b/src/usr.bin/openssl/nseq.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: nseq.c,v 1.10 2022/11/11 17:07:39 joshua Exp $ */ | 1 | /* $OpenBSD: nseq.c,v 1.11 2023/03/06 14:32:06 tb 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 1999. | 3 | * project 1999. |
4 | */ | 4 | */ |
@@ -68,7 +68,7 @@ static struct { | |||
68 | char *infile; | 68 | char *infile; |
69 | char *outfile; | 69 | char *outfile; |
70 | int toseq; | 70 | int toseq; |
71 | } nseq_config; | 71 | } cfg; |
72 | 72 | ||
73 | static const struct option nseq_options[] = { | 73 | static const struct option nseq_options[] = { |
74 | { | 74 | { |
@@ -76,20 +76,20 @@ static const struct option nseq_options[] = { | |||
76 | .argname = "file", | 76 | .argname = "file", |
77 | .desc = "Input file to read from (default stdin)", | 77 | .desc = "Input file to read from (default stdin)", |
78 | .type = OPTION_ARG, | 78 | .type = OPTION_ARG, |
79 | .opt.arg = &nseq_config.infile, | 79 | .opt.arg = &cfg.infile, |
80 | }, | 80 | }, |
81 | { | 81 | { |
82 | .name = "out", | 82 | .name = "out", |
83 | .argname = "file", | 83 | .argname = "file", |
84 | .desc = "Output file to write to (default stdout)", | 84 | .desc = "Output file to write to (default stdout)", |
85 | .type = OPTION_ARG, | 85 | .type = OPTION_ARG, |
86 | .opt.arg = &nseq_config.outfile, | 86 | .opt.arg = &cfg.outfile, |
87 | }, | 87 | }, |
88 | { | 88 | { |
89 | .name = "toseq", | 89 | .name = "toseq", |
90 | .desc = "Convert certificates to Netscape certificate sequence", | 90 | .desc = "Convert certificates to Netscape certificate sequence", |
91 | .type = OPTION_FLAG, | 91 | .type = OPTION_FLAG, |
92 | .opt.flag = &nseq_config.toseq, | 92 | .opt.flag = &cfg.toseq, |
93 | }, | 93 | }, |
94 | { NULL }, | 94 | { NULL }, |
95 | }; | 95 | }; |
@@ -114,39 +114,39 @@ nseq_main(int argc, char **argv) | |||
114 | exit(1); | 114 | exit(1); |
115 | } | 115 | } |
116 | 116 | ||
117 | memset(&nseq_config, 0, sizeof(nseq_config)); | 117 | memset(&cfg, 0, sizeof(cfg)); |
118 | 118 | ||
119 | if (options_parse(argc, argv, nseq_options, NULL, NULL) != 0) { | 119 | if (options_parse(argc, argv, nseq_options, NULL, NULL) != 0) { |
120 | nseq_usage(); | 120 | nseq_usage(); |
121 | return (1); | 121 | return (1); |
122 | } | 122 | } |
123 | 123 | ||
124 | if (nseq_config.infile) { | 124 | if (cfg.infile) { |
125 | if (!(in = BIO_new_file(nseq_config.infile, "r"))) { | 125 | if (!(in = BIO_new_file(cfg.infile, "r"))) { |
126 | BIO_printf(bio_err, | 126 | BIO_printf(bio_err, |
127 | "Can't open input file %s\n", nseq_config.infile); | 127 | "Can't open input file %s\n", cfg.infile); |
128 | goto end; | 128 | goto end; |
129 | } | 129 | } |
130 | } else | 130 | } else |
131 | in = BIO_new_fp(stdin, BIO_NOCLOSE); | 131 | in = BIO_new_fp(stdin, BIO_NOCLOSE); |
132 | 132 | ||
133 | if (nseq_config.outfile) { | 133 | if (cfg.outfile) { |
134 | if (!(out = BIO_new_file(nseq_config.outfile, "w"))) { | 134 | if (!(out = BIO_new_file(cfg.outfile, "w"))) { |
135 | BIO_printf(bio_err, | 135 | BIO_printf(bio_err, |
136 | "Can't open output file %s\n", nseq_config.outfile); | 136 | "Can't open output file %s\n", cfg.outfile); |
137 | goto end; | 137 | goto end; |
138 | } | 138 | } |
139 | } else { | 139 | } else { |
140 | out = BIO_new_fp(stdout, BIO_NOCLOSE); | 140 | out = BIO_new_fp(stdout, BIO_NOCLOSE); |
141 | } | 141 | } |
142 | if (nseq_config.toseq) { | 142 | if (cfg.toseq) { |
143 | seq = NETSCAPE_CERT_SEQUENCE_new(); | 143 | seq = NETSCAPE_CERT_SEQUENCE_new(); |
144 | seq->certs = sk_X509_new_null(); | 144 | seq->certs = sk_X509_new_null(); |
145 | while ((x509 = PEM_read_bio_X509(in, NULL, NULL, NULL))) | 145 | while ((x509 = PEM_read_bio_X509(in, NULL, NULL, NULL))) |
146 | sk_X509_push(seq->certs, x509); | 146 | sk_X509_push(seq->certs, x509); |
147 | 147 | ||
148 | if (!sk_X509_num(seq->certs)) { | 148 | if (!sk_X509_num(seq->certs)) { |
149 | BIO_printf(bio_err, "Error reading certs file %s\n", nseq_config.infile); | 149 | BIO_printf(bio_err, "Error reading certs file %s\n", cfg.infile); |
150 | ERR_print_errors(bio_err); | 150 | ERR_print_errors(bio_err); |
151 | goto end; | 151 | goto end; |
152 | } | 152 | } |
@@ -155,7 +155,7 @@ nseq_main(int argc, char **argv) | |||
155 | goto end; | 155 | goto end; |
156 | } | 156 | } |
157 | if (!(seq = PEM_read_bio_NETSCAPE_CERT_SEQUENCE(in, NULL, NULL, NULL))) { | 157 | if (!(seq = PEM_read_bio_NETSCAPE_CERT_SEQUENCE(in, NULL, NULL, NULL))) { |
158 | BIO_printf(bio_err, "Error reading sequence file %s\n", nseq_config.infile); | 158 | BIO_printf(bio_err, "Error reading sequence file %s\n", cfg.infile); |
159 | ERR_print_errors(bio_err); | 159 | ERR_print_errors(bio_err); |
160 | goto end; | 160 | goto end; |
161 | } | 161 | } |
diff --git a/src/usr.bin/openssl/ocsp.c b/src/usr.bin/openssl/ocsp.c index 026bd49b0a..cc942a459c 100644 --- a/src/usr.bin/openssl/ocsp.c +++ b/src/usr.bin/openssl/ocsp.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ocsp.c,v 1.22 2022/11/11 17:07:39 joshua Exp $ */ | 1 | /* $OpenBSD: ocsp.c,v 1.23 2023/03/06 14:32:06 tb 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 | */ |
@@ -143,27 +143,27 @@ static struct { | |||
143 | int use_ssl; | 143 | int use_ssl; |
144 | char *verify_certfile; | 144 | char *verify_certfile; |
145 | unsigned long verify_flags; | 145 | unsigned long verify_flags; |
146 | } ocsp_config; | 146 | } cfg; |
147 | 147 | ||
148 | static int | 148 | static int |
149 | ocsp_opt_cert(char *arg) | 149 | ocsp_opt_cert(char *arg) |
150 | { | 150 | { |
151 | X509_free(ocsp_config.cert); | 151 | X509_free(cfg.cert); |
152 | ocsp_config.cert = load_cert(bio_err, arg, FORMAT_PEM, NULL, | 152 | cfg.cert = load_cert(bio_err, arg, FORMAT_PEM, NULL, |
153 | "certificate"); | 153 | "certificate"); |
154 | if (ocsp_config.cert == NULL) { | 154 | if (cfg.cert == NULL) { |
155 | ocsp_config.no_usage = 1; | 155 | cfg.no_usage = 1; |
156 | return (1); | 156 | return (1); |
157 | } | 157 | } |
158 | if (ocsp_config.cert_id_md == NULL) | 158 | if (cfg.cert_id_md == NULL) |
159 | ocsp_config.cert_id_md = EVP_sha1(); | 159 | cfg.cert_id_md = EVP_sha1(); |
160 | if (!add_ocsp_cert(&ocsp_config.req, ocsp_config.cert, | 160 | if (!add_ocsp_cert(&cfg.req, cfg.cert, |
161 | ocsp_config.cert_id_md, ocsp_config.issuer, ocsp_config.ids)) { | 161 | cfg.cert_id_md, cfg.issuer, cfg.ids)) { |
162 | ocsp_config.no_usage = 1; | 162 | cfg.no_usage = 1; |
163 | return (1); | 163 | return (1); |
164 | } | 164 | } |
165 | if (!sk_OPENSSL_STRING_push(ocsp_config.reqnames, arg)) { | 165 | if (!sk_OPENSSL_STRING_push(cfg.reqnames, arg)) { |
166 | ocsp_config.no_usage = 1; | 166 | cfg.no_usage = 1; |
167 | return (1); | 167 | return (1); |
168 | } | 168 | } |
169 | return (0); | 169 | return (0); |
@@ -177,7 +177,7 @@ ocsp_opt_cert_id_md(int argc, char **argv, int *argsused) | |||
177 | if (*name++ != '-') | 177 | if (*name++ != '-') |
178 | return (1); | 178 | return (1); |
179 | 179 | ||
180 | if ((ocsp_config.cert_id_md = EVP_get_digestbyname(name)) == NULL) | 180 | if ((cfg.cert_id_md = EVP_get_digestbyname(name)) == NULL) |
181 | return (1); | 181 | return (1); |
182 | 182 | ||
183 | *argsused = 1; | 183 | *argsused = 1; |
@@ -190,8 +190,8 @@ ocsp_opt_header(int argc, char **argv, int *argsused) | |||
190 | if (argc < 3 || argv[1] == NULL || argv[2] == NULL) | 190 | if (argc < 3 || argv[1] == NULL || argv[2] == NULL) |
191 | return (1); | 191 | return (1); |
192 | 192 | ||
193 | if (!X509V3_add_value(argv[1], argv[2], &ocsp_config.headers)) { | 193 | if (!X509V3_add_value(argv[1], argv[2], &cfg.headers)) { |
194 | ocsp_config.no_usage = 1; | 194 | cfg.no_usage = 1; |
195 | return (1); | 195 | return (1); |
196 | } | 196 | } |
197 | 197 | ||
@@ -202,21 +202,21 @@ ocsp_opt_header(int argc, char **argv, int *argsused) | |||
202 | static int | 202 | static int |
203 | ocsp_opt_host(char *arg) | 203 | ocsp_opt_host(char *arg) |
204 | { | 204 | { |
205 | if (ocsp_config.use_ssl != -1) | 205 | if (cfg.use_ssl != -1) |
206 | return (1); | 206 | return (1); |
207 | 207 | ||
208 | ocsp_config.host = arg; | 208 | cfg.host = arg; |
209 | return (0); | 209 | return (0); |
210 | } | 210 | } |
211 | 211 | ||
212 | static int | 212 | static int |
213 | ocsp_opt_issuer(char *arg) | 213 | ocsp_opt_issuer(char *arg) |
214 | { | 214 | { |
215 | X509_free(ocsp_config.issuer); | 215 | X509_free(cfg.issuer); |
216 | ocsp_config.issuer = load_cert(bio_err, arg, FORMAT_PEM, NULL, | 216 | cfg.issuer = load_cert(bio_err, arg, FORMAT_PEM, NULL, |
217 | "issuer certificate"); | 217 | "issuer certificate"); |
218 | if (ocsp_config.issuer == NULL) { | 218 | if (cfg.issuer == NULL) { |
219 | ocsp_config.no_usage = 1; | 219 | cfg.no_usage = 1; |
220 | return (1); | 220 | return (1); |
221 | } | 221 | } |
222 | return (0); | 222 | return (0); |
@@ -227,7 +227,7 @@ ocsp_opt_ndays(char *arg) | |||
227 | { | 227 | { |
228 | const char *errstr = NULL; | 228 | const char *errstr = NULL; |
229 | 229 | ||
230 | ocsp_config.ndays = strtonum(arg, 0, INT_MAX, &errstr); | 230 | cfg.ndays = strtonum(arg, 0, INT_MAX, &errstr); |
231 | if (errstr != NULL) { | 231 | if (errstr != NULL) { |
232 | BIO_printf(bio_err, "Illegal update period %s: %s\n", | 232 | BIO_printf(bio_err, "Illegal update period %s: %s\n", |
233 | arg, errstr); | 233 | arg, errstr); |
@@ -241,17 +241,17 @@ ocsp_opt_nmin(char *arg) | |||
241 | { | 241 | { |
242 | const char *errstr = NULL; | 242 | const char *errstr = NULL; |
243 | 243 | ||
244 | ocsp_config.nmin = strtonum(arg, 0, INT_MAX, &errstr); | 244 | cfg.nmin = strtonum(arg, 0, INT_MAX, &errstr); |
245 | if (errstr != NULL) { | 245 | if (errstr != NULL) { |
246 | BIO_printf(bio_err, "Illegal update period %s: %s\n", | 246 | BIO_printf(bio_err, "Illegal update period %s: %s\n", |
247 | arg, errstr); | 247 | arg, errstr); |
248 | return (1); | 248 | return (1); |
249 | } | 249 | } |
250 | 250 | ||
251 | if (ocsp_config.ndays != -1) | 251 | if (cfg.ndays != -1) |
252 | return (1); | 252 | return (1); |
253 | 253 | ||
254 | ocsp_config.ndays = 0; | 254 | cfg.ndays = 0; |
255 | return (0); | 255 | return (0); |
256 | } | 256 | } |
257 | 257 | ||
@@ -260,7 +260,7 @@ ocsp_opt_nrequest(char *arg) | |||
260 | { | 260 | { |
261 | const char *errstr = NULL; | 261 | const char *errstr = NULL; |
262 | 262 | ||
263 | ocsp_config.accept_count = strtonum(arg, 0, INT_MAX, &errstr); | 263 | cfg.accept_count = strtonum(arg, 0, INT_MAX, &errstr); |
264 | if (errstr != NULL) { | 264 | if (errstr != NULL) { |
265 | BIO_printf(bio_err, "Illegal accept count %s: %s\n", | 265 | BIO_printf(bio_err, "Illegal accept count %s: %s\n", |
266 | arg, errstr); | 266 | arg, errstr); |
@@ -272,25 +272,25 @@ ocsp_opt_nrequest(char *arg) | |||
272 | static int | 272 | static int |
273 | ocsp_opt_port(char *arg) | 273 | ocsp_opt_port(char *arg) |
274 | { | 274 | { |
275 | if (ocsp_config.use_ssl != -1) | 275 | if (cfg.use_ssl != -1) |
276 | return (1); | 276 | return (1); |
277 | 277 | ||
278 | ocsp_config.port = arg; | 278 | cfg.port = arg; |
279 | return (0); | 279 | return (0); |
280 | } | 280 | } |
281 | 281 | ||
282 | static int | 282 | static int |
283 | ocsp_opt_serial(char *arg) | 283 | ocsp_opt_serial(char *arg) |
284 | { | 284 | { |
285 | if (ocsp_config.cert_id_md == NULL) | 285 | if (cfg.cert_id_md == NULL) |
286 | ocsp_config.cert_id_md = EVP_sha1(); | 286 | cfg.cert_id_md = EVP_sha1(); |
287 | if (!add_ocsp_serial(&ocsp_config.req, arg, ocsp_config.cert_id_md, | 287 | if (!add_ocsp_serial(&cfg.req, arg, cfg.cert_id_md, |
288 | ocsp_config.issuer, ocsp_config.ids)) { | 288 | cfg.issuer, cfg.ids)) { |
289 | ocsp_config.no_usage = 1; | 289 | cfg.no_usage = 1; |
290 | return (1); | 290 | return (1); |
291 | } | 291 | } |
292 | if (!sk_OPENSSL_STRING_push(ocsp_config.reqnames, arg)) { | 292 | if (!sk_OPENSSL_STRING_push(cfg.reqnames, arg)) { |
293 | ocsp_config.no_usage = 1; | 293 | cfg.no_usage = 1; |
294 | return (1); | 294 | return (1); |
295 | } | 295 | } |
296 | return (0); | 296 | return (0); |
@@ -301,7 +301,7 @@ ocsp_opt_status_age(char *arg) | |||
301 | { | 301 | { |
302 | const char *errstr = NULL; | 302 | const char *errstr = NULL; |
303 | 303 | ||
304 | ocsp_config.maxage = strtonum(arg, 0, LONG_MAX, &errstr); | 304 | cfg.maxage = strtonum(arg, 0, LONG_MAX, &errstr); |
305 | if (errstr != NULL) { | 305 | if (errstr != NULL) { |
306 | BIO_printf(bio_err, "Illegal validity age %s: %s\n", | 306 | BIO_printf(bio_err, "Illegal validity age %s: %s\n", |
307 | arg, errstr); | 307 | arg, errstr); |
@@ -313,8 +313,8 @@ ocsp_opt_status_age(char *arg) | |||
313 | static int | 313 | static int |
314 | ocsp_opt_text(void) | 314 | ocsp_opt_text(void) |
315 | { | 315 | { |
316 | ocsp_config.req_text = 1; | 316 | cfg.req_text = 1; |
317 | ocsp_config.resp_text = 1; | 317 | cfg.resp_text = 1; |
318 | return (0); | 318 | return (0); |
319 | } | 319 | } |
320 | 320 | ||
@@ -323,7 +323,7 @@ ocsp_opt_timeout(char *arg) | |||
323 | { | 323 | { |
324 | const char *errstr = NULL; | 324 | const char *errstr = NULL; |
325 | 325 | ||
326 | ocsp_config.req_timeout = strtonum(arg, 0, INT_MAX, &errstr); | 326 | cfg.req_timeout = strtonum(arg, 0, INT_MAX, &errstr); |
327 | if (errstr != NULL) { | 327 | if (errstr != NULL) { |
328 | BIO_printf(bio_err, "Illegal timeout value %s: %s\n", | 328 | BIO_printf(bio_err, "Illegal timeout value %s: %s\n", |
329 | arg, errstr); | 329 | arg, errstr); |
@@ -335,10 +335,10 @@ ocsp_opt_timeout(char *arg) | |||
335 | static int | 335 | static int |
336 | ocsp_opt_url(char *arg) | 336 | ocsp_opt_url(char *arg) |
337 | { | 337 | { |
338 | if (ocsp_config.host == NULL && ocsp_config.port == NULL && | 338 | if (cfg.host == NULL && cfg.port == NULL && |
339 | ocsp_config.path == NULL) { | 339 | cfg.path == NULL) { |
340 | if (!OCSP_parse_url(arg, &ocsp_config.host, &ocsp_config.port, | 340 | if (!OCSP_parse_url(arg, &cfg.host, &cfg.port, |
341 | &ocsp_config.path, &ocsp_config.use_ssl)) { | 341 | &cfg.path, &cfg.use_ssl)) { |
342 | BIO_printf(bio_err, "Error parsing URL\n"); | 342 | BIO_printf(bio_err, "Error parsing URL\n"); |
343 | return (1); | 343 | return (1); |
344 | } | 344 | } |
@@ -349,8 +349,8 @@ ocsp_opt_url(char *arg) | |||
349 | static int | 349 | static int |
350 | ocsp_opt_vafile(char *arg) | 350 | ocsp_opt_vafile(char *arg) |
351 | { | 351 | { |
352 | ocsp_config.verify_certfile = arg; | 352 | cfg.verify_certfile = arg; |
353 | ocsp_config.verify_flags |= OCSP_TRUSTOTHER; | 353 | cfg.verify_flags |= OCSP_TRUSTOTHER; |
354 | return (0); | 354 | return (0); |
355 | } | 355 | } |
356 | 356 | ||
@@ -359,7 +359,7 @@ ocsp_opt_validity_period(char *arg) | |||
359 | { | 359 | { |
360 | const char *errstr = NULL; | 360 | const char *errstr = NULL; |
361 | 361 | ||
362 | ocsp_config.nsec = strtonum(arg, 0, LONG_MAX, &errstr); | 362 | cfg.nsec = strtonum(arg, 0, LONG_MAX, &errstr); |
363 | if (errstr != NULL) { | 363 | if (errstr != NULL) { |
364 | BIO_printf(bio_err, "Illegal validity period %s: %s\n", | 364 | BIO_printf(bio_err, "Illegal validity period %s: %s\n", |
365 | arg, errstr); | 365 | arg, errstr); |
@@ -374,21 +374,21 @@ static const struct option ocsp_options[] = { | |||
374 | .argname = "file", | 374 | .argname = "file", |
375 | .desc = "CA certificate corresponding to the revocation information", | 375 | .desc = "CA certificate corresponding to the revocation information", |
376 | .type = OPTION_ARG, | 376 | .type = OPTION_ARG, |
377 | .opt.arg = &ocsp_config.rca_filename, | 377 | .opt.arg = &cfg.rca_filename, |
378 | }, | 378 | }, |
379 | { | 379 | { |
380 | .name = "CAfile", | 380 | .name = "CAfile", |
381 | .argname = "file", | 381 | .argname = "file", |
382 | .desc = "Trusted certificates file", | 382 | .desc = "Trusted certificates file", |
383 | .type = OPTION_ARG, | 383 | .type = OPTION_ARG, |
384 | .opt.arg = &ocsp_config.CAfile, | 384 | .opt.arg = &cfg.CAfile, |
385 | }, | 385 | }, |
386 | { | 386 | { |
387 | .name = "CApath", | 387 | .name = "CApath", |
388 | .argname = "directory", | 388 | .argname = "directory", |
389 | .desc = "Trusted certificates directory", | 389 | .desc = "Trusted certificates directory", |
390 | .type = OPTION_ARG, | 390 | .type = OPTION_ARG, |
391 | .opt.arg = &ocsp_config.CApath, | 391 | .opt.arg = &cfg.CApath, |
392 | }, | 392 | }, |
393 | { | 393 | { |
394 | .name = "cert", | 394 | .name = "cert", |
@@ -415,14 +415,14 @@ static const struct option ocsp_options[] = { | |||
415 | .name = "ignore_err", | 415 | .name = "ignore_err", |
416 | .desc = "Ignore the invalid response", | 416 | .desc = "Ignore the invalid response", |
417 | .type = OPTION_FLAG, | 417 | .type = OPTION_FLAG, |
418 | .opt.flag = &ocsp_config.ignore_err, | 418 | .opt.flag = &cfg.ignore_err, |
419 | }, | 419 | }, |
420 | { | 420 | { |
421 | .name = "index", | 421 | .name = "index", |
422 | .argname = "indexfile", | 422 | .argname = "indexfile", |
423 | .desc = "Certificate status index file", | 423 | .desc = "Certificate status index file", |
424 | .type = OPTION_ARG, | 424 | .type = OPTION_ARG, |
425 | .opt.arg = &ocsp_config.ridx_filename, | 425 | .opt.arg = &cfg.ridx_filename, |
426 | }, | 426 | }, |
427 | { | 427 | { |
428 | .name = "issuer", | 428 | .name = "issuer", |
@@ -449,70 +449,70 @@ static const struct option ocsp_options[] = { | |||
449 | .name = "no_cert_checks", | 449 | .name = "no_cert_checks", |
450 | .desc = "Don't do additional checks on signing certificate", | 450 | .desc = "Don't do additional checks on signing certificate", |
451 | .type = OPTION_UL_VALUE_OR, | 451 | .type = OPTION_UL_VALUE_OR, |
452 | .opt.ulvalue = &ocsp_config.verify_flags, | 452 | .opt.ulvalue = &cfg.verify_flags, |
453 | .ulvalue = OCSP_NOCHECKS, | 453 | .ulvalue = OCSP_NOCHECKS, |
454 | }, | 454 | }, |
455 | { | 455 | { |
456 | .name = "no_cert_verify", | 456 | .name = "no_cert_verify", |
457 | .desc = "Don't check signing certificate", | 457 | .desc = "Don't check signing certificate", |
458 | .type = OPTION_UL_VALUE_OR, | 458 | .type = OPTION_UL_VALUE_OR, |
459 | .opt.ulvalue = &ocsp_config.verify_flags, | 459 | .opt.ulvalue = &cfg.verify_flags, |
460 | .ulvalue = OCSP_NOVERIFY, | 460 | .ulvalue = OCSP_NOVERIFY, |
461 | }, | 461 | }, |
462 | { | 462 | { |
463 | .name = "no_certs", | 463 | .name = "no_certs", |
464 | .desc = "Don't include any certificates in signed request", | 464 | .desc = "Don't include any certificates in signed request", |
465 | .type = OPTION_UL_VALUE_OR, | 465 | .type = OPTION_UL_VALUE_OR, |
466 | .opt.ulvalue = &ocsp_config.sign_flags, | 466 | .opt.ulvalue = &cfg.sign_flags, |
467 | .ulvalue = OCSP_NOCERTS, | 467 | .ulvalue = OCSP_NOCERTS, |
468 | }, | 468 | }, |
469 | { | 469 | { |
470 | .name = "no_chain", | 470 | .name = "no_chain", |
471 | .desc = "Don't use certificates in the response", | 471 | .desc = "Don't use certificates in the response", |
472 | .type = OPTION_UL_VALUE_OR, | 472 | .type = OPTION_UL_VALUE_OR, |
473 | .opt.ulvalue = &ocsp_config.verify_flags, | 473 | .opt.ulvalue = &cfg.verify_flags, |
474 | .ulvalue = OCSP_NOCHAIN, | 474 | .ulvalue = OCSP_NOCHAIN, |
475 | }, | 475 | }, |
476 | { | 476 | { |
477 | .name = "no_explicit", | 477 | .name = "no_explicit", |
478 | .desc = "Don't check the explicit trust for OCSP signing", | 478 | .desc = "Don't check the explicit trust for OCSP signing", |
479 | .type = OPTION_UL_VALUE_OR, | 479 | .type = OPTION_UL_VALUE_OR, |
480 | .opt.ulvalue = &ocsp_config.verify_flags, | 480 | .opt.ulvalue = &cfg.verify_flags, |
481 | .ulvalue = OCSP_NOEXPLICIT, | 481 | .ulvalue = OCSP_NOEXPLICIT, |
482 | }, | 482 | }, |
483 | { | 483 | { |
484 | .name = "no_intern", | 484 | .name = "no_intern", |
485 | .desc = "Don't search certificates contained in response for signer", | 485 | .desc = "Don't search certificates contained in response for signer", |
486 | .type = OPTION_UL_VALUE_OR, | 486 | .type = OPTION_UL_VALUE_OR, |
487 | .opt.ulvalue = &ocsp_config.verify_flags, | 487 | .opt.ulvalue = &cfg.verify_flags, |
488 | .ulvalue = OCSP_NOINTERN, | 488 | .ulvalue = OCSP_NOINTERN, |
489 | }, | 489 | }, |
490 | { | 490 | { |
491 | .name = "no_nonce", | 491 | .name = "no_nonce", |
492 | .desc = "Don't add OCSP nonce to request", | 492 | .desc = "Don't add OCSP nonce to request", |
493 | .type = OPTION_VALUE, | 493 | .type = OPTION_VALUE, |
494 | .opt.value = &ocsp_config.add_nonce, | 494 | .opt.value = &cfg.add_nonce, |
495 | .value = 0, | 495 | .value = 0, |
496 | }, | 496 | }, |
497 | { | 497 | { |
498 | .name = "no_signature_verify", | 498 | .name = "no_signature_verify", |
499 | .desc = "Don't check signature on response", | 499 | .desc = "Don't check signature on response", |
500 | .type = OPTION_UL_VALUE_OR, | 500 | .type = OPTION_UL_VALUE_OR, |
501 | .opt.ulvalue = &ocsp_config.verify_flags, | 501 | .opt.ulvalue = &cfg.verify_flags, |
502 | .ulvalue = OCSP_NOSIGS, | 502 | .ulvalue = OCSP_NOSIGS, |
503 | }, | 503 | }, |
504 | { | 504 | { |
505 | .name = "nonce", | 505 | .name = "nonce", |
506 | .desc = "Add OCSP nonce to request", | 506 | .desc = "Add OCSP nonce to request", |
507 | .type = OPTION_VALUE, | 507 | .type = OPTION_VALUE, |
508 | .opt.value = &ocsp_config.add_nonce, | 508 | .opt.value = &cfg.add_nonce, |
509 | .value = 2, | 509 | .value = 2, |
510 | }, | 510 | }, |
511 | { | 511 | { |
512 | .name = "noverify", | 512 | .name = "noverify", |
513 | .desc = "Don't verify response at all", | 513 | .desc = "Don't verify response at all", |
514 | .type = OPTION_FLAG, | 514 | .type = OPTION_FLAG, |
515 | .opt.flag = &ocsp_config.noverify, | 515 | .opt.flag = &cfg.noverify, |
516 | }, | 516 | }, |
517 | { | 517 | { |
518 | .name = "nrequest", | 518 | .name = "nrequest", |
@@ -526,14 +526,14 @@ static const struct option ocsp_options[] = { | |||
526 | .argname = "file", | 526 | .argname = "file", |
527 | .desc = "Output filename", | 527 | .desc = "Output filename", |
528 | .type = OPTION_ARG, | 528 | .type = OPTION_ARG, |
529 | .opt.arg = &ocsp_config.outfile, | 529 | .opt.arg = &cfg.outfile, |
530 | }, | 530 | }, |
531 | { | 531 | { |
532 | .name = "path", | 532 | .name = "path", |
533 | .argname = "path", | 533 | .argname = "path", |
534 | .desc = "Path to use in OCSP request", | 534 | .desc = "Path to use in OCSP request", |
535 | .type = OPTION_ARG, | 535 | .type = OPTION_ARG, |
536 | .opt.arg = &ocsp_config.path, | 536 | .opt.arg = &cfg.path, |
537 | }, | 537 | }, |
538 | { | 538 | { |
539 | .name = "port", | 539 | .name = "port", |
@@ -546,76 +546,76 @@ static const struct option ocsp_options[] = { | |||
546 | .name = "req_text", | 546 | .name = "req_text", |
547 | .desc = "Print text form of request", | 547 | .desc = "Print text form of request", |
548 | .type = OPTION_FLAG, | 548 | .type = OPTION_FLAG, |
549 | .opt.flag = &ocsp_config.req_text, | 549 | .opt.flag = &cfg.req_text, |
550 | }, | 550 | }, |
551 | { | 551 | { |
552 | .name = "reqin", | 552 | .name = "reqin", |
553 | .argname = "file", | 553 | .argname = "file", |
554 | .desc = "Read DER encoded OCSP request from \"file\"", | 554 | .desc = "Read DER encoded OCSP request from \"file\"", |
555 | .type = OPTION_ARG, | 555 | .type = OPTION_ARG, |
556 | .opt.arg = &ocsp_config.reqin, | 556 | .opt.arg = &cfg.reqin, |
557 | }, | 557 | }, |
558 | { | 558 | { |
559 | .name = "reqout", | 559 | .name = "reqout", |
560 | .argname = "file", | 560 | .argname = "file", |
561 | .desc = "Write DER encoded OCSP request to \"file\"", | 561 | .desc = "Write DER encoded OCSP request to \"file\"", |
562 | .type = OPTION_ARG, | 562 | .type = OPTION_ARG, |
563 | .opt.arg = &ocsp_config.reqout, | 563 | .opt.arg = &cfg.reqout, |
564 | }, | 564 | }, |
565 | { | 565 | { |
566 | .name = "resp_key_id", | 566 | .name = "resp_key_id", |
567 | .desc = "Identify response by signing certificate key ID", | 567 | .desc = "Identify response by signing certificate key ID", |
568 | .type = OPTION_UL_VALUE_OR, | 568 | .type = OPTION_UL_VALUE_OR, |
569 | .opt.ulvalue = &ocsp_config.rflags, | 569 | .opt.ulvalue = &cfg.rflags, |
570 | .ulvalue = OCSP_RESPID_KEY, | 570 | .ulvalue = OCSP_RESPID_KEY, |
571 | }, | 571 | }, |
572 | { | 572 | { |
573 | .name = "resp_no_certs", | 573 | .name = "resp_no_certs", |
574 | .desc = "Don't include any certificates in response", | 574 | .desc = "Don't include any certificates in response", |
575 | .type = OPTION_UL_VALUE_OR, | 575 | .type = OPTION_UL_VALUE_OR, |
576 | .opt.ulvalue = &ocsp_config.rflags, | 576 | .opt.ulvalue = &cfg.rflags, |
577 | .ulvalue = OCSP_NOCERTS, | 577 | .ulvalue = OCSP_NOCERTS, |
578 | }, | 578 | }, |
579 | { | 579 | { |
580 | .name = "resp_text", | 580 | .name = "resp_text", |
581 | .desc = "Print text form of response", | 581 | .desc = "Print text form of response", |
582 | .type = OPTION_FLAG, | 582 | .type = OPTION_FLAG, |
583 | .opt.flag = &ocsp_config.resp_text, | 583 | .opt.flag = &cfg.resp_text, |
584 | }, | 584 | }, |
585 | { | 585 | { |
586 | .name = "respin", | 586 | .name = "respin", |
587 | .argname = "file", | 587 | .argname = "file", |
588 | .desc = "Read DER encoded OCSP response from \"file\"", | 588 | .desc = "Read DER encoded OCSP response from \"file\"", |
589 | .type = OPTION_ARG, | 589 | .type = OPTION_ARG, |
590 | .opt.arg = &ocsp_config.respin, | 590 | .opt.arg = &cfg.respin, |
591 | }, | 591 | }, |
592 | { | 592 | { |
593 | .name = "respout", | 593 | .name = "respout", |
594 | .argname = "file", | 594 | .argname = "file", |
595 | .desc = "Write DER encoded OCSP response to \"file\"", | 595 | .desc = "Write DER encoded OCSP response to \"file\"", |
596 | .type = OPTION_ARG, | 596 | .type = OPTION_ARG, |
597 | .opt.arg = &ocsp_config.respout, | 597 | .opt.arg = &cfg.respout, |
598 | }, | 598 | }, |
599 | { | 599 | { |
600 | .name = "rkey", | 600 | .name = "rkey", |
601 | .argname = "file", | 601 | .argname = "file", |
602 | .desc = "Responder key to sign responses with", | 602 | .desc = "Responder key to sign responses with", |
603 | .type = OPTION_ARG, | 603 | .type = OPTION_ARG, |
604 | .opt.arg = &ocsp_config.rkeyfile, | 604 | .opt.arg = &cfg.rkeyfile, |
605 | }, | 605 | }, |
606 | { | 606 | { |
607 | .name = "rother", | 607 | .name = "rother", |
608 | .argname = "file", | 608 | .argname = "file", |
609 | .desc = "Other certificates to include in response", | 609 | .desc = "Other certificates to include in response", |
610 | .type = OPTION_ARG, | 610 | .type = OPTION_ARG, |
611 | .opt.arg = &ocsp_config.rcertfile, | 611 | .opt.arg = &cfg.rcertfile, |
612 | }, | 612 | }, |
613 | { | 613 | { |
614 | .name = "rsigner", | 614 | .name = "rsigner", |
615 | .argname = "file", | 615 | .argname = "file", |
616 | .desc = "Responder certificate to sign responses with", | 616 | .desc = "Responder certificate to sign responses with", |
617 | .type = OPTION_ARG, | 617 | .type = OPTION_ARG, |
618 | .opt.arg = &ocsp_config.rsignfile, | 618 | .opt.arg = &cfg.rsignfile, |
619 | }, | 619 | }, |
620 | { | 620 | { |
621 | .name = "serial", | 621 | .name = "serial", |
@@ -629,21 +629,21 @@ static const struct option ocsp_options[] = { | |||
629 | .argname = "file", | 629 | .argname = "file", |
630 | .desc = "Additional certificates to include in signed request", | 630 | .desc = "Additional certificates to include in signed request", |
631 | .type = OPTION_ARG, | 631 | .type = OPTION_ARG, |
632 | .opt.arg = &ocsp_config.sign_certfile, | 632 | .opt.arg = &cfg.sign_certfile, |
633 | }, | 633 | }, |
634 | { | 634 | { |
635 | .name = "signer", | 635 | .name = "signer", |
636 | .argname = "file", | 636 | .argname = "file", |
637 | .desc = "Certificate to sign OCSP request with", | 637 | .desc = "Certificate to sign OCSP request with", |
638 | .type = OPTION_ARG, | 638 | .type = OPTION_ARG, |
639 | .opt.arg = &ocsp_config.signfile, | 639 | .opt.arg = &cfg.signfile, |
640 | }, | 640 | }, |
641 | { | 641 | { |
642 | .name = "signkey", | 642 | .name = "signkey", |
643 | .argname = "file", | 643 | .argname = "file", |
644 | .desc = "Private key to sign OCSP request with", | 644 | .desc = "Private key to sign OCSP request with", |
645 | .type = OPTION_ARG, | 645 | .type = OPTION_ARG, |
646 | .opt.arg = &ocsp_config.keyfile, | 646 | .opt.arg = &cfg.keyfile, |
647 | }, | 647 | }, |
648 | { | 648 | { |
649 | .name = "status_age", | 649 | .name = "status_age", |
@@ -669,7 +669,7 @@ static const struct option ocsp_options[] = { | |||
669 | .name = "trust_other", | 669 | .name = "trust_other", |
670 | .desc = "Don't verify additional certificates", | 670 | .desc = "Don't verify additional certificates", |
671 | .type = OPTION_UL_VALUE_OR, | 671 | .type = OPTION_UL_VALUE_OR, |
672 | .opt.ulvalue = &ocsp_config.verify_flags, | 672 | .opt.ulvalue = &cfg.verify_flags, |
673 | .ulvalue = OCSP_TRUSTOTHER, | 673 | .ulvalue = OCSP_TRUSTOTHER, |
674 | }, | 674 | }, |
675 | { | 675 | { |
@@ -698,7 +698,7 @@ static const struct option ocsp_options[] = { | |||
698 | .argname = "file", | 698 | .argname = "file", |
699 | .desc = "Additional certificates to search for signer", | 699 | .desc = "Additional certificates to search for signer", |
700 | .type = OPTION_ARG, | 700 | .type = OPTION_ARG, |
701 | .opt.arg = &ocsp_config.verify_certfile, | 701 | .opt.arg = &cfg.verify_certfile, |
702 | }, | 702 | }, |
703 | { | 703 | { |
704 | .name = NULL, | 704 | .name = NULL, |
@@ -755,37 +755,37 @@ ocsp_main(int argc, char **argv) | |||
755 | exit(1); | 755 | exit(1); |
756 | } | 756 | } |
757 | 757 | ||
758 | memset(&ocsp_config, 0, sizeof(ocsp_config)); | 758 | memset(&cfg, 0, sizeof(cfg)); |
759 | ocsp_config.accept_count = -1; | 759 | cfg.accept_count = -1; |
760 | ocsp_config.add_nonce = 1; | 760 | cfg.add_nonce = 1; |
761 | if ((ocsp_config.ids = sk_OCSP_CERTID_new_null()) == NULL) | 761 | if ((cfg.ids = sk_OCSP_CERTID_new_null()) == NULL) |
762 | goto end; | 762 | goto end; |
763 | ocsp_config.maxage = -1; | 763 | cfg.maxage = -1; |
764 | ocsp_config.ndays = -1; | 764 | cfg.ndays = -1; |
765 | ocsp_config.nsec = MAX_VALIDITY_PERIOD; | 765 | cfg.nsec = MAX_VALIDITY_PERIOD; |
766 | ocsp_config.req_timeout = -1; | 766 | cfg.req_timeout = -1; |
767 | if ((ocsp_config.reqnames = sk_OPENSSL_STRING_new_null()) == NULL) | 767 | if ((cfg.reqnames = sk_OPENSSL_STRING_new_null()) == NULL) |
768 | goto end; | 768 | goto end; |
769 | ocsp_config.use_ssl = -1; | 769 | cfg.use_ssl = -1; |
770 | 770 | ||
771 | if (options_parse(argc, argv, ocsp_options, NULL, NULL) != 0) { | 771 | if (options_parse(argc, argv, ocsp_options, NULL, NULL) != 0) { |
772 | if (ocsp_config.no_usage) | 772 | if (cfg.no_usage) |
773 | goto end; | 773 | goto end; |
774 | else | 774 | else |
775 | badarg = 1; | 775 | badarg = 1; |
776 | } | 776 | } |
777 | 777 | ||
778 | /* Have we anything to do? */ | 778 | /* Have we anything to do? */ |
779 | if (!ocsp_config.req && !ocsp_config.reqin && !ocsp_config.respin && | 779 | if (!cfg.req && !cfg.reqin && !cfg.respin && |
780 | !(ocsp_config.port && ocsp_config.ridx_filename)) | 780 | !(cfg.port && cfg.ridx_filename)) |
781 | badarg = 1; | 781 | badarg = 1; |
782 | 782 | ||
783 | if (badarg) { | 783 | if (badarg) { |
784 | ocsp_usage(); | 784 | ocsp_usage(); |
785 | goto end; | 785 | goto end; |
786 | } | 786 | } |
787 | if (ocsp_config.outfile) | 787 | if (cfg.outfile) |
788 | out = BIO_new_file(ocsp_config.outfile, "w"); | 788 | out = BIO_new_file(cfg.outfile, "w"); |
789 | else | 789 | else |
790 | out = BIO_new_fp(stdout, BIO_NOCLOSE); | 790 | out = BIO_new_fp(stdout, BIO_NOCLOSE); |
791 | 791 | ||
@@ -793,47 +793,47 @@ ocsp_main(int argc, char **argv) | |||
793 | BIO_printf(bio_err, "Error opening output file\n"); | 793 | BIO_printf(bio_err, "Error opening output file\n"); |
794 | goto end; | 794 | goto end; |
795 | } | 795 | } |
796 | if (!ocsp_config.req && (ocsp_config.add_nonce != 2)) | 796 | if (!cfg.req && (cfg.add_nonce != 2)) |
797 | ocsp_config.add_nonce = 0; | 797 | cfg.add_nonce = 0; |
798 | 798 | ||
799 | if (!ocsp_config.req && ocsp_config.reqin) { | 799 | if (!cfg.req && cfg.reqin) { |
800 | derbio = BIO_new_file(ocsp_config.reqin, "rb"); | 800 | derbio = BIO_new_file(cfg.reqin, "rb"); |
801 | if (!derbio) { | 801 | if (!derbio) { |
802 | BIO_printf(bio_err, | 802 | BIO_printf(bio_err, |
803 | "Error Opening OCSP request file\n"); | 803 | "Error Opening OCSP request file\n"); |
804 | goto end; | 804 | goto end; |
805 | } | 805 | } |
806 | ocsp_config.req = d2i_OCSP_REQUEST_bio(derbio, NULL); | 806 | cfg.req = d2i_OCSP_REQUEST_bio(derbio, NULL); |
807 | BIO_free(derbio); | 807 | BIO_free(derbio); |
808 | if (!ocsp_config.req) { | 808 | if (!cfg.req) { |
809 | BIO_printf(bio_err, "Error reading OCSP request\n"); | 809 | BIO_printf(bio_err, "Error reading OCSP request\n"); |
810 | goto end; | 810 | goto end; |
811 | } | 811 | } |
812 | } | 812 | } |
813 | if (!ocsp_config.req && ocsp_config.port) { | 813 | if (!cfg.req && cfg.port) { |
814 | acbio = init_responder(ocsp_config.port); | 814 | acbio = init_responder(cfg.port); |
815 | if (!acbio) | 815 | if (!acbio) |
816 | goto end; | 816 | goto end; |
817 | } | 817 | } |
818 | if (ocsp_config.rsignfile && !rdb) { | 818 | if (cfg.rsignfile && !rdb) { |
819 | if (!ocsp_config.rkeyfile) | 819 | if (!cfg.rkeyfile) |
820 | ocsp_config.rkeyfile = ocsp_config.rsignfile; | 820 | cfg.rkeyfile = cfg.rsignfile; |
821 | rsigner = load_cert(bio_err, ocsp_config.rsignfile, FORMAT_PEM, | 821 | rsigner = load_cert(bio_err, cfg.rsignfile, FORMAT_PEM, |
822 | NULL, "responder certificate"); | 822 | NULL, "responder certificate"); |
823 | if (!rsigner) { | 823 | if (!rsigner) { |
824 | BIO_printf(bio_err, | 824 | BIO_printf(bio_err, |
825 | "Error loading responder certificate\n"); | 825 | "Error loading responder certificate\n"); |
826 | goto end; | 826 | goto end; |
827 | } | 827 | } |
828 | rca_cert = load_cert(bio_err, ocsp_config.rca_filename, | 828 | rca_cert = load_cert(bio_err, cfg.rca_filename, |
829 | FORMAT_PEM, NULL, "CA certificate"); | 829 | FORMAT_PEM, NULL, "CA certificate"); |
830 | if (ocsp_config.rcertfile) { | 830 | if (cfg.rcertfile) { |
831 | rother = load_certs(bio_err, ocsp_config.rcertfile, | 831 | rother = load_certs(bio_err, cfg.rcertfile, |
832 | FORMAT_PEM, NULL, "responder other certificates"); | 832 | FORMAT_PEM, NULL, "responder other certificates"); |
833 | if (!rother) | 833 | if (!rother) |
834 | goto end; | 834 | goto end; |
835 | } | 835 | } |
836 | rkey = load_key(bio_err, ocsp_config.rkeyfile, FORMAT_PEM, 0, | 836 | rkey = load_key(bio_err, cfg.rkeyfile, FORMAT_PEM, 0, |
837 | NULL, "responder private key"); | 837 | NULL, "responder private key"); |
838 | if (!rkey) | 838 | if (!rkey) |
839 | goto end; | 839 | goto end; |
@@ -844,95 +844,95 @@ ocsp_main(int argc, char **argv) | |||
844 | redo_accept: | 844 | redo_accept: |
845 | 845 | ||
846 | if (acbio) { | 846 | if (acbio) { |
847 | if (!do_responder(&ocsp_config.req, &cbio, acbio, | 847 | if (!do_responder(&cfg.req, &cbio, acbio, |
848 | ocsp_config.port)) | 848 | cfg.port)) |
849 | goto end; | 849 | goto end; |
850 | if (!ocsp_config.req) { | 850 | if (!cfg.req) { |
851 | resp = OCSP_response_create( | 851 | resp = OCSP_response_create( |
852 | OCSP_RESPONSE_STATUS_MALFORMEDREQUEST, NULL); | 852 | OCSP_RESPONSE_STATUS_MALFORMEDREQUEST, NULL); |
853 | send_ocsp_response(cbio, resp); | 853 | send_ocsp_response(cbio, resp); |
854 | goto done_resp; | 854 | goto done_resp; |
855 | } | 855 | } |
856 | } | 856 | } |
857 | if (!ocsp_config.req && | 857 | if (!cfg.req && |
858 | (ocsp_config.signfile || ocsp_config.reqout || ocsp_config.host || | 858 | (cfg.signfile || cfg.reqout || cfg.host || |
859 | ocsp_config.add_nonce || ocsp_config.ridx_filename)) { | 859 | cfg.add_nonce || cfg.ridx_filename)) { |
860 | BIO_printf(bio_err, | 860 | BIO_printf(bio_err, |
861 | "Need an OCSP request for this operation!\n"); | 861 | "Need an OCSP request for this operation!\n"); |
862 | goto end; | 862 | goto end; |
863 | } | 863 | } |
864 | if (ocsp_config.req && ocsp_config.add_nonce) | 864 | if (cfg.req && cfg.add_nonce) |
865 | OCSP_request_add1_nonce(ocsp_config.req, NULL, -1); | 865 | OCSP_request_add1_nonce(cfg.req, NULL, -1); |
866 | 866 | ||
867 | if (ocsp_config.signfile) { | 867 | if (cfg.signfile) { |
868 | if (!ocsp_config.keyfile) | 868 | if (!cfg.keyfile) |
869 | ocsp_config.keyfile = ocsp_config.signfile; | 869 | cfg.keyfile = cfg.signfile; |
870 | signer = load_cert(bio_err, ocsp_config.signfile, FORMAT_PEM, | 870 | signer = load_cert(bio_err, cfg.signfile, FORMAT_PEM, |
871 | NULL, "signer certificate"); | 871 | NULL, "signer certificate"); |
872 | if (!signer) { | 872 | if (!signer) { |
873 | BIO_printf(bio_err, | 873 | BIO_printf(bio_err, |
874 | "Error loading signer certificate\n"); | 874 | "Error loading signer certificate\n"); |
875 | goto end; | 875 | goto end; |
876 | } | 876 | } |
877 | if (ocsp_config.sign_certfile) { | 877 | if (cfg.sign_certfile) { |
878 | sign_other = load_certs(bio_err, | 878 | sign_other = load_certs(bio_err, |
879 | ocsp_config.sign_certfile, FORMAT_PEM, NULL, | 879 | cfg.sign_certfile, FORMAT_PEM, NULL, |
880 | "signer certificates"); | 880 | "signer certificates"); |
881 | if (!sign_other) | 881 | if (!sign_other) |
882 | goto end; | 882 | goto end; |
883 | } | 883 | } |
884 | key = load_key(bio_err, ocsp_config.keyfile, FORMAT_PEM, 0, | 884 | key = load_key(bio_err, cfg.keyfile, FORMAT_PEM, 0, |
885 | NULL, "signer private key"); | 885 | NULL, "signer private key"); |
886 | if (!key) | 886 | if (!key) |
887 | goto end; | 887 | goto end; |
888 | 888 | ||
889 | if (!OCSP_request_sign(ocsp_config.req, signer, key, NULL, | 889 | if (!OCSP_request_sign(cfg.req, signer, key, NULL, |
890 | sign_other, ocsp_config.sign_flags)) { | 890 | sign_other, cfg.sign_flags)) { |
891 | BIO_printf(bio_err, "Error signing OCSP request\n"); | 891 | BIO_printf(bio_err, "Error signing OCSP request\n"); |
892 | goto end; | 892 | goto end; |
893 | } | 893 | } |
894 | } | 894 | } |
895 | if (ocsp_config.req_text && ocsp_config.req) | 895 | if (cfg.req_text && cfg.req) |
896 | OCSP_REQUEST_print(out, ocsp_config.req, 0); | 896 | OCSP_REQUEST_print(out, cfg.req, 0); |
897 | 897 | ||
898 | if (ocsp_config.reqout) { | 898 | if (cfg.reqout) { |
899 | derbio = BIO_new_file(ocsp_config.reqout, "wb"); | 899 | derbio = BIO_new_file(cfg.reqout, "wb"); |
900 | if (!derbio) { | 900 | if (!derbio) { |
901 | BIO_printf(bio_err, "Error opening file %s\n", | 901 | BIO_printf(bio_err, "Error opening file %s\n", |
902 | ocsp_config.reqout); | 902 | cfg.reqout); |
903 | goto end; | 903 | goto end; |
904 | } | 904 | } |
905 | i2d_OCSP_REQUEST_bio(derbio, ocsp_config.req); | 905 | i2d_OCSP_REQUEST_bio(derbio, cfg.req); |
906 | BIO_free(derbio); | 906 | BIO_free(derbio); |
907 | } | 907 | } |
908 | if (ocsp_config.ridx_filename && (!rkey || !rsigner || !rca_cert)) { | 908 | if (cfg.ridx_filename && (!rkey || !rsigner || !rca_cert)) { |
909 | BIO_printf(bio_err, | 909 | BIO_printf(bio_err, |
910 | "Need a responder certificate, key and CA for this operation!\n"); | 910 | "Need a responder certificate, key and CA for this operation!\n"); |
911 | goto end; | 911 | goto end; |
912 | } | 912 | } |
913 | if (ocsp_config.ridx_filename && !rdb) { | 913 | if (cfg.ridx_filename && !rdb) { |
914 | rdb = load_index(ocsp_config.ridx_filename, NULL); | 914 | rdb = load_index(cfg.ridx_filename, NULL); |
915 | if (!rdb) | 915 | if (!rdb) |
916 | goto end; | 916 | goto end; |
917 | if (!index_index(rdb)) | 917 | if (!index_index(rdb)) |
918 | goto end; | 918 | goto end; |
919 | } | 919 | } |
920 | if (rdb) { | 920 | if (rdb) { |
921 | i = make_ocsp_response(&resp, ocsp_config.req, rdb, rca_cert, | 921 | i = make_ocsp_response(&resp, cfg.req, rdb, rca_cert, |
922 | rsigner, rkey, rother, ocsp_config.rflags, | 922 | rsigner, rkey, rother, cfg.rflags, |
923 | ocsp_config.nmin, ocsp_config.ndays); | 923 | cfg.nmin, cfg.ndays); |
924 | if (cbio) | 924 | if (cbio) |
925 | send_ocsp_response(cbio, resp); | 925 | send_ocsp_response(cbio, resp); |
926 | } else if (ocsp_config.host) { | 926 | } else if (cfg.host) { |
927 | resp = process_responder(bio_err, ocsp_config.req, | 927 | resp = process_responder(bio_err, cfg.req, |
928 | ocsp_config.host, | 928 | cfg.host, |
929 | ocsp_config.path ? ocsp_config.path : "/", | 929 | cfg.path ? cfg.path : "/", |
930 | ocsp_config.port, ocsp_config.use_ssl, ocsp_config.headers, | 930 | cfg.port, cfg.use_ssl, cfg.headers, |
931 | ocsp_config.req_timeout); | 931 | cfg.req_timeout); |
932 | if (!resp) | 932 | if (!resp) |
933 | goto end; | 933 | goto end; |
934 | } else if (ocsp_config.respin) { | 934 | } else if (cfg.respin) { |
935 | derbio = BIO_new_file(ocsp_config.respin, "rb"); | 935 | derbio = BIO_new_file(cfg.respin, "rb"); |
936 | if (!derbio) { | 936 | if (!derbio) { |
937 | BIO_printf(bio_err, | 937 | BIO_printf(bio_err, |
938 | "Error Opening OCSP response file\n"); | 938 | "Error Opening OCSP response file\n"); |
@@ -951,11 +951,11 @@ ocsp_main(int argc, char **argv) | |||
951 | 951 | ||
952 | done_resp: | 952 | done_resp: |
953 | 953 | ||
954 | if (ocsp_config.respout) { | 954 | if (cfg.respout) { |
955 | derbio = BIO_new_file(ocsp_config.respout, "wb"); | 955 | derbio = BIO_new_file(cfg.respout, "wb"); |
956 | if (!derbio) { | 956 | if (!derbio) { |
957 | BIO_printf(bio_err, "Error opening file %s\n", | 957 | BIO_printf(bio_err, "Error opening file %s\n", |
958 | ocsp_config.respout); | 958 | cfg.respout); |
959 | goto end; | 959 | goto end; |
960 | } | 960 | } |
961 | i2d_OCSP_RESPONSE_bio(derbio, resp); | 961 | i2d_OCSP_RESPONSE_bio(derbio, resp); |
@@ -966,24 +966,24 @@ ocsp_main(int argc, char **argv) | |||
966 | if (i != OCSP_RESPONSE_STATUS_SUCCESSFUL) { | 966 | if (i != OCSP_RESPONSE_STATUS_SUCCESSFUL) { |
967 | BIO_printf(bio_err, "Responder Error: %s (%d)\n", | 967 | BIO_printf(bio_err, "Responder Error: %s (%d)\n", |
968 | OCSP_response_status_str(i), i); | 968 | OCSP_response_status_str(i), i); |
969 | if (ocsp_config.ignore_err) | 969 | if (cfg.ignore_err) |
970 | goto redo_accept; | 970 | goto redo_accept; |
971 | ret = 1; | 971 | ret = 1; |
972 | goto end; | 972 | goto end; |
973 | } | 973 | } |
974 | if (ocsp_config.resp_text) | 974 | if (cfg.resp_text) |
975 | OCSP_RESPONSE_print(out, resp, 0); | 975 | OCSP_RESPONSE_print(out, resp, 0); |
976 | 976 | ||
977 | /* If running as responder don't verify our own response */ | 977 | /* If running as responder don't verify our own response */ |
978 | if (cbio) { | 978 | if (cbio) { |
979 | if (ocsp_config.accept_count > 0) | 979 | if (cfg.accept_count > 0) |
980 | ocsp_config.accept_count--; | 980 | cfg.accept_count--; |
981 | /* Redo if more connections needed */ | 981 | /* Redo if more connections needed */ |
982 | if (ocsp_config.accept_count) { | 982 | if (cfg.accept_count) { |
983 | BIO_free_all(cbio); | 983 | BIO_free_all(cbio); |
984 | cbio = NULL; | 984 | cbio = NULL; |
985 | OCSP_REQUEST_free(ocsp_config.req); | 985 | OCSP_REQUEST_free(cfg.req); |
986 | ocsp_config.req = NULL; | 986 | cfg.req = NULL; |
987 | OCSP_RESPONSE_free(resp); | 987 | OCSP_RESPONSE_free(resp); |
988 | resp = NULL; | 988 | resp = NULL; |
989 | goto redo_accept; | 989 | goto redo_accept; |
@@ -991,12 +991,12 @@ ocsp_main(int argc, char **argv) | |||
991 | goto end; | 991 | goto end; |
992 | } | 992 | } |
993 | if (!store) | 993 | if (!store) |
994 | store = setup_verify(bio_err, ocsp_config.CAfile, | 994 | store = setup_verify(bio_err, cfg.CAfile, |
995 | ocsp_config.CApath); | 995 | cfg.CApath); |
996 | if (!store) | 996 | if (!store) |
997 | goto end; | 997 | goto end; |
998 | if (ocsp_config.verify_certfile) { | 998 | if (cfg.verify_certfile) { |
999 | verify_other = load_certs(bio_err, ocsp_config.verify_certfile, | 999 | verify_other = load_certs(bio_err, cfg.verify_certfile, |
1000 | FORMAT_PEM, NULL, "validator certificate"); | 1000 | FORMAT_PEM, NULL, "validator certificate"); |
1001 | if (!verify_other) | 1001 | if (!verify_other) |
1002 | goto end; | 1002 | goto end; |
@@ -1007,9 +1007,9 @@ ocsp_main(int argc, char **argv) | |||
1007 | BIO_printf(bio_err, "Error parsing response\n"); | 1007 | BIO_printf(bio_err, "Error parsing response\n"); |
1008 | goto end; | 1008 | goto end; |
1009 | } | 1009 | } |
1010 | if (!ocsp_config.noverify) { | 1010 | if (!cfg.noverify) { |
1011 | if (ocsp_config.req && | 1011 | if (cfg.req && |
1012 | ((i = OCSP_check_nonce(ocsp_config.req, bs)) <= 0)) { | 1012 | ((i = OCSP_check_nonce(cfg.req, bs)) <= 0)) { |
1013 | if (i == -1) { | 1013 | if (i == -1) { |
1014 | BIO_printf(bio_err, | 1014 | BIO_printf(bio_err, |
1015 | "WARNING: no nonce in response\n"); | 1015 | "WARNING: no nonce in response\n"); |
@@ -1019,7 +1019,7 @@ ocsp_main(int argc, char **argv) | |||
1019 | } | 1019 | } |
1020 | } | 1020 | } |
1021 | i = OCSP_basic_verify(bs, verify_other, store, | 1021 | i = OCSP_basic_verify(bs, verify_other, store, |
1022 | ocsp_config.verify_flags); | 1022 | cfg.verify_flags); |
1023 | if (i < 0) | 1023 | if (i < 0) |
1024 | i = OCSP_basic_verify(bs, NULL, store, 0); | 1024 | i = OCSP_basic_verify(bs, NULL, store, 0); |
1025 | 1025 | ||
@@ -1030,8 +1030,8 @@ ocsp_main(int argc, char **argv) | |||
1030 | BIO_printf(bio_err, "Response verify OK\n"); | 1030 | BIO_printf(bio_err, "Response verify OK\n"); |
1031 | } | 1031 | } |
1032 | } | 1032 | } |
1033 | if (!print_ocsp_summary(out, bs, ocsp_config.req, ocsp_config.reqnames, | 1033 | if (!print_ocsp_summary(out, bs, cfg.req, cfg.reqnames, |
1034 | ocsp_config.ids, ocsp_config.nsec, ocsp_config.maxage)) | 1034 | cfg.ids, cfg.nsec, cfg.maxage)) |
1035 | goto end; | 1035 | goto end; |
1036 | 1036 | ||
1037 | ret = 0; | 1037 | ret = 0; |
@@ -1042,27 +1042,27 @@ ocsp_main(int argc, char **argv) | |||
1042 | X509_STORE_free(store); | 1042 | X509_STORE_free(store); |
1043 | EVP_PKEY_free(key); | 1043 | EVP_PKEY_free(key); |
1044 | EVP_PKEY_free(rkey); | 1044 | EVP_PKEY_free(rkey); |
1045 | X509_free(ocsp_config.issuer); | 1045 | X509_free(cfg.issuer); |
1046 | X509_free(ocsp_config.cert); | 1046 | X509_free(cfg.cert); |
1047 | X509_free(rsigner); | 1047 | X509_free(rsigner); |
1048 | X509_free(rca_cert); | 1048 | X509_free(rca_cert); |
1049 | free_index(rdb); | 1049 | free_index(rdb); |
1050 | BIO_free_all(cbio); | 1050 | BIO_free_all(cbio); |
1051 | BIO_free_all(acbio); | 1051 | BIO_free_all(acbio); |
1052 | BIO_free(out); | 1052 | BIO_free(out); |
1053 | OCSP_REQUEST_free(ocsp_config.req); | 1053 | OCSP_REQUEST_free(cfg.req); |
1054 | OCSP_RESPONSE_free(resp); | 1054 | OCSP_RESPONSE_free(resp); |
1055 | OCSP_BASICRESP_free(bs); | 1055 | OCSP_BASICRESP_free(bs); |
1056 | sk_OPENSSL_STRING_free(ocsp_config.reqnames); | 1056 | sk_OPENSSL_STRING_free(cfg.reqnames); |
1057 | sk_OCSP_CERTID_free(ocsp_config.ids); | 1057 | sk_OCSP_CERTID_free(cfg.ids); |
1058 | sk_X509_pop_free(sign_other, X509_free); | 1058 | sk_X509_pop_free(sign_other, X509_free); |
1059 | sk_X509_pop_free(verify_other, X509_free); | 1059 | sk_X509_pop_free(verify_other, X509_free); |
1060 | sk_CONF_VALUE_pop_free(ocsp_config.headers, X509V3_conf_free); | 1060 | sk_CONF_VALUE_pop_free(cfg.headers, X509V3_conf_free); |
1061 | 1061 | ||
1062 | if (ocsp_config.use_ssl != -1) { | 1062 | if (cfg.use_ssl != -1) { |
1063 | free(ocsp_config.host); | 1063 | free(cfg.host); |
1064 | free(ocsp_config.port); | 1064 | free(cfg.port); |
1065 | free(ocsp_config.path); | 1065 | free(cfg.path); |
1066 | } | 1066 | } |
1067 | return (ret); | 1067 | return (ret); |
1068 | } | 1068 | } |
diff --git a/src/usr.bin/openssl/passwd.c b/src/usr.bin/openssl/passwd.c index f05751f165..a8dfa27db1 100644 --- a/src/usr.bin/openssl/passwd.c +++ b/src/usr.bin/openssl/passwd.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: passwd.c,v 1.13 2022/11/11 17:07:39 joshua Exp $ */ | 1 | /* $OpenBSD: passwd.c,v 1.14 2023/03/06 14:32:06 tb Exp $ */ |
2 | 2 | ||
3 | #if defined OPENSSL_NO_MD5 | 3 | #if defined OPENSSL_NO_MD5 |
4 | #define NO_MD5CRYPT_1 | 4 | #define NO_MD5CRYPT_1 |
@@ -51,7 +51,7 @@ static struct { | |||
51 | int use1; | 51 | int use1; |
52 | int useapr1; | 52 | int useapr1; |
53 | int usecrypt; | 53 | int usecrypt; |
54 | } passwd_config; | 54 | } cfg; |
55 | 55 | ||
56 | static const struct option passwd_options[] = { | 56 | static const struct option passwd_options[] = { |
57 | #ifndef NO_MD5CRYPT_1 | 57 | #ifndef NO_MD5CRYPT_1 |
@@ -59,13 +59,13 @@ static const struct option passwd_options[] = { | |||
59 | .name = "1", | 59 | .name = "1", |
60 | .desc = "Use MD5 based BSD password algorithm 1", | 60 | .desc = "Use MD5 based BSD password algorithm 1", |
61 | .type = OPTION_FLAG, | 61 | .type = OPTION_FLAG, |
62 | .opt.flag = &passwd_config.use1, | 62 | .opt.flag = &cfg.use1, |
63 | }, | 63 | }, |
64 | { | 64 | { |
65 | .name = "apr1", | 65 | .name = "apr1", |
66 | .desc = "Use apr1 algorithm (Apache variant of BSD algorithm)", | 66 | .desc = "Use apr1 algorithm (Apache variant of BSD algorithm)", |
67 | .type = OPTION_FLAG, | 67 | .type = OPTION_FLAG, |
68 | .opt.flag = &passwd_config.useapr1, | 68 | .opt.flag = &cfg.useapr1, |
69 | }, | 69 | }, |
70 | #endif | 70 | #endif |
71 | #ifndef OPENSSL_NO_DES | 71 | #ifndef OPENSSL_NO_DES |
@@ -73,7 +73,7 @@ static const struct option passwd_options[] = { | |||
73 | .name = "crypt", | 73 | .name = "crypt", |
74 | .desc = "Use crypt algorithm (default)", | 74 | .desc = "Use crypt algorithm (default)", |
75 | .type = OPTION_FLAG, | 75 | .type = OPTION_FLAG, |
76 | .opt.flag = &passwd_config.usecrypt, | 76 | .opt.flag = &cfg.usecrypt, |
77 | }, | 77 | }, |
78 | #endif | 78 | #endif |
79 | { | 79 | { |
@@ -81,44 +81,44 @@ static const struct option passwd_options[] = { | |||
81 | .argname = "file", | 81 | .argname = "file", |
82 | .desc = "Read passwords from specified file", | 82 | .desc = "Read passwords from specified file", |
83 | .type = OPTION_ARG, | 83 | .type = OPTION_ARG, |
84 | .opt.arg = &passwd_config.infile, | 84 | .opt.arg = &cfg.infile, |
85 | }, | 85 | }, |
86 | { | 86 | { |
87 | .name = "noverify", | 87 | .name = "noverify", |
88 | .desc = "Do not verify password", | 88 | .desc = "Do not verify password", |
89 | .type = OPTION_FLAG, | 89 | .type = OPTION_FLAG, |
90 | .opt.flag = &passwd_config.noverify, | 90 | .opt.flag = &cfg.noverify, |
91 | }, | 91 | }, |
92 | { | 92 | { |
93 | .name = "quiet", | 93 | .name = "quiet", |
94 | .desc = "Do not output warnings", | 94 | .desc = "Do not output warnings", |
95 | .type = OPTION_FLAG, | 95 | .type = OPTION_FLAG, |
96 | .opt.flag = &passwd_config.quiet, | 96 | .opt.flag = &cfg.quiet, |
97 | }, | 97 | }, |
98 | { | 98 | { |
99 | .name = "reverse", | 99 | .name = "reverse", |
100 | .desc = "Reverse table columns (requires -table)", | 100 | .desc = "Reverse table columns (requires -table)", |
101 | .type = OPTION_FLAG, | 101 | .type = OPTION_FLAG, |
102 | .opt.flag = &passwd_config.reverse, | 102 | .opt.flag = &cfg.reverse, |
103 | }, | 103 | }, |
104 | { | 104 | { |
105 | .name = "salt", | 105 | .name = "salt", |
106 | .argname = "string", | 106 | .argname = "string", |
107 | .desc = "Use specified salt", | 107 | .desc = "Use specified salt", |
108 | .type = OPTION_ARG, | 108 | .type = OPTION_ARG, |
109 | .opt.arg = &passwd_config.salt, | 109 | .opt.arg = &cfg.salt, |
110 | }, | 110 | }, |
111 | { | 111 | { |
112 | .name = "stdin", | 112 | .name = "stdin", |
113 | .desc = "Read passwords from stdin", | 113 | .desc = "Read passwords from stdin", |
114 | .type = OPTION_FLAG, | 114 | .type = OPTION_FLAG, |
115 | .opt.flag = &passwd_config.in_stdin, | 115 | .opt.flag = &cfg.in_stdin, |
116 | }, | 116 | }, |
117 | { | 117 | { |
118 | .name = "table", | 118 | .name = "table", |
119 | .desc = "Output cleartext and hashed passwords (tab separated)", | 119 | .desc = "Output cleartext and hashed passwords (tab separated)", |
120 | .type = OPTION_FLAG, | 120 | .type = OPTION_FLAG, |
121 | .opt.flag = &passwd_config.table, | 121 | .opt.flag = &cfg.table, |
122 | }, | 122 | }, |
123 | { NULL }, | 123 | { NULL }, |
124 | }; | 124 | }; |
@@ -150,7 +150,7 @@ passwd_main(int argc, char **argv) | |||
150 | exit(1); | 150 | exit(1); |
151 | } | 151 | } |
152 | 152 | ||
153 | memset(&passwd_config, 0, sizeof(passwd_config)); | 153 | memset(&cfg, 0, sizeof(cfg)); |
154 | 154 | ||
155 | if (options_parse(argc, argv, passwd_options, NULL, &argsused) != 0) { | 155 | if (options_parse(argc, argv, passwd_options, NULL, &argsused) != 0) { |
156 | passwd_usage(); | 156 | passwd_usage(); |
@@ -159,23 +159,23 @@ passwd_main(int argc, char **argv) | |||
159 | 159 | ||
160 | if (argsused < argc) | 160 | if (argsused < argc) |
161 | passwds = &argv[argsused]; | 161 | passwds = &argv[argsused]; |
162 | if (passwd_config.salt != NULL) | 162 | if (cfg.salt != NULL) |
163 | passed_salt = 1; | 163 | passed_salt = 1; |
164 | 164 | ||
165 | if (!passwd_config.usecrypt && !passwd_config.use1 && | 165 | if (!cfg.usecrypt && !cfg.use1 && |
166 | !passwd_config.useapr1) | 166 | !cfg.useapr1) |
167 | passwd_config.usecrypt = 1; /* use default */ | 167 | cfg.usecrypt = 1; /* use default */ |
168 | if (passwd_config.usecrypt + passwd_config.use1 + | 168 | if (cfg.usecrypt + cfg.use1 + |
169 | passwd_config.useapr1 > 1) | 169 | cfg.useapr1 > 1) |
170 | badopt = 1; /* conflicting options */ | 170 | badopt = 1; /* conflicting options */ |
171 | 171 | ||
172 | /* Reject unsupported algorithms */ | 172 | /* Reject unsupported algorithms */ |
173 | #ifdef OPENSSL_NO_DES | 173 | #ifdef OPENSSL_NO_DES |
174 | if (passwd_config.usecrypt) | 174 | if (cfg.usecrypt) |
175 | badopt = 1; | 175 | badopt = 1; |
176 | #endif | 176 | #endif |
177 | #ifdef NO_MD5CRYPT_1 | 177 | #ifdef NO_MD5CRYPT_1 |
178 | if (passwd_config.use1 || passwd_config.useapr1) | 178 | if (cfg.use1 || cfg.useapr1) |
179 | badopt = 1; | 179 | badopt = 1; |
180 | #endif | 180 | #endif |
181 | 181 | ||
@@ -188,21 +188,21 @@ passwd_main(int argc, char **argv) | |||
188 | goto err; | 188 | goto err; |
189 | BIO_set_fp(out, stdout, BIO_NOCLOSE | BIO_FP_TEXT); | 189 | BIO_set_fp(out, stdout, BIO_NOCLOSE | BIO_FP_TEXT); |
190 | 190 | ||
191 | if (passwd_config.infile != NULL || passwd_config.in_stdin) { | 191 | if (cfg.infile != NULL || cfg.in_stdin) { |
192 | if ((in = BIO_new(BIO_s_file())) == NULL) | 192 | if ((in = BIO_new(BIO_s_file())) == NULL) |
193 | goto err; | 193 | goto err; |
194 | if (passwd_config.infile != NULL) { | 194 | if (cfg.infile != NULL) { |
195 | assert(passwd_config.in_stdin == 0); | 195 | assert(cfg.in_stdin == 0); |
196 | if (BIO_read_filename(in, passwd_config.infile) <= 0) | 196 | if (BIO_read_filename(in, cfg.infile) <= 0) |
197 | goto err; | 197 | goto err; |
198 | } else { | 198 | } else { |
199 | assert(passwd_config.in_stdin); | 199 | assert(cfg.in_stdin); |
200 | BIO_set_fp(in, stdin, BIO_NOCLOSE); | 200 | BIO_set_fp(in, stdin, BIO_NOCLOSE); |
201 | } | 201 | } |
202 | } | 202 | } |
203 | if (passwd_config.usecrypt) | 203 | if (cfg.usecrypt) |
204 | pw_maxlen = 8; | 204 | pw_maxlen = 8; |
205 | else if (passwd_config.use1 || passwd_config.useapr1) | 205 | else if (cfg.use1 || cfg.useapr1) |
206 | pw_maxlen = 256;/* arbitrary limit, should be enough for most | 206 | pw_maxlen = 256;/* arbitrary limit, should be enough for most |
207 | * passwords */ | 207 | * passwords */ |
208 | 208 | ||
@@ -223,7 +223,7 @@ passwd_main(int argc, char **argv) | |||
223 | if (in == NULL) | 223 | if (in == NULL) |
224 | if (EVP_read_pw_string(passwd_malloc, | 224 | if (EVP_read_pw_string(passwd_malloc, |
225 | passwd_malloc_size, "Password: ", | 225 | passwd_malloc_size, "Password: ", |
226 | !(passed_salt || passwd_config.noverify)) != 0) | 226 | !(passed_salt || cfg.noverify)) != 0) |
227 | goto err; | 227 | goto err; |
228 | passwds[0] = passwd_malloc; | 228 | passwds[0] = passwd_malloc; |
229 | } | 229 | } |
@@ -233,11 +233,11 @@ passwd_main(int argc, char **argv) | |||
233 | 233 | ||
234 | do { /* loop over list of passwords */ | 234 | do { /* loop over list of passwords */ |
235 | passwd = *passwds++; | 235 | passwd = *passwds++; |
236 | if (!do_passwd(passed_salt, &passwd_config.salt, | 236 | if (!do_passwd(passed_salt, &cfg.salt, |
237 | &salt_malloc, passwd, out, passwd_config.quiet, | 237 | &salt_malloc, passwd, out, cfg.quiet, |
238 | passwd_config.table, passwd_config.reverse, | 238 | cfg.table, cfg.reverse, |
239 | pw_maxlen, passwd_config.usecrypt, | 239 | pw_maxlen, cfg.usecrypt, |
240 | passwd_config.use1, passwd_config.useapr1)) | 240 | cfg.use1, cfg.useapr1)) |
241 | goto err; | 241 | goto err; |
242 | } while (*passwds != NULL); | 242 | } while (*passwds != NULL); |
243 | } else { | 243 | } else { |
@@ -258,12 +258,12 @@ passwd_main(int argc, char **argv) | |||
258 | while ((r > 0) && (!strchr(trash, '\n'))); | 258 | while ((r > 0) && (!strchr(trash, '\n'))); |
259 | } | 259 | } |
260 | 260 | ||
261 | if (!do_passwd(passed_salt, &passwd_config.salt, | 261 | if (!do_passwd(passed_salt, &cfg.salt, |
262 | &salt_malloc, passwd, out, | 262 | &salt_malloc, passwd, out, |
263 | passwd_config.quiet, passwd_config.table, | 263 | cfg.quiet, cfg.table, |
264 | passwd_config.reverse, pw_maxlen, | 264 | cfg.reverse, pw_maxlen, |
265 | passwd_config.usecrypt, passwd_config.use1, | 265 | cfg.usecrypt, cfg.use1, |
266 | passwd_config.useapr1)) | 266 | cfg.useapr1)) |
267 | goto err; | 267 | goto err; |
268 | } | 268 | } |
269 | done = (r <= 0); | 269 | done = (r <= 0); |
diff --git a/src/usr.bin/openssl/pkcs12.c b/src/usr.bin/openssl/pkcs12.c index 6e671e9275..aedae640e3 100644 --- a/src/usr.bin/openssl/pkcs12.c +++ b/src/usr.bin/openssl/pkcs12.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: pkcs12.c,v 1.24 2022/11/11 17:07:39 joshua Exp $ */ | 1 | /* $OpenBSD: pkcs12.c,v 1.25 2023/03/06 14:32:06 tb 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. | 3 | * project. |
4 | */ | 4 | */ |
@@ -118,16 +118,16 @@ static struct { | |||
118 | char *passargin; | 118 | char *passargin; |
119 | char *passargout; | 119 | char *passargout; |
120 | int twopass; | 120 | int twopass; |
121 | } pkcs12_config; | 121 | } cfg; |
122 | 122 | ||
123 | static int | 123 | static int |
124 | pkcs12_opt_canames(char *arg) | 124 | pkcs12_opt_canames(char *arg) |
125 | { | 125 | { |
126 | if (pkcs12_config.canames == NULL && | 126 | if (cfg.canames == NULL && |
127 | (pkcs12_config.canames = sk_OPENSSL_STRING_new_null()) == NULL) | 127 | (cfg.canames = sk_OPENSSL_STRING_new_null()) == NULL) |
128 | return (1); | 128 | return (1); |
129 | 129 | ||
130 | if (!sk_OPENSSL_STRING_push(pkcs12_config.canames, arg)) | 130 | if (!sk_OPENSSL_STRING_push(cfg.canames, arg)) |
131 | return (1); | 131 | return (1); |
132 | 132 | ||
133 | return (0); | 133 | return (0); |
@@ -136,20 +136,20 @@ pkcs12_opt_canames(char *arg) | |||
136 | static int | 136 | static int |
137 | pkcs12_opt_cert_pbe(char *arg) | 137 | pkcs12_opt_cert_pbe(char *arg) |
138 | { | 138 | { |
139 | return (!set_pbe(bio_err, &pkcs12_config.cert_pbe, arg)); | 139 | return (!set_pbe(bio_err, &cfg.cert_pbe, arg)); |
140 | } | 140 | } |
141 | 141 | ||
142 | static int | 142 | static int |
143 | pkcs12_opt_key_pbe(char *arg) | 143 | pkcs12_opt_key_pbe(char *arg) |
144 | { | 144 | { |
145 | return (!set_pbe(bio_err, &pkcs12_config.key_pbe, arg)); | 145 | return (!set_pbe(bio_err, &cfg.key_pbe, arg)); |
146 | } | 146 | } |
147 | 147 | ||
148 | static int | 148 | static int |
149 | pkcs12_opt_passarg(char *arg) | 149 | pkcs12_opt_passarg(char *arg) |
150 | { | 150 | { |
151 | pkcs12_config.passarg = arg; | 151 | cfg.passarg = arg; |
152 | pkcs12_config.noprompt = 1; | 152 | cfg.noprompt = 1; |
153 | return (0); | 153 | return (0); |
154 | } | 154 | } |
155 | 155 | ||
@@ -196,8 +196,8 @@ pkcs12_opt_enc(int argc, char **argv, int *argsused) | |||
196 | return (1); | 196 | return (1); |
197 | 197 | ||
198 | if (strcmp(name, "nodes") == 0) | 198 | if (strcmp(name, "nodes") == 0) |
199 | pkcs12_config.enc = NULL; | 199 | cfg.enc = NULL; |
200 | else if ((pkcs12_config.enc = get_cipher_by_name(name)) == NULL) | 200 | else if ((cfg.enc = get_cipher_by_name(name)) == NULL) |
201 | return (1); | 201 | return (1); |
202 | 202 | ||
203 | *argsused = 1; | 203 | *argsused = 1; |
@@ -269,7 +269,7 @@ static const struct option pkcs12_options[] = { | |||
269 | .name = "cacerts", | 269 | .name = "cacerts", |
270 | .desc = "Only output CA certificates", | 270 | .desc = "Only output CA certificates", |
271 | .type = OPTION_VALUE_OR, | 271 | .type = OPTION_VALUE_OR, |
272 | .opt.value = &pkcs12_config.options, | 272 | .opt.value = &cfg.options, |
273 | .value = CACERTS, | 273 | .value = CACERTS, |
274 | }, | 274 | }, |
275 | { | 275 | { |
@@ -277,7 +277,7 @@ static const struct option pkcs12_options[] = { | |||
277 | .argname = "file", | 277 | .argname = "file", |
278 | .desc = "PEM format file of CA certificates", | 278 | .desc = "PEM format file of CA certificates", |
279 | .type = OPTION_ARG, | 279 | .type = OPTION_ARG, |
280 | .opt.arg = &pkcs12_config.CAfile, | 280 | .opt.arg = &cfg.CAfile, |
281 | }, | 281 | }, |
282 | { | 282 | { |
283 | .name = "caname", | 283 | .name = "caname", |
@@ -291,14 +291,14 @@ static const struct option pkcs12_options[] = { | |||
291 | .argname = "directory", | 291 | .argname = "directory", |
292 | .desc = "PEM format directory of CA certificates", | 292 | .desc = "PEM format directory of CA certificates", |
293 | .type = OPTION_ARG, | 293 | .type = OPTION_ARG, |
294 | .opt.arg = &pkcs12_config.CApath, | 294 | .opt.arg = &cfg.CApath, |
295 | }, | 295 | }, |
296 | { | 296 | { |
297 | .name = "certfile", | 297 | .name = "certfile", |
298 | .argname = "file", | 298 | .argname = "file", |
299 | .desc = "Add all certs in file", | 299 | .desc = "Add all certs in file", |
300 | .type = OPTION_ARG, | 300 | .type = OPTION_ARG, |
301 | .opt.arg = &pkcs12_config.certfile, | 301 | .opt.arg = &cfg.certfile, |
302 | }, | 302 | }, |
303 | { | 303 | { |
304 | .name = "certpbe", | 304 | .name = "certpbe", |
@@ -311,13 +311,13 @@ static const struct option pkcs12_options[] = { | |||
311 | .name = "chain", | 311 | .name = "chain", |
312 | .desc = "Add certificate chain", | 312 | .desc = "Add certificate chain", |
313 | .type = OPTION_FLAG, | 313 | .type = OPTION_FLAG, |
314 | .opt.flag = &pkcs12_config.chain, | 314 | .opt.flag = &cfg.chain, |
315 | }, | 315 | }, |
316 | { | 316 | { |
317 | .name = "clcerts", | 317 | .name = "clcerts", |
318 | .desc = "Only output client certificates", | 318 | .desc = "Only output client certificates", |
319 | .type = OPTION_VALUE_OR, | 319 | .type = OPTION_VALUE_OR, |
320 | .opt.value = &pkcs12_config.options, | 320 | .opt.value = &cfg.options, |
321 | .value = CLCERTS, | 321 | .value = CLCERTS, |
322 | }, | 322 | }, |
323 | { | 323 | { |
@@ -325,33 +325,33 @@ static const struct option pkcs12_options[] = { | |||
325 | .argname = "name", | 325 | .argname = "name", |
326 | .desc = "Microsoft CSP name", | 326 | .desc = "Microsoft CSP name", |
327 | .type = OPTION_ARG, | 327 | .type = OPTION_ARG, |
328 | .opt.arg = &pkcs12_config.csp_name, | 328 | .opt.arg = &cfg.csp_name, |
329 | }, | 329 | }, |
330 | { | 330 | { |
331 | .name = "descert", | 331 | .name = "descert", |
332 | .desc = "Encrypt PKCS#12 certificates with triple DES (default RC2-40)", | 332 | .desc = "Encrypt PKCS#12 certificates with triple DES (default RC2-40)", |
333 | .type = OPTION_VALUE, | 333 | .type = OPTION_VALUE, |
334 | .opt.value = &pkcs12_config.cert_pbe, | 334 | .opt.value = &cfg.cert_pbe, |
335 | .value = NID_pbe_WithSHA1And3_Key_TripleDES_CBC, | 335 | .value = NID_pbe_WithSHA1And3_Key_TripleDES_CBC, |
336 | }, | 336 | }, |
337 | { | 337 | { |
338 | .name = "export", | 338 | .name = "export", |
339 | .desc = "Output PKCS#12 file", | 339 | .desc = "Output PKCS#12 file", |
340 | .type = OPTION_FLAG, | 340 | .type = OPTION_FLAG, |
341 | .opt.flag = &pkcs12_config.export_cert, | 341 | .opt.flag = &cfg.export_cert, |
342 | }, | 342 | }, |
343 | { | 343 | { |
344 | .name = "in", | 344 | .name = "in", |
345 | .argname = "file", | 345 | .argname = "file", |
346 | .desc = "Input filename", | 346 | .desc = "Input filename", |
347 | .type = OPTION_ARG, | 347 | .type = OPTION_ARG, |
348 | .opt.arg = &pkcs12_config.infile, | 348 | .opt.arg = &cfg.infile, |
349 | }, | 349 | }, |
350 | { | 350 | { |
351 | .name = "info", | 351 | .name = "info", |
352 | .desc = "Give info about PKCS#12 structure", | 352 | .desc = "Give info about PKCS#12 structure", |
353 | .type = OPTION_VALUE_OR, | 353 | .type = OPTION_VALUE_OR, |
354 | .opt.value = &pkcs12_config.options, | 354 | .opt.value = &cfg.options, |
355 | .value = INFO, | 355 | .value = INFO, |
356 | }, | 356 | }, |
357 | { | 357 | { |
@@ -359,13 +359,13 @@ static const struct option pkcs12_options[] = { | |||
359 | .argname = "file", | 359 | .argname = "file", |
360 | .desc = "Private key if not infile", | 360 | .desc = "Private key if not infile", |
361 | .type = OPTION_ARG, | 361 | .type = OPTION_ARG, |
362 | .opt.arg = &pkcs12_config.keyname, | 362 | .opt.arg = &cfg.keyname, |
363 | }, | 363 | }, |
364 | { | 364 | { |
365 | .name = "keyex", | 365 | .name = "keyex", |
366 | .desc = "Set MS key exchange type", | 366 | .desc = "Set MS key exchange type", |
367 | .type = OPTION_VALUE, | 367 | .type = OPTION_VALUE, |
368 | .opt.value = &pkcs12_config.keytype, | 368 | .opt.value = &cfg.keytype, |
369 | .value = KEY_EX, | 369 | .value = KEY_EX, |
370 | }, | 370 | }, |
371 | { | 371 | { |
@@ -379,27 +379,27 @@ static const struct option pkcs12_options[] = { | |||
379 | .name = "keysig", | 379 | .name = "keysig", |
380 | .desc = "Set MS key signature type", | 380 | .desc = "Set MS key signature type", |
381 | .type = OPTION_VALUE, | 381 | .type = OPTION_VALUE, |
382 | .opt.value = &pkcs12_config.keytype, | 382 | .opt.value = &cfg.keytype, |
383 | .value = KEY_SIG, | 383 | .value = KEY_SIG, |
384 | }, | 384 | }, |
385 | { | 385 | { |
386 | .name = "LMK", | 386 | .name = "LMK", |
387 | .desc = "Add local machine keyset attribute to private key", | 387 | .desc = "Add local machine keyset attribute to private key", |
388 | .type = OPTION_FLAG, | 388 | .type = OPTION_FLAG, |
389 | .opt.flag = &pkcs12_config.add_lmk, | 389 | .opt.flag = &cfg.add_lmk, |
390 | }, | 390 | }, |
391 | { | 391 | { |
392 | .name = "macalg", | 392 | .name = "macalg", |
393 | .argname = "alg", | 393 | .argname = "alg", |
394 | .desc = "Digest algorithm used in MAC (default SHA1)", | 394 | .desc = "Digest algorithm used in MAC (default SHA1)", |
395 | .type = OPTION_ARG, | 395 | .type = OPTION_ARG, |
396 | .opt.arg = &pkcs12_config.macalg, | 396 | .opt.arg = &cfg.macalg, |
397 | }, | 397 | }, |
398 | { | 398 | { |
399 | .name = "maciter", | 399 | .name = "maciter", |
400 | .desc = "Use MAC iteration", | 400 | .desc = "Use MAC iteration", |
401 | .type = OPTION_VALUE, | 401 | .type = OPTION_VALUE, |
402 | .opt.value = &pkcs12_config.maciter, | 402 | .opt.value = &cfg.maciter, |
403 | .value = PKCS12_DEFAULT_ITER, | 403 | .value = PKCS12_DEFAULT_ITER, |
404 | }, | 404 | }, |
405 | { | 405 | { |
@@ -407,13 +407,13 @@ static const struct option pkcs12_options[] = { | |||
407 | .argname = "name", | 407 | .argname = "name", |
408 | .desc = "Use name as friendly name", | 408 | .desc = "Use name as friendly name", |
409 | .type = OPTION_ARG, | 409 | .type = OPTION_ARG, |
410 | .opt.arg = &pkcs12_config.name, | 410 | .opt.arg = &cfg.name, |
411 | }, | 411 | }, |
412 | { | 412 | { |
413 | .name = "nocerts", | 413 | .name = "nocerts", |
414 | .desc = "Don't output certificates", | 414 | .desc = "Don't output certificates", |
415 | .type = OPTION_VALUE_OR, | 415 | .type = OPTION_VALUE_OR, |
416 | .opt.value = &pkcs12_config.options, | 416 | .opt.value = &cfg.options, |
417 | .value = NOCERTS, | 417 | .value = NOCERTS, |
418 | }, | 418 | }, |
419 | { | 419 | { |
@@ -426,42 +426,42 @@ static const struct option pkcs12_options[] = { | |||
426 | .name = "noiter", | 426 | .name = "noiter", |
427 | .desc = "Don't use encryption iteration", | 427 | .desc = "Don't use encryption iteration", |
428 | .type = OPTION_VALUE, | 428 | .type = OPTION_VALUE, |
429 | .opt.value = &pkcs12_config.iter, | 429 | .opt.value = &cfg.iter, |
430 | .value = 1, | 430 | .value = 1, |
431 | }, | 431 | }, |
432 | { | 432 | { |
433 | .name = "nokeys", | 433 | .name = "nokeys", |
434 | .desc = "Don't output private keys", | 434 | .desc = "Don't output private keys", |
435 | .type = OPTION_VALUE_OR, | 435 | .type = OPTION_VALUE_OR, |
436 | .opt.value = &pkcs12_config.options, | 436 | .opt.value = &cfg.options, |
437 | .value = NOKEYS, | 437 | .value = NOKEYS, |
438 | }, | 438 | }, |
439 | { | 439 | { |
440 | .name = "nomac", | 440 | .name = "nomac", |
441 | .desc = "Don't generate MAC", | 441 | .desc = "Don't generate MAC", |
442 | .type = OPTION_VALUE, | 442 | .type = OPTION_VALUE, |
443 | .opt.value = &pkcs12_config.maciter, | 443 | .opt.value = &cfg.maciter, |
444 | .value = -1, | 444 | .value = -1, |
445 | }, | 445 | }, |
446 | { | 446 | { |
447 | .name = "nomaciter", | 447 | .name = "nomaciter", |
448 | .desc = "Don't use MAC iteration", | 448 | .desc = "Don't use MAC iteration", |
449 | .type = OPTION_VALUE, | 449 | .type = OPTION_VALUE, |
450 | .opt.value = &pkcs12_config.maciter, | 450 | .opt.value = &cfg.maciter, |
451 | .value = 1, | 451 | .value = 1, |
452 | }, | 452 | }, |
453 | { | 453 | { |
454 | .name = "nomacver", | 454 | .name = "nomacver", |
455 | .desc = "Don't verify MAC", | 455 | .desc = "Don't verify MAC", |
456 | .type = OPTION_VALUE, | 456 | .type = OPTION_VALUE, |
457 | .opt.value = &pkcs12_config.macver, | 457 | .opt.value = &cfg.macver, |
458 | .value = 0, | 458 | .value = 0, |
459 | }, | 459 | }, |
460 | { | 460 | { |
461 | .name = "noout", | 461 | .name = "noout", |
462 | .desc = "Don't output anything, just verify", | 462 | .desc = "Don't output anything, just verify", |
463 | .type = OPTION_VALUE_OR, | 463 | .type = OPTION_VALUE_OR, |
464 | .opt.value = &pkcs12_config.options, | 464 | .opt.value = &cfg.options, |
465 | .value = (NOKEYS | NOCERTS), | 465 | .value = (NOKEYS | NOCERTS), |
466 | }, | 466 | }, |
467 | { | 467 | { |
@@ -469,21 +469,21 @@ static const struct option pkcs12_options[] = { | |||
469 | .argname = "file", | 469 | .argname = "file", |
470 | .desc = "Output filename", | 470 | .desc = "Output filename", |
471 | .type = OPTION_ARG, | 471 | .type = OPTION_ARG, |
472 | .opt.arg = &pkcs12_config.outfile, | 472 | .opt.arg = &cfg.outfile, |
473 | }, | 473 | }, |
474 | { | 474 | { |
475 | .name = "passin", | 475 | .name = "passin", |
476 | .argname = "arg", | 476 | .argname = "arg", |
477 | .desc = "Input file passphrase source", | 477 | .desc = "Input file passphrase source", |
478 | .type = OPTION_ARG, | 478 | .type = OPTION_ARG, |
479 | .opt.arg = &pkcs12_config.passargin, | 479 | .opt.arg = &cfg.passargin, |
480 | }, | 480 | }, |
481 | { | 481 | { |
482 | .name = "passout", | 482 | .name = "passout", |
483 | .argname = "arg", | 483 | .argname = "arg", |
484 | .desc = "Output file passphrase source", | 484 | .desc = "Output file passphrase source", |
485 | .type = OPTION_ARG, | 485 | .type = OPTION_ARG, |
486 | .opt.arg = &pkcs12_config.passargout, | 486 | .opt.arg = &cfg.passargout, |
487 | }, | 487 | }, |
488 | { | 488 | { |
489 | .name = "password", | 489 | .name = "password", |
@@ -496,7 +496,7 @@ static const struct option pkcs12_options[] = { | |||
496 | .name = "twopass", | 496 | .name = "twopass", |
497 | .desc = "Separate MAC, encryption passwords", | 497 | .desc = "Separate MAC, encryption passwords", |
498 | .type = OPTION_FLAG, | 498 | .type = OPTION_FLAG, |
499 | .opt.flag = &pkcs12_config.twopass, | 499 | .opt.flag = &cfg.twopass, |
500 | }, | 500 | }, |
501 | { NULL }, | 501 | { NULL }, |
502 | }; | 502 | }; |
@@ -541,73 +541,73 @@ pkcs12_main(int argc, char **argv) | |||
541 | exit(1); | 541 | exit(1); |
542 | } | 542 | } |
543 | 543 | ||
544 | memset(&pkcs12_config, 0, sizeof(pkcs12_config)); | 544 | memset(&cfg, 0, sizeof(cfg)); |
545 | pkcs12_config.cert_pbe = NID_pbe_WithSHA1And40BitRC2_CBC; | 545 | cfg.cert_pbe = NID_pbe_WithSHA1And40BitRC2_CBC; |
546 | pkcs12_config.enc = EVP_des_ede3_cbc(); | 546 | cfg.enc = EVP_des_ede3_cbc(); |
547 | pkcs12_config.iter = PKCS12_DEFAULT_ITER; | 547 | cfg.iter = PKCS12_DEFAULT_ITER; |
548 | pkcs12_config.key_pbe = NID_pbe_WithSHA1And3_Key_TripleDES_CBC; | 548 | cfg.key_pbe = NID_pbe_WithSHA1And3_Key_TripleDES_CBC; |
549 | pkcs12_config.maciter = PKCS12_DEFAULT_ITER; | 549 | cfg.maciter = PKCS12_DEFAULT_ITER; |
550 | pkcs12_config.macver = 1; | 550 | cfg.macver = 1; |
551 | 551 | ||
552 | if (options_parse(argc, argv, pkcs12_options, NULL, NULL) != 0) { | 552 | if (options_parse(argc, argv, pkcs12_options, NULL, NULL) != 0) { |
553 | pkcs12_usage(); | 553 | pkcs12_usage(); |
554 | goto end; | 554 | goto end; |
555 | } | 555 | } |
556 | 556 | ||
557 | if (pkcs12_config.passarg != NULL) { | 557 | if (cfg.passarg != NULL) { |
558 | if (pkcs12_config.export_cert) | 558 | if (cfg.export_cert) |
559 | pkcs12_config.passargout = pkcs12_config.passarg; | 559 | cfg.passargout = cfg.passarg; |
560 | else | 560 | else |
561 | pkcs12_config.passargin = pkcs12_config.passarg; | 561 | cfg.passargin = cfg.passarg; |
562 | } | 562 | } |
563 | if (!app_passwd(bio_err, pkcs12_config.passargin, | 563 | if (!app_passwd(bio_err, cfg.passargin, |
564 | pkcs12_config.passargout, &passin, &passout)) { | 564 | cfg.passargout, &passin, &passout)) { |
565 | BIO_printf(bio_err, "Error getting passwords\n"); | 565 | BIO_printf(bio_err, "Error getting passwords\n"); |
566 | goto end; | 566 | goto end; |
567 | } | 567 | } |
568 | if (cpass == NULL) { | 568 | if (cpass == NULL) { |
569 | if (pkcs12_config.export_cert) | 569 | if (cfg.export_cert) |
570 | cpass = passout; | 570 | cpass = passout; |
571 | else | 571 | else |
572 | cpass = passin; | 572 | cpass = passin; |
573 | } | 573 | } |
574 | if (cpass != NULL) { | 574 | if (cpass != NULL) { |
575 | mpass = cpass; | 575 | mpass = cpass; |
576 | pkcs12_config.noprompt = 1; | 576 | cfg.noprompt = 1; |
577 | } else { | 577 | } else { |
578 | cpass = pass; | 578 | cpass = pass; |
579 | mpass = macpass; | 579 | mpass = macpass; |
580 | } | 580 | } |
581 | 581 | ||
582 | if (pkcs12_config.infile == NULL) | 582 | if (cfg.infile == NULL) |
583 | in = BIO_new_fp(stdin, BIO_NOCLOSE); | 583 | in = BIO_new_fp(stdin, BIO_NOCLOSE); |
584 | else | 584 | else |
585 | in = BIO_new_file(pkcs12_config.infile, "rb"); | 585 | in = BIO_new_file(cfg.infile, "rb"); |
586 | if (in == NULL) { | 586 | if (in == NULL) { |
587 | BIO_printf(bio_err, "Error opening input file %s\n", | 587 | BIO_printf(bio_err, "Error opening input file %s\n", |
588 | pkcs12_config.infile ? pkcs12_config.infile : "<stdin>"); | 588 | cfg.infile ? cfg.infile : "<stdin>"); |
589 | perror(pkcs12_config.infile); | 589 | perror(cfg.infile); |
590 | goto end; | 590 | goto end; |
591 | } | 591 | } |
592 | 592 | ||
593 | if (pkcs12_config.outfile == NULL) { | 593 | if (cfg.outfile == NULL) { |
594 | out = BIO_new_fp(stdout, BIO_NOCLOSE); | 594 | out = BIO_new_fp(stdout, BIO_NOCLOSE); |
595 | } else | 595 | } else |
596 | out = BIO_new_file(pkcs12_config.outfile, "wb"); | 596 | out = BIO_new_file(cfg.outfile, "wb"); |
597 | if (out == NULL) { | 597 | if (out == NULL) { |
598 | BIO_printf(bio_err, "Error opening output file %s\n", | 598 | BIO_printf(bio_err, "Error opening output file %s\n", |
599 | pkcs12_config.outfile ? pkcs12_config.outfile : "<stdout>"); | 599 | cfg.outfile ? cfg.outfile : "<stdout>"); |
600 | perror(pkcs12_config.outfile); | 600 | perror(cfg.outfile); |
601 | goto end; | 601 | goto end; |
602 | } | 602 | } |
603 | if (pkcs12_config.twopass) { | 603 | if (cfg.twopass) { |
604 | if (EVP_read_pw_string(macpass, sizeof macpass, | 604 | if (EVP_read_pw_string(macpass, sizeof macpass, |
605 | "Enter MAC Password:", pkcs12_config.export_cert)) { | 605 | "Enter MAC Password:", cfg.export_cert)) { |
606 | BIO_printf(bio_err, "Can't read Password\n"); | 606 | BIO_printf(bio_err, "Can't read Password\n"); |
607 | goto end; | 607 | goto end; |
608 | } | 608 | } |
609 | } | 609 | } |
610 | if (pkcs12_config.export_cert) { | 610 | if (cfg.export_cert) { |
611 | EVP_PKEY *key = NULL; | 611 | EVP_PKEY *key = NULL; |
612 | X509 *ucert = NULL, *x = NULL; | 612 | X509 *ucert = NULL, *x = NULL; |
613 | STACK_OF(X509) *certs = NULL; | 613 | STACK_OF(X509) *certs = NULL; |
@@ -615,25 +615,25 @@ pkcs12_main(int argc, char **argv) | |||
615 | unsigned char *catmp = NULL; | 615 | unsigned char *catmp = NULL; |
616 | int i; | 616 | int i; |
617 | 617 | ||
618 | if ((pkcs12_config.options & (NOCERTS | NOKEYS)) == | 618 | if ((cfg.options & (NOCERTS | NOKEYS)) == |
619 | (NOCERTS | NOKEYS)) { | 619 | (NOCERTS | NOKEYS)) { |
620 | BIO_printf(bio_err, "Nothing to do!\n"); | 620 | BIO_printf(bio_err, "Nothing to do!\n"); |
621 | goto export_end; | 621 | goto export_end; |
622 | } | 622 | } |
623 | if (pkcs12_config.options & NOCERTS) | 623 | if (cfg.options & NOCERTS) |
624 | pkcs12_config.chain = 0; | 624 | cfg.chain = 0; |
625 | 625 | ||
626 | if (!(pkcs12_config.options & NOKEYS)) { | 626 | if (!(cfg.options & NOKEYS)) { |
627 | key = load_key(bio_err, pkcs12_config.keyname ? | 627 | key = load_key(bio_err, cfg.keyname ? |
628 | pkcs12_config.keyname : pkcs12_config.infile, | 628 | cfg.keyname : cfg.infile, |
629 | FORMAT_PEM, 1, passin, "private key"); | 629 | FORMAT_PEM, 1, passin, "private key"); |
630 | if (!key) | 630 | if (!key) |
631 | goto export_end; | 631 | goto export_end; |
632 | } | 632 | } |
633 | 633 | ||
634 | /* Load in all certs in input file */ | 634 | /* Load in all certs in input file */ |
635 | if (!(pkcs12_config.options & NOCERTS)) { | 635 | if (!(cfg.options & NOCERTS)) { |
636 | certs = load_certs(bio_err, pkcs12_config.infile, | 636 | certs = load_certs(bio_err, cfg.infile, |
637 | FORMAT_PEM, NULL, "certificates"); | 637 | FORMAT_PEM, NULL, "certificates"); |
638 | if (certs == NULL) | 638 | if (certs == NULL) |
639 | goto export_end; | 639 | goto export_end; |
@@ -661,10 +661,10 @@ pkcs12_main(int argc, char **argv) | |||
661 | } | 661 | } |
662 | 662 | ||
663 | /* Add any more certificates asked for */ | 663 | /* Add any more certificates asked for */ |
664 | if (pkcs12_config.certfile != NULL) { | 664 | if (cfg.certfile != NULL) { |
665 | STACK_OF(X509) *morecerts = NULL; | 665 | STACK_OF(X509) *morecerts = NULL; |
666 | if ((morecerts = load_certs(bio_err, | 666 | if ((morecerts = load_certs(bio_err, |
667 | pkcs12_config.certfile, FORMAT_PEM, NULL, | 667 | cfg.certfile, FORMAT_PEM, NULL, |
668 | "certificates from certfile")) == NULL) | 668 | "certificates from certfile")) == NULL) |
669 | goto export_end; | 669 | goto export_end; |
670 | while (sk_X509_num(morecerts) > 0) | 670 | while (sk_X509_num(morecerts) > 0) |
@@ -674,7 +674,7 @@ pkcs12_main(int argc, char **argv) | |||
674 | 674 | ||
675 | 675 | ||
676 | /* If chaining get chain from user cert */ | 676 | /* If chaining get chain from user cert */ |
677 | if (pkcs12_config.chain) { | 677 | if (cfg.chain) { |
678 | int vret; | 678 | int vret; |
679 | STACK_OF(X509) *chain2; | 679 | STACK_OF(X509) *chain2; |
680 | X509_STORE *store = X509_STORE_new(); | 680 | X509_STORE *store = X509_STORE_new(); |
@@ -684,7 +684,7 @@ pkcs12_main(int argc, char **argv) | |||
684 | goto export_end; | 684 | goto export_end; |
685 | } | 685 | } |
686 | if (!X509_STORE_load_locations(store, | 686 | if (!X509_STORE_load_locations(store, |
687 | pkcs12_config.CAfile, pkcs12_config.CApath)) | 687 | cfg.CAfile, cfg.CApath)) |
688 | X509_STORE_set_default_paths(store); | 688 | X509_STORE_set_default_paths(store); |
689 | 689 | ||
690 | vret = get_cert_chain(ucert, store, &chain2); | 690 | vret = get_cert_chain(ucert, store, &chain2); |
@@ -711,51 +711,51 @@ pkcs12_main(int argc, char **argv) | |||
711 | } | 711 | } |
712 | /* Add any CA names */ | 712 | /* Add any CA names */ |
713 | 713 | ||
714 | for (i = 0; i < sk_OPENSSL_STRING_num(pkcs12_config.canames); | 714 | for (i = 0; i < sk_OPENSSL_STRING_num(cfg.canames); |
715 | i++) { | 715 | i++) { |
716 | catmp = (unsigned char *) sk_OPENSSL_STRING_value( | 716 | catmp = (unsigned char *) sk_OPENSSL_STRING_value( |
717 | pkcs12_config.canames, i); | 717 | cfg.canames, i); |
718 | X509_alias_set1(sk_X509_value(certs, i), catmp, -1); | 718 | X509_alias_set1(sk_X509_value(certs, i), catmp, -1); |
719 | } | 719 | } |
720 | 720 | ||
721 | if (pkcs12_config.csp_name != NULL && key != NULL) | 721 | if (cfg.csp_name != NULL && key != NULL) |
722 | EVP_PKEY_add1_attr_by_NID(key, NID_ms_csp_name, | 722 | EVP_PKEY_add1_attr_by_NID(key, NID_ms_csp_name, |
723 | MBSTRING_ASC, | 723 | MBSTRING_ASC, |
724 | (unsigned char *) pkcs12_config.csp_name, -1); | 724 | (unsigned char *) cfg.csp_name, -1); |
725 | 725 | ||
726 | if (pkcs12_config.add_lmk && key != NULL) | 726 | if (cfg.add_lmk && key != NULL) |
727 | EVP_PKEY_add1_attr_by_NID(key, NID_LocalKeySet, 0, NULL, | 727 | EVP_PKEY_add1_attr_by_NID(key, NID_LocalKeySet, 0, NULL, |
728 | -1); | 728 | -1); |
729 | 729 | ||
730 | if (!pkcs12_config.noprompt && | 730 | if (!cfg.noprompt && |
731 | EVP_read_pw_string(pass, sizeof pass, | 731 | EVP_read_pw_string(pass, sizeof pass, |
732 | "Enter Export Password:", 1)) { | 732 | "Enter Export Password:", 1)) { |
733 | BIO_printf(bio_err, "Can't read Password\n"); | 733 | BIO_printf(bio_err, "Can't read Password\n"); |
734 | goto export_end; | 734 | goto export_end; |
735 | } | 735 | } |
736 | if (!pkcs12_config.twopass) | 736 | if (!cfg.twopass) |
737 | strlcpy(macpass, pass, sizeof macpass); | 737 | strlcpy(macpass, pass, sizeof macpass); |
738 | 738 | ||
739 | 739 | ||
740 | p12 = PKCS12_create(cpass, pkcs12_config.name, key, ucert, | 740 | p12 = PKCS12_create(cpass, cfg.name, key, ucert, |
741 | certs, pkcs12_config.key_pbe, pkcs12_config.cert_pbe, | 741 | certs, cfg.key_pbe, cfg.cert_pbe, |
742 | pkcs12_config.iter, -1, pkcs12_config.keytype); | 742 | cfg.iter, -1, cfg.keytype); |
743 | 743 | ||
744 | if (p12 == NULL) { | 744 | if (p12 == NULL) { |
745 | ERR_print_errors(bio_err); | 745 | ERR_print_errors(bio_err); |
746 | goto export_end; | 746 | goto export_end; |
747 | } | 747 | } |
748 | if (pkcs12_config.macalg != NULL) { | 748 | if (cfg.macalg != NULL) { |
749 | macmd = EVP_get_digestbyname(pkcs12_config.macalg); | 749 | macmd = EVP_get_digestbyname(cfg.macalg); |
750 | if (macmd == NULL) { | 750 | if (macmd == NULL) { |
751 | BIO_printf(bio_err, | 751 | BIO_printf(bio_err, |
752 | "Unknown digest algorithm %s\n", | 752 | "Unknown digest algorithm %s\n", |
753 | pkcs12_config.macalg); | 753 | cfg.macalg); |
754 | } | 754 | } |
755 | } | 755 | } |
756 | if (pkcs12_config.maciter != -1) | 756 | if (cfg.maciter != -1) |
757 | PKCS12_set_mac(p12, mpass, -1, NULL, 0, | 757 | PKCS12_set_mac(p12, mpass, -1, NULL, 0, |
758 | pkcs12_config.maciter, macmd); | 758 | cfg.maciter, macmd); |
759 | 759 | ||
760 | i2d_PKCS12_bio(out, p12); | 760 | i2d_PKCS12_bio(out, p12); |
761 | 761 | ||
@@ -773,27 +773,27 @@ pkcs12_main(int argc, char **argv) | |||
773 | ERR_print_errors(bio_err); | 773 | ERR_print_errors(bio_err); |
774 | goto end; | 774 | goto end; |
775 | } | 775 | } |
776 | if (!pkcs12_config.noprompt && EVP_read_pw_string(pass, sizeof pass, | 776 | if (!cfg.noprompt && EVP_read_pw_string(pass, sizeof pass, |
777 | "Enter Import Password:", 0)) { | 777 | "Enter Import Password:", 0)) { |
778 | BIO_printf(bio_err, "Can't read Password\n"); | 778 | BIO_printf(bio_err, "Can't read Password\n"); |
779 | goto end; | 779 | goto end; |
780 | } | 780 | } |
781 | 781 | ||
782 | if (!pkcs12_config.twopass) | 782 | if (!cfg.twopass) |
783 | strlcpy(macpass, pass, sizeof macpass); | 783 | strlcpy(macpass, pass, sizeof macpass); |
784 | 784 | ||
785 | if ((pkcs12_config.options & INFO) != 0 && PKCS12_mac_present(p12)) { | 785 | if ((cfg.options & INFO) != 0 && PKCS12_mac_present(p12)) { |
786 | const ASN1_INTEGER *iter; | 786 | const ASN1_INTEGER *iter; |
787 | 787 | ||
788 | PKCS12_get0_mac(NULL, NULL, NULL, &iter, p12); | 788 | PKCS12_get0_mac(NULL, NULL, NULL, &iter, p12); |
789 | BIO_printf(bio_err, "MAC Iteration %ld\n", | 789 | BIO_printf(bio_err, "MAC Iteration %ld\n", |
790 | iter != NULL ? ASN1_INTEGER_get(iter) : 1); | 790 | iter != NULL ? ASN1_INTEGER_get(iter) : 1); |
791 | } | 791 | } |
792 | if (pkcs12_config.macver) { | 792 | if (cfg.macver) { |
793 | /* If we enter empty password try no password first */ | 793 | /* If we enter empty password try no password first */ |
794 | if (!mpass[0] && PKCS12_verify_mac(p12, NULL, 0)) { | 794 | if (!mpass[0] && PKCS12_verify_mac(p12, NULL, 0)) { |
795 | /* If mac and crypto pass the same set it to NULL too */ | 795 | /* If mac and crypto pass the same set it to NULL too */ |
796 | if (!pkcs12_config.twopass) | 796 | if (!cfg.twopass) |
797 | cpass = NULL; | 797 | cpass = NULL; |
798 | } else if (!PKCS12_verify_mac(p12, mpass, -1)) { | 798 | } else if (!PKCS12_verify_mac(p12, mpass, -1)) { |
799 | BIO_printf(bio_err, | 799 | BIO_printf(bio_err, |
@@ -803,7 +803,7 @@ pkcs12_main(int argc, char **argv) | |||
803 | } | 803 | } |
804 | BIO_printf(bio_err, "MAC verified OK\n"); | 804 | BIO_printf(bio_err, "MAC verified OK\n"); |
805 | } | 805 | } |
806 | if (!dump_certs_keys_p12(out, p12, cpass, -1, pkcs12_config.options, | 806 | if (!dump_certs_keys_p12(out, p12, cpass, -1, cfg.options, |
807 | passout)) { | 807 | passout)) { |
808 | BIO_printf(bio_err, "Error outputting keys and certificates\n"); | 808 | BIO_printf(bio_err, "Error outputting keys and certificates\n"); |
809 | ERR_print_errors(bio_err); | 809 | ERR_print_errors(bio_err); |
@@ -814,7 +814,7 @@ pkcs12_main(int argc, char **argv) | |||
814 | PKCS12_free(p12); | 814 | PKCS12_free(p12); |
815 | BIO_free(in); | 815 | BIO_free(in); |
816 | BIO_free_all(out); | 816 | BIO_free_all(out); |
817 | sk_OPENSSL_STRING_free(pkcs12_config.canames); | 817 | sk_OPENSSL_STRING_free(cfg.canames); |
818 | free(passin); | 818 | free(passin); |
819 | free(passout); | 819 | free(passout); |
820 | 820 | ||
@@ -907,7 +907,7 @@ dump_certs_pkeys_bag(BIO *out, PKCS12_SAFEBAG *bag, char *pass, int passlen, | |||
907 | if ((pkey = EVP_PKCS82PKEY(p8)) == NULL) | 907 | if ((pkey = EVP_PKCS82PKEY(p8)) == NULL) |
908 | return 0; | 908 | return 0; |
909 | print_attribs(out, PKCS8_pkey_get0_attrs(p8), "Key Attributes"); | 909 | print_attribs(out, PKCS8_pkey_get0_attrs(p8), "Key Attributes"); |
910 | PEM_write_bio_PrivateKey(out, pkey, pkcs12_config.enc, NULL, 0, | 910 | PEM_write_bio_PrivateKey(out, pkey, cfg.enc, NULL, 0, |
911 | NULL, pempass); | 911 | NULL, pempass); |
912 | EVP_PKEY_free(pkey); | 912 | EVP_PKEY_free(pkey); |
913 | break; | 913 | break; |
@@ -938,7 +938,7 @@ dump_certs_pkeys_bag(BIO *out, PKCS12_SAFEBAG *bag, char *pass, int passlen, | |||
938 | } | 938 | } |
939 | print_attribs(out, PKCS8_pkey_get0_attrs(p8), "Key Attributes"); | 939 | print_attribs(out, PKCS8_pkey_get0_attrs(p8), "Key Attributes"); |
940 | PKCS8_PRIV_KEY_INFO_free(p8); | 940 | PKCS8_PRIV_KEY_INFO_free(p8); |
941 | PEM_write_bio_PrivateKey(out, pkey, pkcs12_config.enc, NULL, 0, | 941 | PEM_write_bio_PrivateKey(out, pkey, cfg.enc, NULL, 0, |
942 | NULL, pempass); | 942 | NULL, pempass); |
943 | EVP_PKEY_free(pkey); | 943 | EVP_PKEY_free(pkey); |
944 | break; | 944 | break; |
diff --git a/src/usr.bin/openssl/pkcs7.c b/src/usr.bin/openssl/pkcs7.c index b0acf3fd98..4e66855a8d 100644 --- a/src/usr.bin/openssl/pkcs7.c +++ b/src/usr.bin/openssl/pkcs7.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: pkcs7.c,v 1.13 2023/02/08 07:59:24 tb Exp $ */ | 1 | /* $OpenBSD: pkcs7.c,v 1.14 2023/03/06 14:32:06 tb 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 | * |
@@ -79,7 +79,7 @@ static struct { | |||
79 | int p7_print; | 79 | int p7_print; |
80 | int print_certs; | 80 | int print_certs; |
81 | int text; | 81 | int text; |
82 | } pkcs7_config; | 82 | } cfg; |
83 | 83 | ||
84 | static const struct option pkcs7_options[] = { | 84 | static const struct option pkcs7_options[] = { |
85 | { | 85 | { |
@@ -87,52 +87,52 @@ static const struct option pkcs7_options[] = { | |||
87 | .argname = "file", | 87 | .argname = "file", |
88 | .desc = "Input file (default stdin)", | 88 | .desc = "Input file (default stdin)", |
89 | .type = OPTION_ARG, | 89 | .type = OPTION_ARG, |
90 | .opt.arg = &pkcs7_config.infile, | 90 | .opt.arg = &cfg.infile, |
91 | }, | 91 | }, |
92 | { | 92 | { |
93 | .name = "inform", | 93 | .name = "inform", |
94 | .argname = "format", | 94 | .argname = "format", |
95 | .desc = "Input format (DER or PEM (default))", | 95 | .desc = "Input format (DER or PEM (default))", |
96 | .type = OPTION_ARG_FORMAT, | 96 | .type = OPTION_ARG_FORMAT, |
97 | .opt.value = &pkcs7_config.informat, | 97 | .opt.value = &cfg.informat, |
98 | }, | 98 | }, |
99 | { | 99 | { |
100 | .name = "noout", | 100 | .name = "noout", |
101 | .desc = "Do not output encoded version of PKCS#7 structure", | 101 | .desc = "Do not output encoded version of PKCS#7 structure", |
102 | .type = OPTION_FLAG, | 102 | .type = OPTION_FLAG, |
103 | .opt.flag = &pkcs7_config.noout, | 103 | .opt.flag = &cfg.noout, |
104 | }, | 104 | }, |
105 | { | 105 | { |
106 | .name = "out", | 106 | .name = "out", |
107 | .argname = "file", | 107 | .argname = "file", |
108 | .desc = "Output file (default stdout)", | 108 | .desc = "Output file (default stdout)", |
109 | .type = OPTION_ARG, | 109 | .type = OPTION_ARG, |
110 | .opt.arg = &pkcs7_config.outfile, | 110 | .opt.arg = &cfg.outfile, |
111 | }, | 111 | }, |
112 | { | 112 | { |
113 | .name = "outform", | 113 | .name = "outform", |
114 | .argname = "format", | 114 | .argname = "format", |
115 | .desc = "Output format (DER or PEM (default))", | 115 | .desc = "Output format (DER or PEM (default))", |
116 | .type = OPTION_ARG_FORMAT, | 116 | .type = OPTION_ARG_FORMAT, |
117 | .opt.value = &pkcs7_config.outformat, | 117 | .opt.value = &cfg.outformat, |
118 | }, | 118 | }, |
119 | { | 119 | { |
120 | .name = "print", | 120 | .name = "print", |
121 | .desc = "Output ASN.1 representation of PKCS#7 structure", | 121 | .desc = "Output ASN.1 representation of PKCS#7 structure", |
122 | .type = OPTION_FLAG, | 122 | .type = OPTION_FLAG, |
123 | .opt.flag = &pkcs7_config.p7_print, | 123 | .opt.flag = &cfg.p7_print, |
124 | }, | 124 | }, |
125 | { | 125 | { |
126 | .name = "print_certs", | 126 | .name = "print_certs", |
127 | .desc = "Print out any certificates or CRLs contained in file", | 127 | .desc = "Print out any certificates or CRLs contained in file", |
128 | .type = OPTION_FLAG, | 128 | .type = OPTION_FLAG, |
129 | .opt.flag = &pkcs7_config.print_certs, | 129 | .opt.flag = &cfg.print_certs, |
130 | }, | 130 | }, |
131 | { | 131 | { |
132 | .name = "text", | 132 | .name = "text", |
133 | .desc = "Print out full certificate details", | 133 | .desc = "Print out full certificate details", |
134 | .type = OPTION_FLAG, | 134 | .type = OPTION_FLAG, |
135 | .opt.flag = &pkcs7_config.text, | 135 | .opt.flag = &cfg.text, |
136 | }, | 136 | }, |
137 | { NULL }, | 137 | { NULL }, |
138 | }; | 138 | }; |
@@ -159,10 +159,10 @@ pkcs7_main(int argc, char **argv) | |||
159 | exit(1); | 159 | exit(1); |
160 | } | 160 | } |
161 | 161 | ||
162 | memset(&pkcs7_config, 0, sizeof(pkcs7_config)); | 162 | memset(&cfg, 0, sizeof(cfg)); |
163 | 163 | ||
164 | pkcs7_config.informat = FORMAT_PEM; | 164 | cfg.informat = FORMAT_PEM; |
165 | pkcs7_config.outformat = FORMAT_PEM; | 165 | cfg.outformat = FORMAT_PEM; |
166 | 166 | ||
167 | if (options_parse(argc, argv, pkcs7_options, NULL, NULL) != 0) { | 167 | if (options_parse(argc, argv, pkcs7_options, NULL, NULL) != 0) { |
168 | pkcs7_usage(); | 168 | pkcs7_usage(); |
@@ -175,18 +175,18 @@ pkcs7_main(int argc, char **argv) | |||
175 | ERR_print_errors(bio_err); | 175 | ERR_print_errors(bio_err); |
176 | goto end; | 176 | goto end; |
177 | } | 177 | } |
178 | if (pkcs7_config.infile == NULL) | 178 | if (cfg.infile == NULL) |
179 | BIO_set_fp(in, stdin, BIO_NOCLOSE); | 179 | BIO_set_fp(in, stdin, BIO_NOCLOSE); |
180 | else { | 180 | else { |
181 | if (BIO_read_filename(in, pkcs7_config.infile) <= 0) { | 181 | if (BIO_read_filename(in, cfg.infile) <= 0) { |
182 | perror(pkcs7_config.infile); | 182 | perror(cfg.infile); |
183 | goto end; | 183 | goto end; |
184 | } | 184 | } |
185 | } | 185 | } |
186 | 186 | ||
187 | if (pkcs7_config.informat == FORMAT_ASN1) | 187 | if (cfg.informat == FORMAT_ASN1) |
188 | p7 = d2i_PKCS7_bio(in, NULL); | 188 | p7 = d2i_PKCS7_bio(in, NULL); |
189 | else if (pkcs7_config.informat == FORMAT_PEM) | 189 | else if (cfg.informat == FORMAT_PEM) |
190 | p7 = PEM_read_bio_PKCS7(in, NULL, NULL, NULL); | 190 | p7 = PEM_read_bio_PKCS7(in, NULL, NULL, NULL); |
191 | else { | 191 | else { |
192 | BIO_printf(bio_err, "bad input format specified for pkcs7 object\n"); | 192 | BIO_printf(bio_err, "bad input format specified for pkcs7 object\n"); |
@@ -197,19 +197,19 @@ pkcs7_main(int argc, char **argv) | |||
197 | ERR_print_errors(bio_err); | 197 | ERR_print_errors(bio_err); |
198 | goto end; | 198 | goto end; |
199 | } | 199 | } |
200 | if (pkcs7_config.outfile == NULL) { | 200 | if (cfg.outfile == NULL) { |
201 | BIO_set_fp(out, stdout, BIO_NOCLOSE); | 201 | BIO_set_fp(out, stdout, BIO_NOCLOSE); |
202 | } else { | 202 | } else { |
203 | if (BIO_write_filename(out, pkcs7_config.outfile) <= 0) { | 203 | if (BIO_write_filename(out, cfg.outfile) <= 0) { |
204 | perror(pkcs7_config.outfile); | 204 | perror(cfg.outfile); |
205 | goto end; | 205 | goto end; |
206 | } | 206 | } |
207 | } | 207 | } |
208 | 208 | ||
209 | if (pkcs7_config.p7_print) | 209 | if (cfg.p7_print) |
210 | PKCS7_print_ctx(out, p7, 0, NULL); | 210 | PKCS7_print_ctx(out, p7, 0, NULL); |
211 | 211 | ||
212 | if (pkcs7_config.print_certs) { | 212 | if (cfg.print_certs) { |
213 | STACK_OF(X509) * certs = NULL; | 213 | STACK_OF(X509) * certs = NULL; |
214 | STACK_OF(X509_CRL) * crls = NULL; | 214 | STACK_OF(X509_CRL) * crls = NULL; |
215 | 215 | ||
@@ -236,12 +236,12 @@ pkcs7_main(int argc, char **argv) | |||
236 | 236 | ||
237 | for (i = 0; i < sk_X509_num(certs); i++) { | 237 | for (i = 0; i < sk_X509_num(certs); i++) { |
238 | x = sk_X509_value(certs, i); | 238 | x = sk_X509_value(certs, i); |
239 | if (pkcs7_config.text) | 239 | if (cfg.text) |
240 | X509_print(out, x); | 240 | X509_print(out, x); |
241 | else | 241 | else |
242 | dump_cert_text(out, x); | 242 | dump_cert_text(out, x); |
243 | 243 | ||
244 | if (!pkcs7_config.noout) | 244 | if (!cfg.noout) |
245 | PEM_write_bio_X509(out, x); | 245 | PEM_write_bio_X509(out, x); |
246 | BIO_puts(out, "\n"); | 246 | BIO_puts(out, "\n"); |
247 | } | 247 | } |
@@ -254,7 +254,7 @@ pkcs7_main(int argc, char **argv) | |||
254 | 254 | ||
255 | X509_CRL_print(out, crl); | 255 | X509_CRL_print(out, crl); |
256 | 256 | ||
257 | if (!pkcs7_config.noout) | 257 | if (!cfg.noout) |
258 | PEM_write_bio_X509_CRL(out, crl); | 258 | PEM_write_bio_X509_CRL(out, crl); |
259 | BIO_puts(out, "\n"); | 259 | BIO_puts(out, "\n"); |
260 | } | 260 | } |
@@ -262,10 +262,10 @@ pkcs7_main(int argc, char **argv) | |||
262 | ret = 0; | 262 | ret = 0; |
263 | goto end; | 263 | goto end; |
264 | } | 264 | } |
265 | if (!pkcs7_config.noout) { | 265 | if (!cfg.noout) { |
266 | if (pkcs7_config.outformat == FORMAT_ASN1) | 266 | if (cfg.outformat == FORMAT_ASN1) |
267 | i = i2d_PKCS7_bio(out, p7); | 267 | i = i2d_PKCS7_bio(out, p7); |
268 | else if (pkcs7_config.outformat == FORMAT_PEM) | 268 | else if (cfg.outformat == FORMAT_PEM) |
269 | i = PEM_write_bio_PKCS7(out, p7); | 269 | i = PEM_write_bio_PKCS7(out, p7); |
270 | else { | 270 | else { |
271 | BIO_printf(bio_err, "bad output format specified for outfile\n"); | 271 | BIO_printf(bio_err, "bad output format specified for outfile\n"); |
diff --git a/src/usr.bin/openssl/pkcs8.c b/src/usr.bin/openssl/pkcs8.c index ea12230006..d78202e03f 100644 --- a/src/usr.bin/openssl/pkcs8.c +++ b/src/usr.bin/openssl/pkcs8.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: pkcs8.c,v 1.15 2022/11/11 17:07:39 joshua Exp $ */ | 1 | /* $OpenBSD: pkcs8.c,v 1.16 2023/03/06 14:32:06 tb 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 1999-2004. | 3 | * project 1999-2004. |
4 | */ | 4 | */ |
@@ -79,12 +79,12 @@ static struct { | |||
79 | char *passargout; | 79 | char *passargout; |
80 | int pbe_nid; | 80 | int pbe_nid; |
81 | int topk8; | 81 | int topk8; |
82 | } pkcs8_config; | 82 | } cfg; |
83 | 83 | ||
84 | static int | 84 | static int |
85 | pkcs8_opt_v1(char *arg) | 85 | pkcs8_opt_v1(char *arg) |
86 | { | 86 | { |
87 | if ((pkcs8_config.pbe_nid = OBJ_txt2nid(arg)) == NID_undef) { | 87 | if ((cfg.pbe_nid = OBJ_txt2nid(arg)) == NID_undef) { |
88 | fprintf(stderr, "Unknown PBE algorithm '%s'\n", arg); | 88 | fprintf(stderr, "Unknown PBE algorithm '%s'\n", arg); |
89 | return (1); | 89 | return (1); |
90 | } | 90 | } |
@@ -95,7 +95,7 @@ pkcs8_opt_v1(char *arg) | |||
95 | static int | 95 | static int |
96 | pkcs8_opt_v2(char *arg) | 96 | pkcs8_opt_v2(char *arg) |
97 | { | 97 | { |
98 | if ((pkcs8_config.cipher = EVP_get_cipherbyname(arg)) == NULL) { | 98 | if ((cfg.cipher = EVP_get_cipherbyname(arg)) == NULL) { |
99 | fprintf(stderr, "Unknown cipher '%s'\n", arg); | 99 | fprintf(stderr, "Unknown cipher '%s'\n", arg); |
100 | return (1); | 100 | return (1); |
101 | } | 101 | } |
@@ -109,62 +109,62 @@ static const struct option pkcs8_options[] = { | |||
109 | .argname = "file", | 109 | .argname = "file", |
110 | .desc = "Input file (default stdin)", | 110 | .desc = "Input file (default stdin)", |
111 | .type = OPTION_ARG, | 111 | .type = OPTION_ARG, |
112 | .opt.arg = &pkcs8_config.infile, | 112 | .opt.arg = &cfg.infile, |
113 | }, | 113 | }, |
114 | { | 114 | { |
115 | .name = "inform", | 115 | .name = "inform", |
116 | .argname = "der | pem", | 116 | .argname = "der | pem", |
117 | .desc = "Input format (default PEM)", | 117 | .desc = "Input format (default PEM)", |
118 | .type = OPTION_ARG_FORMAT, | 118 | .type = OPTION_ARG_FORMAT, |
119 | .opt.value = &pkcs8_config.informat, | 119 | .opt.value = &cfg.informat, |
120 | }, | 120 | }, |
121 | { | 121 | { |
122 | .name = "nocrypt", | 122 | .name = "nocrypt", |
123 | .desc = "Use or expect unencrypted private key", | 123 | .desc = "Use or expect unencrypted private key", |
124 | .type = OPTION_FLAG, | 124 | .type = OPTION_FLAG, |
125 | .opt.flag = &pkcs8_config.nocrypt, | 125 | .opt.flag = &cfg.nocrypt, |
126 | }, | 126 | }, |
127 | { | 127 | { |
128 | .name = "noiter", | 128 | .name = "noiter", |
129 | .desc = "Use 1 as iteration count", | 129 | .desc = "Use 1 as iteration count", |
130 | .type = OPTION_VALUE, | 130 | .type = OPTION_VALUE, |
131 | .value = 1, | 131 | .value = 1, |
132 | .opt.value = &pkcs8_config.iter, | 132 | .opt.value = &cfg.iter, |
133 | }, | 133 | }, |
134 | { | 134 | { |
135 | .name = "out", | 135 | .name = "out", |
136 | .argname = "file", | 136 | .argname = "file", |
137 | .desc = "Output file (default stdout)", | 137 | .desc = "Output file (default stdout)", |
138 | .type = OPTION_ARG, | 138 | .type = OPTION_ARG, |
139 | .opt.arg = &pkcs8_config.outfile, | 139 | .opt.arg = &cfg.outfile, |
140 | }, | 140 | }, |
141 | { | 141 | { |
142 | .name = "outform", | 142 | .name = "outform", |
143 | .argname = "der | pem", | 143 | .argname = "der | pem", |
144 | .desc = "Output format (default PEM)", | 144 | .desc = "Output format (default PEM)", |
145 | .type = OPTION_ARG_FORMAT, | 145 | .type = OPTION_ARG_FORMAT, |
146 | .opt.value = &pkcs8_config.outformat, | 146 | .opt.value = &cfg.outformat, |
147 | }, | 147 | }, |
148 | { | 148 | { |
149 | .name = "passin", | 149 | .name = "passin", |
150 | .argname = "source", | 150 | .argname = "source", |
151 | .desc = "Input file passphrase source", | 151 | .desc = "Input file passphrase source", |
152 | .type = OPTION_ARG, | 152 | .type = OPTION_ARG, |
153 | .opt.arg = &pkcs8_config.passargin, | 153 | .opt.arg = &cfg.passargin, |
154 | }, | 154 | }, |
155 | { | 155 | { |
156 | .name = "passout", | 156 | .name = "passout", |
157 | .argname = "source", | 157 | .argname = "source", |
158 | .desc = "Output file passphrase source", | 158 | .desc = "Output file passphrase source", |
159 | .type = OPTION_ARG, | 159 | .type = OPTION_ARG, |
160 | .opt.arg = &pkcs8_config.passargout, | 160 | .opt.arg = &cfg.passargout, |
161 | }, | 161 | }, |
162 | { | 162 | { |
163 | .name = "topk8", | 163 | .name = "topk8", |
164 | .desc = "Read traditional format key and write PKCS#8 format" | 164 | .desc = "Read traditional format key and write PKCS#8 format" |
165 | " key", | 165 | " key", |
166 | .type = OPTION_FLAG, | 166 | .type = OPTION_FLAG, |
167 | .opt.flag = &pkcs8_config.topk8, | 167 | .opt.flag = &cfg.topk8, |
168 | }, | 168 | }, |
169 | { | 169 | { |
170 | .name = "v1", | 170 | .name = "v1", |
@@ -208,48 +208,48 @@ pkcs8_main(int argc, char **argv) | |||
208 | exit(1); | 208 | exit(1); |
209 | } | 209 | } |
210 | 210 | ||
211 | memset(&pkcs8_config, 0, sizeof(pkcs8_config)); | 211 | memset(&cfg, 0, sizeof(cfg)); |
212 | 212 | ||
213 | pkcs8_config.iter = PKCS12_DEFAULT_ITER; | 213 | cfg.iter = PKCS12_DEFAULT_ITER; |
214 | pkcs8_config.informat = FORMAT_PEM; | 214 | cfg.informat = FORMAT_PEM; |
215 | pkcs8_config.outformat = FORMAT_PEM; | 215 | cfg.outformat = FORMAT_PEM; |
216 | pkcs8_config.pbe_nid = -1; | 216 | cfg.pbe_nid = -1; |
217 | 217 | ||
218 | if (options_parse(argc, argv, pkcs8_options, NULL, NULL) != 0) { | 218 | if (options_parse(argc, argv, pkcs8_options, NULL, NULL) != 0) { |
219 | pkcs8_usage(); | 219 | pkcs8_usage(); |
220 | return (1); | 220 | return (1); |
221 | } | 221 | } |
222 | 222 | ||
223 | if (!app_passwd(bio_err, pkcs8_config.passargin, | 223 | if (!app_passwd(bio_err, cfg.passargin, |
224 | pkcs8_config.passargout, &passin, &passout)) { | 224 | cfg.passargout, &passin, &passout)) { |
225 | BIO_printf(bio_err, "Error getting passwords\n"); | 225 | BIO_printf(bio_err, "Error getting passwords\n"); |
226 | goto end; | 226 | goto end; |
227 | } | 227 | } |
228 | if ((pkcs8_config.pbe_nid == -1) && !pkcs8_config.cipher) | 228 | if ((cfg.pbe_nid == -1) && !cfg.cipher) |
229 | pkcs8_config.pbe_nid = NID_pbeWithMD5AndDES_CBC; | 229 | cfg.pbe_nid = NID_pbeWithMD5AndDES_CBC; |
230 | 230 | ||
231 | if (pkcs8_config.infile) { | 231 | if (cfg.infile) { |
232 | if (!(in = BIO_new_file(pkcs8_config.infile, "rb"))) { | 232 | if (!(in = BIO_new_file(cfg.infile, "rb"))) { |
233 | BIO_printf(bio_err, | 233 | BIO_printf(bio_err, |
234 | "Can't open input file '%s'\n", | 234 | "Can't open input file '%s'\n", |
235 | pkcs8_config.infile); | 235 | cfg.infile); |
236 | goto end; | 236 | goto end; |
237 | } | 237 | } |
238 | } else | 238 | } else |
239 | in = BIO_new_fp(stdin, BIO_NOCLOSE); | 239 | in = BIO_new_fp(stdin, BIO_NOCLOSE); |
240 | 240 | ||
241 | if (pkcs8_config.outfile) { | 241 | if (cfg.outfile) { |
242 | if (!(out = BIO_new_file(pkcs8_config.outfile, "wb"))) { | 242 | if (!(out = BIO_new_file(cfg.outfile, "wb"))) { |
243 | BIO_printf(bio_err, "Can't open output file '%s'\n", | 243 | BIO_printf(bio_err, "Can't open output file '%s'\n", |
244 | pkcs8_config.outfile); | 244 | cfg.outfile); |
245 | goto end; | 245 | goto end; |
246 | } | 246 | } |
247 | } else { | 247 | } else { |
248 | out = BIO_new_fp(stdout, BIO_NOCLOSE); | 248 | out = BIO_new_fp(stdout, BIO_NOCLOSE); |
249 | } | 249 | } |
250 | if (pkcs8_config.topk8) { | 250 | if (cfg.topk8) { |
251 | pkey = load_key(bio_err, pkcs8_config.infile, | 251 | pkey = load_key(bio_err, cfg.infile, |
252 | pkcs8_config.informat, 1, passin, "key"); | 252 | cfg.informat, 1, passin, "key"); |
253 | if (!pkey) | 253 | if (!pkey) |
254 | goto end; | 254 | goto end; |
255 | if (!(p8inf = EVP_PKEY2PKCS8(pkey))) { | 255 | if (!(p8inf = EVP_PKEY2PKCS8(pkey))) { |
@@ -257,10 +257,10 @@ pkcs8_main(int argc, char **argv) | |||
257 | ERR_print_errors(bio_err); | 257 | ERR_print_errors(bio_err); |
258 | goto end; | 258 | goto end; |
259 | } | 259 | } |
260 | if (pkcs8_config.nocrypt) { | 260 | if (cfg.nocrypt) { |
261 | if (pkcs8_config.outformat == FORMAT_PEM) | 261 | if (cfg.outformat == FORMAT_PEM) |
262 | PEM_write_bio_PKCS8_PRIV_KEY_INFO(out, p8inf); | 262 | PEM_write_bio_PKCS8_PRIV_KEY_INFO(out, p8inf); |
263 | else if (pkcs8_config.outformat == FORMAT_ASN1) | 263 | else if (cfg.outformat == FORMAT_ASN1) |
264 | i2d_PKCS8_PRIV_KEY_INFO_bio(out, p8inf); | 264 | i2d_PKCS8_PRIV_KEY_INFO_bio(out, p8inf); |
265 | else { | 265 | else { |
266 | BIO_printf(bio_err, | 266 | BIO_printf(bio_err, |
@@ -276,16 +276,16 @@ pkcs8_main(int argc, char **argv) | |||
276 | "Enter Encryption Password:", 1)) | 276 | "Enter Encryption Password:", 1)) |
277 | goto end; | 277 | goto end; |
278 | } | 278 | } |
279 | if (!(p8 = PKCS8_encrypt(pkcs8_config.pbe_nid, | 279 | if (!(p8 = PKCS8_encrypt(cfg.pbe_nid, |
280 | pkcs8_config.cipher, p8pass, strlen(p8pass), | 280 | cfg.cipher, p8pass, strlen(p8pass), |
281 | NULL, 0, pkcs8_config.iter, p8inf))) { | 281 | NULL, 0, cfg.iter, p8inf))) { |
282 | BIO_printf(bio_err, "Error encrypting key\n"); | 282 | BIO_printf(bio_err, "Error encrypting key\n"); |
283 | ERR_print_errors(bio_err); | 283 | ERR_print_errors(bio_err); |
284 | goto end; | 284 | goto end; |
285 | } | 285 | } |
286 | if (pkcs8_config.outformat == FORMAT_PEM) | 286 | if (cfg.outformat == FORMAT_PEM) |
287 | PEM_write_bio_PKCS8(out, p8); | 287 | PEM_write_bio_PKCS8(out, p8); |
288 | else if (pkcs8_config.outformat == FORMAT_ASN1) | 288 | else if (cfg.outformat == FORMAT_ASN1) |
289 | i2d_PKCS8_bio(out, p8); | 289 | i2d_PKCS8_bio(out, p8); |
290 | else { | 290 | else { |
291 | BIO_printf(bio_err, | 291 | BIO_printf(bio_err, |
@@ -297,20 +297,20 @@ pkcs8_main(int argc, char **argv) | |||
297 | ret = 0; | 297 | ret = 0; |
298 | goto end; | 298 | goto end; |
299 | } | 299 | } |
300 | if (pkcs8_config.nocrypt) { | 300 | if (cfg.nocrypt) { |
301 | if (pkcs8_config.informat == FORMAT_PEM) | 301 | if (cfg.informat == FORMAT_PEM) |
302 | p8inf = PEM_read_bio_PKCS8_PRIV_KEY_INFO(in, NULL, | 302 | p8inf = PEM_read_bio_PKCS8_PRIV_KEY_INFO(in, NULL, |
303 | NULL, NULL); | 303 | NULL, NULL); |
304 | else if (pkcs8_config.informat == FORMAT_ASN1) | 304 | else if (cfg.informat == FORMAT_ASN1) |
305 | p8inf = d2i_PKCS8_PRIV_KEY_INFO_bio(in, NULL); | 305 | p8inf = d2i_PKCS8_PRIV_KEY_INFO_bio(in, NULL); |
306 | else { | 306 | else { |
307 | BIO_printf(bio_err, "Bad format specified for key\n"); | 307 | BIO_printf(bio_err, "Bad format specified for key\n"); |
308 | goto end; | 308 | goto end; |
309 | } | 309 | } |
310 | } else { | 310 | } else { |
311 | if (pkcs8_config.informat == FORMAT_PEM) | 311 | if (cfg.informat == FORMAT_PEM) |
312 | p8 = PEM_read_bio_PKCS8(in, NULL, NULL, NULL); | 312 | p8 = PEM_read_bio_PKCS8(in, NULL, NULL, NULL); |
313 | else if (pkcs8_config.informat == FORMAT_ASN1) | 313 | else if (cfg.informat == FORMAT_ASN1) |
314 | p8 = d2i_PKCS8_bio(in, NULL); | 314 | p8 = d2i_PKCS8_bio(in, NULL); |
315 | else { | 315 | else { |
316 | BIO_printf(bio_err, "Bad format specified for key\n"); | 316 | BIO_printf(bio_err, "Bad format specified for key\n"); |
@@ -342,10 +342,10 @@ pkcs8_main(int argc, char **argv) | |||
342 | ERR_print_errors(bio_err); | 342 | ERR_print_errors(bio_err); |
343 | goto end; | 343 | goto end; |
344 | } | 344 | } |
345 | if (pkcs8_config.outformat == FORMAT_PEM) | 345 | if (cfg.outformat == FORMAT_PEM) |
346 | PEM_write_bio_PrivateKey(out, pkey, NULL, NULL, 0, NULL, | 346 | PEM_write_bio_PrivateKey(out, pkey, NULL, NULL, 0, NULL, |
347 | passout); | 347 | passout); |
348 | else if (pkcs8_config.outformat == FORMAT_ASN1) | 348 | else if (cfg.outformat == FORMAT_ASN1) |
349 | i2d_PrivateKey_bio(out, pkey); | 349 | i2d_PrivateKey_bio(out, pkey); |
350 | else { | 350 | else { |
351 | BIO_printf(bio_err, "Bad format specified for key\n"); | 351 | BIO_printf(bio_err, "Bad format specified for key\n"); |
diff --git a/src/usr.bin/openssl/pkey.c b/src/usr.bin/openssl/pkey.c index 2d9b69f5c3..cb558f5ac8 100644 --- a/src/usr.bin/openssl/pkey.c +++ b/src/usr.bin/openssl/pkey.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: pkey.c,v 1.18 2022/11/11 17:07:39 joshua Exp $ */ | 1 | /* $OpenBSD: pkey.c,v 1.19 2023/03/06 14:32:06 tb 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 2006 | 3 | * project 2006 |
4 | */ | 4 | */ |
@@ -80,7 +80,7 @@ static struct { | |||
80 | int pubout; | 80 | int pubout; |
81 | int pubtext; | 81 | int pubtext; |
82 | int text; | 82 | int text; |
83 | } pkey_config; | 83 | } cfg; |
84 | 84 | ||
85 | static int | 85 | static int |
86 | pkey_opt_cipher(int argc, char **argv, int *argsused) | 86 | pkey_opt_cipher(int argc, char **argv, int *argsused) |
@@ -90,7 +90,7 @@ pkey_opt_cipher(int argc, char **argv, int *argsused) | |||
90 | if (*name++ != '-') | 90 | if (*name++ != '-') |
91 | return (1); | 91 | return (1); |
92 | 92 | ||
93 | if ((pkey_config.cipher = EVP_get_cipherbyname(name)) == NULL) { | 93 | if ((cfg.cipher = EVP_get_cipherbyname(name)) == NULL) { |
94 | BIO_printf(bio_err, "Unknown cipher %s\n", name); | 94 | BIO_printf(bio_err, "Unknown cipher %s\n", name); |
95 | return (1); | 95 | return (1); |
96 | } | 96 | } |
@@ -104,87 +104,87 @@ static const struct option pkey_options[] = { | |||
104 | .name = "check", | 104 | .name = "check", |
105 | .desc = "Check validity of key", | 105 | .desc = "Check validity of key", |
106 | .type = OPTION_FLAG, | 106 | .type = OPTION_FLAG, |
107 | .opt.flag = &pkey_config.check, | 107 | .opt.flag = &cfg.check, |
108 | }, | 108 | }, |
109 | { | 109 | { |
110 | .name = "in", | 110 | .name = "in", |
111 | .argname = "file", | 111 | .argname = "file", |
112 | .desc = "Input file (default stdin)", | 112 | .desc = "Input file (default stdin)", |
113 | .type = OPTION_ARG, | 113 | .type = OPTION_ARG, |
114 | .opt.arg = &pkey_config.infile, | 114 | .opt.arg = &cfg.infile, |
115 | }, | 115 | }, |
116 | { | 116 | { |
117 | .name = "inform", | 117 | .name = "inform", |
118 | .argname = "format", | 118 | .argname = "format", |
119 | .desc = "Input format (DER or PEM (default))", | 119 | .desc = "Input format (DER or PEM (default))", |
120 | .type = OPTION_ARG_FORMAT, | 120 | .type = OPTION_ARG_FORMAT, |
121 | .opt.value = &pkey_config.informat, | 121 | .opt.value = &cfg.informat, |
122 | }, | 122 | }, |
123 | { | 123 | { |
124 | .name = "noout", | 124 | .name = "noout", |
125 | .desc = "Do not print encoded version of the key", | 125 | .desc = "Do not print encoded version of the key", |
126 | .type = OPTION_FLAG, | 126 | .type = OPTION_FLAG, |
127 | .opt.flag = &pkey_config.noout, | 127 | .opt.flag = &cfg.noout, |
128 | }, | 128 | }, |
129 | { | 129 | { |
130 | .name = "out", | 130 | .name = "out", |
131 | .argname = "file", | 131 | .argname = "file", |
132 | .desc = "Output file (default stdout)", | 132 | .desc = "Output file (default stdout)", |
133 | .type = OPTION_ARG, | 133 | .type = OPTION_ARG, |
134 | .opt.arg = &pkey_config.outfile, | 134 | .opt.arg = &cfg.outfile, |
135 | }, | 135 | }, |
136 | { | 136 | { |
137 | .name = "outform", | 137 | .name = "outform", |
138 | .argname = "format", | 138 | .argname = "format", |
139 | .desc = "Output format (DER or PEM (default))", | 139 | .desc = "Output format (DER or PEM (default))", |
140 | .type = OPTION_ARG_FORMAT, | 140 | .type = OPTION_ARG_FORMAT, |
141 | .opt.value = &pkey_config.outformat, | 141 | .opt.value = &cfg.outformat, |
142 | }, | 142 | }, |
143 | { | 143 | { |
144 | .name = "passin", | 144 | .name = "passin", |
145 | .argname = "src", | 145 | .argname = "src", |
146 | .desc = "Input file passphrase source", | 146 | .desc = "Input file passphrase source", |
147 | .type = OPTION_ARG, | 147 | .type = OPTION_ARG, |
148 | .opt.arg = &pkey_config.passargin, | 148 | .opt.arg = &cfg.passargin, |
149 | }, | 149 | }, |
150 | { | 150 | { |
151 | .name = "passout", | 151 | .name = "passout", |
152 | .argname = "src", | 152 | .argname = "src", |
153 | .desc = "Output file passphrase source", | 153 | .desc = "Output file passphrase source", |
154 | .type = OPTION_ARG, | 154 | .type = OPTION_ARG, |
155 | .opt.arg = &pkey_config.passargout, | 155 | .opt.arg = &cfg.passargout, |
156 | }, | 156 | }, |
157 | { | 157 | { |
158 | .name = "pubcheck", | 158 | .name = "pubcheck", |
159 | .desc = "Check validity of public key", | 159 | .desc = "Check validity of public key", |
160 | .type = OPTION_FLAG, | 160 | .type = OPTION_FLAG, |
161 | .opt.flag = &pkey_config.pubcheck, | 161 | .opt.flag = &cfg.pubcheck, |
162 | }, | 162 | }, |
163 | { | 163 | { |
164 | .name = "pubin", | 164 | .name = "pubin", |
165 | .desc = "Expect a public key (default private key)", | 165 | .desc = "Expect a public key (default private key)", |
166 | .type = OPTION_VALUE, | 166 | .type = OPTION_VALUE, |
167 | .value = 1, | 167 | .value = 1, |
168 | .opt.value = &pkey_config.pubin, | 168 | .opt.value = &cfg.pubin, |
169 | }, | 169 | }, |
170 | { | 170 | { |
171 | .name = "pubout", | 171 | .name = "pubout", |
172 | .desc = "Output a public key (default private key)", | 172 | .desc = "Output a public key (default private key)", |
173 | .type = OPTION_VALUE, | 173 | .type = OPTION_VALUE, |
174 | .value = 1, | 174 | .value = 1, |
175 | .opt.value = &pkey_config.pubout, | 175 | .opt.value = &cfg.pubout, |
176 | }, | 176 | }, |
177 | { | 177 | { |
178 | .name = "text", | 178 | .name = "text", |
179 | .desc = "Print the public/private key in plain text", | 179 | .desc = "Print the public/private key in plain text", |
180 | .type = OPTION_FLAG, | 180 | .type = OPTION_FLAG, |
181 | .opt.flag = &pkey_config.text, | 181 | .opt.flag = &cfg.text, |
182 | }, | 182 | }, |
183 | { | 183 | { |
184 | .name = "text_pub", | 184 | .name = "text_pub", |
185 | .desc = "Print out only public key in plain text", | 185 | .desc = "Print out only public key in plain text", |
186 | .type = OPTION_FLAG, | 186 | .type = OPTION_FLAG, |
187 | .opt.flag = &pkey_config.pubtext, | 187 | .opt.flag = &cfg.pubtext, |
188 | }, | 188 | }, |
189 | { | 189 | { |
190 | .name = NULL, | 190 | .name = NULL, |
@@ -226,61 +226,61 @@ pkey_main(int argc, char **argv) | |||
226 | exit(1); | 226 | exit(1); |
227 | } | 227 | } |
228 | 228 | ||
229 | memset(&pkey_config, 0, sizeof(pkey_config)); | 229 | memset(&cfg, 0, sizeof(cfg)); |
230 | pkey_config.informat = FORMAT_PEM; | 230 | cfg.informat = FORMAT_PEM; |
231 | pkey_config.outformat = FORMAT_PEM; | 231 | cfg.outformat = FORMAT_PEM; |
232 | 232 | ||
233 | if (options_parse(argc, argv, pkey_options, NULL, NULL) != 0) { | 233 | if (options_parse(argc, argv, pkey_options, NULL, NULL) != 0) { |
234 | pkey_usage(); | 234 | pkey_usage(); |
235 | goto end; | 235 | goto end; |
236 | } | 236 | } |
237 | 237 | ||
238 | if (pkey_config.pubtext) | 238 | if (cfg.pubtext) |
239 | pkey_config.text = 1; | 239 | cfg.text = 1; |
240 | if (pkey_config.pubin) | 240 | if (cfg.pubin) |
241 | pkey_config.pubout = pkey_config.pubtext = 1; | 241 | cfg.pubout = cfg.pubtext = 1; |
242 | 242 | ||
243 | if (!app_passwd(bio_err, pkey_config.passargin, pkey_config.passargout, | 243 | if (!app_passwd(bio_err, cfg.passargin, cfg.passargout, |
244 | &passin, &passout)) { | 244 | &passin, &passout)) { |
245 | BIO_printf(bio_err, "Error getting passwords\n"); | 245 | BIO_printf(bio_err, "Error getting passwords\n"); |
246 | goto end; | 246 | goto end; |
247 | } | 247 | } |
248 | if (pkey_config.outfile) { | 248 | if (cfg.outfile) { |
249 | if (!(out = BIO_new_file(pkey_config.outfile, "wb"))) { | 249 | if (!(out = BIO_new_file(cfg.outfile, "wb"))) { |
250 | BIO_printf(bio_err, | 250 | BIO_printf(bio_err, |
251 | "Can't open output file %s\n", pkey_config.outfile); | 251 | "Can't open output file %s\n", cfg.outfile); |
252 | goto end; | 252 | goto end; |
253 | } | 253 | } |
254 | } else { | 254 | } else { |
255 | out = BIO_new_fp(stdout, BIO_NOCLOSE); | 255 | out = BIO_new_fp(stdout, BIO_NOCLOSE); |
256 | } | 256 | } |
257 | 257 | ||
258 | if (pkey_config.pubin) | 258 | if (cfg.pubin) |
259 | pkey = load_pubkey(bio_err, pkey_config.infile, | 259 | pkey = load_pubkey(bio_err, cfg.infile, |
260 | pkey_config.informat, 1, passin, "Public Key"); | 260 | cfg.informat, 1, passin, "Public Key"); |
261 | else | 261 | else |
262 | pkey = load_key(bio_err, pkey_config.infile, | 262 | pkey = load_key(bio_err, cfg.infile, |
263 | pkey_config.informat, 1, passin, "key"); | 263 | cfg.informat, 1, passin, "key"); |
264 | if (!pkey) | 264 | if (!pkey) |
265 | goto end; | 265 | goto end; |
266 | 266 | ||
267 | if (pkey_config.check) { | 267 | if (cfg.check) { |
268 | if (!pkey_check(out, pkey, EVP_PKEY_check, "Key pair")) | 268 | if (!pkey_check(out, pkey, EVP_PKEY_check, "Key pair")) |
269 | goto end; | 269 | goto end; |
270 | } else if (pkey_config.pubcheck) { | 270 | } else if (cfg.pubcheck) { |
271 | if (!pkey_check(out, pkey, EVP_PKEY_public_check, "Public key")) | 271 | if (!pkey_check(out, pkey, EVP_PKEY_public_check, "Public key")) |
272 | goto end; | 272 | goto end; |
273 | } | 273 | } |
274 | 274 | ||
275 | if (!pkey_config.noout) { | 275 | if (!cfg.noout) { |
276 | if (pkey_config.outformat == FORMAT_PEM) { | 276 | if (cfg.outformat == FORMAT_PEM) { |
277 | if (pkey_config.pubout) | 277 | if (cfg.pubout) |
278 | PEM_write_bio_PUBKEY(out, pkey); | 278 | PEM_write_bio_PUBKEY(out, pkey); |
279 | else | 279 | else |
280 | PEM_write_bio_PrivateKey(out, pkey, | 280 | PEM_write_bio_PrivateKey(out, pkey, |
281 | pkey_config.cipher, NULL, 0, NULL, passout); | 281 | cfg.cipher, NULL, 0, NULL, passout); |
282 | } else if (pkey_config.outformat == FORMAT_ASN1) { | 282 | } else if (cfg.outformat == FORMAT_ASN1) { |
283 | if (pkey_config.pubout) | 283 | if (cfg.pubout) |
284 | i2d_PUBKEY_bio(out, pkey); | 284 | i2d_PUBKEY_bio(out, pkey); |
285 | else | 285 | else |
286 | i2d_PrivateKey_bio(out, pkey); | 286 | i2d_PrivateKey_bio(out, pkey); |
@@ -290,8 +290,8 @@ pkey_main(int argc, char **argv) | |||
290 | } | 290 | } |
291 | 291 | ||
292 | } | 292 | } |
293 | if (pkey_config.text) { | 293 | if (cfg.text) { |
294 | if (pkey_config.pubtext) | 294 | if (cfg.pubtext) |
295 | EVP_PKEY_print_public(out, pkey, 0, NULL); | 295 | EVP_PKEY_print_public(out, pkey, 0, NULL); |
296 | else | 296 | else |
297 | EVP_PKEY_print_private(out, pkey, 0, NULL); | 297 | EVP_PKEY_print_private(out, pkey, 0, NULL); |
diff --git a/src/usr.bin/openssl/pkeyparam.c b/src/usr.bin/openssl/pkeyparam.c index 57b5ad8042..946195640e 100644 --- a/src/usr.bin/openssl/pkeyparam.c +++ b/src/usr.bin/openssl/pkeyparam.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: pkeyparam.c,v 1.16 2023/03/05 13:12:53 tb Exp $ */ | 1 | /* $OpenBSD: pkeyparam.c,v 1.17 2023/03/06 14:32:06 tb 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 2006 | 3 | * project 2006 |
4 | */ | 4 | */ |
@@ -71,40 +71,40 @@ static struct { | |||
71 | int noout; | 71 | int noout; |
72 | char *outfile; | 72 | char *outfile; |
73 | int text; | 73 | int text; |
74 | } pkeyparam_config; | 74 | } cfg; |
75 | 75 | ||
76 | static const struct option pkeyparam_options[] = { | 76 | static const struct option pkeyparam_options[] = { |
77 | { | 77 | { |
78 | .name = "check", | 78 | .name = "check", |
79 | .desc = "Check validity of key parameters", | 79 | .desc = "Check validity of key parameters", |
80 | .type = OPTION_FLAG, | 80 | .type = OPTION_FLAG, |
81 | .opt.flag = &pkeyparam_config.check, | 81 | .opt.flag = &cfg.check, |
82 | }, | 82 | }, |
83 | { | 83 | { |
84 | .name = "in", | 84 | .name = "in", |
85 | .argname = "file", | 85 | .argname = "file", |
86 | .desc = "Input file (default stdin)", | 86 | .desc = "Input file (default stdin)", |
87 | .type = OPTION_ARG, | 87 | .type = OPTION_ARG, |
88 | .opt.arg = &pkeyparam_config.infile, | 88 | .opt.arg = &cfg.infile, |
89 | }, | 89 | }, |
90 | { | 90 | { |
91 | .name = "noout", | 91 | .name = "noout", |
92 | .desc = "Do not print encoded version of the parameters", | 92 | .desc = "Do not print encoded version of the parameters", |
93 | .type = OPTION_FLAG, | 93 | .type = OPTION_FLAG, |
94 | .opt.flag = &pkeyparam_config.noout, | 94 | .opt.flag = &cfg.noout, |
95 | }, | 95 | }, |
96 | { | 96 | { |
97 | .name = "out", | 97 | .name = "out", |
98 | .argname = "file", | 98 | .argname = "file", |
99 | .desc = "Output file (default stdout)", | 99 | .desc = "Output file (default stdout)", |
100 | .type = OPTION_ARG, | 100 | .type = OPTION_ARG, |
101 | .opt.arg = &pkeyparam_config.outfile, | 101 | .opt.arg = &cfg.outfile, |
102 | }, | 102 | }, |
103 | { | 103 | { |
104 | .name = "text", | 104 | .name = "text", |
105 | .desc = "Print out the parameters in plain text", | 105 | .desc = "Print out the parameters in plain text", |
106 | .type = OPTION_FLAG, | 106 | .type = OPTION_FLAG, |
107 | .opt.flag = &pkeyparam_config.text, | 107 | .opt.flag = &cfg.text, |
108 | }, | 108 | }, |
109 | { NULL }, | 109 | { NULL }, |
110 | }; | 110 | }; |
@@ -130,26 +130,26 @@ pkeyparam_main(int argc, char **argv) | |||
130 | exit(1); | 130 | exit(1); |
131 | } | 131 | } |
132 | 132 | ||
133 | memset(&pkeyparam_config, 0, sizeof(pkeyparam_config)); | 133 | memset(&cfg, 0, sizeof(cfg)); |
134 | 134 | ||
135 | if (options_parse(argc, argv, pkeyparam_options, NULL, NULL) != 0) { | 135 | if (options_parse(argc, argv, pkeyparam_options, NULL, NULL) != 0) { |
136 | pkeyparam_usage(); | 136 | pkeyparam_usage(); |
137 | return (1); | 137 | return (1); |
138 | } | 138 | } |
139 | 139 | ||
140 | if (pkeyparam_config.infile) { | 140 | if (cfg.infile) { |
141 | if (!(in = BIO_new_file(pkeyparam_config.infile, "r"))) { | 141 | if (!(in = BIO_new_file(cfg.infile, "r"))) { |
142 | BIO_printf(bio_err, "Can't open input file %s\n", | 142 | BIO_printf(bio_err, "Can't open input file %s\n", |
143 | pkeyparam_config.infile); | 143 | cfg.infile); |
144 | goto end; | 144 | goto end; |
145 | } | 145 | } |
146 | } else | 146 | } else |
147 | in = BIO_new_fp(stdin, BIO_NOCLOSE); | 147 | in = BIO_new_fp(stdin, BIO_NOCLOSE); |
148 | 148 | ||
149 | if (pkeyparam_config.outfile) { | 149 | if (cfg.outfile) { |
150 | if (!(out = BIO_new_file(pkeyparam_config.outfile, "w"))) { | 150 | if (!(out = BIO_new_file(cfg.outfile, "w"))) { |
151 | BIO_printf(bio_err, "Can't open output file %s\n", | 151 | BIO_printf(bio_err, "Can't open output file %s\n", |
152 | pkeyparam_config.outfile); | 152 | cfg.outfile); |
153 | goto end; | 153 | goto end; |
154 | } | 154 | } |
155 | } else { | 155 | } else { |
@@ -163,15 +163,15 @@ pkeyparam_main(int argc, char **argv) | |||
163 | goto end; | 163 | goto end; |
164 | } | 164 | } |
165 | 165 | ||
166 | if (pkeyparam_config.check) { | 166 | if (cfg.check) { |
167 | if (!pkey_check(out, pkey, EVP_PKEY_param_check, "Parameters")) | 167 | if (!pkey_check(out, pkey, EVP_PKEY_param_check, "Parameters")) |
168 | goto end; | 168 | goto end; |
169 | } | 169 | } |
170 | 170 | ||
171 | if (!pkeyparam_config.noout) | 171 | if (!cfg.noout) |
172 | PEM_write_bio_Parameters(out, pkey); | 172 | PEM_write_bio_Parameters(out, pkey); |
173 | 173 | ||
174 | if (pkeyparam_config.text) | 174 | if (cfg.text) |
175 | EVP_PKEY_print_params(out, pkey, 0, NULL); | 175 | EVP_PKEY_print_params(out, pkey, 0, NULL); |
176 | 176 | ||
177 | ret = 0; | 177 | ret = 0; |
diff --git a/src/usr.bin/openssl/pkeyutl.c b/src/usr.bin/openssl/pkeyutl.c index 8c0fd28b29..efd0896c02 100644 --- a/src/usr.bin/openssl/pkeyutl.c +++ b/src/usr.bin/openssl/pkeyutl.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: pkeyutl.c,v 1.18 2023/03/05 13:12:53 tb Exp $ */ | 1 | /* $OpenBSD: pkeyutl.c,v 1.19 2023/03/06 14:32:06 tb 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 2006. | 3 | * project 2006. |
4 | */ | 4 | */ |
@@ -82,7 +82,7 @@ static struct { | |||
82 | int pkey_op; | 82 | int pkey_op; |
83 | int rev; | 83 | int rev; |
84 | char *sigfile; | 84 | char *sigfile; |
85 | } pkeyutl_config; | 85 | } cfg; |
86 | 86 | ||
87 | static void pkeyutl_usage(void); | 87 | static void pkeyutl_usage(void); |
88 | 88 | ||
@@ -101,48 +101,48 @@ static const struct option pkeyutl_options[] = { | |||
101 | .name = "asn1parse", | 101 | .name = "asn1parse", |
102 | .desc = "ASN.1 parse the output data", | 102 | .desc = "ASN.1 parse the output data", |
103 | .type = OPTION_FLAG, | 103 | .type = OPTION_FLAG, |
104 | .opt.flag = &pkeyutl_config.asn1parse, | 104 | .opt.flag = &cfg.asn1parse, |
105 | }, | 105 | }, |
106 | { | 106 | { |
107 | .name = "certin", | 107 | .name = "certin", |
108 | .desc = "Input is a certificate containing a public key", | 108 | .desc = "Input is a certificate containing a public key", |
109 | .type = OPTION_VALUE, | 109 | .type = OPTION_VALUE, |
110 | .value = KEY_CERT, | 110 | .value = KEY_CERT, |
111 | .opt.value = &pkeyutl_config.key_type, | 111 | .opt.value = &cfg.key_type, |
112 | }, | 112 | }, |
113 | { | 113 | { |
114 | .name = "decrypt", | 114 | .name = "decrypt", |
115 | .desc = "Decrypt the input data using a private key", | 115 | .desc = "Decrypt the input data using a private key", |
116 | .type = OPTION_VALUE, | 116 | .type = OPTION_VALUE, |
117 | .value = EVP_PKEY_OP_DECRYPT, | 117 | .value = EVP_PKEY_OP_DECRYPT, |
118 | .opt.value = &pkeyutl_config.pkey_op, | 118 | .opt.value = &cfg.pkey_op, |
119 | }, | 119 | }, |
120 | { | 120 | { |
121 | .name = "derive", | 121 | .name = "derive", |
122 | .desc = "Derive a shared secret using the peer key", | 122 | .desc = "Derive a shared secret using the peer key", |
123 | .type = OPTION_VALUE, | 123 | .type = OPTION_VALUE, |
124 | .value = EVP_PKEY_OP_DERIVE, | 124 | .value = EVP_PKEY_OP_DERIVE, |
125 | .opt.value = &pkeyutl_config.pkey_op, | 125 | .opt.value = &cfg.pkey_op, |
126 | }, | 126 | }, |
127 | { | 127 | { |
128 | .name = "encrypt", | 128 | .name = "encrypt", |
129 | .desc = "Encrypt the input data using a public key", | 129 | .desc = "Encrypt the input data using a public key", |
130 | .type = OPTION_VALUE, | 130 | .type = OPTION_VALUE, |
131 | .value = EVP_PKEY_OP_ENCRYPT, | 131 | .value = EVP_PKEY_OP_ENCRYPT, |
132 | .opt.value = &pkeyutl_config.pkey_op, | 132 | .opt.value = &cfg.pkey_op, |
133 | }, | 133 | }, |
134 | { | 134 | { |
135 | .name = "hexdump", | 135 | .name = "hexdump", |
136 | .desc = "Hex dump the output data", | 136 | .desc = "Hex dump the output data", |
137 | .type = OPTION_FLAG, | 137 | .type = OPTION_FLAG, |
138 | .opt.flag = &pkeyutl_config.hexdump, | 138 | .opt.flag = &cfg.hexdump, |
139 | }, | 139 | }, |
140 | { | 140 | { |
141 | .name = "in", | 141 | .name = "in", |
142 | .argname = "file", | 142 | .argname = "file", |
143 | .desc = "Input file (default stdin)", | 143 | .desc = "Input file (default stdin)", |
144 | .type = OPTION_ARG, | 144 | .type = OPTION_ARG, |
145 | .opt.arg = &pkeyutl_config.infile, | 145 | .opt.arg = &cfg.infile, |
146 | }, | 146 | }, |
147 | { | 147 | { |
148 | .name = "inkey", | 148 | .name = "inkey", |
@@ -156,28 +156,28 @@ static const struct option pkeyutl_options[] = { | |||
156 | .argname = "fmt", | 156 | .argname = "fmt", |
157 | .desc = "Input key format (DER or PEM (default))", | 157 | .desc = "Input key format (DER or PEM (default))", |
158 | .type = OPTION_ARG_FORMAT, | 158 | .type = OPTION_ARG_FORMAT, |
159 | .opt.value = &pkeyutl_config.keyform, | 159 | .opt.value = &cfg.keyform, |
160 | }, | 160 | }, |
161 | { | 161 | { |
162 | .name = "out", | 162 | .name = "out", |
163 | .argname = "file", | 163 | .argname = "file", |
164 | .desc = "Output file (default stdout)", | 164 | .desc = "Output file (default stdout)", |
165 | .type = OPTION_ARG, | 165 | .type = OPTION_ARG, |
166 | .opt.arg = &pkeyutl_config.outfile, | 166 | .opt.arg = &cfg.outfile, |
167 | }, | 167 | }, |
168 | { | 168 | { |
169 | .name = "passin", | 169 | .name = "passin", |
170 | .argname = "arg", | 170 | .argname = "arg", |
171 | .desc = "Key password source", | 171 | .desc = "Key password source", |
172 | .type = OPTION_ARG, | 172 | .type = OPTION_ARG, |
173 | .opt.arg = &pkeyutl_config.passargin, | 173 | .opt.arg = &cfg.passargin, |
174 | }, | 174 | }, |
175 | { | 175 | { |
176 | .name = "peerform", | 176 | .name = "peerform", |
177 | .argname = "fmt", | 177 | .argname = "fmt", |
178 | .desc = "Input key format (DER or PEM (default))", | 178 | .desc = "Input key format (DER or PEM (default))", |
179 | .type = OPTION_ARG_FORMAT, | 179 | .type = OPTION_ARG_FORMAT, |
180 | .opt.value = &pkeyutl_config.peerform, | 180 | .opt.value = &cfg.peerform, |
181 | }, | 181 | }, |
182 | { | 182 | { |
183 | .name = "peerkey", | 183 | .name = "peerkey", |
@@ -198,41 +198,41 @@ static const struct option pkeyutl_options[] = { | |||
198 | .desc = "Input is a public key", | 198 | .desc = "Input is a public key", |
199 | .type = OPTION_VALUE, | 199 | .type = OPTION_VALUE, |
200 | .value = KEY_PUBKEY, | 200 | .value = KEY_PUBKEY, |
201 | .opt.value = &pkeyutl_config.key_type, | 201 | .opt.value = &cfg.key_type, |
202 | }, | 202 | }, |
203 | { | 203 | { |
204 | .name = "rev", | 204 | .name = "rev", |
205 | .desc = "Reverse the input data", | 205 | .desc = "Reverse the input data", |
206 | .type = OPTION_FLAG, | 206 | .type = OPTION_FLAG, |
207 | .opt.flag = &pkeyutl_config.rev, | 207 | .opt.flag = &cfg.rev, |
208 | }, | 208 | }, |
209 | { | 209 | { |
210 | .name = "sigfile", | 210 | .name = "sigfile", |
211 | .argname = "file", | 211 | .argname = "file", |
212 | .desc = "Signature file (verify operation only)", | 212 | .desc = "Signature file (verify operation only)", |
213 | .type = OPTION_ARG, | 213 | .type = OPTION_ARG, |
214 | .opt.arg = &pkeyutl_config.sigfile, | 214 | .opt.arg = &cfg.sigfile, |
215 | }, | 215 | }, |
216 | { | 216 | { |
217 | .name = "sign", | 217 | .name = "sign", |
218 | .desc = "Sign the input data using private key", | 218 | .desc = "Sign the input data using private key", |
219 | .type = OPTION_VALUE, | 219 | .type = OPTION_VALUE, |
220 | .value = EVP_PKEY_OP_SIGN, | 220 | .value = EVP_PKEY_OP_SIGN, |
221 | .opt.value = &pkeyutl_config.pkey_op, | 221 | .opt.value = &cfg.pkey_op, |
222 | }, | 222 | }, |
223 | { | 223 | { |
224 | .name = "verify", | 224 | .name = "verify", |
225 | .desc = "Verify the input data using public key", | 225 | .desc = "Verify the input data using public key", |
226 | .type = OPTION_VALUE, | 226 | .type = OPTION_VALUE, |
227 | .value = EVP_PKEY_OP_VERIFY, | 227 | .value = EVP_PKEY_OP_VERIFY, |
228 | .opt.value = &pkeyutl_config.pkey_op, | 228 | .opt.value = &cfg.pkey_op, |
229 | }, | 229 | }, |
230 | { | 230 | { |
231 | .name = "verifyrecover", | 231 | .name = "verifyrecover", |
232 | .desc = "Verify with public key, recover original data", | 232 | .desc = "Verify with public key, recover original data", |
233 | .type = OPTION_VALUE, | 233 | .type = OPTION_VALUE, |
234 | .value = EVP_PKEY_OP_VERIFYRECOVER, | 234 | .value = EVP_PKEY_OP_VERIFYRECOVER, |
235 | .opt.value = &pkeyutl_config.pkey_op, | 235 | .opt.value = &cfg.pkey_op, |
236 | }, | 236 | }, |
237 | 237 | ||
238 | {NULL}, | 238 | {NULL}, |
@@ -268,36 +268,36 @@ pkeyutl_main(int argc, char **argv) | |||
268 | exit(1); | 268 | exit(1); |
269 | } | 269 | } |
270 | 270 | ||
271 | memset(&pkeyutl_config, 0, sizeof(pkeyutl_config)); | 271 | memset(&cfg, 0, sizeof(cfg)); |
272 | pkeyutl_config.pkey_op = EVP_PKEY_OP_SIGN; | 272 | cfg.pkey_op = EVP_PKEY_OP_SIGN; |
273 | pkeyutl_config.key_type = KEY_PRIVKEY; | 273 | cfg.key_type = KEY_PRIVKEY; |
274 | pkeyutl_config.keyform = FORMAT_PEM; | 274 | cfg.keyform = FORMAT_PEM; |
275 | pkeyutl_config.peerform = FORMAT_PEM; | 275 | cfg.peerform = FORMAT_PEM; |
276 | pkeyutl_config.keysize = -1; | 276 | cfg.keysize = -1; |
277 | 277 | ||
278 | if (options_parse(argc, argv, pkeyutl_options, NULL, NULL) != 0) { | 278 | if (options_parse(argc, argv, pkeyutl_options, NULL, NULL) != 0) { |
279 | pkeyutl_usage(); | 279 | pkeyutl_usage(); |
280 | goto end; | 280 | goto end; |
281 | } | 281 | } |
282 | 282 | ||
283 | if (!pkeyutl_config.ctx) { | 283 | if (!cfg.ctx) { |
284 | pkeyutl_usage(); | 284 | pkeyutl_usage(); |
285 | goto end; | 285 | goto end; |
286 | } | 286 | } |
287 | if (pkeyutl_config.sigfile && | 287 | if (cfg.sigfile && |
288 | (pkeyutl_config.pkey_op != EVP_PKEY_OP_VERIFY)) { | 288 | (cfg.pkey_op != EVP_PKEY_OP_VERIFY)) { |
289 | BIO_puts(bio_err, "Signature file specified for non verify\n"); | 289 | BIO_puts(bio_err, "Signature file specified for non verify\n"); |
290 | goto end; | 290 | goto end; |
291 | } | 291 | } |
292 | if (!pkeyutl_config.sigfile && | 292 | if (!cfg.sigfile && |
293 | (pkeyutl_config.pkey_op == EVP_PKEY_OP_VERIFY)) { | 293 | (cfg.pkey_op == EVP_PKEY_OP_VERIFY)) { |
294 | BIO_puts(bio_err, "No signature file specified for verify\n"); | 294 | BIO_puts(bio_err, "No signature file specified for verify\n"); |
295 | goto end; | 295 | goto end; |
296 | } | 296 | } |
297 | 297 | ||
298 | if (pkeyutl_config.pkey_op != EVP_PKEY_OP_DERIVE) { | 298 | if (cfg.pkey_op != EVP_PKEY_OP_DERIVE) { |
299 | if (pkeyutl_config.infile) { | 299 | if (cfg.infile) { |
300 | if (!(in = BIO_new_file(pkeyutl_config.infile, "rb"))) { | 300 | if (!(in = BIO_new_file(cfg.infile, "rb"))) { |
301 | BIO_puts(bio_err, | 301 | BIO_puts(bio_err, |
302 | "Error Opening Input File\n"); | 302 | "Error Opening Input File\n"); |
303 | ERR_print_errors(bio_err); | 303 | ERR_print_errors(bio_err); |
@@ -306,8 +306,8 @@ pkeyutl_main(int argc, char **argv) | |||
306 | } else | 306 | } else |
307 | in = BIO_new_fp(stdin, BIO_NOCLOSE); | 307 | in = BIO_new_fp(stdin, BIO_NOCLOSE); |
308 | } | 308 | } |
309 | if (pkeyutl_config.outfile) { | 309 | if (cfg.outfile) { |
310 | if (!(out = BIO_new_file(pkeyutl_config.outfile, "wb"))) { | 310 | if (!(out = BIO_new_file(cfg.outfile, "wb"))) { |
311 | BIO_printf(bio_err, "Error Creating Output File\n"); | 311 | BIO_printf(bio_err, "Error Creating Output File\n"); |
312 | ERR_print_errors(bio_err); | 312 | ERR_print_errors(bio_err); |
313 | goto end; | 313 | goto end; |
@@ -316,14 +316,14 @@ pkeyutl_main(int argc, char **argv) | |||
316 | out = BIO_new_fp(stdout, BIO_NOCLOSE); | 316 | out = BIO_new_fp(stdout, BIO_NOCLOSE); |
317 | } | 317 | } |
318 | 318 | ||
319 | if (pkeyutl_config.sigfile) { | 319 | if (cfg.sigfile) { |
320 | BIO *sigbio = BIO_new_file(pkeyutl_config.sigfile, "rb"); | 320 | BIO *sigbio = BIO_new_file(cfg.sigfile, "rb"); |
321 | if (!sigbio) { | 321 | if (!sigbio) { |
322 | BIO_printf(bio_err, "Can't open signature file %s\n", | 322 | BIO_printf(bio_err, "Can't open signature file %s\n", |
323 | pkeyutl_config.sigfile); | 323 | cfg.sigfile); |
324 | goto end; | 324 | goto end; |
325 | } | 325 | } |
326 | siglen = bio_to_mem(&sig, pkeyutl_config.keysize * 10, sigbio); | 326 | siglen = bio_to_mem(&sig, cfg.keysize * 10, sigbio); |
327 | BIO_free(sigbio); | 327 | BIO_free(sigbio); |
328 | if (siglen <= 0) { | 328 | if (siglen <= 0) { |
329 | BIO_printf(bio_err, "Error reading signature data\n"); | 329 | BIO_printf(bio_err, "Error reading signature data\n"); |
@@ -332,12 +332,12 @@ pkeyutl_main(int argc, char **argv) | |||
332 | } | 332 | } |
333 | if (in) { | 333 | if (in) { |
334 | /* Read the input data */ | 334 | /* Read the input data */ |
335 | buf_inlen = bio_to_mem(&buf_in, pkeyutl_config.keysize * 10, in); | 335 | buf_inlen = bio_to_mem(&buf_in, cfg.keysize * 10, in); |
336 | if (buf_inlen <= 0) { | 336 | if (buf_inlen <= 0) { |
337 | BIO_printf(bio_err, "Error reading input Data\n"); | 337 | BIO_printf(bio_err, "Error reading input Data\n"); |
338 | exit(1); | 338 | exit(1); |
339 | } | 339 | } |
340 | if (pkeyutl_config.rev) { | 340 | if (cfg.rev) { |
341 | size_t i; | 341 | size_t i; |
342 | unsigned char ctmp; | 342 | unsigned char ctmp; |
343 | size_t l = (size_t) buf_inlen; | 343 | size_t l = (size_t) buf_inlen; |
@@ -348,8 +348,8 @@ pkeyutl_main(int argc, char **argv) | |||
348 | } | 348 | } |
349 | } | 349 | } |
350 | } | 350 | } |
351 | if (pkeyutl_config.pkey_op == EVP_PKEY_OP_VERIFY) { | 351 | if (cfg.pkey_op == EVP_PKEY_OP_VERIFY) { |
352 | rv = EVP_PKEY_verify(pkeyutl_config.ctx, sig, (size_t) siglen, | 352 | rv = EVP_PKEY_verify(cfg.ctx, sig, (size_t) siglen, |
353 | buf_in, (size_t) buf_inlen); | 353 | buf_in, (size_t) buf_inlen); |
354 | if (rv == 1) { | 354 | if (rv == 1) { |
355 | BIO_puts(out, "Signature Verified Successfully\n"); | 355 | BIO_puts(out, "Signature Verified Successfully\n"); |
@@ -359,15 +359,15 @@ pkeyutl_main(int argc, char **argv) | |||
359 | if (rv >= 0) | 359 | if (rv >= 0) |
360 | goto end; | 360 | goto end; |
361 | } else { | 361 | } else { |
362 | rv = do_keyop(pkeyutl_config.ctx, pkeyutl_config.pkey_op, NULL, | 362 | rv = do_keyop(cfg.ctx, cfg.pkey_op, NULL, |
363 | (size_t *)&buf_outlen, buf_in, (size_t) buf_inlen); | 363 | (size_t *)&buf_outlen, buf_in, (size_t) buf_inlen); |
364 | if (rv > 0) { | 364 | if (rv > 0) { |
365 | buf_out = malloc(buf_outlen); | 365 | buf_out = malloc(buf_outlen); |
366 | if (!buf_out) | 366 | if (!buf_out) |
367 | rv = -1; | 367 | rv = -1; |
368 | else | 368 | else |
369 | rv = do_keyop(pkeyutl_config.ctx, | 369 | rv = do_keyop(cfg.ctx, |
370 | pkeyutl_config.pkey_op, | 370 | cfg.pkey_op, |
371 | buf_out, (size_t *) & buf_outlen, | 371 | buf_out, (size_t *) & buf_outlen, |
372 | buf_in, (size_t) buf_inlen); | 372 | buf_in, (size_t) buf_inlen); |
373 | } | 373 | } |
@@ -379,16 +379,16 @@ pkeyutl_main(int argc, char **argv) | |||
379 | goto end; | 379 | goto end; |
380 | } | 380 | } |
381 | ret = 0; | 381 | ret = 0; |
382 | if (pkeyutl_config.asn1parse) { | 382 | if (cfg.asn1parse) { |
383 | if (!ASN1_parse_dump(out, buf_out, buf_outlen, 1, -1)) | 383 | if (!ASN1_parse_dump(out, buf_out, buf_outlen, 1, -1)) |
384 | ERR_print_errors(bio_err); | 384 | ERR_print_errors(bio_err); |
385 | } else if (pkeyutl_config.hexdump) | 385 | } else if (cfg.hexdump) |
386 | BIO_dump(out, (char *) buf_out, buf_outlen); | 386 | BIO_dump(out, (char *) buf_out, buf_outlen); |
387 | else | 387 | else |
388 | BIO_write(out, buf_out, buf_outlen); | 388 | BIO_write(out, buf_out, buf_outlen); |
389 | 389 | ||
390 | end: | 390 | end: |
391 | EVP_PKEY_CTX_free(pkeyutl_config.ctx); | 391 | EVP_PKEY_CTX_free(cfg.ctx); |
392 | BIO_free(in); | 392 | BIO_free(in); |
393 | BIO_free_all(out); | 393 | BIO_free_all(out); |
394 | free(buf_in); | 394 | free(buf_in); |
@@ -406,32 +406,32 @@ init_ctx(char *keyfile) | |||
406 | int rv = -1; | 406 | int rv = -1; |
407 | X509 *x; | 407 | X509 *x; |
408 | 408 | ||
409 | if (((pkeyutl_config.pkey_op == EVP_PKEY_OP_SIGN) | 409 | if (((cfg.pkey_op == EVP_PKEY_OP_SIGN) |
410 | || (pkeyutl_config.pkey_op == EVP_PKEY_OP_DECRYPT) | 410 | || (cfg.pkey_op == EVP_PKEY_OP_DECRYPT) |
411 | || (pkeyutl_config.pkey_op == EVP_PKEY_OP_DERIVE)) | 411 | || (cfg.pkey_op == EVP_PKEY_OP_DERIVE)) |
412 | && (pkeyutl_config.key_type != KEY_PRIVKEY)) { | 412 | && (cfg.key_type != KEY_PRIVKEY)) { |
413 | BIO_printf(bio_err, | 413 | BIO_printf(bio_err, |
414 | "A private key is needed for this operation\n"); | 414 | "A private key is needed for this operation\n"); |
415 | goto end; | 415 | goto end; |
416 | } | 416 | } |
417 | if (!app_passwd(bio_err, pkeyutl_config.passargin, NULL, &passin, | 417 | if (!app_passwd(bio_err, cfg.passargin, NULL, &passin, |
418 | NULL)) { | 418 | NULL)) { |
419 | BIO_printf(bio_err, "Error getting password\n"); | 419 | BIO_printf(bio_err, "Error getting password\n"); |
420 | goto end; | 420 | goto end; |
421 | } | 421 | } |
422 | switch (pkeyutl_config.key_type) { | 422 | switch (cfg.key_type) { |
423 | case KEY_PRIVKEY: | 423 | case KEY_PRIVKEY: |
424 | pkey = load_key(bio_err, keyfile, pkeyutl_config.keyform, 0, | 424 | pkey = load_key(bio_err, keyfile, cfg.keyform, 0, |
425 | passin, "Private Key"); | 425 | passin, "Private Key"); |
426 | break; | 426 | break; |
427 | 427 | ||
428 | case KEY_PUBKEY: | 428 | case KEY_PUBKEY: |
429 | pkey = load_pubkey(bio_err, keyfile, pkeyutl_config.keyform, 0, | 429 | pkey = load_pubkey(bio_err, keyfile, cfg.keyform, 0, |
430 | NULL, "Public Key"); | 430 | NULL, "Public Key"); |
431 | break; | 431 | break; |
432 | 432 | ||
433 | case KEY_CERT: | 433 | case KEY_CERT: |
434 | x = load_cert(bio_err, keyfile, pkeyutl_config.keyform, | 434 | x = load_cert(bio_err, keyfile, cfg.keyform, |
435 | NULL, "Certificate"); | 435 | NULL, "Certificate"); |
436 | if (x) { | 436 | if (x) { |
437 | pkey = X509_get_pubkey(x); | 437 | pkey = X509_get_pubkey(x); |
@@ -440,53 +440,53 @@ init_ctx(char *keyfile) | |||
440 | break; | 440 | break; |
441 | } | 441 | } |
442 | 442 | ||
443 | pkeyutl_config.keysize = EVP_PKEY_size(pkey); | 443 | cfg.keysize = EVP_PKEY_size(pkey); |
444 | 444 | ||
445 | if (!pkey) | 445 | if (!pkey) |
446 | goto end; | 446 | goto end; |
447 | 447 | ||
448 | pkeyutl_config.ctx = EVP_PKEY_CTX_new(pkey, NULL); | 448 | cfg.ctx = EVP_PKEY_CTX_new(pkey, NULL); |
449 | 449 | ||
450 | EVP_PKEY_free(pkey); | 450 | EVP_PKEY_free(pkey); |
451 | 451 | ||
452 | if (!pkeyutl_config.ctx) | 452 | if (!cfg.ctx) |
453 | goto end; | 453 | goto end; |
454 | 454 | ||
455 | switch (pkeyutl_config.pkey_op) { | 455 | switch (cfg.pkey_op) { |
456 | case EVP_PKEY_OP_SIGN: | 456 | case EVP_PKEY_OP_SIGN: |
457 | rv = EVP_PKEY_sign_init(pkeyutl_config.ctx); | 457 | rv = EVP_PKEY_sign_init(cfg.ctx); |
458 | break; | 458 | break; |
459 | 459 | ||
460 | case EVP_PKEY_OP_VERIFY: | 460 | case EVP_PKEY_OP_VERIFY: |
461 | rv = EVP_PKEY_verify_init(pkeyutl_config.ctx); | 461 | rv = EVP_PKEY_verify_init(cfg.ctx); |
462 | break; | 462 | break; |
463 | 463 | ||
464 | case EVP_PKEY_OP_VERIFYRECOVER: | 464 | case EVP_PKEY_OP_VERIFYRECOVER: |
465 | rv = EVP_PKEY_verify_recover_init(pkeyutl_config.ctx); | 465 | rv = EVP_PKEY_verify_recover_init(cfg.ctx); |
466 | break; | 466 | break; |
467 | 467 | ||
468 | case EVP_PKEY_OP_ENCRYPT: | 468 | case EVP_PKEY_OP_ENCRYPT: |
469 | rv = EVP_PKEY_encrypt_init(pkeyutl_config.ctx); | 469 | rv = EVP_PKEY_encrypt_init(cfg.ctx); |
470 | break; | 470 | break; |
471 | 471 | ||
472 | case EVP_PKEY_OP_DECRYPT: | 472 | case EVP_PKEY_OP_DECRYPT: |
473 | rv = EVP_PKEY_decrypt_init(pkeyutl_config.ctx); | 473 | rv = EVP_PKEY_decrypt_init(cfg.ctx); |
474 | break; | 474 | break; |
475 | 475 | ||
476 | case EVP_PKEY_OP_DERIVE: | 476 | case EVP_PKEY_OP_DERIVE: |
477 | rv = EVP_PKEY_derive_init(pkeyutl_config.ctx); | 477 | rv = EVP_PKEY_derive_init(cfg.ctx); |
478 | break; | 478 | break; |
479 | } | 479 | } |
480 | 480 | ||
481 | if (rv <= 0) { | 481 | if (rv <= 0) { |
482 | EVP_PKEY_CTX_free(pkeyutl_config.ctx); | 482 | EVP_PKEY_CTX_free(cfg.ctx); |
483 | pkeyutl_config.ctx = NULL; | 483 | cfg.ctx = NULL; |
484 | } | 484 | } |
485 | 485 | ||
486 | end: | 486 | end: |
487 | free(passin); | 487 | free(passin); |
488 | 488 | ||
489 | if (!pkeyutl_config.ctx) { | 489 | if (!cfg.ctx) { |
490 | BIO_puts(bio_err, "Error initializing context\n"); | 490 | BIO_puts(bio_err, "Error initializing context\n"); |
491 | ERR_print_errors(bio_err); | 491 | ERR_print_errors(bio_err); |
492 | return (1); | 492 | return (1); |
@@ -501,11 +501,11 @@ setup_peer(char *file) | |||
501 | EVP_PKEY *peer = NULL; | 501 | EVP_PKEY *peer = NULL; |
502 | int ret; | 502 | int ret; |
503 | 503 | ||
504 | if (!pkeyutl_config.ctx) { | 504 | if (!cfg.ctx) { |
505 | BIO_puts(bio_err, "-peerkey command before -inkey\n"); | 505 | BIO_puts(bio_err, "-peerkey command before -inkey\n"); |
506 | return (1); | 506 | return (1); |
507 | } | 507 | } |
508 | peer = load_pubkey(bio_err, file, pkeyutl_config.peerform, 0, NULL, | 508 | peer = load_pubkey(bio_err, file, cfg.peerform, 0, NULL, |
509 | "Peer Key"); | 509 | "Peer Key"); |
510 | 510 | ||
511 | if (!peer) { | 511 | if (!peer) { |
@@ -513,7 +513,7 @@ setup_peer(char *file) | |||
513 | ERR_print_errors(bio_err); | 513 | ERR_print_errors(bio_err); |
514 | return (1); | 514 | return (1); |
515 | } | 515 | } |
516 | ret = EVP_PKEY_derive_set_peer(pkeyutl_config.ctx, peer); | 516 | ret = EVP_PKEY_derive_set_peer(cfg.ctx, peer); |
517 | 517 | ||
518 | EVP_PKEY_free(peer); | 518 | EVP_PKEY_free(peer); |
519 | if (ret <= 0) { | 519 | if (ret <= 0) { |
@@ -527,10 +527,10 @@ setup_peer(char *file) | |||
527 | static int | 527 | static int |
528 | pkeyutl_pkeyopt(char *pkeyopt) | 528 | pkeyutl_pkeyopt(char *pkeyopt) |
529 | { | 529 | { |
530 | if (!pkeyutl_config.ctx) { | 530 | if (!cfg.ctx) { |
531 | BIO_puts(bio_err, "-pkeyopt command before -inkey\n"); | 531 | BIO_puts(bio_err, "-pkeyopt command before -inkey\n"); |
532 | return (1); | 532 | return (1); |
533 | } else if (pkey_ctrl_string(pkeyutl_config.ctx, pkeyopt) <= 0) { | 533 | } else if (pkey_ctrl_string(cfg.ctx, pkeyopt) <= 0) { |
534 | BIO_puts(bio_err, "parameter setting error\n"); | 534 | BIO_puts(bio_err, "parameter setting error\n"); |
535 | ERR_print_errors(bio_err); | 535 | ERR_print_errors(bio_err); |
536 | return (1); | 536 | return (1); |
diff --git a/src/usr.bin/openssl/prime.c b/src/usr.bin/openssl/prime.c index 64b1953e33..d704d882fc 100644 --- a/src/usr.bin/openssl/prime.c +++ b/src/usr.bin/openssl/prime.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: prime.c,v 1.16 2023/03/05 13:12:53 tb Exp $ */ | 1 | /* $OpenBSD: prime.c,v 1.17 2023/03/06 14:32:06 tb Exp $ */ |
2 | /* ==================================================================== | 2 | /* ==================================================================== |
3 | * Copyright (c) 2004 The OpenSSL Project. All rights reserved. | 3 | * Copyright (c) 2004 The OpenSSL Project. All rights reserved. |
4 | * | 4 | * |
@@ -62,7 +62,7 @@ static struct { | |||
62 | int generate; | 62 | int generate; |
63 | int hex; | 63 | int hex; |
64 | int safe; | 64 | int safe; |
65 | } prime_config; | 65 | } cfg; |
66 | 66 | ||
67 | static const struct option prime_options[] = { | 67 | static const struct option prime_options[] = { |
68 | { | 68 | { |
@@ -70,32 +70,32 @@ static const struct option prime_options[] = { | |||
70 | .argname = "n", | 70 | .argname = "n", |
71 | .desc = "Number of bits in the generated prime number", | 71 | .desc = "Number of bits in the generated prime number", |
72 | .type = OPTION_ARG_INT, | 72 | .type = OPTION_ARG_INT, |
73 | .opt.value = &prime_config.bits, | 73 | .opt.value = &cfg.bits, |
74 | }, | 74 | }, |
75 | { | 75 | { |
76 | .name = "checks", | 76 | .name = "checks", |
77 | .argname = "n", | 77 | .argname = "n", |
78 | .desc = "Miller-Rabin probabilistic primality test iterations", | 78 | .desc = "Miller-Rabin probabilistic primality test iterations", |
79 | .type = OPTION_ARG_INT, | 79 | .type = OPTION_ARG_INT, |
80 | .opt.value = &prime_config.checks, | 80 | .opt.value = &cfg.checks, |
81 | }, | 81 | }, |
82 | { | 82 | { |
83 | .name = "generate", | 83 | .name = "generate", |
84 | .desc = "Generate a pseudo-random prime number", | 84 | .desc = "Generate a pseudo-random prime number", |
85 | .type = OPTION_FLAG, | 85 | .type = OPTION_FLAG, |
86 | .opt.flag = &prime_config.generate, | 86 | .opt.flag = &cfg.generate, |
87 | }, | 87 | }, |
88 | { | 88 | { |
89 | .name = "hex", | 89 | .name = "hex", |
90 | .desc = "Hexadecimal prime numbers", | 90 | .desc = "Hexadecimal prime numbers", |
91 | .type = OPTION_FLAG, | 91 | .type = OPTION_FLAG, |
92 | .opt.flag = &prime_config.hex, | 92 | .opt.flag = &cfg.hex, |
93 | }, | 93 | }, |
94 | { | 94 | { |
95 | .name = "safe", | 95 | .name = "safe", |
96 | .desc = "Generate only \"safe\" prime numbers", | 96 | .desc = "Generate only \"safe\" prime numbers", |
97 | .type = OPTION_FLAG, | 97 | .type = OPTION_FLAG, |
98 | .opt.flag = &prime_config.safe, | 98 | .opt.flag = &cfg.safe, |
99 | }, | 99 | }, |
100 | {NULL}, | 100 | {NULL}, |
101 | }; | 101 | }; |
@@ -123,17 +123,17 @@ prime_main(int argc, char **argv) | |||
123 | exit(1); | 123 | exit(1); |
124 | } | 124 | } |
125 | 125 | ||
126 | memset(&prime_config, 0, sizeof(prime_config)); | 126 | memset(&cfg, 0, sizeof(cfg)); |
127 | 127 | ||
128 | /* Default iterations for Miller-Rabin probabilistic primality test. */ | 128 | /* Default iterations for Miller-Rabin probabilistic primality test. */ |
129 | prime_config.checks = 20; | 129 | cfg.checks = 20; |
130 | 130 | ||
131 | if (options_parse(argc, argv, prime_options, &prime, NULL) != 0) { | 131 | if (options_parse(argc, argv, prime_options, &prime, NULL) != 0) { |
132 | prime_usage(); | 132 | prime_usage(); |
133 | return (1); | 133 | return (1); |
134 | } | 134 | } |
135 | 135 | ||
136 | if (prime == NULL && prime_config.generate == 0) { | 136 | if (prime == NULL && cfg.generate == 0) { |
137 | BIO_printf(bio_err, "No prime specified.\n"); | 137 | BIO_printf(bio_err, "No prime specified.\n"); |
138 | prime_usage(); | 138 | prime_usage(); |
139 | return (1); | 139 | return (1); |
@@ -145,8 +145,8 @@ prime_main(int argc, char **argv) | |||
145 | } | 145 | } |
146 | BIO_set_fp(bio_out, stdout, BIO_NOCLOSE); | 146 | BIO_set_fp(bio_out, stdout, BIO_NOCLOSE); |
147 | 147 | ||
148 | if (prime_config.generate != 0) { | 148 | if (cfg.generate != 0) { |
149 | if (prime_config.bits == 0) { | 149 | if (cfg.bits == 0) { |
150 | BIO_printf(bio_err, "Specify the number of bits.\n"); | 150 | BIO_printf(bio_err, "Specify the number of bits.\n"); |
151 | goto end; | 151 | goto end; |
152 | } | 152 | } |
@@ -155,12 +155,12 @@ prime_main(int argc, char **argv) | |||
155 | BIO_printf(bio_err, "Out of memory.\n"); | 155 | BIO_printf(bio_err, "Out of memory.\n"); |
156 | goto end; | 156 | goto end; |
157 | } | 157 | } |
158 | if (!BN_generate_prime_ex(bn, prime_config.bits, | 158 | if (!BN_generate_prime_ex(bn, cfg.bits, |
159 | prime_config.safe, NULL, NULL, NULL)) { | 159 | cfg.safe, NULL, NULL, NULL)) { |
160 | BIO_printf(bio_err, "Prime generation error.\n"); | 160 | BIO_printf(bio_err, "Prime generation error.\n"); |
161 | goto end; | 161 | goto end; |
162 | } | 162 | } |
163 | s = prime_config.hex ? BN_bn2hex(bn) : BN_bn2dec(bn); | 163 | s = cfg.hex ? BN_bn2hex(bn) : BN_bn2dec(bn); |
164 | if (s == NULL) { | 164 | if (s == NULL) { |
165 | BIO_printf(bio_err, "Out of memory.\n"); | 165 | BIO_printf(bio_err, "Out of memory.\n"); |
166 | goto end; | 166 | goto end; |
@@ -168,7 +168,7 @@ prime_main(int argc, char **argv) | |||
168 | BIO_printf(bio_out, "%s\n", s); | 168 | BIO_printf(bio_out, "%s\n", s); |
169 | free(s); | 169 | free(s); |
170 | } else { | 170 | } else { |
171 | if (prime_config.hex) { | 171 | if (cfg.hex) { |
172 | if (!BN_hex2bn(&bn, prime)) { | 172 | if (!BN_hex2bn(&bn, prime)) { |
173 | BIO_printf(bio_err, "%s is an invalid hex " | 173 | BIO_printf(bio_err, "%s is an invalid hex " |
174 | "value.\n", prime); | 174 | "value.\n", prime); |
@@ -182,7 +182,7 @@ prime_main(int argc, char **argv) | |||
182 | } | 182 | } |
183 | } | 183 | } |
184 | 184 | ||
185 | is_prime = BN_is_prime_ex(bn, prime_config.checks, NULL, NULL); | 185 | is_prime = BN_is_prime_ex(bn, cfg.checks, NULL, NULL); |
186 | if (is_prime < 0) { | 186 | if (is_prime < 0) { |
187 | BIO_printf(bio_err, "BN_is_prime_ex failed.\n"); | 187 | BIO_printf(bio_err, "BN_is_prime_ex failed.\n"); |
188 | goto end; | 188 | goto end; |
diff --git a/src/usr.bin/openssl/rand.c b/src/usr.bin/openssl/rand.c index 6ae6a8d8ee..a0f3b44664 100644 --- a/src/usr.bin/openssl/rand.c +++ b/src/usr.bin/openssl/rand.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: rand.c,v 1.16 2023/03/05 13:12:53 tb Exp $ */ | 1 | /* $OpenBSD: rand.c,v 1.17 2023/03/06 14:32:06 tb Exp $ */ |
2 | /* ==================================================================== | 2 | /* ==================================================================== |
3 | * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved. | 3 | * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved. |
4 | * | 4 | * |
@@ -66,27 +66,27 @@ static struct { | |||
66 | int base64; | 66 | int base64; |
67 | int hex; | 67 | int hex; |
68 | char *outfile; | 68 | char *outfile; |
69 | } rand_config; | 69 | } cfg; |
70 | 70 | ||
71 | static const struct option rand_options[] = { | 71 | static const struct option rand_options[] = { |
72 | { | 72 | { |
73 | .name = "base64", | 73 | .name = "base64", |
74 | .desc = "Perform base64 encoding on output", | 74 | .desc = "Perform base64 encoding on output", |
75 | .type = OPTION_FLAG, | 75 | .type = OPTION_FLAG, |
76 | .opt.flag = &rand_config.base64, | 76 | .opt.flag = &cfg.base64, |
77 | }, | 77 | }, |
78 | { | 78 | { |
79 | .name = "hex", | 79 | .name = "hex", |
80 | .desc = "Hexadecimal output", | 80 | .desc = "Hexadecimal output", |
81 | .type = OPTION_FLAG, | 81 | .type = OPTION_FLAG, |
82 | .opt.flag = &rand_config.hex, | 82 | .opt.flag = &cfg.hex, |
83 | }, | 83 | }, |
84 | { | 84 | { |
85 | .name = "out", | 85 | .name = "out", |
86 | .argname = "file", | 86 | .argname = "file", |
87 | .desc = "Write to the given file instead of standard output", | 87 | .desc = "Write to the given file instead of standard output", |
88 | .type = OPTION_ARG, | 88 | .type = OPTION_ARG, |
89 | .opt.arg = &rand_config.outfile, | 89 | .opt.arg = &cfg.outfile, |
90 | }, | 90 | }, |
91 | {NULL}, | 91 | {NULL}, |
92 | }; | 92 | }; |
@@ -114,7 +114,7 @@ rand_main(int argc, char **argv) | |||
114 | exit(1); | 114 | exit(1); |
115 | } | 115 | } |
116 | 116 | ||
117 | memset(&rand_config, 0, sizeof(rand_config)); | 117 | memset(&cfg, 0, sizeof(cfg)); |
118 | 118 | ||
119 | if (options_parse(argc, argv, rand_options, &num_bytes, NULL) != 0) { | 119 | if (options_parse(argc, argv, rand_options, &num_bytes, NULL) != 0) { |
120 | rand_usage(); | 120 | rand_usage(); |
@@ -128,7 +128,7 @@ rand_main(int argc, char **argv) | |||
128 | } else | 128 | } else |
129 | badopt = 1; | 129 | badopt = 1; |
130 | 130 | ||
131 | if (rand_config.hex && rand_config.base64) | 131 | if (cfg.hex && cfg.base64) |
132 | badopt = 1; | 132 | badopt = 1; |
133 | 133 | ||
134 | if (badopt) { | 134 | if (badopt) { |
@@ -139,13 +139,13 @@ rand_main(int argc, char **argv) | |||
139 | out = BIO_new(BIO_s_file()); | 139 | out = BIO_new(BIO_s_file()); |
140 | if (out == NULL) | 140 | if (out == NULL) |
141 | goto err; | 141 | goto err; |
142 | if (rand_config.outfile != NULL) | 142 | if (cfg.outfile != NULL) |
143 | r = BIO_write_filename(out, rand_config.outfile); | 143 | r = BIO_write_filename(out, cfg.outfile); |
144 | else | 144 | else |
145 | r = BIO_set_fp(out, stdout, BIO_NOCLOSE | BIO_FP_TEXT); | 145 | r = BIO_set_fp(out, stdout, BIO_NOCLOSE | BIO_FP_TEXT); |
146 | if (r <= 0) | 146 | if (r <= 0) |
147 | goto err; | 147 | goto err; |
148 | if (rand_config.base64) { | 148 | if (cfg.base64) { |
149 | BIO *b64 = BIO_new(BIO_f_base64()); | 149 | BIO *b64 = BIO_new(BIO_f_base64()); |
150 | if (b64 == NULL) | 150 | if (b64 == NULL) |
151 | goto err; | 151 | goto err; |
@@ -160,7 +160,7 @@ rand_main(int argc, char **argv) | |||
160 | if (chunk > (int) sizeof(buf)) | 160 | if (chunk > (int) sizeof(buf)) |
161 | chunk = sizeof(buf); | 161 | chunk = sizeof(buf); |
162 | arc4random_buf(buf, chunk); | 162 | arc4random_buf(buf, chunk); |
163 | if (rand_config.hex) { | 163 | if (cfg.hex) { |
164 | for (i = 0; i < chunk; i++) | 164 | for (i = 0; i < chunk; i++) |
165 | BIO_printf(out, "%02x", buf[i]); | 165 | BIO_printf(out, "%02x", buf[i]); |
166 | } else | 166 | } else |
@@ -168,7 +168,7 @@ rand_main(int argc, char **argv) | |||
168 | num -= chunk; | 168 | num -= chunk; |
169 | } | 169 | } |
170 | 170 | ||
171 | if (rand_config.hex) | 171 | if (cfg.hex) |
172 | BIO_puts(out, "\n"); | 172 | BIO_puts(out, "\n"); |
173 | (void) BIO_flush(out); | 173 | (void) BIO_flush(out); |
174 | 174 | ||
diff --git a/src/usr.bin/openssl/req.c b/src/usr.bin/openssl/req.c index 797cbfa718..0994d0b288 100644 --- a/src/usr.bin/openssl/req.c +++ b/src/usr.bin/openssl/req.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: req.c,v 1.26 2023/03/05 13:12:53 tb Exp $ */ | 1 | /* $OpenBSD: req.c,v 1.27 2023/03/06 14:32:06 tb 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 | * |
@@ -168,26 +168,26 @@ static struct { | |||
168 | int verbose; | 168 | int verbose; |
169 | int verify; | 169 | int verify; |
170 | int x509; | 170 | int x509; |
171 | } req_config; | 171 | } cfg; |
172 | 172 | ||
173 | static int | 173 | static int |
174 | req_opt_addext(char *arg) | 174 | req_opt_addext(char *arg) |
175 | { | 175 | { |
176 | int i; | 176 | int i; |
177 | 177 | ||
178 | if (req_config.addexts == NULL) { | 178 | if (cfg.addexts == NULL) { |
179 | req_config.addexts = (LHASH_OF(OPENSSL_STRING) *)lh_new( | 179 | cfg.addexts = (LHASH_OF(OPENSSL_STRING) *)lh_new( |
180 | (LHASH_HASH_FN_TYPE)ext_name_hash, | 180 | (LHASH_HASH_FN_TYPE)ext_name_hash, |
181 | (LHASH_COMP_FN_TYPE)ext_name_cmp); | 181 | (LHASH_COMP_FN_TYPE)ext_name_cmp); |
182 | req_config.addext_bio = BIO_new(BIO_s_mem()); | 182 | cfg.addext_bio = BIO_new(BIO_s_mem()); |
183 | if (req_config.addexts == NULL || | 183 | if (cfg.addexts == NULL || |
184 | req_config.addext_bio == NULL) | 184 | cfg.addext_bio == NULL) |
185 | return (1); | 185 | return (1); |
186 | } | 186 | } |
187 | i = duplicated(req_config.addexts, arg); | 187 | i = duplicated(cfg.addexts, arg); |
188 | if (i == 1) | 188 | if (i == 1) |
189 | return (1); | 189 | return (1); |
190 | if (i < 0 || BIO_printf(req_config.addext_bio, "%s\n", arg) < 0) | 190 | if (i < 0 || BIO_printf(cfg.addext_bio, "%s\n", arg) < 0) |
191 | return (1); | 191 | return (1); |
192 | 192 | ||
193 | return (0); | 193 | return (0); |
@@ -198,11 +198,11 @@ req_opt_days(char *arg) | |||
198 | { | 198 | { |
199 | const char *errstr; | 199 | const char *errstr; |
200 | 200 | ||
201 | req_config.days = strtonum(arg, 1, INT_MAX, &errstr); | 201 | cfg.days = strtonum(arg, 1, INT_MAX, &errstr); |
202 | if (errstr != NULL) { | 202 | if (errstr != NULL) { |
203 | BIO_printf(bio_err, "bad -days %s, using 0: %s\n", | 203 | BIO_printf(bio_err, "bad -days %s, using 0: %s\n", |
204 | arg, errstr); | 204 | arg, errstr); |
205 | req_config.days = 30; | 205 | cfg.days = 30; |
206 | } | 206 | } |
207 | return (0); | 207 | return (0); |
208 | } | 208 | } |
@@ -215,7 +215,7 @@ req_opt_digest(int argc, char **argv, int *argsused) | |||
215 | if (*name++ != '-') | 215 | if (*name++ != '-') |
216 | return (1); | 216 | return (1); |
217 | 217 | ||
218 | if ((req_config.digest = EVP_get_digestbyname(name)) == NULL) | 218 | if ((cfg.digest = EVP_get_digestbyname(name)) == NULL) |
219 | return (1); | 219 | return (1); |
220 | 220 | ||
221 | *argsused = 1; | 221 | *argsused = 1; |
@@ -225,15 +225,15 @@ req_opt_digest(int argc, char **argv, int *argsused) | |||
225 | static int | 225 | static int |
226 | req_opt_newkey(char *arg) | 226 | req_opt_newkey(char *arg) |
227 | { | 227 | { |
228 | req_config.keyalg = arg; | 228 | cfg.keyalg = arg; |
229 | req_config.newreq = 1; | 229 | cfg.newreq = 1; |
230 | return (0); | 230 | return (0); |
231 | } | 231 | } |
232 | 232 | ||
233 | static int | 233 | static int |
234 | req_opt_nameopt(char *arg) | 234 | req_opt_nameopt(char *arg) |
235 | { | 235 | { |
236 | if (!set_name_ex(&req_config.nmflag, arg)) | 236 | if (!set_name_ex(&cfg.nmflag, arg)) |
237 | return (1); | 237 | return (1); |
238 | return (0); | 238 | return (0); |
239 | } | 239 | } |
@@ -241,11 +241,11 @@ req_opt_nameopt(char *arg) | |||
241 | static int | 241 | static int |
242 | req_opt_pkeyopt(char *arg) | 242 | req_opt_pkeyopt(char *arg) |
243 | { | 243 | { |
244 | if (req_config.pkeyopts == NULL) | 244 | if (cfg.pkeyopts == NULL) |
245 | req_config.pkeyopts = sk_OPENSSL_STRING_new_null(); | 245 | cfg.pkeyopts = sk_OPENSSL_STRING_new_null(); |
246 | if (req_config.pkeyopts == NULL) | 246 | if (cfg.pkeyopts == NULL) |
247 | return (1); | 247 | return (1); |
248 | if (!sk_OPENSSL_STRING_push(req_config.pkeyopts, arg)) | 248 | if (!sk_OPENSSL_STRING_push(cfg.pkeyopts, arg)) |
249 | return (1); | 249 | return (1); |
250 | return (0); | 250 | return (0); |
251 | } | 251 | } |
@@ -253,7 +253,7 @@ req_opt_pkeyopt(char *arg) | |||
253 | static int | 253 | static int |
254 | req_opt_reqopt(char *arg) | 254 | req_opt_reqopt(char *arg) |
255 | { | 255 | { |
256 | if (!set_cert_ex(&req_config.reqflag, arg)) | 256 | if (!set_cert_ex(&cfg.reqflag, arg)) |
257 | return (1); | 257 | return (1); |
258 | return (0); | 258 | return (0); |
259 | } | 259 | } |
@@ -261,8 +261,8 @@ req_opt_reqopt(char *arg) | |||
261 | static int | 261 | static int |
262 | req_opt_set_serial(char *arg) | 262 | req_opt_set_serial(char *arg) |
263 | { | 263 | { |
264 | req_config.serial = s2i_ASN1_INTEGER(NULL, arg); | 264 | cfg.serial = s2i_ASN1_INTEGER(NULL, arg); |
265 | if (req_config.serial == NULL) | 265 | if (cfg.serial == NULL) |
266 | return (1); | 266 | return (1); |
267 | return (0); | 267 | return (0); |
268 | } | 268 | } |
@@ -270,11 +270,11 @@ req_opt_set_serial(char *arg) | |||
270 | static int | 270 | static int |
271 | req_opt_sigopt(char *arg) | 271 | req_opt_sigopt(char *arg) |
272 | { | 272 | { |
273 | if (req_config.sigopts == NULL) | 273 | if (cfg.sigopts == NULL) |
274 | req_config.sigopts = sk_OPENSSL_STRING_new_null(); | 274 | cfg.sigopts = sk_OPENSSL_STRING_new_null(); |
275 | if (req_config.sigopts == NULL) | 275 | if (cfg.sigopts == NULL) |
276 | return (1); | 276 | return (1); |
277 | if (!sk_OPENSSL_STRING_push(req_config.sigopts, arg)) | 277 | if (!sk_OPENSSL_STRING_push(cfg.sigopts, arg)) |
278 | return (1); | 278 | return (1); |
279 | return (0); | 279 | return (0); |
280 | } | 280 | } |
@@ -282,7 +282,7 @@ req_opt_sigopt(char *arg) | |||
282 | static int | 282 | static int |
283 | req_opt_utf8(void) | 283 | req_opt_utf8(void) |
284 | { | 284 | { |
285 | req_config.chtype = MBSTRING_UTF8; | 285 | cfg.chtype = MBSTRING_UTF8; |
286 | return (0); | 286 | return (0); |
287 | } | 287 | } |
288 | 288 | ||
@@ -298,14 +298,14 @@ static const struct option req_options[] = { | |||
298 | .name = "batch", | 298 | .name = "batch", |
299 | .desc = "Operate in batch mode", | 299 | .desc = "Operate in batch mode", |
300 | .type = OPTION_FLAG, | 300 | .type = OPTION_FLAG, |
301 | .opt.flag = &req_config.batch, | 301 | .opt.flag = &cfg.batch, |
302 | }, | 302 | }, |
303 | { | 303 | { |
304 | .name = "config", | 304 | .name = "config", |
305 | .argname = "file", | 305 | .argname = "file", |
306 | .desc = "Configuration file to use as request template", | 306 | .desc = "Configuration file to use as request template", |
307 | .type = OPTION_ARG, | 307 | .type = OPTION_ARG, |
308 | .opt.arg = &req_config.template, | 308 | .opt.arg = &cfg.template, |
309 | }, | 309 | }, |
310 | { | 310 | { |
311 | .name = "days", | 311 | .name = "days", |
@@ -319,54 +319,54 @@ static const struct option req_options[] = { | |||
319 | .argname = "section", | 319 | .argname = "section", |
320 | .desc = "Config section to use for certificate extensions", | 320 | .desc = "Config section to use for certificate extensions", |
321 | .type = OPTION_ARG, | 321 | .type = OPTION_ARG, |
322 | .opt.arg = &req_config.extensions, | 322 | .opt.arg = &cfg.extensions, |
323 | }, | 323 | }, |
324 | { | 324 | { |
325 | .name = "in", | 325 | .name = "in", |
326 | .argname = "file", | 326 | .argname = "file", |
327 | .desc = "Input file (default stdin)", | 327 | .desc = "Input file (default stdin)", |
328 | .type = OPTION_ARG, | 328 | .type = OPTION_ARG, |
329 | .opt.arg = &req_config.infile, | 329 | .opt.arg = &cfg.infile, |
330 | }, | 330 | }, |
331 | { | 331 | { |
332 | .name = "inform", | 332 | .name = "inform", |
333 | .argname = "format", | 333 | .argname = "format", |
334 | .desc = "Input format (DER or PEM (default))", | 334 | .desc = "Input format (DER or PEM (default))", |
335 | .type = OPTION_ARG_FORMAT, | 335 | .type = OPTION_ARG_FORMAT, |
336 | .opt.value = &req_config.informat, | 336 | .opt.value = &cfg.informat, |
337 | }, | 337 | }, |
338 | { | 338 | { |
339 | .name = "key", | 339 | .name = "key", |
340 | .argname = "file", | 340 | .argname = "file", |
341 | .desc = "Private key file", | 341 | .desc = "Private key file", |
342 | .type = OPTION_ARG, | 342 | .type = OPTION_ARG, |
343 | .opt.arg = &req_config.keyfile, | 343 | .opt.arg = &cfg.keyfile, |
344 | }, | 344 | }, |
345 | { | 345 | { |
346 | .name = "keyform", | 346 | .name = "keyform", |
347 | .argname = "format", | 347 | .argname = "format", |
348 | .desc = "Private key format (DER or PEM (default))", | 348 | .desc = "Private key format (DER or PEM (default))", |
349 | .type = OPTION_ARG_FORMAT, | 349 | .type = OPTION_ARG_FORMAT, |
350 | .opt.value = &req_config.keyform, | 350 | .opt.value = &cfg.keyform, |
351 | }, | 351 | }, |
352 | { | 352 | { |
353 | .name = "keyout", | 353 | .name = "keyout", |
354 | .argname = "file", | 354 | .argname = "file", |
355 | .desc = "Private key output file", | 355 | .desc = "Private key output file", |
356 | .type = OPTION_ARG, | 356 | .type = OPTION_ARG, |
357 | .opt.arg = &req_config.keyout, | 357 | .opt.arg = &cfg.keyout, |
358 | }, | 358 | }, |
359 | { | 359 | { |
360 | .name = "modulus", | 360 | .name = "modulus", |
361 | .desc = "Print RSA modulus", | 361 | .desc = "Print RSA modulus", |
362 | .type = OPTION_FLAG, | 362 | .type = OPTION_FLAG, |
363 | .opt.flag = &req_config.modulus, | 363 | .opt.flag = &cfg.modulus, |
364 | }, | 364 | }, |
365 | { | 365 | { |
366 | .name = "multivalue-rdn", | 366 | .name = "multivalue-rdn", |
367 | .desc = "Enable support for multivalued RDNs", | 367 | .desc = "Enable support for multivalued RDNs", |
368 | .type = OPTION_FLAG, | 368 | .type = OPTION_FLAG, |
369 | .opt.flag = &req_config.multirdn, | 369 | .opt.flag = &cfg.multirdn, |
370 | }, | 370 | }, |
371 | { | 371 | { |
372 | .name = "nameopt", | 372 | .name = "nameopt", |
@@ -379,13 +379,13 @@ static const struct option req_options[] = { | |||
379 | .name = "new", | 379 | .name = "new", |
380 | .desc = "New request", | 380 | .desc = "New request", |
381 | .type = OPTION_FLAG, | 381 | .type = OPTION_FLAG, |
382 | .opt.flag = &req_config.newreq, | 382 | .opt.flag = &cfg.newreq, |
383 | }, | 383 | }, |
384 | { | 384 | { |
385 | .name = "newhdr", | 385 | .name = "newhdr", |
386 | .desc = "Include 'NEW' in header lines", | 386 | .desc = "Include 'NEW' in header lines", |
387 | .type = OPTION_FLAG, | 387 | .type = OPTION_FLAG, |
388 | .opt.flag = &req_config.newhdr, | 388 | .opt.flag = &cfg.newhdr, |
389 | }, | 389 | }, |
390 | { | 390 | { |
391 | .name = "newkey", | 391 | .name = "newkey", |
@@ -398,41 +398,41 @@ static const struct option req_options[] = { | |||
398 | .name = "nodes", | 398 | .name = "nodes", |
399 | .desc = "Do not encrypt output private key", | 399 | .desc = "Do not encrypt output private key", |
400 | .type = OPTION_FLAG, | 400 | .type = OPTION_FLAG, |
401 | .opt.flag = &req_config.nodes, | 401 | .opt.flag = &cfg.nodes, |
402 | }, | 402 | }, |
403 | { | 403 | { |
404 | .name = "noout", | 404 | .name = "noout", |
405 | .desc = "Do not output request", | 405 | .desc = "Do not output request", |
406 | .type = OPTION_FLAG, | 406 | .type = OPTION_FLAG, |
407 | .opt.flag = &req_config.noout, | 407 | .opt.flag = &cfg.noout, |
408 | }, | 408 | }, |
409 | { | 409 | { |
410 | .name = "out", | 410 | .name = "out", |
411 | .argname = "file", | 411 | .argname = "file", |
412 | .desc = "Output file (default stdout)", | 412 | .desc = "Output file (default stdout)", |
413 | .type = OPTION_ARG, | 413 | .type = OPTION_ARG, |
414 | .opt.arg = &req_config.outfile, | 414 | .opt.arg = &cfg.outfile, |
415 | }, | 415 | }, |
416 | { | 416 | { |
417 | .name = "outform", | 417 | .name = "outform", |
418 | .argname = "format", | 418 | .argname = "format", |
419 | .desc = "Output format (DER or PEM (default))", | 419 | .desc = "Output format (DER or PEM (default))", |
420 | .type = OPTION_ARG_FORMAT, | 420 | .type = OPTION_ARG_FORMAT, |
421 | .opt.value = &req_config.outformat, | 421 | .opt.value = &cfg.outformat, |
422 | }, | 422 | }, |
423 | { | 423 | { |
424 | .name = "passin", | 424 | .name = "passin", |
425 | .argname = "source", | 425 | .argname = "source", |
426 | .desc = "Private key input password source", | 426 | .desc = "Private key input password source", |
427 | .type = OPTION_ARG, | 427 | .type = OPTION_ARG, |
428 | .opt.arg = &req_config.passargin, | 428 | .opt.arg = &cfg.passargin, |
429 | }, | 429 | }, |
430 | { | 430 | { |
431 | .name = "passout", | 431 | .name = "passout", |
432 | .argname = "source", | 432 | .argname = "source", |
433 | .desc = "Private key output password source", | 433 | .desc = "Private key output password source", |
434 | .type = OPTION_ARG, | 434 | .type = OPTION_ARG, |
435 | .opt.arg = &req_config.passargout, | 435 | .opt.arg = &cfg.passargout, |
436 | }, | 436 | }, |
437 | { | 437 | { |
438 | .name = "pkeyopt", | 438 | .name = "pkeyopt", |
@@ -445,14 +445,14 @@ static const struct option req_options[] = { | |||
445 | .name = "pubkey", | 445 | .name = "pubkey", |
446 | .desc = "Output the public key", | 446 | .desc = "Output the public key", |
447 | .type = OPTION_FLAG, | 447 | .type = OPTION_FLAG, |
448 | .opt.flag = &req_config.pubkey, | 448 | .opt.flag = &cfg.pubkey, |
449 | }, | 449 | }, |
450 | { | 450 | { |
451 | .name = "reqexts", | 451 | .name = "reqexts", |
452 | .argname = "section", | 452 | .argname = "section", |
453 | .desc = "Config section to use for request extensions", | 453 | .desc = "Config section to use for request extensions", |
454 | .type = OPTION_ARG, | 454 | .type = OPTION_ARG, |
455 | .opt.arg = &req_config.req_exts, | 455 | .opt.arg = &cfg.req_exts, |
456 | }, | 456 | }, |
457 | { | 457 | { |
458 | .name = "reqopt", | 458 | .name = "reqopt", |
@@ -480,19 +480,19 @@ static const struct option req_options[] = { | |||
480 | .argname = "name", | 480 | .argname = "name", |
481 | .desc = "Set or modify the request subject", | 481 | .desc = "Set or modify the request subject", |
482 | .type = OPTION_ARG, | 482 | .type = OPTION_ARG, |
483 | .opt.arg = &req_config.subj, | 483 | .opt.arg = &cfg.subj, |
484 | }, | 484 | }, |
485 | { | 485 | { |
486 | .name = "subject", | 486 | .name = "subject", |
487 | .desc = "Output the subject of the request", | 487 | .desc = "Output the subject of the request", |
488 | .type = OPTION_FLAG, | 488 | .type = OPTION_FLAG, |
489 | .opt.flag = &req_config.subject, | 489 | .opt.flag = &cfg.subject, |
490 | }, | 490 | }, |
491 | { | 491 | { |
492 | .name = "text", | 492 | .name = "text", |
493 | .desc = "Print request in text form", | 493 | .desc = "Print request in text form", |
494 | .type = OPTION_FLAG, | 494 | .type = OPTION_FLAG, |
495 | .opt.flag = &req_config.text, | 495 | .opt.flag = &cfg.text, |
496 | }, | 496 | }, |
497 | { | 497 | { |
498 | .name = "utf8", | 498 | .name = "utf8", |
@@ -504,19 +504,19 @@ static const struct option req_options[] = { | |||
504 | .name = "verbose", | 504 | .name = "verbose", |
505 | .desc = "Verbose", | 505 | .desc = "Verbose", |
506 | .type = OPTION_FLAG, | 506 | .type = OPTION_FLAG, |
507 | .opt.flag = &req_config.verbose, | 507 | .opt.flag = &cfg.verbose, |
508 | }, | 508 | }, |
509 | { | 509 | { |
510 | .name = "verify", | 510 | .name = "verify", |
511 | .desc = "Verify signature on request", | 511 | .desc = "Verify signature on request", |
512 | .type = OPTION_FLAG, | 512 | .type = OPTION_FLAG, |
513 | .opt.flag = &req_config.verify, | 513 | .opt.flag = &cfg.verify, |
514 | }, | 514 | }, |
515 | { | 515 | { |
516 | .name = "x509", | 516 | .name = "x509", |
517 | .desc = "Output an X.509 structure instead of a certificate request", | 517 | .desc = "Output an X.509 structure instead of a certificate request", |
518 | .type = OPTION_FLAG, | 518 | .type = OPTION_FLAG, |
519 | .opt.flag = &req_config.x509, | 519 | .opt.flag = &cfg.x509, |
520 | }, | 520 | }, |
521 | { | 521 | { |
522 | .name = NULL, | 522 | .name = NULL, |
@@ -568,15 +568,15 @@ req_main(int argc, char **argv) | |||
568 | exit(1); | 568 | exit(1); |
569 | } | 569 | } |
570 | 570 | ||
571 | memset(&req_config, 0, sizeof(req_config)); | 571 | memset(&cfg, 0, sizeof(cfg)); |
572 | 572 | ||
573 | req_config.chtype = MBSTRING_ASC; | 573 | cfg.chtype = MBSTRING_ASC; |
574 | req_config.days = 30; | 574 | cfg.days = 30; |
575 | req_config.digest = EVP_sha256(); | 575 | cfg.digest = EVP_sha256(); |
576 | req_config.newkey = -1; | 576 | cfg.newkey = -1; |
577 | req_config.informat = FORMAT_PEM; | 577 | cfg.informat = FORMAT_PEM; |
578 | req_config.keyform = FORMAT_PEM; | 578 | cfg.keyform = FORMAT_PEM; |
579 | req_config.outformat = FORMAT_PEM; | 579 | cfg.outformat = FORMAT_PEM; |
580 | 580 | ||
581 | if (options_parse(argc, argv, req_options, NULL, NULL) != 0) { | 581 | if (options_parse(argc, argv, req_options, NULL, NULL) != 0) { |
582 | req_usage(); | 582 | req_usage(); |
@@ -586,19 +586,19 @@ req_main(int argc, char **argv) | |||
586 | req_conf = NULL; | 586 | req_conf = NULL; |
587 | cipher = EVP_aes_256_cbc(); | 587 | cipher = EVP_aes_256_cbc(); |
588 | 588 | ||
589 | if (!app_passwd(bio_err, req_config.passargin, req_config.passargout, &passin, &passout)) { | 589 | if (!app_passwd(bio_err, cfg.passargin, cfg.passargout, &passin, &passout)) { |
590 | BIO_printf(bio_err, "Error getting passwords\n"); | 590 | BIO_printf(bio_err, "Error getting passwords\n"); |
591 | goto end; | 591 | goto end; |
592 | } | 592 | } |
593 | if (req_config.template != NULL) { | 593 | if (cfg.template != NULL) { |
594 | long errline = -1; | 594 | long errline = -1; |
595 | 595 | ||
596 | if (req_config.verbose) | 596 | if (cfg.verbose) |
597 | BIO_printf(bio_err, "Using configuration from %s\n", req_config.template); | 597 | BIO_printf(bio_err, "Using configuration from %s\n", cfg.template); |
598 | if ((req_conf = NCONF_new(NULL)) == NULL) | 598 | if ((req_conf = NCONF_new(NULL)) == NULL) |
599 | goto end; | 599 | goto end; |
600 | if(!NCONF_load(req_conf, req_config.template, &errline)) { | 600 | if(!NCONF_load(req_conf, cfg.template, &errline)) { |
601 | BIO_printf(bio_err, "error on line %ld of %s\n", errline, req_config.template); | 601 | BIO_printf(bio_err, "error on line %ld of %s\n", errline, cfg.template); |
602 | goto end; | 602 | goto end; |
603 | } | 603 | } |
604 | } else { | 604 | } else { |
@@ -606,21 +606,21 @@ req_main(int argc, char **argv) | |||
606 | 606 | ||
607 | if (req_conf == NULL) { | 607 | if (req_conf == NULL) { |
608 | BIO_printf(bio_err, "Unable to load config info from %s\n", default_config_file); | 608 | BIO_printf(bio_err, "Unable to load config info from %s\n", default_config_file); |
609 | if (req_config.newreq) | 609 | if (cfg.newreq) |
610 | goto end; | 610 | goto end; |
611 | } else if (req_config.verbose) | 611 | } else if (cfg.verbose) |
612 | BIO_printf(bio_err, "Using configuration from %s\n", | 612 | BIO_printf(bio_err, "Using configuration from %s\n", |
613 | default_config_file); | 613 | default_config_file); |
614 | } | 614 | } |
615 | 615 | ||
616 | if (req_config.addext_bio != NULL) { | 616 | if (cfg.addext_bio != NULL) { |
617 | long errline = -1; | 617 | long errline = -1; |
618 | if (req_config.verbose) | 618 | if (cfg.verbose) |
619 | BIO_printf(bio_err, | 619 | BIO_printf(bio_err, |
620 | "Using additional configuration from command line\n"); | 620 | "Using additional configuration from command line\n"); |
621 | if ((addext_conf = NCONF_new(NULL)) == NULL) | 621 | if ((addext_conf = NCONF_new(NULL)) == NULL) |
622 | goto end; | 622 | goto end; |
623 | if (!NCONF_load_bio(addext_conf, req_config.addext_bio, &errline)) { | 623 | if (!NCONF_load_bio(addext_conf, cfg.addext_bio, &errline)) { |
624 | BIO_printf(bio_err, | 624 | BIO_printf(bio_err, |
625 | "req: Error on line %ld of config input\n", | 625 | "req: Error on line %ld of config input\n", |
626 | errline); | 626 | errline); |
@@ -658,22 +658,22 @@ req_main(int argc, char **argv) | |||
658 | ERR_clear_error(); | 658 | ERR_clear_error(); |
659 | if (p != NULL) { | 659 | if (p != NULL) { |
660 | if ((md_alg = EVP_get_digestbyname(p)) != NULL) | 660 | if ((md_alg = EVP_get_digestbyname(p)) != NULL) |
661 | req_config.digest = md_alg; | 661 | cfg.digest = md_alg; |
662 | } | 662 | } |
663 | } | 663 | } |
664 | if (!req_config.extensions) { | 664 | if (!cfg.extensions) { |
665 | req_config.extensions = NCONF_get_string(req_conf, SECTION, V3_EXTENSIONS); | 665 | cfg.extensions = NCONF_get_string(req_conf, SECTION, V3_EXTENSIONS); |
666 | if (!req_config.extensions) | 666 | if (!cfg.extensions) |
667 | ERR_clear_error(); | 667 | ERR_clear_error(); |
668 | } | 668 | } |
669 | if (req_config.extensions) { | 669 | if (cfg.extensions) { |
670 | /* Check syntax of file */ | 670 | /* Check syntax of file */ |
671 | X509V3_CTX ctx; | 671 | X509V3_CTX ctx; |
672 | X509V3_set_ctx_test(&ctx); | 672 | X509V3_set_ctx_test(&ctx); |
673 | X509V3_set_nconf(&ctx, req_conf); | 673 | X509V3_set_nconf(&ctx, req_conf); |
674 | if (!X509V3_EXT_add_nconf(req_conf, &ctx, req_config.extensions, NULL)) { | 674 | if (!X509V3_EXT_add_nconf(req_conf, &ctx, cfg.extensions, NULL)) { |
675 | BIO_printf(bio_err, | 675 | BIO_printf(bio_err, |
676 | "Error Loading extension section %s\n", req_config.extensions); | 676 | "Error Loading extension section %s\n", cfg.extensions); |
677 | goto end; | 677 | goto end; |
678 | } | 678 | } |
679 | } | 679 | } |
@@ -706,27 +706,27 @@ req_main(int argc, char **argv) | |||
706 | BIO_printf(bio_err, "Invalid global string mask setting %s\n", p); | 706 | BIO_printf(bio_err, "Invalid global string mask setting %s\n", p); |
707 | goto end; | 707 | goto end; |
708 | } | 708 | } |
709 | if (req_config.chtype != MBSTRING_UTF8) { | 709 | if (cfg.chtype != MBSTRING_UTF8) { |
710 | p = NCONF_get_string(req_conf, SECTION, UTF8_IN); | 710 | p = NCONF_get_string(req_conf, SECTION, UTF8_IN); |
711 | if (!p) | 711 | if (!p) |
712 | ERR_clear_error(); | 712 | ERR_clear_error(); |
713 | else if (!strcmp(p, "yes")) | 713 | else if (!strcmp(p, "yes")) |
714 | req_config.chtype = MBSTRING_UTF8; | 714 | cfg.chtype = MBSTRING_UTF8; |
715 | } | 715 | } |
716 | if (!req_config.req_exts) { | 716 | if (!cfg.req_exts) { |
717 | req_config.req_exts = NCONF_get_string(req_conf, SECTION, REQ_EXTENSIONS); | 717 | cfg.req_exts = NCONF_get_string(req_conf, SECTION, REQ_EXTENSIONS); |
718 | if (!req_config.req_exts) | 718 | if (!cfg.req_exts) |
719 | ERR_clear_error(); | 719 | ERR_clear_error(); |
720 | } | 720 | } |
721 | if (req_config.req_exts) { | 721 | if (cfg.req_exts) { |
722 | /* Check syntax of file */ | 722 | /* Check syntax of file */ |
723 | X509V3_CTX ctx; | 723 | X509V3_CTX ctx; |
724 | X509V3_set_ctx_test(&ctx); | 724 | X509V3_set_ctx_test(&ctx); |
725 | X509V3_set_nconf(&ctx, req_conf); | 725 | X509V3_set_nconf(&ctx, req_conf); |
726 | if (!X509V3_EXT_add_nconf(req_conf, &ctx, req_config.req_exts, NULL)) { | 726 | if (!X509V3_EXT_add_nconf(req_conf, &ctx, cfg.req_exts, NULL)) { |
727 | BIO_printf(bio_err, | 727 | BIO_printf(bio_err, |
728 | "Error Loading request extension section %s\n", | 728 | "Error Loading request extension section %s\n", |
729 | req_config.req_exts); | 729 | cfg.req_exts); |
730 | goto end; | 730 | goto end; |
731 | } | 731 | } |
732 | } | 732 | } |
@@ -735,8 +735,8 @@ req_main(int argc, char **argv) | |||
735 | if ((in == NULL) || (out == NULL)) | 735 | if ((in == NULL) || (out == NULL)) |
736 | goto end; | 736 | goto end; |
737 | 737 | ||
738 | if (req_config.keyfile != NULL) { | 738 | if (cfg.keyfile != NULL) { |
739 | pkey = load_key(bio_err, req_config.keyfile, req_config.keyform, 0, passin, | 739 | pkey = load_key(bio_err, cfg.keyfile, cfg.keyform, 0, passin, |
740 | "Private Key"); | 740 | "Private Key"); |
741 | if (!pkey) { | 741 | if (!pkey) { |
742 | /* | 742 | /* |
@@ -746,31 +746,31 @@ req_main(int argc, char **argv) | |||
746 | goto end; | 746 | goto end; |
747 | } | 747 | } |
748 | } | 748 | } |
749 | if (req_config.newreq && (pkey == NULL)) { | 749 | if (cfg.newreq && (pkey == NULL)) { |
750 | if (!NCONF_get_number(req_conf, SECTION, BITS, &req_config.newkey)) { | 750 | if (!NCONF_get_number(req_conf, SECTION, BITS, &cfg.newkey)) { |
751 | req_config.newkey = DEFAULT_KEY_LENGTH; | 751 | cfg.newkey = DEFAULT_KEY_LENGTH; |
752 | } | 752 | } |
753 | if (req_config.keyalg) { | 753 | if (cfg.keyalg) { |
754 | genctx = set_keygen_ctx(bio_err, req_config.keyalg, &pkey_type, &req_config.newkey, | 754 | genctx = set_keygen_ctx(bio_err, cfg.keyalg, &pkey_type, &cfg.newkey, |
755 | &keyalgstr); | 755 | &keyalgstr); |
756 | if (!genctx) | 756 | if (!genctx) |
757 | goto end; | 757 | goto end; |
758 | } | 758 | } |
759 | if (req_config.newkey < MIN_KEY_LENGTH && (pkey_type == EVP_PKEY_RSA || pkey_type == EVP_PKEY_DSA)) { | 759 | if (cfg.newkey < MIN_KEY_LENGTH && (pkey_type == EVP_PKEY_RSA || pkey_type == EVP_PKEY_DSA)) { |
760 | BIO_printf(bio_err, "private key length is too short,\n"); | 760 | BIO_printf(bio_err, "private key length is too short,\n"); |
761 | BIO_printf(bio_err, "it needs to be at least %d bits, not %ld\n", MIN_KEY_LENGTH, req_config.newkey); | 761 | BIO_printf(bio_err, "it needs to be at least %d bits, not %ld\n", MIN_KEY_LENGTH, cfg.newkey); |
762 | goto end; | 762 | goto end; |
763 | } | 763 | } |
764 | if (!genctx) { | 764 | if (!genctx) { |
765 | genctx = set_keygen_ctx(bio_err, NULL, &pkey_type, &req_config.newkey, | 765 | genctx = set_keygen_ctx(bio_err, NULL, &pkey_type, &cfg.newkey, |
766 | &keyalgstr); | 766 | &keyalgstr); |
767 | if (!genctx) | 767 | if (!genctx) |
768 | goto end; | 768 | goto end; |
769 | } | 769 | } |
770 | if (req_config.pkeyopts) { | 770 | if (cfg.pkeyopts) { |
771 | char *genopt; | 771 | char *genopt; |
772 | for (i = 0; i < sk_OPENSSL_STRING_num(req_config.pkeyopts); i++) { | 772 | for (i = 0; i < sk_OPENSSL_STRING_num(cfg.pkeyopts); i++) { |
773 | genopt = sk_OPENSSL_STRING_value(req_config.pkeyopts, i); | 773 | genopt = sk_OPENSSL_STRING_value(cfg.pkeyopts, i); |
774 | if (pkey_ctrl_string(genctx, genopt) <= 0) { | 774 | if (pkey_ctrl_string(genctx, genopt) <= 0) { |
775 | BIO_printf(bio_err, | 775 | BIO_printf(bio_err, |
776 | "parameter error \"%s\"\n", | 776 | "parameter error \"%s\"\n", |
@@ -781,7 +781,7 @@ req_main(int argc, char **argv) | |||
781 | } | 781 | } |
782 | } | 782 | } |
783 | BIO_printf(bio_err, "Generating a %ld bit %s private key\n", | 783 | BIO_printf(bio_err, "Generating a %ld bit %s private key\n", |
784 | req_config.newkey, keyalgstr); | 784 | cfg.newkey, keyalgstr); |
785 | 785 | ||
786 | EVP_PKEY_CTX_set_cb(genctx, genpkey_cb); | 786 | EVP_PKEY_CTX_set_cb(genctx, genpkey_cb); |
787 | EVP_PKEY_CTX_set_app_data(genctx, bio_err); | 787 | EVP_PKEY_CTX_set_app_data(genctx, bio_err); |
@@ -793,18 +793,18 @@ req_main(int argc, char **argv) | |||
793 | EVP_PKEY_CTX_free(genctx); | 793 | EVP_PKEY_CTX_free(genctx); |
794 | genctx = NULL; | 794 | genctx = NULL; |
795 | 795 | ||
796 | if (req_config.keyout == NULL) { | 796 | if (cfg.keyout == NULL) { |
797 | req_config.keyout = NCONF_get_string(req_conf, SECTION, KEYFILE); | 797 | cfg.keyout = NCONF_get_string(req_conf, SECTION, KEYFILE); |
798 | if (req_config.keyout == NULL) | 798 | if (cfg.keyout == NULL) |
799 | ERR_clear_error(); | 799 | ERR_clear_error(); |
800 | } | 800 | } |
801 | if (req_config.keyout == NULL) { | 801 | if (cfg.keyout == NULL) { |
802 | BIO_printf(bio_err, "writing new private key to stdout\n"); | 802 | BIO_printf(bio_err, "writing new private key to stdout\n"); |
803 | BIO_set_fp(out, stdout, BIO_NOCLOSE); | 803 | BIO_set_fp(out, stdout, BIO_NOCLOSE); |
804 | } else { | 804 | } else { |
805 | BIO_printf(bio_err, "writing new private key to '%s'\n", req_config.keyout); | 805 | BIO_printf(bio_err, "writing new private key to '%s'\n", cfg.keyout); |
806 | if (BIO_write_filename(out, req_config.keyout) <= 0) { | 806 | if (BIO_write_filename(out, cfg.keyout) <= 0) { |
807 | perror(req_config.keyout); | 807 | perror(cfg.keyout); |
808 | goto end; | 808 | goto end; |
809 | } | 809 | } |
810 | } | 810 | } |
@@ -818,7 +818,7 @@ req_main(int argc, char **argv) | |||
818 | } | 818 | } |
819 | if ((p != NULL) && (strcmp(p, "no") == 0)) | 819 | if ((p != NULL) && (strcmp(p, "no") == 0)) |
820 | cipher = NULL; | 820 | cipher = NULL; |
821 | if (req_config.nodes) | 821 | if (cfg.nodes) |
822 | cipher = NULL; | 822 | cipher = NULL; |
823 | 823 | ||
824 | i = 0; | 824 | i = 0; |
@@ -835,19 +835,19 @@ req_main(int argc, char **argv) | |||
835 | } | 835 | } |
836 | BIO_printf(bio_err, "-----\n"); | 836 | BIO_printf(bio_err, "-----\n"); |
837 | } | 837 | } |
838 | if (!req_config.newreq) { | 838 | if (!cfg.newreq) { |
839 | if (req_config.infile == NULL) | 839 | if (cfg.infile == NULL) |
840 | BIO_set_fp(in, stdin, BIO_NOCLOSE); | 840 | BIO_set_fp(in, stdin, BIO_NOCLOSE); |
841 | else { | 841 | else { |
842 | if (BIO_read_filename(in, req_config.infile) <= 0) { | 842 | if (BIO_read_filename(in, cfg.infile) <= 0) { |
843 | perror(req_config.infile); | 843 | perror(cfg.infile); |
844 | goto end; | 844 | goto end; |
845 | } | 845 | } |
846 | } | 846 | } |
847 | 847 | ||
848 | if (req_config.informat == FORMAT_ASN1) | 848 | if (cfg.informat == FORMAT_ASN1) |
849 | req = d2i_X509_REQ_bio(in, NULL); | 849 | req = d2i_X509_REQ_bio(in, NULL); |
850 | else if (req_config.informat == FORMAT_PEM) | 850 | else if (cfg.informat == FORMAT_PEM) |
851 | req = PEM_read_bio_X509_REQ(in, NULL, NULL, NULL); | 851 | req = PEM_read_bio_X509_REQ(in, NULL, NULL, NULL); |
852 | else { | 852 | else { |
853 | BIO_printf(bio_err, "bad input format specified for X509 request\n"); | 853 | BIO_printf(bio_err, "bad input format specified for X509 request\n"); |
@@ -858,7 +858,7 @@ req_main(int argc, char **argv) | |||
858 | goto end; | 858 | goto end; |
859 | } | 859 | } |
860 | } | 860 | } |
861 | if (req_config.newreq || req_config.x509) { | 861 | if (cfg.newreq || cfg.x509) { |
862 | if (pkey == NULL) { | 862 | if (pkey == NULL) { |
863 | BIO_printf(bio_err, "you need to specify a private key\n"); | 863 | BIO_printf(bio_err, "you need to specify a private key\n"); |
864 | goto end; | 864 | goto end; |
@@ -868,14 +868,14 @@ req_main(int argc, char **argv) | |||
868 | if (req == NULL) { | 868 | if (req == NULL) { |
869 | goto end; | 869 | goto end; |
870 | } | 870 | } |
871 | i = make_REQ(req, pkey, req_config.subj, req_config.multirdn, !req_config.x509, req_config.chtype); | 871 | i = make_REQ(req, pkey, cfg.subj, cfg.multirdn, !cfg.x509, cfg.chtype); |
872 | req_config.subj = NULL; /* done processing '-subj' option */ | 872 | cfg.subj = NULL; /* done processing '-subj' option */ |
873 | if (!i) { | 873 | if (!i) { |
874 | BIO_printf(bio_err, "problems making Certificate Request\n"); | 874 | BIO_printf(bio_err, "problems making Certificate Request\n"); |
875 | goto end; | 875 | goto end; |
876 | } | 876 | } |
877 | } | 877 | } |
878 | if (req_config.x509) { | 878 | if (cfg.x509) { |
879 | EVP_PKEY *tmppkey; | 879 | EVP_PKEY *tmppkey; |
880 | 880 | ||
881 | X509V3_CTX ext_ctx; | 881 | X509V3_CTX ext_ctx; |
@@ -883,11 +883,11 @@ req_main(int argc, char **argv) | |||
883 | goto end; | 883 | goto end; |
884 | 884 | ||
885 | /* Set version to V3 */ | 885 | /* Set version to V3 */ |
886 | if ((req_config.extensions != NULL || addext_conf != NULL) && | 886 | if ((cfg.extensions != NULL || addext_conf != NULL) && |
887 | !X509_set_version(x509ss, 2)) | 887 | !X509_set_version(x509ss, 2)) |
888 | goto end; | 888 | goto end; |
889 | if (req_config.serial) { | 889 | if (cfg.serial) { |
890 | if (!X509_set_serialNumber(x509ss, req_config.serial)) | 890 | if (!X509_set_serialNumber(x509ss, cfg.serial)) |
891 | goto end; | 891 | goto end; |
892 | } else { | 892 | } else { |
893 | if (!rand_serial(NULL, | 893 | if (!rand_serial(NULL, |
@@ -899,7 +899,7 @@ req_main(int argc, char **argv) | |||
899 | goto end; | 899 | goto end; |
900 | if (!X509_gmtime_adj(X509_get_notBefore(x509ss), 0)) | 900 | if (!X509_gmtime_adj(X509_get_notBefore(x509ss), 0)) |
901 | goto end; | 901 | goto end; |
902 | if (!X509_time_adj_ex(X509_get_notAfter(x509ss), req_config.days, 0, NULL)) | 902 | if (!X509_time_adj_ex(X509_get_notAfter(x509ss), cfg.days, 0, NULL)) |
903 | goto end; | 903 | goto end; |
904 | if (!X509_set_subject_name(x509ss, X509_REQ_get_subject_name(req))) | 904 | if (!X509_set_subject_name(x509ss, X509_REQ_get_subject_name(req))) |
905 | goto end; | 905 | goto end; |
@@ -914,11 +914,11 @@ req_main(int argc, char **argv) | |||
914 | X509V3_set_nconf(&ext_ctx, req_conf); | 914 | X509V3_set_nconf(&ext_ctx, req_conf); |
915 | 915 | ||
916 | /* Add extensions */ | 916 | /* Add extensions */ |
917 | if (req_config.extensions && !X509V3_EXT_add_nconf(req_conf, | 917 | if (cfg.extensions && !X509V3_EXT_add_nconf(req_conf, |
918 | &ext_ctx, req_config.extensions, x509ss)) { | 918 | &ext_ctx, cfg.extensions, x509ss)) { |
919 | BIO_printf(bio_err, | 919 | BIO_printf(bio_err, |
920 | "Error Loading extension section %s\n", | 920 | "Error Loading extension section %s\n", |
921 | req_config.extensions); | 921 | cfg.extensions); |
922 | goto end; | 922 | goto end; |
923 | } | 923 | } |
924 | if (addext_conf != NULL && | 924 | if (addext_conf != NULL && |
@@ -928,7 +928,7 @@ req_main(int argc, char **argv) | |||
928 | "Error Loading command line extensions\n"); | 928 | "Error Loading command line extensions\n"); |
929 | goto end; | 929 | goto end; |
930 | } | 930 | } |
931 | i = do_X509_sign(bio_err, x509ss, pkey, req_config.digest, req_config.sigopts); | 931 | i = do_X509_sign(bio_err, x509ss, pkey, cfg.digest, cfg.sigopts); |
932 | if (!i) { | 932 | if (!i) { |
933 | ERR_print_errors(bio_err); | 933 | ERR_print_errors(bio_err); |
934 | goto end; | 934 | goto end; |
@@ -942,11 +942,11 @@ req_main(int argc, char **argv) | |||
942 | X509V3_set_nconf(&ext_ctx, req_conf); | 942 | X509V3_set_nconf(&ext_ctx, req_conf); |
943 | 943 | ||
944 | /* Add extensions */ | 944 | /* Add extensions */ |
945 | if (req_config.req_exts && !X509V3_EXT_REQ_add_nconf(req_conf, | 945 | if (cfg.req_exts && !X509V3_EXT_REQ_add_nconf(req_conf, |
946 | &ext_ctx, req_config.req_exts, req)) { | 946 | &ext_ctx, cfg.req_exts, req)) { |
947 | BIO_printf(bio_err, | 947 | BIO_printf(bio_err, |
948 | "Error Loading extension section %s\n", | 948 | "Error Loading extension section %s\n", |
949 | req_config.req_exts); | 949 | cfg.req_exts); |
950 | goto end; | 950 | goto end; |
951 | } | 951 | } |
952 | if (addext_conf != NULL && | 952 | if (addext_conf != NULL && |
@@ -956,33 +956,33 @@ req_main(int argc, char **argv) | |||
956 | "Error Loading command line extensions\n"); | 956 | "Error Loading command line extensions\n"); |
957 | goto end; | 957 | goto end; |
958 | } | 958 | } |
959 | i = do_X509_REQ_sign(bio_err, req, pkey, req_config.digest, req_config.sigopts); | 959 | i = do_X509_REQ_sign(bio_err, req, pkey, cfg.digest, cfg.sigopts); |
960 | if (!i) { | 960 | if (!i) { |
961 | ERR_print_errors(bio_err); | 961 | ERR_print_errors(bio_err); |
962 | goto end; | 962 | goto end; |
963 | } | 963 | } |
964 | } | 964 | } |
965 | } | 965 | } |
966 | if (req_config.subj && req_config.x509) { | 966 | if (cfg.subj && cfg.x509) { |
967 | BIO_printf(bio_err, "Cannot modify certificate subject\n"); | 967 | BIO_printf(bio_err, "Cannot modify certificate subject\n"); |
968 | goto end; | 968 | goto end; |
969 | } | 969 | } |
970 | if (req_config.subj && !req_config.x509) { | 970 | if (cfg.subj && !cfg.x509) { |
971 | if (req_config.verbose) { | 971 | if (cfg.verbose) { |
972 | BIO_printf(bio_err, "Modifying Request's Subject\n"); | 972 | BIO_printf(bio_err, "Modifying Request's Subject\n"); |
973 | print_name(bio_err, "old subject=", X509_REQ_get_subject_name(req), req_config.nmflag); | 973 | print_name(bio_err, "old subject=", X509_REQ_get_subject_name(req), cfg.nmflag); |
974 | } | 974 | } |
975 | if (build_subject(req, req_config.subj, req_config.chtype, req_config.multirdn) == 0) { | 975 | if (build_subject(req, cfg.subj, cfg.chtype, cfg.multirdn) == 0) { |
976 | BIO_printf(bio_err, "ERROR: cannot modify subject\n"); | 976 | BIO_printf(bio_err, "ERROR: cannot modify subject\n"); |
977 | ex = 1; | 977 | ex = 1; |
978 | goto end; | 978 | goto end; |
979 | } | 979 | } |
980 | 980 | ||
981 | if (req_config.verbose) { | 981 | if (cfg.verbose) { |
982 | print_name(bio_err, "new subject=", X509_REQ_get_subject_name(req), req_config.nmflag); | 982 | print_name(bio_err, "new subject=", X509_REQ_get_subject_name(req), cfg.nmflag); |
983 | } | 983 | } |
984 | } | 984 | } |
985 | if (req_config.verify && !req_config.x509) { | 985 | if (cfg.verify && !cfg.x509) { |
986 | EVP_PKEY *pubkey = pkey; | 986 | EVP_PKEY *pubkey = pkey; |
987 | 987 | ||
988 | if (pubkey == NULL) | 988 | if (pubkey == NULL) |
@@ -998,24 +998,24 @@ req_main(int argc, char **argv) | |||
998 | } else /* if (i > 0) */ | 998 | } else /* if (i > 0) */ |
999 | BIO_printf(bio_err, "verify OK\n"); | 999 | BIO_printf(bio_err, "verify OK\n"); |
1000 | } | 1000 | } |
1001 | if (req_config.noout && !req_config.text && !req_config.modulus && !req_config.subject && !req_config.pubkey) { | 1001 | if (cfg.noout && !cfg.text && !cfg.modulus && !cfg.subject && !cfg.pubkey) { |
1002 | ex = 0; | 1002 | ex = 0; |
1003 | goto end; | 1003 | goto end; |
1004 | } | 1004 | } |
1005 | if (req_config.outfile == NULL) { | 1005 | if (cfg.outfile == NULL) { |
1006 | BIO_set_fp(out, stdout, BIO_NOCLOSE); | 1006 | BIO_set_fp(out, stdout, BIO_NOCLOSE); |
1007 | } else { | 1007 | } else { |
1008 | if ((req_config.keyout != NULL) && (strcmp(req_config.outfile, req_config.keyout) == 0)) | 1008 | if ((cfg.keyout != NULL) && (strcmp(cfg.outfile, cfg.keyout) == 0)) |
1009 | i = (int) BIO_append_filename(out, req_config.outfile); | 1009 | i = (int) BIO_append_filename(out, cfg.outfile); |
1010 | else | 1010 | else |
1011 | i = (int) BIO_write_filename(out, req_config.outfile); | 1011 | i = (int) BIO_write_filename(out, cfg.outfile); |
1012 | if (!i) { | 1012 | if (!i) { |
1013 | perror(req_config.outfile); | 1013 | perror(cfg.outfile); |
1014 | goto end; | 1014 | goto end; |
1015 | } | 1015 | } |
1016 | } | 1016 | } |
1017 | 1017 | ||
1018 | if (req_config.pubkey) { | 1018 | if (cfg.pubkey) { |
1019 | EVP_PKEY *tpubkey; | 1019 | EVP_PKEY *tpubkey; |
1020 | 1020 | ||
1021 | if ((tpubkey = X509_REQ_get0_pubkey(req)) == NULL) { | 1021 | if ((tpubkey = X509_REQ_get0_pubkey(req)) == NULL) { |
@@ -1025,22 +1025,22 @@ req_main(int argc, char **argv) | |||
1025 | } | 1025 | } |
1026 | PEM_write_bio_PUBKEY(out, tpubkey); | 1026 | PEM_write_bio_PUBKEY(out, tpubkey); |
1027 | } | 1027 | } |
1028 | if (req_config.text) { | 1028 | if (cfg.text) { |
1029 | if (req_config.x509) | 1029 | if (cfg.x509) |
1030 | X509_print_ex(out, x509ss, req_config.nmflag, req_config.reqflag); | 1030 | X509_print_ex(out, x509ss, cfg.nmflag, cfg.reqflag); |
1031 | else | 1031 | else |
1032 | X509_REQ_print_ex(out, req, req_config.nmflag, req_config.reqflag); | 1032 | X509_REQ_print_ex(out, req, cfg.nmflag, cfg.reqflag); |
1033 | } | 1033 | } |
1034 | if (req_config.subject) { | 1034 | if (cfg.subject) { |
1035 | if (req_config.x509) | 1035 | if (cfg.x509) |
1036 | print_name(out, "subject=", X509_get_subject_name(x509ss), req_config.nmflag); | 1036 | print_name(out, "subject=", X509_get_subject_name(x509ss), cfg.nmflag); |
1037 | else | 1037 | else |
1038 | print_name(out, "subject=", X509_REQ_get_subject_name(req), req_config.nmflag); | 1038 | print_name(out, "subject=", X509_REQ_get_subject_name(req), cfg.nmflag); |
1039 | } | 1039 | } |
1040 | if (req_config.modulus) { | 1040 | if (cfg.modulus) { |
1041 | EVP_PKEY *tpubkey; | 1041 | EVP_PKEY *tpubkey; |
1042 | 1042 | ||
1043 | if (req_config.x509) | 1043 | if (cfg.x509) |
1044 | tpubkey = X509_get0_pubkey(x509ss); | 1044 | tpubkey = X509_get0_pubkey(x509ss); |
1045 | else | 1045 | else |
1046 | tpubkey = X509_REQ_get0_pubkey(req); | 1046 | tpubkey = X509_REQ_get0_pubkey(req); |
@@ -1059,11 +1059,11 @@ req_main(int argc, char **argv) | |||
1059 | fprintf(stdout, "Wrong Algorithm type"); | 1059 | fprintf(stdout, "Wrong Algorithm type"); |
1060 | fprintf(stdout, "\n"); | 1060 | fprintf(stdout, "\n"); |
1061 | } | 1061 | } |
1062 | if (!req_config.noout && !req_config.x509) { | 1062 | if (!cfg.noout && !cfg.x509) { |
1063 | if (req_config.outformat == FORMAT_ASN1) | 1063 | if (cfg.outformat == FORMAT_ASN1) |
1064 | i = i2d_X509_REQ_bio(out, req); | 1064 | i = i2d_X509_REQ_bio(out, req); |
1065 | else if (req_config.outformat == FORMAT_PEM) { | 1065 | else if (cfg.outformat == FORMAT_PEM) { |
1066 | if (req_config.newhdr) | 1066 | if (cfg.newhdr) |
1067 | i = PEM_write_bio_X509_REQ_NEW(out, req); | 1067 | i = PEM_write_bio_X509_REQ_NEW(out, req); |
1068 | else | 1068 | else |
1069 | i = PEM_write_bio_X509_REQ(out, req); | 1069 | i = PEM_write_bio_X509_REQ(out, req); |
@@ -1076,10 +1076,10 @@ req_main(int argc, char **argv) | |||
1076 | goto end; | 1076 | goto end; |
1077 | } | 1077 | } |
1078 | } | 1078 | } |
1079 | if (!req_config.noout && req_config.x509 && (x509ss != NULL)) { | 1079 | if (!cfg.noout && cfg.x509 && (x509ss != NULL)) { |
1080 | if (req_config.outformat == FORMAT_ASN1) | 1080 | if (cfg.outformat == FORMAT_ASN1) |
1081 | i = i2d_X509_bio(out, x509ss); | 1081 | i = i2d_X509_bio(out, x509ss); |
1082 | else if (req_config.outformat == FORMAT_PEM) | 1082 | else if (cfg.outformat == FORMAT_PEM) |
1083 | i = PEM_write_bio_X509(out, x509ss); | 1083 | i = PEM_write_bio_X509(out, x509ss); |
1084 | else { | 1084 | else { |
1085 | BIO_printf(bio_err, "bad output format specified for outfile\n"); | 1085 | BIO_printf(bio_err, "bad output format specified for outfile\n"); |
@@ -1098,25 +1098,25 @@ req_main(int argc, char **argv) | |||
1098 | if ((req_conf != NULL) && (req_conf != config)) | 1098 | if ((req_conf != NULL) && (req_conf != config)) |
1099 | NCONF_free(req_conf); | 1099 | NCONF_free(req_conf); |
1100 | NCONF_free(addext_conf); | 1100 | NCONF_free(addext_conf); |
1101 | BIO_free(req_config.addext_bio); | 1101 | BIO_free(cfg.addext_bio); |
1102 | BIO_free(in); | 1102 | BIO_free(in); |
1103 | BIO_free_all(out); | 1103 | BIO_free_all(out); |
1104 | EVP_PKEY_free(pkey); | 1104 | EVP_PKEY_free(pkey); |
1105 | if (genctx) | 1105 | if (genctx) |
1106 | EVP_PKEY_CTX_free(genctx); | 1106 | EVP_PKEY_CTX_free(genctx); |
1107 | if (req_config.pkeyopts) | 1107 | if (cfg.pkeyopts) |
1108 | sk_OPENSSL_STRING_free(req_config.pkeyopts); | 1108 | sk_OPENSSL_STRING_free(cfg.pkeyopts); |
1109 | if (req_config.sigopts) | 1109 | if (cfg.sigopts) |
1110 | sk_OPENSSL_STRING_free(req_config.sigopts); | 1110 | sk_OPENSSL_STRING_free(cfg.sigopts); |
1111 | lh_OPENSSL_STRING_doall(req_config.addexts, (LHASH_DOALL_FN_TYPE)exts_cleanup); | 1111 | lh_OPENSSL_STRING_doall(cfg.addexts, (LHASH_DOALL_FN_TYPE)exts_cleanup); |
1112 | lh_OPENSSL_STRING_free(req_config.addexts); | 1112 | lh_OPENSSL_STRING_free(cfg.addexts); |
1113 | free(keyalgstr); | 1113 | free(keyalgstr); |
1114 | X509_REQ_free(req); | 1114 | X509_REQ_free(req); |
1115 | X509_free(x509ss); | 1115 | X509_free(x509ss); |
1116 | ASN1_INTEGER_free(req_config.serial); | 1116 | ASN1_INTEGER_free(cfg.serial); |
1117 | if (req_config.passargin && passin) | 1117 | if (cfg.passargin && passin) |
1118 | free(passin); | 1118 | free(passin); |
1119 | if (req_config.passargout && passout) | 1119 | if (cfg.passargout && passout) |
1120 | free(passout); | 1120 | free(passout); |
1121 | OBJ_cleanup(); | 1121 | OBJ_cleanup(); |
1122 | 1122 | ||
@@ -1222,7 +1222,7 @@ prompt_info(X509_REQ * req, | |||
1222 | X509_NAME *subj; | 1222 | X509_NAME *subj; |
1223 | subj = X509_REQ_get_subject_name(req); | 1223 | subj = X509_REQ_get_subject_name(req); |
1224 | 1224 | ||
1225 | if (!req_config.batch) { | 1225 | if (!cfg.batch) { |
1226 | BIO_printf(bio_err, "You are about to be asked to enter information that will be incorporated\n"); | 1226 | BIO_printf(bio_err, "You are about to be asked to enter information that will be incorporated\n"); |
1227 | BIO_printf(bio_err, "into your certificate request.\n"); | 1227 | BIO_printf(bio_err, "into your certificate request.\n"); |
1228 | BIO_printf(bio_err, "What you are about to enter is what is called a Distinguished Name or a DN.\n"); | 1228 | BIO_printf(bio_err, "What you are about to enter is what is called a Distinguished Name or a DN.\n"); |
@@ -1316,7 +1316,7 @@ prompt_info(X509_REQ * req, | |||
1316 | } | 1316 | } |
1317 | if (attribs) { | 1317 | if (attribs) { |
1318 | if ((attr_sk != NULL) && (sk_CONF_VALUE_num(attr_sk) > 0) && | 1318 | if ((attr_sk != NULL) && (sk_CONF_VALUE_num(attr_sk) > 0) && |
1319 | (!req_config.batch)) { | 1319 | (!cfg.batch)) { |
1320 | BIO_printf(bio_err, | 1320 | BIO_printf(bio_err, |
1321 | "\nPlease enter the following 'extra' attributes\n"); | 1321 | "\nPlease enter the following 'extra' attributes\n"); |
1322 | BIO_printf(bio_err, | 1322 | BIO_printf(bio_err, |
@@ -1452,7 +1452,7 @@ add_DN_object(X509_NAME * n, char *text, const char *def, char *value, | |||
1452 | int i, ret = 0; | 1452 | int i, ret = 0; |
1453 | char buf[1024]; | 1453 | char buf[1024]; |
1454 | start: | 1454 | start: |
1455 | if (!req_config.batch) | 1455 | if (!cfg.batch) |
1456 | BIO_printf(bio_err, "%s [%s]:", text, def); | 1456 | BIO_printf(bio_err, "%s [%s]:", text, def); |
1457 | (void) BIO_flush(bio_err); | 1457 | (void) BIO_flush(bio_err); |
1458 | if (value != NULL) { | 1458 | if (value != NULL) { |
@@ -1461,7 +1461,7 @@ add_DN_object(X509_NAME * n, char *text, const char *def, char *value, | |||
1461 | BIO_printf(bio_err, "%s\n", value); | 1461 | BIO_printf(bio_err, "%s\n", value); |
1462 | } else { | 1462 | } else { |
1463 | buf[0] = '\0'; | 1463 | buf[0] = '\0'; |
1464 | if (!req_config.batch) { | 1464 | if (!cfg.batch) { |
1465 | if (!fgets(buf, sizeof buf, stdin)) | 1465 | if (!fgets(buf, sizeof buf, stdin)) |
1466 | return 0; | 1466 | return 0; |
1467 | } else { | 1467 | } else { |
@@ -1505,7 +1505,7 @@ add_attribute_object(X509_REQ * req, char *text, const char *def, | |||
1505 | static char buf[1024]; | 1505 | static char buf[1024]; |
1506 | 1506 | ||
1507 | start: | 1507 | start: |
1508 | if (!req_config.batch) | 1508 | if (!cfg.batch) |
1509 | BIO_printf(bio_err, "%s [%s]:", text, def); | 1509 | BIO_printf(bio_err, "%s [%s]:", text, def); |
1510 | (void) BIO_flush(bio_err); | 1510 | (void) BIO_flush(bio_err); |
1511 | if (value != NULL) { | 1511 | if (value != NULL) { |
@@ -1514,7 +1514,7 @@ add_attribute_object(X509_REQ * req, char *text, const char *def, | |||
1514 | BIO_printf(bio_err, "%s\n", value); | 1514 | BIO_printf(bio_err, "%s\n", value); |
1515 | } else { | 1515 | } else { |
1516 | buf[0] = '\0'; | 1516 | buf[0] = '\0'; |
1517 | if (!req_config.batch) { | 1517 | if (!cfg.batch) { |
1518 | if (!fgets(buf, sizeof buf, stdin)) | 1518 | if (!fgets(buf, sizeof buf, stdin)) |
1519 | return 0; | 1519 | return 0; |
1520 | } else { | 1520 | } else { |
diff --git a/src/usr.bin/openssl/rsa.c b/src/usr.bin/openssl/rsa.c index bdd263ce7c..953daaacf7 100644 --- a/src/usr.bin/openssl/rsa.c +++ b/src/usr.bin/openssl/rsa.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: rsa.c,v 1.17 2022/11/11 17:07:39 joshua Exp $ */ | 1 | /* $OpenBSD: rsa.c,v 1.18 2023/03/06 14:32:06 tb 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 | * |
@@ -89,7 +89,7 @@ static struct { | |||
89 | int pubout; | 89 | int pubout; |
90 | int pvk_encr; | 90 | int pvk_encr; |
91 | int text; | 91 | int text; |
92 | } rsa_config; | 92 | } cfg; |
93 | 93 | ||
94 | static int | 94 | static int |
95 | rsa_opt_cipher(int argc, char **argv, int *argsused) | 95 | rsa_opt_cipher(int argc, char **argv, int *argsused) |
@@ -99,7 +99,7 @@ rsa_opt_cipher(int argc, char **argv, int *argsused) | |||
99 | if (*name++ != '-') | 99 | if (*name++ != '-') |
100 | return (1); | 100 | return (1); |
101 | 101 | ||
102 | if ((rsa_config.enc = EVP_get_cipherbyname(name)) == NULL) { | 102 | if ((cfg.enc = EVP_get_cipherbyname(name)) == NULL) { |
103 | fprintf(stderr, "Invalid cipher '%s'\n", name); | 103 | fprintf(stderr, "Invalid cipher '%s'\n", name); |
104 | return (1); | 104 | return (1); |
105 | } | 105 | } |
@@ -113,111 +113,111 @@ static const struct option rsa_options[] = { | |||
113 | .name = "check", | 113 | .name = "check", |
114 | .desc = "Check consistency of RSA private key", | 114 | .desc = "Check consistency of RSA private key", |
115 | .type = OPTION_FLAG, | 115 | .type = OPTION_FLAG, |
116 | .opt.flag = &rsa_config.check, | 116 | .opt.flag = &cfg.check, |
117 | }, | 117 | }, |
118 | { | 118 | { |
119 | .name = "in", | 119 | .name = "in", |
120 | .argname = "file", | 120 | .argname = "file", |
121 | .desc = "Input file (default stdin)", | 121 | .desc = "Input file (default stdin)", |
122 | .type = OPTION_ARG, | 122 | .type = OPTION_ARG, |
123 | .opt.arg = &rsa_config.infile, | 123 | .opt.arg = &cfg.infile, |
124 | }, | 124 | }, |
125 | { | 125 | { |
126 | .name = "inform", | 126 | .name = "inform", |
127 | .argname = "format", | 127 | .argname = "format", |
128 | .desc = "Input format (DER, NET or PEM (default))", | 128 | .desc = "Input format (DER, NET or PEM (default))", |
129 | .type = OPTION_ARG_FORMAT, | 129 | .type = OPTION_ARG_FORMAT, |
130 | .opt.value = &rsa_config.informat, | 130 | .opt.value = &cfg.informat, |
131 | }, | 131 | }, |
132 | { | 132 | { |
133 | .name = "modulus", | 133 | .name = "modulus", |
134 | .desc = "Print the RSA key modulus", | 134 | .desc = "Print the RSA key modulus", |
135 | .type = OPTION_FLAG, | 135 | .type = OPTION_FLAG, |
136 | .opt.flag = &rsa_config.modulus, | 136 | .opt.flag = &cfg.modulus, |
137 | }, | 137 | }, |
138 | { | 138 | { |
139 | .name = "noout", | 139 | .name = "noout", |
140 | .desc = "Do not print encoded version of the key", | 140 | .desc = "Do not print encoded version of the key", |
141 | .type = OPTION_FLAG, | 141 | .type = OPTION_FLAG, |
142 | .opt.flag = &rsa_config.noout, | 142 | .opt.flag = &cfg.noout, |
143 | }, | 143 | }, |
144 | { | 144 | { |
145 | .name = "out", | 145 | .name = "out", |
146 | .argname = "file", | 146 | .argname = "file", |
147 | .desc = "Output file (default stdout)", | 147 | .desc = "Output file (default stdout)", |
148 | .type = OPTION_ARG, | 148 | .type = OPTION_ARG, |
149 | .opt.arg = &rsa_config.outfile, | 149 | .opt.arg = &cfg.outfile, |
150 | }, | 150 | }, |
151 | { | 151 | { |
152 | .name = "outform", | 152 | .name = "outform", |
153 | .argname = "format", | 153 | .argname = "format", |
154 | .desc = "Output format (DER, NET or PEM (default PEM))", | 154 | .desc = "Output format (DER, NET or PEM (default PEM))", |
155 | .type = OPTION_ARG_FORMAT, | 155 | .type = OPTION_ARG_FORMAT, |
156 | .opt.value = &rsa_config.outformat, | 156 | .opt.value = &cfg.outformat, |
157 | }, | 157 | }, |
158 | { | 158 | { |
159 | .name = "passin", | 159 | .name = "passin", |
160 | .argname = "src", | 160 | .argname = "src", |
161 | .desc = "Input file passphrase source", | 161 | .desc = "Input file passphrase source", |
162 | .type = OPTION_ARG, | 162 | .type = OPTION_ARG, |
163 | .opt.arg = &rsa_config.passargin, | 163 | .opt.arg = &cfg.passargin, |
164 | }, | 164 | }, |
165 | { | 165 | { |
166 | .name = "passout", | 166 | .name = "passout", |
167 | .argname = "src", | 167 | .argname = "src", |
168 | .desc = "Output file passphrase source", | 168 | .desc = "Output file passphrase source", |
169 | .type = OPTION_ARG, | 169 | .type = OPTION_ARG, |
170 | .opt.arg = &rsa_config.passargout, | 170 | .opt.arg = &cfg.passargout, |
171 | }, | 171 | }, |
172 | { | 172 | { |
173 | .name = "pubin", | 173 | .name = "pubin", |
174 | .desc = "Expect a public key (default private key)", | 174 | .desc = "Expect a public key (default private key)", |
175 | .type = OPTION_VALUE, | 175 | .type = OPTION_VALUE, |
176 | .value = 1, | 176 | .value = 1, |
177 | .opt.value = &rsa_config.pubin, | 177 | .opt.value = &cfg.pubin, |
178 | }, | 178 | }, |
179 | { | 179 | { |
180 | .name = "pubout", | 180 | .name = "pubout", |
181 | .desc = "Output a public key (default private key)", | 181 | .desc = "Output a public key (default private key)", |
182 | .type = OPTION_VALUE, | 182 | .type = OPTION_VALUE, |
183 | .value = 1, | 183 | .value = 1, |
184 | .opt.value = &rsa_config.pubout, | 184 | .opt.value = &cfg.pubout, |
185 | }, | 185 | }, |
186 | { | 186 | { |
187 | .name = "pvk-none", | 187 | .name = "pvk-none", |
188 | .type = OPTION_VALUE, | 188 | .type = OPTION_VALUE, |
189 | .value = 0, | 189 | .value = 0, |
190 | .opt.value = &rsa_config.pvk_encr, | 190 | .opt.value = &cfg.pvk_encr, |
191 | }, | 191 | }, |
192 | { | 192 | { |
193 | .name = "pvk-strong", | 193 | .name = "pvk-strong", |
194 | .type = OPTION_VALUE, | 194 | .type = OPTION_VALUE, |
195 | .value = 2, | 195 | .value = 2, |
196 | .opt.value = &rsa_config.pvk_encr, | 196 | .opt.value = &cfg.pvk_encr, |
197 | }, | 197 | }, |
198 | { | 198 | { |
199 | .name = "pvk-weak", | 199 | .name = "pvk-weak", |
200 | .type = OPTION_VALUE, | 200 | .type = OPTION_VALUE, |
201 | .value = 1, | 201 | .value = 1, |
202 | .opt.value = &rsa_config.pvk_encr, | 202 | .opt.value = &cfg.pvk_encr, |
203 | }, | 203 | }, |
204 | { | 204 | { |
205 | .name = "RSAPublicKey_in", | 205 | .name = "RSAPublicKey_in", |
206 | .type = OPTION_VALUE, | 206 | .type = OPTION_VALUE, |
207 | .value = 2, | 207 | .value = 2, |
208 | .opt.value = &rsa_config.pubin, | 208 | .opt.value = &cfg.pubin, |
209 | }, | 209 | }, |
210 | { | 210 | { |
211 | .name = "RSAPublicKey_out", | 211 | .name = "RSAPublicKey_out", |
212 | .type = OPTION_VALUE, | 212 | .type = OPTION_VALUE, |
213 | .value = 2, | 213 | .value = 2, |
214 | .opt.value = &rsa_config.pubout, | 214 | .opt.value = &cfg.pubout, |
215 | }, | 215 | }, |
216 | { | 216 | { |
217 | .name = "text", | 217 | .name = "text", |
218 | .desc = "Print in plain text in addition to encoded", | 218 | .desc = "Print in plain text in addition to encoded", |
219 | .type = OPTION_FLAG, | 219 | .type = OPTION_FLAG, |
220 | .opt.flag = &rsa_config.text, | 220 | .opt.flag = &cfg.text, |
221 | }, | 221 | }, |
222 | { | 222 | { |
223 | .name = NULL, | 223 | .name = NULL, |
@@ -260,22 +260,22 @@ rsa_main(int argc, char **argv) | |||
260 | exit(1); | 260 | exit(1); |
261 | } | 261 | } |
262 | 262 | ||
263 | memset(&rsa_config, 0, sizeof(rsa_config)); | 263 | memset(&cfg, 0, sizeof(cfg)); |
264 | rsa_config.pvk_encr = 2; | 264 | cfg.pvk_encr = 2; |
265 | rsa_config.informat = FORMAT_PEM; | 265 | cfg.informat = FORMAT_PEM; |
266 | rsa_config.outformat = FORMAT_PEM; | 266 | cfg.outformat = FORMAT_PEM; |
267 | 267 | ||
268 | if (options_parse(argc, argv, rsa_options, NULL, NULL) != 0) { | 268 | if (options_parse(argc, argv, rsa_options, NULL, NULL) != 0) { |
269 | rsa_usage(); | 269 | rsa_usage(); |
270 | goto end; | 270 | goto end; |
271 | } | 271 | } |
272 | 272 | ||
273 | if (!app_passwd(bio_err, rsa_config.passargin, rsa_config.passargout, | 273 | if (!app_passwd(bio_err, cfg.passargin, cfg.passargout, |
274 | &passin, &passout)) { | 274 | &passin, &passout)) { |
275 | BIO_printf(bio_err, "Error getting passwords\n"); | 275 | BIO_printf(bio_err, "Error getting passwords\n"); |
276 | goto end; | 276 | goto end; |
277 | } | 277 | } |
278 | if (rsa_config.check && rsa_config.pubin) { | 278 | if (cfg.check && cfg.pubin) { |
279 | BIO_printf(bio_err, "Only private keys can be checked\n"); | 279 | BIO_printf(bio_err, "Only private keys can be checked\n"); |
280 | goto end; | 280 | goto end; |
281 | } | 281 | } |
@@ -284,21 +284,21 @@ rsa_main(int argc, char **argv) | |||
284 | { | 284 | { |
285 | EVP_PKEY *pkey; | 285 | EVP_PKEY *pkey; |
286 | 286 | ||
287 | if (rsa_config.pubin) { | 287 | if (cfg.pubin) { |
288 | int tmpformat = -1; | 288 | int tmpformat = -1; |
289 | if (rsa_config.pubin == 2) { | 289 | if (cfg.pubin == 2) { |
290 | if (rsa_config.informat == FORMAT_PEM) | 290 | if (cfg.informat == FORMAT_PEM) |
291 | tmpformat = FORMAT_PEMRSA; | 291 | tmpformat = FORMAT_PEMRSA; |
292 | else if (rsa_config.informat == FORMAT_ASN1) | 292 | else if (cfg.informat == FORMAT_ASN1) |
293 | tmpformat = FORMAT_ASN1RSA; | 293 | tmpformat = FORMAT_ASN1RSA; |
294 | } else | 294 | } else |
295 | tmpformat = rsa_config.informat; | 295 | tmpformat = cfg.informat; |
296 | 296 | ||
297 | pkey = load_pubkey(bio_err, rsa_config.infile, | 297 | pkey = load_pubkey(bio_err, cfg.infile, |
298 | tmpformat, 1, passin, "Public Key"); | 298 | tmpformat, 1, passin, "Public Key"); |
299 | } else | 299 | } else |
300 | pkey = load_key(bio_err, rsa_config.infile, | 300 | pkey = load_key(bio_err, cfg.infile, |
301 | rsa_config.informat, 1, passin, "Private Key"); | 301 | cfg.informat, 1, passin, "Private Key"); |
302 | 302 | ||
303 | if (pkey != NULL) | 303 | if (pkey != NULL) |
304 | rsa = EVP_PKEY_get1_RSA(pkey); | 304 | rsa = EVP_PKEY_get1_RSA(pkey); |
@@ -309,27 +309,27 @@ rsa_main(int argc, char **argv) | |||
309 | ERR_print_errors(bio_err); | 309 | ERR_print_errors(bio_err); |
310 | goto end; | 310 | goto end; |
311 | } | 311 | } |
312 | if (rsa_config.outfile == NULL) { | 312 | if (cfg.outfile == NULL) { |
313 | BIO_set_fp(out, stdout, BIO_NOCLOSE); | 313 | BIO_set_fp(out, stdout, BIO_NOCLOSE); |
314 | } else { | 314 | } else { |
315 | if (BIO_write_filename(out, rsa_config.outfile) <= 0) { | 315 | if (BIO_write_filename(out, cfg.outfile) <= 0) { |
316 | perror(rsa_config.outfile); | 316 | perror(cfg.outfile); |
317 | goto end; | 317 | goto end; |
318 | } | 318 | } |
319 | } | 319 | } |
320 | 320 | ||
321 | if (rsa_config.text) | 321 | if (cfg.text) |
322 | if (!RSA_print(out, rsa, 0)) { | 322 | if (!RSA_print(out, rsa, 0)) { |
323 | perror(rsa_config.outfile); | 323 | perror(cfg.outfile); |
324 | ERR_print_errors(bio_err); | 324 | ERR_print_errors(bio_err); |
325 | goto end; | 325 | goto end; |
326 | } | 326 | } |
327 | if (rsa_config.modulus) { | 327 | if (cfg.modulus) { |
328 | BIO_printf(out, "Modulus="); | 328 | BIO_printf(out, "Modulus="); |
329 | BN_print(out, RSA_get0_n(rsa)); | 329 | BN_print(out, RSA_get0_n(rsa)); |
330 | BIO_printf(out, "\n"); | 330 | BIO_printf(out, "\n"); |
331 | } | 331 | } |
332 | if (rsa_config.check) { | 332 | if (cfg.check) { |
333 | int r = RSA_check_key(rsa); | 333 | int r = RSA_check_key(rsa); |
334 | 334 | ||
335 | if (r == 1) | 335 | if (r == 1) |
@@ -353,38 +353,38 @@ rsa_main(int argc, char **argv) | |||
353 | goto end; | 353 | goto end; |
354 | } | 354 | } |
355 | } | 355 | } |
356 | if (rsa_config.noout) { | 356 | if (cfg.noout) { |
357 | ret = 0; | 357 | ret = 0; |
358 | goto end; | 358 | goto end; |
359 | } | 359 | } |
360 | BIO_printf(bio_err, "writing RSA key\n"); | 360 | BIO_printf(bio_err, "writing RSA key\n"); |
361 | if (rsa_config.outformat == FORMAT_ASN1) { | 361 | if (cfg.outformat == FORMAT_ASN1) { |
362 | if (rsa_config.pubout || rsa_config.pubin) { | 362 | if (cfg.pubout || cfg.pubin) { |
363 | if (rsa_config.pubout == 2) | 363 | if (cfg.pubout == 2) |
364 | i = i2d_RSAPublicKey_bio(out, rsa); | 364 | i = i2d_RSAPublicKey_bio(out, rsa); |
365 | else | 365 | else |
366 | i = i2d_RSA_PUBKEY_bio(out, rsa); | 366 | i = i2d_RSA_PUBKEY_bio(out, rsa); |
367 | } else | 367 | } else |
368 | i = i2d_RSAPrivateKey_bio(out, rsa); | 368 | i = i2d_RSAPrivateKey_bio(out, rsa); |
369 | } else if (rsa_config.outformat == FORMAT_PEM) { | 369 | } else if (cfg.outformat == FORMAT_PEM) { |
370 | if (rsa_config.pubout || rsa_config.pubin) { | 370 | if (cfg.pubout || cfg.pubin) { |
371 | if (rsa_config.pubout == 2) | 371 | if (cfg.pubout == 2) |
372 | i = PEM_write_bio_RSAPublicKey(out, rsa); | 372 | i = PEM_write_bio_RSAPublicKey(out, rsa); |
373 | else | 373 | else |
374 | i = PEM_write_bio_RSA_PUBKEY(out, rsa); | 374 | i = PEM_write_bio_RSA_PUBKEY(out, rsa); |
375 | } else | 375 | } else |
376 | i = PEM_write_bio_RSAPrivateKey(out, rsa, | 376 | i = PEM_write_bio_RSAPrivateKey(out, rsa, |
377 | rsa_config.enc, NULL, 0, NULL, passout); | 377 | cfg.enc, NULL, 0, NULL, passout); |
378 | #if !defined(OPENSSL_NO_DSA) && !defined(OPENSSL_NO_RC4) | 378 | #if !defined(OPENSSL_NO_DSA) && !defined(OPENSSL_NO_RC4) |
379 | } else if (rsa_config.outformat == FORMAT_MSBLOB || | 379 | } else if (cfg.outformat == FORMAT_MSBLOB || |
380 | rsa_config.outformat == FORMAT_PVK) { | 380 | cfg.outformat == FORMAT_PVK) { |
381 | EVP_PKEY *pk; | 381 | EVP_PKEY *pk; |
382 | pk = EVP_PKEY_new(); | 382 | pk = EVP_PKEY_new(); |
383 | EVP_PKEY_set1_RSA(pk, rsa); | 383 | EVP_PKEY_set1_RSA(pk, rsa); |
384 | if (rsa_config.outformat == FORMAT_PVK) | 384 | if (cfg.outformat == FORMAT_PVK) |
385 | i = i2b_PVK_bio(out, pk, rsa_config.pvk_encr, 0, | 385 | i = i2b_PVK_bio(out, pk, cfg.pvk_encr, 0, |
386 | passout); | 386 | passout); |
387 | else if (rsa_config.pubin || rsa_config.pubout) | 387 | else if (cfg.pubin || cfg.pubout) |
388 | i = i2b_PublicKey_bio(out, pk); | 388 | i = i2b_PublicKey_bio(out, pk); |
389 | else | 389 | else |
390 | i = i2b_PrivateKey_bio(out, pk); | 390 | i = i2b_PrivateKey_bio(out, pk); |
diff --git a/src/usr.bin/openssl/rsautl.c b/src/usr.bin/openssl/rsautl.c index 2916b2d9a0..9327223123 100644 --- a/src/usr.bin/openssl/rsautl.c +++ b/src/usr.bin/openssl/rsautl.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: rsautl.c,v 1.20 2023/03/05 13:12:53 tb Exp $ */ | 1 | /* $OpenBSD: rsautl.c,v 1.21 2023/03/06 14:32:06 tb 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 | */ |
@@ -87,131 +87,131 @@ static struct { | |||
87 | char *passargin; | 87 | char *passargin; |
88 | int rev; | 88 | int rev; |
89 | int rsa_mode; | 89 | int rsa_mode; |
90 | } rsautl_config; | 90 | } cfg; |
91 | 91 | ||
92 | static const struct option rsautl_options[] = { | 92 | static const struct option rsautl_options[] = { |
93 | { | 93 | { |
94 | .name = "asn1parse", | 94 | .name = "asn1parse", |
95 | .desc = "ASN.1 parse the output data", | 95 | .desc = "ASN.1 parse the output data", |
96 | .type = OPTION_FLAG, | 96 | .type = OPTION_FLAG, |
97 | .opt.flag = &rsautl_config.asn1parse, | 97 | .opt.flag = &cfg.asn1parse, |
98 | }, | 98 | }, |
99 | { | 99 | { |
100 | .name = "certin", | 100 | .name = "certin", |
101 | .desc = "Input is a certificate containing an RSA public key", | 101 | .desc = "Input is a certificate containing an RSA public key", |
102 | .type = OPTION_VALUE, | 102 | .type = OPTION_VALUE, |
103 | .value = KEY_CERT, | 103 | .value = KEY_CERT, |
104 | .opt.value = &rsautl_config.key_type, | 104 | .opt.value = &cfg.key_type, |
105 | }, | 105 | }, |
106 | { | 106 | { |
107 | .name = "decrypt", | 107 | .name = "decrypt", |
108 | .desc = "Decrypt the input data using RSA private key", | 108 | .desc = "Decrypt the input data using RSA private key", |
109 | .type = OPTION_VALUE, | 109 | .type = OPTION_VALUE, |
110 | .value = RSA_DECRYPT, | 110 | .value = RSA_DECRYPT, |
111 | .opt.value = &rsautl_config.rsa_mode, | 111 | .opt.value = &cfg.rsa_mode, |
112 | }, | 112 | }, |
113 | { | 113 | { |
114 | .name = "encrypt", | 114 | .name = "encrypt", |
115 | .desc = "Encrypt the input data using RSA public key", | 115 | .desc = "Encrypt the input data using RSA public key", |
116 | .type = OPTION_VALUE, | 116 | .type = OPTION_VALUE, |
117 | .value = RSA_ENCRYPT, | 117 | .value = RSA_ENCRYPT, |
118 | .opt.value = &rsautl_config.rsa_mode, | 118 | .opt.value = &cfg.rsa_mode, |
119 | }, | 119 | }, |
120 | { | 120 | { |
121 | .name = "hexdump", | 121 | .name = "hexdump", |
122 | .desc = "Hex dump the output data", | 122 | .desc = "Hex dump the output data", |
123 | .type = OPTION_FLAG, | 123 | .type = OPTION_FLAG, |
124 | .opt.flag = &rsautl_config.hexdump, | 124 | .opt.flag = &cfg.hexdump, |
125 | }, | 125 | }, |
126 | { | 126 | { |
127 | .name = "in", | 127 | .name = "in", |
128 | .argname = "file", | 128 | .argname = "file", |
129 | .desc = "Input file (default stdin)", | 129 | .desc = "Input file (default stdin)", |
130 | .type = OPTION_ARG, | 130 | .type = OPTION_ARG, |
131 | .opt.arg = &rsautl_config.infile, | 131 | .opt.arg = &cfg.infile, |
132 | }, | 132 | }, |
133 | { | 133 | { |
134 | .name = "inkey", | 134 | .name = "inkey", |
135 | .argname = "file", | 135 | .argname = "file", |
136 | .desc = "Input key file", | 136 | .desc = "Input key file", |
137 | .type = OPTION_ARG, | 137 | .type = OPTION_ARG, |
138 | .opt.arg = &rsautl_config.keyfile, | 138 | .opt.arg = &cfg.keyfile, |
139 | }, | 139 | }, |
140 | { | 140 | { |
141 | .name = "keyform", | 141 | .name = "keyform", |
142 | .argname = "fmt", | 142 | .argname = "fmt", |
143 | .desc = "Input key format (DER, TXT or PEM (default))", | 143 | .desc = "Input key format (DER, TXT or PEM (default))", |
144 | .type = OPTION_ARG_FORMAT, | 144 | .type = OPTION_ARG_FORMAT, |
145 | .opt.value = &rsautl_config.keyform, | 145 | .opt.value = &cfg.keyform, |
146 | }, | 146 | }, |
147 | { | 147 | { |
148 | .name = "oaep", | 148 | .name = "oaep", |
149 | .desc = "Use PKCS#1 OAEP padding", | 149 | .desc = "Use PKCS#1 OAEP padding", |
150 | .type = OPTION_VALUE, | 150 | .type = OPTION_VALUE, |
151 | .value = RSA_PKCS1_OAEP_PADDING, | 151 | .value = RSA_PKCS1_OAEP_PADDING, |
152 | .opt.value = &rsautl_config.pad, | 152 | .opt.value = &cfg.pad, |
153 | }, | 153 | }, |
154 | { | 154 | { |
155 | .name = "out", | 155 | .name = "out", |
156 | .argname = "file", | 156 | .argname = "file", |
157 | .desc = "Output file (default stdout)", | 157 | .desc = "Output file (default stdout)", |
158 | .type = OPTION_ARG, | 158 | .type = OPTION_ARG, |
159 | .opt.arg = &rsautl_config.outfile, | 159 | .opt.arg = &cfg.outfile, |
160 | }, | 160 | }, |
161 | { | 161 | { |
162 | .name = "passin", | 162 | .name = "passin", |
163 | .argname = "arg", | 163 | .argname = "arg", |
164 | .desc = "Key password source", | 164 | .desc = "Key password source", |
165 | .type = OPTION_ARG, | 165 | .type = OPTION_ARG, |
166 | .opt.arg = &rsautl_config.passargin, | 166 | .opt.arg = &cfg.passargin, |
167 | }, | 167 | }, |
168 | { | 168 | { |
169 | .name = "pkcs", | 169 | .name = "pkcs", |
170 | .desc = "Use PKCS#1 v1.5 padding (default)", | 170 | .desc = "Use PKCS#1 v1.5 padding (default)", |
171 | .type = OPTION_VALUE, | 171 | .type = OPTION_VALUE, |
172 | .value = RSA_PKCS1_PADDING, | 172 | .value = RSA_PKCS1_PADDING, |
173 | .opt.value = &rsautl_config.pad, | 173 | .opt.value = &cfg.pad, |
174 | }, | 174 | }, |
175 | { | 175 | { |
176 | .name = "pubin", | 176 | .name = "pubin", |
177 | .desc = "Input is an RSA public key", | 177 | .desc = "Input is an RSA public key", |
178 | .type = OPTION_VALUE, | 178 | .type = OPTION_VALUE, |
179 | .value = KEY_PUBKEY, | 179 | .value = KEY_PUBKEY, |
180 | .opt.value = &rsautl_config.key_type, | 180 | .opt.value = &cfg.key_type, |
181 | }, | 181 | }, |
182 | { | 182 | { |
183 | .name = "raw", | 183 | .name = "raw", |
184 | .desc = "Use no padding", | 184 | .desc = "Use no padding", |
185 | .type = OPTION_VALUE, | 185 | .type = OPTION_VALUE, |
186 | .value = RSA_NO_PADDING, | 186 | .value = RSA_NO_PADDING, |
187 | .opt.value = &rsautl_config.pad, | 187 | .opt.value = &cfg.pad, |
188 | }, | 188 | }, |
189 | { | 189 | { |
190 | .name = "rev", | 190 | .name = "rev", |
191 | .desc = "Reverse the input data", | 191 | .desc = "Reverse the input data", |
192 | .type = OPTION_FLAG, | 192 | .type = OPTION_FLAG, |
193 | .opt.flag = &rsautl_config.rev, | 193 | .opt.flag = &cfg.rev, |
194 | }, | 194 | }, |
195 | { | 195 | { |
196 | .name = "sign", | 196 | .name = "sign", |
197 | .desc = "Sign the input data using RSA private key", | 197 | .desc = "Sign the input data using RSA private key", |
198 | .type = OPTION_VALUE, | 198 | .type = OPTION_VALUE, |
199 | .value = RSA_SIGN, | 199 | .value = RSA_SIGN, |
200 | .opt.value = &rsautl_config.rsa_mode, | 200 | .opt.value = &cfg.rsa_mode, |
201 | }, | 201 | }, |
202 | { | 202 | { |
203 | .name = "verify", | 203 | .name = "verify", |
204 | .desc = "Verify the input data using RSA public key", | 204 | .desc = "Verify the input data using RSA public key", |
205 | .type = OPTION_VALUE, | 205 | .type = OPTION_VALUE, |
206 | .value = RSA_VERIFY, | 206 | .value = RSA_VERIFY, |
207 | .opt.value = &rsautl_config.rsa_mode, | 207 | .opt.value = &cfg.rsa_mode, |
208 | }, | 208 | }, |
209 | { | 209 | { |
210 | .name = "x931", | 210 | .name = "x931", |
211 | .desc = "Use ANSI X9.31 padding", | 211 | .desc = "Use ANSI X9.31 padding", |
212 | .type = OPTION_VALUE, | 212 | .type = OPTION_VALUE, |
213 | .value = RSA_X931_PADDING, | 213 | .value = RSA_X931_PADDING, |
214 | .opt.value = &rsautl_config.pad, | 214 | .opt.value = &cfg.pad, |
215 | }, | 215 | }, |
216 | 216 | ||
217 | {NULL}, | 217 | {NULL}, |
@@ -249,44 +249,44 @@ rsautl_main(int argc, char **argv) | |||
249 | exit(1); | 249 | exit(1); |
250 | } | 250 | } |
251 | 251 | ||
252 | memset(&rsautl_config, 0, sizeof(rsautl_config)); | 252 | memset(&cfg, 0, sizeof(cfg)); |
253 | rsautl_config.keyform = FORMAT_PEM; | 253 | cfg.keyform = FORMAT_PEM; |
254 | rsautl_config.key_type = KEY_PRIVKEY; | 254 | cfg.key_type = KEY_PRIVKEY; |
255 | rsautl_config.pad = RSA_PKCS1_PADDING; | 255 | cfg.pad = RSA_PKCS1_PADDING; |
256 | rsautl_config.rsa_mode = RSA_VERIFY; | 256 | cfg.rsa_mode = RSA_VERIFY; |
257 | 257 | ||
258 | if (options_parse(argc, argv, rsautl_options, NULL, NULL) != 0) { | 258 | if (options_parse(argc, argv, rsautl_options, NULL, NULL) != 0) { |
259 | rsautl_usage(); | 259 | rsautl_usage(); |
260 | return (1); | 260 | return (1); |
261 | } | 261 | } |
262 | 262 | ||
263 | if (rsautl_config.rsa_mode == RSA_SIGN || | 263 | if (cfg.rsa_mode == RSA_SIGN || |
264 | rsautl_config.rsa_mode == RSA_DECRYPT) | 264 | cfg.rsa_mode == RSA_DECRYPT) |
265 | need_priv = 1; | 265 | need_priv = 1; |
266 | 266 | ||
267 | if (need_priv && rsautl_config.key_type != KEY_PRIVKEY) { | 267 | if (need_priv && cfg.key_type != KEY_PRIVKEY) { |
268 | BIO_printf(bio_err, "A private key is needed for this operation\n"); | 268 | BIO_printf(bio_err, "A private key is needed for this operation\n"); |
269 | goto end; | 269 | goto end; |
270 | } | 270 | } |
271 | if (!app_passwd(bio_err, rsautl_config.passargin, NULL, &passin, NULL)) { | 271 | if (!app_passwd(bio_err, cfg.passargin, NULL, &passin, NULL)) { |
272 | BIO_printf(bio_err, "Error getting password\n"); | 272 | BIO_printf(bio_err, "Error getting password\n"); |
273 | goto end; | 273 | goto end; |
274 | } | 274 | } |
275 | 275 | ||
276 | switch (rsautl_config.key_type) { | 276 | switch (cfg.key_type) { |
277 | case KEY_PRIVKEY: | 277 | case KEY_PRIVKEY: |
278 | pkey = load_key(bio_err, rsautl_config.keyfile, | 278 | pkey = load_key(bio_err, cfg.keyfile, |
279 | rsautl_config.keyform, 0, passin, "Private Key"); | 279 | cfg.keyform, 0, passin, "Private Key"); |
280 | break; | 280 | break; |
281 | 281 | ||
282 | case KEY_PUBKEY: | 282 | case KEY_PUBKEY: |
283 | pkey = load_pubkey(bio_err, rsautl_config.keyfile, | 283 | pkey = load_pubkey(bio_err, cfg.keyfile, |
284 | rsautl_config.keyform, 0, NULL, "Public Key"); | 284 | cfg.keyform, 0, NULL, "Public Key"); |
285 | break; | 285 | break; |
286 | 286 | ||
287 | case KEY_CERT: | 287 | case KEY_CERT: |
288 | x = load_cert(bio_err, rsautl_config.keyfile, | 288 | x = load_cert(bio_err, cfg.keyfile, |
289 | rsautl_config.keyform, NULL, "Certificate"); | 289 | cfg.keyform, NULL, "Certificate"); |
290 | if (x) { | 290 | if (x) { |
291 | pkey = X509_get_pubkey(x); | 291 | pkey = X509_get_pubkey(x); |
292 | X509_free(x); | 292 | X509_free(x); |
@@ -305,8 +305,8 @@ rsautl_main(int argc, char **argv) | |||
305 | ERR_print_errors(bio_err); | 305 | ERR_print_errors(bio_err); |
306 | goto end; | 306 | goto end; |
307 | } | 307 | } |
308 | if (rsautl_config.infile) { | 308 | if (cfg.infile) { |
309 | if (!(in = BIO_new_file(rsautl_config.infile, "rb"))) { | 309 | if (!(in = BIO_new_file(cfg.infile, "rb"))) { |
310 | BIO_printf(bio_err, "Error Reading Input File\n"); | 310 | BIO_printf(bio_err, "Error Reading Input File\n"); |
311 | ERR_print_errors(bio_err); | 311 | ERR_print_errors(bio_err); |
312 | goto end; | 312 | goto end; |
@@ -314,8 +314,8 @@ rsautl_main(int argc, char **argv) | |||
314 | } else | 314 | } else |
315 | in = BIO_new_fp(stdin, BIO_NOCLOSE); | 315 | in = BIO_new_fp(stdin, BIO_NOCLOSE); |
316 | 316 | ||
317 | if (rsautl_config.outfile) { | 317 | if (cfg.outfile) { |
318 | if (!(out = BIO_new_file(rsautl_config.outfile, "wb"))) { | 318 | if (!(out = BIO_new_file(cfg.outfile, "wb"))) { |
319 | BIO_printf(bio_err, "Error Reading Output File\n"); | 319 | BIO_printf(bio_err, "Error Reading Output File\n"); |
320 | ERR_print_errors(bio_err); | 320 | ERR_print_errors(bio_err); |
321 | goto end; | 321 | goto end; |
@@ -343,7 +343,7 @@ rsautl_main(int argc, char **argv) | |||
343 | BIO_printf(bio_err, "Error reading input Data\n"); | 343 | BIO_printf(bio_err, "Error reading input Data\n"); |
344 | exit(1); | 344 | exit(1); |
345 | } | 345 | } |
346 | if (rsautl_config.rev) { | 346 | if (cfg.rev) { |
347 | int i; | 347 | int i; |
348 | unsigned char ctmp; | 348 | unsigned char ctmp; |
349 | for (i = 0; i < rsa_inlen / 2; i++) { | 349 | for (i = 0; i < rsa_inlen / 2; i++) { |
@@ -353,25 +353,25 @@ rsautl_main(int argc, char **argv) | |||
353 | } | 353 | } |
354 | } | 354 | } |
355 | 355 | ||
356 | switch (rsautl_config.rsa_mode) { | 356 | switch (cfg.rsa_mode) { |
357 | case RSA_VERIFY: | 357 | case RSA_VERIFY: |
358 | rsa_outlen = RSA_public_decrypt(rsa_inlen, rsa_in, rsa_out, | 358 | rsa_outlen = RSA_public_decrypt(rsa_inlen, rsa_in, rsa_out, |
359 | rsa, rsautl_config.pad); | 359 | rsa, cfg.pad); |
360 | break; | 360 | break; |
361 | 361 | ||
362 | case RSA_SIGN: | 362 | case RSA_SIGN: |
363 | rsa_outlen = RSA_private_encrypt(rsa_inlen, rsa_in, rsa_out, | 363 | rsa_outlen = RSA_private_encrypt(rsa_inlen, rsa_in, rsa_out, |
364 | rsa, rsautl_config.pad); | 364 | rsa, cfg.pad); |
365 | break; | 365 | break; |
366 | 366 | ||
367 | case RSA_ENCRYPT: | 367 | case RSA_ENCRYPT: |
368 | rsa_outlen = RSA_public_encrypt(rsa_inlen, rsa_in, rsa_out, | 368 | rsa_outlen = RSA_public_encrypt(rsa_inlen, rsa_in, rsa_out, |
369 | rsa, rsautl_config.pad); | 369 | rsa, cfg.pad); |
370 | break; | 370 | break; |
371 | 371 | ||
372 | case RSA_DECRYPT: | 372 | case RSA_DECRYPT: |
373 | rsa_outlen = RSA_private_decrypt(rsa_inlen, rsa_in, rsa_out, | 373 | rsa_outlen = RSA_private_decrypt(rsa_inlen, rsa_in, rsa_out, |
374 | rsa, rsautl_config.pad); | 374 | rsa, cfg.pad); |
375 | break; | 375 | break; |
376 | } | 376 | } |
377 | 377 | ||
@@ -381,11 +381,11 @@ rsautl_main(int argc, char **argv) | |||
381 | goto end; | 381 | goto end; |
382 | } | 382 | } |
383 | ret = 0; | 383 | ret = 0; |
384 | if (rsautl_config.asn1parse) { | 384 | if (cfg.asn1parse) { |
385 | if (!ASN1_parse_dump(out, rsa_out, rsa_outlen, 1, -1)) { | 385 | if (!ASN1_parse_dump(out, rsa_out, rsa_outlen, 1, -1)) { |
386 | ERR_print_errors(bio_err); | 386 | ERR_print_errors(bio_err); |
387 | } | 387 | } |
388 | } else if (rsautl_config.hexdump) | 388 | } else if (cfg.hexdump) |
389 | BIO_dump(out, (char *) rsa_out, rsa_outlen); | 389 | BIO_dump(out, (char *) rsa_out, rsa_outlen); |
390 | else | 390 | else |
391 | BIO_write(out, rsa_out, rsa_outlen); | 391 | BIO_write(out, rsa_out, rsa_outlen); |
diff --git a/src/usr.bin/openssl/s_client.c b/src/usr.bin/openssl/s_client.c index 41f6502325..82a8128243 100644 --- a/src/usr.bin/openssl/s_client.c +++ b/src/usr.bin/openssl/s_client.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: s_client.c,v 1.59 2022/11/11 17:07:39 joshua Exp $ */ | 1 | /* $OpenBSD: s_client.c,v 1.60 2023/03/06 14:32:06 tb 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 | * |
@@ -246,16 +246,16 @@ static struct { | |||
246 | int verify; | 246 | int verify; |
247 | X509_VERIFY_PARAM *vpm; | 247 | X509_VERIFY_PARAM *vpm; |
248 | char *xmpphost; | 248 | char *xmpphost; |
249 | } s_client_config; | 249 | } cfg; |
250 | 250 | ||
251 | static int | 251 | static int |
252 | s_client_opt_keymatexportlen(char *arg) | 252 | s_client_opt_keymatexportlen(char *arg) |
253 | { | 253 | { |
254 | s_client_config.keymatexportlen = strtonum(arg, 1, INT_MAX, | 254 | cfg.keymatexportlen = strtonum(arg, 1, INT_MAX, |
255 | &s_client_config.errstr); | 255 | &cfg.errstr); |
256 | if (s_client_config.errstr != NULL) { | 256 | if (cfg.errstr != NULL) { |
257 | BIO_printf(bio_err, "invalid argument %s: %s\n", | 257 | BIO_printf(bio_err, "invalid argument %s: %s\n", |
258 | arg, s_client_config.errstr); | 258 | arg, cfg.errstr); |
259 | return (1); | 259 | return (1); |
260 | } | 260 | } |
261 | return (0); | 261 | return (0); |
@@ -265,11 +265,11 @@ s_client_opt_keymatexportlen(char *arg) | |||
265 | static int | 265 | static int |
266 | s_client_opt_mtu(char *arg) | 266 | s_client_opt_mtu(char *arg) |
267 | { | 267 | { |
268 | s_client_config.socket_mtu = strtonum(arg, 0, LONG_MAX, | 268 | cfg.socket_mtu = strtonum(arg, 0, LONG_MAX, |
269 | &s_client_config.errstr); | 269 | &cfg.errstr); |
270 | if (s_client_config.errstr != NULL) { | 270 | if (cfg.errstr != NULL) { |
271 | BIO_printf(bio_err, "invalid argument %s: %s\n", | 271 | BIO_printf(bio_err, "invalid argument %s: %s\n", |
272 | arg, s_client_config.errstr); | 272 | arg, cfg.errstr); |
273 | return (1); | 273 | return (1); |
274 | } | 274 | } |
275 | return (0); | 275 | return (0); |
@@ -282,7 +282,7 @@ s_client_opt_port(char *arg) | |||
282 | if (*arg == '\0') | 282 | if (*arg == '\0') |
283 | return (1); | 283 | return (1); |
284 | 284 | ||
285 | s_client_config.port = arg; | 285 | cfg.port = arg; |
286 | return (0); | 286 | return (0); |
287 | } | 287 | } |
288 | 288 | ||
@@ -290,8 +290,8 @@ s_client_opt_port(char *arg) | |||
290 | static int | 290 | static int |
291 | s_client_opt_protocol_version_dtls(void) | 291 | s_client_opt_protocol_version_dtls(void) |
292 | { | 292 | { |
293 | s_client_config.meth = DTLS_client_method(); | 293 | cfg.meth = DTLS_client_method(); |
294 | s_client_config.socket_type = SOCK_DGRAM; | 294 | cfg.socket_type = SOCK_DGRAM; |
295 | return (0); | 295 | return (0); |
296 | } | 296 | } |
297 | #endif | 297 | #endif |
@@ -300,10 +300,10 @@ s_client_opt_protocol_version_dtls(void) | |||
300 | static int | 300 | static int |
301 | s_client_opt_protocol_version_dtls1(void) | 301 | s_client_opt_protocol_version_dtls1(void) |
302 | { | 302 | { |
303 | s_client_config.meth = DTLS_client_method(); | 303 | cfg.meth = DTLS_client_method(); |
304 | s_client_config.min_version = DTLS1_VERSION; | 304 | cfg.min_version = DTLS1_VERSION; |
305 | s_client_config.max_version = DTLS1_VERSION; | 305 | cfg.max_version = DTLS1_VERSION; |
306 | s_client_config.socket_type = SOCK_DGRAM; | 306 | cfg.socket_type = SOCK_DGRAM; |
307 | return (0); | 307 | return (0); |
308 | } | 308 | } |
309 | #endif | 309 | #endif |
@@ -312,10 +312,10 @@ s_client_opt_protocol_version_dtls1(void) | |||
312 | static int | 312 | static int |
313 | s_client_opt_protocol_version_dtls1_2(void) | 313 | s_client_opt_protocol_version_dtls1_2(void) |
314 | { | 314 | { |
315 | s_client_config.meth = DTLS_client_method(); | 315 | cfg.meth = DTLS_client_method(); |
316 | s_client_config.min_version = DTLS1_2_VERSION; | 316 | cfg.min_version = DTLS1_2_VERSION; |
317 | s_client_config.max_version = DTLS1_2_VERSION; | 317 | cfg.max_version = DTLS1_2_VERSION; |
318 | s_client_config.socket_type = SOCK_DGRAM; | 318 | cfg.socket_type = SOCK_DGRAM; |
319 | return (0); | 319 | return (0); |
320 | } | 320 | } |
321 | #endif | 321 | #endif |
@@ -323,40 +323,40 @@ s_client_opt_protocol_version_dtls1_2(void) | |||
323 | static int | 323 | static int |
324 | s_client_opt_protocol_version_tls1(void) | 324 | s_client_opt_protocol_version_tls1(void) |
325 | { | 325 | { |
326 | s_client_config.min_version = TLS1_VERSION; | 326 | cfg.min_version = TLS1_VERSION; |
327 | s_client_config.max_version = TLS1_VERSION; | 327 | cfg.max_version = TLS1_VERSION; |
328 | return (0); | 328 | return (0); |
329 | } | 329 | } |
330 | 330 | ||
331 | static int | 331 | static int |
332 | s_client_opt_protocol_version_tls1_1(void) | 332 | s_client_opt_protocol_version_tls1_1(void) |
333 | { | 333 | { |
334 | s_client_config.min_version = TLS1_1_VERSION; | 334 | cfg.min_version = TLS1_1_VERSION; |
335 | s_client_config.max_version = TLS1_1_VERSION; | 335 | cfg.max_version = TLS1_1_VERSION; |
336 | return (0); | 336 | return (0); |
337 | } | 337 | } |
338 | 338 | ||
339 | static int | 339 | static int |
340 | s_client_opt_protocol_version_tls1_2(void) | 340 | s_client_opt_protocol_version_tls1_2(void) |
341 | { | 341 | { |
342 | s_client_config.min_version = TLS1_2_VERSION; | 342 | cfg.min_version = TLS1_2_VERSION; |
343 | s_client_config.max_version = TLS1_2_VERSION; | 343 | cfg.max_version = TLS1_2_VERSION; |
344 | return (0); | 344 | return (0); |
345 | } | 345 | } |
346 | 346 | ||
347 | static int | 347 | static int |
348 | s_client_opt_protocol_version_tls1_3(void) | 348 | s_client_opt_protocol_version_tls1_3(void) |
349 | { | 349 | { |
350 | s_client_config.min_version = TLS1_3_VERSION; | 350 | cfg.min_version = TLS1_3_VERSION; |
351 | s_client_config.max_version = TLS1_3_VERSION; | 351 | cfg.max_version = TLS1_3_VERSION; |
352 | return (0); | 352 | return (0); |
353 | } | 353 | } |
354 | 354 | ||
355 | static int | 355 | static int |
356 | s_client_opt_quiet(void) | 356 | s_client_opt_quiet(void) |
357 | { | 357 | { |
358 | s_client_config.quiet = 1; | 358 | cfg.quiet = 1; |
359 | s_client_config.ign_eof = 1; | 359 | cfg.ign_eof = 1; |
360 | return (0); | 360 | return (0); |
361 | } | 361 | } |
362 | 362 | ||
@@ -364,17 +364,17 @@ static int | |||
364 | s_client_opt_starttls(char *arg) | 364 | s_client_opt_starttls(char *arg) |
365 | { | 365 | { |
366 | if (strcmp(arg, "smtp") == 0) | 366 | if (strcmp(arg, "smtp") == 0) |
367 | s_client_config.starttls_proto = PROTO_SMTP; | 367 | cfg.starttls_proto = PROTO_SMTP; |
368 | else if (strcmp(arg, "lmtp") == 0) | 368 | else if (strcmp(arg, "lmtp") == 0) |
369 | s_client_config.starttls_proto = PROTO_LMTP; | 369 | cfg.starttls_proto = PROTO_LMTP; |
370 | else if (strcmp(arg, "pop3") == 0) | 370 | else if (strcmp(arg, "pop3") == 0) |
371 | s_client_config.starttls_proto = PROTO_POP3; | 371 | cfg.starttls_proto = PROTO_POP3; |
372 | else if (strcmp(arg, "imap") == 0) | 372 | else if (strcmp(arg, "imap") == 0) |
373 | s_client_config.starttls_proto = PROTO_IMAP; | 373 | cfg.starttls_proto = PROTO_IMAP; |
374 | else if (strcmp(arg, "ftp") == 0) | 374 | else if (strcmp(arg, "ftp") == 0) |
375 | s_client_config.starttls_proto = PROTO_FTP; | 375 | cfg.starttls_proto = PROTO_FTP; |
376 | else if (strcmp(arg, "xmpp") == 0) | 376 | else if (strcmp(arg, "xmpp") == 0) |
377 | s_client_config.starttls_proto = PROTO_XMPP; | 377 | cfg.starttls_proto = PROTO_XMPP; |
378 | else | 378 | else |
379 | return (1); | 379 | return (1); |
380 | return (0); | 380 | return (0); |
@@ -383,12 +383,12 @@ s_client_opt_starttls(char *arg) | |||
383 | static int | 383 | static int |
384 | s_client_opt_verify(char *arg) | 384 | s_client_opt_verify(char *arg) |
385 | { | 385 | { |
386 | s_client_config.verify = SSL_VERIFY_PEER; | 386 | cfg.verify = SSL_VERIFY_PEER; |
387 | 387 | ||
388 | verify_depth = strtonum(arg, 0, INT_MAX, &s_client_config.errstr); | 388 | verify_depth = strtonum(arg, 0, INT_MAX, &cfg.errstr); |
389 | if (s_client_config.errstr != NULL) { | 389 | if (cfg.errstr != NULL) { |
390 | BIO_printf(bio_err, "invalid argument %s: %s\n", | 390 | BIO_printf(bio_err, "invalid argument %s: %s\n", |
391 | arg, s_client_config.errstr); | 391 | arg, cfg.errstr); |
392 | return (1); | 392 | return (1); |
393 | } | 393 | } |
394 | BIO_printf(bio_err, "verify depth is %d\n", verify_depth); | 394 | BIO_printf(bio_err, "verify depth is %d\n", verify_depth); |
@@ -403,7 +403,7 @@ s_client_opt_verify_param(int argc, char **argv, int *argsused) | |||
403 | int badarg = 0; | 403 | int badarg = 0; |
404 | 404 | ||
405 | if (!args_verify(&pargs, &pargc, &badarg, bio_err, | 405 | if (!args_verify(&pargs, &pargc, &badarg, bio_err, |
406 | &s_client_config.vpm)) { | 406 | &cfg.vpm)) { |
407 | BIO_printf(bio_err, "unknown option %s\n", *argv); | 407 | BIO_printf(bio_err, "unknown option %s\n", *argv); |
408 | return (1); | 408 | return (1); |
409 | } | 409 | } |
@@ -419,14 +419,14 @@ static const struct option s_client_options[] = { | |||
419 | .name = "4", | 419 | .name = "4", |
420 | .desc = "Use IPv4 only", | 420 | .desc = "Use IPv4 only", |
421 | .type = OPTION_VALUE, | 421 | .type = OPTION_VALUE, |
422 | .opt.value = &s_client_config.af, | 422 | .opt.value = &cfg.af, |
423 | .value = AF_INET, | 423 | .value = AF_INET, |
424 | }, | 424 | }, |
425 | { | 425 | { |
426 | .name = "6", | 426 | .name = "6", |
427 | .desc = "Use IPv6 only", | 427 | .desc = "Use IPv6 only", |
428 | .type = OPTION_VALUE, | 428 | .type = OPTION_VALUE, |
429 | .opt.value = &s_client_config.af, | 429 | .opt.value = &cfg.af, |
430 | .value = AF_INET6, | 430 | .value = AF_INET6, |
431 | }, | 431 | }, |
432 | { | 432 | { |
@@ -435,67 +435,67 @@ static const struct option s_client_options[] = { | |||
435 | .desc = "Set the advertised protocols for ALPN" | 435 | .desc = "Set the advertised protocols for ALPN" |
436 | " (comma-separated list)", | 436 | " (comma-separated list)", |
437 | .type = OPTION_ARG, | 437 | .type = OPTION_ARG, |
438 | .opt.arg = &s_client_config.alpn_in, | 438 | .opt.arg = &cfg.alpn_in, |
439 | }, | 439 | }, |
440 | { | 440 | { |
441 | .name = "bugs", | 441 | .name = "bugs", |
442 | .desc = "Enable various workarounds for buggy implementations", | 442 | .desc = "Enable various workarounds for buggy implementations", |
443 | .type = OPTION_FLAG, | 443 | .type = OPTION_FLAG, |
444 | .opt.flag = &s_client_config.bugs, | 444 | .opt.flag = &cfg.bugs, |
445 | }, | 445 | }, |
446 | { | 446 | { |
447 | .name = "CAfile", | 447 | .name = "CAfile", |
448 | .argname = "file", | 448 | .argname = "file", |
449 | .desc = "PEM format file of CA certificates", | 449 | .desc = "PEM format file of CA certificates", |
450 | .type = OPTION_ARG, | 450 | .type = OPTION_ARG, |
451 | .opt.arg = &s_client_config.CAfile, | 451 | .opt.arg = &cfg.CAfile, |
452 | }, | 452 | }, |
453 | { | 453 | { |
454 | .name = "CApath", | 454 | .name = "CApath", |
455 | .argname = "directory", | 455 | .argname = "directory", |
456 | .desc = "PEM format directory of CA certificates", | 456 | .desc = "PEM format directory of CA certificates", |
457 | .type = OPTION_ARG, | 457 | .type = OPTION_ARG, |
458 | .opt.arg = &s_client_config.CApath, | 458 | .opt.arg = &cfg.CApath, |
459 | }, | 459 | }, |
460 | { | 460 | { |
461 | .name = "cert", | 461 | .name = "cert", |
462 | .argname = "file", | 462 | .argname = "file", |
463 | .desc = "Certificate file to use, PEM format assumed", | 463 | .desc = "Certificate file to use, PEM format assumed", |
464 | .type = OPTION_ARG, | 464 | .type = OPTION_ARG, |
465 | .opt.arg = &s_client_config.cert_file, | 465 | .opt.arg = &cfg.cert_file, |
466 | }, | 466 | }, |
467 | { | 467 | { |
468 | .name = "certform", | 468 | .name = "certform", |
469 | .argname = "fmt", | 469 | .argname = "fmt", |
470 | .desc = "Certificate format (PEM or DER) PEM default", | 470 | .desc = "Certificate format (PEM or DER) PEM default", |
471 | .type = OPTION_ARG_FORMAT, | 471 | .type = OPTION_ARG_FORMAT, |
472 | .opt.value = &s_client_config.cert_format, | 472 | .opt.value = &cfg.cert_format, |
473 | }, | 473 | }, |
474 | { | 474 | { |
475 | .name = "cipher", | 475 | .name = "cipher", |
476 | .argname = "cipherlist", | 476 | .argname = "cipherlist", |
477 | .desc = "Preferred cipher to use (see 'openssl ciphers')", | 477 | .desc = "Preferred cipher to use (see 'openssl ciphers')", |
478 | .type = OPTION_ARG, | 478 | .type = OPTION_ARG, |
479 | .opt.arg = &s_client_config.cipher, | 479 | .opt.arg = &cfg.cipher, |
480 | }, | 480 | }, |
481 | { | 481 | { |
482 | .name = "connect", | 482 | .name = "connect", |
483 | .argname = "host:port", | 483 | .argname = "host:port", |
484 | .desc = "Who to connect to (default is localhost:4433)", | 484 | .desc = "Who to connect to (default is localhost:4433)", |
485 | .type = OPTION_ARG, | 485 | .type = OPTION_ARG, |
486 | .opt.arg = &s_client_config.connect, | 486 | .opt.arg = &cfg.connect, |
487 | }, | 487 | }, |
488 | { | 488 | { |
489 | .name = "crlf", | 489 | .name = "crlf", |
490 | .desc = "Convert LF from terminal into CRLF", | 490 | .desc = "Convert LF from terminal into CRLF", |
491 | .type = OPTION_FLAG, | 491 | .type = OPTION_FLAG, |
492 | .opt.flag = &s_client_config.crlf, | 492 | .opt.flag = &cfg.crlf, |
493 | }, | 493 | }, |
494 | { | 494 | { |
495 | .name = "debug", | 495 | .name = "debug", |
496 | .desc = "Print extensive debugging information", | 496 | .desc = "Print extensive debugging information", |
497 | .type = OPTION_FLAG, | 497 | .type = OPTION_FLAG, |
498 | .opt.flag = &s_client_config.debug, | 498 | .opt.flag = &cfg.debug, |
499 | }, | 499 | }, |
500 | #ifndef OPENSSL_NO_DTLS | 500 | #ifndef OPENSSL_NO_DTLS |
501 | { | 501 | { |
@@ -526,20 +526,20 @@ static const struct option s_client_options[] = { | |||
526 | .argname = "list", | 526 | .argname = "list", |
527 | .desc = "Specify EC groups (colon-separated list)", | 527 | .desc = "Specify EC groups (colon-separated list)", |
528 | .type = OPTION_ARG, | 528 | .type = OPTION_ARG, |
529 | .opt.arg = &s_client_config.groups_in, | 529 | .opt.arg = &cfg.groups_in, |
530 | }, | 530 | }, |
531 | { | 531 | { |
532 | .name = "host", | 532 | .name = "host", |
533 | .argname = "host", | 533 | .argname = "host", |
534 | .desc = "Use -connect instead", | 534 | .desc = "Use -connect instead", |
535 | .type = OPTION_ARG, | 535 | .type = OPTION_ARG, |
536 | .opt.arg = &s_client_config.host, | 536 | .opt.arg = &cfg.host, |
537 | }, | 537 | }, |
538 | { | 538 | { |
539 | .name = "ign_eof", | 539 | .name = "ign_eof", |
540 | .desc = "Ignore input EOF (default when -quiet)", | 540 | .desc = "Ignore input EOF (default when -quiet)", |
541 | .type = OPTION_VALUE, | 541 | .type = OPTION_VALUE, |
542 | .opt.value = &s_client_config.ign_eof, | 542 | .opt.value = &cfg.ign_eof, |
543 | .value = 1, | 543 | .value = 1, |
544 | }, | 544 | }, |
545 | { | 545 | { |
@@ -547,21 +547,21 @@ static const struct option s_client_options[] = { | |||
547 | .argname = "file", | 547 | .argname = "file", |
548 | .desc = "Private key file to use, if not, -cert file is used", | 548 | .desc = "Private key file to use, if not, -cert file is used", |
549 | .type = OPTION_ARG, | 549 | .type = OPTION_ARG, |
550 | .opt.arg = &s_client_config.key_file, | 550 | .opt.arg = &cfg.key_file, |
551 | }, | 551 | }, |
552 | { | 552 | { |
553 | .name = "keyform", | 553 | .name = "keyform", |
554 | .argname = "fmt", | 554 | .argname = "fmt", |
555 | .desc = "Key format (PEM or DER) PEM default", | 555 | .desc = "Key format (PEM or DER) PEM default", |
556 | .type = OPTION_ARG_FORMAT, | 556 | .type = OPTION_ARG_FORMAT, |
557 | .opt.value = &s_client_config.key_format, | 557 | .opt.value = &cfg.key_format, |
558 | }, | 558 | }, |
559 | { | 559 | { |
560 | .name = "keymatexport", | 560 | .name = "keymatexport", |
561 | .argname = "label", | 561 | .argname = "label", |
562 | .desc = "Export keying material using label", | 562 | .desc = "Export keying material using label", |
563 | .type = OPTION_ARG, | 563 | .type = OPTION_ARG, |
564 | .opt.arg = &s_client_config.keymatexportlabel, | 564 | .opt.arg = &cfg.keymatexportlabel, |
565 | }, | 565 | }, |
566 | { | 566 | { |
567 | .name = "keymatexportlen", | 567 | .name = "keymatexportlen", |
@@ -578,14 +578,14 @@ static const struct option s_client_options[] = { | |||
578 | .name = "legacy_server_connect", | 578 | .name = "legacy_server_connect", |
579 | .desc = "Allow initial connection to servers that don't support RI", | 579 | .desc = "Allow initial connection to servers that don't support RI", |
580 | .type = OPTION_VALUE_OR, | 580 | .type = OPTION_VALUE_OR, |
581 | .opt.value = &s_client_config.off, | 581 | .opt.value = &cfg.off, |
582 | .value = SSL_OP_LEGACY_SERVER_CONNECT, | 582 | .value = SSL_OP_LEGACY_SERVER_CONNECT, |
583 | }, | 583 | }, |
584 | { | 584 | { |
585 | .name = "msg", | 585 | .name = "msg", |
586 | .desc = "Show all protocol messages with hex dump", | 586 | .desc = "Show all protocol messages with hex dump", |
587 | .type = OPTION_FLAG, | 587 | .type = OPTION_FLAG, |
588 | .opt.flag = &s_client_config.msg, | 588 | .opt.flag = &cfg.msg, |
589 | }, | 589 | }, |
590 | #ifndef OPENSSL_NO_DTLS | 590 | #ifndef OPENSSL_NO_DTLS |
591 | { | 591 | { |
@@ -600,115 +600,115 @@ static const struct option s_client_options[] = { | |||
600 | .name = "nbio", | 600 | .name = "nbio", |
601 | .desc = "Turn on non-blocking I/O", | 601 | .desc = "Turn on non-blocking I/O", |
602 | .type = OPTION_FLAG, | 602 | .type = OPTION_FLAG, |
603 | .opt.flag = &s_client_config.nbio, | 603 | .opt.flag = &cfg.nbio, |
604 | }, | 604 | }, |
605 | { | 605 | { |
606 | .name = "nbio_test", | 606 | .name = "nbio_test", |
607 | .desc = "Test non-blocking I/O", | 607 | .desc = "Test non-blocking I/O", |
608 | .type = OPTION_FLAG, | 608 | .type = OPTION_FLAG, |
609 | .opt.flag = &s_client_config.nbio_test, | 609 | .opt.flag = &cfg.nbio_test, |
610 | }, | 610 | }, |
611 | { | 611 | { |
612 | .name = "nextprotoneg", | 612 | .name = "nextprotoneg", |
613 | .argname = "protocols", | 613 | .argname = "protocols", |
614 | .type = OPTION_ARG, | 614 | .type = OPTION_ARG, |
615 | .opt.arg = &s_client_config.npn_in, /* Ignored. */ | 615 | .opt.arg = &cfg.npn_in, /* Ignored. */ |
616 | }, | 616 | }, |
617 | { | 617 | { |
618 | .name = "no_comp", | 618 | .name = "no_comp", |
619 | .type = OPTION_VALUE_OR, | 619 | .type = OPTION_VALUE_OR, |
620 | .opt.value = &s_client_config.off, | 620 | .opt.value = &cfg.off, |
621 | .value = SSL_OP_NO_COMPRESSION, | 621 | .value = SSL_OP_NO_COMPRESSION, |
622 | }, | 622 | }, |
623 | { | 623 | { |
624 | .name = "no_ign_eof", | 624 | .name = "no_ign_eof", |
625 | .desc = "Don't ignore input EOF", | 625 | .desc = "Don't ignore input EOF", |
626 | .type = OPTION_VALUE, | 626 | .type = OPTION_VALUE, |
627 | .opt.value = &s_client_config.ign_eof, | 627 | .opt.value = &cfg.ign_eof, |
628 | .value = 0, | 628 | .value = 0, |
629 | }, | 629 | }, |
630 | { | 630 | { |
631 | .name = "no_legacy_server_connect", | 631 | .name = "no_legacy_server_connect", |
632 | .desc = "Disallow initial connection to servers that don't support RI", | 632 | .desc = "Disallow initial connection to servers that don't support RI", |
633 | .type = OPTION_VALUE_OR, | 633 | .type = OPTION_VALUE_OR, |
634 | .opt.value = &s_client_config.clr, | 634 | .opt.value = &cfg.clr, |
635 | .value = SSL_OP_LEGACY_SERVER_CONNECT, | 635 | .value = SSL_OP_LEGACY_SERVER_CONNECT, |
636 | }, | 636 | }, |
637 | { | 637 | { |
638 | .name = "no_servername", | 638 | .name = "no_servername", |
639 | .desc = "Do not send a Server Name Indication (SNI) extension", | 639 | .desc = "Do not send a Server Name Indication (SNI) extension", |
640 | .type = OPTION_FLAG, | 640 | .type = OPTION_FLAG, |
641 | .opt.value = &s_client_config.no_servername, | 641 | .opt.value = &cfg.no_servername, |
642 | }, | 642 | }, |
643 | { | 643 | { |
644 | .name = "no_ssl2", | 644 | .name = "no_ssl2", |
645 | .type = OPTION_VALUE_OR, | 645 | .type = OPTION_VALUE_OR, |
646 | .opt.value = &s_client_config.off, | 646 | .opt.value = &cfg.off, |
647 | .value = SSL_OP_NO_SSLv2, | 647 | .value = SSL_OP_NO_SSLv2, |
648 | }, | 648 | }, |
649 | { | 649 | { |
650 | .name = "no_ssl3", | 650 | .name = "no_ssl3", |
651 | .type = OPTION_VALUE_OR, | 651 | .type = OPTION_VALUE_OR, |
652 | .opt.value = &s_client_config.off, | 652 | .opt.value = &cfg.off, |
653 | .value = SSL_OP_NO_SSLv3, | 653 | .value = SSL_OP_NO_SSLv3, |
654 | }, | 654 | }, |
655 | { | 655 | { |
656 | .name = "no_ticket", | 656 | .name = "no_ticket", |
657 | .desc = "Disable use of RFC4507 session ticket support", | 657 | .desc = "Disable use of RFC4507 session ticket support", |
658 | .type = OPTION_VALUE_OR, | 658 | .type = OPTION_VALUE_OR, |
659 | .opt.value = &s_client_config.off, | 659 | .opt.value = &cfg.off, |
660 | .value = SSL_OP_NO_TICKET, | 660 | .value = SSL_OP_NO_TICKET, |
661 | }, | 661 | }, |
662 | { | 662 | { |
663 | .name = "no_tls1", | 663 | .name = "no_tls1", |
664 | .desc = "Disable the use of TLSv1", | 664 | .desc = "Disable the use of TLSv1", |
665 | .type = OPTION_VALUE_OR, | 665 | .type = OPTION_VALUE_OR, |
666 | .opt.value = &s_client_config.off, | 666 | .opt.value = &cfg.off, |
667 | .value = SSL_OP_NO_TLSv1, | 667 | .value = SSL_OP_NO_TLSv1, |
668 | }, | 668 | }, |
669 | { | 669 | { |
670 | .name = "no_tls1_1", | 670 | .name = "no_tls1_1", |
671 | .desc = "Disable the use of TLSv1.1", | 671 | .desc = "Disable the use of TLSv1.1", |
672 | .type = OPTION_VALUE_OR, | 672 | .type = OPTION_VALUE_OR, |
673 | .opt.value = &s_client_config.off, | 673 | .opt.value = &cfg.off, |
674 | .value = SSL_OP_NO_TLSv1_1, | 674 | .value = SSL_OP_NO_TLSv1_1, |
675 | }, | 675 | }, |
676 | { | 676 | { |
677 | .name = "no_tls1_2", | 677 | .name = "no_tls1_2", |
678 | .desc = "Disable the use of TLSv1.2", | 678 | .desc = "Disable the use of TLSv1.2", |
679 | .type = OPTION_VALUE_OR, | 679 | .type = OPTION_VALUE_OR, |
680 | .opt.value = &s_client_config.off, | 680 | .opt.value = &cfg.off, |
681 | .value = SSL_OP_NO_TLSv1_2, | 681 | .value = SSL_OP_NO_TLSv1_2, |
682 | }, | 682 | }, |
683 | { | 683 | { |
684 | .name = "no_tls1_3", | 684 | .name = "no_tls1_3", |
685 | .desc = "Disable the use of TLSv1.3", | 685 | .desc = "Disable the use of TLSv1.3", |
686 | .type = OPTION_VALUE_OR, | 686 | .type = OPTION_VALUE_OR, |
687 | .opt.value = &s_client_config.off, | 687 | .opt.value = &cfg.off, |
688 | .value = SSL_OP_NO_TLSv1_3, | 688 | .value = SSL_OP_NO_TLSv1_3, |
689 | }, | 689 | }, |
690 | { | 690 | { |
691 | .name = "noservername", | 691 | .name = "noservername", |
692 | .type = OPTION_FLAG, | 692 | .type = OPTION_FLAG, |
693 | .opt.value = &s_client_config.no_servername, | 693 | .opt.value = &cfg.no_servername, |
694 | }, | 694 | }, |
695 | { | 695 | { |
696 | .name = "pass", | 696 | .name = "pass", |
697 | .argname = "arg", | 697 | .argname = "arg", |
698 | .desc = "Private key file pass phrase source", | 698 | .desc = "Private key file pass phrase source", |
699 | .type = OPTION_ARG, | 699 | .type = OPTION_ARG, |
700 | .opt.arg = &s_client_config.passarg, | 700 | .opt.arg = &cfg.passarg, |
701 | }, | 701 | }, |
702 | { | 702 | { |
703 | .name = "pause", | 703 | .name = "pause", |
704 | .desc = "Pause 1 second between each read and write call", | 704 | .desc = "Pause 1 second between each read and write call", |
705 | .type = OPTION_FLAG, | 705 | .type = OPTION_FLAG, |
706 | .opt.flag = &s_client_config.pause, | 706 | .opt.flag = &cfg.pause, |
707 | }, | 707 | }, |
708 | { | 708 | { |
709 | .name = "peekaboo", | 709 | .name = "peekaboo", |
710 | .type = OPTION_FLAG, | 710 | .type = OPTION_FLAG, |
711 | .opt.flag = &s_client_config.peekaboo, | 711 | .opt.flag = &cfg.peekaboo, |
712 | }, | 712 | }, |
713 | { | 713 | { |
714 | .name = "port", | 714 | .name = "port", |
@@ -721,14 +721,14 @@ static const struct option s_client_options[] = { | |||
721 | .name = "prexit", | 721 | .name = "prexit", |
722 | .desc = "Print session information when the program exits", | 722 | .desc = "Print session information when the program exits", |
723 | .type = OPTION_FLAG, | 723 | .type = OPTION_FLAG, |
724 | .opt.flag = &s_client_config.prexit, | 724 | .opt.flag = &cfg.prexit, |
725 | }, | 725 | }, |
726 | { | 726 | { |
727 | .name = "proxy", | 727 | .name = "proxy", |
728 | .argname = "host:port", | 728 | .argname = "host:port", |
729 | .desc = "Connect to http proxy", | 729 | .desc = "Connect to http proxy", |
730 | .type = OPTION_ARG, | 730 | .type = OPTION_ARG, |
731 | .opt.arg = &s_client_config.proxy, | 731 | .opt.arg = &cfg.proxy, |
732 | }, | 732 | }, |
733 | { | 733 | { |
734 | .name = "quiet", | 734 | .name = "quiet", |
@@ -740,7 +740,7 @@ static const struct option s_client_options[] = { | |||
740 | .name = "reconnect", | 740 | .name = "reconnect", |
741 | .desc = "Drop and re-make the connection with the same Session-ID", | 741 | .desc = "Drop and re-make the connection with the same Session-ID", |
742 | .type = OPTION_VALUE, | 742 | .type = OPTION_VALUE, |
743 | .opt.value = &s_client_config.reconnect, | 743 | .opt.value = &cfg.reconnect, |
744 | .value = 5, | 744 | .value = 5, |
745 | }, | 745 | }, |
746 | { | 746 | { |
@@ -748,13 +748,13 @@ static const struct option s_client_options[] = { | |||
748 | .argname = "name", | 748 | .argname = "name", |
749 | .desc = "Set TLS extension servername in ClientHello (SNI)", | 749 | .desc = "Set TLS extension servername in ClientHello (SNI)", |
750 | .type = OPTION_ARG, | 750 | .type = OPTION_ARG, |
751 | .opt.arg = &s_client_config.servername, | 751 | .opt.arg = &cfg.servername, |
752 | }, | 752 | }, |
753 | { | 753 | { |
754 | .name = "serverpref", | 754 | .name = "serverpref", |
755 | .desc = "Use server's cipher preferences", | 755 | .desc = "Use server's cipher preferences", |
756 | .type = OPTION_VALUE_OR, | 756 | .type = OPTION_VALUE_OR, |
757 | .opt.value = &s_client_config.off, | 757 | .opt.value = &cfg.off, |
758 | .value = SSL_OP_CIPHER_SERVER_PREFERENCE, | 758 | .value = SSL_OP_CIPHER_SERVER_PREFERENCE, |
759 | }, | 759 | }, |
760 | { | 760 | { |
@@ -762,20 +762,20 @@ static const struct option s_client_options[] = { | |||
762 | .argname = "file", | 762 | .argname = "file", |
763 | .desc = "File to read TLS session from", | 763 | .desc = "File to read TLS session from", |
764 | .type = OPTION_ARG, | 764 | .type = OPTION_ARG, |
765 | .opt.arg = &s_client_config.sess_in, | 765 | .opt.arg = &cfg.sess_in, |
766 | }, | 766 | }, |
767 | { | 767 | { |
768 | .name = "sess_out", | 768 | .name = "sess_out", |
769 | .argname = "file", | 769 | .argname = "file", |
770 | .desc = "File to write TLS session to", | 770 | .desc = "File to write TLS session to", |
771 | .type = OPTION_ARG, | 771 | .type = OPTION_ARG, |
772 | .opt.arg = &s_client_config.sess_out, | 772 | .opt.arg = &cfg.sess_out, |
773 | }, | 773 | }, |
774 | { | 774 | { |
775 | .name = "showcerts", | 775 | .name = "showcerts", |
776 | .desc = "Show all server certificates in the chain", | 776 | .desc = "Show all server certificates in the chain", |
777 | .type = OPTION_FLAG, | 777 | .type = OPTION_FLAG, |
778 | .opt.flag = &s_client_config.showcerts, | 778 | .opt.flag = &cfg.showcerts, |
779 | }, | 779 | }, |
780 | { | 780 | { |
781 | .name = "starttls", | 781 | .name = "starttls", |
@@ -789,20 +789,20 @@ static const struct option s_client_options[] = { | |||
789 | .name = "state", | 789 | .name = "state", |
790 | .desc = "Print the TLS session states", | 790 | .desc = "Print the TLS session states", |
791 | .type = OPTION_FLAG, | 791 | .type = OPTION_FLAG, |
792 | .opt.flag = &s_client_config.state, | 792 | .opt.flag = &cfg.state, |
793 | }, | 793 | }, |
794 | { | 794 | { |
795 | .name = "status", | 795 | .name = "status", |
796 | .desc = "Send a certificate status request to the server (OCSP)", | 796 | .desc = "Send a certificate status request to the server (OCSP)", |
797 | .type = OPTION_FLAG, | 797 | .type = OPTION_FLAG, |
798 | .opt.flag = &s_client_config.status_req, | 798 | .opt.flag = &cfg.status_req, |
799 | }, | 799 | }, |
800 | #ifndef OPENSSL_NO_DTLS | 800 | #ifndef OPENSSL_NO_DTLS |
801 | { | 801 | { |
802 | .name = "timeout", | 802 | .name = "timeout", |
803 | .desc = "Enable send/receive timeout on DTLS connections", | 803 | .desc = "Enable send/receive timeout on DTLS connections", |
804 | .type = OPTION_FLAG, | 804 | .type = OPTION_FLAG, |
805 | .opt.flag = &s_client_config.enable_timeouts, | 805 | .opt.flag = &cfg.enable_timeouts, |
806 | }, | 806 | }, |
807 | #endif | 807 | #endif |
808 | { | 808 | { |
@@ -833,7 +833,7 @@ static const struct option s_client_options[] = { | |||
833 | .name = "tlsextdebug", | 833 | .name = "tlsextdebug", |
834 | .desc = "Hex dump of all TLS extensions received", | 834 | .desc = "Hex dump of all TLS extensions received", |
835 | .type = OPTION_FLAG, | 835 | .type = OPTION_FLAG, |
836 | .opt.flag = &s_client_config.tlsextdebug, | 836 | .opt.flag = &cfg.tlsextdebug, |
837 | }, | 837 | }, |
838 | #ifndef OPENSSL_NO_SRTP | 838 | #ifndef OPENSSL_NO_SRTP |
839 | { | 839 | { |
@@ -841,7 +841,7 @@ static const struct option s_client_options[] = { | |||
841 | .argname = "profiles", | 841 | .argname = "profiles", |
842 | .desc = "Offer SRTP key management with a colon-separated profiles", | 842 | .desc = "Offer SRTP key management with a colon-separated profiles", |
843 | .type = OPTION_ARG, | 843 | .type = OPTION_ARG, |
844 | .opt.arg = &s_client_config.srtp_profiles, | 844 | .opt.arg = &cfg.srtp_profiles, |
845 | }, | 845 | }, |
846 | #endif | 846 | #endif |
847 | { | 847 | { |
@@ -862,7 +862,7 @@ static const struct option s_client_options[] = { | |||
862 | .argname = "host", | 862 | .argname = "host", |
863 | .desc = "Connect to this virtual host on the xmpp server", | 863 | .desc = "Connect to this virtual host on the xmpp server", |
864 | .type = OPTION_ARG, | 864 | .type = OPTION_ARG, |
865 | .opt.arg = &s_client_config.xmpphost, | 865 | .opt.arg = &cfg.xmpphost, |
866 | }, | 866 | }, |
867 | { | 867 | { |
868 | .name = NULL, | 868 | .name = NULL, |
@@ -928,17 +928,17 @@ s_client_main(int argc, char **argv) | |||
928 | exit(1); | 928 | exit(1); |
929 | } | 929 | } |
930 | 930 | ||
931 | memset(&s_client_config, 0, sizeof(s_client_config)); | 931 | memset(&cfg, 0, sizeof(cfg)); |
932 | s_client_config.af = AF_UNSPEC; | 932 | cfg.af = AF_UNSPEC; |
933 | s_client_config.cert_format = FORMAT_PEM; | 933 | cfg.cert_format = FORMAT_PEM; |
934 | s_client_config.host = SSL_HOST_NAME; | 934 | cfg.host = SSL_HOST_NAME; |
935 | s_client_config.key_format = FORMAT_PEM; | 935 | cfg.key_format = FORMAT_PEM; |
936 | s_client_config.keymatexportlen = 20; | 936 | cfg.keymatexportlen = 20; |
937 | s_client_config.meth = TLS_client_method(); | 937 | cfg.meth = TLS_client_method(); |
938 | s_client_config.port = PORT_STR; | 938 | cfg.port = PORT_STR; |
939 | s_client_config.socket_type = SOCK_STREAM; | 939 | cfg.socket_type = SOCK_STREAM; |
940 | s_client_config.starttls_proto = PROTO_OFF; | 940 | cfg.starttls_proto = PROTO_OFF; |
941 | s_client_config.verify = SSL_VERIFY_NONE; | 941 | cfg.verify = SSL_VERIFY_NONE; |
942 | 942 | ||
943 | if (((cbuf = malloc(BUFSIZZ)) == NULL) || | 943 | if (((cbuf = malloc(BUFSIZZ)) == NULL) || |
944 | ((sbuf = malloc(BUFSIZZ)) == NULL) || | 944 | ((sbuf = malloc(BUFSIZZ)) == NULL) || |
@@ -953,45 +953,45 @@ s_client_main(int argc, char **argv) | |||
953 | badop = 1; | 953 | badop = 1; |
954 | goto bad; | 954 | goto bad; |
955 | } | 955 | } |
956 | if (s_client_config.proxy != NULL) { | 956 | if (cfg.proxy != NULL) { |
957 | if (!extract_host_port(s_client_config.proxy, | 957 | if (!extract_host_port(cfg.proxy, |
958 | &s_client_config.host, NULL, &s_client_config.port)) | 958 | &cfg.host, NULL, &cfg.port)) |
959 | goto bad; | 959 | goto bad; |
960 | if (s_client_config.connect == NULL) | 960 | if (cfg.connect == NULL) |
961 | s_client_config.connect = SSL_HOST_NAME; | 961 | cfg.connect = SSL_HOST_NAME; |
962 | } else if (s_client_config.connect != NULL) { | 962 | } else if (cfg.connect != NULL) { |
963 | if (!extract_host_port(s_client_config.connect, | 963 | if (!extract_host_port(cfg.connect, |
964 | &s_client_config.host, NULL, &s_client_config.port)) | 964 | &cfg.host, NULL, &cfg.port)) |
965 | goto bad; | 965 | goto bad; |
966 | } | 966 | } |
967 | if (badop) { | 967 | if (badop) { |
968 | bad: | 968 | bad: |
969 | if (s_client_config.errstr == NULL) | 969 | if (cfg.errstr == NULL) |
970 | sc_usage(); | 970 | sc_usage(); |
971 | goto end; | 971 | goto end; |
972 | } | 972 | } |
973 | 973 | ||
974 | if (!app_passwd(bio_err, s_client_config.passarg, NULL, &pass, NULL)) { | 974 | if (!app_passwd(bio_err, cfg.passarg, NULL, &pass, NULL)) { |
975 | BIO_printf(bio_err, "Error getting password\n"); | 975 | BIO_printf(bio_err, "Error getting password\n"); |
976 | goto end; | 976 | goto end; |
977 | } | 977 | } |
978 | if (s_client_config.key_file == NULL) | 978 | if (cfg.key_file == NULL) |
979 | s_client_config.key_file = s_client_config.cert_file; | 979 | cfg.key_file = cfg.cert_file; |
980 | 980 | ||
981 | 981 | ||
982 | if (s_client_config.key_file) { | 982 | if (cfg.key_file) { |
983 | 983 | ||
984 | key = load_key(bio_err, s_client_config.key_file, | 984 | key = load_key(bio_err, cfg.key_file, |
985 | s_client_config.key_format, 0, pass, | 985 | cfg.key_format, 0, pass, |
986 | "client certificate private key file"); | 986 | "client certificate private key file"); |
987 | if (!key) { | 987 | if (!key) { |
988 | ERR_print_errors(bio_err); | 988 | ERR_print_errors(bio_err); |
989 | goto end; | 989 | goto end; |
990 | } | 990 | } |
991 | } | 991 | } |
992 | if (s_client_config.cert_file) { | 992 | if (cfg.cert_file) { |
993 | cert = load_cert(bio_err, s_client_config.cert_file, | 993 | cert = load_cert(bio_err, cfg.cert_file, |
994 | s_client_config.cert_format, | 994 | cfg.cert_format, |
995 | NULL, "client certificate file"); | 995 | NULL, "client certificate file"); |
996 | 996 | ||
997 | if (!cert) { | 997 | if (!cert) { |
@@ -999,8 +999,8 @@ s_client_main(int argc, char **argv) | |||
999 | goto end; | 999 | goto end; |
1000 | } | 1000 | } |
1001 | } | 1001 | } |
1002 | if (s_client_config.quiet && !s_client_config.debug && | 1002 | if (cfg.quiet && !cfg.debug && |
1003 | !s_client_config.msg) { | 1003 | !cfg.msg) { |
1004 | if ((bio_c_out = BIO_new(BIO_s_null())) == NULL) | 1004 | if ((bio_c_out = BIO_new(BIO_s_null())) == NULL) |
1005 | goto end; | 1005 | goto end; |
1006 | } else { | 1006 | } else { |
@@ -1008,7 +1008,7 @@ s_client_main(int argc, char **argv) | |||
1008 | goto end; | 1008 | goto end; |
1009 | } | 1009 | } |
1010 | 1010 | ||
1011 | ctx = SSL_CTX_new(s_client_config.meth); | 1011 | ctx = SSL_CTX_new(cfg.meth); |
1012 | if (ctx == NULL) { | 1012 | if (ctx == NULL) { |
1013 | ERR_print_errors(bio_err); | 1013 | ERR_print_errors(bio_err); |
1014 | goto end; | 1014 | goto end; |
@@ -1016,31 +1016,31 @@ s_client_main(int argc, char **argv) | |||
1016 | 1016 | ||
1017 | SSL_CTX_clear_mode(ctx, SSL_MODE_AUTO_RETRY); | 1017 | SSL_CTX_clear_mode(ctx, SSL_MODE_AUTO_RETRY); |
1018 | 1018 | ||
1019 | if (s_client_config.vpm) | 1019 | if (cfg.vpm) |
1020 | SSL_CTX_set1_param(ctx, s_client_config.vpm); | 1020 | SSL_CTX_set1_param(ctx, cfg.vpm); |
1021 | 1021 | ||
1022 | if (!SSL_CTX_set_min_proto_version(ctx, s_client_config.min_version)) | 1022 | if (!SSL_CTX_set_min_proto_version(ctx, cfg.min_version)) |
1023 | goto end; | 1023 | goto end; |
1024 | if (!SSL_CTX_set_max_proto_version(ctx, s_client_config.max_version)) | 1024 | if (!SSL_CTX_set_max_proto_version(ctx, cfg.max_version)) |
1025 | goto end; | 1025 | goto end; |
1026 | 1026 | ||
1027 | #ifndef OPENSSL_NO_SRTP | 1027 | #ifndef OPENSSL_NO_SRTP |
1028 | if (s_client_config.srtp_profiles != NULL) | 1028 | if (cfg.srtp_profiles != NULL) |
1029 | SSL_CTX_set_tlsext_use_srtp(ctx, s_client_config.srtp_profiles); | 1029 | SSL_CTX_set_tlsext_use_srtp(ctx, cfg.srtp_profiles); |
1030 | #endif | 1030 | #endif |
1031 | if (s_client_config.bugs) | 1031 | if (cfg.bugs) |
1032 | SSL_CTX_set_options(ctx, SSL_OP_ALL | s_client_config.off); | 1032 | SSL_CTX_set_options(ctx, SSL_OP_ALL | cfg.off); |
1033 | else | 1033 | else |
1034 | SSL_CTX_set_options(ctx, s_client_config.off); | 1034 | SSL_CTX_set_options(ctx, cfg.off); |
1035 | 1035 | ||
1036 | if (s_client_config.clr) | 1036 | if (cfg.clr) |
1037 | SSL_CTX_clear_options(ctx, s_client_config.clr); | 1037 | SSL_CTX_clear_options(ctx, cfg.clr); |
1038 | 1038 | ||
1039 | if (s_client_config.alpn_in) { | 1039 | if (cfg.alpn_in) { |
1040 | unsigned short alpn_len; | 1040 | unsigned short alpn_len; |
1041 | unsigned char *alpn; | 1041 | unsigned char *alpn; |
1042 | 1042 | ||
1043 | alpn = next_protos_parse(&alpn_len, s_client_config.alpn_in); | 1043 | alpn = next_protos_parse(&alpn_len, cfg.alpn_in); |
1044 | if (alpn == NULL) { | 1044 | if (alpn == NULL) { |
1045 | BIO_printf(bio_err, "Error parsing -alpn argument\n"); | 1045 | BIO_printf(bio_err, "Error parsing -alpn argument\n"); |
1046 | goto end; | 1046 | goto end; |
@@ -1048,42 +1048,42 @@ s_client_main(int argc, char **argv) | |||
1048 | SSL_CTX_set_alpn_protos(ctx, alpn, alpn_len); | 1048 | SSL_CTX_set_alpn_protos(ctx, alpn, alpn_len); |
1049 | free(alpn); | 1049 | free(alpn); |
1050 | } | 1050 | } |
1051 | if (s_client_config.groups_in != NULL) { | 1051 | if (cfg.groups_in != NULL) { |
1052 | if (SSL_CTX_set1_groups_list(ctx, s_client_config.groups_in) != 1) { | 1052 | if (SSL_CTX_set1_groups_list(ctx, cfg.groups_in) != 1) { |
1053 | BIO_printf(bio_err, "Failed to set groups '%s'\n", | 1053 | BIO_printf(bio_err, "Failed to set groups '%s'\n", |
1054 | s_client_config.groups_in); | 1054 | cfg.groups_in); |
1055 | goto end; | 1055 | goto end; |
1056 | } | 1056 | } |
1057 | } | 1057 | } |
1058 | 1058 | ||
1059 | if (s_client_config.state) | 1059 | if (cfg.state) |
1060 | SSL_CTX_set_info_callback(ctx, apps_ssl_info_callback); | 1060 | SSL_CTX_set_info_callback(ctx, apps_ssl_info_callback); |
1061 | if (s_client_config.cipher != NULL) | 1061 | if (cfg.cipher != NULL) |
1062 | if (!SSL_CTX_set_cipher_list(ctx, s_client_config.cipher)) { | 1062 | if (!SSL_CTX_set_cipher_list(ctx, cfg.cipher)) { |
1063 | BIO_printf(bio_err, "error setting cipher list\n"); | 1063 | BIO_printf(bio_err, "error setting cipher list\n"); |
1064 | ERR_print_errors(bio_err); | 1064 | ERR_print_errors(bio_err); |
1065 | goto end; | 1065 | goto end; |
1066 | } | 1066 | } |
1067 | 1067 | ||
1068 | SSL_CTX_set_verify(ctx, s_client_config.verify, verify_callback); | 1068 | SSL_CTX_set_verify(ctx, cfg.verify, verify_callback); |
1069 | if (!set_cert_key_stuff(ctx, cert, key)) | 1069 | if (!set_cert_key_stuff(ctx, cert, key)) |
1070 | goto end; | 1070 | goto end; |
1071 | 1071 | ||
1072 | if ((s_client_config.CAfile || s_client_config.CApath) | 1072 | if ((cfg.CAfile || cfg.CApath) |
1073 | && !SSL_CTX_load_verify_locations(ctx, s_client_config.CAfile, | 1073 | && !SSL_CTX_load_verify_locations(ctx, cfg.CAfile, |
1074 | s_client_config.CApath)) | 1074 | cfg.CApath)) |
1075 | ERR_print_errors(bio_err); | 1075 | ERR_print_errors(bio_err); |
1076 | 1076 | ||
1077 | if (!SSL_CTX_set_default_verify_paths(ctx)) | 1077 | if (!SSL_CTX_set_default_verify_paths(ctx)) |
1078 | ERR_print_errors(bio_err); | 1078 | ERR_print_errors(bio_err); |
1079 | 1079 | ||
1080 | con = SSL_new(ctx); | 1080 | con = SSL_new(ctx); |
1081 | if (s_client_config.sess_in) { | 1081 | if (cfg.sess_in) { |
1082 | SSL_SESSION *sess; | 1082 | SSL_SESSION *sess; |
1083 | BIO *stmp = BIO_new_file(s_client_config.sess_in, "r"); | 1083 | BIO *stmp = BIO_new_file(cfg.sess_in, "r"); |
1084 | if (!stmp) { | 1084 | if (!stmp) { |
1085 | BIO_printf(bio_err, "Can't open session file %s\n", | 1085 | BIO_printf(bio_err, "Can't open session file %s\n", |
1086 | s_client_config.sess_in); | 1086 | cfg.sess_in); |
1087 | ERR_print_errors(bio_err); | 1087 | ERR_print_errors(bio_err); |
1088 | goto end; | 1088 | goto end; |
1089 | } | 1089 | } |
@@ -1091,7 +1091,7 @@ s_client_main(int argc, char **argv) | |||
1091 | BIO_free(stmp); | 1091 | BIO_free(stmp); |
1092 | if (!sess) { | 1092 | if (!sess) { |
1093 | BIO_printf(bio_err, "Can't open session file %s\n", | 1093 | BIO_printf(bio_err, "Can't open session file %s\n", |
1094 | s_client_config.sess_in); | 1094 | cfg.sess_in); |
1095 | ERR_print_errors(bio_err); | 1095 | ERR_print_errors(bio_err); |
1096 | goto end; | 1096 | goto end; |
1097 | } | 1097 | } |
@@ -1100,15 +1100,15 @@ s_client_main(int argc, char **argv) | |||
1100 | } | 1100 | } |
1101 | 1101 | ||
1102 | /* Attempt to opportunistically use the host name for SNI. */ | 1102 | /* Attempt to opportunistically use the host name for SNI. */ |
1103 | servername = s_client_config.servername; | 1103 | servername = cfg.servername; |
1104 | if (servername == NULL) | 1104 | if (servername == NULL) |
1105 | servername = s_client_config.host; | 1105 | servername = cfg.host; |
1106 | 1106 | ||
1107 | if (!s_client_config.no_servername && servername != NULL && | 1107 | if (!cfg.no_servername && servername != NULL && |
1108 | !SSL_set_tlsext_host_name(con, servername)) { | 1108 | !SSL_set_tlsext_host_name(con, servername)) { |
1109 | long ssl_err = ERR_peek_error(); | 1109 | long ssl_err = ERR_peek_error(); |
1110 | 1110 | ||
1111 | if (s_client_config.servername != NULL || | 1111 | if (cfg.servername != NULL || |
1112 | ERR_GET_LIB(ssl_err) != ERR_LIB_SSL || | 1112 | ERR_GET_LIB(ssl_err) != ERR_LIB_SSL || |
1113 | ERR_GET_REASON(ssl_err) != SSL_R_SSL3_EXT_INVALID_SERVERNAME) { | 1113 | ERR_GET_REASON(ssl_err) != SSL_R_SSL3_EXT_INVALID_SERVERNAME) { |
1114 | BIO_printf(bio_err, | 1114 | BIO_printf(bio_err, |
@@ -1119,7 +1119,7 @@ s_client_main(int argc, char **argv) | |||
1119 | servername = NULL; | 1119 | servername = NULL; |
1120 | ERR_clear_error(); | 1120 | ERR_clear_error(); |
1121 | } | 1121 | } |
1122 | if (!s_client_config.no_servername && servername != NULL) { | 1122 | if (!cfg.no_servername && servername != NULL) { |
1123 | tlsextcbp.biodebug = bio_err; | 1123 | tlsextcbp.biodebug = bio_err; |
1124 | SSL_CTX_set_tlsext_servername_callback(ctx, ssl_servername_cb); | 1124 | SSL_CTX_set_tlsext_servername_callback(ctx, ssl_servername_cb); |
1125 | SSL_CTX_set_tlsext_servername_arg(ctx, &tlsextcbp); | 1125 | SSL_CTX_set_tlsext_servername_arg(ctx, &tlsextcbp); |
@@ -1127,22 +1127,22 @@ s_client_main(int argc, char **argv) | |||
1127 | 1127 | ||
1128 | re_start: | 1128 | re_start: |
1129 | 1129 | ||
1130 | if (init_client(&s, s_client_config.host, s_client_config.port, | 1130 | if (init_client(&s, cfg.host, cfg.port, |
1131 | s_client_config.socket_type, s_client_config.af) == 0) { | 1131 | cfg.socket_type, cfg.af) == 0) { |
1132 | BIO_printf(bio_err, "connect:errno=%d\n", errno); | 1132 | BIO_printf(bio_err, "connect:errno=%d\n", errno); |
1133 | goto end; | 1133 | goto end; |
1134 | } | 1134 | } |
1135 | BIO_printf(bio_c_out, "CONNECTED(%08X)\n", s); | 1135 | BIO_printf(bio_c_out, "CONNECTED(%08X)\n", s); |
1136 | 1136 | ||
1137 | if (s_client_config.nbio) { | 1137 | if (cfg.nbio) { |
1138 | if (!s_client_config.quiet) | 1138 | if (!cfg.quiet) |
1139 | BIO_printf(bio_c_out, "turning on non blocking io\n"); | 1139 | BIO_printf(bio_c_out, "turning on non blocking io\n"); |
1140 | if (!BIO_socket_nbio(s, 1)) { | 1140 | if (!BIO_socket_nbio(s, 1)) { |
1141 | ERR_print_errors(bio_err); | 1141 | ERR_print_errors(bio_err); |
1142 | goto end; | 1142 | goto end; |
1143 | } | 1143 | } |
1144 | } | 1144 | } |
1145 | if (s_client_config.pause & 0x01) | 1145 | if (cfg.pause & 0x01) |
1146 | SSL_set_debug(con, 1); | 1146 | SSL_set_debug(con, 1); |
1147 | 1147 | ||
1148 | if (SSL_is_dtls(con)) { | 1148 | if (SSL_is_dtls(con)) { |
@@ -1157,7 +1157,7 @@ s_client_main(int argc, char **argv) | |||
1157 | } | 1157 | } |
1158 | (void) BIO_ctrl_set_connected(sbio, 1, &peer); | 1158 | (void) BIO_ctrl_set_connected(sbio, 1, &peer); |
1159 | 1159 | ||
1160 | if (s_client_config.enable_timeouts) { | 1160 | if (cfg.enable_timeouts) { |
1161 | timeout.tv_sec = 0; | 1161 | timeout.tv_sec = 0; |
1162 | timeout.tv_usec = DGRAM_RCV_TIMEOUT; | 1162 | timeout.tv_usec = DGRAM_RCV_TIMEOUT; |
1163 | BIO_ctrl(sbio, BIO_CTRL_DGRAM_SET_RECV_TIMEOUT, 0, | 1163 | BIO_ctrl(sbio, BIO_CTRL_DGRAM_SET_RECV_TIMEOUT, 0, |
@@ -1168,35 +1168,35 @@ s_client_main(int argc, char **argv) | |||
1168 | BIO_ctrl(sbio, BIO_CTRL_DGRAM_SET_SEND_TIMEOUT, 0, | 1168 | BIO_ctrl(sbio, BIO_CTRL_DGRAM_SET_SEND_TIMEOUT, 0, |
1169 | &timeout); | 1169 | &timeout); |
1170 | } | 1170 | } |
1171 | if (s_client_config.socket_mtu > 28) { | 1171 | if (cfg.socket_mtu > 28) { |
1172 | SSL_set_options(con, SSL_OP_NO_QUERY_MTU); | 1172 | SSL_set_options(con, SSL_OP_NO_QUERY_MTU); |
1173 | SSL_set_mtu(con, s_client_config.socket_mtu - 28); | 1173 | SSL_set_mtu(con, cfg.socket_mtu - 28); |
1174 | } else | 1174 | } else |
1175 | /* want to do MTU discovery */ | 1175 | /* want to do MTU discovery */ |
1176 | BIO_ctrl(sbio, BIO_CTRL_DGRAM_MTU_DISCOVER, 0, NULL); | 1176 | BIO_ctrl(sbio, BIO_CTRL_DGRAM_MTU_DISCOVER, 0, NULL); |
1177 | } else | 1177 | } else |
1178 | sbio = BIO_new_socket(s, BIO_NOCLOSE); | 1178 | sbio = BIO_new_socket(s, BIO_NOCLOSE); |
1179 | 1179 | ||
1180 | if (s_client_config.nbio_test) { | 1180 | if (cfg.nbio_test) { |
1181 | BIO *test; | 1181 | BIO *test; |
1182 | 1182 | ||
1183 | test = BIO_new(BIO_f_nbio_test()); | 1183 | test = BIO_new(BIO_f_nbio_test()); |
1184 | sbio = BIO_push(test, sbio); | 1184 | sbio = BIO_push(test, sbio); |
1185 | } | 1185 | } |
1186 | if (s_client_config.debug) { | 1186 | if (cfg.debug) { |
1187 | SSL_set_debug(con, 1); | 1187 | SSL_set_debug(con, 1); |
1188 | BIO_set_callback(sbio, bio_dump_callback); | 1188 | BIO_set_callback(sbio, bio_dump_callback); |
1189 | BIO_set_callback_arg(sbio, (char *) bio_c_out); | 1189 | BIO_set_callback_arg(sbio, (char *) bio_c_out); |
1190 | } | 1190 | } |
1191 | if (s_client_config.msg) { | 1191 | if (cfg.msg) { |
1192 | SSL_set_msg_callback(con, msg_cb); | 1192 | SSL_set_msg_callback(con, msg_cb); |
1193 | SSL_set_msg_callback_arg(con, bio_c_out); | 1193 | SSL_set_msg_callback_arg(con, bio_c_out); |
1194 | } | 1194 | } |
1195 | if (s_client_config.tlsextdebug) { | 1195 | if (cfg.tlsextdebug) { |
1196 | SSL_set_tlsext_debug_callback(con, tlsext_cb); | 1196 | SSL_set_tlsext_debug_callback(con, tlsext_cb); |
1197 | SSL_set_tlsext_debug_arg(con, bio_c_out); | 1197 | SSL_set_tlsext_debug_arg(con, bio_c_out); |
1198 | } | 1198 | } |
1199 | if (s_client_config.status_req) { | 1199 | if (cfg.status_req) { |
1200 | SSL_set_tlsext_status_type(con, TLSEXT_STATUSTYPE_ocsp); | 1200 | SSL_set_tlsext_status_type(con, TLSEXT_STATUSTYPE_ocsp); |
1201 | SSL_CTX_set_tlsext_status_cb(ctx, ocsp_resp_cb); | 1201 | SSL_CTX_set_tlsext_status_cb(ctx, ocsp_resp_cb); |
1202 | SSL_CTX_set_tlsext_status_arg(ctx, bio_c_out); | 1202 | SSL_CTX_set_tlsext_status_arg(ctx, bio_c_out); |
@@ -1225,8 +1225,8 @@ s_client_main(int argc, char **argv) | |||
1225 | * push a buffering BIO into the chain that is removed again later on | 1225 | * push a buffering BIO into the chain that is removed again later on |
1226 | * to not disturb the rest of the s_client operation. | 1226 | * to not disturb the rest of the s_client operation. |
1227 | */ | 1227 | */ |
1228 | if (s_client_config.starttls_proto == PROTO_SMTP || | 1228 | if (cfg.starttls_proto == PROTO_SMTP || |
1229 | s_client_config.starttls_proto == PROTO_LMTP) { | 1229 | cfg.starttls_proto == PROTO_LMTP) { |
1230 | int foundit = 0; | 1230 | int foundit = 0; |
1231 | BIO *fbio = BIO_new(BIO_f_buffer()); | 1231 | BIO *fbio = BIO_new(BIO_f_buffer()); |
1232 | BIO_push(fbio, sbio); | 1232 | BIO_push(fbio, sbio); |
@@ -1237,7 +1237,7 @@ s_client_main(int argc, char **argv) | |||
1237 | while (mbuf_len > 3 && mbuf[3] == '-'); | 1237 | while (mbuf_len > 3 && mbuf[3] == '-'); |
1238 | /* STARTTLS command requires EHLO... */ | 1238 | /* STARTTLS command requires EHLO... */ |
1239 | BIO_printf(fbio, "%cHLO openssl.client.net\r\n", | 1239 | BIO_printf(fbio, "%cHLO openssl.client.net\r\n", |
1240 | s_client_config.starttls_proto == PROTO_SMTP ? 'E' : 'L'); | 1240 | cfg.starttls_proto == PROTO_SMTP ? 'E' : 'L'); |
1241 | (void) BIO_flush(fbio); | 1241 | (void) BIO_flush(fbio); |
1242 | /* wait for multi-line response to end EHLO SMTP response */ | 1242 | /* wait for multi-line response to end EHLO SMTP response */ |
1243 | do { | 1243 | do { |
@@ -1255,7 +1255,7 @@ s_client_main(int argc, char **argv) | |||
1255 | " try anyway...\n"); | 1255 | " try anyway...\n"); |
1256 | BIO_printf(sbio, "STARTTLS\r\n"); | 1256 | BIO_printf(sbio, "STARTTLS\r\n"); |
1257 | BIO_read(sbio, sbuf, BUFSIZZ); | 1257 | BIO_read(sbio, sbuf, BUFSIZZ); |
1258 | } else if (s_client_config.starttls_proto == PROTO_POP3) { | 1258 | } else if (cfg.starttls_proto == PROTO_POP3) { |
1259 | mbuf_len = BIO_read(sbio, mbuf, BUFSIZZ); | 1259 | mbuf_len = BIO_read(sbio, mbuf, BUFSIZZ); |
1260 | if (mbuf_len == -1) { | 1260 | if (mbuf_len == -1) { |
1261 | BIO_printf(bio_err, "BIO_read failed\n"); | 1261 | BIO_printf(bio_err, "BIO_read failed\n"); |
@@ -1263,7 +1263,7 @@ s_client_main(int argc, char **argv) | |||
1263 | } | 1263 | } |
1264 | BIO_printf(sbio, "STLS\r\n"); | 1264 | BIO_printf(sbio, "STLS\r\n"); |
1265 | BIO_read(sbio, sbuf, BUFSIZZ); | 1265 | BIO_read(sbio, sbuf, BUFSIZZ); |
1266 | } else if (s_client_config.starttls_proto == PROTO_IMAP) { | 1266 | } else if (cfg.starttls_proto == PROTO_IMAP) { |
1267 | int foundit = 0; | 1267 | int foundit = 0; |
1268 | BIO *fbio = BIO_new(BIO_f_buffer()); | 1268 | BIO *fbio = BIO_new(BIO_f_buffer()); |
1269 | BIO_push(fbio, sbio); | 1269 | BIO_push(fbio, sbio); |
@@ -1287,7 +1287,7 @@ s_client_main(int argc, char **argv) | |||
1287 | " try anyway...\n"); | 1287 | " try anyway...\n"); |
1288 | BIO_printf(sbio, ". STARTTLS\r\n"); | 1288 | BIO_printf(sbio, ". STARTTLS\r\n"); |
1289 | BIO_read(sbio, sbuf, BUFSIZZ); | 1289 | BIO_read(sbio, sbuf, BUFSIZZ); |
1290 | } else if (s_client_config.starttls_proto == PROTO_FTP) { | 1290 | } else if (cfg.starttls_proto == PROTO_FTP) { |
1291 | BIO *fbio = BIO_new(BIO_f_buffer()); | 1291 | BIO *fbio = BIO_new(BIO_f_buffer()); |
1292 | BIO_push(fbio, sbio); | 1292 | BIO_push(fbio, sbio); |
1293 | /* wait for multi-line response to end from FTP */ | 1293 | /* wait for multi-line response to end from FTP */ |
@@ -1300,13 +1300,13 @@ s_client_main(int argc, char **argv) | |||
1300 | BIO_free(fbio); | 1300 | BIO_free(fbio); |
1301 | BIO_printf(sbio, "AUTH TLS\r\n"); | 1301 | BIO_printf(sbio, "AUTH TLS\r\n"); |
1302 | BIO_read(sbio, sbuf, BUFSIZZ); | 1302 | BIO_read(sbio, sbuf, BUFSIZZ); |
1303 | } else if (s_client_config.starttls_proto == PROTO_XMPP) { | 1303 | } else if (cfg.starttls_proto == PROTO_XMPP) { |
1304 | int seen = 0; | 1304 | int seen = 0; |
1305 | BIO_printf(sbio, "<stream:stream " | 1305 | BIO_printf(sbio, "<stream:stream " |
1306 | "xmlns:stream='http://etherx.jabber.org/streams' " | 1306 | "xmlns:stream='http://etherx.jabber.org/streams' " |
1307 | "xmlns='jabber:client' to='%s' version='1.0'>", | 1307 | "xmlns='jabber:client' to='%s' version='1.0'>", |
1308 | s_client_config.xmpphost ? | 1308 | cfg.xmpphost ? |
1309 | s_client_config.xmpphost : s_client_config.host); | 1309 | cfg.xmpphost : cfg.host); |
1310 | seen = BIO_read(sbio, mbuf, BUFSIZZ); | 1310 | seen = BIO_read(sbio, mbuf, BUFSIZZ); |
1311 | 1311 | ||
1312 | if (seen <= 0) | 1312 | if (seen <= 0) |
@@ -1329,9 +1329,9 @@ s_client_main(int argc, char **argv) | |||
1329 | if (!strstr(sbuf, "<proceed")) | 1329 | if (!strstr(sbuf, "<proceed")) |
1330 | goto shut; | 1330 | goto shut; |
1331 | mbuf[0] = 0; | 1331 | mbuf[0] = 0; |
1332 | } else if (s_client_config.proxy != NULL) { | 1332 | } else if (cfg.proxy != NULL) { |
1333 | BIO_printf(sbio, "CONNECT %s HTTP/1.0\r\n\r\n", | 1333 | BIO_printf(sbio, "CONNECT %s HTTP/1.0\r\n\r\n", |
1334 | s_client_config.connect); | 1334 | cfg.connect); |
1335 | mbuf_len = BIO_read(sbio, mbuf, BUFSIZZ); | 1335 | mbuf_len = BIO_read(sbio, mbuf, BUFSIZZ); |
1336 | if (mbuf_len == -1) { | 1336 | if (mbuf_len == -1) { |
1337 | BIO_printf(bio_err, "BIO_read failed\n"); | 1337 | BIO_printf(bio_err, "BIO_read failed\n"); |
@@ -1353,9 +1353,9 @@ s_client_main(int argc, char **argv) | |||
1353 | tty_on = 1; | 1353 | tty_on = 1; |
1354 | if (in_init) { | 1354 | if (in_init) { |
1355 | in_init = 0; | 1355 | in_init = 0; |
1356 | if (s_client_config.sess_out) { | 1356 | if (cfg.sess_out) { |
1357 | BIO *stmp = BIO_new_file( | 1357 | BIO *stmp = BIO_new_file( |
1358 | s_client_config.sess_out, "w"); | 1358 | cfg.sess_out, "w"); |
1359 | if (stmp) { | 1359 | if (stmp) { |
1360 | PEM_write_bio_SSL_SESSION(stmp, | 1360 | PEM_write_bio_SSL_SESSION(stmp, |
1361 | SSL_get_session(con)); | 1361 | SSL_get_session(con)); |
@@ -1363,19 +1363,19 @@ s_client_main(int argc, char **argv) | |||
1363 | } else | 1363 | } else |
1364 | BIO_printf(bio_err, | 1364 | BIO_printf(bio_err, |
1365 | "Error writing session file %s\n", | 1365 | "Error writing session file %s\n", |
1366 | s_client_config.sess_out); | 1366 | cfg.sess_out); |
1367 | } | 1367 | } |
1368 | print_stuff(bio_c_out, con, full_log); | 1368 | print_stuff(bio_c_out, con, full_log); |
1369 | if (full_log > 0) | 1369 | if (full_log > 0) |
1370 | full_log--; | 1370 | full_log--; |
1371 | 1371 | ||
1372 | if (s_client_config.starttls_proto) { | 1372 | if (cfg.starttls_proto) { |
1373 | BIO_write(bio_err, mbuf, mbuf_len); | 1373 | BIO_write(bio_err, mbuf, mbuf_len); |
1374 | /* We don't need to know any more */ | 1374 | /* We don't need to know any more */ |
1375 | s_client_config.starttls_proto = PROTO_OFF; | 1375 | cfg.starttls_proto = PROTO_OFF; |
1376 | } | 1376 | } |
1377 | if (s_client_config.reconnect) { | 1377 | if (cfg.reconnect) { |
1378 | s_client_config.reconnect--; | 1378 | cfg.reconnect--; |
1379 | BIO_printf(bio_c_out, | 1379 | BIO_printf(bio_c_out, |
1380 | "drop connection and then reconnect\n"); | 1380 | "drop connection and then reconnect\n"); |
1381 | SSL_shutdown(con); | 1381 | SSL_shutdown(con); |
@@ -1516,7 +1516,7 @@ s_client_main(int argc, char **argv) | |||
1516 | } | 1516 | } |
1517 | } | 1517 | } |
1518 | #endif | 1518 | #endif |
1519 | if (s_client_config.peekaboo) { | 1519 | if (cfg.peekaboo) { |
1520 | k = p = SSL_peek(con, pbuf, 1024 /* BUFSIZZ */ ); | 1520 | k = p = SSL_peek(con, pbuf, 1024 /* BUFSIZZ */ ); |
1521 | pending = SSL_pending(con); | 1521 | pending = SSL_pending(con); |
1522 | if (SSL_get_error(con, p) == SSL_ERROR_NONE) { | 1522 | if (SSL_get_error(con, p) == SSL_ERROR_NONE) { |
@@ -1535,7 +1535,7 @@ s_client_main(int argc, char **argv) | |||
1535 | goto end; | 1535 | goto end; |
1536 | sbuf_off = 0; | 1536 | sbuf_off = 0; |
1537 | sbuf_len = k; | 1537 | sbuf_len = k; |
1538 | if (s_client_config.peekaboo) { | 1538 | if (cfg.peekaboo) { |
1539 | if (p != pending) { | 1539 | if (p != pending) { |
1540 | ret = -1; | 1540 | ret = -1; |
1541 | BIO_printf(bio_err, | 1541 | BIO_printf(bio_err, |
@@ -1594,7 +1594,7 @@ s_client_main(int argc, char **argv) | |||
1594 | BIO_printf(bio_err, "poll error"); | 1594 | BIO_printf(bio_err, "poll error"); |
1595 | goto shut; | 1595 | goto shut; |
1596 | } | 1596 | } |
1597 | if (s_client_config.crlf) { | 1597 | if (cfg.crlf) { |
1598 | int j, lf_num; | 1598 | int j, lf_num; |
1599 | 1599 | ||
1600 | i = read(fileno(stdin), cbuf, BUFSIZZ / 2); | 1600 | i = read(fileno(stdin), cbuf, BUFSIZZ / 2); |
@@ -1615,13 +1615,13 @@ s_client_main(int argc, char **argv) | |||
1615 | } else | 1615 | } else |
1616 | i = read(fileno(stdin), cbuf, BUFSIZZ); | 1616 | i = read(fileno(stdin), cbuf, BUFSIZZ); |
1617 | 1617 | ||
1618 | if ((!s_client_config.ign_eof) && | 1618 | if ((!cfg.ign_eof) && |
1619 | ((i <= 0) || (cbuf[0] == 'Q'))) { | 1619 | ((i <= 0) || (cbuf[0] == 'Q'))) { |
1620 | BIO_printf(bio_err, "DONE\n"); | 1620 | BIO_printf(bio_err, "DONE\n"); |
1621 | ret = 0; | 1621 | ret = 0; |
1622 | goto shut; | 1622 | goto shut; |
1623 | } | 1623 | } |
1624 | if ((!s_client_config.ign_eof) && (cbuf[0] == 'R')) { | 1624 | if ((!cfg.ign_eof) && (cbuf[0] == 'R')) { |
1625 | BIO_printf(bio_err, "RENEGOTIATING\n"); | 1625 | BIO_printf(bio_err, "RENEGOTIATING\n"); |
1626 | SSL_renegotiate(con); | 1626 | SSL_renegotiate(con); |
1627 | cbuf_len = 0; | 1627 | cbuf_len = 0; |
@@ -1644,7 +1644,7 @@ s_client_main(int argc, char **argv) | |||
1644 | close(SSL_get_fd(con)); | 1644 | close(SSL_get_fd(con)); |
1645 | end: | 1645 | end: |
1646 | if (con != NULL) { | 1646 | if (con != NULL) { |
1647 | if (s_client_config.prexit != 0) | 1647 | if (cfg.prexit != 0) |
1648 | print_stuff(bio_c_out, con, 1); | 1648 | print_stuff(bio_c_out, con, 1); |
1649 | SSL_free(con); | 1649 | SSL_free(con); |
1650 | } | 1650 | } |
@@ -1652,7 +1652,7 @@ s_client_main(int argc, char **argv) | |||
1652 | X509_free(cert); | 1652 | X509_free(cert); |
1653 | EVP_PKEY_free(key); | 1653 | EVP_PKEY_free(key); |
1654 | free(pass); | 1654 | free(pass); |
1655 | X509_VERIFY_PARAM_free(s_client_config.vpm); | 1655 | X509_VERIFY_PARAM_free(cfg.vpm); |
1656 | freezero(cbuf, BUFSIZZ); | 1656 | freezero(cbuf, BUFSIZZ); |
1657 | freezero(sbuf, BUFSIZZ); | 1657 | freezero(sbuf, BUFSIZZ); |
1658 | freezero(pbuf, BUFSIZZ); | 1658 | freezero(pbuf, BUFSIZZ); |
@@ -1692,7 +1692,7 @@ print_stuff(BIO *bio, SSL *s, int full) | |||
1692 | X509_NAME_oneline(X509_get_issuer_name( | 1692 | X509_NAME_oneline(X509_get_issuer_name( |
1693 | sk_X509_value(sk, i)), buf, sizeof buf); | 1693 | sk_X509_value(sk, i)), buf, sizeof buf); |
1694 | BIO_printf(bio, " i:%s\n", buf); | 1694 | BIO_printf(bio, " i:%s\n", buf); |
1695 | if (s_client_config.showcerts) | 1695 | if (cfg.showcerts) |
1696 | PEM_write_bio_X509(bio, | 1696 | PEM_write_bio_X509(bio, |
1697 | sk_X509_value(sk, i)); | 1697 | sk_X509_value(sk, i)); |
1698 | } | 1698 | } |
@@ -1701,7 +1701,7 @@ print_stuff(BIO *bio, SSL *s, int full) | |||
1701 | peer = SSL_get_peer_certificate(s); | 1701 | peer = SSL_get_peer_certificate(s); |
1702 | if (peer != NULL) { | 1702 | if (peer != NULL) { |
1703 | BIO_printf(bio, "Server certificate\n"); | 1703 | BIO_printf(bio, "Server certificate\n"); |
1704 | if (!(s_client_config.showcerts && got_a_chain)) { | 1704 | if (!(cfg.showcerts && got_a_chain)) { |
1705 | /* Redundant if we showed the whole chain */ | 1705 | /* Redundant if we showed the whole chain */ |
1706 | PEM_write_bio_X509(bio, peer); | 1706 | PEM_write_bio_X509(bio, peer); |
1707 | } | 1707 | } |
@@ -1820,23 +1820,23 @@ print_stuff(BIO *bio, SSL *s, int full) | |||
1820 | #endif | 1820 | #endif |
1821 | 1821 | ||
1822 | SSL_SESSION_print(bio, SSL_get_session(s)); | 1822 | SSL_SESSION_print(bio, SSL_get_session(s)); |
1823 | if (s_client_config.keymatexportlabel != NULL) { | 1823 | if (cfg.keymatexportlabel != NULL) { |
1824 | BIO_printf(bio, "Keying material exporter:\n"); | 1824 | BIO_printf(bio, "Keying material exporter:\n"); |
1825 | BIO_printf(bio, " Label: '%s'\n", | 1825 | BIO_printf(bio, " Label: '%s'\n", |
1826 | s_client_config.keymatexportlabel); | 1826 | cfg.keymatexportlabel); |
1827 | BIO_printf(bio, " Length: %i bytes\n", | 1827 | BIO_printf(bio, " Length: %i bytes\n", |
1828 | s_client_config.keymatexportlen); | 1828 | cfg.keymatexportlen); |
1829 | exportedkeymat = malloc(s_client_config.keymatexportlen); | 1829 | exportedkeymat = malloc(cfg.keymatexportlen); |
1830 | if (exportedkeymat != NULL) { | 1830 | if (exportedkeymat != NULL) { |
1831 | if (!SSL_export_keying_material(s, exportedkeymat, | 1831 | if (!SSL_export_keying_material(s, exportedkeymat, |
1832 | s_client_config.keymatexportlen, | 1832 | cfg.keymatexportlen, |
1833 | s_client_config.keymatexportlabel, | 1833 | cfg.keymatexportlabel, |
1834 | strlen(s_client_config.keymatexportlabel), | 1834 | strlen(cfg.keymatexportlabel), |
1835 | NULL, 0, 0)) { | 1835 | NULL, 0, 0)) { |
1836 | BIO_printf(bio, " Error\n"); | 1836 | BIO_printf(bio, " Error\n"); |
1837 | } else { | 1837 | } else { |
1838 | BIO_printf(bio, " Keying material: "); | 1838 | BIO_printf(bio, " Keying material: "); |
1839 | for (i = 0; i < s_client_config.keymatexportlen; i++) | 1839 | for (i = 0; i < cfg.keymatexportlen; i++) |
1840 | BIO_printf(bio, "%02X", | 1840 | BIO_printf(bio, "%02X", |
1841 | exportedkeymat[i]); | 1841 | exportedkeymat[i]); |
1842 | BIO_printf(bio, "\n"); | 1842 | BIO_printf(bio, "\n"); |
diff --git a/src/usr.bin/openssl/s_server.c b/src/usr.bin/openssl/s_server.c index adf98451ec..a7f6146c4c 100644 --- a/src/usr.bin/openssl/s_server.c +++ b/src/usr.bin/openssl/s_server.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: s_server.c,v 1.55 2022/11/11 17:07:39 joshua Exp $ */ | 1 | /* $OpenBSD: s_server.c,v 1.56 2023/03/06 14:32:06 tb 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 | * |
@@ -294,23 +294,23 @@ static struct { | |||
294 | int tlsextstatus; | 294 | int tlsextstatus; |
295 | X509_VERIFY_PARAM *vpm; | 295 | X509_VERIFY_PARAM *vpm; |
296 | int www; | 296 | int www; |
297 | } s_server_config; | 297 | } cfg; |
298 | 298 | ||
299 | static int | 299 | static int |
300 | s_server_opt_context(char *arg) | 300 | s_server_opt_context(char *arg) |
301 | { | 301 | { |
302 | s_server_config.context = (unsigned char *) arg; | 302 | cfg.context = (unsigned char *) arg; |
303 | return (0); | 303 | return (0); |
304 | } | 304 | } |
305 | 305 | ||
306 | static int | 306 | static int |
307 | s_server_opt_keymatexportlen(char *arg) | 307 | s_server_opt_keymatexportlen(char *arg) |
308 | { | 308 | { |
309 | s_server_config.keymatexportlen = strtonum(arg, 1, INT_MAX, | 309 | cfg.keymatexportlen = strtonum(arg, 1, INT_MAX, |
310 | &s_server_config.errstr); | 310 | &cfg.errstr); |
311 | if (s_server_config.errstr != NULL) { | 311 | if (cfg.errstr != NULL) { |
312 | BIO_printf(bio_err, "invalid argument %s: %s\n", | 312 | BIO_printf(bio_err, "invalid argument %s: %s\n", |
313 | arg, s_server_config.errstr); | 313 | arg, cfg.errstr); |
314 | return (1); | 314 | return (1); |
315 | } | 315 | } |
316 | return (0); | 316 | return (0); |
@@ -320,11 +320,11 @@ s_server_opt_keymatexportlen(char *arg) | |||
320 | static int | 320 | static int |
321 | s_server_opt_mtu(char *arg) | 321 | s_server_opt_mtu(char *arg) |
322 | { | 322 | { |
323 | s_server_config.socket_mtu = strtonum(arg, 0, LONG_MAX, | 323 | cfg.socket_mtu = strtonum(arg, 0, LONG_MAX, |
324 | &s_server_config.errstr); | 324 | &cfg.errstr); |
325 | if (s_server_config.errstr != NULL) { | 325 | if (cfg.errstr != NULL) { |
326 | BIO_printf(bio_err, "invalid argument %s: %s\n", | 326 | BIO_printf(bio_err, "invalid argument %s: %s\n", |
327 | arg, s_server_config.errstr); | 327 | arg, cfg.errstr); |
328 | return (1); | 328 | return (1); |
329 | } | 329 | } |
330 | return (0); | 330 | return (0); |
@@ -335,8 +335,8 @@ s_server_opt_mtu(char *arg) | |||
335 | static int | 335 | static int |
336 | s_server_opt_protocol_version_dtls(void) | 336 | s_server_opt_protocol_version_dtls(void) |
337 | { | 337 | { |
338 | s_server_config.meth = DTLS_server_method(); | 338 | cfg.meth = DTLS_server_method(); |
339 | s_server_config.socket_type = SOCK_DGRAM; | 339 | cfg.socket_type = SOCK_DGRAM; |
340 | return (0); | 340 | return (0); |
341 | } | 341 | } |
342 | #endif | 342 | #endif |
@@ -345,10 +345,10 @@ s_server_opt_protocol_version_dtls(void) | |||
345 | static int | 345 | static int |
346 | s_server_opt_protocol_version_dtls1(void) | 346 | s_server_opt_protocol_version_dtls1(void) |
347 | { | 347 | { |
348 | s_server_config.meth = DTLS_server_method(); | 348 | cfg.meth = DTLS_server_method(); |
349 | s_server_config.min_version = DTLS1_VERSION; | 349 | cfg.min_version = DTLS1_VERSION; |
350 | s_server_config.max_version = DTLS1_VERSION; | 350 | cfg.max_version = DTLS1_VERSION; |
351 | s_server_config.socket_type = SOCK_DGRAM; | 351 | cfg.socket_type = SOCK_DGRAM; |
352 | return (0); | 352 | return (0); |
353 | } | 353 | } |
354 | #endif | 354 | #endif |
@@ -357,10 +357,10 @@ s_server_opt_protocol_version_dtls1(void) | |||
357 | static int | 357 | static int |
358 | s_server_opt_protocol_version_dtls1_2(void) | 358 | s_server_opt_protocol_version_dtls1_2(void) |
359 | { | 359 | { |
360 | s_server_config.meth = DTLS_server_method(); | 360 | cfg.meth = DTLS_server_method(); |
361 | s_server_config.min_version = DTLS1_2_VERSION; | 361 | cfg.min_version = DTLS1_2_VERSION; |
362 | s_server_config.max_version = DTLS1_2_VERSION; | 362 | cfg.max_version = DTLS1_2_VERSION; |
363 | s_server_config.socket_type = SOCK_DGRAM; | 363 | cfg.socket_type = SOCK_DGRAM; |
364 | return (0); | 364 | return (0); |
365 | } | 365 | } |
366 | #endif | 366 | #endif |
@@ -368,47 +368,47 @@ s_server_opt_protocol_version_dtls1_2(void) | |||
368 | static int | 368 | static int |
369 | s_server_opt_protocol_version_tls1(void) | 369 | s_server_opt_protocol_version_tls1(void) |
370 | { | 370 | { |
371 | s_server_config.min_version = TLS1_VERSION; | 371 | cfg.min_version = TLS1_VERSION; |
372 | s_server_config.max_version = TLS1_VERSION; | 372 | cfg.max_version = TLS1_VERSION; |
373 | return (0); | 373 | return (0); |
374 | } | 374 | } |
375 | 375 | ||
376 | static int | 376 | static int |
377 | s_server_opt_protocol_version_tls1_1(void) | 377 | s_server_opt_protocol_version_tls1_1(void) |
378 | { | 378 | { |
379 | s_server_config.min_version = TLS1_1_VERSION; | 379 | cfg.min_version = TLS1_1_VERSION; |
380 | s_server_config.max_version = TLS1_1_VERSION; | 380 | cfg.max_version = TLS1_1_VERSION; |
381 | return (0); | 381 | return (0); |
382 | } | 382 | } |
383 | 383 | ||
384 | static int | 384 | static int |
385 | s_server_opt_protocol_version_tls1_2(void) | 385 | s_server_opt_protocol_version_tls1_2(void) |
386 | { | 386 | { |
387 | s_server_config.min_version = TLS1_2_VERSION; | 387 | cfg.min_version = TLS1_2_VERSION; |
388 | s_server_config.max_version = TLS1_2_VERSION; | 388 | cfg.max_version = TLS1_2_VERSION; |
389 | return (0); | 389 | return (0); |
390 | } | 390 | } |
391 | 391 | ||
392 | static int | 392 | static int |
393 | s_server_opt_protocol_version_tls1_3(void) | 393 | s_server_opt_protocol_version_tls1_3(void) |
394 | { | 394 | { |
395 | s_server_config.min_version = TLS1_3_VERSION; | 395 | cfg.min_version = TLS1_3_VERSION; |
396 | s_server_config.max_version = TLS1_3_VERSION; | 396 | cfg.max_version = TLS1_3_VERSION; |
397 | return (0); | 397 | return (0); |
398 | } | 398 | } |
399 | 399 | ||
400 | static int | 400 | static int |
401 | s_server_opt_nbio_test(void) | 401 | s_server_opt_nbio_test(void) |
402 | { | 402 | { |
403 | s_server_config.nbio = 1; | 403 | cfg.nbio = 1; |
404 | s_server_config.nbio_test = 1; | 404 | cfg.nbio_test = 1; |
405 | return (0); | 405 | return (0); |
406 | } | 406 | } |
407 | 407 | ||
408 | static int | 408 | static int |
409 | s_server_opt_port(char *arg) | 409 | s_server_opt_port(char *arg) |
410 | { | 410 | { |
411 | if (!extract_port(arg, &s_server_config.port)) | 411 | if (!extract_port(arg, &cfg.port)) |
412 | return (1); | 412 | return (1); |
413 | return (0); | 413 | return (0); |
414 | } | 414 | } |
@@ -416,12 +416,12 @@ s_server_opt_port(char *arg) | |||
416 | static int | 416 | static int |
417 | s_server_opt_status_timeout(char *arg) | 417 | s_server_opt_status_timeout(char *arg) |
418 | { | 418 | { |
419 | s_server_config.tlsextstatus = 1; | 419 | cfg.tlsextstatus = 1; |
420 | s_server_config.tlscstatp.timeout = strtonum(arg, 0, INT_MAX, | 420 | cfg.tlscstatp.timeout = strtonum(arg, 0, INT_MAX, |
421 | &s_server_config.errstr); | 421 | &cfg.errstr); |
422 | if (s_server_config.errstr != NULL) { | 422 | if (cfg.errstr != NULL) { |
423 | BIO_printf(bio_err, "invalid argument %s: %s\n", | 423 | BIO_printf(bio_err, "invalid argument %s: %s\n", |
424 | arg, s_server_config.errstr); | 424 | arg, cfg.errstr); |
425 | return (1); | 425 | return (1); |
426 | } | 426 | } |
427 | return (0); | 427 | return (0); |
@@ -430,10 +430,10 @@ s_server_opt_status_timeout(char *arg) | |||
430 | static int | 430 | static int |
431 | s_server_opt_status_url(char *arg) | 431 | s_server_opt_status_url(char *arg) |
432 | { | 432 | { |
433 | s_server_config.tlsextstatus = 1; | 433 | cfg.tlsextstatus = 1; |
434 | if (!OCSP_parse_url(arg, &s_server_config.tlscstatp.host, | 434 | if (!OCSP_parse_url(arg, &cfg.tlscstatp.host, |
435 | &s_server_config.tlscstatp.port, &s_server_config.tlscstatp.path, | 435 | &cfg.tlscstatp.port, &cfg.tlscstatp.path, |
436 | &s_server_config.tlscstatp.use_ssl)) { | 436 | &cfg.tlscstatp.use_ssl)) { |
437 | BIO_printf(bio_err, "Error parsing URL\n"); | 437 | BIO_printf(bio_err, "Error parsing URL\n"); |
438 | return (1); | 438 | return (1); |
439 | } | 439 | } |
@@ -443,20 +443,20 @@ s_server_opt_status_url(char *arg) | |||
443 | static int | 443 | static int |
444 | s_server_opt_status_verbose(void) | 444 | s_server_opt_status_verbose(void) |
445 | { | 445 | { |
446 | s_server_config.tlsextstatus = 1; | 446 | cfg.tlsextstatus = 1; |
447 | s_server_config.tlscstatp.verbose = 1; | 447 | cfg.tlscstatp.verbose = 1; |
448 | return (0); | 448 | return (0); |
449 | } | 449 | } |
450 | 450 | ||
451 | static int | 451 | static int |
452 | s_server_opt_verify(char *arg) | 452 | s_server_opt_verify(char *arg) |
453 | { | 453 | { |
454 | s_server_config.server_verify = SSL_VERIFY_PEER | | 454 | cfg.server_verify = SSL_VERIFY_PEER | |
455 | SSL_VERIFY_CLIENT_ONCE; | 455 | SSL_VERIFY_CLIENT_ONCE; |
456 | verify_depth = strtonum(arg, 0, INT_MAX, &s_server_config.errstr); | 456 | verify_depth = strtonum(arg, 0, INT_MAX, &cfg.errstr); |
457 | if (s_server_config.errstr != NULL) { | 457 | if (cfg.errstr != NULL) { |
458 | BIO_printf(bio_err, "invalid argument %s: %s\n", | 458 | BIO_printf(bio_err, "invalid argument %s: %s\n", |
459 | arg, s_server_config.errstr); | 459 | arg, cfg.errstr); |
460 | return (1); | 460 | return (1); |
461 | } | 461 | } |
462 | BIO_printf(bio_err, "verify depth is %d\n", verify_depth); | 462 | BIO_printf(bio_err, "verify depth is %d\n", verify_depth); |
@@ -466,12 +466,12 @@ s_server_opt_verify(char *arg) | |||
466 | static int | 466 | static int |
467 | s_server_opt_verify_fail(char *arg) | 467 | s_server_opt_verify_fail(char *arg) |
468 | { | 468 | { |
469 | s_server_config.server_verify = SSL_VERIFY_PEER | | 469 | cfg.server_verify = SSL_VERIFY_PEER | |
470 | SSL_VERIFY_FAIL_IF_NO_PEER_CERT | SSL_VERIFY_CLIENT_ONCE; | 470 | SSL_VERIFY_FAIL_IF_NO_PEER_CERT | SSL_VERIFY_CLIENT_ONCE; |
471 | verify_depth = strtonum(arg, 0, INT_MAX, &s_server_config.errstr); | 471 | verify_depth = strtonum(arg, 0, INT_MAX, &cfg.errstr); |
472 | if (s_server_config.errstr != NULL) { | 472 | if (cfg.errstr != NULL) { |
473 | BIO_printf(bio_err, "invalid argument %s: %s\n", | 473 | BIO_printf(bio_err, "invalid argument %s: %s\n", |
474 | arg, s_server_config.errstr); | 474 | arg, cfg.errstr); |
475 | return (1); | 475 | return (1); |
476 | } | 476 | } |
477 | BIO_printf(bio_err, "verify depth is %d, must return a certificate\n", | 477 | BIO_printf(bio_err, "verify depth is %d, must return a certificate\n", |
@@ -487,7 +487,7 @@ s_server_opt_verify_param(int argc, char **argv, int *argsused) | |||
487 | int badarg = 0; | 487 | int badarg = 0; |
488 | 488 | ||
489 | if (!args_verify(&pargs, &pargc, &badarg, bio_err, | 489 | if (!args_verify(&pargs, &pargc, &badarg, bio_err, |
490 | &s_server_config.vpm)) { | 490 | &cfg.vpm)) { |
491 | BIO_printf(bio_err, "unknown option %s\n", *argv); | 491 | BIO_printf(bio_err, "unknown option %s\n", *argv); |
492 | return (1); | 492 | return (1); |
493 | } | 493 | } |
@@ -520,27 +520,27 @@ static const struct option s_server_options[] = { | |||
520 | .desc = "Set the advertised protocols for the ALPN extension" | 520 | .desc = "Set the advertised protocols for the ALPN extension" |
521 | " (comma-separated list)", | 521 | " (comma-separated list)", |
522 | .type = OPTION_ARG, | 522 | .type = OPTION_ARG, |
523 | .opt.arg = &s_server_config.alpn_in, | 523 | .opt.arg = &cfg.alpn_in, |
524 | }, | 524 | }, |
525 | { | 525 | { |
526 | .name = "bugs", | 526 | .name = "bugs", |
527 | .desc = "Turn on SSL bug compatibility", | 527 | .desc = "Turn on SSL bug compatibility", |
528 | .type = OPTION_FLAG, | 528 | .type = OPTION_FLAG, |
529 | .opt.flag = &s_server_config.bugs, | 529 | .opt.flag = &cfg.bugs, |
530 | }, | 530 | }, |
531 | { | 531 | { |
532 | .name = "CAfile", | 532 | .name = "CAfile", |
533 | .argname = "file", | 533 | .argname = "file", |
534 | .desc = "PEM format file of CA certificates", | 534 | .desc = "PEM format file of CA certificates", |
535 | .type = OPTION_ARG, | 535 | .type = OPTION_ARG, |
536 | .opt.arg = &s_server_config.CAfile, | 536 | .opt.arg = &cfg.CAfile, |
537 | }, | 537 | }, |
538 | { | 538 | { |
539 | .name = "CApath", | 539 | .name = "CApath", |
540 | .argname = "directory", | 540 | .argname = "directory", |
541 | .desc = "PEM format directory of CA certificates", | 541 | .desc = "PEM format directory of CA certificates", |
542 | .type = OPTION_ARG, | 542 | .type = OPTION_ARG, |
543 | .opt.arg = &s_server_config.CApath, | 543 | .opt.arg = &cfg.CApath, |
544 | }, | 544 | }, |
545 | { | 545 | { |
546 | .name = "cert", | 546 | .name = "cert", |
@@ -548,7 +548,7 @@ static const struct option s_server_options[] = { | |||
548 | .desc = "Certificate file to use\n" | 548 | .desc = "Certificate file to use\n" |
549 | "(default is " TEST_CERT ")", | 549 | "(default is " TEST_CERT ")", |
550 | .type = OPTION_ARG, | 550 | .type = OPTION_ARG, |
551 | .opt.arg = &s_server_config.cert_file, | 551 | .opt.arg = &cfg.cert_file, |
552 | }, | 552 | }, |
553 | { | 553 | { |
554 | .name = "cert2", | 554 | .name = "cert2", |
@@ -556,20 +556,20 @@ static const struct option s_server_options[] = { | |||
556 | .desc = "Certificate file to use for servername\n" | 556 | .desc = "Certificate file to use for servername\n" |
557 | "(default is " TEST_CERT2 ")", | 557 | "(default is " TEST_CERT2 ")", |
558 | .type = OPTION_ARG, | 558 | .type = OPTION_ARG, |
559 | .opt.arg = &s_server_config.cert_file2, | 559 | .opt.arg = &cfg.cert_file2, |
560 | }, | 560 | }, |
561 | { | 561 | { |
562 | .name = "certform", | 562 | .name = "certform", |
563 | .argname = "fmt", | 563 | .argname = "fmt", |
564 | .desc = "Certificate format (PEM or DER) PEM default", | 564 | .desc = "Certificate format (PEM or DER) PEM default", |
565 | .type = OPTION_ARG_FORMAT, | 565 | .type = OPTION_ARG_FORMAT, |
566 | .opt.value = &s_server_config.cert_format, | 566 | .opt.value = &cfg.cert_format, |
567 | }, | 567 | }, |
568 | #ifndef OPENSSL_NO_DTLS | 568 | #ifndef OPENSSL_NO_DTLS |
569 | { | 569 | { |
570 | .name = "chain", | 570 | .name = "chain", |
571 | .type = OPTION_FLAG, | 571 | .type = OPTION_FLAG, |
572 | .opt.flag = &s_server_config.cert_chain, | 572 | .opt.flag = &cfg.cert_chain, |
573 | }, | 573 | }, |
574 | #endif | 574 | #endif |
575 | { | 575 | { |
@@ -577,7 +577,7 @@ static const struct option s_server_options[] = { | |||
577 | .argname = "list", | 577 | .argname = "list", |
578 | .desc = "List of ciphers to enable (see `openssl ciphers`)", | 578 | .desc = "List of ciphers to enable (see `openssl ciphers`)", |
579 | .type = OPTION_ARG, | 579 | .type = OPTION_ARG, |
580 | .opt.arg = &s_server_config.cipher, | 580 | .opt.arg = &cfg.cipher, |
581 | }, | 581 | }, |
582 | { | 582 | { |
583 | .name = "context", | 583 | .name = "context", |
@@ -590,55 +590,55 @@ static const struct option s_server_options[] = { | |||
590 | .name = "crlf", | 590 | .name = "crlf", |
591 | .desc = "Convert LF from terminal into CRLF", | 591 | .desc = "Convert LF from terminal into CRLF", |
592 | .type = OPTION_FLAG, | 592 | .type = OPTION_FLAG, |
593 | .opt.flag = &s_server_config.crlf, | 593 | .opt.flag = &cfg.crlf, |
594 | }, | 594 | }, |
595 | { | 595 | { |
596 | .name = "dcert", | 596 | .name = "dcert", |
597 | .argname = "file", | 597 | .argname = "file", |
598 | .desc = "Second certificate file to use (usually for DSA)", | 598 | .desc = "Second certificate file to use (usually for DSA)", |
599 | .type = OPTION_ARG, | 599 | .type = OPTION_ARG, |
600 | .opt.arg = &s_server_config.dcert_file, | 600 | .opt.arg = &cfg.dcert_file, |
601 | }, | 601 | }, |
602 | { | 602 | { |
603 | .name = "dcertform", | 603 | .name = "dcertform", |
604 | .argname = "fmt", | 604 | .argname = "fmt", |
605 | .desc = "Second certificate format (PEM or DER) PEM default", | 605 | .desc = "Second certificate format (PEM or DER) PEM default", |
606 | .type = OPTION_ARG_FORMAT, | 606 | .type = OPTION_ARG_FORMAT, |
607 | .opt.value = &s_server_config.dcert_format, | 607 | .opt.value = &cfg.dcert_format, |
608 | }, | 608 | }, |
609 | { | 609 | { |
610 | .name = "debug", | 610 | .name = "debug", |
611 | .desc = "Print more output", | 611 | .desc = "Print more output", |
612 | .type = OPTION_FLAG, | 612 | .type = OPTION_FLAG, |
613 | .opt.flag = &s_server_config.debug, | 613 | .opt.flag = &cfg.debug, |
614 | }, | 614 | }, |
615 | { | 615 | { |
616 | .name = "dhparam", | 616 | .name = "dhparam", |
617 | .argname = "file", | 617 | .argname = "file", |
618 | .desc = "DH parameter file to use, in cert file if not specified", | 618 | .desc = "DH parameter file to use, in cert file if not specified", |
619 | .type = OPTION_ARG, | 619 | .type = OPTION_ARG, |
620 | .opt.arg = &s_server_config.dhfile, | 620 | .opt.arg = &cfg.dhfile, |
621 | }, | 621 | }, |
622 | { | 622 | { |
623 | .name = "dkey", | 623 | .name = "dkey", |
624 | .argname = "file", | 624 | .argname = "file", |
625 | .desc = "Second private key file to use (usually for DSA)", | 625 | .desc = "Second private key file to use (usually for DSA)", |
626 | .type = OPTION_ARG, | 626 | .type = OPTION_ARG, |
627 | .opt.arg = &s_server_config.dkey_file, | 627 | .opt.arg = &cfg.dkey_file, |
628 | }, | 628 | }, |
629 | { | 629 | { |
630 | .name = "dkeyform", | 630 | .name = "dkeyform", |
631 | .argname = "fmt", | 631 | .argname = "fmt", |
632 | .desc = "Second key format (PEM or DER) PEM default", | 632 | .desc = "Second key format (PEM or DER) PEM default", |
633 | .type = OPTION_ARG_FORMAT, | 633 | .type = OPTION_ARG_FORMAT, |
634 | .opt.value = &s_server_config.dkey_format, | 634 | .opt.value = &cfg.dkey_format, |
635 | }, | 635 | }, |
636 | { | 636 | { |
637 | .name = "dpass", | 637 | .name = "dpass", |
638 | .argname = "arg", | 638 | .argname = "arg", |
639 | .desc = "Second private key file pass phrase source", | 639 | .desc = "Second private key file pass phrase source", |
640 | .type = OPTION_ARG, | 640 | .type = OPTION_ARG, |
641 | .opt.arg = &s_server_config.dpassarg, | 641 | .opt.arg = &cfg.dpassarg, |
642 | }, | 642 | }, |
643 | #ifndef OPENSSL_NO_DTLS | 643 | #ifndef OPENSSL_NO_DTLS |
644 | { | 644 | { |
@@ -669,13 +669,13 @@ static const struct option s_server_options[] = { | |||
669 | .argname = "list", | 669 | .argname = "list", |
670 | .desc = "Specify EC groups (colon-separated list)", | 670 | .desc = "Specify EC groups (colon-separated list)", |
671 | .type = OPTION_ARG, | 671 | .type = OPTION_ARG, |
672 | .opt.arg = &s_server_config.groups_in, | 672 | .opt.arg = &cfg.groups_in, |
673 | }, | 673 | }, |
674 | { | 674 | { |
675 | .name = "HTTP", | 675 | .name = "HTTP", |
676 | .desc = "Respond to a 'GET /<path> HTTP/1.0' with file ./<path>", | 676 | .desc = "Respond to a 'GET /<path> HTTP/1.0' with file ./<path>", |
677 | .type = OPTION_VALUE, | 677 | .type = OPTION_VALUE, |
678 | .opt.value = &s_server_config.www, | 678 | .opt.value = &cfg.www, |
679 | .value = 3, | 679 | .value = 3, |
680 | }, | 680 | }, |
681 | { | 681 | { |
@@ -683,7 +683,7 @@ static const struct option s_server_options[] = { | |||
683 | .argname = "arg", | 683 | .argname = "arg", |
684 | .desc = "Generate SSL/TLS session IDs prefixed by 'arg'", | 684 | .desc = "Generate SSL/TLS session IDs prefixed by 'arg'", |
685 | .type = OPTION_ARG, | 685 | .type = OPTION_ARG, |
686 | .opt.arg = &s_server_config.session_id_prefix, | 686 | .opt.arg = &cfg.session_id_prefix, |
687 | }, | 687 | }, |
688 | { | 688 | { |
689 | .name = "key", | 689 | .name = "key", |
@@ -691,7 +691,7 @@ static const struct option s_server_options[] = { | |||
691 | .desc = "Private Key file to use, in cert file if\n" | 691 | .desc = "Private Key file to use, in cert file if\n" |
692 | "not specified (default is " TEST_CERT ")", | 692 | "not specified (default is " TEST_CERT ")", |
693 | .type = OPTION_ARG, | 693 | .type = OPTION_ARG, |
694 | .opt.arg = &s_server_config.key_file, | 694 | .opt.arg = &cfg.key_file, |
695 | }, | 695 | }, |
696 | { | 696 | { |
697 | .name = "key2", | 697 | .name = "key2", |
@@ -699,21 +699,21 @@ static const struct option s_server_options[] = { | |||
699 | .desc = "Private Key file to use for servername, in cert file if\n" | 699 | .desc = "Private Key file to use for servername, in cert file if\n" |
700 | "not specified (default is " TEST_CERT2 ")", | 700 | "not specified (default is " TEST_CERT2 ")", |
701 | .type = OPTION_ARG, | 701 | .type = OPTION_ARG, |
702 | .opt.arg = &s_server_config.key_file2, | 702 | .opt.arg = &cfg.key_file2, |
703 | }, | 703 | }, |
704 | { | 704 | { |
705 | .name = "keyform", | 705 | .name = "keyform", |
706 | .argname = "fmt", | 706 | .argname = "fmt", |
707 | .desc = "Key format (PEM or DER) PEM default", | 707 | .desc = "Key format (PEM or DER) PEM default", |
708 | .type = OPTION_ARG_FORMAT, | 708 | .type = OPTION_ARG_FORMAT, |
709 | .opt.value = &s_server_config.key_format, | 709 | .opt.value = &cfg.key_format, |
710 | }, | 710 | }, |
711 | { | 711 | { |
712 | .name = "keymatexport", | 712 | .name = "keymatexport", |
713 | .argname = "label", | 713 | .argname = "label", |
714 | .desc = "Export keying material using label", | 714 | .desc = "Export keying material using label", |
715 | .type = OPTION_ARG, | 715 | .type = OPTION_ARG, |
716 | .opt.arg = &s_server_config.keymatexportlabel, | 716 | .opt.arg = &cfg.keymatexportlabel, |
717 | }, | 717 | }, |
718 | { | 718 | { |
719 | .name = "keymatexportlen", | 719 | .name = "keymatexportlen", |
@@ -730,7 +730,7 @@ static const struct option s_server_options[] = { | |||
730 | .name = "msg", | 730 | .name = "msg", |
731 | .desc = "Show protocol messages", | 731 | .desc = "Show protocol messages", |
732 | .type = OPTION_FLAG, | 732 | .type = OPTION_FLAG, |
733 | .opt.flag = &s_server_config.msg, | 733 | .opt.flag = &cfg.msg, |
734 | }, | 734 | }, |
735 | #ifndef OPENSSL_NO_DTLS | 735 | #ifndef OPENSSL_NO_DTLS |
736 | { | 736 | { |
@@ -746,19 +746,19 @@ static const struct option s_server_options[] = { | |||
746 | .argname = "num", | 746 | .argname = "num", |
747 | .desc = "Terminate after num connections", | 747 | .desc = "Terminate after num connections", |
748 | .type = OPTION_ARG_INT, | 748 | .type = OPTION_ARG_INT, |
749 | .opt.value = &s_server_config.naccept | 749 | .opt.value = &cfg.naccept |
750 | }, | 750 | }, |
751 | { | 751 | { |
752 | .name = "named_curve", | 752 | .name = "named_curve", |
753 | .argname = "arg", | 753 | .argname = "arg", |
754 | .type = OPTION_ARG, | 754 | .type = OPTION_ARG, |
755 | .opt.arg = &s_server_config.named_curve, | 755 | .opt.arg = &cfg.named_curve, |
756 | }, | 756 | }, |
757 | { | 757 | { |
758 | .name = "nbio", | 758 | .name = "nbio", |
759 | .desc = "Run with non-blocking I/O", | 759 | .desc = "Run with non-blocking I/O", |
760 | .type = OPTION_FLAG, | 760 | .type = OPTION_FLAG, |
761 | .opt.flag = &s_server_config.nbio, | 761 | .opt.flag = &cfg.nbio, |
762 | }, | 762 | }, |
763 | { | 763 | { |
764 | .name = "nbio_test", | 764 | .name = "nbio_test", |
@@ -770,78 +770,78 @@ static const struct option s_server_options[] = { | |||
770 | .name = "nextprotoneg", | 770 | .name = "nextprotoneg", |
771 | .argname = "arg", | 771 | .argname = "arg", |
772 | .type = OPTION_ARG, | 772 | .type = OPTION_ARG, |
773 | .opt.arg = &s_server_config.npn_in, /* Ignored. */ | 773 | .opt.arg = &cfg.npn_in, /* Ignored. */ |
774 | }, | 774 | }, |
775 | { | 775 | { |
776 | .name = "no_cache", | 776 | .name = "no_cache", |
777 | .desc = "Disable session cache", | 777 | .desc = "Disable session cache", |
778 | .type = OPTION_FLAG, | 778 | .type = OPTION_FLAG, |
779 | .opt.flag = &s_server_config.no_cache, | 779 | .opt.flag = &cfg.no_cache, |
780 | }, | 780 | }, |
781 | { | 781 | { |
782 | .name = "no_comp", | 782 | .name = "no_comp", |
783 | .desc = "Disable SSL/TLS compression", | 783 | .desc = "Disable SSL/TLS compression", |
784 | .type = OPTION_VALUE_OR, | 784 | .type = OPTION_VALUE_OR, |
785 | .opt.value = &s_server_config.off, | 785 | .opt.value = &cfg.off, |
786 | .value = SSL_OP_NO_COMPRESSION, | 786 | .value = SSL_OP_NO_COMPRESSION, |
787 | }, | 787 | }, |
788 | { | 788 | { |
789 | .name = "no_dhe", | 789 | .name = "no_dhe", |
790 | .desc = "Disable ephemeral DH", | 790 | .desc = "Disable ephemeral DH", |
791 | .type = OPTION_FLAG, | 791 | .type = OPTION_FLAG, |
792 | .opt.flag = &s_server_config.no_dhe, | 792 | .opt.flag = &cfg.no_dhe, |
793 | }, | 793 | }, |
794 | { | 794 | { |
795 | .name = "no_ecdhe", | 795 | .name = "no_ecdhe", |
796 | .desc = "Disable ephemeral ECDH", | 796 | .desc = "Disable ephemeral ECDH", |
797 | .type = OPTION_FLAG, | 797 | .type = OPTION_FLAG, |
798 | .opt.flag = &s_server_config.no_ecdhe, | 798 | .opt.flag = &cfg.no_ecdhe, |
799 | }, | 799 | }, |
800 | { | 800 | { |
801 | .name = "no_ticket", | 801 | .name = "no_ticket", |
802 | .desc = "Disable use of RFC4507bis session tickets", | 802 | .desc = "Disable use of RFC4507bis session tickets", |
803 | .type = OPTION_VALUE_OR, | 803 | .type = OPTION_VALUE_OR, |
804 | .opt.value = &s_server_config.off, | 804 | .opt.value = &cfg.off, |
805 | .value = SSL_OP_NO_TICKET, | 805 | .value = SSL_OP_NO_TICKET, |
806 | }, | 806 | }, |
807 | { | 807 | { |
808 | .name = "no_ssl2", | 808 | .name = "no_ssl2", |
809 | .type = OPTION_VALUE_OR, | 809 | .type = OPTION_VALUE_OR, |
810 | .opt.value = &s_server_config.off, | 810 | .opt.value = &cfg.off, |
811 | .value = SSL_OP_NO_SSLv2, | 811 | .value = SSL_OP_NO_SSLv2, |
812 | }, | 812 | }, |
813 | { | 813 | { |
814 | .name = "no_ssl3", | 814 | .name = "no_ssl3", |
815 | .type = OPTION_VALUE_OR, | 815 | .type = OPTION_VALUE_OR, |
816 | .opt.value = &s_server_config.off, | 816 | .opt.value = &cfg.off, |
817 | .value = SSL_OP_NO_SSLv3, | 817 | .value = SSL_OP_NO_SSLv3, |
818 | }, | 818 | }, |
819 | { | 819 | { |
820 | .name = "no_tls1", | 820 | .name = "no_tls1", |
821 | .desc = "Just disable TLSv1", | 821 | .desc = "Just disable TLSv1", |
822 | .type = OPTION_VALUE_OR, | 822 | .type = OPTION_VALUE_OR, |
823 | .opt.value = &s_server_config.off, | 823 | .opt.value = &cfg.off, |
824 | .value = SSL_OP_NO_TLSv1, | 824 | .value = SSL_OP_NO_TLSv1, |
825 | }, | 825 | }, |
826 | { | 826 | { |
827 | .name = "no_tls1_1", | 827 | .name = "no_tls1_1", |
828 | .desc = "Just disable TLSv1.1", | 828 | .desc = "Just disable TLSv1.1", |
829 | .type = OPTION_VALUE_OR, | 829 | .type = OPTION_VALUE_OR, |
830 | .opt.value = &s_server_config.off, | 830 | .opt.value = &cfg.off, |
831 | .value = SSL_OP_NO_TLSv1_1, | 831 | .value = SSL_OP_NO_TLSv1_1, |
832 | }, | 832 | }, |
833 | { | 833 | { |
834 | .name = "no_tls1_2", | 834 | .name = "no_tls1_2", |
835 | .desc = "Just disable TLSv1.2", | 835 | .desc = "Just disable TLSv1.2", |
836 | .type = OPTION_VALUE_OR, | 836 | .type = OPTION_VALUE_OR, |
837 | .opt.value = &s_server_config.off, | 837 | .opt.value = &cfg.off, |
838 | .value = SSL_OP_NO_TLSv1_2, | 838 | .value = SSL_OP_NO_TLSv1_2, |
839 | }, | 839 | }, |
840 | { | 840 | { |
841 | .name = "no_tls1_3", | 841 | .name = "no_tls1_3", |
842 | .desc = "Just disable TLSv1.3", | 842 | .desc = "Just disable TLSv1.3", |
843 | .type = OPTION_VALUE_OR, | 843 | .type = OPTION_VALUE_OR, |
844 | .opt.value = &s_server_config.off, | 844 | .opt.value = &cfg.off, |
845 | .value = SSL_OP_NO_TLSv1_3, | 845 | .value = SSL_OP_NO_TLSv1_3, |
846 | }, | 846 | }, |
847 | { | 847 | { |
@@ -852,14 +852,14 @@ static const struct option s_server_options[] = { | |||
852 | .name = "nocert", | 852 | .name = "nocert", |
853 | .desc = "Don't use any certificates (Anon-DH)", | 853 | .desc = "Don't use any certificates (Anon-DH)", |
854 | .type = OPTION_FLAG, | 854 | .type = OPTION_FLAG, |
855 | .opt.flag = &s_server_config.nocert, | 855 | .opt.flag = &cfg.nocert, |
856 | }, | 856 | }, |
857 | { | 857 | { |
858 | .name = "pass", | 858 | .name = "pass", |
859 | .argname = "arg", | 859 | .argname = "arg", |
860 | .desc = "Private key file pass phrase source", | 860 | .desc = "Private key file pass phrase source", |
861 | .type = OPTION_ARG, | 861 | .type = OPTION_ARG, |
862 | .opt.arg = &s_server_config.passarg, | 862 | .opt.arg = &cfg.passarg, |
863 | }, | 863 | }, |
864 | { | 864 | { |
865 | .name = "port", | 865 | .name = "port", |
@@ -871,40 +871,40 @@ static const struct option s_server_options[] = { | |||
871 | .name = "quiet", | 871 | .name = "quiet", |
872 | .desc = "Inhibit printing of session and certificate information", | 872 | .desc = "Inhibit printing of session and certificate information", |
873 | .type = OPTION_FLAG, | 873 | .type = OPTION_FLAG, |
874 | .opt.flag = &s_server_config.quiet, | 874 | .opt.flag = &cfg.quiet, |
875 | }, | 875 | }, |
876 | { | 876 | { |
877 | .name = "servername", | 877 | .name = "servername", |
878 | .argname = "name", | 878 | .argname = "name", |
879 | .desc = "Servername for HostName TLS extension", | 879 | .desc = "Servername for HostName TLS extension", |
880 | .type = OPTION_ARG, | 880 | .type = OPTION_ARG, |
881 | .opt.arg = &s_server_config.tlsextcbp.servername, | 881 | .opt.arg = &cfg.tlsextcbp.servername, |
882 | }, | 882 | }, |
883 | { | 883 | { |
884 | .name = "servername_fatal", | 884 | .name = "servername_fatal", |
885 | .desc = "On mismatch send fatal alert (default warning alert)", | 885 | .desc = "On mismatch send fatal alert (default warning alert)", |
886 | .type = OPTION_VALUE, | 886 | .type = OPTION_VALUE, |
887 | .opt.value = &s_server_config.tlsextcbp.extension_error, | 887 | .opt.value = &cfg.tlsextcbp.extension_error, |
888 | .value = SSL_TLSEXT_ERR_ALERT_FATAL, | 888 | .value = SSL_TLSEXT_ERR_ALERT_FATAL, |
889 | }, | 889 | }, |
890 | { | 890 | { |
891 | .name = "serverpref", | 891 | .name = "serverpref", |
892 | .desc = "Use server's cipher preferences", | 892 | .desc = "Use server's cipher preferences", |
893 | .type = OPTION_VALUE_OR, | 893 | .type = OPTION_VALUE_OR, |
894 | .opt.value = &s_server_config.off, | 894 | .opt.value = &cfg.off, |
895 | .value = SSL_OP_CIPHER_SERVER_PREFERENCE, | 895 | .value = SSL_OP_CIPHER_SERVER_PREFERENCE, |
896 | }, | 896 | }, |
897 | { | 897 | { |
898 | .name = "state", | 898 | .name = "state", |
899 | .desc = "Print the SSL states", | 899 | .desc = "Print the SSL states", |
900 | .type = OPTION_FLAG, | 900 | .type = OPTION_FLAG, |
901 | .opt.flag = &s_server_config.state, | 901 | .opt.flag = &cfg.state, |
902 | }, | 902 | }, |
903 | { | 903 | { |
904 | .name = "status", | 904 | .name = "status", |
905 | .desc = "Respond to certificate status requests", | 905 | .desc = "Respond to certificate status requests", |
906 | .type = OPTION_FLAG, | 906 | .type = OPTION_FLAG, |
907 | .opt.flag = &s_server_config.tlsextstatus, | 907 | .opt.flag = &cfg.tlsextstatus, |
908 | }, | 908 | }, |
909 | { | 909 | { |
910 | .name = "status_timeout", | 910 | .name = "status_timeout", |
@@ -931,7 +931,7 @@ static const struct option s_server_options[] = { | |||
931 | .name = "timeout", | 931 | .name = "timeout", |
932 | .desc = "Enable timeouts", | 932 | .desc = "Enable timeouts", |
933 | .type = OPTION_FLAG, | 933 | .type = OPTION_FLAG, |
934 | .opt.flag = &s_server_config.enable_timeouts, | 934 | .opt.flag = &cfg.enable_timeouts, |
935 | }, | 935 | }, |
936 | #endif | 936 | #endif |
937 | { | 937 | { |
@@ -962,7 +962,7 @@ static const struct option s_server_options[] = { | |||
962 | .name = "tlsextdebug", | 962 | .name = "tlsextdebug", |
963 | .desc = "Hex dump of all TLS extensions received", | 963 | .desc = "Hex dump of all TLS extensions received", |
964 | .type = OPTION_FLAG, | 964 | .type = OPTION_FLAG, |
965 | .opt.flag = &s_server_config.tlsextdebug, | 965 | .opt.flag = &cfg.tlsextdebug, |
966 | }, | 966 | }, |
967 | #ifndef OPENSSL_NO_SRTP | 967 | #ifndef OPENSSL_NO_SRTP |
968 | { | 968 | { |
@@ -970,7 +970,7 @@ static const struct option s_server_options[] = { | |||
970 | .argname = "profiles", | 970 | .argname = "profiles", |
971 | .desc = "Offer SRTP key management with a colon-separated profile list", | 971 | .desc = "Offer SRTP key management with a colon-separated profile list", |
972 | .type = OPTION_ARG, | 972 | .type = OPTION_ARG, |
973 | .opt.arg = &s_server_config.srtp_profiles, | 973 | .opt.arg = &cfg.srtp_profiles, |
974 | }, | 974 | }, |
975 | #endif | 975 | #endif |
976 | { | 976 | { |
@@ -997,14 +997,14 @@ static const struct option s_server_options[] = { | |||
997 | .name = "WWW", | 997 | .name = "WWW", |
998 | .desc = "Respond to a 'GET /<path> HTTP/1.0' with file ./<path>", | 998 | .desc = "Respond to a 'GET /<path> HTTP/1.0' with file ./<path>", |
999 | .type = OPTION_VALUE, | 999 | .type = OPTION_VALUE, |
1000 | .opt.value = &s_server_config.www, | 1000 | .opt.value = &cfg.www, |
1001 | .value = 2, | 1001 | .value = 2, |
1002 | }, | 1002 | }, |
1003 | { | 1003 | { |
1004 | .name = "www", | 1004 | .name = "www", |
1005 | .desc = "Respond to a 'GET /' with a status page", | 1005 | .desc = "Respond to a 'GET /' with a status page", |
1006 | .type = OPTION_VALUE, | 1006 | .type = OPTION_VALUE, |
1007 | .opt.value = &s_server_config.www, | 1007 | .opt.value = &cfg.www, |
1008 | .value = 1, | 1008 | .value = 1, |
1009 | }, | 1009 | }, |
1010 | { | 1010 | { |
@@ -1020,24 +1020,24 @@ static void | |||
1020 | s_server_init(void) | 1020 | s_server_init(void) |
1021 | { | 1021 | { |
1022 | accept_socket = -1; | 1022 | accept_socket = -1; |
1023 | s_server_config.cipher = NULL; | 1023 | cfg.cipher = NULL; |
1024 | s_server_config.server_verify = SSL_VERIFY_NONE; | 1024 | cfg.server_verify = SSL_VERIFY_NONE; |
1025 | s_server_config.dcert_file = NULL; | 1025 | cfg.dcert_file = NULL; |
1026 | s_server_config.dkey_file = NULL; | 1026 | cfg.dkey_file = NULL; |
1027 | s_server_config.cert_file = TEST_CERT; | 1027 | cfg.cert_file = TEST_CERT; |
1028 | s_server_config.key_file = NULL; | 1028 | cfg.key_file = NULL; |
1029 | s_server_config.cert_file2 = TEST_CERT2; | 1029 | cfg.cert_file2 = TEST_CERT2; |
1030 | s_server_config.key_file2 = NULL; | 1030 | cfg.key_file2 = NULL; |
1031 | ctx2 = NULL; | 1031 | ctx2 = NULL; |
1032 | s_server_config.nbio = 0; | 1032 | cfg.nbio = 0; |
1033 | s_server_config.nbio_test = 0; | 1033 | cfg.nbio_test = 0; |
1034 | ctx = NULL; | 1034 | ctx = NULL; |
1035 | s_server_config.www = 0; | 1035 | cfg.www = 0; |
1036 | 1036 | ||
1037 | bio_s_out = NULL; | 1037 | bio_s_out = NULL; |
1038 | s_server_config.debug = 0; | 1038 | cfg.debug = 0; |
1039 | s_server_config.msg = 0; | 1039 | cfg.msg = 0; |
1040 | s_server_config.quiet = 0; | 1040 | cfg.quiet = 0; |
1041 | } | 1041 | } |
1042 | 1042 | ||
1043 | static void | 1043 | static void |
@@ -1086,21 +1086,21 @@ s_server_main(int argc, char *argv[]) | |||
1086 | exit(1); | 1086 | exit(1); |
1087 | } | 1087 | } |
1088 | 1088 | ||
1089 | memset(&s_server_config, 0, sizeof(s_server_config)); | 1089 | memset(&cfg, 0, sizeof(cfg)); |
1090 | s_server_config.keymatexportlen = 20; | 1090 | cfg.keymatexportlen = 20; |
1091 | s_server_config.meth = TLS_server_method(); | 1091 | cfg.meth = TLS_server_method(); |
1092 | s_server_config.naccept = -1; | 1092 | cfg.naccept = -1; |
1093 | s_server_config.port = PORT; | 1093 | cfg.port = PORT; |
1094 | s_server_config.cert_file = TEST_CERT; | 1094 | cfg.cert_file = TEST_CERT; |
1095 | s_server_config.cert_file2 = TEST_CERT2; | 1095 | cfg.cert_file2 = TEST_CERT2; |
1096 | s_server_config.cert_format = FORMAT_PEM; | 1096 | cfg.cert_format = FORMAT_PEM; |
1097 | s_server_config.dcert_format = FORMAT_PEM; | 1097 | cfg.dcert_format = FORMAT_PEM; |
1098 | s_server_config.dkey_format = FORMAT_PEM; | 1098 | cfg.dkey_format = FORMAT_PEM; |
1099 | s_server_config.key_format = FORMAT_PEM; | 1099 | cfg.key_format = FORMAT_PEM; |
1100 | s_server_config.server_verify = SSL_VERIFY_NONE; | 1100 | cfg.server_verify = SSL_VERIFY_NONE; |
1101 | s_server_config.socket_type = SOCK_STREAM; | 1101 | cfg.socket_type = SOCK_STREAM; |
1102 | s_server_config.tlscstatp.timeout = -1; | 1102 | cfg.tlscstatp.timeout = -1; |
1103 | s_server_config.tlsextcbp.extension_error = | 1103 | cfg.tlsextcbp.extension_error = |
1104 | SSL_TLSEXT_ERR_ALERT_WARNING; | 1104 | SSL_TLSEXT_ERR_ALERT_WARNING; |
1105 | 1105 | ||
1106 | local_argc = argc; | 1106 | local_argc = argc; |
@@ -1111,47 +1111,47 @@ s_server_main(int argc, char *argv[]) | |||
1111 | verify_depth = 0; | 1111 | verify_depth = 0; |
1112 | 1112 | ||
1113 | if (options_parse(argc, argv, s_server_options, NULL, NULL) != 0) { | 1113 | if (options_parse(argc, argv, s_server_options, NULL, NULL) != 0) { |
1114 | if (s_server_config.errstr == NULL) | 1114 | if (cfg.errstr == NULL) |
1115 | sv_usage(); | 1115 | sv_usage(); |
1116 | goto end; | 1116 | goto end; |
1117 | } | 1117 | } |
1118 | 1118 | ||
1119 | if (!app_passwd(bio_err, s_server_config.passarg, | 1119 | if (!app_passwd(bio_err, cfg.passarg, |
1120 | s_server_config.dpassarg, &pass, &dpass)) { | 1120 | cfg.dpassarg, &pass, &dpass)) { |
1121 | BIO_printf(bio_err, "Error getting password\n"); | 1121 | BIO_printf(bio_err, "Error getting password\n"); |
1122 | goto end; | 1122 | goto end; |
1123 | } | 1123 | } |
1124 | if (s_server_config.key_file == NULL) | 1124 | if (cfg.key_file == NULL) |
1125 | s_server_config.key_file = s_server_config.cert_file; | 1125 | cfg.key_file = cfg.cert_file; |
1126 | if (s_server_config.key_file2 == NULL) | 1126 | if (cfg.key_file2 == NULL) |
1127 | s_server_config.key_file2 = s_server_config.cert_file2; | 1127 | cfg.key_file2 = cfg.cert_file2; |
1128 | 1128 | ||
1129 | if (s_server_config.nocert == 0) { | 1129 | if (cfg.nocert == 0) { |
1130 | s_key = load_key(bio_err, s_server_config.key_file, | 1130 | s_key = load_key(bio_err, cfg.key_file, |
1131 | s_server_config.key_format, 0, pass, | 1131 | cfg.key_format, 0, pass, |
1132 | "server certificate private key file"); | 1132 | "server certificate private key file"); |
1133 | if (!s_key) { | 1133 | if (!s_key) { |
1134 | ERR_print_errors(bio_err); | 1134 | ERR_print_errors(bio_err); |
1135 | goto end; | 1135 | goto end; |
1136 | } | 1136 | } |
1137 | s_cert = load_cert(bio_err, s_server_config.cert_file, | 1137 | s_cert = load_cert(bio_err, cfg.cert_file, |
1138 | s_server_config.cert_format, | 1138 | cfg.cert_format, |
1139 | NULL, "server certificate file"); | 1139 | NULL, "server certificate file"); |
1140 | 1140 | ||
1141 | if (!s_cert) { | 1141 | if (!s_cert) { |
1142 | ERR_print_errors(bio_err); | 1142 | ERR_print_errors(bio_err); |
1143 | goto end; | 1143 | goto end; |
1144 | } | 1144 | } |
1145 | if (s_server_config.tlsextcbp.servername) { | 1145 | if (cfg.tlsextcbp.servername) { |
1146 | s_key2 = load_key(bio_err, s_server_config.key_file2, | 1146 | s_key2 = load_key(bio_err, cfg.key_file2, |
1147 | s_server_config.key_format, 0, pass, | 1147 | cfg.key_format, 0, pass, |
1148 | "second server certificate private key file"); | 1148 | "second server certificate private key file"); |
1149 | if (!s_key2) { | 1149 | if (!s_key2) { |
1150 | ERR_print_errors(bio_err); | 1150 | ERR_print_errors(bio_err); |
1151 | goto end; | 1151 | goto end; |
1152 | } | 1152 | } |
1153 | s_cert2 = load_cert(bio_err, s_server_config.cert_file2, | 1153 | s_cert2 = load_cert(bio_err, cfg.cert_file2, |
1154 | s_server_config.cert_format, | 1154 | cfg.cert_format, |
1155 | NULL, "second server certificate file"); | 1155 | NULL, "second server certificate file"); |
1156 | 1156 | ||
1157 | if (!s_cert2) { | 1157 | if (!s_cert2) { |
@@ -1161,29 +1161,29 @@ s_server_main(int argc, char *argv[]) | |||
1161 | } | 1161 | } |
1162 | } | 1162 | } |
1163 | alpn_ctx.data = NULL; | 1163 | alpn_ctx.data = NULL; |
1164 | if (s_server_config.alpn_in) { | 1164 | if (cfg.alpn_in) { |
1165 | unsigned short len; | 1165 | unsigned short len; |
1166 | alpn_ctx.data = next_protos_parse(&len, | 1166 | alpn_ctx.data = next_protos_parse(&len, |
1167 | s_server_config.alpn_in); | 1167 | cfg.alpn_in); |
1168 | if (alpn_ctx.data == NULL) | 1168 | if (alpn_ctx.data == NULL) |
1169 | goto end; | 1169 | goto end; |
1170 | alpn_ctx.len = len; | 1170 | alpn_ctx.len = len; |
1171 | } | 1171 | } |
1172 | 1172 | ||
1173 | if (s_server_config.dcert_file) { | 1173 | if (cfg.dcert_file) { |
1174 | 1174 | ||
1175 | if (s_server_config.dkey_file == NULL) | 1175 | if (cfg.dkey_file == NULL) |
1176 | s_server_config.dkey_file = s_server_config.dcert_file; | 1176 | cfg.dkey_file = cfg.dcert_file; |
1177 | 1177 | ||
1178 | s_dkey = load_key(bio_err, s_server_config.dkey_file, | 1178 | s_dkey = load_key(bio_err, cfg.dkey_file, |
1179 | s_server_config.dkey_format, | 1179 | cfg.dkey_format, |
1180 | 0, dpass, "second certificate private key file"); | 1180 | 0, dpass, "second certificate private key file"); |
1181 | if (!s_dkey) { | 1181 | if (!s_dkey) { |
1182 | ERR_print_errors(bio_err); | 1182 | ERR_print_errors(bio_err); |
1183 | goto end; | 1183 | goto end; |
1184 | } | 1184 | } |
1185 | s_dcert = load_cert(bio_err, s_server_config.dcert_file, | 1185 | s_dcert = load_cert(bio_err, cfg.dcert_file, |
1186 | s_server_config.dcert_format, | 1186 | cfg.dcert_format, |
1187 | NULL, "second server certificate file"); | 1187 | NULL, "second server certificate file"); |
1188 | 1188 | ||
1189 | if (!s_dcert) { | 1189 | if (!s_dcert) { |
@@ -1192,23 +1192,23 @@ s_server_main(int argc, char *argv[]) | |||
1192 | } | 1192 | } |
1193 | } | 1193 | } |
1194 | if (bio_s_out == NULL) { | 1194 | if (bio_s_out == NULL) { |
1195 | if (s_server_config.quiet && !s_server_config.debug && | 1195 | if (cfg.quiet && !cfg.debug && |
1196 | !s_server_config.msg) { | 1196 | !cfg.msg) { |
1197 | bio_s_out = BIO_new(BIO_s_null()); | 1197 | bio_s_out = BIO_new(BIO_s_null()); |
1198 | } else { | 1198 | } else { |
1199 | if (bio_s_out == NULL) | 1199 | if (bio_s_out == NULL) |
1200 | bio_s_out = BIO_new_fp(stdout, BIO_NOCLOSE); | 1200 | bio_s_out = BIO_new_fp(stdout, BIO_NOCLOSE); |
1201 | } | 1201 | } |
1202 | } | 1202 | } |
1203 | if (s_server_config.nocert) { | 1203 | if (cfg.nocert) { |
1204 | s_server_config.cert_file = NULL; | 1204 | cfg.cert_file = NULL; |
1205 | s_server_config.key_file = NULL; | 1205 | cfg.key_file = NULL; |
1206 | s_server_config.dcert_file = NULL; | 1206 | cfg.dcert_file = NULL; |
1207 | s_server_config.dkey_file = NULL; | 1207 | cfg.dkey_file = NULL; |
1208 | s_server_config.cert_file2 = NULL; | 1208 | cfg.cert_file2 = NULL; |
1209 | s_server_config.key_file2 = NULL; | 1209 | cfg.key_file2 = NULL; |
1210 | } | 1210 | } |
1211 | ctx = SSL_CTX_new(s_server_config.meth); | 1211 | ctx = SSL_CTX_new(cfg.meth); |
1212 | if (ctx == NULL) { | 1212 | if (ctx == NULL) { |
1213 | ERR_print_errors(bio_err); | 1213 | ERR_print_errors(bio_err); |
1214 | goto end; | 1214 | goto end; |
@@ -1216,16 +1216,16 @@ s_server_main(int argc, char *argv[]) | |||
1216 | 1216 | ||
1217 | SSL_CTX_clear_mode(ctx, SSL_MODE_AUTO_RETRY); | 1217 | SSL_CTX_clear_mode(ctx, SSL_MODE_AUTO_RETRY); |
1218 | 1218 | ||
1219 | if (!SSL_CTX_set_min_proto_version(ctx, s_server_config.min_version)) | 1219 | if (!SSL_CTX_set_min_proto_version(ctx, cfg.min_version)) |
1220 | goto end; | 1220 | goto end; |
1221 | if (!SSL_CTX_set_max_proto_version(ctx, s_server_config.max_version)) | 1221 | if (!SSL_CTX_set_max_proto_version(ctx, cfg.max_version)) |
1222 | goto end; | 1222 | goto end; |
1223 | 1223 | ||
1224 | if (s_server_config.session_id_prefix) { | 1224 | if (cfg.session_id_prefix) { |
1225 | if (strlen(s_server_config.session_id_prefix) >= 32) | 1225 | if (strlen(cfg.session_id_prefix) >= 32) |
1226 | BIO_printf(bio_err, | 1226 | BIO_printf(bio_err, |
1227 | "warning: id_prefix is too long, only one new session will be possible\n"); | 1227 | "warning: id_prefix is too long, only one new session will be possible\n"); |
1228 | else if (strlen(s_server_config.session_id_prefix) >= 16) | 1228 | else if (strlen(cfg.session_id_prefix) >= 16) |
1229 | BIO_printf(bio_err, | 1229 | BIO_printf(bio_err, |
1230 | "warning: id_prefix is too long if you use SSLv2\n"); | 1230 | "warning: id_prefix is too long if you use SSLv2\n"); |
1231 | if (!SSL_CTX_set_generate_session_id(ctx, generate_session_id)) { | 1231 | if (!SSL_CTX_set_generate_session_id(ctx, generate_session_id)) { |
@@ -1234,58 +1234,58 @@ s_server_main(int argc, char *argv[]) | |||
1234 | goto end; | 1234 | goto end; |
1235 | } | 1235 | } |
1236 | BIO_printf(bio_err, "id_prefix '%s' set.\n", | 1236 | BIO_printf(bio_err, "id_prefix '%s' set.\n", |
1237 | s_server_config.session_id_prefix); | 1237 | cfg.session_id_prefix); |
1238 | } | 1238 | } |
1239 | SSL_CTX_set_quiet_shutdown(ctx, 1); | 1239 | SSL_CTX_set_quiet_shutdown(ctx, 1); |
1240 | if (s_server_config.bugs) | 1240 | if (cfg.bugs) |
1241 | SSL_CTX_set_options(ctx, SSL_OP_ALL); | 1241 | SSL_CTX_set_options(ctx, SSL_OP_ALL); |
1242 | SSL_CTX_set_options(ctx, s_server_config.off); | 1242 | SSL_CTX_set_options(ctx, cfg.off); |
1243 | 1243 | ||
1244 | if (s_server_config.state) | 1244 | if (cfg.state) |
1245 | SSL_CTX_set_info_callback(ctx, apps_ssl_info_callback); | 1245 | SSL_CTX_set_info_callback(ctx, apps_ssl_info_callback); |
1246 | if (s_server_config.no_cache) | 1246 | if (cfg.no_cache) |
1247 | SSL_CTX_set_session_cache_mode(ctx, SSL_SESS_CACHE_OFF); | 1247 | SSL_CTX_set_session_cache_mode(ctx, SSL_SESS_CACHE_OFF); |
1248 | else | 1248 | else |
1249 | SSL_CTX_sess_set_cache_size(ctx, 128); | 1249 | SSL_CTX_sess_set_cache_size(ctx, 128); |
1250 | 1250 | ||
1251 | #ifndef OPENSSL_NO_SRTP | 1251 | #ifndef OPENSSL_NO_SRTP |
1252 | if (s_server_config.srtp_profiles != NULL) | 1252 | if (cfg.srtp_profiles != NULL) |
1253 | SSL_CTX_set_tlsext_use_srtp(ctx, s_server_config.srtp_profiles); | 1253 | SSL_CTX_set_tlsext_use_srtp(ctx, cfg.srtp_profiles); |
1254 | #endif | 1254 | #endif |
1255 | 1255 | ||
1256 | if ((!SSL_CTX_load_verify_locations(ctx, s_server_config.CAfile, | 1256 | if ((!SSL_CTX_load_verify_locations(ctx, cfg.CAfile, |
1257 | s_server_config.CApath)) || | 1257 | cfg.CApath)) || |
1258 | (!SSL_CTX_set_default_verify_paths(ctx))) { | 1258 | (!SSL_CTX_set_default_verify_paths(ctx))) { |
1259 | /* BIO_printf(bio_err,"X509_load_verify_locations\n"); */ | 1259 | /* BIO_printf(bio_err,"X509_load_verify_locations\n"); */ |
1260 | ERR_print_errors(bio_err); | 1260 | ERR_print_errors(bio_err); |
1261 | /* goto end; */ | 1261 | /* goto end; */ |
1262 | } | 1262 | } |
1263 | if (s_server_config.vpm) | 1263 | if (cfg.vpm) |
1264 | SSL_CTX_set1_param(ctx, s_server_config.vpm); | 1264 | SSL_CTX_set1_param(ctx, cfg.vpm); |
1265 | 1265 | ||
1266 | if (s_cert2) { | 1266 | if (s_cert2) { |
1267 | ctx2 = SSL_CTX_new(s_server_config.meth); | 1267 | ctx2 = SSL_CTX_new(cfg.meth); |
1268 | if (ctx2 == NULL) { | 1268 | if (ctx2 == NULL) { |
1269 | ERR_print_errors(bio_err); | 1269 | ERR_print_errors(bio_err); |
1270 | goto end; | 1270 | goto end; |
1271 | } | 1271 | } |
1272 | 1272 | ||
1273 | if (!SSL_CTX_set_min_proto_version(ctx2, | 1273 | if (!SSL_CTX_set_min_proto_version(ctx2, |
1274 | s_server_config.min_version)) | 1274 | cfg.min_version)) |
1275 | goto end; | 1275 | goto end; |
1276 | if (!SSL_CTX_set_max_proto_version(ctx2, | 1276 | if (!SSL_CTX_set_max_proto_version(ctx2, |
1277 | s_server_config.max_version)) | 1277 | cfg.max_version)) |
1278 | goto end; | 1278 | goto end; |
1279 | SSL_CTX_clear_mode(ctx2, SSL_MODE_AUTO_RETRY); | 1279 | SSL_CTX_clear_mode(ctx2, SSL_MODE_AUTO_RETRY); |
1280 | } | 1280 | } |
1281 | if (ctx2) { | 1281 | if (ctx2) { |
1282 | BIO_printf(bio_s_out, "Setting secondary ctx parameters\n"); | 1282 | BIO_printf(bio_s_out, "Setting secondary ctx parameters\n"); |
1283 | 1283 | ||
1284 | if (s_server_config.session_id_prefix) { | 1284 | if (cfg.session_id_prefix) { |
1285 | if (strlen(s_server_config.session_id_prefix) >= 32) | 1285 | if (strlen(cfg.session_id_prefix) >= 32) |
1286 | BIO_printf(bio_err, | 1286 | BIO_printf(bio_err, |
1287 | "warning: id_prefix is too long, only one new session will be possible\n"); | 1287 | "warning: id_prefix is too long, only one new session will be possible\n"); |
1288 | else if (strlen(s_server_config.session_id_prefix) >= 16) | 1288 | else if (strlen(cfg.session_id_prefix) >= 16) |
1289 | BIO_printf(bio_err, | 1289 | BIO_printf(bio_err, |
1290 | "warning: id_prefix is too long if you use SSLv2\n"); | 1290 | "warning: id_prefix is too long if you use SSLv2\n"); |
1291 | if (!SSL_CTX_set_generate_session_id(ctx2, | 1291 | if (!SSL_CTX_set_generate_session_id(ctx2, |
@@ -1296,48 +1296,48 @@ s_server_main(int argc, char *argv[]) | |||
1296 | goto end; | 1296 | goto end; |
1297 | } | 1297 | } |
1298 | BIO_printf(bio_err, "id_prefix '%s' set.\n", | 1298 | BIO_printf(bio_err, "id_prefix '%s' set.\n", |
1299 | s_server_config.session_id_prefix); | 1299 | cfg.session_id_prefix); |
1300 | } | 1300 | } |
1301 | SSL_CTX_set_quiet_shutdown(ctx2, 1); | 1301 | SSL_CTX_set_quiet_shutdown(ctx2, 1); |
1302 | if (s_server_config.bugs) | 1302 | if (cfg.bugs) |
1303 | SSL_CTX_set_options(ctx2, SSL_OP_ALL); | 1303 | SSL_CTX_set_options(ctx2, SSL_OP_ALL); |
1304 | SSL_CTX_set_options(ctx2, s_server_config.off); | 1304 | SSL_CTX_set_options(ctx2, cfg.off); |
1305 | 1305 | ||
1306 | if (s_server_config.state) | 1306 | if (cfg.state) |
1307 | SSL_CTX_set_info_callback(ctx2, apps_ssl_info_callback); | 1307 | SSL_CTX_set_info_callback(ctx2, apps_ssl_info_callback); |
1308 | 1308 | ||
1309 | if (s_server_config.no_cache) | 1309 | if (cfg.no_cache) |
1310 | SSL_CTX_set_session_cache_mode(ctx2, SSL_SESS_CACHE_OFF); | 1310 | SSL_CTX_set_session_cache_mode(ctx2, SSL_SESS_CACHE_OFF); |
1311 | else | 1311 | else |
1312 | SSL_CTX_sess_set_cache_size(ctx2, 128); | 1312 | SSL_CTX_sess_set_cache_size(ctx2, 128); |
1313 | 1313 | ||
1314 | if ((!SSL_CTX_load_verify_locations(ctx2, | 1314 | if ((!SSL_CTX_load_verify_locations(ctx2, |
1315 | s_server_config.CAfile, s_server_config.CApath)) || | 1315 | cfg.CAfile, cfg.CApath)) || |
1316 | (!SSL_CTX_set_default_verify_paths(ctx2))) { | 1316 | (!SSL_CTX_set_default_verify_paths(ctx2))) { |
1317 | ERR_print_errors(bio_err); | 1317 | ERR_print_errors(bio_err); |
1318 | } | 1318 | } |
1319 | if (s_server_config.vpm) | 1319 | if (cfg.vpm) |
1320 | SSL_CTX_set1_param(ctx2, s_server_config.vpm); | 1320 | SSL_CTX_set1_param(ctx2, cfg.vpm); |
1321 | } | 1321 | } |
1322 | if (alpn_ctx.data) | 1322 | if (alpn_ctx.data) |
1323 | SSL_CTX_set_alpn_select_cb(ctx, alpn_cb, &alpn_ctx); | 1323 | SSL_CTX_set_alpn_select_cb(ctx, alpn_cb, &alpn_ctx); |
1324 | 1324 | ||
1325 | if (s_server_config.groups_in != NULL) { | 1325 | if (cfg.groups_in != NULL) { |
1326 | if (SSL_CTX_set1_groups_list(ctx, s_server_config.groups_in) != 1) { | 1326 | if (SSL_CTX_set1_groups_list(ctx, cfg.groups_in) != 1) { |
1327 | BIO_printf(bio_err, "Failed to set groups '%s'\n", | 1327 | BIO_printf(bio_err, "Failed to set groups '%s'\n", |
1328 | s_server_config.groups_in); | 1328 | cfg.groups_in); |
1329 | goto end; | 1329 | goto end; |
1330 | } | 1330 | } |
1331 | } | 1331 | } |
1332 | 1332 | ||
1333 | #ifndef OPENSSL_NO_DH | 1333 | #ifndef OPENSSL_NO_DH |
1334 | if (!s_server_config.no_dhe) { | 1334 | if (!cfg.no_dhe) { |
1335 | DH *dh = NULL; | 1335 | DH *dh = NULL; |
1336 | 1336 | ||
1337 | if (s_server_config.dhfile) | 1337 | if (cfg.dhfile) |
1338 | dh = load_dh_param(s_server_config.dhfile); | 1338 | dh = load_dh_param(cfg.dhfile); |
1339 | else if (s_server_config.cert_file) | 1339 | else if (cfg.cert_file) |
1340 | dh = load_dh_param(s_server_config.cert_file); | 1340 | dh = load_dh_param(cfg.cert_file); |
1341 | 1341 | ||
1342 | if (dh != NULL) | 1342 | if (dh != NULL) |
1343 | BIO_printf(bio_s_out, "Setting temp DH parameters\n"); | 1343 | BIO_printf(bio_s_out, "Setting temp DH parameters\n"); |
@@ -1356,12 +1356,12 @@ s_server_main(int argc, char *argv[]) | |||
1356 | } | 1356 | } |
1357 | 1357 | ||
1358 | if (ctx2) { | 1358 | if (ctx2) { |
1359 | if (!s_server_config.dhfile) { | 1359 | if (!cfg.dhfile) { |
1360 | DH *dh2 = NULL; | 1360 | DH *dh2 = NULL; |
1361 | 1361 | ||
1362 | if (s_server_config.cert_file2 != NULL) | 1362 | if (cfg.cert_file2 != NULL) |
1363 | dh2 = load_dh_param( | 1363 | dh2 = load_dh_param( |
1364 | s_server_config.cert_file2); | 1364 | cfg.cert_file2); |
1365 | if (dh2 != NULL) { | 1365 | if (dh2 != NULL) { |
1366 | BIO_printf(bio_s_out, | 1366 | BIO_printf(bio_s_out, |
1367 | "Setting temp DH parameters\n"); | 1367 | "Setting temp DH parameters\n"); |
@@ -1385,18 +1385,18 @@ s_server_main(int argc, char *argv[]) | |||
1385 | } | 1385 | } |
1386 | #endif | 1386 | #endif |
1387 | 1387 | ||
1388 | if (!s_server_config.no_ecdhe && s_server_config.named_curve != NULL) { | 1388 | if (!cfg.no_ecdhe && cfg.named_curve != NULL) { |
1389 | EC_KEY *ecdh = NULL; | 1389 | EC_KEY *ecdh = NULL; |
1390 | int nid; | 1390 | int nid; |
1391 | 1391 | ||
1392 | if ((nid = OBJ_sn2nid(s_server_config.named_curve)) == 0) { | 1392 | if ((nid = OBJ_sn2nid(cfg.named_curve)) == 0) { |
1393 | BIO_printf(bio_err, "unknown curve name (%s)\n", | 1393 | BIO_printf(bio_err, "unknown curve name (%s)\n", |
1394 | s_server_config.named_curve); | 1394 | cfg.named_curve); |
1395 | goto end; | 1395 | goto end; |
1396 | } | 1396 | } |
1397 | if ((ecdh = EC_KEY_new_by_curve_name(nid)) == NULL) { | 1397 | if ((ecdh = EC_KEY_new_by_curve_name(nid)) == NULL) { |
1398 | BIO_printf(bio_err, "unable to create curve (%s)\n", | 1398 | BIO_printf(bio_err, "unable to create curve (%s)\n", |
1399 | s_server_config.named_curve); | 1399 | cfg.named_curve); |
1400 | goto end; | 1400 | goto end; |
1401 | } | 1401 | } |
1402 | BIO_printf(bio_s_out, "Setting temp ECDH parameters\n"); | 1402 | BIO_printf(bio_s_out, "Setting temp ECDH parameters\n"); |
@@ -1417,20 +1417,20 @@ s_server_main(int argc, char *argv[]) | |||
1417 | goto end; | 1417 | goto end; |
1418 | } | 1418 | } |
1419 | 1419 | ||
1420 | if (s_server_config.cipher != NULL) { | 1420 | if (cfg.cipher != NULL) { |
1421 | if (!SSL_CTX_set_cipher_list(ctx, s_server_config.cipher)) { | 1421 | if (!SSL_CTX_set_cipher_list(ctx, cfg.cipher)) { |
1422 | BIO_printf(bio_err, "error setting cipher list\n"); | 1422 | BIO_printf(bio_err, "error setting cipher list\n"); |
1423 | ERR_print_errors(bio_err); | 1423 | ERR_print_errors(bio_err); |
1424 | goto end; | 1424 | goto end; |
1425 | } | 1425 | } |
1426 | if (ctx2 && !SSL_CTX_set_cipher_list(ctx2, | 1426 | if (ctx2 && !SSL_CTX_set_cipher_list(ctx2, |
1427 | s_server_config.cipher)) { | 1427 | cfg.cipher)) { |
1428 | BIO_printf(bio_err, "error setting cipher list\n"); | 1428 | BIO_printf(bio_err, "error setting cipher list\n"); |
1429 | ERR_print_errors(bio_err); | 1429 | ERR_print_errors(bio_err); |
1430 | goto end; | 1430 | goto end; |
1431 | } | 1431 | } |
1432 | } | 1432 | } |
1433 | SSL_CTX_set_verify(ctx, s_server_config.server_verify, verify_callback); | 1433 | SSL_CTX_set_verify(ctx, cfg.server_verify, verify_callback); |
1434 | SSL_CTX_set_session_id_context(ctx, | 1434 | SSL_CTX_set_session_id_context(ctx, |
1435 | (void *) &s_server_session_id_context, | 1435 | (void *) &s_server_session_id_context, |
1436 | sizeof s_server_session_id_context); | 1436 | sizeof s_server_session_id_context); |
@@ -1440,38 +1440,38 @@ s_server_main(int argc, char *argv[]) | |||
1440 | SSL_CTX_set_cookie_verify_cb(ctx, verify_cookie_callback); | 1440 | SSL_CTX_set_cookie_verify_cb(ctx, verify_cookie_callback); |
1441 | 1441 | ||
1442 | if (ctx2) { | 1442 | if (ctx2) { |
1443 | SSL_CTX_set_verify(ctx2, s_server_config.server_verify, | 1443 | SSL_CTX_set_verify(ctx2, cfg.server_verify, |
1444 | verify_callback); | 1444 | verify_callback); |
1445 | SSL_CTX_set_session_id_context(ctx2, | 1445 | SSL_CTX_set_session_id_context(ctx2, |
1446 | (void *) &s_server_session_id_context, | 1446 | (void *) &s_server_session_id_context, |
1447 | sizeof s_server_session_id_context); | 1447 | sizeof s_server_session_id_context); |
1448 | 1448 | ||
1449 | s_server_config.tlsextcbp.biodebug = bio_s_out; | 1449 | cfg.tlsextcbp.biodebug = bio_s_out; |
1450 | SSL_CTX_set_tlsext_servername_callback(ctx2, ssl_servername_cb); | 1450 | SSL_CTX_set_tlsext_servername_callback(ctx2, ssl_servername_cb); |
1451 | SSL_CTX_set_tlsext_servername_arg(ctx2, | 1451 | SSL_CTX_set_tlsext_servername_arg(ctx2, |
1452 | &s_server_config.tlsextcbp); | 1452 | &cfg.tlsextcbp); |
1453 | SSL_CTX_set_tlsext_servername_callback(ctx, ssl_servername_cb); | 1453 | SSL_CTX_set_tlsext_servername_callback(ctx, ssl_servername_cb); |
1454 | SSL_CTX_set_tlsext_servername_arg(ctx, | 1454 | SSL_CTX_set_tlsext_servername_arg(ctx, |
1455 | &s_server_config.tlsextcbp); | 1455 | &cfg.tlsextcbp); |
1456 | } | 1456 | } |
1457 | 1457 | ||
1458 | if (s_server_config.CAfile != NULL) { | 1458 | if (cfg.CAfile != NULL) { |
1459 | SSL_CTX_set_client_CA_list(ctx, | 1459 | SSL_CTX_set_client_CA_list(ctx, |
1460 | SSL_load_client_CA_file(s_server_config.CAfile)); | 1460 | SSL_load_client_CA_file(cfg.CAfile)); |
1461 | if (ctx2) | 1461 | if (ctx2) |
1462 | SSL_CTX_set_client_CA_list(ctx2, | 1462 | SSL_CTX_set_client_CA_list(ctx2, |
1463 | SSL_load_client_CA_file(s_server_config.CAfile)); | 1463 | SSL_load_client_CA_file(cfg.CAfile)); |
1464 | } | 1464 | } |
1465 | BIO_printf(bio_s_out, "ACCEPT\n"); | 1465 | BIO_printf(bio_s_out, "ACCEPT\n"); |
1466 | (void) BIO_flush(bio_s_out); | 1466 | (void) BIO_flush(bio_s_out); |
1467 | if (s_server_config.www) | 1467 | if (cfg.www) |
1468 | do_server(s_server_config.port, s_server_config.socket_type, | 1468 | do_server(cfg.port, cfg.socket_type, |
1469 | &accept_socket, www_body, s_server_config.context, | 1469 | &accept_socket, www_body, cfg.context, |
1470 | s_server_config.naccept); | 1470 | cfg.naccept); |
1471 | else | 1471 | else |
1472 | do_server(s_server_config.port, s_server_config.socket_type, | 1472 | do_server(cfg.port, cfg.socket_type, |
1473 | &accept_socket, sv_body, s_server_config.context, | 1473 | &accept_socket, sv_body, cfg.context, |
1474 | s_server_config.naccept); | 1474 | cfg.naccept); |
1475 | print_stats(bio_s_out, ctx); | 1475 | print_stats(bio_s_out, ctx); |
1476 | ret = 0; | 1476 | ret = 0; |
1477 | end: | 1477 | end: |
@@ -1482,10 +1482,10 @@ s_server_main(int argc, char *argv[]) | |||
1482 | EVP_PKEY_free(s_dkey); | 1482 | EVP_PKEY_free(s_dkey); |
1483 | free(pass); | 1483 | free(pass); |
1484 | free(dpass); | 1484 | free(dpass); |
1485 | X509_VERIFY_PARAM_free(s_server_config.vpm); | 1485 | X509_VERIFY_PARAM_free(cfg.vpm); |
1486 | free(s_server_config.tlscstatp.host); | 1486 | free(cfg.tlscstatp.host); |
1487 | free(s_server_config.tlscstatp.port); | 1487 | free(cfg.tlscstatp.port); |
1488 | free(s_server_config.tlscstatp.path); | 1488 | free(cfg.tlscstatp.path); |
1489 | SSL_CTX_free(ctx2); | 1489 | SSL_CTX_free(ctx2); |
1490 | X509_free(s_cert2); | 1490 | X509_free(s_cert2); |
1491 | EVP_PKEY_free(s_key2); | 1491 | EVP_PKEY_free(s_key2); |
@@ -1543,8 +1543,8 @@ sv_body(int s, unsigned char *context) | |||
1543 | BIO_printf(bio_err, "out of memory\n"); | 1543 | BIO_printf(bio_err, "out of memory\n"); |
1544 | goto err; | 1544 | goto err; |
1545 | } | 1545 | } |
1546 | if (s_server_config.nbio) { | 1546 | if (cfg.nbio) { |
1547 | if (!s_server_config.quiet) | 1547 | if (!cfg.quiet) |
1548 | BIO_printf(bio_err, "turning on non blocking io\n"); | 1548 | BIO_printf(bio_err, "turning on non blocking io\n"); |
1549 | if (!BIO_socket_nbio(s, 1)) | 1549 | if (!BIO_socket_nbio(s, 1)) |
1550 | ERR_print_errors(bio_err); | 1550 | ERR_print_errors(bio_err); |
@@ -1552,15 +1552,15 @@ sv_body(int s, unsigned char *context) | |||
1552 | 1552 | ||
1553 | if (con == NULL) { | 1553 | if (con == NULL) { |
1554 | con = SSL_new(ctx); | 1554 | con = SSL_new(ctx); |
1555 | if (s_server_config.tlsextdebug) { | 1555 | if (cfg.tlsextdebug) { |
1556 | SSL_set_tlsext_debug_callback(con, tlsext_cb); | 1556 | SSL_set_tlsext_debug_callback(con, tlsext_cb); |
1557 | SSL_set_tlsext_debug_arg(con, bio_s_out); | 1557 | SSL_set_tlsext_debug_arg(con, bio_s_out); |
1558 | } | 1558 | } |
1559 | if (s_server_config.tlsextstatus) { | 1559 | if (cfg.tlsextstatus) { |
1560 | SSL_CTX_set_tlsext_status_cb(ctx, cert_status_cb); | 1560 | SSL_CTX_set_tlsext_status_cb(ctx, cert_status_cb); |
1561 | s_server_config.tlscstatp.err = bio_err; | 1561 | cfg.tlscstatp.err = bio_err; |
1562 | SSL_CTX_set_tlsext_status_arg(ctx, | 1562 | SSL_CTX_set_tlsext_status_arg(ctx, |
1563 | &s_server_config.tlscstatp); | 1563 | &cfg.tlscstatp); |
1564 | } | 1564 | } |
1565 | if (context) | 1565 | if (context) |
1566 | SSL_set_session_id_context(con, context, | 1566 | SSL_set_session_id_context(con, context, |
@@ -1571,7 +1571,7 @@ sv_body(int s, unsigned char *context) | |||
1571 | if (SSL_is_dtls(con)) { | 1571 | if (SSL_is_dtls(con)) { |
1572 | sbio = BIO_new_dgram(s, BIO_NOCLOSE); | 1572 | sbio = BIO_new_dgram(s, BIO_NOCLOSE); |
1573 | 1573 | ||
1574 | if (s_server_config.enable_timeouts) { | 1574 | if (cfg.enable_timeouts) { |
1575 | timeout.tv_sec = 0; | 1575 | timeout.tv_sec = 0; |
1576 | timeout.tv_usec = DGRAM_RCV_TIMEOUT; | 1576 | timeout.tv_usec = DGRAM_RCV_TIMEOUT; |
1577 | BIO_ctrl(sbio, BIO_CTRL_DGRAM_SET_RECV_TIMEOUT, 0, | 1577 | BIO_ctrl(sbio, BIO_CTRL_DGRAM_SET_RECV_TIMEOUT, 0, |
@@ -1582,9 +1582,9 @@ sv_body(int s, unsigned char *context) | |||
1582 | BIO_ctrl(sbio, BIO_CTRL_DGRAM_SET_SEND_TIMEOUT, 0, | 1582 | BIO_ctrl(sbio, BIO_CTRL_DGRAM_SET_SEND_TIMEOUT, 0, |
1583 | &timeout); | 1583 | &timeout); |
1584 | } | 1584 | } |
1585 | if (s_server_config.socket_mtu > 28) { | 1585 | if (cfg.socket_mtu > 28) { |
1586 | SSL_set_options(con, SSL_OP_NO_QUERY_MTU); | 1586 | SSL_set_options(con, SSL_OP_NO_QUERY_MTU); |
1587 | SSL_set_mtu(con, s_server_config.socket_mtu - 28); | 1587 | SSL_set_mtu(con, cfg.socket_mtu - 28); |
1588 | } else | 1588 | } else |
1589 | /* want to do MTU discovery */ | 1589 | /* want to do MTU discovery */ |
1590 | BIO_ctrl(sbio, BIO_CTRL_DGRAM_MTU_DISCOVER, 0, NULL); | 1590 | BIO_ctrl(sbio, BIO_CTRL_DGRAM_MTU_DISCOVER, 0, NULL); |
@@ -1594,7 +1594,7 @@ sv_body(int s, unsigned char *context) | |||
1594 | } else | 1594 | } else |
1595 | sbio = BIO_new_socket(s, BIO_NOCLOSE); | 1595 | sbio = BIO_new_socket(s, BIO_NOCLOSE); |
1596 | 1596 | ||
1597 | if (s_server_config.nbio_test) { | 1597 | if (cfg.nbio_test) { |
1598 | BIO *test; | 1598 | BIO *test; |
1599 | 1599 | ||
1600 | test = BIO_new(BIO_f_nbio_test()); | 1600 | test = BIO_new(BIO_f_nbio_test()); |
@@ -1605,16 +1605,16 @@ sv_body(int s, unsigned char *context) | |||
1605 | SSL_set_accept_state(con); | 1605 | SSL_set_accept_state(con); |
1606 | /* SSL_set_fd(con,s); */ | 1606 | /* SSL_set_fd(con,s); */ |
1607 | 1607 | ||
1608 | if (s_server_config.debug) { | 1608 | if (cfg.debug) { |
1609 | SSL_set_debug(con, 1); | 1609 | SSL_set_debug(con, 1); |
1610 | BIO_set_callback(SSL_get_rbio(con), bio_dump_callback); | 1610 | BIO_set_callback(SSL_get_rbio(con), bio_dump_callback); |
1611 | BIO_set_callback_arg(SSL_get_rbio(con), (char *) bio_s_out); | 1611 | BIO_set_callback_arg(SSL_get_rbio(con), (char *) bio_s_out); |
1612 | } | 1612 | } |
1613 | if (s_server_config.msg) { | 1613 | if (cfg.msg) { |
1614 | SSL_set_msg_callback(con, msg_cb); | 1614 | SSL_set_msg_callback(con, msg_cb); |
1615 | SSL_set_msg_callback_arg(con, bio_s_out); | 1615 | SSL_set_msg_callback_arg(con, bio_s_out); |
1616 | } | 1616 | } |
1617 | if (s_server_config.tlsextdebug) { | 1617 | if (cfg.tlsextdebug) { |
1618 | SSL_set_tlsext_debug_callback(con, tlsext_cb); | 1618 | SSL_set_tlsext_debug_callback(con, tlsext_cb); |
1619 | SSL_set_tlsext_debug_arg(con, bio_s_out); | 1619 | SSL_set_tlsext_debug_arg(con, bio_s_out); |
1620 | } | 1620 | } |
@@ -1660,7 +1660,7 @@ sv_body(int s, unsigned char *context) | |||
1660 | } | 1660 | } |
1661 | } | 1661 | } |
1662 | if (read_from_terminal) { | 1662 | if (read_from_terminal) { |
1663 | if (s_server_config.crlf) { | 1663 | if (cfg.crlf) { |
1664 | int j, lf_num; | 1664 | int j, lf_num; |
1665 | 1665 | ||
1666 | i = read(fileno(stdin), buf, bufsize / 2); | 1666 | i = read(fileno(stdin), buf, bufsize / 2); |
@@ -1680,7 +1680,7 @@ sv_body(int s, unsigned char *context) | |||
1680 | assert(lf_num == 0); | 1680 | assert(lf_num == 0); |
1681 | } else | 1681 | } else |
1682 | i = read(fileno(stdin), buf, bufsize); | 1682 | i = read(fileno(stdin), buf, bufsize); |
1683 | if (!s_server_config.quiet) { | 1683 | if (!cfg.quiet) { |
1684 | if ((i <= 0) || (buf[0] == 'Q')) { | 1684 | if ((i <= 0) || (buf[0] == 'Q')) { |
1685 | BIO_printf(bio_s_out, "DONE\n"); | 1685 | BIO_printf(bio_s_out, "DONE\n"); |
1686 | shutdown(s, SHUT_RD); | 1686 | shutdown(s, SHUT_RD); |
@@ -1910,23 +1910,23 @@ init_ssl_connection(SSL *con) | |||
1910 | BIO_printf(bio_s_out, "Reused session-id\n"); | 1910 | BIO_printf(bio_s_out, "Reused session-id\n"); |
1911 | BIO_printf(bio_s_out, "Secure Renegotiation IS%s supported\n", | 1911 | BIO_printf(bio_s_out, "Secure Renegotiation IS%s supported\n", |
1912 | SSL_get_secure_renegotiation_support(con) ? "" : " NOT"); | 1912 | SSL_get_secure_renegotiation_support(con) ? "" : " NOT"); |
1913 | if (s_server_config.keymatexportlabel != NULL) { | 1913 | if (cfg.keymatexportlabel != NULL) { |
1914 | BIO_printf(bio_s_out, "Keying material exporter:\n"); | 1914 | BIO_printf(bio_s_out, "Keying material exporter:\n"); |
1915 | BIO_printf(bio_s_out, " Label: '%s'\n", | 1915 | BIO_printf(bio_s_out, " Label: '%s'\n", |
1916 | s_server_config.keymatexportlabel); | 1916 | cfg.keymatexportlabel); |
1917 | BIO_printf(bio_s_out, " Length: %i bytes\n", | 1917 | BIO_printf(bio_s_out, " Length: %i bytes\n", |
1918 | s_server_config.keymatexportlen); | 1918 | cfg.keymatexportlen); |
1919 | exportedkeymat = malloc(s_server_config.keymatexportlen); | 1919 | exportedkeymat = malloc(cfg.keymatexportlen); |
1920 | if (exportedkeymat != NULL) { | 1920 | if (exportedkeymat != NULL) { |
1921 | if (!SSL_export_keying_material(con, exportedkeymat, | 1921 | if (!SSL_export_keying_material(con, exportedkeymat, |
1922 | s_server_config.keymatexportlen, | 1922 | cfg.keymatexportlen, |
1923 | s_server_config.keymatexportlabel, | 1923 | cfg.keymatexportlabel, |
1924 | strlen(s_server_config.keymatexportlabel), | 1924 | strlen(cfg.keymatexportlabel), |
1925 | NULL, 0, 0)) { | 1925 | NULL, 0, 0)) { |
1926 | BIO_printf(bio_s_out, " Error\n"); | 1926 | BIO_printf(bio_s_out, " Error\n"); |
1927 | } else { | 1927 | } else { |
1928 | BIO_printf(bio_s_out, " Keying material: "); | 1928 | BIO_printf(bio_s_out, " Keying material: "); |
1929 | for (i = 0; i < s_server_config.keymatexportlen; i++) | 1929 | for (i = 0; i < cfg.keymatexportlen; i++) |
1930 | BIO_printf(bio_s_out, "%02X", | 1930 | BIO_printf(bio_s_out, "%02X", |
1931 | exportedkeymat[i]); | 1931 | exportedkeymat[i]); |
1932 | BIO_printf(bio_s_out, "\n"); | 1932 | BIO_printf(bio_s_out, "\n"); |
@@ -1971,8 +1971,8 @@ www_body(int s, unsigned char *context) | |||
1971 | if ((io == NULL) || (ssl_bio == NULL)) | 1971 | if ((io == NULL) || (ssl_bio == NULL)) |
1972 | goto err; | 1972 | goto err; |
1973 | 1973 | ||
1974 | if (s_server_config.nbio) { | 1974 | if (cfg.nbio) { |
1975 | if (!s_server_config.quiet) | 1975 | if (!cfg.quiet) |
1976 | BIO_printf(bio_err, "turning on non blocking io\n"); | 1976 | BIO_printf(bio_err, "turning on non blocking io\n"); |
1977 | if (!BIO_socket_nbio(s, 1)) | 1977 | if (!BIO_socket_nbio(s, 1)) |
1978 | ERR_print_errors(bio_err); | 1978 | ERR_print_errors(bio_err); |
@@ -1984,7 +1984,7 @@ www_body(int s, unsigned char *context) | |||
1984 | 1984 | ||
1985 | if ((con = SSL_new(ctx)) == NULL) | 1985 | if ((con = SSL_new(ctx)) == NULL) |
1986 | goto err; | 1986 | goto err; |
1987 | if (s_server_config.tlsextdebug) { | 1987 | if (cfg.tlsextdebug) { |
1988 | SSL_set_tlsext_debug_callback(con, tlsext_cb); | 1988 | SSL_set_tlsext_debug_callback(con, tlsext_cb); |
1989 | SSL_set_tlsext_debug_arg(con, bio_s_out); | 1989 | SSL_set_tlsext_debug_arg(con, bio_s_out); |
1990 | } | 1990 | } |
@@ -1993,7 +1993,7 @@ www_body(int s, unsigned char *context) | |||
1993 | strlen((char *) context)); | 1993 | strlen((char *) context)); |
1994 | 1994 | ||
1995 | sbio = BIO_new_socket(s, BIO_NOCLOSE); | 1995 | sbio = BIO_new_socket(s, BIO_NOCLOSE); |
1996 | if (s_server_config.nbio_test) { | 1996 | if (cfg.nbio_test) { |
1997 | BIO *test; | 1997 | BIO *test; |
1998 | 1998 | ||
1999 | test = BIO_new(BIO_f_nbio_test()); | 1999 | test = BIO_new(BIO_f_nbio_test()); |
@@ -2006,12 +2006,12 @@ www_body(int s, unsigned char *context) | |||
2006 | BIO_set_ssl(ssl_bio, con, BIO_CLOSE); | 2006 | BIO_set_ssl(ssl_bio, con, BIO_CLOSE); |
2007 | BIO_push(io, ssl_bio); | 2007 | BIO_push(io, ssl_bio); |
2008 | 2008 | ||
2009 | if (s_server_config.debug) { | 2009 | if (cfg.debug) { |
2010 | SSL_set_debug(con, 1); | 2010 | SSL_set_debug(con, 1); |
2011 | BIO_set_callback(SSL_get_rbio(con), bio_dump_callback); | 2011 | BIO_set_callback(SSL_get_rbio(con), bio_dump_callback); |
2012 | BIO_set_callback_arg(SSL_get_rbio(con), (char *) bio_s_out); | 2012 | BIO_set_callback_arg(SSL_get_rbio(con), (char *) bio_s_out); |
2013 | } | 2013 | } |
2014 | if (s_server_config.msg) { | 2014 | if (cfg.msg) { |
2015 | SSL_set_msg_callback(con, msg_cb); | 2015 | SSL_set_msg_callback(con, msg_cb); |
2016 | SSL_set_msg_callback_arg(con, bio_s_out); | 2016 | SSL_set_msg_callback_arg(con, bio_s_out); |
2017 | } | 2017 | } |
@@ -2019,11 +2019,11 @@ www_body(int s, unsigned char *context) | |||
2019 | i = BIO_gets(io, buf, bufsize - 1); | 2019 | i = BIO_gets(io, buf, bufsize - 1); |
2020 | if (i < 0) { /* error */ | 2020 | if (i < 0) { /* error */ |
2021 | if (!BIO_should_retry(io)) { | 2021 | if (!BIO_should_retry(io)) { |
2022 | if (!s_server_config.quiet) | 2022 | if (!cfg.quiet) |
2023 | ERR_print_errors(bio_err); | 2023 | ERR_print_errors(bio_err); |
2024 | goto err; | 2024 | goto err; |
2025 | } else { | 2025 | } else { |
2026 | if (s_server_config.debug) { | 2026 | if (cfg.debug) { |
2027 | BIO_printf(bio_s_out, "read R BLOCK\n"); | 2027 | BIO_printf(bio_s_out, "read R BLOCK\n"); |
2028 | sleep(1); | 2028 | sleep(1); |
2029 | } | 2029 | } |
@@ -2034,9 +2034,9 @@ www_body(int s, unsigned char *context) | |||
2034 | goto end; | 2034 | goto end; |
2035 | } | 2035 | } |
2036 | /* else we have data */ | 2036 | /* else we have data */ |
2037 | if (((s_server_config.www == 1) && | 2037 | if (((cfg.www == 1) && |
2038 | (strncmp("GET ", buf, 4) == 0)) || | 2038 | (strncmp("GET ", buf, 4) == 0)) || |
2039 | ((s_server_config.www == 2) && | 2039 | ((cfg.www == 2) && |
2040 | (strncmp("GET /stats ", buf, 11) == 0))) { | 2040 | (strncmp("GET /stats ", buf, 11) == 0))) { |
2041 | char *p; | 2041 | char *p; |
2042 | X509 *peer; | 2042 | X509 *peer; |
@@ -2117,8 +2117,8 @@ www_body(int s, unsigned char *context) | |||
2117 | "no client certificate available\n"); | 2117 | "no client certificate available\n"); |
2118 | BIO_puts(io, "</BODY></HTML>\r\n\r\n"); | 2118 | BIO_puts(io, "</BODY></HTML>\r\n\r\n"); |
2119 | break; | 2119 | break; |
2120 | } else if ((s_server_config.www == 2 || | 2120 | } else if ((cfg.www == 2 || |
2121 | s_server_config.www == 3) && | 2121 | cfg.www == 3) && |
2122 | (strncmp("GET /", buf, 5) == 0)) { | 2122 | (strncmp("GET /", buf, 5) == 0)) { |
2123 | BIO *file; | 2123 | BIO *file; |
2124 | char *p, *e; | 2124 | char *p, *e; |
@@ -2183,10 +2183,10 @@ www_body(int s, unsigned char *context) | |||
2183 | ERR_print_errors(io); | 2183 | ERR_print_errors(io); |
2184 | break; | 2184 | break; |
2185 | } | 2185 | } |
2186 | if (!s_server_config.quiet) | 2186 | if (!cfg.quiet) |
2187 | BIO_printf(bio_err, "FILE:%s\n", p); | 2187 | BIO_printf(bio_err, "FILE:%s\n", p); |
2188 | 2188 | ||
2189 | if (s_server_config.www == 2) { | 2189 | if (cfg.www == 2) { |
2190 | i = strlen(p); | 2190 | i = strlen(p); |
2191 | if (((i > 5) && (strcmp(&(p[i - 5]), ".html") == 0)) || | 2191 | if (((i > 5) && (strcmp(&(p[i - 5]), ".html") == 0)) || |
2192 | ((i > 4) && (strcmp(&(p[i - 4]), ".php") == 0)) || | 2192 | ((i > 4) && (strcmp(&(p[i - 4]), ".php") == 0)) || |
@@ -2276,9 +2276,9 @@ generate_session_id(const SSL *ssl, unsigned char *id, unsigned int *id_len) | |||
2276 | * 1 session ID (ie. the prefix!) so all future session | 2276 | * 1 session ID (ie. the prefix!) so all future session |
2277 | * negotiations will fail due to conflicts. | 2277 | * negotiations will fail due to conflicts. |
2278 | */ | 2278 | */ |
2279 | memcpy(id, s_server_config.session_id_prefix, | 2279 | memcpy(id, cfg.session_id_prefix, |
2280 | (strlen(s_server_config.session_id_prefix) < *id_len) ? | 2280 | (strlen(cfg.session_id_prefix) < *id_len) ? |
2281 | strlen(s_server_config.session_id_prefix) : *id_len); | 2281 | strlen(cfg.session_id_prefix) : *id_len); |
2282 | } | 2282 | } |
2283 | while (SSL_has_matching_session_id(ssl, id, *id_len) && | 2283 | while (SSL_has_matching_session_id(ssl, id, *id_len) && |
2284 | (++count < MAX_SESSION_ID_ATTEMPTS)); | 2284 | (++count < MAX_SESSION_ID_ATTEMPTS)); |
@@ -2449,7 +2449,7 @@ alpn_cb(SSL *s, const unsigned char **out, unsigned char *outlen, | |||
2449 | { | 2449 | { |
2450 | tlsextalpnctx *alpn_ctx = arg; | 2450 | tlsextalpnctx *alpn_ctx = arg; |
2451 | 2451 | ||
2452 | if (!s_server_config.quiet) { | 2452 | if (!cfg.quiet) { |
2453 | /* We can assume that in is syntactically valid. */ | 2453 | /* We can assume that in is syntactically valid. */ |
2454 | unsigned i; | 2454 | unsigned i; |
2455 | 2455 | ||
@@ -2468,7 +2468,7 @@ alpn_cb(SSL *s, const unsigned char **out, unsigned char *outlen, | |||
2468 | alpn_ctx->len, in, inlen) != OPENSSL_NPN_NEGOTIATED) | 2468 | alpn_ctx->len, in, inlen) != OPENSSL_NPN_NEGOTIATED) |
2469 | return (SSL_TLSEXT_ERR_NOACK); | 2469 | return (SSL_TLSEXT_ERR_NOACK); |
2470 | 2470 | ||
2471 | if (!s_server_config.quiet) { | 2471 | if (!cfg.quiet) { |
2472 | BIO_printf(bio_s_out, "ALPN protocols selected: "); | 2472 | BIO_printf(bio_s_out, "ALPN protocols selected: "); |
2473 | BIO_write(bio_s_out, *out, *outlen); | 2473 | BIO_write(bio_s_out, *out, *outlen); |
2474 | BIO_write(bio_s_out, "\n", 1); | 2474 | BIO_write(bio_s_out, "\n", 1); |
diff --git a/src/usr.bin/openssl/s_time.c b/src/usr.bin/openssl/s_time.c index d6f012fd41..7eed6d486e 100644 --- a/src/usr.bin/openssl/s_time.c +++ b/src/usr.bin/openssl/s_time.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: s_time.c,v 1.37 2023/03/05 13:12:53 tb Exp $ */ | 1 | /* $OpenBSD: s_time.c,v 1.38 2023/03/06 14:32:06 tb 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 | * |
@@ -113,42 +113,42 @@ static struct { | |||
113 | int verify; | 113 | int verify; |
114 | int verify_depth; | 114 | int verify_depth; |
115 | char *www_path; | 115 | char *www_path; |
116 | } s_time_config; | 116 | } cfg; |
117 | 117 | ||
118 | static const struct option s_time_options[] = { | 118 | static const struct option s_time_options[] = { |
119 | { | 119 | { |
120 | .name = "bugs", | 120 | .name = "bugs", |
121 | .desc = "Enable workarounds for known SSL/TLS bugs", | 121 | .desc = "Enable workarounds for known SSL/TLS bugs", |
122 | .type = OPTION_FLAG, | 122 | .type = OPTION_FLAG, |
123 | .opt.flag = &s_time_config.bugs, | 123 | .opt.flag = &cfg.bugs, |
124 | }, | 124 | }, |
125 | { | 125 | { |
126 | .name = "CAfile", | 126 | .name = "CAfile", |
127 | .argname = "file", | 127 | .argname = "file", |
128 | .desc = "File containing trusted certificates in PEM format", | 128 | .desc = "File containing trusted certificates in PEM format", |
129 | .type = OPTION_ARG, | 129 | .type = OPTION_ARG, |
130 | .opt.arg = &s_time_config.CAfile, | 130 | .opt.arg = &cfg.CAfile, |
131 | }, | 131 | }, |
132 | { | 132 | { |
133 | .name = "CApath", | 133 | .name = "CApath", |
134 | .argname = "path", | 134 | .argname = "path", |
135 | .desc = "Directory containing trusted certificates", | 135 | .desc = "Directory containing trusted certificates", |
136 | .type = OPTION_ARG, | 136 | .type = OPTION_ARG, |
137 | .opt.arg = &s_time_config.CApath, | 137 | .opt.arg = &cfg.CApath, |
138 | }, | 138 | }, |
139 | { | 139 | { |
140 | .name = "cert", | 140 | .name = "cert", |
141 | .argname = "file", | 141 | .argname = "file", |
142 | .desc = "Client certificate to use, if one is requested", | 142 | .desc = "Client certificate to use, if one is requested", |
143 | .type = OPTION_ARG, | 143 | .type = OPTION_ARG, |
144 | .opt.arg = &s_time_config.certfile, | 144 | .opt.arg = &cfg.certfile, |
145 | }, | 145 | }, |
146 | { | 146 | { |
147 | .name = "cipher", | 147 | .name = "cipher", |
148 | .argname = "list", | 148 | .argname = "list", |
149 | .desc = "List of cipher suites to send to the server", | 149 | .desc = "List of cipher suites to send to the server", |
150 | .type = OPTION_ARG, | 150 | .type = OPTION_ARG, |
151 | .opt.arg = &s_time_config.cipher, | 151 | .opt.arg = &cfg.cipher, |
152 | }, | 152 | }, |
153 | { | 153 | { |
154 | .name = "connect", | 154 | .name = "connect", |
@@ -156,39 +156,39 @@ static const struct option s_time_options[] = { | |||
156 | .desc = "Host and port to connect to (default " | 156 | .desc = "Host and port to connect to (default " |
157 | SSL_CONNECT_NAME ")", | 157 | SSL_CONNECT_NAME ")", |
158 | .type = OPTION_ARG, | 158 | .type = OPTION_ARG, |
159 | .opt.arg = &s_time_config.host, | 159 | .opt.arg = &cfg.host, |
160 | }, | 160 | }, |
161 | { | 161 | { |
162 | .name = "key", | 162 | .name = "key", |
163 | .argname = "file", | 163 | .argname = "file", |
164 | .desc = "Client private key to use, if one is required", | 164 | .desc = "Client private key to use, if one is required", |
165 | .type = OPTION_ARG, | 165 | .type = OPTION_ARG, |
166 | .opt.arg = &s_time_config.keyfile, | 166 | .opt.arg = &cfg.keyfile, |
167 | }, | 167 | }, |
168 | { | 168 | { |
169 | .name = "nbio", | 169 | .name = "nbio", |
170 | .desc = "Use non-blocking I/O", | 170 | .desc = "Use non-blocking I/O", |
171 | .type = OPTION_FLAG, | 171 | .type = OPTION_FLAG, |
172 | .opt.flag = &s_time_config.nbio, | 172 | .opt.flag = &cfg.nbio, |
173 | }, | 173 | }, |
174 | { | 174 | { |
175 | .name = "new", | 175 | .name = "new", |
176 | .desc = "Use a new session ID for each connection", | 176 | .desc = "Use a new session ID for each connection", |
177 | .type = OPTION_VALUE, | 177 | .type = OPTION_VALUE, |
178 | .opt.value = &s_time_config.perform, | 178 | .opt.value = &cfg.perform, |
179 | .value = 1, | 179 | .value = 1, |
180 | }, | 180 | }, |
181 | { | 181 | { |
182 | .name = "no_shutdown", | 182 | .name = "no_shutdown", |
183 | .desc = "Shut down the connection without notifying the server", | 183 | .desc = "Shut down the connection without notifying the server", |
184 | .type = OPTION_FLAG, | 184 | .type = OPTION_FLAG, |
185 | .opt.flag = &s_time_config.no_shutdown, | 185 | .opt.flag = &cfg.no_shutdown, |
186 | }, | 186 | }, |
187 | { | 187 | { |
188 | .name = "reuse", | 188 | .name = "reuse", |
189 | .desc = "Reuse the same session ID for each connection", | 189 | .desc = "Reuse the same session ID for each connection", |
190 | .type = OPTION_VALUE, | 190 | .type = OPTION_VALUE, |
191 | .opt.value = &s_time_config.perform, | 191 | .opt.value = &cfg.perform, |
192 | .value = 2, | 192 | .value = 2, |
193 | }, | 193 | }, |
194 | { | 194 | { |
@@ -196,21 +196,21 @@ static const struct option s_time_options[] = { | |||
196 | .argname = "seconds", | 196 | .argname = "seconds", |
197 | .desc = "Duration to perform timing tests for (default 30)", | 197 | .desc = "Duration to perform timing tests for (default 30)", |
198 | .type = OPTION_ARG_TIME, | 198 | .type = OPTION_ARG_TIME, |
199 | .opt.tvalue = &s_time_config.maxtime, | 199 | .opt.tvalue = &cfg.maxtime, |
200 | }, | 200 | }, |
201 | { | 201 | { |
202 | .name = "verify", | 202 | .name = "verify", |
203 | .argname = "depth", | 203 | .argname = "depth", |
204 | .desc = "Enable peer certificate verification with given depth", | 204 | .desc = "Enable peer certificate verification with given depth", |
205 | .type = OPTION_ARG_INT, | 205 | .type = OPTION_ARG_INT, |
206 | .opt.value = &s_time_config.verify_depth, | 206 | .opt.value = &cfg.verify_depth, |
207 | }, | 207 | }, |
208 | { | 208 | { |
209 | .name = "www", | 209 | .name = "www", |
210 | .argname = "page", | 210 | .argname = "page", |
211 | .desc = "Page to GET from the server (default none)", | 211 | .desc = "Page to GET from the server (default none)", |
212 | .type = OPTION_ARG, | 212 | .type = OPTION_ARG, |
213 | .opt.arg = &s_time_config.www_path, | 213 | .opt.arg = &cfg.www_path, |
214 | }, | 214 | }, |
215 | { NULL }, | 215 | { NULL }, |
216 | }; | 216 | }; |
@@ -245,27 +245,27 @@ s_time_main(int argc, char **argv) | |||
245 | 245 | ||
246 | verify_depth = 0; | 246 | verify_depth = 0; |
247 | 247 | ||
248 | memset(&s_time_config, 0, sizeof(s_time_config)); | 248 | memset(&cfg, 0, sizeof(cfg)); |
249 | 249 | ||
250 | s_time_config.host = SSL_CONNECT_NAME; | 250 | cfg.host = SSL_CONNECT_NAME; |
251 | s_time_config.maxtime = SECONDS; | 251 | cfg.maxtime = SECONDS; |
252 | s_time_config.perform = 3; | 252 | cfg.perform = 3; |
253 | s_time_config.verify = SSL_VERIFY_NONE; | 253 | cfg.verify = SSL_VERIFY_NONE; |
254 | s_time_config.verify_depth = -1; | 254 | cfg.verify_depth = -1; |
255 | 255 | ||
256 | if (options_parse(argc, argv, s_time_options, NULL, NULL) != 0) { | 256 | if (options_parse(argc, argv, s_time_options, NULL, NULL) != 0) { |
257 | s_time_usage(); | 257 | s_time_usage(); |
258 | goto end; | 258 | goto end; |
259 | } | 259 | } |
260 | 260 | ||
261 | if (s_time_config.verify_depth >= 0) { | 261 | if (cfg.verify_depth >= 0) { |
262 | s_time_config.verify = SSL_VERIFY_PEER | SSL_VERIFY_CLIENT_ONCE; | 262 | cfg.verify = SSL_VERIFY_PEER | SSL_VERIFY_CLIENT_ONCE; |
263 | verify_depth = s_time_config.verify_depth; | 263 | verify_depth = cfg.verify_depth; |
264 | BIO_printf(bio_err, "verify depth is %d\n", verify_depth); | 264 | BIO_printf(bio_err, "verify depth is %d\n", verify_depth); |
265 | } | 265 | } |
266 | 266 | ||
267 | if (s_time_config.www_path != NULL && | 267 | if (cfg.www_path != NULL && |
268 | strlen(s_time_config.www_path) > MYBUFSIZ - 100) { | 268 | strlen(cfg.www_path) > MYBUFSIZ - 100) { |
269 | BIO_printf(bio_err, "-www option too long\n"); | 269 | BIO_printf(bio_err, "-www option too long\n"); |
270 | goto end; | 270 | goto end; |
271 | } | 271 | } |
@@ -275,25 +275,25 @@ s_time_main(int argc, char **argv) | |||
275 | 275 | ||
276 | SSL_CTX_set_quiet_shutdown(tm_ctx, 1); | 276 | SSL_CTX_set_quiet_shutdown(tm_ctx, 1); |
277 | 277 | ||
278 | if (s_time_config.bugs) | 278 | if (cfg.bugs) |
279 | SSL_CTX_set_options(tm_ctx, SSL_OP_ALL); | 279 | SSL_CTX_set_options(tm_ctx, SSL_OP_ALL); |
280 | 280 | ||
281 | if (s_time_config.cipher != NULL) { | 281 | if (cfg.cipher != NULL) { |
282 | if (!SSL_CTX_set_cipher_list(tm_ctx, s_time_config.cipher)) { | 282 | if (!SSL_CTX_set_cipher_list(tm_ctx, cfg.cipher)) { |
283 | BIO_printf(bio_err, "error setting cipher list\n"); | 283 | BIO_printf(bio_err, "error setting cipher list\n"); |
284 | ERR_print_errors(bio_err); | 284 | ERR_print_errors(bio_err); |
285 | goto end; | 285 | goto end; |
286 | } | 286 | } |
287 | } | 287 | } |
288 | 288 | ||
289 | SSL_CTX_set_verify(tm_ctx, s_time_config.verify, NULL); | 289 | SSL_CTX_set_verify(tm_ctx, cfg.verify, NULL); |
290 | 290 | ||
291 | if (!set_cert_stuff(tm_ctx, s_time_config.certfile, | 291 | if (!set_cert_stuff(tm_ctx, cfg.certfile, |
292 | s_time_config.keyfile)) | 292 | cfg.keyfile)) |
293 | goto end; | 293 | goto end; |
294 | 294 | ||
295 | if ((!SSL_CTX_load_verify_locations(tm_ctx, s_time_config.CAfile, | 295 | if ((!SSL_CTX_load_verify_locations(tm_ctx, cfg.CAfile, |
296 | s_time_config.CApath)) || | 296 | cfg.CApath)) || |
297 | (!SSL_CTX_set_default_verify_paths(tm_ctx))) { | 297 | (!SSL_CTX_set_default_verify_paths(tm_ctx))) { |
298 | /* | 298 | /* |
299 | * BIO_printf(bio_err,"error setting default verify | 299 | * BIO_printf(bio_err,"error setting default verify |
@@ -304,9 +304,9 @@ s_time_main(int argc, char **argv) | |||
304 | } | 304 | } |
305 | 305 | ||
306 | /* Loop and time how long it takes to make connections */ | 306 | /* Loop and time how long it takes to make connections */ |
307 | if (s_time_config.perform & 1) { | 307 | if (cfg.perform & 1) { |
308 | printf("Collecting connection statistics for %lld seconds\n", | 308 | printf("Collecting connection statistics for %lld seconds\n", |
309 | (long long)s_time_config.maxtime); | 309 | (long long)cfg.maxtime); |
310 | if (benchmark(0)) | 310 | if (benchmark(0)) |
311 | goto end; | 311 | goto end; |
312 | } | 312 | } |
@@ -314,7 +314,7 @@ s_time_main(int argc, char **argv) | |||
314 | * Now loop and time connections using the same session id over and | 314 | * Now loop and time connections using the same session id over and |
315 | * over | 315 | * over |
316 | */ | 316 | */ |
317 | if (s_time_config.perform & 2) { | 317 | if (cfg.perform & 2) { |
318 | printf("\n\nNow timing with session id reuse.\n"); | 318 | printf("\n\nNow timing with session id reuse.\n"); |
319 | if (benchmark(1)) | 319 | if (benchmark(1)) |
320 | goto end; | 320 | goto end; |
@@ -348,7 +348,7 @@ run_test(SSL *scon) | |||
348 | 348 | ||
349 | if ((conn = BIO_new(BIO_s_connect())) == NULL) | 349 | if ((conn = BIO_new(BIO_s_connect())) == NULL) |
350 | return 0; | 350 | return 0; |
351 | BIO_set_conn_hostname(conn, s_time_config.host); | 351 | BIO_set_conn_hostname(conn, cfg.host); |
352 | SSL_set_connect_state(scon); | 352 | SSL_set_connect_state(scon); |
353 | SSL_set_bio(scon, conn, conn); | 353 | SSL_set_bio(scon, conn, conn); |
354 | for (;;) { | 354 | for (;;) { |
@@ -372,9 +372,9 @@ run_test(SSL *scon) | |||
372 | ERR_print_errors(bio_err); | 372 | ERR_print_errors(bio_err); |
373 | return 0; | 373 | return 0; |
374 | } | 374 | } |
375 | if (s_time_config.www_path != NULL) { | 375 | if (cfg.www_path != NULL) { |
376 | retval = snprintf(buf, sizeof buf, | 376 | retval = snprintf(buf, sizeof buf, |
377 | "GET %s HTTP/1.0\r\n\r\n", s_time_config.www_path); | 377 | "GET %s HTTP/1.0\r\n\r\n", cfg.www_path); |
378 | if (retval < 0 || retval >= sizeof buf) { | 378 | if (retval < 0 || retval >= sizeof buf) { |
379 | fprintf(stderr, "URL too long\n"); | 379 | fprintf(stderr, "URL too long\n"); |
380 | return 0; | 380 | return 0; |
@@ -384,7 +384,7 @@ run_test(SSL *scon) | |||
384 | while ((i = SSL_read(scon, buf, sizeof(buf))) > 0) | 384 | while ((i = SSL_read(scon, buf, sizeof(buf))) > 0) |
385 | bytes_read += i; | 385 | bytes_read += i; |
386 | } | 386 | } |
387 | if (s_time_config.no_shutdown) | 387 | if (cfg.no_shutdown) |
388 | SSL_set_shutdown(scon, SSL_SENT_SHUTDOWN | | 388 | SSL_set_shutdown(scon, SSL_SENT_SHUTDOWN | |
389 | SSL_RECEIVED_SHUTDOWN); | 389 | SSL_RECEIVED_SHUTDOWN); |
390 | else | 390 | else |
@@ -436,7 +436,7 @@ benchmark(int reuse_session) | |||
436 | app_timer_user(TM_RESET); | 436 | app_timer_user(TM_RESET); |
437 | for (;;) { | 437 | for (;;) { |
438 | elapsed = app_timer_real(TM_GET); | 438 | elapsed = app_timer_real(TM_GET); |
439 | if (elapsed > s_time_config.maxtime) | 439 | if (elapsed > cfg.maxtime) |
440 | break; | 440 | break; |
441 | if (scon == NULL) { | 441 | if (scon == NULL) { |
442 | if ((scon = SSL_new(tm_ctx)) == NULL) | 442 | if ((scon = SSL_new(tm_ctx)) == NULL) |
diff --git a/src/usr.bin/openssl/sess_id.c b/src/usr.bin/openssl/sess_id.c index 4533cf15ca..c46da54244 100644 --- a/src/usr.bin/openssl/sess_id.c +++ b/src/usr.bin/openssl/sess_id.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: sess_id.c,v 1.11 2022/11/11 17:07:39 joshua Exp $ */ | 1 | /* $OpenBSD: sess_id.c,v 1.12 2023/03/06 14:32:06 tb 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 | * |
@@ -78,62 +78,62 @@ static struct { | |||
78 | char *outfile; | 78 | char *outfile; |
79 | int outformat; | 79 | int outformat; |
80 | int text; | 80 | int text; |
81 | } sess_id_config; | 81 | } cfg; |
82 | 82 | ||
83 | static const struct option sess_id_options[] = { | 83 | static const struct option sess_id_options[] = { |
84 | { | 84 | { |
85 | .name = "cert", | 85 | .name = "cert", |
86 | .desc = "Output certificate if present in session", | 86 | .desc = "Output certificate if present in session", |
87 | .type = OPTION_FLAG, | 87 | .type = OPTION_FLAG, |
88 | .opt.flag = &sess_id_config.cert, | 88 | .opt.flag = &cfg.cert, |
89 | }, | 89 | }, |
90 | { | 90 | { |
91 | .name = "context", | 91 | .name = "context", |
92 | .argname = "id", | 92 | .argname = "id", |
93 | .desc = "Set the session ID context for output", | 93 | .desc = "Set the session ID context for output", |
94 | .type = OPTION_ARG, | 94 | .type = OPTION_ARG, |
95 | .opt.arg = &sess_id_config.context, | 95 | .opt.arg = &cfg.context, |
96 | }, | 96 | }, |
97 | { | 97 | { |
98 | .name = "in", | 98 | .name = "in", |
99 | .argname = "file", | 99 | .argname = "file", |
100 | .desc = "Input file (default stdin)", | 100 | .desc = "Input file (default stdin)", |
101 | .type = OPTION_ARG, | 101 | .type = OPTION_ARG, |
102 | .opt.arg = &sess_id_config.infile, | 102 | .opt.arg = &cfg.infile, |
103 | }, | 103 | }, |
104 | { | 104 | { |
105 | .name = "inform", | 105 | .name = "inform", |
106 | .argname = "format", | 106 | .argname = "format", |
107 | .desc = "Input format (DER or PEM (default))", | 107 | .desc = "Input format (DER or PEM (default))", |
108 | .type = OPTION_ARG_FORMAT, | 108 | .type = OPTION_ARG_FORMAT, |
109 | .opt.value = &sess_id_config.informat, | 109 | .opt.value = &cfg.informat, |
110 | }, | 110 | }, |
111 | { | 111 | { |
112 | .name = "noout", | 112 | .name = "noout", |
113 | .desc = "Do not output the encoded session info", | 113 | .desc = "Do not output the encoded session info", |
114 | .type = OPTION_FLAG, | 114 | .type = OPTION_FLAG, |
115 | .opt.flag = &sess_id_config.noout, | 115 | .opt.flag = &cfg.noout, |
116 | }, | 116 | }, |
117 | { | 117 | { |
118 | .name = "out", | 118 | .name = "out", |
119 | .argname = "file", | 119 | .argname = "file", |
120 | .desc = "Output file (default stdout)", | 120 | .desc = "Output file (default stdout)", |
121 | .type = OPTION_ARG, | 121 | .type = OPTION_ARG, |
122 | .opt.arg = &sess_id_config.outfile, | 122 | .opt.arg = &cfg.outfile, |
123 | }, | 123 | }, |
124 | { | 124 | { |
125 | .name = "outform", | 125 | .name = "outform", |
126 | .argname = "format", | 126 | .argname = "format", |
127 | .desc = "Output format (DER or PEM (default))", | 127 | .desc = "Output format (DER or PEM (default))", |
128 | .type = OPTION_ARG_FORMAT, | 128 | .type = OPTION_ARG_FORMAT, |
129 | .opt.value = &sess_id_config.outformat, | 129 | .opt.value = &cfg.outformat, |
130 | }, | 130 | }, |
131 | { | 131 | { |
132 | .name = "text", | 132 | .name = "text", |
133 | .desc = "Print various public or private key components in" | 133 | .desc = "Print various public or private key components in" |
134 | " plain text", | 134 | " plain text", |
135 | .type = OPTION_FLAG, | 135 | .type = OPTION_FLAG, |
136 | .opt.flag = &sess_id_config.text, | 136 | .opt.flag = &cfg.text, |
137 | }, | 137 | }, |
138 | { NULL } | 138 | { NULL } |
139 | }; | 139 | }; |
@@ -163,62 +163,62 @@ sess_id_main(int argc, char **argv) | |||
163 | exit(1); | 163 | exit(1); |
164 | } | 164 | } |
165 | 165 | ||
166 | memset(&sess_id_config, 0, sizeof(sess_id_config)); | 166 | memset(&cfg, 0, sizeof(cfg)); |
167 | 167 | ||
168 | sess_id_config.informat = FORMAT_PEM; | 168 | cfg.informat = FORMAT_PEM; |
169 | sess_id_config.outformat = FORMAT_PEM; | 169 | cfg.outformat = FORMAT_PEM; |
170 | 170 | ||
171 | if (options_parse(argc, argv, sess_id_options, NULL, NULL) != 0) { | 171 | if (options_parse(argc, argv, sess_id_options, NULL, NULL) != 0) { |
172 | sess_id_usage(); | 172 | sess_id_usage(); |
173 | return (1); | 173 | return (1); |
174 | } | 174 | } |
175 | 175 | ||
176 | x = load_sess_id(sess_id_config.infile, sess_id_config.informat); | 176 | x = load_sess_id(cfg.infile, cfg.informat); |
177 | if (x == NULL) { | 177 | if (x == NULL) { |
178 | goto end; | 178 | goto end; |
179 | } | 179 | } |
180 | peer = SSL_SESSION_get0_peer(x); | 180 | peer = SSL_SESSION_get0_peer(x); |
181 | 181 | ||
182 | if (sess_id_config.context) { | 182 | if (cfg.context) { |
183 | size_t ctx_len = strlen(sess_id_config.context); | 183 | size_t ctx_len = strlen(cfg.context); |
184 | if (ctx_len > SSL_MAX_SID_CTX_LENGTH) { | 184 | if (ctx_len > SSL_MAX_SID_CTX_LENGTH) { |
185 | BIO_printf(bio_err, "Context too long\n"); | 185 | BIO_printf(bio_err, "Context too long\n"); |
186 | goto end; | 186 | goto end; |
187 | } | 187 | } |
188 | SSL_SESSION_set1_id_context(x, | 188 | SSL_SESSION_set1_id_context(x, |
189 | (unsigned char *)sess_id_config.context, ctx_len); | 189 | (unsigned char *)cfg.context, ctx_len); |
190 | } | 190 | } |
191 | 191 | ||
192 | if (!sess_id_config.noout || sess_id_config.text) { | 192 | if (!cfg.noout || cfg.text) { |
193 | out = BIO_new(BIO_s_file()); | 193 | out = BIO_new(BIO_s_file()); |
194 | if (out == NULL) { | 194 | if (out == NULL) { |
195 | ERR_print_errors(bio_err); | 195 | ERR_print_errors(bio_err); |
196 | goto end; | 196 | goto end; |
197 | } | 197 | } |
198 | if (sess_id_config.outfile == NULL) { | 198 | if (cfg.outfile == NULL) { |
199 | BIO_set_fp(out, stdout, BIO_NOCLOSE); | 199 | BIO_set_fp(out, stdout, BIO_NOCLOSE); |
200 | } else { | 200 | } else { |
201 | if (BIO_write_filename(out, sess_id_config.outfile) | 201 | if (BIO_write_filename(out, cfg.outfile) |
202 | <= 0) { | 202 | <= 0) { |
203 | perror(sess_id_config.outfile); | 203 | perror(cfg.outfile); |
204 | goto end; | 204 | goto end; |
205 | } | 205 | } |
206 | } | 206 | } |
207 | } | 207 | } |
208 | if (sess_id_config.text) { | 208 | if (cfg.text) { |
209 | SSL_SESSION_print(out, x); | 209 | SSL_SESSION_print(out, x); |
210 | 210 | ||
211 | if (sess_id_config.cert) { | 211 | if (cfg.cert) { |
212 | if (peer == NULL) | 212 | if (peer == NULL) |
213 | BIO_puts(out, "No certificate present\n"); | 213 | BIO_puts(out, "No certificate present\n"); |
214 | else | 214 | else |
215 | X509_print(out, peer); | 215 | X509_print(out, peer); |
216 | } | 216 | } |
217 | } | 217 | } |
218 | if (!sess_id_config.noout && !sess_id_config.cert) { | 218 | if (!cfg.noout && !cfg.cert) { |
219 | if (sess_id_config.outformat == FORMAT_ASN1) | 219 | if (cfg.outformat == FORMAT_ASN1) |
220 | i = i2d_SSL_SESSION_bio(out, x); | 220 | i = i2d_SSL_SESSION_bio(out, x); |
221 | else if (sess_id_config.outformat == FORMAT_PEM) | 221 | else if (cfg.outformat == FORMAT_PEM) |
222 | i = PEM_write_bio_SSL_SESSION(out, x); | 222 | i = PEM_write_bio_SSL_SESSION(out, x); |
223 | else { | 223 | else { |
224 | BIO_printf(bio_err, | 224 | BIO_printf(bio_err, |
@@ -229,11 +229,11 @@ sess_id_main(int argc, char **argv) | |||
229 | BIO_printf(bio_err, "unable to write SSL_SESSION\n"); | 229 | BIO_printf(bio_err, "unable to write SSL_SESSION\n"); |
230 | goto end; | 230 | goto end; |
231 | } | 231 | } |
232 | } else if (!sess_id_config.noout && (peer != NULL)) { | 232 | } else if (!cfg.noout && (peer != NULL)) { |
233 | /* just print the certificate */ | 233 | /* just print the certificate */ |
234 | if (sess_id_config.outformat == FORMAT_ASN1) | 234 | if (cfg.outformat == FORMAT_ASN1) |
235 | i = (int) i2d_X509_bio(out, peer); | 235 | i = (int) i2d_X509_bio(out, peer); |
236 | else if (sess_id_config.outformat == FORMAT_PEM) | 236 | else if (cfg.outformat == FORMAT_PEM) |
237 | i = PEM_write_bio_X509(out, peer); | 237 | i = PEM_write_bio_X509(out, peer); |
238 | else { | 238 | else { |
239 | BIO_printf(bio_err, | 239 | BIO_printf(bio_err, |
diff --git a/src/usr.bin/openssl/smime.c b/src/usr.bin/openssl/smime.c index 37375c1600..e54c8d0b84 100644 --- a/src/usr.bin/openssl/smime.c +++ b/src/usr.bin/openssl/smime.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: smime.c,v 1.18 2022/11/11 17:07:39 joshua Exp $ */ | 1 | /* $OpenBSD: smime.c,v 1.19 2023/03/06 14:32:06 tb 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. | 3 | * project. |
4 | */ | 4 | */ |
@@ -107,7 +107,7 @@ static struct { | |||
107 | char *subject; | 107 | char *subject; |
108 | char *to; | 108 | char *to; |
109 | X509_VERIFY_PARAM *vpm; | 109 | X509_VERIFY_PARAM *vpm; |
110 | } smime_config; | 110 | } cfg; |
111 | 111 | ||
112 | static const EVP_CIPHER * | 112 | static const EVP_CIPHER * |
113 | get_cipher_by_name(char *name) | 113 | get_cipher_by_name(char *name) |
@@ -156,8 +156,8 @@ smime_opt_cipher(int argc, char **argv, int *argsused) | |||
156 | if (*name++ != '-') | 156 | if (*name++ != '-') |
157 | return (1); | 157 | return (1); |
158 | 158 | ||
159 | if ((smime_config.cipher = get_cipher_by_name(name)) == NULL) | 159 | if ((cfg.cipher = get_cipher_by_name(name)) == NULL) |
160 | if ((smime_config.cipher = EVP_get_cipherbyname(name)) == NULL) | 160 | if ((cfg.cipher = EVP_get_cipherbyname(name)) == NULL) |
161 | return (1); | 161 | return (1); |
162 | 162 | ||
163 | *argsused = 1; | 163 | *argsused = 1; |
@@ -167,41 +167,41 @@ smime_opt_cipher(int argc, char **argv, int *argsused) | |||
167 | static int | 167 | static int |
168 | smime_opt_inkey(char *arg) | 168 | smime_opt_inkey(char *arg) |
169 | { | 169 | { |
170 | if (smime_config.keyfile == NULL) { | 170 | if (cfg.keyfile == NULL) { |
171 | smime_config.keyfile = arg; | 171 | cfg.keyfile = arg; |
172 | return (0); | 172 | return (0); |
173 | } | 173 | } |
174 | 174 | ||
175 | if (smime_config.signerfile == NULL) { | 175 | if (cfg.signerfile == NULL) { |
176 | BIO_puts(bio_err, "Illegal -inkey without -signer\n"); | 176 | BIO_puts(bio_err, "Illegal -inkey without -signer\n"); |
177 | return (1); | 177 | return (1); |
178 | } | 178 | } |
179 | 179 | ||
180 | if (smime_config.sksigners == NULL) { | 180 | if (cfg.sksigners == NULL) { |
181 | if ((smime_config.sksigners = sk_OPENSSL_STRING_new_null()) == NULL) | 181 | if ((cfg.sksigners = sk_OPENSSL_STRING_new_null()) == NULL) |
182 | return (1); | 182 | return (1); |
183 | } | 183 | } |
184 | if (!sk_OPENSSL_STRING_push(smime_config.sksigners, | 184 | if (!sk_OPENSSL_STRING_push(cfg.sksigners, |
185 | smime_config.signerfile)) | 185 | cfg.signerfile)) |
186 | return (1); | 186 | return (1); |
187 | 187 | ||
188 | smime_config.signerfile = NULL; | 188 | cfg.signerfile = NULL; |
189 | 189 | ||
190 | if (smime_config.skkeys == NULL) { | 190 | if (cfg.skkeys == NULL) { |
191 | if ((smime_config.skkeys = sk_OPENSSL_STRING_new_null()) == NULL) | 191 | if ((cfg.skkeys = sk_OPENSSL_STRING_new_null()) == NULL) |
192 | return (1); | 192 | return (1); |
193 | } | 193 | } |
194 | if (!sk_OPENSSL_STRING_push(smime_config.skkeys, smime_config.keyfile)) | 194 | if (!sk_OPENSSL_STRING_push(cfg.skkeys, cfg.keyfile)) |
195 | return (1); | 195 | return (1); |
196 | 196 | ||
197 | smime_config.keyfile = arg; | 197 | cfg.keyfile = arg; |
198 | return (0); | 198 | return (0); |
199 | } | 199 | } |
200 | 200 | ||
201 | static int | 201 | static int |
202 | smime_opt_md(char *arg) | 202 | smime_opt_md(char *arg) |
203 | { | 203 | { |
204 | if ((smime_config.sign_md = EVP_get_digestbyname(arg)) == NULL) { | 204 | if ((cfg.sign_md = EVP_get_digestbyname(arg)) == NULL) { |
205 | BIO_printf(bio_err, "Unknown digest %s\n", arg); | 205 | BIO_printf(bio_err, "Unknown digest %s\n", arg); |
206 | return (1); | 206 | return (1); |
207 | } | 207 | } |
@@ -211,32 +211,32 @@ smime_opt_md(char *arg) | |||
211 | static int | 211 | static int |
212 | smime_opt_signer(char *arg) | 212 | smime_opt_signer(char *arg) |
213 | { | 213 | { |
214 | if (smime_config.signerfile == NULL) { | 214 | if (cfg.signerfile == NULL) { |
215 | smime_config.signerfile = arg; | 215 | cfg.signerfile = arg; |
216 | return (0); | 216 | return (0); |
217 | } | 217 | } |
218 | 218 | ||
219 | if (smime_config.sksigners == NULL) { | 219 | if (cfg.sksigners == NULL) { |
220 | if ((smime_config.sksigners = sk_OPENSSL_STRING_new_null()) == NULL) | 220 | if ((cfg.sksigners = sk_OPENSSL_STRING_new_null()) == NULL) |
221 | return (1); | 221 | return (1); |
222 | } | 222 | } |
223 | if (!sk_OPENSSL_STRING_push(smime_config.sksigners, | 223 | if (!sk_OPENSSL_STRING_push(cfg.sksigners, |
224 | smime_config.signerfile)) | 224 | cfg.signerfile)) |
225 | return (1); | 225 | return (1); |
226 | 226 | ||
227 | if (smime_config.keyfile == NULL) | 227 | if (cfg.keyfile == NULL) |
228 | smime_config.keyfile = smime_config.signerfile; | 228 | cfg.keyfile = cfg.signerfile; |
229 | 229 | ||
230 | if (smime_config.skkeys == NULL) { | 230 | if (cfg.skkeys == NULL) { |
231 | if ((smime_config.skkeys = sk_OPENSSL_STRING_new_null()) == NULL) | 231 | if ((cfg.skkeys = sk_OPENSSL_STRING_new_null()) == NULL) |
232 | return (1); | 232 | return (1); |
233 | } | 233 | } |
234 | if (!sk_OPENSSL_STRING_push(smime_config.skkeys, smime_config.keyfile)) | 234 | if (!sk_OPENSSL_STRING_push(cfg.skkeys, cfg.keyfile)) |
235 | return (1); | 235 | return (1); |
236 | 236 | ||
237 | smime_config.keyfile = NULL; | 237 | cfg.keyfile = NULL; |
238 | 238 | ||
239 | smime_config.signerfile = arg; | 239 | cfg.signerfile = arg; |
240 | return (0); | 240 | return (0); |
241 | } | 241 | } |
242 | 242 | ||
@@ -246,7 +246,7 @@ smime_opt_verify_param(int argc, char **argv, int *argsused) | |||
246 | int oargc = argc; | 246 | int oargc = argc; |
247 | int badarg = 0; | 247 | int badarg = 0; |
248 | 248 | ||
249 | if (!args_verify(&argv, &argc, &badarg, bio_err, &smime_config.vpm)) | 249 | if (!args_verify(&argv, &argc, &badarg, bio_err, &cfg.vpm)) |
250 | return (1); | 250 | return (1); |
251 | if (badarg) | 251 | if (badarg) |
252 | return (1); | 252 | return (1); |
@@ -336,20 +336,20 @@ static const struct option smime_options[] = { | |||
336 | .argname = "file", | 336 | .argname = "file", |
337 | .desc = "Certificate Authority file", | 337 | .desc = "Certificate Authority file", |
338 | .type = OPTION_ARG, | 338 | .type = OPTION_ARG, |
339 | .opt.arg = &smime_config.CAfile, | 339 | .opt.arg = &cfg.CAfile, |
340 | }, | 340 | }, |
341 | { | 341 | { |
342 | .name = "CApath", | 342 | .name = "CApath", |
343 | .argname = "path", | 343 | .argname = "path", |
344 | .desc = "Certificate Authority path", | 344 | .desc = "Certificate Authority path", |
345 | .type = OPTION_ARG, | 345 | .type = OPTION_ARG, |
346 | .opt.arg = &smime_config.CApath, | 346 | .opt.arg = &cfg.CApath, |
347 | }, | 347 | }, |
348 | { | 348 | { |
349 | .name = "binary", | 349 | .name = "binary", |
350 | .desc = "Do not translate message to text", | 350 | .desc = "Do not translate message to text", |
351 | .type = OPTION_VALUE_OR, | 351 | .type = OPTION_VALUE_OR, |
352 | .opt.value = &smime_config.flags, | 352 | .opt.value = &cfg.flags, |
353 | .value = PKCS7_BINARY, | 353 | .value = PKCS7_BINARY, |
354 | }, | 354 | }, |
355 | { | 355 | { |
@@ -357,34 +357,34 @@ static const struct option smime_options[] = { | |||
357 | .argname = "file", | 357 | .argname = "file", |
358 | .desc = "Other certificates file", | 358 | .desc = "Other certificates file", |
359 | .type = OPTION_ARG, | 359 | .type = OPTION_ARG, |
360 | .opt.arg = &smime_config.certfile, | 360 | .opt.arg = &cfg.certfile, |
361 | }, | 361 | }, |
362 | { | 362 | { |
363 | .name = "content", | 363 | .name = "content", |
364 | .argname = "file", | 364 | .argname = "file", |
365 | .desc = "Supply or override content for detached signature", | 365 | .desc = "Supply or override content for detached signature", |
366 | .type = OPTION_ARG, | 366 | .type = OPTION_ARG, |
367 | .opt.arg = &smime_config.contfile, | 367 | .opt.arg = &cfg.contfile, |
368 | }, | 368 | }, |
369 | { | 369 | { |
370 | .name = "crlfeol", | 370 | .name = "crlfeol", |
371 | .desc = "Use CRLF as EOL termination instead of CR only", | 371 | .desc = "Use CRLF as EOL termination instead of CR only", |
372 | .type = OPTION_VALUE_OR, | 372 | .type = OPTION_VALUE_OR, |
373 | .opt.value = &smime_config.flags, | 373 | .opt.value = &cfg.flags, |
374 | .value = PKCS7_CRLFEOL, | 374 | .value = PKCS7_CRLFEOL, |
375 | }, | 375 | }, |
376 | { | 376 | { |
377 | .name = "decrypt", | 377 | .name = "decrypt", |
378 | .desc = "Decrypt encrypted message", | 378 | .desc = "Decrypt encrypted message", |
379 | .type = OPTION_VALUE, | 379 | .type = OPTION_VALUE, |
380 | .opt.value = &smime_config.operation, | 380 | .opt.value = &cfg.operation, |
381 | .value = SMIME_DECRYPT, | 381 | .value = SMIME_DECRYPT, |
382 | }, | 382 | }, |
383 | { | 383 | { |
384 | .name = "encrypt", | 384 | .name = "encrypt", |
385 | .desc = "Encrypt message", | 385 | .desc = "Encrypt message", |
386 | .type = OPTION_VALUE, | 386 | .type = OPTION_VALUE, |
387 | .opt.value = &smime_config.operation, | 387 | .opt.value = &cfg.operation, |
388 | .value = SMIME_ENCRYPT, | 388 | .value = SMIME_ENCRYPT, |
389 | }, | 389 | }, |
390 | { | 390 | { |
@@ -392,20 +392,20 @@ static const struct option smime_options[] = { | |||
392 | .argname = "addr", | 392 | .argname = "addr", |
393 | .desc = "From address", | 393 | .desc = "From address", |
394 | .type = OPTION_ARG, | 394 | .type = OPTION_ARG, |
395 | .opt.arg = &smime_config.from, | 395 | .opt.arg = &cfg.from, |
396 | }, | 396 | }, |
397 | { | 397 | { |
398 | .name = "in", | 398 | .name = "in", |
399 | .argname = "file", | 399 | .argname = "file", |
400 | .desc = "Input file", | 400 | .desc = "Input file", |
401 | .type = OPTION_ARG, | 401 | .type = OPTION_ARG, |
402 | .opt.arg = &smime_config.infile, | 402 | .opt.arg = &cfg.infile, |
403 | }, | 403 | }, |
404 | { | 404 | { |
405 | .name = "indef", | 405 | .name = "indef", |
406 | .desc = "Same as -stream", | 406 | .desc = "Same as -stream", |
407 | .type = OPTION_VALUE, | 407 | .type = OPTION_VALUE, |
408 | .opt.value = &smime_config.indef, | 408 | .opt.value = &cfg.indef, |
409 | .value = 1, | 409 | .value = 1, |
410 | }, | 410 | }, |
411 | { | 411 | { |
@@ -413,7 +413,7 @@ static const struct option smime_options[] = { | |||
413 | .argname = "fmt", | 413 | .argname = "fmt", |
414 | .desc = "Input format (DER, PEM or SMIME (default))", | 414 | .desc = "Input format (DER, PEM or SMIME (default))", |
415 | .type = OPTION_ARG_FORMAT, | 415 | .type = OPTION_ARG_FORMAT, |
416 | .opt.value = &smime_config.informat, | 416 | .opt.value = &cfg.informat, |
417 | }, | 417 | }, |
418 | { | 418 | { |
419 | .name = "inkey", | 419 | .name = "inkey", |
@@ -427,7 +427,7 @@ static const struct option smime_options[] = { | |||
427 | .argname = "fmt", | 427 | .argname = "fmt", |
428 | .desc = "Input key format (DER or PEM (default))", | 428 | .desc = "Input key format (DER or PEM (default))", |
429 | .type = OPTION_ARG_FORMAT, | 429 | .type = OPTION_ARG_FORMAT, |
430 | .opt.value = &smime_config.keyform, | 430 | .opt.value = &cfg.keyform, |
431 | }, | 431 | }, |
432 | { | 432 | { |
433 | .name = "md", | 433 | .name = "md", |
@@ -440,70 +440,70 @@ static const struct option smime_options[] = { | |||
440 | .name = "noattr", | 440 | .name = "noattr", |
441 | .desc = "Do not include any signed attributes", | 441 | .desc = "Do not include any signed attributes", |
442 | .type = OPTION_VALUE_OR, | 442 | .type = OPTION_VALUE_OR, |
443 | .opt.value = &smime_config.flags, | 443 | .opt.value = &cfg.flags, |
444 | .value = PKCS7_NOATTR, | 444 | .value = PKCS7_NOATTR, |
445 | }, | 445 | }, |
446 | { | 446 | { |
447 | .name = "nocerts", | 447 | .name = "nocerts", |
448 | .desc = "Do not include signer's certificate when signing", | 448 | .desc = "Do not include signer's certificate when signing", |
449 | .type = OPTION_VALUE_OR, | 449 | .type = OPTION_VALUE_OR, |
450 | .opt.value = &smime_config.flags, | 450 | .opt.value = &cfg.flags, |
451 | .value = PKCS7_NOCERTS, | 451 | .value = PKCS7_NOCERTS, |
452 | }, | 452 | }, |
453 | { | 453 | { |
454 | .name = "nochain", | 454 | .name = "nochain", |
455 | .desc = "Do not chain verification of signer's certificates", | 455 | .desc = "Do not chain verification of signer's certificates", |
456 | .type = OPTION_VALUE_OR, | 456 | .type = OPTION_VALUE_OR, |
457 | .opt.value = &smime_config.flags, | 457 | .opt.value = &cfg.flags, |
458 | .value = PKCS7_NOCHAIN, | 458 | .value = PKCS7_NOCHAIN, |
459 | }, | 459 | }, |
460 | { | 460 | { |
461 | .name = "nodetach", | 461 | .name = "nodetach", |
462 | .desc = "Use opaque signing", | 462 | .desc = "Use opaque signing", |
463 | .type = OPTION_VALUE_AND, | 463 | .type = OPTION_VALUE_AND, |
464 | .opt.value = &smime_config.flags, | 464 | .opt.value = &cfg.flags, |
465 | .value = ~PKCS7_DETACHED, | 465 | .value = ~PKCS7_DETACHED, |
466 | }, | 466 | }, |
467 | { | 467 | { |
468 | .name = "noindef", | 468 | .name = "noindef", |
469 | .desc = "Disable streaming I/O", | 469 | .desc = "Disable streaming I/O", |
470 | .type = OPTION_VALUE, | 470 | .type = OPTION_VALUE, |
471 | .opt.value = &smime_config.indef, | 471 | .opt.value = &cfg.indef, |
472 | .value = 0, | 472 | .value = 0, |
473 | }, | 473 | }, |
474 | { | 474 | { |
475 | .name = "nointern", | 475 | .name = "nointern", |
476 | .desc = "Do not search certificates in message for signer", | 476 | .desc = "Do not search certificates in message for signer", |
477 | .type = OPTION_VALUE_OR, | 477 | .type = OPTION_VALUE_OR, |
478 | .opt.value = &smime_config.flags, | 478 | .opt.value = &cfg.flags, |
479 | .value = PKCS7_NOINTERN, | 479 | .value = PKCS7_NOINTERN, |
480 | }, | 480 | }, |
481 | { | 481 | { |
482 | .name = "nooldmime", | 482 | .name = "nooldmime", |
483 | .desc = "Output old S/MIME content type", | 483 | .desc = "Output old S/MIME content type", |
484 | .type = OPTION_VALUE_OR, | 484 | .type = OPTION_VALUE_OR, |
485 | .opt.value = &smime_config.flags, | 485 | .opt.value = &cfg.flags, |
486 | .value = PKCS7_NOOLDMIMETYPE, | 486 | .value = PKCS7_NOOLDMIMETYPE, |
487 | }, | 487 | }, |
488 | { | 488 | { |
489 | .name = "nosigs", | 489 | .name = "nosigs", |
490 | .desc = "Do not verify message signature", | 490 | .desc = "Do not verify message signature", |
491 | .type = OPTION_VALUE_OR, | 491 | .type = OPTION_VALUE_OR, |
492 | .opt.value = &smime_config.flags, | 492 | .opt.value = &cfg.flags, |
493 | .value = PKCS7_NOSIGS, | 493 | .value = PKCS7_NOSIGS, |
494 | }, | 494 | }, |
495 | { | 495 | { |
496 | .name = "nosmimecap", | 496 | .name = "nosmimecap", |
497 | .desc = "Omit the SMIMECapabilities attribute", | 497 | .desc = "Omit the SMIMECapabilities attribute", |
498 | .type = OPTION_VALUE_OR, | 498 | .type = OPTION_VALUE_OR, |
499 | .opt.value = &smime_config.flags, | 499 | .opt.value = &cfg.flags, |
500 | .value = PKCS7_NOSMIMECAP, | 500 | .value = PKCS7_NOSMIMECAP, |
501 | }, | 501 | }, |
502 | { | 502 | { |
503 | .name = "noverify", | 503 | .name = "noverify", |
504 | .desc = "Do not verify signer's certificate", | 504 | .desc = "Do not verify signer's certificate", |
505 | .type = OPTION_VALUE_OR, | 505 | .type = OPTION_VALUE_OR, |
506 | .opt.value = &smime_config.flags, | 506 | .opt.value = &cfg.flags, |
507 | .value = PKCS7_NOVERIFY, | 507 | .value = PKCS7_NOVERIFY, |
508 | }, | 508 | }, |
509 | { | 509 | { |
@@ -511,27 +511,27 @@ static const struct option smime_options[] = { | |||
511 | .argname = "file", | 511 | .argname = "file", |
512 | .desc = "Output file", | 512 | .desc = "Output file", |
513 | .type = OPTION_ARG, | 513 | .type = OPTION_ARG, |
514 | .opt.arg = &smime_config.outfile, | 514 | .opt.arg = &cfg.outfile, |
515 | }, | 515 | }, |
516 | { | 516 | { |
517 | .name = "outform", | 517 | .name = "outform", |
518 | .argname = "fmt", | 518 | .argname = "fmt", |
519 | .desc = "Output format (DER, PEM or SMIME (default))", | 519 | .desc = "Output format (DER, PEM or SMIME (default))", |
520 | .type = OPTION_ARG_FORMAT, | 520 | .type = OPTION_ARG_FORMAT, |
521 | .opt.value = &smime_config.outformat, | 521 | .opt.value = &cfg.outformat, |
522 | }, | 522 | }, |
523 | { | 523 | { |
524 | .name = "passin", | 524 | .name = "passin", |
525 | .argname = "src", | 525 | .argname = "src", |
526 | .desc = "Private key password source", | 526 | .desc = "Private key password source", |
527 | .type = OPTION_ARG, | 527 | .type = OPTION_ARG, |
528 | .opt.arg = &smime_config.passargin, | 528 | .opt.arg = &cfg.passargin, |
529 | }, | 529 | }, |
530 | { | 530 | { |
531 | .name = "pk7out", | 531 | .name = "pk7out", |
532 | .desc = "Output PKCS#7 structure", | 532 | .desc = "Output PKCS#7 structure", |
533 | .type = OPTION_VALUE, | 533 | .type = OPTION_VALUE, |
534 | .opt.value = &smime_config.operation, | 534 | .opt.value = &cfg.operation, |
535 | .value = SMIME_PK7OUT, | 535 | .value = SMIME_PK7OUT, |
536 | }, | 536 | }, |
537 | { | 537 | { |
@@ -539,20 +539,20 @@ static const struct option smime_options[] = { | |||
539 | .argname = "file", | 539 | .argname = "file", |
540 | .desc = "Recipient certificate file for decryption", | 540 | .desc = "Recipient certificate file for decryption", |
541 | .type = OPTION_ARG, | 541 | .type = OPTION_ARG, |
542 | .opt.arg = &smime_config.recipfile, | 542 | .opt.arg = &cfg.recipfile, |
543 | }, | 543 | }, |
544 | { | 544 | { |
545 | .name = "resign", | 545 | .name = "resign", |
546 | .desc = "Resign a signed message", | 546 | .desc = "Resign a signed message", |
547 | .type = OPTION_VALUE, | 547 | .type = OPTION_VALUE, |
548 | .opt.value = &smime_config.operation, | 548 | .opt.value = &cfg.operation, |
549 | .value = SMIME_RESIGN, | 549 | .value = SMIME_RESIGN, |
550 | }, | 550 | }, |
551 | { | 551 | { |
552 | .name = "sign", | 552 | .name = "sign", |
553 | .desc = "Sign message", | 553 | .desc = "Sign message", |
554 | .type = OPTION_VALUE, | 554 | .type = OPTION_VALUE, |
555 | .opt.value = &smime_config.operation, | 555 | .opt.value = &cfg.operation, |
556 | .value = SMIME_SIGN, | 556 | .value = SMIME_SIGN, |
557 | }, | 557 | }, |
558 | { | 558 | { |
@@ -566,7 +566,7 @@ static const struct option smime_options[] = { | |||
566 | .name = "stream", | 566 | .name = "stream", |
567 | .desc = "Enable streaming I/O", | 567 | .desc = "Enable streaming I/O", |
568 | .type = OPTION_VALUE, | 568 | .type = OPTION_VALUE, |
569 | .opt.value = &smime_config.indef, | 569 | .opt.value = &cfg.indef, |
570 | .value = 1, | 570 | .value = 1, |
571 | }, | 571 | }, |
572 | { | 572 | { |
@@ -574,13 +574,13 @@ static const struct option smime_options[] = { | |||
574 | .argname = "s", | 574 | .argname = "s", |
575 | .desc = "Subject", | 575 | .desc = "Subject", |
576 | .type = OPTION_ARG, | 576 | .type = OPTION_ARG, |
577 | .opt.arg = &smime_config.subject, | 577 | .opt.arg = &cfg.subject, |
578 | }, | 578 | }, |
579 | { | 579 | { |
580 | .name = "text", | 580 | .name = "text", |
581 | .desc = "Include or delete text MIME headers", | 581 | .desc = "Include or delete text MIME headers", |
582 | .type = OPTION_VALUE_OR, | 582 | .type = OPTION_VALUE_OR, |
583 | .opt.value = &smime_config.flags, | 583 | .opt.value = &cfg.flags, |
584 | .value = PKCS7_TEXT, | 584 | .value = PKCS7_TEXT, |
585 | }, | 585 | }, |
586 | { | 586 | { |
@@ -588,13 +588,13 @@ static const struct option smime_options[] = { | |||
588 | .argname = "addr", | 588 | .argname = "addr", |
589 | .desc = "To address", | 589 | .desc = "To address", |
590 | .type = OPTION_ARG, | 590 | .type = OPTION_ARG, |
591 | .opt.arg = &smime_config.to, | 591 | .opt.arg = &cfg.to, |
592 | }, | 592 | }, |
593 | { | 593 | { |
594 | .name = "verify", | 594 | .name = "verify", |
595 | .desc = "Verify signed message", | 595 | .desc = "Verify signed message", |
596 | .type = OPTION_VALUE, | 596 | .type = OPTION_VALUE, |
597 | .opt.value = &smime_config.operation, | 597 | .opt.value = &cfg.operation, |
598 | .value = SMIME_VERIFY, | 598 | .value = SMIME_VERIFY, |
599 | }, | 599 | }, |
600 | { | 600 | { |
@@ -727,70 +727,70 @@ smime_main(int argc, char **argv) | |||
727 | exit(1); | 727 | exit(1); |
728 | } | 728 | } |
729 | 729 | ||
730 | memset(&smime_config, 0, sizeof(smime_config)); | 730 | memset(&cfg, 0, sizeof(cfg)); |
731 | smime_config.flags = PKCS7_DETACHED; | 731 | cfg.flags = PKCS7_DETACHED; |
732 | smime_config.informat = FORMAT_SMIME; | 732 | cfg.informat = FORMAT_SMIME; |
733 | smime_config.outformat = FORMAT_SMIME; | 733 | cfg.outformat = FORMAT_SMIME; |
734 | smime_config.keyform = FORMAT_PEM; | 734 | cfg.keyform = FORMAT_PEM; |
735 | if (options_parse(argc, argv, smime_options, NULL, &argsused) != 0) { | 735 | if (options_parse(argc, argv, smime_options, NULL, &argsused) != 0) { |
736 | goto argerr; | 736 | goto argerr; |
737 | } | 737 | } |
738 | args = argv + argsused; | 738 | args = argv + argsused; |
739 | ret = 1; | 739 | ret = 1; |
740 | 740 | ||
741 | if (!(smime_config.operation & SMIME_SIGNERS) && | 741 | if (!(cfg.operation & SMIME_SIGNERS) && |
742 | (smime_config.skkeys != NULL || smime_config.sksigners != NULL)) { | 742 | (cfg.skkeys != NULL || cfg.sksigners != NULL)) { |
743 | BIO_puts(bio_err, "Multiple signers or keys not allowed\n"); | 743 | BIO_puts(bio_err, "Multiple signers or keys not allowed\n"); |
744 | goto argerr; | 744 | goto argerr; |
745 | } | 745 | } |
746 | if (smime_config.operation & SMIME_SIGNERS) { | 746 | if (cfg.operation & SMIME_SIGNERS) { |
747 | /* Check to see if any final signer needs to be appended */ | 747 | /* Check to see if any final signer needs to be appended */ |
748 | if (smime_config.keyfile != NULL && | 748 | if (cfg.keyfile != NULL && |
749 | smime_config.signerfile == NULL) { | 749 | cfg.signerfile == NULL) { |
750 | BIO_puts(bio_err, "Illegal -inkey without -signer\n"); | 750 | BIO_puts(bio_err, "Illegal -inkey without -signer\n"); |
751 | goto argerr; | 751 | goto argerr; |
752 | } | 752 | } |
753 | if (smime_config.signerfile != NULL) { | 753 | if (cfg.signerfile != NULL) { |
754 | if (smime_config.sksigners == NULL) { | 754 | if (cfg.sksigners == NULL) { |
755 | if ((smime_config.sksigners = | 755 | if ((cfg.sksigners = |
756 | sk_OPENSSL_STRING_new_null()) == NULL) | 756 | sk_OPENSSL_STRING_new_null()) == NULL) |
757 | goto end; | 757 | goto end; |
758 | } | 758 | } |
759 | if (!sk_OPENSSL_STRING_push(smime_config.sksigners, | 759 | if (!sk_OPENSSL_STRING_push(cfg.sksigners, |
760 | smime_config.signerfile)) | 760 | cfg.signerfile)) |
761 | goto end; | 761 | goto end; |
762 | if (smime_config.skkeys == NULL) { | 762 | if (cfg.skkeys == NULL) { |
763 | if ((smime_config.skkeys = | 763 | if ((cfg.skkeys = |
764 | sk_OPENSSL_STRING_new_null()) == NULL) | 764 | sk_OPENSSL_STRING_new_null()) == NULL) |
765 | goto end; | 765 | goto end; |
766 | } | 766 | } |
767 | if (smime_config.keyfile == NULL) | 767 | if (cfg.keyfile == NULL) |
768 | smime_config.keyfile = smime_config.signerfile; | 768 | cfg.keyfile = cfg.signerfile; |
769 | if (!sk_OPENSSL_STRING_push(smime_config.skkeys, | 769 | if (!sk_OPENSSL_STRING_push(cfg.skkeys, |
770 | smime_config.keyfile)) | 770 | cfg.keyfile)) |
771 | goto end; | 771 | goto end; |
772 | } | 772 | } |
773 | if (smime_config.sksigners == NULL) { | 773 | if (cfg.sksigners == NULL) { |
774 | BIO_printf(bio_err, | 774 | BIO_printf(bio_err, |
775 | "No signer certificate specified\n"); | 775 | "No signer certificate specified\n"); |
776 | badarg = 1; | 776 | badarg = 1; |
777 | } | 777 | } |
778 | smime_config.signerfile = NULL; | 778 | cfg.signerfile = NULL; |
779 | smime_config.keyfile = NULL; | 779 | cfg.keyfile = NULL; |
780 | } else if (smime_config.operation == SMIME_DECRYPT) { | 780 | } else if (cfg.operation == SMIME_DECRYPT) { |
781 | if (smime_config.recipfile == NULL && | 781 | if (cfg.recipfile == NULL && |
782 | smime_config.keyfile == NULL) { | 782 | cfg.keyfile == NULL) { |
783 | BIO_printf(bio_err, | 783 | BIO_printf(bio_err, |
784 | "No recipient certificate or key specified\n"); | 784 | "No recipient certificate or key specified\n"); |
785 | badarg = 1; | 785 | badarg = 1; |
786 | } | 786 | } |
787 | } else if (smime_config.operation == SMIME_ENCRYPT) { | 787 | } else if (cfg.operation == SMIME_ENCRYPT) { |
788 | if (*args == NULL) { | 788 | if (*args == NULL) { |
789 | BIO_printf(bio_err, | 789 | BIO_printf(bio_err, |
790 | "No recipient(s) certificate(s) specified\n"); | 790 | "No recipient(s) certificate(s) specified\n"); |
791 | badarg = 1; | 791 | badarg = 1; |
792 | } | 792 | } |
793 | } else if (!smime_config.operation) { | 793 | } else if (!cfg.operation) { |
794 | badarg = 1; | 794 | badarg = 1; |
795 | } | 795 | } |
796 | 796 | ||
@@ -800,35 +800,35 @@ smime_main(int argc, char **argv) | |||
800 | goto end; | 800 | goto end; |
801 | } | 801 | } |
802 | 802 | ||
803 | if (!app_passwd(bio_err, smime_config.passargin, NULL, &passin, NULL)) { | 803 | if (!app_passwd(bio_err, cfg.passargin, NULL, &passin, NULL)) { |
804 | BIO_printf(bio_err, "Error getting password\n"); | 804 | BIO_printf(bio_err, "Error getting password\n"); |
805 | goto end; | 805 | goto end; |
806 | } | 806 | } |
807 | ret = 2; | 807 | ret = 2; |
808 | 808 | ||
809 | if (!(smime_config.operation & SMIME_SIGNERS)) | 809 | if (!(cfg.operation & SMIME_SIGNERS)) |
810 | smime_config.flags &= ~PKCS7_DETACHED; | 810 | cfg.flags &= ~PKCS7_DETACHED; |
811 | 811 | ||
812 | if (smime_config.operation & SMIME_OP) { | 812 | if (cfg.operation & SMIME_OP) { |
813 | if (smime_config.outformat == FORMAT_ASN1) | 813 | if (cfg.outformat == FORMAT_ASN1) |
814 | outmode = "wb"; | 814 | outmode = "wb"; |
815 | } else { | 815 | } else { |
816 | if (smime_config.flags & PKCS7_BINARY) | 816 | if (cfg.flags & PKCS7_BINARY) |
817 | outmode = "wb"; | 817 | outmode = "wb"; |
818 | } | 818 | } |
819 | 819 | ||
820 | if (smime_config.operation & SMIME_IP) { | 820 | if (cfg.operation & SMIME_IP) { |
821 | if (smime_config.informat == FORMAT_ASN1) | 821 | if (cfg.informat == FORMAT_ASN1) |
822 | inmode = "rb"; | 822 | inmode = "rb"; |
823 | } else { | 823 | } else { |
824 | if (smime_config.flags & PKCS7_BINARY) | 824 | if (cfg.flags & PKCS7_BINARY) |
825 | inmode = "rb"; | 825 | inmode = "rb"; |
826 | } | 826 | } |
827 | 827 | ||
828 | if (smime_config.operation == SMIME_ENCRYPT) { | 828 | if (cfg.operation == SMIME_ENCRYPT) { |
829 | if (smime_config.cipher == NULL) { | 829 | if (cfg.cipher == NULL) { |
830 | #ifndef OPENSSL_NO_RC2 | 830 | #ifndef OPENSSL_NO_RC2 |
831 | smime_config.cipher = EVP_rc2_40_cbc(); | 831 | cfg.cipher = EVP_rc2_40_cbc(); |
832 | #else | 832 | #else |
833 | BIO_printf(bio_err, "No cipher selected\n"); | 833 | BIO_printf(bio_err, "No cipher selected\n"); |
834 | goto end; | 834 | goto end; |
@@ -847,41 +847,41 @@ smime_main(int argc, char **argv) | |||
847 | args++; | 847 | args++; |
848 | } | 848 | } |
849 | } | 849 | } |
850 | if (smime_config.certfile != NULL) { | 850 | if (cfg.certfile != NULL) { |
851 | if ((other = load_certs(bio_err, smime_config.certfile, | 851 | if ((other = load_certs(bio_err, cfg.certfile, |
852 | FORMAT_PEM, NULL, "certificate file")) == NULL) { | 852 | FORMAT_PEM, NULL, "certificate file")) == NULL) { |
853 | ERR_print_errors(bio_err); | 853 | ERR_print_errors(bio_err); |
854 | goto end; | 854 | goto end; |
855 | } | 855 | } |
856 | } | 856 | } |
857 | if (smime_config.recipfile != NULL && | 857 | if (cfg.recipfile != NULL && |
858 | (smime_config.operation == SMIME_DECRYPT)) { | 858 | (cfg.operation == SMIME_DECRYPT)) { |
859 | if ((recip = load_cert(bio_err, smime_config.recipfile, | 859 | if ((recip = load_cert(bio_err, cfg.recipfile, |
860 | FORMAT_PEM, NULL, "recipient certificate file")) == NULL) { | 860 | FORMAT_PEM, NULL, "recipient certificate file")) == NULL) { |
861 | ERR_print_errors(bio_err); | 861 | ERR_print_errors(bio_err); |
862 | goto end; | 862 | goto end; |
863 | } | 863 | } |
864 | } | 864 | } |
865 | if (smime_config.operation == SMIME_DECRYPT) { | 865 | if (cfg.operation == SMIME_DECRYPT) { |
866 | if (smime_config.keyfile == NULL) | 866 | if (cfg.keyfile == NULL) |
867 | smime_config.keyfile = smime_config.recipfile; | 867 | cfg.keyfile = cfg.recipfile; |
868 | } else if (smime_config.operation == SMIME_SIGN) { | 868 | } else if (cfg.operation == SMIME_SIGN) { |
869 | if (smime_config.keyfile == NULL) | 869 | if (cfg.keyfile == NULL) |
870 | smime_config.keyfile = smime_config.signerfile; | 870 | cfg.keyfile = cfg.signerfile; |
871 | } else { | 871 | } else { |
872 | smime_config.keyfile = NULL; | 872 | cfg.keyfile = NULL; |
873 | } | 873 | } |
874 | 874 | ||
875 | if (smime_config.keyfile != NULL) { | 875 | if (cfg.keyfile != NULL) { |
876 | key = load_key(bio_err, smime_config.keyfile, | 876 | key = load_key(bio_err, cfg.keyfile, |
877 | smime_config.keyform, 0, passin, "signing key file"); | 877 | cfg.keyform, 0, passin, "signing key file"); |
878 | if (key == NULL) | 878 | if (key == NULL) |
879 | goto end; | 879 | goto end; |
880 | } | 880 | } |
881 | if (smime_config.infile != NULL) { | 881 | if (cfg.infile != NULL) { |
882 | if ((in = BIO_new_file(smime_config.infile, inmode)) == NULL) { | 882 | if ((in = BIO_new_file(cfg.infile, inmode)) == NULL) { |
883 | BIO_printf(bio_err, | 883 | BIO_printf(bio_err, |
884 | "Can't open input file %s\n", smime_config.infile); | 884 | "Can't open input file %s\n", cfg.infile); |
885 | goto end; | 885 | goto end; |
886 | } | 886 | } |
887 | } else { | 887 | } else { |
@@ -889,12 +889,12 @@ smime_main(int argc, char **argv) | |||
889 | goto end; | 889 | goto end; |
890 | } | 890 | } |
891 | 891 | ||
892 | if (smime_config.operation & SMIME_IP) { | 892 | if (cfg.operation & SMIME_IP) { |
893 | if (smime_config.informat == FORMAT_SMIME) | 893 | if (cfg.informat == FORMAT_SMIME) |
894 | p7 = SMIME_read_PKCS7(in, &indata); | 894 | p7 = SMIME_read_PKCS7(in, &indata); |
895 | else if (smime_config.informat == FORMAT_PEM) | 895 | else if (cfg.informat == FORMAT_PEM) |
896 | p7 = PEM_read_bio_PKCS7(in, NULL, NULL, NULL); | 896 | p7 = PEM_read_bio_PKCS7(in, NULL, NULL, NULL); |
897 | else if (smime_config.informat == FORMAT_ASN1) | 897 | else if (cfg.informat == FORMAT_ASN1) |
898 | p7 = d2i_PKCS7_bio(in, NULL); | 898 | p7 = d2i_PKCS7_bio(in, NULL); |
899 | else { | 899 | else { |
900 | BIO_printf(bio_err, | 900 | BIO_printf(bio_err, |
@@ -906,22 +906,22 @@ smime_main(int argc, char **argv) | |||
906 | BIO_printf(bio_err, "Error reading S/MIME message\n"); | 906 | BIO_printf(bio_err, "Error reading S/MIME message\n"); |
907 | goto end; | 907 | goto end; |
908 | } | 908 | } |
909 | if (smime_config.contfile != NULL) { | 909 | if (cfg.contfile != NULL) { |
910 | BIO_free(indata); | 910 | BIO_free(indata); |
911 | if ((indata = BIO_new_file(smime_config.contfile, | 911 | if ((indata = BIO_new_file(cfg.contfile, |
912 | "rb")) == NULL) { | 912 | "rb")) == NULL) { |
913 | BIO_printf(bio_err, | 913 | BIO_printf(bio_err, |
914 | "Can't read content file %s\n", | 914 | "Can't read content file %s\n", |
915 | smime_config.contfile); | 915 | cfg.contfile); |
916 | goto end; | 916 | goto end; |
917 | } | 917 | } |
918 | } | 918 | } |
919 | } | 919 | } |
920 | if (smime_config.outfile != NULL) { | 920 | if (cfg.outfile != NULL) { |
921 | if ((out = BIO_new_file(smime_config.outfile, outmode)) == NULL) { | 921 | if ((out = BIO_new_file(cfg.outfile, outmode)) == NULL) { |
922 | BIO_printf(bio_err, | 922 | BIO_printf(bio_err, |
923 | "Can't open output file %s\n", | 923 | "Can't open output file %s\n", |
924 | smime_config.outfile); | 924 | cfg.outfile); |
925 | goto end; | 925 | goto end; |
926 | } | 926 | } |
927 | } else { | 927 | } else { |
@@ -929,60 +929,60 @@ smime_main(int argc, char **argv) | |||
929 | goto end; | 929 | goto end; |
930 | } | 930 | } |
931 | 931 | ||
932 | if (smime_config.operation == SMIME_VERIFY) { | 932 | if (cfg.operation == SMIME_VERIFY) { |
933 | if ((store = setup_verify(bio_err, smime_config.CAfile, | 933 | if ((store = setup_verify(bio_err, cfg.CAfile, |
934 | smime_config.CApath)) == NULL) | 934 | cfg.CApath)) == NULL) |
935 | goto end; | 935 | goto end; |
936 | X509_STORE_set_verify_cb(store, smime_cb); | 936 | X509_STORE_set_verify_cb(store, smime_cb); |
937 | if (smime_config.vpm != NULL) { | 937 | if (cfg.vpm != NULL) { |
938 | if (!X509_STORE_set1_param(store, smime_config.vpm)) | 938 | if (!X509_STORE_set1_param(store, cfg.vpm)) |
939 | goto end; | 939 | goto end; |
940 | } | 940 | } |
941 | } | 941 | } |
942 | ret = 3; | 942 | ret = 3; |
943 | 943 | ||
944 | if (smime_config.operation == SMIME_ENCRYPT) { | 944 | if (cfg.operation == SMIME_ENCRYPT) { |
945 | if (smime_config.indef) | 945 | if (cfg.indef) |
946 | smime_config.flags |= PKCS7_STREAM; | 946 | cfg.flags |= PKCS7_STREAM; |
947 | p7 = PKCS7_encrypt(encerts, in, smime_config.cipher, | 947 | p7 = PKCS7_encrypt(encerts, in, cfg.cipher, |
948 | smime_config.flags); | 948 | cfg.flags); |
949 | } else if (smime_config.operation & SMIME_SIGNERS) { | 949 | } else if (cfg.operation & SMIME_SIGNERS) { |
950 | int i; | 950 | int i; |
951 | /* | 951 | /* |
952 | * If detached data content we only enable streaming if | 952 | * If detached data content we only enable streaming if |
953 | * S/MIME output format. | 953 | * S/MIME output format. |
954 | */ | 954 | */ |
955 | if (smime_config.operation == SMIME_SIGN) { | 955 | if (cfg.operation == SMIME_SIGN) { |
956 | if (smime_config.flags & PKCS7_DETACHED) { | 956 | if (cfg.flags & PKCS7_DETACHED) { |
957 | if (smime_config.outformat == FORMAT_SMIME) | 957 | if (cfg.outformat == FORMAT_SMIME) |
958 | smime_config.flags |= PKCS7_STREAM; | 958 | cfg.flags |= PKCS7_STREAM; |
959 | } else if (smime_config.indef) { | 959 | } else if (cfg.indef) { |
960 | smime_config.flags |= PKCS7_STREAM; | 960 | cfg.flags |= PKCS7_STREAM; |
961 | } | 961 | } |
962 | smime_config.flags |= PKCS7_PARTIAL; | 962 | cfg.flags |= PKCS7_PARTIAL; |
963 | p7 = PKCS7_sign(NULL, NULL, other, in, | 963 | p7 = PKCS7_sign(NULL, NULL, other, in, |
964 | smime_config.flags); | 964 | cfg.flags); |
965 | if (p7 == NULL) | 965 | if (p7 == NULL) |
966 | goto end; | 966 | goto end; |
967 | } else { | 967 | } else { |
968 | smime_config.flags |= PKCS7_REUSE_DIGEST; | 968 | cfg.flags |= PKCS7_REUSE_DIGEST; |
969 | } | 969 | } |
970 | for (i = 0; i < sk_OPENSSL_STRING_num(smime_config.sksigners); i++) { | 970 | for (i = 0; i < sk_OPENSSL_STRING_num(cfg.sksigners); i++) { |
971 | smime_config.signerfile = | 971 | cfg.signerfile = |
972 | sk_OPENSSL_STRING_value(smime_config.sksigners, i); | 972 | sk_OPENSSL_STRING_value(cfg.sksigners, i); |
973 | smime_config.keyfile = | 973 | cfg.keyfile = |
974 | sk_OPENSSL_STRING_value(smime_config.skkeys, i); | 974 | sk_OPENSSL_STRING_value(cfg.skkeys, i); |
975 | signer = load_cert(bio_err, smime_config.signerfile, | 975 | signer = load_cert(bio_err, cfg.signerfile, |
976 | FORMAT_PEM, NULL, "signer certificate"); | 976 | FORMAT_PEM, NULL, "signer certificate"); |
977 | if (signer == NULL) | 977 | if (signer == NULL) |
978 | goto end; | 978 | goto end; |
979 | key = load_key(bio_err, smime_config.keyfile, | 979 | key = load_key(bio_err, cfg.keyfile, |
980 | smime_config.keyform, 0, passin, | 980 | cfg.keyform, 0, passin, |
981 | "signing key file"); | 981 | "signing key file"); |
982 | if (key == NULL) | 982 | if (key == NULL) |
983 | goto end; | 983 | goto end; |
984 | if (PKCS7_sign_add_signer(p7, signer, key, | 984 | if (PKCS7_sign_add_signer(p7, signer, key, |
985 | smime_config.sign_md, smime_config.flags) == NULL) | 985 | cfg.sign_md, cfg.flags) == NULL) |
986 | goto end; | 986 | goto end; |
987 | X509_free(signer); | 987 | X509_free(signer); |
988 | signer = NULL; | 988 | signer = NULL; |
@@ -990,9 +990,9 @@ smime_main(int argc, char **argv) | |||
990 | key = NULL; | 990 | key = NULL; |
991 | } | 991 | } |
992 | /* If not streaming or resigning finalize structure */ | 992 | /* If not streaming or resigning finalize structure */ |
993 | if ((smime_config.operation == SMIME_SIGN) && | 993 | if ((cfg.operation == SMIME_SIGN) && |
994 | !(smime_config.flags & PKCS7_STREAM)) { | 994 | !(cfg.flags & PKCS7_STREAM)) { |
995 | if (!PKCS7_final(p7, in, smime_config.flags)) | 995 | if (!PKCS7_final(p7, in, cfg.flags)) |
996 | goto end; | 996 | goto end; |
997 | } | 997 | } |
998 | } | 998 | } |
@@ -1002,58 +1002,58 @@ smime_main(int argc, char **argv) | |||
1002 | } | 1002 | } |
1003 | ret = 4; | 1003 | ret = 4; |
1004 | 1004 | ||
1005 | if (smime_config.operation == SMIME_DECRYPT) { | 1005 | if (cfg.operation == SMIME_DECRYPT) { |
1006 | if (!PKCS7_decrypt(p7, key, recip, out, smime_config.flags)) { | 1006 | if (!PKCS7_decrypt(p7, key, recip, out, cfg.flags)) { |
1007 | BIO_printf(bio_err, | 1007 | BIO_printf(bio_err, |
1008 | "Error decrypting PKCS#7 structure\n"); | 1008 | "Error decrypting PKCS#7 structure\n"); |
1009 | goto end; | 1009 | goto end; |
1010 | } | 1010 | } |
1011 | } else if (smime_config.operation == SMIME_VERIFY) { | 1011 | } else if (cfg.operation == SMIME_VERIFY) { |
1012 | STACK_OF(X509) *signers; | 1012 | STACK_OF(X509) *signers; |
1013 | if (PKCS7_verify(p7, other, store, indata, out, | 1013 | if (PKCS7_verify(p7, other, store, indata, out, |
1014 | smime_config.flags)) { | 1014 | cfg.flags)) { |
1015 | BIO_printf(bio_err, "Verification successful\n"); | 1015 | BIO_printf(bio_err, "Verification successful\n"); |
1016 | } else { | 1016 | } else { |
1017 | BIO_printf(bio_err, "Verification failure\n"); | 1017 | BIO_printf(bio_err, "Verification failure\n"); |
1018 | goto end; | 1018 | goto end; |
1019 | } | 1019 | } |
1020 | if ((signers = PKCS7_get0_signers(p7, other, | 1020 | if ((signers = PKCS7_get0_signers(p7, other, |
1021 | smime_config.flags)) == NULL) | 1021 | cfg.flags)) == NULL) |
1022 | goto end; | 1022 | goto end; |
1023 | if (!save_certs(smime_config.signerfile, signers)) { | 1023 | if (!save_certs(cfg.signerfile, signers)) { |
1024 | BIO_printf(bio_err, "Error writing signers to %s\n", | 1024 | BIO_printf(bio_err, "Error writing signers to %s\n", |
1025 | smime_config.signerfile); | 1025 | cfg.signerfile); |
1026 | sk_X509_free(signers); | 1026 | sk_X509_free(signers); |
1027 | ret = 5; | 1027 | ret = 5; |
1028 | goto end; | 1028 | goto end; |
1029 | } | 1029 | } |
1030 | sk_X509_free(signers); | 1030 | sk_X509_free(signers); |
1031 | } else if (smime_config.operation == SMIME_PK7OUT) { | 1031 | } else if (cfg.operation == SMIME_PK7OUT) { |
1032 | PEM_write_bio_PKCS7(out, p7); | 1032 | PEM_write_bio_PKCS7(out, p7); |
1033 | } else { | 1033 | } else { |
1034 | if (smime_config.to != NULL) | 1034 | if (cfg.to != NULL) |
1035 | BIO_printf(out, "To: %s\n", smime_config.to); | 1035 | BIO_printf(out, "To: %s\n", cfg.to); |
1036 | if (smime_config.from != NULL) | 1036 | if (cfg.from != NULL) |
1037 | BIO_printf(out, "From: %s\n", smime_config.from); | 1037 | BIO_printf(out, "From: %s\n", cfg.from); |
1038 | if (smime_config.subject != NULL) | 1038 | if (cfg.subject != NULL) |
1039 | BIO_printf(out, "Subject: %s\n", smime_config.subject); | 1039 | BIO_printf(out, "Subject: %s\n", cfg.subject); |
1040 | if (smime_config.outformat == FORMAT_SMIME) { | 1040 | if (cfg.outformat == FORMAT_SMIME) { |
1041 | if (smime_config.operation == SMIME_RESIGN) { | 1041 | if (cfg.operation == SMIME_RESIGN) { |
1042 | if (!SMIME_write_PKCS7(out, p7, indata, | 1042 | if (!SMIME_write_PKCS7(out, p7, indata, |
1043 | smime_config.flags)) | 1043 | cfg.flags)) |
1044 | goto end; | 1044 | goto end; |
1045 | } else { | 1045 | } else { |
1046 | if (!SMIME_write_PKCS7(out, p7, in, | 1046 | if (!SMIME_write_PKCS7(out, p7, in, |
1047 | smime_config.flags)) | 1047 | cfg.flags)) |
1048 | goto end; | 1048 | goto end; |
1049 | } | 1049 | } |
1050 | } else if (smime_config.outformat == FORMAT_PEM) { | 1050 | } else if (cfg.outformat == FORMAT_PEM) { |
1051 | if (!PEM_write_bio_PKCS7_stream(out, p7, in, | 1051 | if (!PEM_write_bio_PKCS7_stream(out, p7, in, |
1052 | smime_config.flags)) | 1052 | cfg.flags)) |
1053 | goto end; | 1053 | goto end; |
1054 | } else if (smime_config.outformat == FORMAT_ASN1) { | 1054 | } else if (cfg.outformat == FORMAT_ASN1) { |
1055 | if (!i2d_PKCS7_bio_stream(out, p7, in, | 1055 | if (!i2d_PKCS7_bio_stream(out, p7, in, |
1056 | smime_config.flags)) | 1056 | cfg.flags)) |
1057 | goto end; | 1057 | goto end; |
1058 | } else { | 1058 | } else { |
1059 | BIO_printf(bio_err, | 1059 | BIO_printf(bio_err, |
@@ -1069,9 +1069,9 @@ smime_main(int argc, char **argv) | |||
1069 | ERR_print_errors(bio_err); | 1069 | ERR_print_errors(bio_err); |
1070 | sk_X509_pop_free(encerts, X509_free); | 1070 | sk_X509_pop_free(encerts, X509_free); |
1071 | sk_X509_pop_free(other, X509_free); | 1071 | sk_X509_pop_free(other, X509_free); |
1072 | X509_VERIFY_PARAM_free(smime_config.vpm); | 1072 | X509_VERIFY_PARAM_free(cfg.vpm); |
1073 | sk_OPENSSL_STRING_free(smime_config.sksigners); | 1073 | sk_OPENSSL_STRING_free(cfg.sksigners); |
1074 | sk_OPENSSL_STRING_free(smime_config.skkeys); | 1074 | sk_OPENSSL_STRING_free(cfg.skkeys); |
1075 | X509_STORE_free(store); | 1075 | X509_STORE_free(store); |
1076 | X509_free(cert); | 1076 | X509_free(cert); |
1077 | X509_free(recip); | 1077 | X509_free(recip); |
diff --git a/src/usr.bin/openssl/spkac.c b/src/usr.bin/openssl/spkac.c index 3a45d5d4bc..12d530e3cf 100644 --- a/src/usr.bin/openssl/spkac.c +++ b/src/usr.bin/openssl/spkac.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: spkac.c,v 1.12 2022/11/11 17:07:39 joshua Exp $ */ | 1 | /* $OpenBSD: spkac.c,v 1.13 2023/03/06 14:32:06 tb 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 1999. Based on an original idea by Massimiliano Pala | 3 | * project 1999. Based on an original idea by Massimiliano Pala |
4 | * (madwolf@openca.org). | 4 | * (madwolf@openca.org). |
@@ -84,7 +84,7 @@ static struct { | |||
84 | char *spkac; | 84 | char *spkac; |
85 | char *spksect; | 85 | char *spksect; |
86 | int verify; | 86 | int verify; |
87 | } spkac_config; | 87 | } cfg; |
88 | 88 | ||
89 | static const struct option spkac_options[] = { | 89 | static const struct option spkac_options[] = { |
90 | { | 90 | { |
@@ -92,54 +92,54 @@ static const struct option spkac_options[] = { | |||
92 | .argname = "string", | 92 | .argname = "string", |
93 | .desc = "Specify challenge string if SPKAC is generated", | 93 | .desc = "Specify challenge string if SPKAC is generated", |
94 | .type = OPTION_ARG, | 94 | .type = OPTION_ARG, |
95 | .opt.arg = &spkac_config.challenge, | 95 | .opt.arg = &cfg.challenge, |
96 | }, | 96 | }, |
97 | { | 97 | { |
98 | .name = "in", | 98 | .name = "in", |
99 | .argname = "file", | 99 | .argname = "file", |
100 | .desc = "Input file (default stdin)", | 100 | .desc = "Input file (default stdin)", |
101 | .type = OPTION_ARG, | 101 | .type = OPTION_ARG, |
102 | .opt.arg = &spkac_config.infile, | 102 | .opt.arg = &cfg.infile, |
103 | }, | 103 | }, |
104 | { | 104 | { |
105 | .name = "key", | 105 | .name = "key", |
106 | .argname = "file", | 106 | .argname = "file", |
107 | .desc = "Create SPKAC using private key file", | 107 | .desc = "Create SPKAC using private key file", |
108 | .type = OPTION_ARG, | 108 | .type = OPTION_ARG, |
109 | .opt.arg = &spkac_config.keyfile, | 109 | .opt.arg = &cfg.keyfile, |
110 | }, | 110 | }, |
111 | { | 111 | { |
112 | .name = "noout", | 112 | .name = "noout", |
113 | .desc = "Do not print text version of SPKAC", | 113 | .desc = "Do not print text version of SPKAC", |
114 | .type = OPTION_FLAG, | 114 | .type = OPTION_FLAG, |
115 | .opt.flag = &spkac_config.noout, | 115 | .opt.flag = &cfg.noout, |
116 | }, | 116 | }, |
117 | { | 117 | { |
118 | .name = "out", | 118 | .name = "out", |
119 | .argname = "file", | 119 | .argname = "file", |
120 | .desc = "Output file (default stdout)", | 120 | .desc = "Output file (default stdout)", |
121 | .type = OPTION_ARG, | 121 | .type = OPTION_ARG, |
122 | .opt.arg = &spkac_config.outfile, | 122 | .opt.arg = &cfg.outfile, |
123 | }, | 123 | }, |
124 | { | 124 | { |
125 | .name = "passin", | 125 | .name = "passin", |
126 | .argname = "src", | 126 | .argname = "src", |
127 | .desc = "Input file passphrase source", | 127 | .desc = "Input file passphrase source", |
128 | .type = OPTION_ARG, | 128 | .type = OPTION_ARG, |
129 | .opt.arg = &spkac_config.passargin, | 129 | .opt.arg = &cfg.passargin, |
130 | }, | 130 | }, |
131 | { | 131 | { |
132 | .name = "pubkey", | 132 | .name = "pubkey", |
133 | .desc = "Output public key of an SPKAC (not used if creating)", | 133 | .desc = "Output public key of an SPKAC (not used if creating)", |
134 | .type = OPTION_FLAG, | 134 | .type = OPTION_FLAG, |
135 | .opt.flag = &spkac_config.pubkey, | 135 | .opt.flag = &cfg.pubkey, |
136 | }, | 136 | }, |
137 | { | 137 | { |
138 | .name = "spkac", | 138 | .name = "spkac", |
139 | .argname = "name", | 139 | .argname = "name", |
140 | .desc = "SPKAC name (default \"SPKAC\")", | 140 | .desc = "SPKAC name (default \"SPKAC\")", |
141 | .type = OPTION_ARG, | 141 | .type = OPTION_ARG, |
142 | .opt.arg = &spkac_config.spkac, | 142 | .opt.arg = &cfg.spkac, |
143 | }, | 143 | }, |
144 | { | 144 | { |
145 | .name = "spksect", | 145 | .name = "spksect", |
@@ -147,13 +147,13 @@ static const struct option spkac_options[] = { | |||
147 | .desc = "Name of the section containing SPKAC (default" | 147 | .desc = "Name of the section containing SPKAC (default" |
148 | " \"default\")", | 148 | " \"default\")", |
149 | .type = OPTION_ARG, | 149 | .type = OPTION_ARG, |
150 | .opt.arg = &spkac_config.spksect, | 150 | .opt.arg = &cfg.spksect, |
151 | }, | 151 | }, |
152 | { | 152 | { |
153 | .name = "verify", | 153 | .name = "verify", |
154 | .desc = "Verify digital signature on supplied SPKAC", | 154 | .desc = "Verify digital signature on supplied SPKAC", |
155 | .type = OPTION_FLAG, | 155 | .type = OPTION_FLAG, |
156 | .opt.flag = &spkac_config.verify, | 156 | .opt.flag = &cfg.verify, |
157 | }, | 157 | }, |
158 | { NULL } | 158 | { NULL } |
159 | }; | 159 | }; |
@@ -186,32 +186,32 @@ spkac_main(int argc, char **argv) | |||
186 | exit(1); | 186 | exit(1); |
187 | } | 187 | } |
188 | 188 | ||
189 | memset(&spkac_config, 0, sizeof(spkac_config)); | 189 | memset(&cfg, 0, sizeof(cfg)); |
190 | spkac_config.spkac = "SPKAC"; | 190 | cfg.spkac = "SPKAC"; |
191 | spkac_config.spksect = "default"; | 191 | cfg.spksect = "default"; |
192 | 192 | ||
193 | if (options_parse(argc, argv, spkac_options, NULL, NULL) != 0) { | 193 | if (options_parse(argc, argv, spkac_options, NULL, NULL) != 0) { |
194 | spkac_usage(); | 194 | spkac_usage(); |
195 | return (1); | 195 | return (1); |
196 | } | 196 | } |
197 | 197 | ||
198 | if (!app_passwd(bio_err, spkac_config.passargin, NULL, &passin, NULL)) { | 198 | if (!app_passwd(bio_err, cfg.passargin, NULL, &passin, NULL)) { |
199 | BIO_printf(bio_err, "Error getting password\n"); | 199 | BIO_printf(bio_err, "Error getting password\n"); |
200 | goto end; | 200 | goto end; |
201 | } | 201 | } |
202 | 202 | ||
203 | if (spkac_config.keyfile) { | 203 | if (cfg.keyfile) { |
204 | pkey = load_key(bio_err, | 204 | pkey = load_key(bio_err, |
205 | strcmp(spkac_config.keyfile, "-") ? spkac_config.keyfile | 205 | strcmp(cfg.keyfile, "-") ? cfg.keyfile |
206 | : NULL, FORMAT_PEM, 1, passin, "private key"); | 206 | : NULL, FORMAT_PEM, 1, passin, "private key"); |
207 | if (!pkey) { | 207 | if (!pkey) { |
208 | goto end; | 208 | goto end; |
209 | } | 209 | } |
210 | spki = NETSCAPE_SPKI_new(); | 210 | spki = NETSCAPE_SPKI_new(); |
211 | if (spkac_config.challenge) | 211 | if (cfg.challenge) |
212 | ASN1_STRING_set(spki->spkac->challenge, | 212 | ASN1_STRING_set(spki->spkac->challenge, |
213 | spkac_config.challenge, | 213 | cfg.challenge, |
214 | (int) strlen(spkac_config.challenge)); | 214 | (int) strlen(cfg.challenge)); |
215 | NETSCAPE_SPKI_set_pubkey(spki, pkey); | 215 | NETSCAPE_SPKI_set_pubkey(spki, pkey); |
216 | NETSCAPE_SPKI_sign(spki, pkey, EVP_md5()); | 216 | NETSCAPE_SPKI_sign(spki, pkey, EVP_md5()); |
217 | spkstr = NETSCAPE_SPKI_b64_encode(spki); | 217 | spkstr = NETSCAPE_SPKI_b64_encode(spki); |
@@ -221,8 +221,8 @@ spkac_main(int argc, char **argv) | |||
221 | goto end; | 221 | goto end; |
222 | } | 222 | } |
223 | 223 | ||
224 | if (spkac_config.outfile) | 224 | if (cfg.outfile) |
225 | out = BIO_new_file(spkac_config.outfile, "w"); | 225 | out = BIO_new_file(cfg.outfile, "w"); |
226 | else | 226 | else |
227 | out = BIO_new_fp(stdout, BIO_NOCLOSE); | 227 | out = BIO_new_fp(stdout, BIO_NOCLOSE); |
228 | 228 | ||
@@ -236,8 +236,8 @@ spkac_main(int argc, char **argv) | |||
236 | free(spkstr); | 236 | free(spkstr); |
237 | goto end; | 237 | goto end; |
238 | } | 238 | } |
239 | if (spkac_config.infile) | 239 | if (cfg.infile) |
240 | in = BIO_new_file(spkac_config.infile, "r"); | 240 | in = BIO_new_file(cfg.infile, "r"); |
241 | else | 241 | else |
242 | in = BIO_new_fp(stdin, BIO_NOCLOSE); | 242 | in = BIO_new_fp(stdin, BIO_NOCLOSE); |
243 | 243 | ||
@@ -254,12 +254,12 @@ spkac_main(int argc, char **argv) | |||
254 | ERR_print_errors(bio_err); | 254 | ERR_print_errors(bio_err); |
255 | goto end; | 255 | goto end; |
256 | } | 256 | } |
257 | spkstr = NCONF_get_string(conf, spkac_config.spksect, | 257 | spkstr = NCONF_get_string(conf, cfg.spksect, |
258 | spkac_config.spkac); | 258 | cfg.spkac); |
259 | 259 | ||
260 | if (!spkstr) { | 260 | if (!spkstr) { |
261 | BIO_printf(bio_err, "Can't find SPKAC called \"%s\"\n", | 261 | BIO_printf(bio_err, "Can't find SPKAC called \"%s\"\n", |
262 | spkac_config.spkac); | 262 | cfg.spkac); |
263 | ERR_print_errors(bio_err); | 263 | ERR_print_errors(bio_err); |
264 | goto end; | 264 | goto end; |
265 | } | 265 | } |
@@ -270,8 +270,8 @@ spkac_main(int argc, char **argv) | |||
270 | ERR_print_errors(bio_err); | 270 | ERR_print_errors(bio_err); |
271 | goto end; | 271 | goto end; |
272 | } | 272 | } |
273 | if (spkac_config.outfile) | 273 | if (cfg.outfile) |
274 | out = BIO_new_file(spkac_config.outfile, "w"); | 274 | out = BIO_new_file(cfg.outfile, "w"); |
275 | else { | 275 | else { |
276 | out = BIO_new_fp(stdout, BIO_NOCLOSE); | 276 | out = BIO_new_fp(stdout, BIO_NOCLOSE); |
277 | } | 277 | } |
@@ -281,10 +281,10 @@ spkac_main(int argc, char **argv) | |||
281 | ERR_print_errors(bio_err); | 281 | ERR_print_errors(bio_err); |
282 | goto end; | 282 | goto end; |
283 | } | 283 | } |
284 | if (!spkac_config.noout) | 284 | if (!cfg.noout) |
285 | NETSCAPE_SPKI_print(out, spki); | 285 | NETSCAPE_SPKI_print(out, spki); |
286 | pkey = NETSCAPE_SPKI_get_pubkey(spki); | 286 | pkey = NETSCAPE_SPKI_get_pubkey(spki); |
287 | if (spkac_config.verify) { | 287 | if (cfg.verify) { |
288 | i = NETSCAPE_SPKI_verify(spki, pkey); | 288 | i = NETSCAPE_SPKI_verify(spki, pkey); |
289 | if (i > 0) | 289 | if (i > 0) |
290 | BIO_printf(bio_err, "Signature OK\n"); | 290 | BIO_printf(bio_err, "Signature OK\n"); |
@@ -294,7 +294,7 @@ spkac_main(int argc, char **argv) | |||
294 | goto end; | 294 | goto end; |
295 | } | 295 | } |
296 | } | 296 | } |
297 | if (spkac_config.pubkey) | 297 | if (cfg.pubkey) |
298 | PEM_write_bio_PUBKEY(out, pkey); | 298 | PEM_write_bio_PUBKEY(out, pkey); |
299 | 299 | ||
300 | ret = 0; | 300 | ret = 0; |
diff --git a/src/usr.bin/openssl/ts.c b/src/usr.bin/openssl/ts.c index 05387de130..84008183e7 100644 --- a/src/usr.bin/openssl/ts.c +++ b/src/usr.bin/openssl/ts.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ts.c,v 1.25 2022/11/11 17:07:39 joshua Exp $ */ | 1 | /* $OpenBSD: ts.c,v 1.26 2023/03/06 14:32:06 tb Exp $ */ |
2 | /* Written by Zoltan Glozik (zglozik@stones.com) for the OpenSSL | 2 | /* Written by Zoltan Glozik (zglozik@stones.com) for the OpenSSL |
3 | * project 2002. | 3 | * project 2002. |
4 | */ | 4 | */ |
@@ -138,7 +138,7 @@ static struct { | |||
138 | int token_in; | 138 | int token_in; |
139 | int token_out; | 139 | int token_out; |
140 | char *untrusted; | 140 | char *untrusted; |
141 | } ts_config; | 141 | } cfg; |
142 | 142 | ||
143 | static int | 143 | static int |
144 | ts_opt_md(int argc, char **argv, int *argsused) | 144 | ts_opt_md(int argc, char **argv, int *argsused) |
@@ -148,7 +148,7 @@ ts_opt_md(int argc, char **argv, int *argsused) | |||
148 | if (*name++ != '-') | 148 | if (*name++ != '-') |
149 | return (1); | 149 | return (1); |
150 | 150 | ||
151 | if ((ts_config.md = EVP_get_digestbyname(name)) == NULL) | 151 | if ((cfg.md = EVP_get_digestbyname(name)) == NULL) |
152 | return (1); | 152 | return (1); |
153 | 153 | ||
154 | *argsused = 1; | 154 | *argsused = 1; |
@@ -158,27 +158,27 @@ ts_opt_md(int argc, char **argv, int *argsused) | |||
158 | static int | 158 | static int |
159 | ts_opt_query(void) | 159 | ts_opt_query(void) |
160 | { | 160 | { |
161 | if (ts_config.mode != CMD_NONE) | 161 | if (cfg.mode != CMD_NONE) |
162 | return (1); | 162 | return (1); |
163 | ts_config.mode = CMD_QUERY; | 163 | cfg.mode = CMD_QUERY; |
164 | return (0); | 164 | return (0); |
165 | } | 165 | } |
166 | 166 | ||
167 | static int | 167 | static int |
168 | ts_opt_reply(void) | 168 | ts_opt_reply(void) |
169 | { | 169 | { |
170 | if (ts_config.mode != CMD_NONE) | 170 | if (cfg.mode != CMD_NONE) |
171 | return (1); | 171 | return (1); |
172 | ts_config.mode = CMD_REPLY; | 172 | cfg.mode = CMD_REPLY; |
173 | return (0); | 173 | return (0); |
174 | } | 174 | } |
175 | 175 | ||
176 | static int | 176 | static int |
177 | ts_opt_verify(void) | 177 | ts_opt_verify(void) |
178 | { | 178 | { |
179 | if (ts_config.mode != CMD_NONE) | 179 | if (cfg.mode != CMD_NONE) |
180 | return (1); | 180 | return (1); |
181 | ts_config.mode = CMD_VERIFY; | 181 | cfg.mode = CMD_VERIFY; |
182 | return (0); | 182 | return (0); |
183 | } | 183 | } |
184 | 184 | ||
@@ -188,89 +188,89 @@ static const struct option ts_options[] = { | |||
188 | .argname = "file", | 188 | .argname = "file", |
189 | .desc = "Certificate Authority file", | 189 | .desc = "Certificate Authority file", |
190 | .type = OPTION_ARG, | 190 | .type = OPTION_ARG, |
191 | .opt.arg = &ts_config.ca_file, | 191 | .opt.arg = &cfg.ca_file, |
192 | }, | 192 | }, |
193 | { | 193 | { |
194 | .name = "CApath", | 194 | .name = "CApath", |
195 | .argname = "path", | 195 | .argname = "path", |
196 | .desc = "Certificate Authority path", | 196 | .desc = "Certificate Authority path", |
197 | .type = OPTION_ARG, | 197 | .type = OPTION_ARG, |
198 | .opt.arg = &ts_config.ca_path, | 198 | .opt.arg = &cfg.ca_path, |
199 | }, | 199 | }, |
200 | { | 200 | { |
201 | .name = "cert", | 201 | .name = "cert", |
202 | .desc = "Include signing certificate in the response", | 202 | .desc = "Include signing certificate in the response", |
203 | .type = OPTION_FLAG, | 203 | .type = OPTION_FLAG, |
204 | .opt.flag = &ts_config.cert, | 204 | .opt.flag = &cfg.cert, |
205 | }, | 205 | }, |
206 | { | 206 | { |
207 | .name = "chain", | 207 | .name = "chain", |
208 | .argname = "file", | 208 | .argname = "file", |
209 | .desc = "PEM certificates that will be included in the response", | 209 | .desc = "PEM certificates that will be included in the response", |
210 | .type = OPTION_ARG, | 210 | .type = OPTION_ARG, |
211 | .opt.arg = &ts_config.chain, | 211 | .opt.arg = &cfg.chain, |
212 | }, | 212 | }, |
213 | { | 213 | { |
214 | .name = "config", | 214 | .name = "config", |
215 | .argname = "file", | 215 | .argname = "file", |
216 | .desc = "Specify an alternative configuration file", | 216 | .desc = "Specify an alternative configuration file", |
217 | .type = OPTION_ARG, | 217 | .type = OPTION_ARG, |
218 | .opt.arg = &ts_config.configfile, | 218 | .opt.arg = &cfg.configfile, |
219 | }, | 219 | }, |
220 | { | 220 | { |
221 | .name = "data", | 221 | .name = "data", |
222 | .argname = "file", | 222 | .argname = "file", |
223 | .desc = "Data file for which the time stamp request needs to be created", | 223 | .desc = "Data file for which the time stamp request needs to be created", |
224 | .type = OPTION_ARG, | 224 | .type = OPTION_ARG, |
225 | .opt.arg = &ts_config.data, | 225 | .opt.arg = &cfg.data, |
226 | }, | 226 | }, |
227 | { | 227 | { |
228 | .name = "digest", | 228 | .name = "digest", |
229 | .argname = "arg", | 229 | .argname = "arg", |
230 | .desc = "Specify the message imprint explicitly without the data file", | 230 | .desc = "Specify the message imprint explicitly without the data file", |
231 | .type = OPTION_ARG, | 231 | .type = OPTION_ARG, |
232 | .opt.arg = &ts_config.digest, | 232 | .opt.arg = &cfg.digest, |
233 | }, | 233 | }, |
234 | { | 234 | { |
235 | .name = "in", | 235 | .name = "in", |
236 | .argname = "file", | 236 | .argname = "file", |
237 | .desc = "Input file", | 237 | .desc = "Input file", |
238 | .type = OPTION_ARG, | 238 | .type = OPTION_ARG, |
239 | .opt.arg = &ts_config.in, | 239 | .opt.arg = &cfg.in, |
240 | }, | 240 | }, |
241 | { | 241 | { |
242 | .name = "inkey", | 242 | .name = "inkey", |
243 | .argname = "file", | 243 | .argname = "file", |
244 | .desc = "Input key file", | 244 | .desc = "Input key file", |
245 | .type = OPTION_ARG, | 245 | .type = OPTION_ARG, |
246 | .opt.arg = &ts_config.inkey, | 246 | .opt.arg = &cfg.inkey, |
247 | }, | 247 | }, |
248 | { | 248 | { |
249 | .name = "no_nonce", | 249 | .name = "no_nonce", |
250 | .desc = "Specify no nonce in the request", | 250 | .desc = "Specify no nonce in the request", |
251 | .type = OPTION_FLAG, | 251 | .type = OPTION_FLAG, |
252 | .opt.flag = &ts_config.no_nonce, | 252 | .opt.flag = &cfg.no_nonce, |
253 | }, | 253 | }, |
254 | { | 254 | { |
255 | .name = "out", | 255 | .name = "out", |
256 | .argname = "file", | 256 | .argname = "file", |
257 | .desc = "Output file", | 257 | .desc = "Output file", |
258 | .type = OPTION_ARG, | 258 | .type = OPTION_ARG, |
259 | .opt.arg = &ts_config.out, | 259 | .opt.arg = &cfg.out, |
260 | }, | 260 | }, |
261 | { | 261 | { |
262 | .name = "passin", | 262 | .name = "passin", |
263 | .argname = "src", | 263 | .argname = "src", |
264 | .desc = "Private key password source", | 264 | .desc = "Private key password source", |
265 | .type = OPTION_ARG, | 265 | .type = OPTION_ARG, |
266 | .opt.arg = &ts_config.passin, | 266 | .opt.arg = &cfg.passin, |
267 | }, | 267 | }, |
268 | { | 268 | { |
269 | .name = "policy", | 269 | .name = "policy", |
270 | .argname = "object_id", | 270 | .argname = "object_id", |
271 | .desc = "Policy for the TSA to use when creating the time stamp token", | 271 | .desc = "Policy for the TSA to use when creating the time stamp token", |
272 | .type = OPTION_ARG, | 272 | .type = OPTION_ARG, |
273 | .opt.arg = &ts_config.policy, | 273 | .opt.arg = &cfg.policy, |
274 | }, | 274 | }, |
275 | { | 275 | { |
276 | .name = "query", | 276 | .name = "query", |
@@ -283,7 +283,7 @@ static const struct option ts_options[] = { | |||
283 | .argname = "file", | 283 | .argname = "file", |
284 | .desc = "File containing a DER-encoded time stamp request", | 284 | .desc = "File containing a DER-encoded time stamp request", |
285 | .type = OPTION_ARG, | 285 | .type = OPTION_ARG, |
286 | .opt.arg = &ts_config.queryfile, | 286 | .opt.arg = &cfg.queryfile, |
287 | }, | 287 | }, |
288 | { | 288 | { |
289 | .name = "reply", | 289 | .name = "reply", |
@@ -296,39 +296,39 @@ static const struct option ts_options[] = { | |||
296 | .argname = "arg", | 296 | .argname = "arg", |
297 | .desc = "TSA section containing the settings for response generation", | 297 | .desc = "TSA section containing the settings for response generation", |
298 | .type = OPTION_ARG, | 298 | .type = OPTION_ARG, |
299 | .opt.arg = &ts_config.section, | 299 | .opt.arg = &cfg.section, |
300 | }, | 300 | }, |
301 | { | 301 | { |
302 | .name = "signer", | 302 | .name = "signer", |
303 | .argname = "file", | 303 | .argname = "file", |
304 | .desc = "Signer certificate file", | 304 | .desc = "Signer certificate file", |
305 | .type = OPTION_ARG, | 305 | .type = OPTION_ARG, |
306 | .opt.arg = &ts_config.signer, | 306 | .opt.arg = &cfg.signer, |
307 | }, | 307 | }, |
308 | { | 308 | { |
309 | .name = "text", | 309 | .name = "text", |
310 | .desc = "Output in human-readable text format", | 310 | .desc = "Output in human-readable text format", |
311 | .type = OPTION_FLAG, | 311 | .type = OPTION_FLAG, |
312 | .opt.flag = &ts_config.text, | 312 | .opt.flag = &cfg.text, |
313 | }, | 313 | }, |
314 | { | 314 | { |
315 | .name = "token_in", | 315 | .name = "token_in", |
316 | .desc = "Input is a DER-encoded time stamp token", | 316 | .desc = "Input is a DER-encoded time stamp token", |
317 | .type = OPTION_FLAG, | 317 | .type = OPTION_FLAG, |
318 | .opt.flag = &ts_config.token_in, | 318 | .opt.flag = &cfg.token_in, |
319 | }, | 319 | }, |
320 | { | 320 | { |
321 | .name = "token_out", | 321 | .name = "token_out", |
322 | .desc = "Output is a DER-encoded time stamp token", | 322 | .desc = "Output is a DER-encoded time stamp token", |
323 | .type = OPTION_FLAG, | 323 | .type = OPTION_FLAG, |
324 | .opt.flag = &ts_config.token_out, | 324 | .opt.flag = &cfg.token_out, |
325 | }, | 325 | }, |
326 | { | 326 | { |
327 | .name = "untrusted", | 327 | .name = "untrusted", |
328 | .argname = "file", | 328 | .argname = "file", |
329 | .desc = "File containing untrusted certificates", | 329 | .desc = "File containing untrusted certificates", |
330 | .type = OPTION_ARG, | 330 | .type = OPTION_ARG, |
331 | .opt.arg = &ts_config.untrusted, | 331 | .opt.arg = &cfg.untrusted, |
332 | }, | 332 | }, |
333 | { | 333 | { |
334 | .name = "verify", | 334 | .name = "verify", |
@@ -382,15 +382,15 @@ ts_main(int argc, char **argv) | |||
382 | exit(1); | 382 | exit(1); |
383 | } | 383 | } |
384 | 384 | ||
385 | memset(&ts_config, 0, sizeof(ts_config)); | 385 | memset(&cfg, 0, sizeof(cfg)); |
386 | ts_config.mode = CMD_NONE; | 386 | cfg.mode = CMD_NONE; |
387 | 387 | ||
388 | if (options_parse(argc, argv, ts_options, NULL, NULL) != 0) | 388 | if (options_parse(argc, argv, ts_options, NULL, NULL) != 0) |
389 | goto usage; | 389 | goto usage; |
390 | 390 | ||
391 | /* Get the password if required. */ | 391 | /* Get the password if required. */ |
392 | if (ts_config.mode == CMD_REPLY && ts_config.passin != NULL && | 392 | if (cfg.mode == CMD_REPLY && cfg.passin != NULL && |
393 | !app_passwd(bio_err, ts_config.passin, NULL, &password, NULL)) { | 393 | !app_passwd(bio_err, cfg.passin, NULL, &password, NULL)) { |
394 | BIO_printf(bio_err, "Error getting password.\n"); | 394 | BIO_printf(bio_err, "Error getting password.\n"); |
395 | goto cleanup; | 395 | goto cleanup; |
396 | } | 396 | } |
@@ -398,7 +398,7 @@ ts_main(int argc, char **argv) | |||
398 | * Check consistency of parameters and execute the appropriate | 398 | * Check consistency of parameters and execute the appropriate |
399 | * function. | 399 | * function. |
400 | */ | 400 | */ |
401 | switch (ts_config.mode) { | 401 | switch (cfg.mode) { |
402 | case CMD_NONE: | 402 | case CMD_NONE: |
403 | goto usage; | 403 | goto usage; |
404 | case CMD_QUERY: | 404 | case CMD_QUERY: |
@@ -406,50 +406,50 @@ ts_main(int argc, char **argv) | |||
406 | * Data file and message imprint cannot be specified at the | 406 | * Data file and message imprint cannot be specified at the |
407 | * same time. | 407 | * same time. |
408 | */ | 408 | */ |
409 | ret = ts_config.data != NULL && ts_config.digest != NULL; | 409 | ret = cfg.data != NULL && cfg.digest != NULL; |
410 | if (ret) | 410 | if (ret) |
411 | goto usage; | 411 | goto usage; |
412 | /* Load the config file for possible policy OIDs. */ | 412 | /* Load the config file for possible policy OIDs. */ |
413 | conf = load_config_file(ts_config.configfile); | 413 | conf = load_config_file(cfg.configfile); |
414 | ret = !query_command(ts_config.data, ts_config.digest, | 414 | ret = !query_command(cfg.data, cfg.digest, |
415 | ts_config.md, ts_config.policy, ts_config.no_nonce, | 415 | cfg.md, cfg.policy, cfg.no_nonce, |
416 | ts_config.cert, ts_config.in, ts_config.out, | 416 | cfg.cert, cfg.in, cfg.out, |
417 | ts_config.text); | 417 | cfg.text); |
418 | break; | 418 | break; |
419 | case CMD_REPLY: | 419 | case CMD_REPLY: |
420 | conf = load_config_file(ts_config.configfile); | 420 | conf = load_config_file(cfg.configfile); |
421 | if (ts_config.in == NULL) { | 421 | if (cfg.in == NULL) { |
422 | ret = !(ts_config.queryfile != NULL && conf != NULL && | 422 | ret = !(cfg.queryfile != NULL && conf != NULL && |
423 | !ts_config.token_in); | 423 | !cfg.token_in); |
424 | if (ret) | 424 | if (ret) |
425 | goto usage; | 425 | goto usage; |
426 | } else { | 426 | } else { |
427 | /* 'in' and 'queryfile' are exclusive. */ | 427 | /* 'in' and 'queryfile' are exclusive. */ |
428 | ret = !(ts_config.queryfile == NULL); | 428 | ret = !(cfg.queryfile == NULL); |
429 | if (ret) | 429 | if (ret) |
430 | goto usage; | 430 | goto usage; |
431 | } | 431 | } |
432 | 432 | ||
433 | ret = !reply_command(conf, ts_config.section, | 433 | ret = !reply_command(conf, cfg.section, |
434 | ts_config.queryfile, password, ts_config.inkey, | 434 | cfg.queryfile, password, cfg.inkey, |
435 | ts_config.signer, ts_config.chain, ts_config.policy, | 435 | cfg.signer, cfg.chain, cfg.policy, |
436 | ts_config.in, ts_config.token_in, ts_config.out, | 436 | cfg.in, cfg.token_in, cfg.out, |
437 | ts_config.token_out, ts_config.text); | 437 | cfg.token_out, cfg.text); |
438 | break; | 438 | break; |
439 | case CMD_VERIFY: | 439 | case CMD_VERIFY: |
440 | ret = !(((ts_config.queryfile != NULL && ts_config.data == NULL && | 440 | ret = !(((cfg.queryfile != NULL && cfg.data == NULL && |
441 | ts_config.digest == NULL) || | 441 | cfg.digest == NULL) || |
442 | (ts_config.queryfile == NULL && ts_config.data != NULL && | 442 | (cfg.queryfile == NULL && cfg.data != NULL && |
443 | ts_config.digest == NULL) || | 443 | cfg.digest == NULL) || |
444 | (ts_config.queryfile == NULL && ts_config.data == NULL && | 444 | (cfg.queryfile == NULL && cfg.data == NULL && |
445 | ts_config.digest != NULL)) && | 445 | cfg.digest != NULL)) && |
446 | ts_config.in != NULL); | 446 | cfg.in != NULL); |
447 | if (ret) | 447 | if (ret) |
448 | goto usage; | 448 | goto usage; |
449 | 449 | ||
450 | ret = !verify_command(ts_config.data, ts_config.digest, | 450 | ret = !verify_command(cfg.data, cfg.digest, |
451 | ts_config.queryfile, ts_config.in, ts_config.token_in, | 451 | cfg.queryfile, cfg.in, cfg.token_in, |
452 | ts_config.ca_path, ts_config.ca_file, ts_config.untrusted); | 452 | cfg.ca_path, cfg.ca_file, cfg.untrusted); |
453 | } | 453 | } |
454 | 454 | ||
455 | goto cleanup; | 455 | goto cleanup; |
diff --git a/src/usr.bin/openssl/verify.c b/src/usr.bin/openssl/verify.c index b42dd2f243..b412623991 100644 --- a/src/usr.bin/openssl/verify.c +++ b/src/usr.bin/openssl/verify.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: verify.c,v 1.15 2022/11/11 17:07:39 joshua Exp $ */ | 1 | /* $OpenBSD: verify.c,v 1.16 2023/03/06 14:32:06 tb 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 | * |
@@ -81,7 +81,7 @@ static struct { | |||
81 | char *untfile; | 81 | char *untfile; |
82 | int verbose; | 82 | int verbose; |
83 | X509_VERIFY_PARAM *vpm; | 83 | X509_VERIFY_PARAM *vpm; |
84 | } verify_config; | 84 | } cfg; |
85 | 85 | ||
86 | static int | 86 | static int |
87 | verify_opt_args(int argc, char **argv, int *argsused) | 87 | verify_opt_args(int argc, char **argv, int *argsused) |
@@ -89,7 +89,7 @@ verify_opt_args(int argc, char **argv, int *argsused) | |||
89 | int oargc = argc; | 89 | int oargc = argc; |
90 | int badarg = 0; | 90 | int badarg = 0; |
91 | 91 | ||
92 | if (!args_verify(&argv, &argc, &badarg, bio_err, &verify_config.vpm)) | 92 | if (!args_verify(&argv, &argc, &badarg, bio_err, &cfg.vpm)) |
93 | return (1); | 93 | return (1); |
94 | if (badarg) | 94 | if (badarg) |
95 | return (1); | 95 | return (1); |
@@ -105,41 +105,41 @@ static const struct option verify_options[] = { | |||
105 | .argname = "file", | 105 | .argname = "file", |
106 | .desc = "Certificate Authority file", | 106 | .desc = "Certificate Authority file", |
107 | .type = OPTION_ARG, | 107 | .type = OPTION_ARG, |
108 | .opt.arg = &verify_config.CAfile, | 108 | .opt.arg = &cfg.CAfile, |
109 | }, | 109 | }, |
110 | { | 110 | { |
111 | .name = "CApath", | 111 | .name = "CApath", |
112 | .argname = "path", | 112 | .argname = "path", |
113 | .desc = "Certificate Authority path", | 113 | .desc = "Certificate Authority path", |
114 | .type = OPTION_ARG, | 114 | .type = OPTION_ARG, |
115 | .opt.arg = &verify_config.CApath, | 115 | .opt.arg = &cfg.CApath, |
116 | }, | 116 | }, |
117 | { | 117 | { |
118 | .name = "CRLfile", | 118 | .name = "CRLfile", |
119 | .argname = "file", | 119 | .argname = "file", |
120 | .desc = "Certificate Revocation List file", | 120 | .desc = "Certificate Revocation List file", |
121 | .type = OPTION_ARG, | 121 | .type = OPTION_ARG, |
122 | .opt.arg = &verify_config.crlfile, | 122 | .opt.arg = &cfg.crlfile, |
123 | }, | 123 | }, |
124 | { | 124 | { |
125 | .name = "trusted", | 125 | .name = "trusted", |
126 | .argname = "file", | 126 | .argname = "file", |
127 | .desc = "Trusted certificates file", | 127 | .desc = "Trusted certificates file", |
128 | .type = OPTION_ARG, | 128 | .type = OPTION_ARG, |
129 | .opt.arg = &verify_config.trustfile, | 129 | .opt.arg = &cfg.trustfile, |
130 | }, | 130 | }, |
131 | { | 131 | { |
132 | .name = "untrusted", | 132 | .name = "untrusted", |
133 | .argname = "file", | 133 | .argname = "file", |
134 | .desc = "Untrusted certificates file", | 134 | .desc = "Untrusted certificates file", |
135 | .type = OPTION_ARG, | 135 | .type = OPTION_ARG, |
136 | .opt.arg = &verify_config.untfile, | 136 | .opt.arg = &cfg.untfile, |
137 | }, | 137 | }, |
138 | { | 138 | { |
139 | .name = "verbose", | 139 | .name = "verbose", |
140 | .desc = "Verbose", | 140 | .desc = "Verbose", |
141 | .type = OPTION_FLAG, | 141 | .type = OPTION_FLAG, |
142 | .opt.flag = &verify_config.verbose, | 142 | .opt.flag = &cfg.verbose, |
143 | }, | 143 | }, |
144 | { | 144 | { |
145 | .name = NULL, | 145 | .name = NULL, |
@@ -273,7 +273,7 @@ verify_main(int argc, char **argv) | |||
273 | exit(1); | 273 | exit(1); |
274 | } | 274 | } |
275 | 275 | ||
276 | memset(&verify_config, 0, sizeof(verify_config)); | 276 | memset(&cfg, 0, sizeof(cfg)); |
277 | 277 | ||
278 | if (options_parse(argc, argv, verify_options, NULL, &argsused) != 0) { | 278 | if (options_parse(argc, argv, verify_options, NULL, &argsused) != 0) { |
279 | verify_usage(); | 279 | verify_usage(); |
@@ -288,17 +288,17 @@ verify_main(int argc, char **argv) | |||
288 | goto end; | 288 | goto end; |
289 | X509_STORE_set_verify_cb(cert_ctx, cb); | 289 | X509_STORE_set_verify_cb(cert_ctx, cb); |
290 | 290 | ||
291 | if (verify_config.vpm) | 291 | if (cfg.vpm) |
292 | X509_STORE_set1_param(cert_ctx, verify_config.vpm); | 292 | X509_STORE_set1_param(cert_ctx, cfg.vpm); |
293 | 293 | ||
294 | lookup = X509_STORE_add_lookup(cert_ctx, X509_LOOKUP_file()); | 294 | lookup = X509_STORE_add_lookup(cert_ctx, X509_LOOKUP_file()); |
295 | if (lookup == NULL) | 295 | if (lookup == NULL) |
296 | abort(); /* XXX */ | 296 | abort(); /* XXX */ |
297 | if (verify_config.CAfile) { | 297 | if (cfg.CAfile) { |
298 | if (!X509_LOOKUP_load_file(lookup, verify_config.CAfile, | 298 | if (!X509_LOOKUP_load_file(lookup, cfg.CAfile, |
299 | X509_FILETYPE_PEM)) { | 299 | X509_FILETYPE_PEM)) { |
300 | BIO_printf(bio_err, "Error loading file %s\n", | 300 | BIO_printf(bio_err, "Error loading file %s\n", |
301 | verify_config.CAfile); | 301 | cfg.CAfile); |
302 | ERR_print_errors(bio_err); | 302 | ERR_print_errors(bio_err); |
303 | goto end; | 303 | goto end; |
304 | } | 304 | } |
@@ -308,11 +308,11 @@ verify_main(int argc, char **argv) | |||
308 | lookup = X509_STORE_add_lookup(cert_ctx, X509_LOOKUP_hash_dir()); | 308 | lookup = X509_STORE_add_lookup(cert_ctx, X509_LOOKUP_hash_dir()); |
309 | if (lookup == NULL) | 309 | if (lookup == NULL) |
310 | abort(); /* XXX */ | 310 | abort(); /* XXX */ |
311 | if (verify_config.CApath) { | 311 | if (cfg.CApath) { |
312 | if (!X509_LOOKUP_add_dir(lookup, verify_config.CApath, | 312 | if (!X509_LOOKUP_add_dir(lookup, cfg.CApath, |
313 | X509_FILETYPE_PEM)) { | 313 | X509_FILETYPE_PEM)) { |
314 | BIO_printf(bio_err, "Error loading directory %s\n", | 314 | BIO_printf(bio_err, "Error loading directory %s\n", |
315 | verify_config.CApath); | 315 | cfg.CApath); |
316 | ERR_print_errors(bio_err); | 316 | ERR_print_errors(bio_err); |
317 | goto end; | 317 | goto end; |
318 | } | 318 | } |
@@ -321,20 +321,20 @@ verify_main(int argc, char **argv) | |||
321 | 321 | ||
322 | ERR_clear_error(); | 322 | ERR_clear_error(); |
323 | 323 | ||
324 | if (verify_config.untfile) { | 324 | if (cfg.untfile) { |
325 | untrusted = load_certs(bio_err, verify_config.untfile, | 325 | untrusted = load_certs(bio_err, cfg.untfile, |
326 | FORMAT_PEM, NULL, "untrusted certificates"); | 326 | FORMAT_PEM, NULL, "untrusted certificates"); |
327 | if (!untrusted) | 327 | if (!untrusted) |
328 | goto end; | 328 | goto end; |
329 | } | 329 | } |
330 | if (verify_config.trustfile) { | 330 | if (cfg.trustfile) { |
331 | trusted = load_certs(bio_err, verify_config.trustfile, | 331 | trusted = load_certs(bio_err, cfg.trustfile, |
332 | FORMAT_PEM, NULL, "trusted certificates"); | 332 | FORMAT_PEM, NULL, "trusted certificates"); |
333 | if (!trusted) | 333 | if (!trusted) |
334 | goto end; | 334 | goto end; |
335 | } | 335 | } |
336 | if (verify_config.crlfile) { | 336 | if (cfg.crlfile) { |
337 | crls = load_crls(bio_err, verify_config.crlfile, FORMAT_PEM, | 337 | crls = load_crls(bio_err, cfg.crlfile, FORMAT_PEM, |
338 | NULL, "other CRLs"); | 338 | NULL, "other CRLs"); |
339 | if (!crls) | 339 | if (!crls) |
340 | goto end; | 340 | goto end; |
@@ -352,8 +352,8 @@ verify_main(int argc, char **argv) | |||
352 | } | 352 | } |
353 | 353 | ||
354 | end: | 354 | end: |
355 | if (verify_config.vpm) | 355 | if (cfg.vpm) |
356 | X509_VERIFY_PARAM_free(verify_config.vpm); | 356 | X509_VERIFY_PARAM_free(cfg.vpm); |
357 | if (cert_ctx != NULL) | 357 | if (cert_ctx != NULL) |
358 | X509_STORE_free(cert_ctx); | 358 | X509_STORE_free(cert_ctx); |
359 | sk_X509_pop_free(untrusted, X509_free); | 359 | sk_X509_pop_free(untrusted, X509_free); |
@@ -454,7 +454,7 @@ cb(int ok, X509_STORE_CTX *ctx) | |||
454 | } | 454 | } |
455 | if (cert_error == X509_V_OK && ok == 2) | 455 | if (cert_error == X509_V_OK && ok == 2) |
456 | policies_print(NULL, ctx); | 456 | policies_print(NULL, ctx); |
457 | if (!verify_config.verbose) | 457 | if (!cfg.verbose) |
458 | ERR_clear_error(); | 458 | ERR_clear_error(); |
459 | return (ok); | 459 | return (ok); |
460 | } | 460 | } |
diff --git a/src/usr.bin/openssl/version.c b/src/usr.bin/openssl/version.c index 038774ad0c..6ff1860ead 100644 --- a/src/usr.bin/openssl/version.c +++ b/src/usr.bin/openssl/version.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: version.c,v 1.10 2022/11/11 17:07:39 joshua Exp $ */ | 1 | /* $OpenBSD: version.c,v 1.11 2023/03/06 14:32:06 tb 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 | * |
@@ -142,17 +142,17 @@ static struct { | |||
142 | int options; | 142 | int options; |
143 | int platform; | 143 | int platform; |
144 | int version; | 144 | int version; |
145 | } version_config; | 145 | } cfg; |
146 | 146 | ||
147 | static int | 147 | static int |
148 | version_all_opts(void) | 148 | version_all_opts(void) |
149 | { | 149 | { |
150 | version_config.cflags = 1; | 150 | cfg.cflags = 1; |
151 | version_config.date = 1; | 151 | cfg.date = 1; |
152 | version_config.dir= 1; | 152 | cfg.dir= 1; |
153 | version_config.options = 1; | 153 | cfg.options = 1; |
154 | version_config.platform = 1; | 154 | cfg.platform = 1; |
155 | version_config.version = 1; | 155 | cfg.version = 1; |
156 | 156 | ||
157 | return (0); | 157 | return (0); |
158 | } | 158 | } |
@@ -168,37 +168,37 @@ static const struct option version_options[] = { | |||
168 | .name = "b", | 168 | .name = "b", |
169 | .desc = "Date the current version of OpenSSL was built", | 169 | .desc = "Date the current version of OpenSSL was built", |
170 | .type = OPTION_FLAG, | 170 | .type = OPTION_FLAG, |
171 | .opt.flag = &version_config.date, | 171 | .opt.flag = &cfg.date, |
172 | }, | 172 | }, |
173 | { | 173 | { |
174 | .name = "d", | 174 | .name = "d", |
175 | .desc = "OPENSSLDIR value", | 175 | .desc = "OPENSSLDIR value", |
176 | .type = OPTION_FLAG, | 176 | .type = OPTION_FLAG, |
177 | .opt.flag = &version_config.dir, | 177 | .opt.flag = &cfg.dir, |
178 | }, | 178 | }, |
179 | { | 179 | { |
180 | .name = "f", | 180 | .name = "f", |
181 | .desc = "Compilation flags", | 181 | .desc = "Compilation flags", |
182 | .type = OPTION_FLAG, | 182 | .type = OPTION_FLAG, |
183 | .opt.flag = &version_config.cflags, | 183 | .opt.flag = &cfg.cflags, |
184 | }, | 184 | }, |
185 | { | 185 | { |
186 | .name = "o", | 186 | .name = "o", |
187 | .desc = "Option information", | 187 | .desc = "Option information", |
188 | .type = OPTION_FLAG, | 188 | .type = OPTION_FLAG, |
189 | .opt.flag = &version_config.options, | 189 | .opt.flag = &cfg.options, |
190 | }, | 190 | }, |
191 | { | 191 | { |
192 | .name = "p", | 192 | .name = "p", |
193 | .desc = "Platform settings", | 193 | .desc = "Platform settings", |
194 | .type = OPTION_FLAG, | 194 | .type = OPTION_FLAG, |
195 | .opt.flag = &version_config.platform, | 195 | .opt.flag = &cfg.platform, |
196 | }, | 196 | }, |
197 | { | 197 | { |
198 | .name = "v", | 198 | .name = "v", |
199 | .desc = "Current OpenSSL version", | 199 | .desc = "Current OpenSSL version", |
200 | .type = OPTION_FLAG, | 200 | .type = OPTION_FLAG, |
201 | .opt.flag = &version_config.version, | 201 | .opt.flag = &cfg.version, |
202 | }, | 202 | }, |
203 | {NULL}, | 203 | {NULL}, |
204 | }; | 204 | }; |
@@ -218,7 +218,7 @@ version_main(int argc, char **argv) | |||
218 | exit(1); | 218 | exit(1); |
219 | } | 219 | } |
220 | 220 | ||
221 | memset(&version_config, 0, sizeof(version_config)); | 221 | memset(&cfg, 0, sizeof(cfg)); |
222 | 222 | ||
223 | if (options_parse(argc, argv, version_options, NULL, NULL) != 0) { | 223 | if (options_parse(argc, argv, version_options, NULL, NULL) != 0) { |
224 | version_usage(); | 224 | version_usage(); |
@@ -226,9 +226,9 @@ version_main(int argc, char **argv) | |||
226 | } | 226 | } |
227 | 227 | ||
228 | if (argc == 1) | 228 | if (argc == 1) |
229 | version_config.version = 1; | 229 | cfg.version = 1; |
230 | 230 | ||
231 | if (version_config.version) { | 231 | if (cfg.version) { |
232 | if (SSLeay() == SSLEAY_VERSION_NUMBER) { | 232 | if (SSLeay() == SSLEAY_VERSION_NUMBER) { |
233 | printf("%s\n", SSLeay_version(SSLEAY_VERSION)); | 233 | printf("%s\n", SSLeay_version(SSLEAY_VERSION)); |
234 | } else { | 234 | } else { |
@@ -237,11 +237,11 @@ version_main(int argc, char **argv) | |||
237 | SSLeay_version(SSLEAY_VERSION)); | 237 | SSLeay_version(SSLEAY_VERSION)); |
238 | } | 238 | } |
239 | } | 239 | } |
240 | if (version_config.date) | 240 | if (cfg.date) |
241 | printf("%s\n", SSLeay_version(SSLEAY_BUILT_ON)); | 241 | printf("%s\n", SSLeay_version(SSLEAY_BUILT_ON)); |
242 | if (version_config.platform) | 242 | if (cfg.platform) |
243 | printf("%s\n", SSLeay_version(SSLEAY_PLATFORM)); | 243 | printf("%s\n", SSLeay_version(SSLEAY_PLATFORM)); |
244 | if (version_config.options) { | 244 | if (cfg.options) { |
245 | printf("options: "); | 245 | printf("options: "); |
246 | printf("%s ", BN_options()); | 246 | printf("%s ", BN_options()); |
247 | #ifndef OPENSSL_NO_RC4 | 247 | #ifndef OPENSSL_NO_RC4 |
@@ -258,9 +258,9 @@ version_main(int argc, char **argv) | |||
258 | #endif | 258 | #endif |
259 | printf("\n"); | 259 | printf("\n"); |
260 | } | 260 | } |
261 | if (version_config.cflags) | 261 | if (cfg.cflags) |
262 | printf("%s\n", SSLeay_version(SSLEAY_CFLAGS)); | 262 | printf("%s\n", SSLeay_version(SSLEAY_CFLAGS)); |
263 | if (version_config.dir) | 263 | if (cfg.dir) |
264 | printf("%s\n", SSLeay_version(SSLEAY_DIR)); | 264 | printf("%s\n", SSLeay_version(SSLEAY_DIR)); |
265 | 265 | ||
266 | return (0); | 266 | return (0); |
diff --git a/src/usr.bin/openssl/x509.c b/src/usr.bin/openssl/x509.c index e1c69c6798..66cad3ab2c 100644 --- a/src/usr.bin/openssl/x509.c +++ b/src/usr.bin/openssl/x509.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: x509.c,v 1.30 2022/11/11 17:07:39 joshua Exp $ */ | 1 | /* $OpenBSD: x509.c,v 1.31 2023/03/06 14:32:06 tb 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 | * |
@@ -152,58 +152,58 @@ static struct { | |||
152 | STACK_OF(ASN1_OBJECT) *trust; | 152 | STACK_OF(ASN1_OBJECT) *trust; |
153 | int trustout; | 153 | int trustout; |
154 | int x509req; | 154 | int x509req; |
155 | } x509_config; | 155 | } cfg; |
156 | 156 | ||
157 | static int | 157 | static int |
158 | x509_opt_addreject(char *arg) | 158 | x509_opt_addreject(char *arg) |
159 | { | 159 | { |
160 | if ((x509_config.objtmp = OBJ_txt2obj(arg, 0)) == NULL) { | 160 | if ((cfg.objtmp = OBJ_txt2obj(arg, 0)) == NULL) { |
161 | BIO_printf(bio_err, "Invalid reject object value %s\n", arg); | 161 | BIO_printf(bio_err, "Invalid reject object value %s\n", arg); |
162 | return (1); | 162 | return (1); |
163 | } | 163 | } |
164 | 164 | ||
165 | if (x509_config.reject == NULL && | 165 | if (cfg.reject == NULL && |
166 | (x509_config.reject = sk_ASN1_OBJECT_new_null()) == NULL) | 166 | (cfg.reject = sk_ASN1_OBJECT_new_null()) == NULL) |
167 | return (1); | 167 | return (1); |
168 | 168 | ||
169 | if (!sk_ASN1_OBJECT_push(x509_config.reject, x509_config.objtmp)) | 169 | if (!sk_ASN1_OBJECT_push(cfg.reject, cfg.objtmp)) |
170 | return (1); | 170 | return (1); |
171 | 171 | ||
172 | x509_config.trustout = 1; | 172 | cfg.trustout = 1; |
173 | return (0); | 173 | return (0); |
174 | } | 174 | } |
175 | 175 | ||
176 | static int | 176 | static int |
177 | x509_opt_addtrust(char *arg) | 177 | x509_opt_addtrust(char *arg) |
178 | { | 178 | { |
179 | if ((x509_config.objtmp = OBJ_txt2obj(arg, 0)) == NULL) { | 179 | if ((cfg.objtmp = OBJ_txt2obj(arg, 0)) == NULL) { |
180 | BIO_printf(bio_err, "Invalid trust object value %s\n", arg); | 180 | BIO_printf(bio_err, "Invalid trust object value %s\n", arg); |
181 | return (1); | 181 | return (1); |
182 | } | 182 | } |
183 | 183 | ||
184 | if (x509_config.trust == NULL && | 184 | if (cfg.trust == NULL && |
185 | (x509_config.trust = sk_ASN1_OBJECT_new_null()) == NULL) | 185 | (cfg.trust = sk_ASN1_OBJECT_new_null()) == NULL) |
186 | return (1); | 186 | return (1); |
187 | 187 | ||
188 | if (!sk_ASN1_OBJECT_push(x509_config.trust, x509_config.objtmp)) | 188 | if (!sk_ASN1_OBJECT_push(cfg.trust, cfg.objtmp)) |
189 | return (1); | 189 | return (1); |
190 | 190 | ||
191 | x509_config.trustout = 1; | 191 | cfg.trustout = 1; |
192 | return (0); | 192 | return (0); |
193 | } | 193 | } |
194 | 194 | ||
195 | static int | 195 | static int |
196 | x509_opt_ca(char *arg) | 196 | x509_opt_ca(char *arg) |
197 | { | 197 | { |
198 | x509_config.CAfile = arg; | 198 | cfg.CAfile = arg; |
199 | x509_config.CA_flag = ++x509_config.num; | 199 | cfg.CA_flag = ++cfg.num; |
200 | return (0); | 200 | return (0); |
201 | } | 201 | } |
202 | 202 | ||
203 | static int | 203 | static int |
204 | x509_opt_certopt(char *arg) | 204 | x509_opt_certopt(char *arg) |
205 | { | 205 | { |
206 | if (!set_cert_ex(&x509_config.certflag, arg)) | 206 | if (!set_cert_ex(&cfg.certflag, arg)) |
207 | return (1); | 207 | return (1); |
208 | 208 | ||
209 | return (0); | 209 | return (0); |
@@ -214,20 +214,20 @@ x509_opt_checkend(char *arg) | |||
214 | { | 214 | { |
215 | const char *errstr; | 215 | const char *errstr; |
216 | 216 | ||
217 | x509_config.checkoffset = strtonum(arg, 0, INT_MAX, &errstr); | 217 | cfg.checkoffset = strtonum(arg, 0, INT_MAX, &errstr); |
218 | if (errstr != NULL) { | 218 | if (errstr != NULL) { |
219 | BIO_printf(bio_err, "checkend unusable: %s\n", errstr); | 219 | BIO_printf(bio_err, "checkend unusable: %s\n", errstr); |
220 | return (1); | 220 | return (1); |
221 | } | 221 | } |
222 | x509_config.checkend = 1; | 222 | cfg.checkend = 1; |
223 | return (0); | 223 | return (0); |
224 | } | 224 | } |
225 | 225 | ||
226 | static int | 226 | static int |
227 | x509_opt_dates(void) | 227 | x509_opt_dates(void) |
228 | { | 228 | { |
229 | x509_config.startdate = ++x509_config.num; | 229 | cfg.startdate = ++cfg.num; |
230 | x509_config.enddate = ++x509_config.num; | 230 | cfg.enddate = ++cfg.num; |
231 | return (0); | 231 | return (0); |
232 | } | 232 | } |
233 | 233 | ||
@@ -236,7 +236,7 @@ x509_opt_days(char *arg) | |||
236 | { | 236 | { |
237 | const char *errstr; | 237 | const char *errstr; |
238 | 238 | ||
239 | x509_config.days = strtonum(arg, 1, INT_MAX, &errstr); | 239 | cfg.days = strtonum(arg, 1, INT_MAX, &errstr); |
240 | if (errstr != NULL) { | 240 | if (errstr != NULL) { |
241 | BIO_printf(bio_err, "bad number of days: %s\n", errstr); | 241 | BIO_printf(bio_err, "bad number of days: %s\n", errstr); |
242 | return (1); | 242 | return (1); |
@@ -252,11 +252,11 @@ x509_opt_digest(int argc, char **argv, int *argsused) | |||
252 | if (*name++ != '-') | 252 | if (*name++ != '-') |
253 | return (1); | 253 | return (1); |
254 | 254 | ||
255 | if ((x509_config.md_alg = EVP_get_digestbyname(name)) != NULL) { | 255 | if ((cfg.md_alg = EVP_get_digestbyname(name)) != NULL) { |
256 | x509_config.digest = x509_config.md_alg; | 256 | cfg.digest = cfg.md_alg; |
257 | } else { | 257 | } else { |
258 | BIO_printf(bio_err, "unknown option %s\n", *argv); | 258 | BIO_printf(bio_err, "unknown option %s\n", *argv); |
259 | x509_config.badops = 1; | 259 | cfg.badops = 1; |
260 | return (1); | 260 | return (1); |
261 | } | 261 | } |
262 | 262 | ||
@@ -267,7 +267,7 @@ x509_opt_digest(int argc, char **argv, int *argsused) | |||
267 | static int | 267 | static int |
268 | x509_opt_nameopt(char *arg) | 268 | x509_opt_nameopt(char *arg) |
269 | { | 269 | { |
270 | if (!set_name_ex(&x509_config.nmflag, arg)) | 270 | if (!set_name_ex(&cfg.nmflag, arg)) |
271 | return (1); | 271 | return (1); |
272 | 272 | ||
273 | return (0); | 273 | return (0); |
@@ -276,8 +276,8 @@ x509_opt_nameopt(char *arg) | |||
276 | static int | 276 | static int |
277 | x509_opt_set_serial(char *arg) | 277 | x509_opt_set_serial(char *arg) |
278 | { | 278 | { |
279 | ASN1_INTEGER_free(x509_config.sno); | 279 | ASN1_INTEGER_free(cfg.sno); |
280 | if ((x509_config.sno = s2i_ASN1_INTEGER(NULL, arg)) == NULL) | 280 | if ((cfg.sno = s2i_ASN1_INTEGER(NULL, arg)) == NULL) |
281 | return (1); | 281 | return (1); |
282 | 282 | ||
283 | return (0); | 283 | return (0); |
@@ -286,27 +286,27 @@ x509_opt_set_serial(char *arg) | |||
286 | static int | 286 | static int |
287 | x509_opt_setalias(char *arg) | 287 | x509_opt_setalias(char *arg) |
288 | { | 288 | { |
289 | x509_config.alias = arg; | 289 | cfg.alias = arg; |
290 | x509_config.trustout = 1; | 290 | cfg.trustout = 1; |
291 | return (0); | 291 | return (0); |
292 | } | 292 | } |
293 | 293 | ||
294 | static int | 294 | static int |
295 | x509_opt_signkey(char *arg) | 295 | x509_opt_signkey(char *arg) |
296 | { | 296 | { |
297 | x509_config.keyfile = arg; | 297 | cfg.keyfile = arg; |
298 | x509_config.sign_flag = ++x509_config.num; | 298 | cfg.sign_flag = ++cfg.num; |
299 | return (0); | 299 | return (0); |
300 | } | 300 | } |
301 | 301 | ||
302 | static int | 302 | static int |
303 | x509_opt_sigopt(char *arg) | 303 | x509_opt_sigopt(char *arg) |
304 | { | 304 | { |
305 | if (x509_config.sigopts == NULL && | 305 | if (cfg.sigopts == NULL && |
306 | (x509_config.sigopts = sk_OPENSSL_STRING_new_null()) == NULL) | 306 | (cfg.sigopts = sk_OPENSSL_STRING_new_null()) == NULL) |
307 | return (1); | 307 | return (1); |
308 | 308 | ||
309 | if (!sk_OPENSSL_STRING_push(x509_config.sigopts, arg)) | 309 | if (!sk_OPENSSL_STRING_push(cfg.sigopts, arg)) |
310 | return (1); | 310 | return (1); |
311 | 311 | ||
312 | return (0); | 312 | return (0); |
@@ -317,8 +317,8 @@ static const struct option x509_options[] = { | |||
317 | .name = "C", | 317 | .name = "C", |
318 | .desc = "Convert the certificate into C code", | 318 | .desc = "Convert the certificate into C code", |
319 | .type = OPTION_ORDER, | 319 | .type = OPTION_ORDER, |
320 | .opt.order = &x509_config.C, | 320 | .opt.order = &cfg.C, |
321 | .order = &x509_config.num, | 321 | .order = &cfg.num, |
322 | }, | 322 | }, |
323 | { | 323 | { |
324 | .name = "addreject", | 324 | .name = "addreject", |
@@ -338,8 +338,8 @@ static const struct option x509_options[] = { | |||
338 | .name = "alias", | 338 | .name = "alias", |
339 | .desc = "Output certificate alias", | 339 | .desc = "Output certificate alias", |
340 | .type = OPTION_ORDER, | 340 | .type = OPTION_ORDER, |
341 | .opt.order = &x509_config.aliasout, | 341 | .opt.order = &cfg.aliasout, |
342 | .order = &x509_config.num, | 342 | .order = &cfg.num, |
343 | }, | 343 | }, |
344 | { | 344 | { |
345 | .name = "CA", | 345 | .name = "CA", |
@@ -352,15 +352,15 @@ static const struct option x509_options[] = { | |||
352 | .name = "CAcreateserial", | 352 | .name = "CAcreateserial", |
353 | .desc = "Create serial number file if it does not exist", | 353 | .desc = "Create serial number file if it does not exist", |
354 | .type = OPTION_ORDER, | 354 | .type = OPTION_ORDER, |
355 | .opt.order = &x509_config.CA_createserial, | 355 | .opt.order = &cfg.CA_createserial, |
356 | .order = &x509_config.num, | 356 | .order = &cfg.num, |
357 | }, | 357 | }, |
358 | { | 358 | { |
359 | .name = "CAform", | 359 | .name = "CAform", |
360 | .argname = "fmt", | 360 | .argname = "fmt", |
361 | .desc = "CA format - default PEM", | 361 | .desc = "CA format - default PEM", |
362 | .type = OPTION_ARG_FORMAT, | 362 | .type = OPTION_ARG_FORMAT, |
363 | .opt.value = &x509_config.CAformat, | 363 | .opt.value = &cfg.CAformat, |
364 | }, | 364 | }, |
365 | { | 365 | { |
366 | .name = "CAkey", | 366 | .name = "CAkey", |
@@ -368,21 +368,21 @@ static const struct option x509_options[] = { | |||
368 | .desc = "CA key in PEM format unless -CAkeyform is specified\n" | 368 | .desc = "CA key in PEM format unless -CAkeyform is specified\n" |
369 | "if omitted, the key is assumed to be in the CA file", | 369 | "if omitted, the key is assumed to be in the CA file", |
370 | .type = OPTION_ARG, | 370 | .type = OPTION_ARG, |
371 | .opt.arg = &x509_config.CAkeyfile, | 371 | .opt.arg = &cfg.CAkeyfile, |
372 | }, | 372 | }, |
373 | { | 373 | { |
374 | .name = "CAkeyform", | 374 | .name = "CAkeyform", |
375 | .argname = "fmt", | 375 | .argname = "fmt", |
376 | .desc = "CA key format - default PEM", | 376 | .desc = "CA key format - default PEM", |
377 | .type = OPTION_ARG_FORMAT, | 377 | .type = OPTION_ARG_FORMAT, |
378 | .opt.value = &x509_config.CAkeyformat, | 378 | .opt.value = &cfg.CAkeyformat, |
379 | }, | 379 | }, |
380 | { | 380 | { |
381 | .name = "CAserial", | 381 | .name = "CAserial", |
382 | .argname = "file", | 382 | .argname = "file", |
383 | .desc = "Serial file", | 383 | .desc = "Serial file", |
384 | .type = OPTION_ARG, | 384 | .type = OPTION_ARG, |
385 | .opt.arg = &x509_config.CAserial, | 385 | .opt.arg = &cfg.CAserial, |
386 | }, | 386 | }, |
387 | { | 387 | { |
388 | .name = "certopt", | 388 | .name = "certopt", |
@@ -403,21 +403,21 @@ static const struct option x509_options[] = { | |||
403 | .name = "clrext", | 403 | .name = "clrext", |
404 | .desc = "Clear all extensions", | 404 | .desc = "Clear all extensions", |
405 | .type = OPTION_FLAG, | 405 | .type = OPTION_FLAG, |
406 | .opt.flag = &x509_config.clrext, | 406 | .opt.flag = &cfg.clrext, |
407 | }, | 407 | }, |
408 | { | 408 | { |
409 | .name = "clrreject", | 409 | .name = "clrreject", |
410 | .desc = "Clear all rejected purposes", | 410 | .desc = "Clear all rejected purposes", |
411 | .type = OPTION_ORDER, | 411 | .type = OPTION_ORDER, |
412 | .opt.order = &x509_config.clrreject, | 412 | .opt.order = &cfg.clrreject, |
413 | .order = &x509_config.num, | 413 | .order = &cfg.num, |
414 | }, | 414 | }, |
415 | { | 415 | { |
416 | .name = "clrtrust", | 416 | .name = "clrtrust", |
417 | .desc = "Clear all trusted purposes", | 417 | .desc = "Clear all trusted purposes", |
418 | .type = OPTION_ORDER, | 418 | .type = OPTION_ORDER, |
419 | .opt.order = &x509_config.clrtrust, | 419 | .opt.order = &cfg.clrtrust, |
420 | .order = &x509_config.num, | 420 | .order = &cfg.num, |
421 | }, | 421 | }, |
422 | { | 422 | { |
423 | .name = "dates", | 423 | .name = "dates", |
@@ -436,79 +436,79 @@ static const struct option x509_options[] = { | |||
436 | .name = "email", | 436 | .name = "email", |
437 | .desc = "Print email address(es)", | 437 | .desc = "Print email address(es)", |
438 | .type = OPTION_ORDER, | 438 | .type = OPTION_ORDER, |
439 | .opt.order = &x509_config.email, | 439 | .opt.order = &cfg.email, |
440 | .order = &x509_config.num, | 440 | .order = &cfg.num, |
441 | }, | 441 | }, |
442 | { | 442 | { |
443 | .name = "enddate", | 443 | .name = "enddate", |
444 | .desc = "Print notAfter field", | 444 | .desc = "Print notAfter field", |
445 | .type = OPTION_ORDER, | 445 | .type = OPTION_ORDER, |
446 | .opt.order = &x509_config.enddate, | 446 | .opt.order = &cfg.enddate, |
447 | .order = &x509_config.num, | 447 | .order = &cfg.num, |
448 | }, | 448 | }, |
449 | { | 449 | { |
450 | .name = "extensions", | 450 | .name = "extensions", |
451 | .argname = "section", | 451 | .argname = "section", |
452 | .desc = "Section from config file with X509V3 extensions to add", | 452 | .desc = "Section from config file with X509V3 extensions to add", |
453 | .type = OPTION_ARG, | 453 | .type = OPTION_ARG, |
454 | .opt.arg = &x509_config.extsect, | 454 | .opt.arg = &cfg.extsect, |
455 | }, | 455 | }, |
456 | { | 456 | { |
457 | .name = "extfile", | 457 | .name = "extfile", |
458 | .argname = "file", | 458 | .argname = "file", |
459 | .desc = "Configuration file with X509V3 extensions to add", | 459 | .desc = "Configuration file with X509V3 extensions to add", |
460 | .type = OPTION_ARG, | 460 | .type = OPTION_ARG, |
461 | .opt.arg = &x509_config.extfile, | 461 | .opt.arg = &cfg.extfile, |
462 | }, | 462 | }, |
463 | { | 463 | { |
464 | .name = "fingerprint", | 464 | .name = "fingerprint", |
465 | .desc = "Print the certificate fingerprint", | 465 | .desc = "Print the certificate fingerprint", |
466 | .type = OPTION_ORDER, | 466 | .type = OPTION_ORDER, |
467 | .opt.order = &x509_config.fingerprint, | 467 | .opt.order = &cfg.fingerprint, |
468 | .order = &x509_config.num, | 468 | .order = &cfg.num, |
469 | }, | 469 | }, |
470 | { | 470 | { |
471 | .name = "hash", | 471 | .name = "hash", |
472 | .desc = "Synonym for -subject_hash", | 472 | .desc = "Synonym for -subject_hash", |
473 | .type = OPTION_ORDER, | 473 | .type = OPTION_ORDER, |
474 | .opt.order = &x509_config.subject_hash, | 474 | .opt.order = &cfg.subject_hash, |
475 | .order = &x509_config.num, | 475 | .order = &cfg.num, |
476 | }, | 476 | }, |
477 | { | 477 | { |
478 | .name = "in", | 478 | .name = "in", |
479 | .argname = "file", | 479 | .argname = "file", |
480 | .desc = "Input file - default stdin", | 480 | .desc = "Input file - default stdin", |
481 | .type = OPTION_ARG, | 481 | .type = OPTION_ARG, |
482 | .opt.arg = &x509_config.infile, | 482 | .opt.arg = &cfg.infile, |
483 | }, | 483 | }, |
484 | { | 484 | { |
485 | .name = "inform", | 485 | .name = "inform", |
486 | .argname = "fmt", | 486 | .argname = "fmt", |
487 | .desc = "Input format - default PEM (one of DER, NET or PEM)", | 487 | .desc = "Input format - default PEM (one of DER, NET or PEM)", |
488 | .type = OPTION_ARG_FORMAT, | 488 | .type = OPTION_ARG_FORMAT, |
489 | .opt.value = &x509_config.informat, | 489 | .opt.value = &cfg.informat, |
490 | }, | 490 | }, |
491 | { | 491 | { |
492 | .name = "issuer", | 492 | .name = "issuer", |
493 | .desc = "Print issuer name", | 493 | .desc = "Print issuer name", |
494 | .type = OPTION_ORDER, | 494 | .type = OPTION_ORDER, |
495 | .opt.order = &x509_config.issuer, | 495 | .opt.order = &cfg.issuer, |
496 | .order = &x509_config.num, | 496 | .order = &cfg.num, |
497 | }, | 497 | }, |
498 | { | 498 | { |
499 | .name = "issuer_hash", | 499 | .name = "issuer_hash", |
500 | .desc = "Print issuer hash value", | 500 | .desc = "Print issuer hash value", |
501 | .type = OPTION_ORDER, | 501 | .type = OPTION_ORDER, |
502 | .opt.order = &x509_config.issuer_hash, | 502 | .opt.order = &cfg.issuer_hash, |
503 | .order = &x509_config.num, | 503 | .order = &cfg.num, |
504 | }, | 504 | }, |
505 | #ifndef OPENSSL_NO_MD5 | 505 | #ifndef OPENSSL_NO_MD5 |
506 | { | 506 | { |
507 | .name = "issuer_hash_old", | 507 | .name = "issuer_hash_old", |
508 | .desc = "Print old-style (MD5) issuer hash value", | 508 | .desc = "Print old-style (MD5) issuer hash value", |
509 | .type = OPTION_ORDER, | 509 | .type = OPTION_ORDER, |
510 | .opt.order = &x509_config.issuer_hash_old, | 510 | .opt.order = &cfg.issuer_hash_old, |
511 | .order = &x509_config.num, | 511 | .order = &cfg.num, |
512 | }, | 512 | }, |
513 | #endif | 513 | #endif |
514 | { | 514 | { |
@@ -516,14 +516,14 @@ static const struct option x509_options[] = { | |||
516 | .argname = "fmt", | 516 | .argname = "fmt", |
517 | .desc = "Private key format - default PEM", | 517 | .desc = "Private key format - default PEM", |
518 | .type = OPTION_ARG_FORMAT, | 518 | .type = OPTION_ARG_FORMAT, |
519 | .opt.value = &x509_config.keyformat, | 519 | .opt.value = &cfg.keyformat, |
520 | }, | 520 | }, |
521 | { | 521 | { |
522 | .name = "modulus", | 522 | .name = "modulus", |
523 | .desc = "Print the RSA key modulus", | 523 | .desc = "Print the RSA key modulus", |
524 | .type = OPTION_ORDER, | 524 | .type = OPTION_ORDER, |
525 | .opt.order = &x509_config.modulus, | 525 | .opt.order = &cfg.modulus, |
526 | .order = &x509_config.num, | 526 | .order = &cfg.num, |
527 | }, | 527 | }, |
528 | { | 528 | { |
529 | .name = "nameopt", | 529 | .name = "nameopt", |
@@ -536,77 +536,77 @@ static const struct option x509_options[] = { | |||
536 | .name = "next_serial", | 536 | .name = "next_serial", |
537 | .desc = "Print the next serial number", | 537 | .desc = "Print the next serial number", |
538 | .type = OPTION_ORDER, | 538 | .type = OPTION_ORDER, |
539 | .opt.order = &x509_config.next_serial, | 539 | .opt.order = &cfg.next_serial, |
540 | .order = &x509_config.num, | 540 | .order = &cfg.num, |
541 | }, | 541 | }, |
542 | { | 542 | { |
543 | .name = "noout", | 543 | .name = "noout", |
544 | .desc = "No certificate output", | 544 | .desc = "No certificate output", |
545 | .type = OPTION_ORDER, | 545 | .type = OPTION_ORDER, |
546 | .opt.order = &x509_config.noout, | 546 | .opt.order = &cfg.noout, |
547 | .order = &x509_config.num, | 547 | .order = &cfg.num, |
548 | }, | 548 | }, |
549 | { | 549 | { |
550 | .name = "ocsp_uri", | 550 | .name = "ocsp_uri", |
551 | .desc = "Print OCSP Responder URL(s)", | 551 | .desc = "Print OCSP Responder URL(s)", |
552 | .type = OPTION_ORDER, | 552 | .type = OPTION_ORDER, |
553 | .opt.order = &x509_config.ocsp_uri, | 553 | .opt.order = &cfg.ocsp_uri, |
554 | .order = &x509_config.num, | 554 | .order = &cfg.num, |
555 | }, | 555 | }, |
556 | { | 556 | { |
557 | .name = "ocspid", | 557 | .name = "ocspid", |
558 | .desc = "Print OCSP hash values for the subject name and public key", | 558 | .desc = "Print OCSP hash values for the subject name and public key", |
559 | .type = OPTION_ORDER, | 559 | .type = OPTION_ORDER, |
560 | .opt.order = &x509_config.ocspid, | 560 | .opt.order = &cfg.ocspid, |
561 | .order = &x509_config.num, | 561 | .order = &cfg.num, |
562 | }, | 562 | }, |
563 | { | 563 | { |
564 | .name = "out", | 564 | .name = "out", |
565 | .argname = "file", | 565 | .argname = "file", |
566 | .desc = "Output file - default stdout", | 566 | .desc = "Output file - default stdout", |
567 | .type = OPTION_ARG, | 567 | .type = OPTION_ARG, |
568 | .opt.arg = &x509_config.outfile, | 568 | .opt.arg = &cfg.outfile, |
569 | }, | 569 | }, |
570 | { | 570 | { |
571 | .name = "outform", | 571 | .name = "outform", |
572 | .argname = "fmt", | 572 | .argname = "fmt", |
573 | .desc = "Output format - default PEM (one of DER, NET or PEM)", | 573 | .desc = "Output format - default PEM (one of DER, NET or PEM)", |
574 | .type = OPTION_ARG_FORMAT, | 574 | .type = OPTION_ARG_FORMAT, |
575 | .opt.value = &x509_config.outformat, | 575 | .opt.value = &cfg.outformat, |
576 | }, | 576 | }, |
577 | { | 577 | { |
578 | .name = "passin", | 578 | .name = "passin", |
579 | .argname = "src", | 579 | .argname = "src", |
580 | .desc = "Private key password source", | 580 | .desc = "Private key password source", |
581 | .type = OPTION_ARG, | 581 | .type = OPTION_ARG, |
582 | .opt.arg = &x509_config.passargin, | 582 | .opt.arg = &cfg.passargin, |
583 | }, | 583 | }, |
584 | { | 584 | { |
585 | .name = "pubkey", | 585 | .name = "pubkey", |
586 | .desc = "Output the public key", | 586 | .desc = "Output the public key", |
587 | .type = OPTION_ORDER, | 587 | .type = OPTION_ORDER, |
588 | .opt.order = &x509_config.pubkey, | 588 | .opt.order = &cfg.pubkey, |
589 | .order = &x509_config.num, | 589 | .order = &cfg.num, |
590 | }, | 590 | }, |
591 | { | 591 | { |
592 | .name = "purpose", | 592 | .name = "purpose", |
593 | .desc = "Print out certificate purposes", | 593 | .desc = "Print out certificate purposes", |
594 | .type = OPTION_ORDER, | 594 | .type = OPTION_ORDER, |
595 | .opt.order = &x509_config.pprint, | 595 | .opt.order = &cfg.pprint, |
596 | .order = &x509_config.num, | 596 | .order = &cfg.num, |
597 | }, | 597 | }, |
598 | { | 598 | { |
599 | .name = "req", | 599 | .name = "req", |
600 | .desc = "Input is a certificate request, sign and output", | 600 | .desc = "Input is a certificate request, sign and output", |
601 | .type = OPTION_FLAG, | 601 | .type = OPTION_FLAG, |
602 | .opt.flag = &x509_config.reqfile, | 602 | .opt.flag = &cfg.reqfile, |
603 | }, | 603 | }, |
604 | { | 604 | { |
605 | .name = "serial", | 605 | .name = "serial", |
606 | .desc = "Print serial number value", | 606 | .desc = "Print serial number value", |
607 | .type = OPTION_ORDER, | 607 | .type = OPTION_ORDER, |
608 | .opt.order = &x509_config.serial, | 608 | .opt.order = &cfg.serial, |
609 | .order = &x509_config.num, | 609 | .order = &cfg.num, |
610 | }, | 610 | }, |
611 | { | 611 | { |
612 | .name = "set_serial", | 612 | .name = "set_serial", |
@@ -640,51 +640,51 @@ static const struct option x509_options[] = { | |||
640 | .name = "startdate", | 640 | .name = "startdate", |
641 | .desc = "Print notBefore field", | 641 | .desc = "Print notBefore field", |
642 | .type = OPTION_ORDER, | 642 | .type = OPTION_ORDER, |
643 | .opt.order = &x509_config.startdate, | 643 | .opt.order = &cfg.startdate, |
644 | .order = &x509_config.num, | 644 | .order = &cfg.num, |
645 | }, | 645 | }, |
646 | { | 646 | { |
647 | .name = "subject", | 647 | .name = "subject", |
648 | .desc = "Print subject name", | 648 | .desc = "Print subject name", |
649 | .type = OPTION_ORDER, | 649 | .type = OPTION_ORDER, |
650 | .opt.order = &x509_config.subject, | 650 | .opt.order = &cfg.subject, |
651 | .order = &x509_config.num, | 651 | .order = &cfg.num, |
652 | }, | 652 | }, |
653 | { | 653 | { |
654 | .name = "subject_hash", | 654 | .name = "subject_hash", |
655 | .desc = "Print subject hash value", | 655 | .desc = "Print subject hash value", |
656 | .type = OPTION_ORDER, | 656 | .type = OPTION_ORDER, |
657 | .opt.order = &x509_config.subject_hash, | 657 | .opt.order = &cfg.subject_hash, |
658 | .order = &x509_config.num, | 658 | .order = &cfg.num, |
659 | }, | 659 | }, |
660 | #ifndef OPENSSL_NO_MD5 | 660 | #ifndef OPENSSL_NO_MD5 |
661 | { | 661 | { |
662 | .name = "subject_hash_old", | 662 | .name = "subject_hash_old", |
663 | .desc = "Print old-style (MD5) subject hash value", | 663 | .desc = "Print old-style (MD5) subject hash value", |
664 | .type = OPTION_ORDER, | 664 | .type = OPTION_ORDER, |
665 | .opt.order = &x509_config.subject_hash_old, | 665 | .opt.order = &cfg.subject_hash_old, |
666 | .order = &x509_config.num, | 666 | .order = &cfg.num, |
667 | }, | 667 | }, |
668 | #endif | 668 | #endif |
669 | { | 669 | { |
670 | .name = "text", | 670 | .name = "text", |
671 | .desc = "Print the certificate in text form", | 671 | .desc = "Print the certificate in text form", |
672 | .type = OPTION_ORDER, | 672 | .type = OPTION_ORDER, |
673 | .opt.order = &x509_config.text, | 673 | .opt.order = &cfg.text, |
674 | .order = &x509_config.num, | 674 | .order = &cfg.num, |
675 | }, | 675 | }, |
676 | { | 676 | { |
677 | .name = "trustout", | 677 | .name = "trustout", |
678 | .desc = "Output a trusted certificate", | 678 | .desc = "Output a trusted certificate", |
679 | .type = OPTION_FLAG, | 679 | .type = OPTION_FLAG, |
680 | .opt.flag = &x509_config.trustout, | 680 | .opt.flag = &cfg.trustout, |
681 | }, | 681 | }, |
682 | { | 682 | { |
683 | .name = "x509toreq", | 683 | .name = "x509toreq", |
684 | .desc = "Output a certification request object", | 684 | .desc = "Output a certification request object", |
685 | .type = OPTION_ORDER, | 685 | .type = OPTION_ORDER, |
686 | .opt.order = &x509_config.x509req, | 686 | .opt.order = &cfg.x509req, |
687 | .order = &x509_config.num, | 687 | .order = &cfg.num, |
688 | }, | 688 | }, |
689 | { | 689 | { |
690 | .name = NULL, | 690 | .name = NULL, |
@@ -740,13 +740,13 @@ x509_main(int argc, char **argv) | |||
740 | exit(1); | 740 | exit(1); |
741 | } | 741 | } |
742 | 742 | ||
743 | memset(&x509_config, 0, sizeof(x509_config)); | 743 | memset(&cfg, 0, sizeof(cfg)); |
744 | x509_config.days = DEF_DAYS; | 744 | cfg.days = DEF_DAYS; |
745 | x509_config.informat = FORMAT_PEM; | 745 | cfg.informat = FORMAT_PEM; |
746 | x509_config.outformat = FORMAT_PEM; | 746 | cfg.outformat = FORMAT_PEM; |
747 | x509_config.keyformat = FORMAT_PEM; | 747 | cfg.keyformat = FORMAT_PEM; |
748 | x509_config.CAformat = FORMAT_PEM; | 748 | cfg.CAformat = FORMAT_PEM; |
749 | x509_config.CAkeyformat = FORMAT_PEM; | 749 | cfg.CAkeyformat = FORMAT_PEM; |
750 | 750 | ||
751 | STDout = BIO_new_fp(stdout, BIO_NOCLOSE); | 751 | STDout = BIO_new_fp(stdout, BIO_NOCLOSE); |
752 | 752 | ||
@@ -758,13 +758,13 @@ x509_main(int argc, char **argv) | |||
758 | if (options_parse(argc, argv, x509_options, NULL, NULL) != 0) | 758 | if (options_parse(argc, argv, x509_options, NULL, NULL) != 0) |
759 | goto bad; | 759 | goto bad; |
760 | 760 | ||
761 | if (x509_config.badops) { | 761 | if (cfg.badops) { |
762 | bad: | 762 | bad: |
763 | x509_usage(); | 763 | x509_usage(); |
764 | goto end; | 764 | goto end; |
765 | } | 765 | } |
766 | 766 | ||
767 | if (!app_passwd(bio_err, x509_config.passargin, NULL, &passin, NULL)) { | 767 | if (!app_passwd(bio_err, cfg.passargin, NULL, &passin, NULL)) { |
768 | BIO_printf(bio_err, "Error getting password\n"); | 768 | BIO_printf(bio_err, "Error getting password\n"); |
769 | goto end; | 769 | goto end; |
770 | } | 770 | } |
@@ -772,53 +772,53 @@ x509_main(int argc, char **argv) | |||
772 | ERR_print_errors(bio_err); | 772 | ERR_print_errors(bio_err); |
773 | goto end; | 773 | goto end; |
774 | } | 774 | } |
775 | if ((x509_config.CAkeyfile == NULL) && (x509_config.CA_flag) && | 775 | if ((cfg.CAkeyfile == NULL) && (cfg.CA_flag) && |
776 | (x509_config.CAformat == FORMAT_PEM)) { | 776 | (cfg.CAformat == FORMAT_PEM)) { |
777 | x509_config.CAkeyfile = x509_config.CAfile; | 777 | cfg.CAkeyfile = cfg.CAfile; |
778 | } else if ((x509_config.CA_flag) && (x509_config.CAkeyfile == NULL)) { | 778 | } else if ((cfg.CA_flag) && (cfg.CAkeyfile == NULL)) { |
779 | BIO_printf(bio_err, | 779 | BIO_printf(bio_err, |
780 | "need to specify a CAkey if using the CA command\n"); | 780 | "need to specify a CAkey if using the CA command\n"); |
781 | goto end; | 781 | goto end; |
782 | } | 782 | } |
783 | if (x509_config.extfile != NULL) { | 783 | if (cfg.extfile != NULL) { |
784 | long errorline = -1; | 784 | long errorline = -1; |
785 | X509V3_CTX ctx2; | 785 | X509V3_CTX ctx2; |
786 | extconf = NCONF_new(NULL); | 786 | extconf = NCONF_new(NULL); |
787 | if (!NCONF_load(extconf, x509_config.extfile, &errorline)) { | 787 | if (!NCONF_load(extconf, cfg.extfile, &errorline)) { |
788 | if (errorline <= 0) | 788 | if (errorline <= 0) |
789 | BIO_printf(bio_err, | 789 | BIO_printf(bio_err, |
790 | "error loading the config file '%s'\n", | 790 | "error loading the config file '%s'\n", |
791 | x509_config.extfile); | 791 | cfg.extfile); |
792 | else | 792 | else |
793 | BIO_printf(bio_err, | 793 | BIO_printf(bio_err, |
794 | "error on line %ld of config file '%s'\n", | 794 | "error on line %ld of config file '%s'\n", |
795 | errorline, x509_config.extfile); | 795 | errorline, cfg.extfile); |
796 | goto end; | 796 | goto end; |
797 | } | 797 | } |
798 | if (x509_config.extsect == NULL) { | 798 | if (cfg.extsect == NULL) { |
799 | x509_config.extsect = NCONF_get_string(extconf, | 799 | cfg.extsect = NCONF_get_string(extconf, |
800 | "default", "extensions"); | 800 | "default", "extensions"); |
801 | if (x509_config.extsect == NULL) { | 801 | if (cfg.extsect == NULL) { |
802 | ERR_clear_error(); | 802 | ERR_clear_error(); |
803 | x509_config.extsect = "default"; | 803 | cfg.extsect = "default"; |
804 | } | 804 | } |
805 | } | 805 | } |
806 | X509V3_set_ctx_test(&ctx2); | 806 | X509V3_set_ctx_test(&ctx2); |
807 | X509V3_set_nconf(&ctx2, extconf); | 807 | X509V3_set_nconf(&ctx2, extconf); |
808 | if (!X509V3_EXT_add_nconf(extconf, &ctx2, x509_config.extsect, | 808 | if (!X509V3_EXT_add_nconf(extconf, &ctx2, cfg.extsect, |
809 | NULL)) { | 809 | NULL)) { |
810 | BIO_printf(bio_err, | 810 | BIO_printf(bio_err, |
811 | "Error Loading extension section %s\n", | 811 | "Error Loading extension section %s\n", |
812 | x509_config.extsect); | 812 | cfg.extsect); |
813 | ERR_print_errors(bio_err); | 813 | ERR_print_errors(bio_err); |
814 | goto end; | 814 | goto end; |
815 | } | 815 | } |
816 | } | 816 | } |
817 | if (x509_config.reqfile) { | 817 | if (cfg.reqfile) { |
818 | EVP_PKEY *pkey; | 818 | EVP_PKEY *pkey; |
819 | BIO *in; | 819 | BIO *in; |
820 | 820 | ||
821 | if (!x509_config.sign_flag && !x509_config.CA_flag) { | 821 | if (!cfg.sign_flag && !cfg.CA_flag) { |
822 | BIO_printf(bio_err, | 822 | BIO_printf(bio_err, |
823 | "We need a private key to sign with\n"); | 823 | "We need a private key to sign with\n"); |
824 | goto end; | 824 | goto end; |
@@ -828,11 +828,11 @@ x509_main(int argc, char **argv) | |||
828 | ERR_print_errors(bio_err); | 828 | ERR_print_errors(bio_err); |
829 | goto end; | 829 | goto end; |
830 | } | 830 | } |
831 | if (x509_config.infile == NULL) | 831 | if (cfg.infile == NULL) |
832 | BIO_set_fp(in, stdin, BIO_NOCLOSE | BIO_FP_TEXT); | 832 | BIO_set_fp(in, stdin, BIO_NOCLOSE | BIO_FP_TEXT); |
833 | else { | 833 | else { |
834 | if (BIO_read_filename(in, x509_config.infile) <= 0) { | 834 | if (BIO_read_filename(in, cfg.infile) <= 0) { |
835 | perror(x509_config.infile); | 835 | perror(cfg.infile); |
836 | BIO_free(in); | 836 | BIO_free(in); |
837 | goto end; | 837 | goto end; |
838 | } | 838 | } |
@@ -862,21 +862,21 @@ x509_main(int argc, char **argv) | |||
862 | BIO_printf(bio_err, "Signature ok\n"); | 862 | BIO_printf(bio_err, "Signature ok\n"); |
863 | 863 | ||
864 | print_name(bio_err, "subject=", X509_REQ_get_subject_name(req), | 864 | print_name(bio_err, "subject=", X509_REQ_get_subject_name(req), |
865 | x509_config.nmflag); | 865 | cfg.nmflag); |
866 | 866 | ||
867 | if ((x = X509_new()) == NULL) | 867 | if ((x = X509_new()) == NULL) |
868 | goto end; | 868 | goto end; |
869 | 869 | ||
870 | if (x509_config.sno == NULL) { | 870 | if (cfg.sno == NULL) { |
871 | x509_config.sno = ASN1_INTEGER_new(); | 871 | cfg.sno = ASN1_INTEGER_new(); |
872 | if (x509_config.sno == NULL || | 872 | if (cfg.sno == NULL || |
873 | !rand_serial(NULL, x509_config.sno)) | 873 | !rand_serial(NULL, cfg.sno)) |
874 | goto end; | 874 | goto end; |
875 | if (!X509_set_serialNumber(x, x509_config.sno)) | 875 | if (!X509_set_serialNumber(x, cfg.sno)) |
876 | goto end; | 876 | goto end; |
877 | ASN1_INTEGER_free(x509_config.sno); | 877 | ASN1_INTEGER_free(cfg.sno); |
878 | x509_config.sno = NULL; | 878 | cfg.sno = NULL; |
879 | } else if (!X509_set_serialNumber(x, x509_config.sno)) | 879 | } else if (!X509_set_serialNumber(x, cfg.sno)) |
880 | goto end; | 880 | goto end; |
881 | 881 | ||
882 | if (!X509_set_issuer_name(x, X509_REQ_get_subject_name(req))) | 882 | if (!X509_set_issuer_name(x, X509_REQ_get_subject_name(req))) |
@@ -886,7 +886,7 @@ x509_main(int argc, char **argv) | |||
886 | 886 | ||
887 | if (X509_gmtime_adj(X509_get_notBefore(x), 0) == NULL) | 887 | if (X509_gmtime_adj(X509_get_notBefore(x), 0) == NULL) |
888 | goto end; | 888 | goto end; |
889 | if (X509_time_adj_ex(X509_get_notAfter(x), x509_config.days, 0, | 889 | if (X509_time_adj_ex(X509_get_notAfter(x), cfg.days, 0, |
890 | NULL) == NULL) | 890 | NULL) == NULL) |
891 | goto end; | 891 | goto end; |
892 | 892 | ||
@@ -897,19 +897,19 @@ x509_main(int argc, char **argv) | |||
897 | goto end; | 897 | goto end; |
898 | } | 898 | } |
899 | } else { | 899 | } else { |
900 | x = load_cert(bio_err, x509_config.infile, x509_config.informat, | 900 | x = load_cert(bio_err, cfg.infile, cfg.informat, |
901 | NULL, "Certificate"); | 901 | NULL, "Certificate"); |
902 | } | 902 | } |
903 | if (x == NULL) | 903 | if (x == NULL) |
904 | goto end; | 904 | goto end; |
905 | 905 | ||
906 | if (x509_config.CA_flag) { | 906 | if (cfg.CA_flag) { |
907 | xca = load_cert(bio_err, x509_config.CAfile, | 907 | xca = load_cert(bio_err, cfg.CAfile, |
908 | x509_config.CAformat, NULL, "CA Certificate"); | 908 | cfg.CAformat, NULL, "CA Certificate"); |
909 | if (xca == NULL) | 909 | if (xca == NULL) |
910 | goto end; | 910 | goto end; |
911 | } | 911 | } |
912 | if (!x509_config.noout || x509_config.text || x509_config.next_serial) { | 912 | if (!cfg.noout || cfg.text || cfg.next_serial) { |
913 | OBJ_create("2.99999.3", "SET.ex3", "SET x509v3 extension 3"); | 913 | OBJ_create("2.99999.3", "SET.ex3", "SET x509v3 extension 3"); |
914 | 914 | ||
915 | out = BIO_new(BIO_s_file()); | 915 | out = BIO_new(BIO_s_file()); |
@@ -917,57 +917,57 @@ x509_main(int argc, char **argv) | |||
917 | ERR_print_errors(bio_err); | 917 | ERR_print_errors(bio_err); |
918 | goto end; | 918 | goto end; |
919 | } | 919 | } |
920 | if (x509_config.outfile == NULL) { | 920 | if (cfg.outfile == NULL) { |
921 | BIO_set_fp(out, stdout, BIO_NOCLOSE); | 921 | BIO_set_fp(out, stdout, BIO_NOCLOSE); |
922 | } else { | 922 | } else { |
923 | if (BIO_write_filename(out, x509_config.outfile) <= 0) { | 923 | if (BIO_write_filename(out, cfg.outfile) <= 0) { |
924 | perror(x509_config.outfile); | 924 | perror(cfg.outfile); |
925 | goto end; | 925 | goto end; |
926 | } | 926 | } |
927 | } | 927 | } |
928 | } | 928 | } |
929 | if (x509_config.alias != NULL) { | 929 | if (cfg.alias != NULL) { |
930 | if (!X509_alias_set1(x, (unsigned char *)x509_config.alias, -1)) | 930 | if (!X509_alias_set1(x, (unsigned char *)cfg.alias, -1)) |
931 | goto end; | 931 | goto end; |
932 | } | 932 | } |
933 | 933 | ||
934 | if (x509_config.clrtrust) | 934 | if (cfg.clrtrust) |
935 | X509_trust_clear(x); | 935 | X509_trust_clear(x); |
936 | if (x509_config.clrreject) | 936 | if (cfg.clrreject) |
937 | X509_reject_clear(x); | 937 | X509_reject_clear(x); |
938 | 938 | ||
939 | if (x509_config.trust != NULL) { | 939 | if (cfg.trust != NULL) { |
940 | for (i = 0; i < sk_ASN1_OBJECT_num(x509_config.trust); i++) { | 940 | for (i = 0; i < sk_ASN1_OBJECT_num(cfg.trust); i++) { |
941 | x509_config.objtmp = sk_ASN1_OBJECT_value( | 941 | cfg.objtmp = sk_ASN1_OBJECT_value( |
942 | x509_config.trust, i); | 942 | cfg.trust, i); |
943 | if (!X509_add1_trust_object(x, x509_config.objtmp)) | 943 | if (!X509_add1_trust_object(x, cfg.objtmp)) |
944 | goto end; | 944 | goto end; |
945 | } | 945 | } |
946 | } | 946 | } |
947 | if (x509_config.reject != NULL) { | 947 | if (cfg.reject != NULL) { |
948 | for (i = 0; i < sk_ASN1_OBJECT_num(x509_config.reject); i++) { | 948 | for (i = 0; i < sk_ASN1_OBJECT_num(cfg.reject); i++) { |
949 | x509_config.objtmp = sk_ASN1_OBJECT_value( | 949 | cfg.objtmp = sk_ASN1_OBJECT_value( |
950 | x509_config.reject, i); | 950 | cfg.reject, i); |
951 | if (!X509_add1_reject_object(x, x509_config.objtmp)) | 951 | if (!X509_add1_reject_object(x, cfg.objtmp)) |
952 | goto end; | 952 | goto end; |
953 | } | 953 | } |
954 | } | 954 | } |
955 | if (x509_config.num) { | 955 | if (cfg.num) { |
956 | for (i = 1; i <= x509_config.num; i++) { | 956 | for (i = 1; i <= cfg.num; i++) { |
957 | if (x509_config.issuer == i) { | 957 | if (cfg.issuer == i) { |
958 | print_name(STDout, "issuer= ", | 958 | print_name(STDout, "issuer= ", |
959 | X509_get_issuer_name(x), | 959 | X509_get_issuer_name(x), |
960 | x509_config.nmflag); | 960 | cfg.nmflag); |
961 | } else if (x509_config.subject == i) { | 961 | } else if (cfg.subject == i) { |
962 | print_name(STDout, "subject= ", | 962 | print_name(STDout, "subject= ", |
963 | X509_get_subject_name(x), | 963 | X509_get_subject_name(x), |
964 | x509_config.nmflag); | 964 | cfg.nmflag); |
965 | } else if (x509_config.serial == i) { | 965 | } else if (cfg.serial == i) { |
966 | BIO_printf(STDout, "serial="); | 966 | BIO_printf(STDout, "serial="); |
967 | i2a_ASN1_INTEGER(STDout, | 967 | i2a_ASN1_INTEGER(STDout, |
968 | X509_get_serialNumber(x)); | 968 | X509_get_serialNumber(x)); |
969 | BIO_printf(STDout, "\n"); | 969 | BIO_printf(STDout, "\n"); |
970 | } else if (x509_config.next_serial == i) { | 970 | } else if (cfg.next_serial == i) { |
971 | BIGNUM *bnser; | 971 | BIGNUM *bnser; |
972 | ASN1_INTEGER *ser; | 972 | ASN1_INTEGER *ser; |
973 | ser = X509_get_serialNumber(x); | 973 | ser = X509_get_serialNumber(x); |
@@ -989,11 +989,11 @@ x509_main(int argc, char **argv) | |||
989 | i2a_ASN1_INTEGER(out, ser); | 989 | i2a_ASN1_INTEGER(out, ser); |
990 | ASN1_INTEGER_free(ser); | 990 | ASN1_INTEGER_free(ser); |
991 | BIO_puts(out, "\n"); | 991 | BIO_puts(out, "\n"); |
992 | } else if ((x509_config.email == i) || | 992 | } else if ((cfg.email == i) || |
993 | (x509_config.ocsp_uri == i)) { | 993 | (cfg.ocsp_uri == i)) { |
994 | int j; | 994 | int j; |
995 | STACK_OF(OPENSSL_STRING) *emlst; | 995 | STACK_OF(OPENSSL_STRING) *emlst; |
996 | if (x509_config.email == i) | 996 | if (cfg.email == i) |
997 | emlst = X509_get1_email(x); | 997 | emlst = X509_get1_email(x); |
998 | else | 998 | else |
999 | emlst = X509_get1_ocsp(x); | 999 | emlst = X509_get1_ocsp(x); |
@@ -1001,7 +1001,7 @@ x509_main(int argc, char **argv) | |||
1001 | BIO_printf(STDout, "%s\n", | 1001 | BIO_printf(STDout, "%s\n", |
1002 | sk_OPENSSL_STRING_value(emlst, j)); | 1002 | sk_OPENSSL_STRING_value(emlst, j)); |
1003 | X509_email_free(emlst); | 1003 | X509_email_free(emlst); |
1004 | } else if (x509_config.aliasout == i) { | 1004 | } else if (cfg.aliasout == i) { |
1005 | unsigned char *albuf; | 1005 | unsigned char *albuf; |
1006 | int buflen; | 1006 | int buflen; |
1007 | albuf = X509_alias_get0(x, &buflen); | 1007 | albuf = X509_alias_get0(x, &buflen); |
@@ -1010,27 +1010,27 @@ x509_main(int argc, char **argv) | |||
1010 | buflen, albuf); | 1010 | buflen, albuf); |
1011 | else | 1011 | else |
1012 | BIO_puts(STDout, "<No Alias>\n"); | 1012 | BIO_puts(STDout, "<No Alias>\n"); |
1013 | } else if (x509_config.subject_hash == i) { | 1013 | } else if (cfg.subject_hash == i) { |
1014 | BIO_printf(STDout, "%08lx\n", | 1014 | BIO_printf(STDout, "%08lx\n", |
1015 | X509_subject_name_hash(x)); | 1015 | X509_subject_name_hash(x)); |
1016 | } | 1016 | } |
1017 | #ifndef OPENSSL_NO_MD5 | 1017 | #ifndef OPENSSL_NO_MD5 |
1018 | else if (x509_config.subject_hash_old == i) { | 1018 | else if (cfg.subject_hash_old == i) { |
1019 | BIO_printf(STDout, "%08lx\n", | 1019 | BIO_printf(STDout, "%08lx\n", |
1020 | X509_subject_name_hash_old(x)); | 1020 | X509_subject_name_hash_old(x)); |
1021 | } | 1021 | } |
1022 | #endif | 1022 | #endif |
1023 | else if (x509_config.issuer_hash == i) { | 1023 | else if (cfg.issuer_hash == i) { |
1024 | BIO_printf(STDout, "%08lx\n", | 1024 | BIO_printf(STDout, "%08lx\n", |
1025 | X509_issuer_name_hash(x)); | 1025 | X509_issuer_name_hash(x)); |
1026 | } | 1026 | } |
1027 | #ifndef OPENSSL_NO_MD5 | 1027 | #ifndef OPENSSL_NO_MD5 |
1028 | else if (x509_config.issuer_hash_old == i) { | 1028 | else if (cfg.issuer_hash_old == i) { |
1029 | BIO_printf(STDout, "%08lx\n", | 1029 | BIO_printf(STDout, "%08lx\n", |
1030 | X509_issuer_name_hash_old(x)); | 1030 | X509_issuer_name_hash_old(x)); |
1031 | } | 1031 | } |
1032 | #endif | 1032 | #endif |
1033 | else if (x509_config.pprint == i) { | 1033 | else if (cfg.pprint == i) { |
1034 | X509_PURPOSE *ptmp; | 1034 | X509_PURPOSE *ptmp; |
1035 | int j; | 1035 | int j; |
1036 | BIO_printf(STDout, "Certificate purposes:\n"); | 1036 | BIO_printf(STDout, "Certificate purposes:\n"); |
@@ -1038,7 +1038,7 @@ x509_main(int argc, char **argv) | |||
1038 | ptmp = X509_PURPOSE_get0(j); | 1038 | ptmp = X509_PURPOSE_get0(j); |
1039 | purpose_print(STDout, x, ptmp); | 1039 | purpose_print(STDout, x, ptmp); |
1040 | } | 1040 | } |
1041 | } else if (x509_config.modulus == i) { | 1041 | } else if (cfg.modulus == i) { |
1042 | EVP_PKEY *pkey; | 1042 | EVP_PKEY *pkey; |
1043 | 1043 | ||
1044 | pkey = X509_get0_pubkey(x); | 1044 | pkey = X509_get0_pubkey(x); |
@@ -1066,7 +1066,7 @@ x509_main(int argc, char **argv) | |||
1066 | BIO_printf(STDout, | 1066 | BIO_printf(STDout, |
1067 | "Wrong Algorithm type"); | 1067 | "Wrong Algorithm type"); |
1068 | BIO_printf(STDout, "\n"); | 1068 | BIO_printf(STDout, "\n"); |
1069 | } else if (x509_config.pubkey == i) { | 1069 | } else if (cfg.pubkey == i) { |
1070 | EVP_PKEY *pkey; | 1070 | EVP_PKEY *pkey; |
1071 | 1071 | ||
1072 | pkey = X509_get0_pubkey(x); | 1072 | pkey = X509_get0_pubkey(x); |
@@ -1077,7 +1077,7 @@ x509_main(int argc, char **argv) | |||
1077 | goto end; | 1077 | goto end; |
1078 | } | 1078 | } |
1079 | PEM_write_bio_PUBKEY(STDout, pkey); | 1079 | PEM_write_bio_PUBKEY(STDout, pkey); |
1080 | } else if (x509_config.C == i) { | 1080 | } else if (cfg.C == i) { |
1081 | unsigned char *d; | 1081 | unsigned char *d; |
1082 | char *m; | 1082 | char *m; |
1083 | int y, z; | 1083 | int y, z; |
@@ -1156,11 +1156,11 @@ x509_main(int argc, char **argv) | |||
1156 | BIO_printf(STDout, "};\n"); | 1156 | BIO_printf(STDout, "};\n"); |
1157 | 1157 | ||
1158 | free(m); | 1158 | free(m); |
1159 | } else if (x509_config.text == i) { | 1159 | } else if (cfg.text == i) { |
1160 | if(!X509_print_ex(STDout, x, x509_config.nmflag, | 1160 | if(!X509_print_ex(STDout, x, cfg.nmflag, |
1161 | x509_config.certflag)) | 1161 | cfg.certflag)) |
1162 | goto end; | 1162 | goto end; |
1163 | } else if (x509_config.startdate == i) { | 1163 | } else if (cfg.startdate == i) { |
1164 | ASN1_TIME *nB = X509_get_notBefore(x); | 1164 | ASN1_TIME *nB = X509_get_notBefore(x); |
1165 | BIO_puts(STDout, "notBefore="); | 1165 | BIO_puts(STDout, "notBefore="); |
1166 | if (ASN1_time_parse(nB->data, nB->length, NULL, | 1166 | if (ASN1_time_parse(nB->data, nB->length, NULL, |
@@ -1170,7 +1170,7 @@ x509_main(int argc, char **argv) | |||
1170 | else | 1170 | else |
1171 | ASN1_TIME_print(STDout, nB); | 1171 | ASN1_TIME_print(STDout, nB); |
1172 | BIO_puts(STDout, "\n"); | 1172 | BIO_puts(STDout, "\n"); |
1173 | } else if (x509_config.enddate == i) { | 1173 | } else if (cfg.enddate == i) { |
1174 | ASN1_TIME *nA = X509_get_notAfter(x); | 1174 | ASN1_TIME *nA = X509_get_notAfter(x); |
1175 | BIO_puts(STDout, "notAfter="); | 1175 | BIO_puts(STDout, "notAfter="); |
1176 | if (ASN1_time_parse(nA->data, nA->length, NULL, | 1176 | if (ASN1_time_parse(nA->data, nA->length, NULL, |
@@ -1180,11 +1180,11 @@ x509_main(int argc, char **argv) | |||
1180 | else | 1180 | else |
1181 | ASN1_TIME_print(STDout, nA); | 1181 | ASN1_TIME_print(STDout, nA); |
1182 | BIO_puts(STDout, "\n"); | 1182 | BIO_puts(STDout, "\n"); |
1183 | } else if (x509_config.fingerprint == i) { | 1183 | } else if (cfg.fingerprint == i) { |
1184 | int j; | 1184 | int j; |
1185 | unsigned int n; | 1185 | unsigned int n; |
1186 | unsigned char md[EVP_MAX_MD_SIZE]; | 1186 | unsigned char md[EVP_MAX_MD_SIZE]; |
1187 | const EVP_MD *fdig = x509_config.digest; | 1187 | const EVP_MD *fdig = cfg.digest; |
1188 | 1188 | ||
1189 | if (fdig == NULL) | 1189 | if (fdig == NULL) |
1190 | fdig = EVP_sha256(); | 1190 | fdig = EVP_sha256(); |
@@ -1201,52 +1201,52 @@ x509_main(int argc, char **argv) | |||
1201 | } | 1201 | } |
1202 | 1202 | ||
1203 | /* should be in the library */ | 1203 | /* should be in the library */ |
1204 | } else if ((x509_config.sign_flag == i) && | 1204 | } else if ((cfg.sign_flag == i) && |
1205 | (x509_config.x509req == 0)) { | 1205 | (cfg.x509req == 0)) { |
1206 | BIO_printf(bio_err, "Getting Private key\n"); | 1206 | BIO_printf(bio_err, "Getting Private key\n"); |
1207 | if (Upkey == NULL) { | 1207 | if (Upkey == NULL) { |
1208 | Upkey = load_key(bio_err, | 1208 | Upkey = load_key(bio_err, |
1209 | x509_config.keyfile, | 1209 | cfg.keyfile, |
1210 | x509_config.keyformat, 0, passin, | 1210 | cfg.keyformat, 0, passin, |
1211 | "Private key"); | 1211 | "Private key"); |
1212 | if (Upkey == NULL) | 1212 | if (Upkey == NULL) |
1213 | goto end; | 1213 | goto end; |
1214 | } | 1214 | } |
1215 | if (!sign(x, Upkey, x509_config.days, | 1215 | if (!sign(x, Upkey, cfg.days, |
1216 | x509_config.clrext, x509_config.digest, | 1216 | cfg.clrext, cfg.digest, |
1217 | extconf, x509_config.extsect)) | 1217 | extconf, cfg.extsect)) |
1218 | goto end; | 1218 | goto end; |
1219 | } else if (x509_config.CA_flag == i) { | 1219 | } else if (cfg.CA_flag == i) { |
1220 | BIO_printf(bio_err, "Getting CA Private Key\n"); | 1220 | BIO_printf(bio_err, "Getting CA Private Key\n"); |
1221 | if (x509_config.CAkeyfile != NULL) { | 1221 | if (cfg.CAkeyfile != NULL) { |
1222 | CApkey = load_key(bio_err, | 1222 | CApkey = load_key(bio_err, |
1223 | x509_config.CAkeyfile, | 1223 | cfg.CAkeyfile, |
1224 | x509_config.CAkeyformat, 0, passin, | 1224 | cfg.CAkeyformat, 0, passin, |
1225 | "CA Private Key"); | 1225 | "CA Private Key"); |
1226 | if (CApkey == NULL) | 1226 | if (CApkey == NULL) |
1227 | goto end; | 1227 | goto end; |
1228 | } | 1228 | } |
1229 | if (!x509_certify(ctx, x509_config.CAfile, | 1229 | if (!x509_certify(ctx, cfg.CAfile, |
1230 | x509_config.digest, x, xca, CApkey, | 1230 | cfg.digest, x, xca, CApkey, |
1231 | x509_config.sigopts, x509_config.CAserial, | 1231 | cfg.sigopts, cfg.CAserial, |
1232 | x509_config.CA_createserial, | 1232 | cfg.CA_createserial, |
1233 | x509_config.days, x509_config.clrext, | 1233 | cfg.days, cfg.clrext, |
1234 | extconf, x509_config.extsect, | 1234 | extconf, cfg.extsect, |
1235 | x509_config.sno)) | 1235 | cfg.sno)) |
1236 | goto end; | 1236 | goto end; |
1237 | } else if (x509_config.x509req == i) { | 1237 | } else if (cfg.x509req == i) { |
1238 | EVP_PKEY *pk; | 1238 | EVP_PKEY *pk; |
1239 | 1239 | ||
1240 | BIO_printf(bio_err, | 1240 | BIO_printf(bio_err, |
1241 | "Getting request Private Key\n"); | 1241 | "Getting request Private Key\n"); |
1242 | if (x509_config.keyfile == NULL) { | 1242 | if (cfg.keyfile == NULL) { |
1243 | BIO_printf(bio_err, | 1243 | BIO_printf(bio_err, |
1244 | "no request key file specified\n"); | 1244 | "no request key file specified\n"); |
1245 | goto end; | 1245 | goto end; |
1246 | } else { | 1246 | } else { |
1247 | pk = load_key(bio_err, | 1247 | pk = load_key(bio_err, |
1248 | x509_config.keyfile, | 1248 | cfg.keyfile, |
1249 | x509_config.keyformat, 0, passin, | 1249 | cfg.keyformat, 0, passin, |
1250 | "request key"); | 1250 | "request key"); |
1251 | if (pk == NULL) | 1251 | if (pk == NULL) |
1252 | goto end; | 1252 | goto end; |
@@ -1255,27 +1255,27 @@ x509_main(int argc, char **argv) | |||
1255 | BIO_printf(bio_err, | 1255 | BIO_printf(bio_err, |
1256 | "Generating certificate request\n"); | 1256 | "Generating certificate request\n"); |
1257 | 1257 | ||
1258 | rq = X509_to_X509_REQ(x, pk, x509_config.digest); | 1258 | rq = X509_to_X509_REQ(x, pk, cfg.digest); |
1259 | EVP_PKEY_free(pk); | 1259 | EVP_PKEY_free(pk); |
1260 | if (rq == NULL) { | 1260 | if (rq == NULL) { |
1261 | ERR_print_errors(bio_err); | 1261 | ERR_print_errors(bio_err); |
1262 | goto end; | 1262 | goto end; |
1263 | } | 1263 | } |
1264 | if (!x509_config.noout) { | 1264 | if (!cfg.noout) { |
1265 | if (!X509_REQ_print(out, rq)) | 1265 | if (!X509_REQ_print(out, rq)) |
1266 | goto end; | 1266 | goto end; |
1267 | if (!PEM_write_bio_X509_REQ(out, rq)) | 1267 | if (!PEM_write_bio_X509_REQ(out, rq)) |
1268 | goto end; | 1268 | goto end; |
1269 | } | 1269 | } |
1270 | x509_config.noout = 1; | 1270 | cfg.noout = 1; |
1271 | } else if (x509_config.ocspid == i) { | 1271 | } else if (cfg.ocspid == i) { |
1272 | if (!X509_ocspid_print(out, x)) | 1272 | if (!X509_ocspid_print(out, x)) |
1273 | goto end; | 1273 | goto end; |
1274 | } | 1274 | } |
1275 | } | 1275 | } |
1276 | } | 1276 | } |
1277 | if (x509_config.checkend) { | 1277 | if (cfg.checkend) { |
1278 | time_t tcheck = time(NULL) + x509_config.checkoffset; | 1278 | time_t tcheck = time(NULL) + cfg.checkoffset; |
1279 | int timecheck = X509_cmp_time(X509_get_notAfter(x), &tcheck); | 1279 | int timecheck = X509_cmp_time(X509_get_notAfter(x), &tcheck); |
1280 | if (timecheck == 0) { | 1280 | if (timecheck == 0) { |
1281 | BIO_printf(out, "Certificate expiry time is invalid\n"); | 1281 | BIO_printf(out, "Certificate expiry time is invalid\n"); |
@@ -1289,14 +1289,14 @@ x509_main(int argc, char **argv) | |||
1289 | } | 1289 | } |
1290 | goto end; | 1290 | goto end; |
1291 | } | 1291 | } |
1292 | if (x509_config.noout) { | 1292 | if (cfg.noout) { |
1293 | ret = 0; | 1293 | ret = 0; |
1294 | goto end; | 1294 | goto end; |
1295 | } | 1295 | } |
1296 | if (x509_config.outformat == FORMAT_ASN1) | 1296 | if (cfg.outformat == FORMAT_ASN1) |
1297 | i = i2d_X509_bio(out, x); | 1297 | i = i2d_X509_bio(out, x); |
1298 | else if (x509_config.outformat == FORMAT_PEM) { | 1298 | else if (cfg.outformat == FORMAT_PEM) { |
1299 | if (x509_config.trustout) | 1299 | if (cfg.trustout) |
1300 | i = PEM_write_bio_X509_AUX(out, x); | 1300 | i = PEM_write_bio_X509_AUX(out, x); |
1301 | else | 1301 | else |
1302 | i = PEM_write_bio_X509(out, x); | 1302 | i = PEM_write_bio_X509(out, x); |
@@ -1323,11 +1323,11 @@ x509_main(int argc, char **argv) | |||
1323 | X509_free(xca); | 1323 | X509_free(xca); |
1324 | EVP_PKEY_free(Upkey); | 1324 | EVP_PKEY_free(Upkey); |
1325 | EVP_PKEY_free(CApkey); | 1325 | EVP_PKEY_free(CApkey); |
1326 | sk_OPENSSL_STRING_free(x509_config.sigopts); | 1326 | sk_OPENSSL_STRING_free(cfg.sigopts); |
1327 | X509_REQ_free(rq); | 1327 | X509_REQ_free(rq); |
1328 | ASN1_INTEGER_free(x509_config.sno); | 1328 | ASN1_INTEGER_free(cfg.sno); |
1329 | sk_ASN1_OBJECT_pop_free(x509_config.trust, ASN1_OBJECT_free); | 1329 | sk_ASN1_OBJECT_pop_free(cfg.trust, ASN1_OBJECT_free); |
1330 | sk_ASN1_OBJECT_pop_free(x509_config.reject, ASN1_OBJECT_free); | 1330 | sk_ASN1_OBJECT_pop_free(cfg.reject, ASN1_OBJECT_free); |
1331 | free(passin); | 1331 | free(passin); |
1332 | 1332 | ||
1333 | return (ret); | 1333 | return (ret); |
@@ -1412,7 +1412,7 @@ x509_certify(X509_STORE *ctx, char *CAfile, const EVP_MD *digest, X509 *x, | |||
1412 | */ | 1412 | */ |
1413 | X509_STORE_CTX_set_cert(xsc, x); | 1413 | X509_STORE_CTX_set_cert(xsc, x); |
1414 | X509_STORE_CTX_set_flags(xsc, X509_V_FLAG_CHECK_SS_SIGNATURE); | 1414 | X509_STORE_CTX_set_flags(xsc, X509_V_FLAG_CHECK_SS_SIGNATURE); |
1415 | if (!x509_config.reqfile && X509_verify_cert(xsc) <= 0) | 1415 | if (!cfg.reqfile && X509_verify_cert(xsc) <= 0) |
1416 | goto end; | 1416 | goto end; |
1417 | 1417 | ||
1418 | if (!X509_check_private_key(xca, pkey)) { | 1418 | if (!X509_check_private_key(xca, pkey)) { |