Class: Facter::Util::Resolvers::SshHelper

Inherits:
Object
  • Object
show all
Defined in:
lib/facter/util/resolvers/ssh_helper.rb

Constant Summary collapse

SSH_NAME =
{ 'ssh-dss' => 'dsa', 'ecdsa-sha2-nistp256' => 'ecdsa',
'ecdsa-sha2-nistp384' => 'ecdsa', 'ecdsa-sha2-nistp521' => 'ecdsa',
'ssh-ed25519' => 'ed25519', 'ssh-rsa' => 'rsa' }.freeze
SSH_FINGERPRINT =
{ 'rsa' => 1, 'dsa' => 2, 'ecdsa' => 3, 'ed25519' => 4 }.freeze

Class Method Summary collapse

Class Method Details

.create_ssh(key_type, key) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/facter/util/resolvers/ssh_helper.rb', line 16

def create_ssh(key_type, key)
  key_name = SSH_NAME[key_type]
  return unless key_name

  # decode64 ignores non-base64 characters including newlines
  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::Util::Resolvers::FingerPrint.new(sha1, sha256)
  Facter::Util::Resolvers::Ssh.new(fingerprint, key_type, key, key_name)
end