diff options
author | elijah <elijah@riseup.net> | 2016-06-29 16:55:06 -0700 |
---|---|---|
committer | elijah <elijah@riseup.net> | 2016-07-01 14:48:42 -0700 |
commit | 5780f5dcc024d4f140fe8f6e8dc3f7c4e905a8ec (patch) | |
tree | d68e366f74129f0fcad06fc415f9ab0e65ead50f /lib/leap_cli/util/x509.rb | |
parent | e03bfce9db2a213527beb16a4f4dd1f13d96be6e (diff) |
leap cli: move everything we can from leap_cli to leap_platform
Diffstat (limited to 'lib/leap_cli/util/x509.rb')
-rw-r--r-- | lib/leap_cli/util/x509.rb | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/lib/leap_cli/util/x509.rb b/lib/leap_cli/util/x509.rb new file mode 100644 index 00000000..787fdfac --- /dev/null +++ b/lib/leap_cli/util/x509.rb @@ -0,0 +1,33 @@ +autoload :OpenSSL, 'openssl' +autoload :CertificateAuthority, 'certificate_authority' + +require 'digest' +require 'digest/md5' +require 'digest/sha1' + +module LeapCli; module X509 + extend self + + # + # returns a fingerprint of a x509 certificate + # + def fingerprint(digest, cert_file) + if cert_file.is_a? String + cert = OpenSSL::X509::Certificate.new(Util.read_file!(cert_file)) + elsif cert_file.is_a? OpenSSL::X509::Certificate + cert = cert_file + elsif cert_file.is_a? CertificateAuthority::Certificate + cert = cert_file.openssl_body + end + digester = case digest + when "MD5" then Digest::MD5.new + when "SHA1" then Digest::SHA1.new + when "SHA256" then Digest::SHA256.new + when "SHA384" then Digest::SHA384.new + when "SHA512" then Digest::SHA512.new + end + digester.hexdigest(cert.to_der) + end + + +end; end |