summaryrefslogtreecommitdiff
path: root/lib/net/ssh/buffer.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/net/ssh/buffer.rb')
-rw-r--r--lib/net/ssh/buffer.rb18
1 files changed, 9 insertions, 9 deletions
diff --git a/lib/net/ssh/buffer.rb b/lib/net/ssh/buffer.rb
index 6ed5789..8a67d3e 100644
--- a/lib/net/ssh/buffer.rb
+++ b/lib/net/ssh/buffer.rb
@@ -315,15 +315,15 @@ module Net
key.pub_key = read_bignum
end
when /^ssh-rsa$/
- key = OpenSSL::PKey::RSA.new
- if key.respond_to?(:set_key)
- e = read_bignum
- n = read_bignum
- key.set_key(n, e, nil)
- else
- key.e = read_bignum
- key.n = read_bignum
- end
+ e = read_bignum
+ n = read_bignum
+
+ asn1 = OpenSSL::ASN1::Sequence([
+ OpenSSL::ASN1::Integer(n),
+ OpenSSL::ASN1::Integer(e)
+ ])
+
+ key = OpenSSL::PKey::RSA.new(asn1.to_der)
when /^ssh-ed25519$/
Net::SSH::Authentication::ED25519Loader.raiseUnlessLoaded("unsupported key type `#{type}'")
key = Net::SSH::Authentication::ED25519::PubKey.read_keyblob(self)