summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/net/ssh/transport/openssl.rb3
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/net/ssh/transport/openssl.rb b/lib/net/ssh/transport/openssl.rb
index 1c23651..a398326 100644
--- a/lib/net/ssh/transport/openssl.rb
+++ b/lib/net/ssh/transport/openssl.rb
@@ -124,7 +124,8 @@ module OpenSSL
sig_r = a1sig.value[0].value.to_s(2)
sig_s = a1sig.value[1].value.to_s(2)
- raise OpenSSL::PKey::DSAError, "bad sig size" if sig_r.length > 20 || sig_s.length > 20
+ sig_size = params["q"].num_bits / 8
+ raise OpenSSL::PKey::DSAError, "bad sig size" if sig_r.length > sig_size || sig_s.length > sig_size
sig_r = "\0" * (20 - sig_r.length) + sig_r if sig_r.length < 20
sig_s = "\0" * (20 - sig_s.length) + sig_s if sig_s.length < 20