summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2013-11-10 10:05:01 +0100
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2013-11-10 10:07:50 +0100
commit85052ac2b91c31923ca55dda990c7f07197f3561 (patch)
tree12d8decaafae1cecb53f9ea6e6e233a9a9aba951
parent9c65c4946d41630b5070e4d1c8edd3d37b4dbc4a (diff)
downloadgnutls-85052ac2b91c31923ca55dda990c7f07197f3561.tar.gz
Read GNUTLS_PKCS11_PIN environment variable.
-rw-r--r--src/common.c16
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");