class OpenSSL::PKey::DSA
This class is originally defined in the OpenSSL module. As needed, methods have been added to it by the Net::SSH module for convenience in dealing with SSH functionality.
Public Instance Methods
ssh_do_sign(data)
click to toggle source
Signs the given data.
# File lib/net/ssh/transport/openssl.rb, line 108 def ssh_do_sign(data) sig = sign(OpenSSL::Digest::SHA1.new, data) a1sig = OpenSSL::ASN1.decode(sig) 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_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 return sig_r + sig_s end
ssh_do_verify(sig, data)
click to toggle source
Verifies the given signature matches the given data.
# File lib/net/ssh/transport/openssl.rb, line 97 def ssh_do_verify(sig, data) sig_r = sig[0,20].unpack("H*")[0].to_i(16) sig_s = sig[20,20].unpack("H*")[0].to_i(16) a1sig = OpenSSL::ASN1::Sequence([ OpenSSL::ASN1::Integer(sig_r), OpenSSL::ASN1::Integer(sig_s) ]) return verify(OpenSSL::Digest::SHA1.new, a1sig.to_der, data) end
ssh_signature_type()
click to toggle source
# File lib/net/ssh/transport/openssl.rb, line 86 def ssh_signature_type ssh_type end
ssh_type()
click to toggle source
Returns “ssh-dss”, which is the description of this key type used by the SSH2 protocol.
# File lib/net/ssh/transport/openssl.rb, line 82 def ssh_type "ssh-dss" end
to_blob()
click to toggle source
Converts the key to a blob, according to the SSH2 protocol.
# File lib/net/ssh/transport/openssl.rb, line 91 def to_blob @blob ||= Net::SSH::Buffer.from(:string, ssh_type, :bignum, p, :bignum, q, :bignum, g, :bignum, pub_key).to_s end