mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-07-02 03:52:49 -05:00
Allow cmdgen to read keys from standard input.
This reworks the cmdgen main program so that it loads the input file into a LoadedFile right at the start, and then every time it needs to do something with the contents, it calls one of the API functions taking a BinarySource instead of one taking a Filename. The usefulness of this is that now we can read from things that aren't regular files, and can't be rewound or reopened. In particular, the filename "-" is now taken (per the usual convention) to mean standard input. So now you can pipe a public or private key file into cmdgen's standard input and have it do something useful. For example, I was recently experimenting with the SFTP-only SSH server that comes with 'proftpd', which keeps its authorized_keys file in RFC 4716 format instead of the OpenSSH one-liner format, and I found I wanted to do grep 'my-key-comment' ~/.ssh/authorized_keys | puttygen -p - to quickly get hold of my existing public key to put in that file. But I had to go via a temporary file to make that work, because puttygen couldn't read from standard input. Next time, it will be able to!
This commit is contained in:
@ -146,8 +146,6 @@ LoadedFile *lf_load_keyfile_fp(FILE *fp, const char **errptr)
|
||||
return lf;
|
||||
}
|
||||
|
||||
static int key_type_s(BinarySource *src);
|
||||
|
||||
static bool expect_signature(BinarySource *src, ptrlen realsig)
|
||||
{
|
||||
ptrlen thissig = get_data(src, realsig.len);
|
||||
@ -1678,7 +1676,7 @@ static int key_type_s_internal(BinarySource *src)
|
||||
return SSH_KEYTYPE_UNKNOWN; /* unrecognised or EOF */
|
||||
}
|
||||
|
||||
static int key_type_s(BinarySource *src)
|
||||
int key_type_s(BinarySource *src)
|
||||
{
|
||||
int toret = key_type_s_internal(src);
|
||||
BinarySource_REWIND(src);
|
||||
|
Reference in New Issue
Block a user