]> asedeno.scripts.mit.edu Git - PuTTY.git/commitdiff
Vary cmdgen's default key size based on key type.
authorSimon Tatham <anakin@pobox.com>
Sat, 9 May 2015 14:02:47 +0000 (15:02 +0100)
committerSimon Tatham <anakin@pobox.com>
Sat, 9 May 2015 14:02:47 +0000 (15:02 +0100)
It's a bit silly to have 'puttygen -t ecdsa' immediately crash out
because the default key size is 2048 and we don't know a 2048-bit
elliptic curve.

cmdgen.c

index ea60c25f7dbdc82ad2defa6c4049c8ae05f71583..1331adcad6f3af6235f212f0cd8f225b76ec37b5 100644 (file)
--- a/cmdgen.c
+++ b/cmdgen.c
@@ -273,7 +273,7 @@ int main(int argc, char **argv)
     char *outfile = NULL, *outfiletmp = NULL;
     enum { PRIVATE, PUBLIC, PUBLICO, FP, OPENSSH_PEM,
            OPENSSH_NEW, SSHCOM } outtype = PRIVATE;
-    int bits = 2048;
+    int bits = -1;
     char *comment = NULL, *origcomment = NULL;
     int change_passphrase = FALSE;
     int errs = FALSE, nogo = FALSE;
@@ -507,6 +507,21 @@ int main(int argc, char **argv)
        }
     }
 
+    if (bits == -1) {
+        /*
+         * No explicit key size was specified. Default varies
+         * depending on key type.
+         */
+        switch (keytype) {
+          case ECDSA:
+            bits = 384;
+            break;
+          default:
+            bits = 2048;
+            break;
+        }
+    }
+
     if (keytype == ECDSA && (bits != 256 && bits != 384 && bits != 521)) {
         fprintf(stderr, "puttygen: invalid bits for ECDSA, choose 256, 384 or 521\n");
         errs = TRUE;