class R509::MessageDigest

MessageDigest allows you to specify MDs in a more friendly fashion

Constants

DEFAULT_MD

this constant defines the default message digest if it is not supplied or an invalid digest is passed

KNOWN_MDS

a list of message digests that this class understands

Attributes

digest[R]
name[R]

Public Class Methods

new(arg = nil) click to toggle source

@param [String,OpenSSL::Digest] arg

# File lib/r509/message_digest.rb, line 16
def initialize(arg = nil)
  if arg.is_a?(String)
    @name = arg.downcase
    @digest = translate_name_to_digest
  elsif arg.nil?
    @name = DEFAULT_MD
    @digest = translate_name_to_digest
  else
    @digest = arg
    @name = translate_digest_to_name
  end
end

Private Instance Methods

translate_digest_to_name() click to toggle source

@return [String]

# File lib/r509/message_digest.rb, line 47
def translate_digest_to_name
  case @digest
  when OpenSSL::Digest::SHA1 then 'sha1'
  when OpenSSL::Digest::SHA224 then 'sha224'
  when OpenSSL::Digest::SHA256 then 'sha256'
  when OpenSSL::Digest::SHA384 then 'sha384'
  when OpenSSL::Digest::SHA512 then 'sha512'
  when OpenSSL::Digest::MD5 then 'md5'
  else
    raise ArgumentError, "Unknown digest"
  end
end
translate_name_to_digest() click to toggle source

@return [OpenSSL::Digest]

# File lib/r509/message_digest.rb, line 32
def translate_name_to_digest
  case @name
  when 'sha1' then OpenSSL::Digest::SHA1.new
  when 'sha224' then OpenSSL::Digest::SHA224.new
  when 'sha256' then OpenSSL::Digest::SHA256.new
  when 'sha384' then OpenSSL::Digest::SHA384.new
  when 'sha512' then OpenSSL::Digest::SHA512.new
  when 'md5' then OpenSSL::Digest::MD5.new
  else
    @name = DEFAULT_MD.downcase
    translate_name_to_digest
  end
end