Skip to content

Commit 5bc1a58

Browse files
committed
Add CNG KEX hooks
Add conditional hooks to use CNG for KEX. Switches based upon USE_MSCNG define
1 parent 02e7845 commit 5bc1a58

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

sshconnect2.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,12 @@
7676
#include "ssh-gss.h"
7777
#endif
7878

79+
#ifdef USE_MSCNG
80+
/* CNG KEX imports */
81+
int cng_kexgex_client(struct ssh *ssh);
82+
int cng_kexdh_client(struct ssh *ssh);
83+
#endif
84+
7985
/* import */
8086
extern char *client_version_string;
8187
extern char *server_version_string;
@@ -212,10 +218,17 @@ ssh_kex2(char *host, struct sockaddr *hostaddr, u_short port)
212218
fatal("kex_setup: %s", ssh_err(r));
213219
kex = active_state->kex;
214220
#ifdef WITH_OPENSSL
221+
#ifdef USE_MSCNG
222+
kex->kex[KEX_DH_GRP1_SHA1] = cng_kexdh_client;
223+
kex->kex[KEX_DH_GRP14_SHA1] = cng_kexdh_client;
224+
kex->kex[KEX_DH_GEX_SHA1] = cng_kexgex_client;
225+
kex->kex[KEX_DH_GEX_SHA256] = cng_kexgex_client;
226+
#else
215227
kex->kex[KEX_DH_GRP1_SHA1] = kexdh_client;
216228
kex->kex[KEX_DH_GRP14_SHA1] = kexdh_client;
217229
kex->kex[KEX_DH_GEX_SHA1] = kexgex_client;
218230
kex->kex[KEX_DH_GEX_SHA256] = kexgex_client;
231+
#endif
219232
# ifdef OPENSSL_HAS_ECC
220233
kex->kex[KEX_ECDH_SHA2] = kexecdh_client;
221234
# endif

sshd.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,12 @@
145145
#define O_NOCTTY 0
146146
#endif
147147

148+
#ifdef USE_MSCNG
149+
/* CNG KEX imports */
150+
int cng_kexgex_server(struct ssh *ssh);
151+
int cng_kexdh_server(struct ssh *ssh);
152+
#endif
153+
148154
/* Re-exec fds */
149155
#define REEXEC_DEVCRYPTO_RESERVED_FD (STDERR_FILENO + 1)
150156
#define REEXEC_STARTUP_PIPE_FD (STDERR_FILENO + 2)
@@ -3379,10 +3385,17 @@ do_ssh2_kex(void)
33793385
fatal("kex_setup: %s", ssh_err(r));
33803386
kex = active_state->kex;
33813387
#ifdef WITH_OPENSSL
3388+
#ifdef USE_MSCNG
3389+
kex->kex[KEX_DH_GRP1_SHA1] = cng_kexdh_server;
3390+
kex->kex[KEX_DH_GRP14_SHA1] = cng_kexdh_server;
3391+
kex->kex[KEX_DH_GEX_SHA1] = cng_kexgex_server;
3392+
kex->kex[KEX_DH_GEX_SHA256] = cng_kexgex_server;
3393+
#else
33823394
kex->kex[KEX_DH_GRP1_SHA1] = kexdh_server;
33833395
kex->kex[KEX_DH_GRP14_SHA1] = kexdh_server;
33843396
kex->kex[KEX_DH_GEX_SHA1] = kexgex_server;
33853397
kex->kex[KEX_DH_GEX_SHA256] = kexgex_server;
3398+
#endif
33863399
# ifdef OPENSSL_HAS_ECC
33873400
kex->kex[KEX_ECDH_SHA2] = kexecdh_server;
33883401
# endif

0 commit comments

Comments
 (0)