From: Simon Tatham Date: Sat, 9 May 2015 14:02:47 +0000 (+0100) Subject: Vary cmdgen's default key size based on key type. X-Git-Tag: 0.68~586 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=ba3d8fd1b96a532da1957aaea8f4924667000033;p=PuTTY.git 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. --- 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;