CLI: Clear displayed password after 30 seconds (if found)

This commit is contained in:
Gregory Soutade 2017-05-06 18:13:36 +02:00
parent 09e0d85d97
commit 35f49d24b3

View File

@ -40,6 +40,7 @@
#define SERVER_PROTOCOL 4 #define SERVER_PROTOCOL 4
#define RESPONSE_SIZE 2048 #define RESPONSE_SIZE 2048
#define MAX_SUBDOMAINS 10 #define MAX_SUBDOMAINS 10
#define DISPLAY_TIME 30 // 30 seconds
struct gpass_parameters { struct gpass_parameters {
unsigned pbkdf2_level; unsigned pbkdf2_level;
@ -71,6 +72,25 @@ static const EVP_MD * s_md_256;
static EVP_CIPHER_CTX * s_cipher_ctx; static EVP_CIPHER_CTX * s_cipher_ctx;
static void display_password(char* password, int time)
{
int length;
for (; time; time--)
{
printf("\r(%02d) Password found: %s", time, password);
fflush(stdout);
sleep(1);
}
// Clear line
printf("\r");
length = 4 + 17 + strlen(password) + 1;
while (length--)
printf(" ");
printf("\n");
}
static int digest(unsigned char** out, unsigned char* in, unsigned size) static int digest(unsigned char** out, unsigned char* in, unsigned size)
{ {
*out = NULL; *out = NULL;
@ -434,7 +454,7 @@ static int ask_server(struct gpass_parameters* params)
memmove(password, &password[3], len-3); memmove(password, &password[3], len-3);
password[len-3] = 0; password[len-3] = 0;
} }
printf("Password found: %s\n", password); display_password((char*)password, DISPLAY_TIME);
ret = 0; ret = 0;
goto end; goto end;
} }