summaryrefslogtreecommitdiff
path: root/lib/net/ssh/transport/openssl.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/net/ssh/transport/openssl.rb')
-rw-r--r--lib/net/ssh/transport/openssl.rb16
1 files changed, 12 insertions, 4 deletions
diff --git a/lib/net/ssh/transport/openssl.rb b/lib/net/ssh/transport/openssl.rb
index 4ff58cf..1c23651 100644
--- a/lib/net/ssh/transport/openssl.rb
+++ b/lib/net/ssh/transport/openssl.rb
@@ -74,8 +74,16 @@ module OpenSSL
end
# Returns the signature for the given data.
- def ssh_do_sign(data)
- sign(OpenSSL::Digest::SHA1.new, data)
+ def ssh_do_sign(data, sig_alg = nil)
+ digester =
+ if sig_alg == "rsa-sha2-512"
+ OpenSSL::Digest::SHA512.new
+ elsif sig_alg == "rsa-sha2-256"
+ OpenSSL::Digest::SHA256.new
+ else
+ OpenSSL::Digest::SHA1.new
+ end
+ sign(digester, data)
end
end
@@ -109,7 +117,7 @@ module OpenSSL
end
# Signs the given data.
- def ssh_do_sign(data)
+ def ssh_do_sign(data, sig_alg = nil)
sig = sign(OpenSSL::Digest::SHA1.new, data)
a1sig = OpenSSL::ASN1.decode(sig)
@@ -220,7 +228,7 @@ module OpenSSL
end
# Returns the signature for the given data.
- def ssh_do_sign(data)
+ def ssh_do_sign(data, sig_alg = nil)
digest = digester.digest(data)
sig = dsa_sign_asn1(digest)
a1sig = OpenSSL::ASN1.decode(sig)