diff options
Diffstat (limited to 'kex.c')
-rw-r--r-- | kex.c | 16 |
1 files changed, 16 insertions, 0 deletions
@@ -51,6 +51,10 @@ | |||
51 | #include "roaming.h" | 51 | #include "roaming.h" |
52 | #include "digest.h" | 52 | #include "digest.h" |
53 | 53 | ||
54 | #ifdef GSSAPI | ||
55 | #include "ssh-gss.h" | ||
56 | #endif | ||
57 | |||
54 | #if OPENSSL_VERSION_NUMBER >= 0x00907000L | 58 | #if OPENSSL_VERSION_NUMBER >= 0x00907000L |
55 | # if defined(HAVE_EVP_SHA256) | 59 | # if defined(HAVE_EVP_SHA256) |
56 | # define evp_ssh_sha256 EVP_sha256 | 60 | # define evp_ssh_sha256 EVP_sha256 |
@@ -92,6 +96,14 @@ static const struct kexalg kexalgs[] = { | |||
92 | #endif | 96 | #endif |
93 | { NULL, -1, -1, -1}, | 97 | { NULL, -1, -1, -1}, |
94 | }; | 98 | }; |
99 | static const struct kexalg kexalg_prefixes[] = { | ||
100 | #ifdef GSSAPI | ||
101 | { KEX_GSS_GEX_SHA1_ID, KEX_GSS_GEX_SHA1, 0, SSH_DIGEST_SHA1 }, | ||
102 | { KEX_GSS_GRP1_SHA1_ID, KEX_GSS_GRP1_SHA1, 0, SSH_DIGEST_SHA1 }, | ||
103 | { KEX_GSS_GRP14_SHA1_ID, KEX_GSS_GRP14_SHA1, 0, SSH_DIGEST_SHA1 }, | ||
104 | #endif | ||
105 | { NULL, -1, -1, -1 }, | ||
106 | }; | ||
95 | 107 | ||
96 | char * | 108 | char * |
97 | kex_alg_list(char sep) | 109 | kex_alg_list(char sep) |
@@ -120,6 +132,10 @@ kex_alg_by_name(const char *name) | |||
120 | if (strcmp(k->name, name) == 0) | 132 | if (strcmp(k->name, name) == 0) |
121 | return k; | 133 | return k; |
122 | } | 134 | } |
135 | for (k = kexalg_prefixes; k->name != NULL; k++) { | ||
136 | if (strncmp(k->name, name, strlen(k->name)) == 0) | ||
137 | return k; | ||
138 | } | ||
123 | return NULL; | 139 | return NULL; |
124 | } | 140 | } |
125 | 141 | ||