X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=putty.h;h=c02e00f1ba181f4dcd6b8db62acedded12412ed1;hb=df93419ae5dcc57e2fd051f54c564849e1fb3789;hp=c854d9449ebd194e93054564dd26c50c2944afc5;hpb=8fdeb3a95cc3d7dce5629fc22e309eb3c996f44d;p=PuTTY.git diff --git a/putty.h b/putty.h index c854d944..c02e00f1 100644 --- a/putty.h +++ b/putty.h @@ -182,7 +182,14 @@ typedef enum { /* Pseudo-specials used for constructing the specials menu. */ TS_SEP, /* Separator */ TS_SUBMENU, /* Start a new submenu with specified name */ - TS_EXITMENU /* Exit current submenu or end of specials */ + TS_EXITMENU, /* Exit current submenu or end of specials */ + /* Starting point for protocols to invent special-action codes + * that can't live in this enum at all, e.g. because they change + * with every session. + * + * Of course, this must remain the last value in this + * enumeration. */ + TS_LOCALSTART } Telnet_Special; struct telnet_special { @@ -259,6 +266,18 @@ enum { KEX_MAX }; +enum { + /* + * SSH-2 host key algorithms + */ + HK_WARN, + HK_RSA, + HK_DSA, + HK_ECDSA, + HK_ED25519, + HK_MAX +}; + enum { /* * SSH ciphers (both SSH-1 and SSH-2) @@ -279,9 +298,9 @@ enum { * three-way settings whose values are `always yes', `always * no', and `decide by some more complex automated means'. This * is true of line discipline options (local echo and line - * editing), proxy DNS, Close On Exit, and SSH server bug - * workarounds. Accordingly I supply a single enum here to deal - * with them all. + * editing), proxy DNS, proxy terminal logging, Close On Exit, and + * SSH server bug workarounds. Accordingly I supply a single enum + * here to deal with them all. */ FORCE_ON, FORCE_OFF, AUTO }; @@ -291,7 +310,7 @@ enum { * Proxy types. */ PROXY_NONE, PROXY_SOCKS4, PROXY_SOCKS5, - PROXY_HTTP, PROXY_TELNET, PROXY_CMD + PROXY_HTTP, PROXY_TELNET, PROXY_CMD, PROXY_FUZZ }; enum { @@ -681,12 +700,14 @@ void cleanup_exit(int); X(STR, NONE, proxy_username) \ X(STR, NONE, proxy_password) \ X(STR, NONE, proxy_telnet_command) \ + X(INT, NONE, proxy_log_to_term) \ /* SSH options */ \ X(STR, NONE, remote_cmd) \ X(STR, NONE, remote_cmd2) /* fallback if remote_cmd fails; never loaded or saved */ \ X(INT, NONE, nopty) \ X(INT, NONE, compression) \ X(INT, INT, ssh_kexlist) \ + X(INT, INT, ssh_hklist) \ X(INT, NONE, ssh_rekey_time) /* in minutes */ \ X(STR, NONE, ssh_rekey_data) /* string encoding e.g. "100K", "2M", "1G" */ \ X(INT, NONE, tryagent) \ @@ -1207,14 +1228,21 @@ int verify_ssh_host_key(void *frontend, char *host, int port, void (*callback)(void *ctx, int result), void *ctx); /* * have_ssh_host_key() just returns true if a key of that type is - * already chached and false otherwise. + * already cached and false otherwise. */ int have_ssh_host_key(const char *host, int port, const char *keytype); /* - * askalg has the same set of return values as verify_ssh_host_key. + * askalg and askhk have the same set of return values as + * verify_ssh_host_key. + * + * (askhk is used in the case where we're using a host key below the + * warning threshold because that's all we have cached, but at least + * one acceptable algorithm is available that we don't have cached.) */ int askalg(void *frontend, const char *algtype, const char *algname, void (*callback)(void *ctx, int result), void *ctx); +int askhk(void *frontend, const char *algname, const char *betteralgs, + void (*callback)(void *ctx, int result), void *ctx); /* * askappend can return four values: *