Sha256: 7123caaf9379b6ce220393900683923931e80b3a2a3424a9ad0e1fb9e30c62ed

Contents?: true

Size: 877 Bytes

Versions: 29

Compression:

Stored size: 877 Bytes

Contents

# frozen_string_literal: true

require 'base64'
require 'digest/sha1'

module Resolvers
  module Utils
    class SshHelper
      class << self
        SSH_NAME = { 'ssh-dss' => 'dsa', 'ecdsa-sha2-nistp256' => 'ecdsa',
                     'ssh-ed25519' => 'ed25519', 'ssh-rsa' => 'rsa' }.freeze
        SSH_FINGERPRINT = { 'rsa' => 1, 'dsa' => 2, 'ecdsa' => 3, 'ed25519' => 4 }.freeze

        def create_ssh(key_type, key)
          key_name = SSH_NAME[key_type]
          decoded_key = Base64.decode64(key)
          ssh_fp = SSH_FINGERPRINT[key_name]
          sha1 = "SSHFP #{ssh_fp} 1 #{Digest::SHA1.new.update(decoded_key)}"
          sha256 = "SSHFP #{ssh_fp} 2 #{Digest::SHA2.new.update(decoded_key)}"

          fingerprint = Facter::FingerPrint.new(sha1, sha256)
          Facter::Ssh.new(fingerprint, key_type, key, key_name)
        end
      end
    end
  end
end

Version data entries

29 entries across 29 versions & 1 rubygems

Version Path
facter-4.0.24 lib/resolvers/utils/ssh_helper.rb
facter-4.0.23 lib/resolvers/utils/ssh_helper.rb
facter-4.0.22 lib/resolvers/utils/ssh_helper.rb
facter-4.0.21 lib/resolvers/utils/ssh_helper.rb
facter-4.0.20 lib/resolvers/utils/ssh_helper.rb
facter-4.0.19 lib/resolvers/utils/ssh_helper.rb
facter-4.0.18 lib/resolvers/utils/ssh_helper.rb
facter-4.0.17 lib/resolvers/utils/ssh_helper.rb
facter-4.0.16 lib/resolvers/utils/ssh_helper.rb