From 8e00d2fc37bc277a50c495938cc1ec7ab32aef66 Mon Sep 17 00:00:00 2001 From: Kenny Root Date: Wed, 10 Apr 2013 18:43:35 -0700 Subject: Add ECDH support Add support for the ECDH methods required by RFC 5656 ecdh-sha2-nistp256 ecdh-sha2-nistp384 ecdh-sha2-nistp521 --- .../main/java/com/trilead/ssh2/packets/PacketKexDHInit.java | 10 ++++------ .../main/java/com/trilead/ssh2/packets/PacketKexDHReply.java | 10 ++++------ lib/src/main/java/com/trilead/ssh2/packets/PacketKexInit.java | 5 ++--- 3 files changed, 10 insertions(+), 15 deletions(-) (limited to 'lib/src/main/java/com/trilead/ssh2/packets') diff --git a/lib/src/main/java/com/trilead/ssh2/packets/PacketKexDHInit.java b/lib/src/main/java/com/trilead/ssh2/packets/PacketKexDHInit.java index 26e14f6..9201936 100644 --- a/lib/src/main/java/com/trilead/ssh2/packets/PacketKexDHInit.java +++ b/lib/src/main/java/com/trilead/ssh2/packets/PacketKexDHInit.java @@ -1,7 +1,5 @@ package com.trilead.ssh2.packets; -import java.math.BigInteger; - /** * PacketKexDHInit. * @@ -12,11 +10,11 @@ public class PacketKexDHInit { byte[] payload; - BigInteger e; + byte[] publicKey; - public PacketKexDHInit(BigInteger e) + public PacketKexDHInit(byte[] publicKey) { - this.e = e; + this.publicKey = publicKey; } public byte[] getPayload() @@ -25,7 +23,7 @@ public class PacketKexDHInit { TypesWriter tw = new TypesWriter(); tw.writeByte(Packets.SSH_MSG_KEXDH_INIT); - tw.writeMPInt(e); + tw.writeString(publicKey, 0, publicKey.length); payload = tw.getBytes(); } return payload; diff --git a/lib/src/main/java/com/trilead/ssh2/packets/PacketKexDHReply.java b/lib/src/main/java/com/trilead/ssh2/packets/PacketKexDHReply.java index 0803ff9..461f262 100644 --- a/lib/src/main/java/com/trilead/ssh2/packets/PacketKexDHReply.java +++ b/lib/src/main/java/com/trilead/ssh2/packets/PacketKexDHReply.java @@ -2,8 +2,6 @@ package com.trilead.ssh2.packets; import java.io.IOException; -import java.math.BigInteger; - /** * PacketKexDHReply. * @@ -15,7 +13,7 @@ public class PacketKexDHReply byte[] payload; byte[] hostKey; - BigInteger f; + byte[] publicKey; byte[] signature; public PacketKexDHReply(byte payload[], int off, int len) throws IOException @@ -32,15 +30,15 @@ public class PacketKexDHReply + packet_type + ")"); hostKey = tr.readByteString(); - f = tr.readMPINT(); + publicKey = tr.readByteString(); signature = tr.readByteString(); if (tr.remain() != 0) throw new IOException("PADDING IN SSH_MSG_KEXDH_REPLY!"); } - public BigInteger getF() + public byte[] getF() { - return f; + return publicKey; } public byte[] getHostKey() diff --git a/lib/src/main/java/com/trilead/ssh2/packets/PacketKexInit.java b/lib/src/main/java/com/trilead/ssh2/packets/PacketKexInit.java index 7da5067..2a961c2 100644 --- a/lib/src/main/java/com/trilead/ssh2/packets/PacketKexInit.java +++ b/lib/src/main/java/com/trilead/ssh2/packets/PacketKexInit.java @@ -4,7 +4,6 @@ package com.trilead.ssh2.packets; import java.io.IOException; import java.security.SecureRandom; -import com.trilead.ssh2.compression.CompressionFactory; import com.trilead.ssh2.crypto.CryptoWishList; import com.trilead.ssh2.transport.KexParameters; @@ -21,10 +20,10 @@ public class PacketKexInit KexParameters kp = new KexParameters(); - public PacketKexInit(CryptoWishList cwl, SecureRandom rnd) + public PacketKexInit(CryptoWishList cwl) { kp.cookie = new byte[16]; - rnd.nextBytes(kp.cookie); + new SecureRandom().nextBytes(kp.cookie); kp.kex_algorithms = cwl.kexAlgorithms; kp.server_host_key_algorithms = cwl.serverHostKeyAlgorithms; -- cgit v1.2.3