class Xml::Kit::Fingerprint

This generates a fingerprint for an X509 Certificate.

certificate, _ = Xml::Kit::SelfSignedCertificate.new.create

puts Xml::Kit::Fingerprint.new(certificate).to_s
# B7:AB:DC:BD:4D:23:58:65:FD:1A:99:0C:5F:89:EA:87:AD:F1:D7:83:34:7A:E9:E4:88:12:DD:46:1F:38:05:93

{include:file:spec/xml/kit/fingerprint_spec.rb}

Attributes

x509[R]

The OpenSSL::X509::Certificate

Public Class Methods

new(raw_certificate) click to toggle source
# File lib/xml/kit/fingerprint.rb, line 17
def initialize(raw_certificate)
  @x509 = Certificate.to_x509(raw_certificate)
end

Public Instance Methods

==(other) click to toggle source
# File lib/xml/kit/fingerprint.rb, line 29
def ==(other)
  to_s == other.to_s
end
algorithm(algorithm) click to toggle source

Generates a formatted fingerprint using the specified hash algorithm.

@param algorithm [OpenSSL::Digest] the openssl algorithm to use `OpenSSL::Digest::SHA256`, `OpenSSL::Digest::SHA1`. @return [String] in the format of `“BF:ED:C5:F1:6C:AB:F5:B2:15:1F:BF:BD:7D:68:1A:F9:A5:4E:4C:19:30:BC:6D:25:B1:8E:98:D4:23:FD:B4:09”`

# File lib/xml/kit/fingerprint.rb, line 25
def algorithm(algorithm)
  pretty_fingerprint(algorithm.new.hexdigest(x509.to_der))
end
eql?(other) click to toggle source
# File lib/xml/kit/fingerprint.rb, line 33
def eql?(other)
  self == other
end
hash() click to toggle source
# File lib/xml/kit/fingerprint.rb, line 37
def hash
  to_s.hash
end
to_s() click to toggle source
# File lib/xml/kit/fingerprint.rb, line 41
def to_s
  algorithm(OpenSSL::Digest::SHA256)
end

Private Instance Methods

pretty_fingerprint(fingerprint) click to toggle source
# File lib/xml/kit/fingerprint.rb, line 47
def pretty_fingerprint(fingerprint)
  fingerprint.upcase.scan(/../).join(':')
end