class SSHScan::Crypto::PublicKey
House methods helpful in analysing SSH public keys.
Public Class Methods
new(key_string)
click to toggle source
# File lib/ssh_scan/public_key.rb, line 10 def initialize(key_string) @key_string = key_string end
Public Instance Methods
fingerprint_md5()
click to toggle source
# File lib/ssh_scan/public_key.rb, line 36 def fingerprint_md5 SSHKey.fingerprint(@key_string) end
fingerprint_sha1()
click to toggle source
# File lib/ssh_scan/public_key.rb, line 40 def fingerprint_sha1 SSHKey.sha1_fingerprint(@key_string) end
fingerprint_sha256()
click to toggle source
# File lib/ssh_scan/public_key.rb, line 44 def fingerprint_sha256 # We're translating this to hex because the SSHKEY default isn't as useful for comparing with SSHFP records Base64.decode64(SSHKey.sha256_fingerprint(@key_string)).hexify(:delim => ":") end
length()
click to toggle source
# File lib/ssh_scan/public_key.rb, line 32 def length SSHKey.ssh_public_key_bits(@key_string) end
to_hash()
click to toggle source
# File lib/ssh_scan/public_key.rb, line 49 def to_hash { self.type => { "raw" => @key_string, "length" => self.length, "fingerprints" => { "md5" => self.fingerprint_md5, "sha1" => self.fingerprint_sha1, "sha256" => self.fingerprint_sha256 } } } end
type()
click to toggle source
# File lib/ssh_scan/public_key.rb, line 18 def type if @key_string.start_with?("ssh-rsa") return "rsa" elsif @key_string.start_with?("ssh-dss") return "dsa" elsif @key_string.start_with?("ecdsa-sha2-nistp256") return "ecdsa-sha2-nistp256" elsif @key_string.start_with?("ssh-ed25519") return "ed25519" else return "unknown" end end
valid?()
click to toggle source
# File lib/ssh_scan/public_key.rb, line 14 def valid? SSHKey.valid_ssh_public_key?(@key_string) end