]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
Allow --pskusername to be specified to avoid query in PSK callback.
authorSimon Josefsson <simon@josefsson.org>
Wed, 4 Jun 2008 05:20:23 +0000 (07:20 +0200)
committerSimon Josefsson <simon@josefsson.org>
Wed, 4 Jun 2008 05:20:23 +0000 (07:20 +0200)
src/cli.c

index 38039b514e85ca6ec5cca2f5cb5edc5365bedbd7..5d594a810e34c0ca9874b6714a0429fd4b1e51d0 100644 (file)
--- a/src/cli.c
+++ b/src/cli.c
@@ -983,8 +983,6 @@ static int psk_callback (gnutls_session_t session,
 {
   const char *hint = gnutls_psk_client_get_hint (session);
   char *passwd;
-  char *tmp = NULL;
-  ssize_t n, len;
   int ret;
 
   printf ("- PSK client callback. ");
@@ -993,23 +991,31 @@ static int psk_callback (gnutls_session_t session,
   else
     printf ("No PSK hint\n");
 
-  printf ("Enter PSK identity: ");
-  fflush (stdout);
-  len = getline (&tmp, &n, stdin);
-
-  if (tmp == NULL)
+  if (info.psk_username)
+    *username = gnutls_strdup (info.psk_username);
+  else
     {
-      fprintf (stderr, "No username given, aborting...\n");
-      return GNUTLS_E_INSUFFICIENT_CREDENTIALS;
-    }
+      char *tmp = NULL;
+      ssize_t n, len;
 
-  if (tmp[strlen (tmp) - 1] == '\n')
-    tmp[strlen (tmp) - 1] = '\0';
-  if (tmp[strlen (tmp) - 1] == '\r')
-    tmp[strlen (tmp) - 1] = '\0';
+      printf ("Enter PSK identity: ");
+      fflush (stdout);
+      len = getline (&tmp, &n, stdin);
 
-  *username = gnutls_strdup (tmp);
-  free (tmp);
+      if (tmp == NULL)
+       {
+         fprintf (stderr, "No username given, aborting...\n");
+         return GNUTLS_E_INSUFFICIENT_CREDENTIALS;
+       }
+
+      if (tmp[strlen (tmp) - 1] == '\n')
+       tmp[strlen (tmp) - 1] = '\0';
+      if (tmp[strlen (tmp) - 1] == '\r')
+       tmp[strlen (tmp) - 1] = '\0';
+
+      *username = gnutls_strdup (tmp);
+      free (tmp);
+    }
   if (!*username)
     return GNUTLS_E_MEMORY_ERROR;