]> asedeno.scripts.mit.edu Git - PuTTY.git/blobdiff - ssh.c
Support ECDH key exchange using the 'curve25519' curve.
[PuTTY.git] / ssh.c
diff --git a/ssh.c b/ssh.c
index 5ed63cc24decc2f27b1658cdeff4efde87fcc929..dfdf7227c39c1ba637e4665291329e786d589e48 100644 (file)
--- a/ssh.c
+++ b/ssh.c
@@ -2627,7 +2627,7 @@ static void *ssh_pkt_getdata(struct Packet *pkt, int length)
     return pkt->body + (pkt->savedpos - length);
 }
 static int ssh1_pkt_getrsakey(struct Packet *pkt, struct RSAKey *key,
-                             unsigned char **keystr)
+                             const unsigned char **keystr)
 {
     int j;
 
@@ -3865,7 +3865,8 @@ static int do_ssh1_login(Ssh ssh, unsigned char *in, int inlen,
     struct do_ssh1_login_state {
        int crLine;
        int len;
-       unsigned char *rsabuf, *keystr1, *keystr2;
+       unsigned char *rsabuf;
+        const unsigned char *keystr1, *keystr2;
        unsigned long supported_ciphers_mask, supported_auths_mask;
        int tried_publickey, tried_agent;
        int tis_auth_refused, ccard_auth_refused;
@@ -6844,14 +6845,7 @@ static void do_ssh2_transport(Ssh ssh, void *vin, int inlen,
                   ssh->kex->hash->text_name);
         ssh->pkt_kctx = SSH2_PKTCTX_ECDHKEX;
 
-        s->eckey = NULL;
-        if (!strcmp(ssh->kex->name, "ecdh-sha2-nistp256")) {
-            s->eckey = ssh_ecdhkex_newkey(ec_p256());
-        } else if (!strcmp(ssh->kex->name, "ecdh-sha2-nistp384")) {
-            s->eckey = ssh_ecdhkex_newkey(ec_p384());
-        } else if (!strcmp(ssh->kex->name, "ecdh-sha2-nistp521")) {
-            s->eckey = ssh_ecdhkex_newkey(ec_p521());
-        }
+        s->eckey = ssh_ecdhkex_newkey(ssh->kex->name);
         if (!s->eckey) {
             bombout(("Unable to generate key for ECDH"));
             crStopV;