summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyosuke Yamazaki <ryosuke.yamazaki@mac.com>2011-12-16 17:11:53 +0900
committerRyosuke Yamazaki <ryosuke.yamazaki@mac.com>2011-12-16 17:11:53 +0900
commit27a6556e404f1c80570fcbb53e7cb01a7ea9f615 (patch)
treed983c431c7912530b3361e3bc1e6f2db4ce57bfe
parent4339264156536df1466c4d8433592d1e06cf7f54 (diff)
downloadnet-ssh-27a6556e404f1c80570fcbb53e7cb01a7ea9f615.tar.gz
Compatibile with OpenSSH
-rw-r--r--lib/net/ssh/transport/kex/diffie_hellman_group_exchange_sha1.rb7
-rw-r--r--test/transport/kex/test_diffie_hellman_group_exchange_sha1.rb4
2 files changed, 7 insertions, 4 deletions
diff --git a/lib/net/ssh/transport/kex/diffie_hellman_group_exchange_sha1.rb b/lib/net/ssh/transport/kex/diffie_hellman_group_exchange_sha1.rb
index da47ec2..8fb69e8 100644
--- a/lib/net/ssh/transport/kex/diffie_hellman_group_exchange_sha1.rb
+++ b/lib/net/ssh/transport/kex/diffie_hellman_group_exchange_sha1.rb
@@ -19,7 +19,10 @@ module Net::SSH::Transport::Kex
# Compute the number of bits needed for the given number of bytes.
def compute_need_bits
- need_bits = data[:need_bytes] * 8
+
+ # for Compatibility: OpenSSH requires (need_bits * 2 + 1) length of parameter
+ need_bits = data[:need_bytes] * 8 * 2 + 1
+
if need_bits < MINIMUM_BITS
need_bits = MINIMUM_BITS
elsif need_bits > MAXIMUM_BITS
@@ -74,4 +77,4 @@ module Net::SSH::Transport::Kex
end
end
-end \ No newline at end of file
+end
diff --git a/test/transport/kex/test_diffie_hellman_group_exchange_sha1.rb b/test/transport/kex/test_diffie_hellman_group_exchange_sha1.rb
index dc5a2bc..b19afae 100644
--- a/test/transport/kex/test_diffie_hellman_group_exchange_sha1.rb
+++ b/test/transport/kex/test_diffie_hellman_group_exchange_sha1.rb
@@ -18,7 +18,7 @@ module Transport; module Kex
def test_exchange_with_fewer_than_maximum_bits_uses_need_bits
dh_options :need_bytes => 500
- need_bits(4000)
+ need_bits(8001)
assert_nothing_raised { exchange! }
end
@@ -89,4 +89,4 @@ module Transport; module Kex
end
end
-end; end \ No newline at end of file
+end; end