class SecurizeString::DigestFinder

A Helper class to look-up digests easily.

Constants

DIGESTS

Public Class Methods

digests() click to toggle source

Returns the complete list of digest strings recognized by find.

# File lib/securize_string/digest_finder.rb, line 31
def self.digests
  @supported_digests = DIGESTS.keys.inject([]) {|a,v| a | [v.upcase, v.downcase]}.sort if @supported_digests.nil?
  return @supported_digests
end
find(obj) click to toggle source

Returns the OpenSSL::Digest class that goes with a given argument.

# File lib/securize_string/digest_finder.rb, line 37
def self.find(obj)
  if( obj.kind_of?(OpenSSL::Digest) )
    klass = obj.class
  elsif( obj.kind_of?(Class) && (obj < OpenSSL::Digest) )
    klass = obj
  elsif( obj.kind_of?(Class) && (obj < Digest::Base) )
    klass = DIGESTS[obj.name.split('::').last.upcase]
  elsif( obj.kind_of?(Digest::Base) )
    klass = DIGESTS[obj.class.name.split('::').last.upcase]
  else
    klass = DIGESTS[obj.to_s.upcase]
  end
  
  raise ArgumentError, "Cannot convert to OpenSSL::Digest: #{obj.inspect}" if klass.nil?
  
  return klass
end