mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-07-02 03:52:49 -05:00
Add a preference list for SSH-2 key exchange algorithms, on a new "Kex" panel
(which will gain more content anon). Retire BUG_SSH2_DH_GEX and add a backwards-compatibility wart, since we never did find a way of automatically detecting this alleged server bug, and in any case there was only ever one report (<3D91F3B5.7030309@inwind.it>, FWIW). Also generalise askcipher() to a new askalg() (thus touching all the front-ends). I've made some attempt to document what SSH key exchange is and why you care, but it could use some review for clarity (and outright lies). [originally from svn r5022]
This commit is contained in:
@ -147,21 +147,20 @@ void update_specials_menu(void *frontend)
|
||||
}
|
||||
|
||||
/*
|
||||
* Ask whether the selected cipher is acceptable (since it was
|
||||
* Ask whether the selected algorithm is acceptable (since it was
|
||||
* below the configured 'warn' threshold).
|
||||
* cs: 0 = both ways, 1 = client->server, 2 = server->client
|
||||
*/
|
||||
void askcipher(void *frontend, char *ciphername, int cs)
|
||||
void askalg(void *frontend, const char *algtype, const char *algname)
|
||||
{
|
||||
HANDLE hin;
|
||||
DWORD savemode, i;
|
||||
|
||||
static const char msg[] =
|
||||
"The first %scipher supported by the server is\n"
|
||||
"The first %s supported by the server is\n"
|
||||
"%s, which is below the configured warning threshold.\n"
|
||||
"Continue with connection? (y/n) ";
|
||||
static const char msg_batch[] =
|
||||
"The first %scipher supported by the server is\n"
|
||||
"The first %s supported by the server is\n"
|
||||
"%s, which is below the configured warning threshold.\n"
|
||||
"Connection abandoned.\n";
|
||||
static const char abandoned[] = "Connection abandoned.\n";
|
||||
@ -169,17 +168,11 @@ void askcipher(void *frontend, char *ciphername, int cs)
|
||||
char line[32];
|
||||
|
||||
if (console_batch_mode) {
|
||||
fprintf(stderr, msg_batch,
|
||||
(cs == 0) ? "" :
|
||||
(cs == 1) ? "client-to-server " : "server-to-client ",
|
||||
ciphername);
|
||||
fprintf(stderr, msg_batch, algtype, algname);
|
||||
cleanup_exit(1);
|
||||
}
|
||||
|
||||
fprintf(stderr, msg,
|
||||
(cs == 0) ? "" :
|
||||
(cs == 1) ? "client-to-server " : "server-to-client ",
|
||||
ciphername);
|
||||
fprintf(stderr, msg, algtype, algname);
|
||||
fflush(stderr);
|
||||
|
||||
hin = GetStdHandle(STD_INPUT_HANDLE);
|
||||
|
@ -777,24 +777,21 @@ void verify_ssh_host_key(void *frontend, char *host, int port, char *keytype,
|
||||
}
|
||||
|
||||
/*
|
||||
* Ask whether the selected cipher is acceptable (since it was
|
||||
* Ask whether the selected algorithm is acceptable (since it was
|
||||
* below the configured 'warn' threshold).
|
||||
* cs: 0 = both ways, 1 = client->server, 2 = server->client
|
||||
*/
|
||||
void askcipher(void *frontend, char *ciphername, int cs)
|
||||
void askalg(void *frontend, const char *algtype, const char *algname)
|
||||
{
|
||||
static const char mbtitle[] = "%s Security Alert";
|
||||
static const char msg[] =
|
||||
"The first %.35scipher supported by the server\n"
|
||||
"The first %s supported by the server\n"
|
||||
"is %.64s, which is below the configured\n"
|
||||
"warning threshold.\n"
|
||||
"Do you want to continue with this connection?\n";
|
||||
char *message, *title;
|
||||
int mbret;
|
||||
|
||||
message = dupprintf(msg, ((cs == 0) ? "" :
|
||||
(cs == 1) ? "client-to-server " :
|
||||
"server-to-client "), ciphername);
|
||||
message = dupprintf(msg, algtype, algname);
|
||||
title = dupprintf(mbtitle, appname);
|
||||
mbret = MessageBox(NULL, message, title,
|
||||
MB_ICONWARNING | MB_YESNO);
|
||||
|
@ -86,6 +86,7 @@
|
||||
#define WINHELP_CTX_ssh_protocol "ssh.protocol"
|
||||
#define WINHELP_CTX_ssh_command "ssh.command"
|
||||
#define WINHELP_CTX_ssh_compress "ssh.compress"
|
||||
#define WINHELP_CTX_ssh_kexlist "ssh.kex.order"
|
||||
#define WINHELP_CTX_ssh_auth_privkey "ssh.auth.privkey"
|
||||
#define WINHELP_CTX_ssh_auth_agentfwd "ssh.auth.agentfwd"
|
||||
#define WINHELP_CTX_ssh_auth_changeuser "ssh.auth.changeuser"
|
||||
@ -116,5 +117,4 @@
|
||||
#define WINHELP_CTX_ssh_bugs_hmac2 "ssh.bugs.hmac2"
|
||||
#define WINHELP_CTX_ssh_bugs_derivekey2 "ssh.bugs.derivekey2"
|
||||
#define WINHELP_CTX_ssh_bugs_rsapad2 "ssh.bugs.rsapad2"
|
||||
#define WINHELP_CTX_ssh_bugs_dhgex2 "ssh.bugs.dhgex2"
|
||||
#define WINHELP_CTX_ssh_bugs_pksessid2 "ssh.bugs.pksessid2"
|
||||
|
Reference in New Issue
Block a user