Make passphrase entry retries customizable (suggested by Till Maas)
Based on a patch provided by Till Maas.
--- a/mcabber/mcabberrc.example Tue Sep 18 18:56:57 2007 +0200
+++ b/mcabber/mcabberrc.example Thu Sep 20 20:08:59 2007 +0200
@@ -55,6 +55,11 @@
#
# You can set your PGP passhrase here, although it's NOT advised.
#set pgp_passphrase = "PGPpassword"
+#
+# If you don't like the default number of passphrase retries (2), you
+# can change it here. If this number is < 0, mcabber will keep asking
+# until the passphrase is good.
+#pgp_passphrase_retries = 2
# Conference nickname
# This nickname is used when joining a room, when no nick is explicitly
--- a/mcabber/src/main.c Tue Sep 18 18:56:57 2007 +0200
+++ b/mcabber/src/main.c Thu Sep 20 20:08:59 2007 +0200
@@ -284,12 +284,19 @@
char *p;
bool pgp_invalid = FALSE;
bool pgp_agent;
+ int retries;
p = getenv("GPG_AGENT_INFO");
pgp_agent = (p && strchr(p, ':'));
pk = settings_opt_get("pgp_private_key");
pp = settings_opt_get("pgp_passphrase");
+
+ if (settings_opt_get("pgp_passphrase_retries"))
+ retries = settings_opt_get_int("pgp_passphrase_retries");
+ else
+ retries = 2;
+
if (!pk) {
scr_LogPrint(LPRINT_LOGNORM, "WARNING: unkown PGP private key");
pgp_invalid = TRUE;
@@ -309,7 +316,7 @@
if (!pgp_agent && pk && pp && gpg_test_passphrase()) {
// Let's check the pasphrase
int i;
- for (i = 0; i < 2; i++) {
+ for (i = 1; retries < 0 || i <= retries; i++) {
typed_passwd = ask_password("PGP passphrase"); // Ask again...
if (typed_passwd) {
gpg_set_passphrase(typed_passwd);
@@ -319,7 +326,7 @@
if (!gpg_test_passphrase())
break; // Ok
}
- if (i == 2)
+ if (i > retries)
pgp_invalid = TRUE;
}
if (pgp_invalid)