mirror of
git://git.gnupg.org/gnupg.git
synced 2024-11-11 21:48:50 +01:00
* options.h, gpg.c (main), passphrase.c (passphrase_to_dek): Add
--passphrase-repeat option to control how many times gpg will re-prompt for a passphrase to ensure the user has typed it correctly. Defaults to 1.
This commit is contained in:
parent
29f48b5fdc
commit
e0cd2d31a1
@ -1,3 +1,10 @@
|
|||||||
|
2006-12-02 David Shaw <dshaw@jabberwocky.com>
|
||||||
|
|
||||||
|
* options.h, gpg.c (main), passphrase.c (passphrase_to_dek): Add
|
||||||
|
--passphrase-repeat option to control how many times gpg will
|
||||||
|
re-prompt for a passphrase to ensure the user has typed it
|
||||||
|
correctly. Defaults to 1.
|
||||||
|
|
||||||
2006-11-27 Werner Koch <wk@g10code.com>
|
2006-11-27 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
* openfile.c (ask_outfile_name): Fixed buffer overflow occurring
|
* openfile.c (ask_outfile_name): Fixed buffer overflow occurring
|
||||||
|
@ -219,6 +219,7 @@ enum cmd_and_opt_values
|
|||||||
oPasswd,
|
oPasswd,
|
||||||
oPasswdFD,
|
oPasswdFD,
|
||||||
oPasswdFile,
|
oPasswdFile,
|
||||||
|
oPasswdRepeat,
|
||||||
oCommandFD,
|
oCommandFD,
|
||||||
oCommandFile,
|
oCommandFile,
|
||||||
oQuickRandom,
|
oQuickRandom,
|
||||||
@ -578,6 +579,7 @@ static ARGPARSE_OPTS opts[] = {
|
|||||||
{ oPasswd, "passphrase",2, "@" },
|
{ oPasswd, "passphrase",2, "@" },
|
||||||
{ oPasswdFD, "passphrase-fd",1, "@" },
|
{ oPasswdFD, "passphrase-fd",1, "@" },
|
||||||
{ oPasswdFile, "passphrase-file",2, "@" },
|
{ oPasswdFile, "passphrase-file",2, "@" },
|
||||||
|
{ oPasswdRepeat, "passphrase-repeat", 1, "@"},
|
||||||
{ oCommandFD, "command-fd",1, "@" },
|
{ oCommandFD, "command-fd",1, "@" },
|
||||||
{ oCommandFile, "command-file",2, "@" },
|
{ oCommandFile, "command-file",2, "@" },
|
||||||
{ oQuickRandom, "quick-random", 0, "@"},
|
{ oQuickRandom, "quick-random", 0, "@"},
|
||||||
@ -1819,6 +1821,7 @@ main (int argc, char **argv )
|
|||||||
opt.def_sig_expire="0";
|
opt.def_sig_expire="0";
|
||||||
opt.def_cert_expire="0";
|
opt.def_cert_expire="0";
|
||||||
set_homedir ( default_homedir () );
|
set_homedir ( default_homedir () );
|
||||||
|
opt.passwd_repeat=1;
|
||||||
|
|
||||||
#ifdef ENABLE_CARD_SUPPORT
|
#ifdef ENABLE_CARD_SUPPORT
|
||||||
#if defined(_WIN32) || defined(__CYGWIN__)
|
#if defined(_WIN32) || defined(__CYGWIN__)
|
||||||
@ -2440,6 +2443,7 @@ main (int argc, char **argv )
|
|||||||
case oPasswdFile:
|
case oPasswdFile:
|
||||||
pwfd = open_info_file (pargs.r.ret_str, 0);
|
pwfd = open_info_file (pargs.r.ret_str, 0);
|
||||||
break;
|
break;
|
||||||
|
case oPasswdRepeat: opt.passwd_repeat=pargs.r.ret_int; break;
|
||||||
case oCommandFD:
|
case oCommandFD:
|
||||||
opt.command_fd = iobuf_translate_file_handle (pargs.r.ret_int, 0);
|
opt.command_fd = iobuf_translate_file_handle (pargs.r.ret_int, 0);
|
||||||
break;
|
break;
|
||||||
|
@ -239,7 +239,7 @@ struct
|
|||||||
|
|
||||||
/* True if multiple concatenated signatures may be verified. */
|
/* True if multiple concatenated signatures may be verified. */
|
||||||
int allow_multisig_verification;
|
int allow_multisig_verification;
|
||||||
|
int passwd_repeat;
|
||||||
} opt;
|
} opt;
|
||||||
|
|
||||||
/* CTRL is used to keep some global variables we currently can't
|
/* CTRL is used to keep some global variables we currently can't
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* passphrase.c - Get a passphrase
|
/* passphrase.c - Get a passphrase
|
||||||
* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
|
||||||
* 2005 Free Software Foundation, Inc.
|
* 2006 Free Software Foundation, Inc.
|
||||||
*
|
*
|
||||||
* This file is part of GnuPG.
|
* This file is part of GnuPG.
|
||||||
*
|
*
|
||||||
@ -937,7 +937,11 @@ passphrase_to_dek( u32 *keyid, int pubkey_algo,
|
|||||||
goto agent_died;
|
goto agent_died;
|
||||||
pw = xstrdup ("");
|
pw = xstrdup ("");
|
||||||
}
|
}
|
||||||
if( *pw && mode == 2 ) {
|
if( *pw && mode == 2 )
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for(i=0;i<opt.passwd_repeat;i++)
|
||||||
|
{
|
||||||
char *pw2 = agent_get_passphrase ( keyid, 2, NULL, NULL, NULL,
|
char *pw2 = agent_get_passphrase ( keyid, 2, NULL, NULL, NULL,
|
||||||
NULL, canceled );
|
NULL, canceled );
|
||||||
if (!pw2)
|
if (!pw2)
|
||||||
@ -950,7 +954,8 @@ passphrase_to_dek( u32 *keyid, int pubkey_algo,
|
|||||||
}
|
}
|
||||||
pw2 = xstrdup ("");
|
pw2 = xstrdup ("");
|
||||||
}
|
}
|
||||||
if( strcmp(pw, pw2) ) {
|
if( strcmp(pw, pw2) )
|
||||||
|
{
|
||||||
xfree(pw2);
|
xfree(pw2);
|
||||||
xfree(pw);
|
xfree(pw);
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -958,6 +963,7 @@ passphrase_to_dek( u32 *keyid, int pubkey_algo,
|
|||||||
xfree(pw2);
|
xfree(pw2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else if( fd_passwd ) {
|
else if( fd_passwd ) {
|
||||||
/* Return the passphrase we have store in FD_PASSWD. */
|
/* Return the passphrase we have store in FD_PASSWD. */
|
||||||
pw = xmalloc_secure( strlen(fd_passwd)+1 );
|
pw = xmalloc_secure( strlen(fd_passwd)+1 );
|
||||||
@ -972,11 +978,16 @@ passphrase_to_dek( u32 *keyid, int pubkey_algo,
|
|||||||
/* Read the passphrase from the tty or the command-fd. */
|
/* Read the passphrase from the tty or the command-fd. */
|
||||||
pw = cpr_get_hidden("passphrase.enter", _("Enter passphrase: ") );
|
pw = cpr_get_hidden("passphrase.enter", _("Enter passphrase: ") );
|
||||||
tty_kill_prompt();
|
tty_kill_prompt();
|
||||||
if( mode == 2 && !cpr_enabled() ) {
|
if( mode == 2 && !cpr_enabled() )
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for(i=0;i<opt.passwd_repeat;i++)
|
||||||
|
{
|
||||||
char *pw2 = cpr_get_hidden("passphrase.repeat",
|
char *pw2 = cpr_get_hidden("passphrase.repeat",
|
||||||
_("Repeat passphrase: ") );
|
_("Repeat passphrase: ") );
|
||||||
tty_kill_prompt();
|
tty_kill_prompt();
|
||||||
if( strcmp(pw, pw2) ) {
|
if( strcmp(pw, pw2) )
|
||||||
|
{
|
||||||
xfree(pw2);
|
xfree(pw2);
|
||||||
xfree(pw);
|
xfree(pw);
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -984,6 +995,7 @@ passphrase_to_dek( u32 *keyid, int pubkey_algo,
|
|||||||
xfree(pw2);
|
xfree(pw2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if( !pw || !*pw )
|
if( !pw || !*pw )
|
||||||
write_status( STATUS_MISSING_PASSPHRASE );
|
write_status( STATUS_MISSING_PASSPHRASE );
|
||||||
|
Loading…
Reference in New Issue
Block a user