From ba3d8fd1b96a532da1957aaea8f4924667000033 Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Sat, 9 May 2015 15:02:47 +0100 Subject: [PATCH] Vary cmdgen's default key size based on key type. 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 | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/cmdgen.c b/cmdgen.c index ea60c25f..1331adca 100644 --- 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; -- 2.45.2