mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-10 01:48:00 +00:00
Add ability for ssh2_userkey_loadpub() to return the key comment.
(Not actually used currently, but it makes life easier for a patch I'm working on.) [originally from svn r6433]
This commit is contained in:
parent
69ac38c1a8
commit
49d2cf19ac
2
cmdgen.c
2
cmdgen.c
@ -722,7 +722,7 @@ int main(int argc, char **argv)
|
|||||||
case SSH_KEYTYPE_SSH2:
|
case SSH_KEYTYPE_SSH2:
|
||||||
if (!load_encrypted) {
|
if (!load_encrypted) {
|
||||||
ssh2blob = ssh2_userkey_loadpub(&infilename, &ssh2alg,
|
ssh2blob = ssh2_userkey_loadpub(&infilename, &ssh2alg,
|
||||||
&ssh2bloblen, &error);
|
&ssh2bloblen, NULL, &error);
|
||||||
ssh2algf = find_pubkey_alg(ssh2alg);
|
ssh2algf = find_pubkey_alg(ssh2alg);
|
||||||
if (ssh2algf)
|
if (ssh2algf)
|
||||||
bits = ssh2algf->pubkey_bits(ssh2blob, ssh2bloblen);
|
bits = ssh2algf->pubkey_bits(ssh2blob, ssh2bloblen);
|
||||||
|
4
ssh.c
4
ssh.c
@ -6640,7 +6640,7 @@ static void do_ssh2_authconn(Ssh ssh, unsigned char *in, int inlen,
|
|||||||
if (keytype == SSH_KEYTYPE_SSH2) {
|
if (keytype == SSH_KEYTYPE_SSH2) {
|
||||||
s->publickey_blob =
|
s->publickey_blob =
|
||||||
ssh2_userkey_loadpub(&ssh->cfg.keyfile, NULL,
|
ssh2_userkey_loadpub(&ssh->cfg.keyfile, NULL,
|
||||||
&s->publickey_bloblen, NULL);
|
&s->publickey_bloblen, NULL, NULL);
|
||||||
} else {
|
} else {
|
||||||
char *msgbuf;
|
char *msgbuf;
|
||||||
logeventf(ssh, "Unable to use this key file (%s)",
|
logeventf(ssh, "Unable to use this key file (%s)",
|
||||||
@ -6982,7 +6982,7 @@ static void do_ssh2_authconn(Ssh ssh, unsigned char *in, int inlen,
|
|||||||
(unsigned char *)ssh2_userkey_loadpub(&ssh->cfg.keyfile,
|
(unsigned char *)ssh2_userkey_loadpub(&ssh->cfg.keyfile,
|
||||||
&algorithm,
|
&algorithm,
|
||||||
&pub_blob_len,
|
&pub_blob_len,
|
||||||
NULL);
|
NULL, NULL);
|
||||||
if (pub_blob) {
|
if (pub_blob) {
|
||||||
s->pktout = ssh2_pkt_init(SSH2_MSG_USERAUTH_REQUEST);
|
s->pktout = ssh2_pkt_init(SSH2_MSG_USERAUTH_REQUEST);
|
||||||
ssh2_pkt_addstring(s->pktout, s->username);
|
ssh2_pkt_addstring(s->pktout, s->username);
|
||||||
|
3
ssh.h
3
ssh.h
@ -400,7 +400,8 @@ int ssh2_userkey_encrypted(const Filename *filename, char **comment);
|
|||||||
struct ssh2_userkey *ssh2_load_userkey(const Filename *filename,
|
struct ssh2_userkey *ssh2_load_userkey(const Filename *filename,
|
||||||
char *passphrase, const char **errorstr);
|
char *passphrase, const char **errorstr);
|
||||||
char *ssh2_userkey_loadpub(const Filename *filename, char **algorithm,
|
char *ssh2_userkey_loadpub(const Filename *filename, char **algorithm,
|
||||||
int *pub_blob_len, const char **errorstr);
|
int *pub_blob_len, char **commentptr,
|
||||||
|
const char **errorstr);
|
||||||
int ssh2_save_userkey(const Filename *filename, struct ssh2_userkey *key,
|
int ssh2_save_userkey(const Filename *filename, struct ssh2_userkey *key,
|
||||||
char *passphrase);
|
char *passphrase);
|
||||||
const struct ssh_signkey *find_pubkey_alg(const char *name);
|
const struct ssh_signkey *find_pubkey_alg(const char *name);
|
||||||
|
12
sshpubk.c
12
sshpubk.c
@ -866,7 +866,8 @@ struct ssh2_userkey *ssh2_load_userkey(const Filename *filename,
|
|||||||
}
|
}
|
||||||
|
|
||||||
char *ssh2_userkey_loadpub(const Filename *filename, char **algorithm,
|
char *ssh2_userkey_loadpub(const Filename *filename, char **algorithm,
|
||||||
int *pub_blob_len, const char **errorstr)
|
int *pub_blob_len, char **commentptr,
|
||||||
|
const char **errorstr)
|
||||||
{
|
{
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
char header[40], *b;
|
char header[40], *b;
|
||||||
@ -875,6 +876,7 @@ char *ssh2_userkey_loadpub(const Filename *filename, char **algorithm,
|
|||||||
int public_blob_len;
|
int public_blob_len;
|
||||||
int i;
|
int i;
|
||||||
const char *error = NULL;
|
const char *error = NULL;
|
||||||
|
char *comment;
|
||||||
|
|
||||||
public_blob = NULL;
|
public_blob = NULL;
|
||||||
|
|
||||||
@ -912,9 +914,13 @@ char *ssh2_userkey_loadpub(const Filename *filename, char **algorithm,
|
|||||||
/* Read the Comment header line. */
|
/* Read the Comment header line. */
|
||||||
if (!read_header(fp, header) || 0 != strcmp(header, "Comment"))
|
if (!read_header(fp, header) || 0 != strcmp(header, "Comment"))
|
||||||
goto error;
|
goto error;
|
||||||
if ((b = read_body(fp)) == NULL)
|
if ((comment = read_body(fp)) == NULL)
|
||||||
goto error;
|
goto error;
|
||||||
sfree(b); /* we don't care */
|
|
||||||
|
if (commentptr)
|
||||||
|
*commentptr = comment;
|
||||||
|
else
|
||||||
|
sfree(comment);
|
||||||
|
|
||||||
/* Read the Public-Lines header line and the public blob. */
|
/* Read the Public-Lines header line and the public blob. */
|
||||||
if (!read_header(fp, header) || 0 != strcmp(header, "Public-Lines"))
|
if (!read_header(fp, header) || 0 != strcmp(header, "Public-Lines"))
|
||||||
|
@ -425,7 +425,8 @@ static void add_keyfile(Filename filename)
|
|||||||
keylist = get_keylist1(&keylistlen);
|
keylist = get_keylist1(&keylistlen);
|
||||||
} else {
|
} else {
|
||||||
unsigned char *blob2;
|
unsigned char *blob2;
|
||||||
blob = ssh2_userkey_loadpub(&filename, NULL, &bloblen, &error);
|
blob = ssh2_userkey_loadpub(&filename, NULL, &bloblen,
|
||||||
|
NULL, &error);
|
||||||
if (!blob) {
|
if (!blob) {
|
||||||
char *msg = dupprintf("Couldn't load private key (%s)", error);
|
char *msg = dupprintf("Couldn't load private key (%s)", error);
|
||||||
message_box(msg, APPNAME, MB_OK | MB_ICONERROR,
|
message_box(msg, APPNAME, MB_OK | MB_ICONERROR,
|
||||||
|
Loading…
Reference in New Issue
Block a user