Confirm private key passphrase.
authorPekka Riikonen <priikone@silcnet.org>
Thu, 7 Nov 2002 18:12:08 +0000 (18:12 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Thu, 7 Nov 2002 18:12:08 +0000 (18:12 +0000)
CHANGES
lib/silcutil/silcapputil.c

diff --git a/CHANGES b/CHANGES
index 0f05c53287821116edbdfc2505f575110c1429a8..d265e7f84516a3634e6d153d788a1da9fc5f1b7f 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -10,6 +10,10 @@ Thu Nov  7 19:21:10 EET 2002  Pekka Riikonen <priikone@silcnet.org>
          client.  Affected file irssi/src/silc/core/silc-servers.c.
          Renamed FILE RECEIVE to FILE ACCEPT.
 
+       * Confirm passphrase for private key encryption in
+         silc_create_key_pair and silc_change_private_key_passphrase.
+         Affected files are lib/silcutil/silcapputil.c.
+
 Thu Nov  7 10:05:28 CET 2002  Pekka Riikonen <priikone@silcnet.org>
 
        * Move silc_client_packet_send back to internal, added
index 1210b0a9a04b346037ee734c366ba3083a10846f..723ca37f777d26057bbac8777b92815c6315eb4a 100644 (file)
@@ -175,11 +175,20 @@ New pair of keys will be created.  Please, answer to following questions.\n\
   }
 
   if (!pass) {
-    memset(line, 0, sizeof(line));
-    snprintf(line, sizeof(line), "Private key passphrase: ");
-    pass = silc_get_input(line, TRUE);
-    if (!pass)
+    char *pass2 = NULL;
+    pass = silc_get_input("Private key passphrase: ", TRUE);
+    if (!pass) {
       pass = strdup("");
+    } else {
+      while (TRUE) {
+       printf("\n");
+       pass2 = silc_get_input("Retype private key passphrase: ", TRUE);
+       if (!strcmp(pass, pass2))
+         break;
+       fprintf(stderr, "\nPassphrases do not match");
+      }
+      silc_free(pass2);
+    }
   }
 
   /* Generate keys */
@@ -383,10 +392,21 @@ bool silc_change_private_key_passphrase(const char *prv_filename,
 
   pass = new_passphrase ? strdup(new_passphrase) : NULL;
   if (!pass) {
+    char *pass2 = NULL;
     fprintf(stdout, "\n");
     pass = silc_get_input("New passphrase: ", TRUE);
-    if (!pass)
+    if (!pass) {
       pass = strdup("");
+    } else {
+      while (TRUE) {
+       printf("\n");
+       pass2 = silc_get_input("Retype new passphrase: ", TRUE);
+       if (!strcmp(pass, pass2))
+         break;
+       fprintf(stderr, "\nPassphrases do not match");
+      }
+      silc_free(pass2);
+    }
   }
 
   silc_pkcs_save_private_key((char *)prv_filename, private_key,