[svn] GnuPG - r4355 - branches/STABLE-BRANCH-1-4/g10

svn author dshaw cvs at cvs.gnupg.org
Sun Dec 3 05:38:55 CET 2006


Author: dshaw
Date: 2006-12-03 05:38:53 +0100 (Sun, 03 Dec 2006)
New Revision: 4355

Modified:
   branches/STABLE-BRANCH-1-4/g10/ChangeLog
   branches/STABLE-BRANCH-1-4/g10/gpg.c
   branches/STABLE-BRANCH-1-4/g10/options.h
   branches/STABLE-BRANCH-1-4/g10/passphrase.c
Log:
* 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.


Modified: branches/STABLE-BRANCH-1-4/g10/ChangeLog
===================================================================
--- branches/STABLE-BRANCH-1-4/g10/ChangeLog	2006-11-29 15:42:28 UTC (rev 4354)
+++ branches/STABLE-BRANCH-1-4/g10/ChangeLog	2006-12-03 04:38:53 UTC (rev 4355)
@@ -1,3 +1,10 @@
+2006-12-02  David Shaw  <dshaw at 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 at g10code.com>
 
 	* openfile.c (ask_outfile_name): Fixed buffer overflow occurring

Modified: branches/STABLE-BRANCH-1-4/g10/gpg.c
===================================================================
--- branches/STABLE-BRANCH-1-4/g10/gpg.c	2006-11-29 15:42:28 UTC (rev 4354)
+++ branches/STABLE-BRANCH-1-4/g10/gpg.c	2006-12-03 04:38:53 UTC (rev 4355)
@@ -219,6 +219,7 @@
     oPasswd,
     oPasswdFD,
     oPasswdFile,
+    oPasswdRepeat,
     oCommandFD,
     oCommandFile,
     oQuickRandom,
@@ -578,6 +579,7 @@
     { oPasswd, "passphrase",2, "@" },
     { oPasswdFD, "passphrase-fd",1, "@" },
     { oPasswdFile, "passphrase-file",2, "@" },
+    { oPasswdRepeat, "passphrase-repeat", 1, "@"},
     { oCommandFD, "command-fd",1, "@" },
     { oCommandFile, "command-file",2, "@" },
     { oQuickRandom, "quick-random", 0, "@"},
@@ -1819,6 +1821,7 @@
     opt.def_sig_expire="0";
     opt.def_cert_expire="0";
     set_homedir ( default_homedir () );
+    opt.passwd_repeat=1;
 
 #ifdef ENABLE_CARD_SUPPORT
 #if defined(_WIN32) || defined(__CYGWIN__)
@@ -2440,6 +2443,7 @@
 	  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;

Modified: branches/STABLE-BRANCH-1-4/g10/options.h
===================================================================
--- branches/STABLE-BRANCH-1-4/g10/options.h	2006-11-29 15:42:28 UTC (rev 4354)
+++ branches/STABLE-BRANCH-1-4/g10/options.h	2006-12-03 04:38:53 UTC (rev 4355)
@@ -239,7 +239,7 @@
 
   /* True if multiple concatenated signatures may be verified. */
   int allow_multisig_verification; 
-
+  int passwd_repeat;
 } opt;
 
 /* CTRL is used to keep some global variables we currently can't

Modified: branches/STABLE-BRANCH-1-4/g10/passphrase.c
===================================================================
--- branches/STABLE-BRANCH-1-4/g10/passphrase.c	2006-11-29 15:42:28 UTC (rev 4354)
+++ branches/STABLE-BRANCH-1-4/g10/passphrase.c	2006-12-03 04:38:53 UTC (rev 4355)
@@ -1,6 +1,6 @@
 /* passphrase.c -  Get a passphrase
- * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- *               2005 Free Software Foundation, Inc.
+ * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+ *               2006 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -937,26 +937,32 @@
               goto agent_died;
             pw = xstrdup ("");
           }
-        if( *pw && mode == 2 ) {
-            char *pw2 = agent_get_passphrase ( keyid, 2, NULL, NULL, NULL,
-                                               NULL, canceled );
-            if (!pw2)
-              {
-                if (!opt.use_agent)
-                  {
-                    xfree (pw);
-                    pw = NULL;
-                    goto agent_died;
-                  }
-                pw2 = xstrdup ("");
-              }
-	    if( strcmp(pw, pw2) ) {
+        if( *pw && mode == 2 )
+	  {
+	    int i;
+	    for(i=0;i<opt.passwd_repeat;i++)
+	      {
+		char *pw2 = agent_get_passphrase ( keyid, 2, NULL, NULL, NULL,
+						   NULL, canceled );
+		if (!pw2)
+		  {
+		    if (!opt.use_agent)
+		      {
+			xfree (pw);
+			pw = NULL;
+			goto agent_died;
+		      }
+		    pw2 = xstrdup ("");
+		  }
+		if( strcmp(pw, pw2) )
+		  {
+		    xfree(pw2);
+		    xfree(pw);
+		    return NULL;
+		  }
 		xfree(pw2);
-		xfree(pw);
-		return NULL;
-	    }
-	    xfree(pw2);
-	}
+	      }
+	  }
     }
     else if( fd_passwd ) {
         /* Return the passphrase we have store in FD_PASSWD. */
@@ -972,17 +978,23 @@
         /* Read the passphrase from the tty or the command-fd. */
 	pw = cpr_get_hidden("passphrase.enter", _("Enter passphrase: ") );
 	tty_kill_prompt();
-	if( mode == 2 && !cpr_enabled() ) {
-	    char *pw2 = cpr_get_hidden("passphrase.repeat",
-				       _("Repeat passphrase: ") );
-	    tty_kill_prompt();
-	    if( strcmp(pw, pw2) ) {
+	if( mode == 2 && !cpr_enabled() )
+	  {
+	    int i;
+	    for(i=0;i<opt.passwd_repeat;i++)
+	      {
+		char *pw2 = cpr_get_hidden("passphrase.repeat",
+					   _("Repeat passphrase: ") );
+		tty_kill_prompt();
+		if( strcmp(pw, pw2) )
+		  {
+		    xfree(pw2);
+		    xfree(pw);
+		    return NULL;
+		  }
 		xfree(pw2);
-		xfree(pw);
-		return NULL;
-	    }
-	    xfree(pw2);
-	}
+	      }
+	  }
     }
 
     if( !pw || !*pw )




More information about the Gnupg-commits mailing list