diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/passphrase.c | 18 | ||||
-rw-r--r-- | src/passphrase_helper.h | 3 |
2 files changed, 19 insertions, 2 deletions
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 |