version 1.16, 2019/08/30 11:43:34 |
version 1.17, 2019/08/30 12:09:05 |
|
|
argv += dgst_config.argsused; |
argv += dgst_config.argsused; |
|
|
if (dgst_config.do_verify && !dgst_config.sigfile) { |
if (dgst_config.do_verify && !dgst_config.sigfile) { |
BIO_printf(bio_err, "No signature to verify: use the -signature option\n"); |
BIO_printf(bio_err, |
|
"No signature to verify: use the -signature option\n"); |
goto end; |
goto end; |
} |
} |
|
|
|
|
ERR_print_errors(bio_err); |
ERR_print_errors(bio_err); |
goto end; |
goto end; |
} |
} |
if ((!!dgst_config.mac_name + !!dgst_config.keyfile + !!dgst_config.hmac_key) > 1) { |
if ((!!dgst_config.mac_name + !!dgst_config.keyfile + |
BIO_printf(bio_err, "MAC and Signing key cannot both be specified\n"); |
!!dgst_config.hmac_key) > 1) { |
|
BIO_printf(bio_err, |
|
"MAC and Signing key cannot both be specified\n"); |
goto end; |
goto end; |
} |
} |
if (dgst_config.keyfile) { |
if (dgst_config.keyfile) { |
if (dgst_config.want_pub) |
if (dgst_config.want_pub) |
sigkey = load_pubkey(bio_err, dgst_config.keyfile, dgst_config.keyform, 0, NULL, |
sigkey = load_pubkey(bio_err, dgst_config.keyfile, |
"key file"); |
dgst_config.keyform, 0, NULL, "key file"); |
else |
else |
sigkey = load_key(bio_err, dgst_config.keyfile, dgst_config.keyform, 0, passin, |
sigkey = load_key(bio_err, dgst_config.keyfile, |
"key file"); |
dgst_config.keyform, 0, passin, "key file"); |
if (!sigkey) { |
if (!sigkey) { |
/* |
/* |
* load_[pub]key() has already printed an appropriate |
* load_[pub]key() has already printed an appropriate |
|
|
goto mac_end; |
goto mac_end; |
if (dgst_config.macopts) { |
if (dgst_config.macopts) { |
char *macopt; |
char *macopt; |
for (i = 0; i < sk_OPENSSL_STRING_num(dgst_config.macopts); i++) { |
for (i = 0; i < sk_OPENSSL_STRING_num( |
macopt = sk_OPENSSL_STRING_value(dgst_config.macopts, i); |
dgst_config.macopts); i++) { |
|
macopt = sk_OPENSSL_STRING_value( |
|
dgst_config.macopts, i); |
if (pkey_ctrl_string(mac_ctx, macopt) <= 0) { |
if (pkey_ctrl_string(mac_ctx, macopt) <= 0) { |
BIO_printf(bio_err, |
BIO_printf(bio_err, |
"MAC parameter error \"%s\"\n", |
"MAC parameter error \"%s\"\n", |
|
|
goto mac_end; |
goto mac_end; |
} |
} |
r = 1; |
r = 1; |
mac_end: |
mac_end: |
if (mac_ctx) |
if (mac_ctx) |
EVP_PKEY_CTX_free(mac_ctx); |
EVP_PKEY_CTX_free(mac_ctx); |
if (r == 0) |
if (r == 0) |
|
|
goto end; |
goto end; |
} |
} |
if (dgst_config.do_verify) |
if (dgst_config.do_verify) |
r = EVP_DigestVerifyInit(mctx, &pctx, dgst_config.md, NULL, sigkey); |
r = EVP_DigestVerifyInit(mctx, &pctx, dgst_config.md, |
|
NULL, sigkey); |
else |
else |
r = EVP_DigestSignInit(mctx, &pctx, dgst_config.md, NULL, sigkey); |
r = EVP_DigestSignInit(mctx, &pctx, dgst_config.md, |
|
NULL, sigkey); |
if (!r) { |
if (!r) { |
BIO_printf(bio_err, "Error setting context\n"); |
BIO_printf(bio_err, "Error setting context\n"); |
ERR_print_errors(bio_err); |
ERR_print_errors(bio_err); |
|
|
} |
} |
if (dgst_config.sigopts) { |
if (dgst_config.sigopts) { |
char *sigopt; |
char *sigopt; |
for (i = 0; i < sk_OPENSSL_STRING_num(dgst_config.sigopts); i++) { |
for (i = 0; i < sk_OPENSSL_STRING_num( |
sigopt = sk_OPENSSL_STRING_value(dgst_config.sigopts, i); |
dgst_config.sigopts); i++) { |
|
sigopt = sk_OPENSSL_STRING_value( |
|
dgst_config.sigopts, i); |
if (pkey_ctrl_string(pctx, sigopt) <= 0) { |
if (pkey_ctrl_string(pctx, sigopt) <= 0) { |
BIO_printf(bio_err, |
BIO_printf(bio_err, |
"parameter error \"%s\"\n", |
"parameter error \"%s\"\n", |
|
|
} |
} |
if (argc == 0) { |
if (argc == 0) { |
BIO_set_fp(in, stdin, BIO_NOCLOSE); |
BIO_set_fp(in, stdin, BIO_NOCLOSE); |
err = do_fp(out, buf, inp, dgst_config.separator, dgst_config.out_bin, sigkey, sigbuf, |
err = do_fp(out, buf, inp, dgst_config.separator, |
siglen, NULL, NULL, "stdin", bmd); |
dgst_config.out_bin, sigkey, sigbuf, siglen, NULL, NULL, |
|
"stdin", bmd); |
} else { |
} else { |
const char *md_name = NULL, *sig_name = NULL; |
const char *md_name = NULL, *sig_name = NULL; |
if (!dgst_config.out_bin) { |
if (!dgst_config.out_bin) { |
|
|
err++; |
err++; |
continue; |
continue; |
} else { |
} else { |
r = do_fp(out, buf, inp, dgst_config.separator, dgst_config.out_bin, |
r = do_fp(out, buf, inp, dgst_config.separator, |
sigkey, sigbuf, siglen, sig_name, md_name, |
dgst_config.out_bin, sigkey, sigbuf, siglen, |
argv[i], bmd); |
sig_name, md_name, argv[i], bmd); |
} |
} |
if (r) |
if (r) |
err = r; |
err = r; |