diff options
Diffstat (limited to '')
| -rw-r--r-- | src/usr.bin/openssl/pkeyutl.c | 152 |
1 files changed, 76 insertions, 76 deletions
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); |
