aboutsummaryrefslogtreecommitdiff
path: root/lib/leap_cli/util
diff options
context:
space:
mode:
authorelijah <elijah@riseup.net>2012-11-17 01:28:52 -0800
committerelijah <elijah@riseup.net>2012-11-17 01:28:52 -0800
commit18ffd7efe05e55a3cf907309d5cd8b97aeec61c5 (patch)
tree5f97f30211e1ed7027c50077f36663c013ae2738 /lib/leap_cli/util
parent76a3a736cfb50cb1c6d926d1e3afb0f504818157 (diff)
downloadleap_cli-18ffd7efe05e55a3cf907309d5cd8b97aeec61c5.tar.gz
leap_cli-18ffd7efe05e55a3cf907309d5cd8b97aeec61c5.tar.bz2
added ability to fingerprint x509 certs
Diffstat (limited to 'lib/leap_cli/util')
-rw-r--r--lib/leap_cli/util/x509.rb32
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/leap_cli/util/x509.rb b/lib/leap_cli/util/x509.rb
new file mode 100644
index 0000000..9ecd92d
--- /dev/null
+++ b/lib/leap_cli/util/x509.rb
@@ -0,0 +1,32 @@
+require 'openssl'
+require '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