aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--g10/ChangeLog7
-rw-r--r--g10/gpg.c4
-rw-r--r--g10/options.h4
-rw-r--r--g10/passphrase.c26
4 files changed, 28 insertions, 13 deletions
diff --git a/g10/ChangeLog b/g10/ChangeLog
index 0ffc85094..7741f5e9c 100644
--- a/g10/ChangeLog
+++ b/g10/ChangeLog
@@ -1,3 +1,10 @@
+2006-12-02 David Shaw <[email protected]>
+
+ * 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 <[email protected]>
* openfile.c (ask_outfile_name): Fixed buffer overflow occurring
diff --git a/g10/gpg.c b/g10/gpg.c
index 391943ec6..dde5c6e56 100644
--- a/g10/gpg.c
+++ b/g10/gpg.c
@@ -211,6 +211,7 @@ enum cmd_and_opt_values
oPasswd,
oPasswdFD,
oPasswdFile,
+ oPasswdRepeat,
oCommandFD,
oCommandFile,
oQuickRandom,
@@ -564,6 +565,7 @@ static ARGPARSE_OPTS opts[] = {
{ oPasswd, "passphrase",2, "@" },
{ oPasswdFD, "passphrase-fd",1, "@" },
{ oPasswdFile, "passphrase-file",2, "@" },
+ { oPasswdRepeat, "passphrase-repeat", 1, "@"},
{ oCommandFD, "command-fd",1, "@" },
{ oCommandFile, "command-file",2, "@" },
{ oQuickRandom, "debug-quick-random", 0, "@"},
@@ -1858,6 +1860,7 @@ main (int argc, char **argv )
opt.def_sig_expire="0";
opt.def_cert_expire="0";
set_homedir ( default_homedir () );
+ opt.passwd_repeat=1;
/* Check whether we have a config file on the command line. */
orig_argc = argc;
@@ -2419,6 +2422,7 @@ main (int argc, char **argv )
case oPasswdFile:
pwfd = open_info_file (pargs.r.ret_str, 0);
break;
+ case oPasswdRepeat: opt.passwd_repeat=pargs.r.ret_int; break;
case oCommandFD:
opt.command_fd = iobuf_translate_file_handle (pargs.r.ret_int, 0);
break;
diff --git a/g10/options.h b/g10/options.h
index 6fd8202fb..530eac206 100644
--- a/g10/options.h
+++ b/g10/options.h
@@ -239,8 +239,8 @@ struct
} *auto_key_locate;
/* True if multiple concatenated signatures may be verified. */
- int allow_multisig_verification;
-
+ int allow_multisig_verification;
+ int passwd_repeat;
} opt;
/* CTRL is used to keep some global variables we currently can't
diff --git a/g10/passphrase.c b/g10/passphrase.c
index 744da06ba..ae22074f6 100644
--- a/g10/passphrase.c
+++ b/g10/passphrase.c
@@ -613,17 +613,21 @@ passphrase_to_dek (u32 *keyid, int pubkey_algo,
pw = xstrdup ("");
if ( *pw && mode == 2 )
{
- char *pw2 = passphrase_get ( keyid, 2, NULL, NULL, NULL,
- NULL, canceled );
- if (!pw2)
- pw2 = xstrdup ("");
- if ( strcmp(pw, pw2) )
- {
- xfree(pw2);
- xfree(pw);
- return NULL;
- }
- xfree(pw2);
+ int i;
+ for(i=0;i<opt.passwd_repeat;i++)
+ {
+ char *pw2 = passphrase_get ( keyid, 2, NULL, NULL, NULL,
+ NULL, canceled );
+ if (!pw2)
+ pw2 = xstrdup ("");
+ if ( strcmp(pw, pw2) )
+ {
+ xfree(pw2);
+ xfree(pw);
+ return NULL;
+ }
+ xfree(pw2);
+ }
}
}