aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile5
-rw-r--r--info/libpassphrase.texinfo23
-rw-r--r--src/passphrase.c18
-rw-r--r--src/passphrase_helper.h3
4 files changed, 40 insertions, 9 deletions
diff --git a/Makefile b/Makefile
index 344d1e1..5e85083 100644
--- a/Makefile
+++ b/Makefile
@@ -50,8 +50,11 @@ PASSPHRASE_STAR_CHAR = *
PASSPHRASE_TEXT_EMPTY = (empty)
# Text to use instead of "(not empty)"
PASSPHRASE_TEXT_NOT_EMPTY = (not empty)
+# Text to use instead of "Strength:"
+PASSPHRASE_TEXT_STRENGTH = Strength:
-QUOTED_OPTIONS = PASSPHRASE_STAR_CHAR PASSPHRASE_TEXT_EMPTY PASSPHRASE_TEXT_NOT_EMPTY
+QUOTED_OPTIONS = PASSPHRASE_STAR_CHAR PASSPHRASE_TEXT_EMPTY PASSPHRASE_TEXT_NOT_EMPTY \
+ PASSPHRASE_TEXT_STRENGTH
# Optimisation settings for C code compilation
diff --git a/info/libpassphrase.texinfo b/info/libpassphrase.texinfo
index 475b50f..8b76067 100644
--- a/info/libpassphrase.texinfo
+++ b/info/libpassphrase.texinfo
@@ -165,6 +165,10 @@ the the screen. This is only used if combined with
will create make a line below the new current
line and use that line to draw the passphrase
strength meter if such capability is available.
+
+The label for the passphrase strength meter can
+be modified by setting the environment variable
+@env{LIBPASSPHRASE_STRENGTH_LABEL}.
@item PASSPHRASE_READ_BELOW_FREE
@code{passphrase_read2} may do as it please with
the line below the current line. This is only used
@@ -414,9 +418,6 @@ escape sequence, followed by a new line or
whitespace; the rest of the is ignored. The
program must also accept the flag @code{-r},
telling it not to discard any input.
-
-
-
@end table
@@ -426,7 +427,7 @@ In addition, you may use the follow flags.
@item @code{PASSPHRASE_STAR_CHAR}
The text to print instead of the character `*' when
-@code{PASSPHRASE_STAR} is used. For example you may run
+@code{PASSPHRASE_STAR} is used. For example, you may run
@example
make OPTIONS=PASSPHRASE_STAR \
PASSPHRASE_STAR_CHAR="#"
@@ -434,7 +435,7 @@ make OPTIONS=PASSPHRASE_STAR \
@item @code{PASSPHRASE_TEXT_EMPTY}
The text to print instead of the `(empty)' when
-@code{PASSPHRASE_TEXT} is used. For example you may run
+@code{PASSPHRASE_TEXT} is used. For example, you may run
@example
make OPTIONS=PASSPHRASE_TEXT \
PASSPHRASE_TEXT_EMPTY="there is nothing here"
@@ -442,12 +443,22 @@ make OPTIONS=PASSPHRASE_TEXT \
@item @code{PASSPHRASE_TEXT_NOT_EMPTY}
The text to print instead of the `(not empty)' when
-@code{PASSPHRASE_TEXT} is used. For example you may run
+@code{PASSPHRASE_TEXT} is used. For example, you may run
@example
make OPTIONS=PASSPHRASE_TEXT \
PASSPHRASE_TEXT_NOT_EMPTY="there is something here"
@end example
+@item @code{LIBPASSPHRASE_STRENGTH_LABEL}
+The text to print instead of the `Strength:' when
+@code{PASSPHRASE_METER} is used and a new passphrase
+is being entered. For example, you may run
+@example
+make OPTIONS=PASSPHRASE_METER \
+ LIBPASSPHRASE_STRENGTH_LABEL="Hope meter:"
+@end example
+
+
@end table
diff --git a/src/passphrase.c b/src/passphrase.c
index 2978c80..33c7276 100644
--- a/src/passphrase.c
+++ b/src/passphrase.c
@@ -43,6 +43,7 @@
#ifdef PASSPHRASE_METER
struct passcheck_state
{
+ const char* label;
int pipe_rw[2];
pid_t pid;
int flags;
@@ -93,6 +94,10 @@ static void passcheck_start(struct passcheck_state* state, int flags)
if (!command || !*command)
command = DEFAULT_PASSPHRASE_METER;
+ state->label = getenv("LIBPASSPHRASE_STRENGTH_LABEL");
+ if (!(state->label) || !*(state->label))
+ state->label = PASSPHRASE_TEXT_STRENGTH;
+
xpipe(state->pipe_rw);
xpipe(pipe_rw);
xpipe(exec_rw);
@@ -230,6 +235,7 @@ static void passcheck_update(struct passcheck_state* state, const char* passphra
void* new;
char* p;
unsigned long long int value;
+ const char* desc;
if (state->flags == 0)
return;
@@ -301,10 +307,18 @@ static void passcheck_update(struct passcheck_state* state, const char* passphra
}
strength_ptr = 0;
+ /* TODO locale */
+ if (value == 0) desc = "1;31m" "Well-known common password";
+ else if (value <= 150) desc = "31m" "Extremely week";
+ else if (value <= 200) desc = "33m" "Week";
+ else if (value <= 250) desc = "32m" "Good";
+ else if (value <= 350) desc = "1;32m" "Strong";
+ else desc = "1;7;32m" "Perfect";
+
if (state->flags & PASSPHRASE_READ_SCREEN_FREE)
- fprintf(stderr, "\033[s\033[E\033[0K%s%lli\033[u", /*TODO locale*/"Strength: ", value);
+ fprintf(stderr, "\033[s\033[E\033[0K%s \033[%s\033[m (%lli)\033[u", state->label, desc, value);
else
- fprintf(stderr, "\033[B\033[s\033[0K%lli\033[u\033[A", value);
+ fprintf(stderr, "\033[B\033[s\033[0K\033[%s\033[m (%lli)\033[u\033[A", desc, value);
fflush(stderr);
return;
diff --git a/src/passphrase_helper.h b/src/passphrase_helper.h
index b8abb3a..e41ca0c 100644
--- a/src/passphrase_helper.h
+++ b/src/passphrase_helper.h
@@ -45,6 +45,9 @@
#ifndef PASSPHRASE_TEXT_NOT_EMPTY
# define PASSPHRASE_TEXT_NOT_EMPTY "(not empty)"
#endif
+#ifndef PASSPHRASE_TEXT_STRENGTH
+# define PASSPHRASE_TEXT_STRENGTH "Strength:"
+#endif