提交 5b40d7dd 编写于 作者: D Dr. Stephen Henson

Add -passin argument to dgst command.

上级 8f284faa
...@@ -745,6 +745,9 @@ ...@@ -745,6 +745,9 @@
Changes between 0.9.7e and 0.9.7f [XX xxx XXXX] Changes between 0.9.7e and 0.9.7f [XX xxx XXXX]
*) Add new -passin argument to dgst.
[Steve Henson]
*) Perform some character comparisons of different types in X509_NAME_cmp: *) Perform some character comparisons of different types in X509_NAME_cmp:
this is needed for some certificates that reencode DNs into UTF8Strings this is needed for some certificates that reencode DNs into UTF8Strings
(in violation of RFC3280) and can't or wont issue name rollover (in violation of RFC3280) and can't or wont issue name rollover
......
...@@ -100,6 +100,7 @@ int MAIN(int argc, char **argv) ...@@ -100,6 +100,7 @@ int MAIN(int argc, char **argv)
EVP_PKEY *sigkey = NULL; EVP_PKEY *sigkey = NULL;
unsigned char *sigbuf = NULL; unsigned char *sigbuf = NULL;
int siglen = 0; int siglen = 0;
char *passargin = NULL, *passin = NULL;
#ifndef OPENSSL_NO_ENGINE #ifndef OPENSSL_NO_ENGINE
char *engine=NULL; char *engine=NULL;
#endif #endif
...@@ -145,6 +146,12 @@ int MAIN(int argc, char **argv) ...@@ -145,6 +146,12 @@ int MAIN(int argc, char **argv)
if (--argc < 1) break; if (--argc < 1) break;
keyfile=*(++argv); keyfile=*(++argv);
} }
else if (!strcmp(*argv,"-passin"))
{
if (--argc < 1)
break;
passargin=*++argv;
}
else if (strcmp(*argv,"-verify") == 0) else if (strcmp(*argv,"-verify") == 0)
{ {
if (--argc < 1) break; if (--argc < 1) break;
...@@ -257,6 +264,12 @@ int MAIN(int argc, char **argv) ...@@ -257,6 +264,12 @@ int MAIN(int argc, char **argv)
BIO_set_callback_arg(in,bio_err); BIO_set_callback_arg(in,bio_err);
} }
if(!app_passwd(bio_err, passargin, NULL, &passin, NULL))
{
BIO_printf(bio_err, "Error getting password\n");
goto end;
}
if ((in == NULL) || (bmd == NULL)) if ((in == NULL) || (bmd == NULL))
{ {
ERR_print_errors(bio_err); ERR_print_errors(bio_err);
...@@ -298,7 +311,7 @@ int MAIN(int argc, char **argv) ...@@ -298,7 +311,7 @@ int MAIN(int argc, char **argv)
sigkey = load_pubkey(bio_err, keyfile, keyform, 0, NULL, sigkey = load_pubkey(bio_err, keyfile, keyform, 0, NULL,
e, "key file"); e, "key file");
else else
sigkey = load_key(bio_err, keyfile, keyform, 0, NULL, sigkey = load_key(bio_err, keyfile, keyform, 0, passin,
e, "key file"); e, "key file");
if (!sigkey) if (!sigkey)
{ {
...@@ -385,6 +398,8 @@ end: ...@@ -385,6 +398,8 @@ end:
OPENSSL_free(buf); OPENSSL_free(buf);
} }
if (in != NULL) BIO_free(in); if (in != NULL) BIO_free(in);
if (passin)
OPENSSL_free(passin);
BIO_free_all(out); BIO_free_all(out);
EVP_PKEY_free(sigkey); EVP_PKEY_free(sigkey);
if(sigbuf) OPENSSL_free(sigbuf); if(sigbuf) OPENSSL_free(sigbuf);
......
...@@ -14,6 +14,7 @@ B<openssl> B<dgst> ...@@ -14,6 +14,7 @@ B<openssl> B<dgst>
[B<-binary>] [B<-binary>]
[B<-out filename>] [B<-out filename>]
[B<-sign filename>] [B<-sign filename>]
[B<-passin arg>]
[B<-verify filename>] [B<-verify filename>]
[B<-prverify filename>] [B<-prverify filename>]
[B<-signature filename>] [B<-signature filename>]
...@@ -59,6 +60,11 @@ filename to output to, or standard output by default. ...@@ -59,6 +60,11 @@ filename to output to, or standard output by default.
digitally sign the digest using the private key in "filename". digitally sign the digest using the private key in "filename".
=item B<-passin arg>
the private key password source. For more information about the format of B<arg>
see the B<PASS PHRASE ARGUMENTS> section in L<openssl(1)|openssl(1)>.
=item B<-verify filename> =item B<-verify filename>
verify the signature using the the public key in "filename". verify the signature using the the public key in "filename".
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册