diff options
Diffstat (limited to '')
| -rw-r--r-- | src/usr.bin/openssl/req.c | 358 |
1 files changed, 179 insertions, 179 deletions
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 { |
