Sha256: b72b30f83319476e32e9c9913a4a626950f85cfc1939fc9c500e5b322ed5aaa7

Contents?: true

Size: 1.23 KB

Versions: 1

Compression:

Stored size: 1.23 KB

Contents

require 'openssl'
require 'sshkey'
require 'base64'

module SSHScan
  # All cryptography related methods.
  module Crypto
    # House methods helpful in analysing SSH public keys.
    class PublicKey
      def initialize(key_string)
        @key_string = key_string
      end

      def valid?
        SSHKey.valid_ssh_public_key?(@key_string)
      end

      def type
        if @key_string.start_with?("ssh-rsa")
          return "rsa"
        elsif @key_string.start_with?("ssh-dss")
          return "dsa"
        else
          return "unknown"
        end 
      end

      def length
        SSHKey.ssh_public_key_bits(@key_string)
      end

      def fingerprint_md5
        SSHKey.fingerprint(@key_string)
      end

      def fingerprint_sha1
        SSHKey.sha1_fingerprint(@key_string)
      end    

      def fingerprint_sha256
        SSHKey.sha256_fingerprint(@key_string)
      end

      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
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ssh_scan-0.0.39 lib/ssh_scan/public_key.rb