1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-07-02 03:52:49 -05:00

Created new data types Filename' and FontSpec', intended to be

opaque to all platform-independent modules and only handled within
per-platform code. `Filename' is there because the Mac has a magic
way to store filenames (though currently this checkin doesn't
support it!); `FontSpec' is there so that all the auxiliary stuff
such as font height and charset and so on which is needed under
Windows but not Unix can be kept where it belongs, and so that I can
have a hope in hell of dealing with a font chooser in the forthcoming
cross-platform config box code, and best of all it gets the horrid
font height wart out of settings.c and into the Windows code where
it should be.
The Mac part of this checkin is a bunch of random guesses which will
probably not quite compile, but which look roughly right to me.
Sorry if I screwed it up, Ben :-)

[originally from svn r2765]
This commit is contained in:
Simon Tatham
2003-02-01 12:54:40 +00:00
parent ccf35b8a26
commit f26b7aa0d3
30 changed files with 612 additions and 271 deletions

26
ssh.c
View File

@ -2457,8 +2457,8 @@ static int do_ssh1_login(Ssh ssh, unsigned char *in, int inlen, int ispkt)
}
s->tis_auth_refused = s->ccard_auth_refused = 0;
/* Load the public half of ssh->cfg.keyfile so we notice if it's in Pageant */
if (*ssh->cfg.keyfile) {
if (!rsakey_pubblob(ssh->cfg.keyfile,
if (!filename_is_null(ssh->cfg.keyfile)) {
if (!rsakey_pubblob(&ssh->cfg.keyfile,
&s->publickey_blob, &s->publickey_bloblen))
s->publickey_blob = NULL;
} else
@ -2586,7 +2586,7 @@ static int do_ssh1_login(Ssh ssh, unsigned char *in, int inlen, int ispkt)
if (s->authed)
break;
}
if (*ssh->cfg.keyfile && !s->tried_publickey)
if (!filename_is_null(ssh->cfg.keyfile) && !s->tried_publickey)
s->pwpkt_type = SSH1_CMSG_AUTH_RSA;
if (ssh->cfg.try_tis_auth &&
@ -2652,7 +2652,7 @@ static int do_ssh1_login(Ssh ssh, unsigned char *in, int inlen, int ispkt)
if (flags & FLAG_VERBOSE)
c_write_str(ssh, "Trying public key authentication.\r\n");
logeventf(ssh, "Trying public key \"%s\"", ssh->cfg.keyfile);
type = key_type(ssh->cfg.keyfile);
type = key_type(&ssh->cfg.keyfile);
if (type != SSH_KEYTYPE_SSH1) {
sprintf(msgbuf, "Key is of wrong type (%s)",
key_type_to_str(type));
@ -2662,7 +2662,7 @@ static int do_ssh1_login(Ssh ssh, unsigned char *in, int inlen, int ispkt)
s->tried_publickey = 1;
continue;
}
if (!rsakey_encrypted(ssh->cfg.keyfile, &comment)) {
if (!rsakey_encrypted(&ssh->cfg.keyfile, &comment)) {
if (flags & FLAG_VERBOSE)
c_write_str(ssh, "No passphrase required.\r\n");
goto tryauth;
@ -2718,10 +2718,10 @@ static int do_ssh1_login(Ssh ssh, unsigned char *in, int inlen, int ispkt)
s->tried_publickey = 1;
{
int ret = loadrsakey(ssh->cfg.keyfile, &s->key, s->password);
int ret = loadrsakey(&ssh->cfg.keyfile, &s->key, s->password);
if (ret == 0) {
c_write_str(ssh, "Couldn't load private key from ");
c_write_str(ssh, ssh->cfg.keyfile);
c_write_str(ssh, filename_to_str(ssh->cfg.keyfile));
c_write_str(ssh, ".\r\n");
continue; /* go and try password */
}
@ -4388,13 +4388,13 @@ static void do_ssh2_authconn(Ssh ssh, unsigned char *in, int inlen, int ispkt)
s->tried_keyb_inter = FALSE;
s->kbd_inter_running = FALSE;
/* Load the pub half of ssh->cfg.keyfile so we notice if it's in Pageant */
if (*ssh->cfg.keyfile) {
if (!filename_is_null(ssh->cfg.keyfile)) {
int keytype;
logeventf(ssh, "Reading private key file \"%.150s\"", ssh->cfg.keyfile);
keytype = key_type(ssh->cfg.keyfile);
keytype = key_type(&ssh->cfg.keyfile);
if (keytype == SSH_KEYTYPE_SSH2) {
s->publickey_blob =
ssh2_userkey_loadpub(ssh->cfg.keyfile, NULL,
ssh2_userkey_loadpub(&ssh->cfg.keyfile, NULL,
&s->publickey_bloblen);
} else {
char *msgbuf;
@ -4692,7 +4692,7 @@ static void do_ssh2_authconn(Ssh ssh, unsigned char *in, int inlen, int ispkt)
* willing to accept it.
*/
pub_blob =
(unsigned char *)ssh2_userkey_loadpub(ssh->cfg.keyfile,
(unsigned char *)ssh2_userkey_loadpub(&ssh->cfg.keyfile,
&algorithm,
&pub_blob_len);
if (pub_blob) {
@ -4720,7 +4720,7 @@ static void do_ssh2_authconn(Ssh ssh, unsigned char *in, int inlen, int ispkt)
* Actually attempt a serious authentication using
* the key.
*/
if (ssh2_userkey_encrypted(ssh->cfg.keyfile, &comment)) {
if (ssh2_userkey_encrypted(&ssh->cfg.keyfile, &comment)) {
sprintf(s->pwprompt,
"Passphrase for key \"%.100s\": ",
comment);
@ -4872,7 +4872,7 @@ static void do_ssh2_authconn(Ssh ssh, unsigned char *in, int inlen, int ispkt)
*/
struct ssh2_userkey *key;
key = ssh2_load_userkey(ssh->cfg.keyfile, s->password);
key = ssh2_load_userkey(&ssh->cfg.keyfile, s->password);
if (key == SSH2_WRONG_PASSPHRASE || key == NULL) {
if (key == SSH2_WRONG_PASSPHRASE) {
c_write_str(ssh, "Wrong passphrase\r\n");