diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2013-11-10 10:05:01 +0100 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2013-11-10 10:07:50 +0100 |
commit | 85052ac2b91c31923ca55dda990c7f07197f3561 (patch) | |
tree | 12d8decaafae1cecb53f9ea6e6e233a9a9aba951 | |
parent | 9c65c4946d41630b5070e4d1c8edd3d37b4dbc4a (diff) | |
download | gnutls-85052ac2b91c31923ca55dda990c7f07197f3561.tar.gz |
Read GNUTLS_PKCS11_PIN environment variable.
-rw-r--r-- | src/common.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/common.c b/src/common.c index 2297d48da3..4922c7f2e8 100644 --- a/src/common.c +++ b/src/common.c @@ -970,7 +970,7 @@ pin_callback (void *user, int attempt, const char *token_url, const char *token_label, unsigned int flags, char *pin, size_t pin_max) { - const char *password; + const char *password = NULL; const char * desc; int len, cache = MAX_CACHE_TRIES; /* allow caching of PIN */ @@ -1019,7 +1019,19 @@ pin_callback (void *user, int attempt, const char *token_url, printf ("Token '%s' with URL '%s' ", token_label, token_url); printf ("requires %s PIN\n", desc); - password = getpass ("Enter PIN: "); + password = getenv("GNUTLS_PIN"); + + if (password == NULL) + password = getpass ("Enter PIN: "); + else + { + if (flags & GNUTLS_PIN_WRONG) + { + fprintf(stderr, "Cannot continue with a wrong password in the environment.\n"); + exit(1); + } + } + if (password == NULL || password[0] == 0) { fprintf (stderr, "No password given\n"); |