class Longleaf::DigestHelper
Helper methods for generating digests
Public Class Methods
is_known_algorithm?(alg)
click to toggle source
@param alg [String] identifier of digest algorithm @return [Boolean] true if the digest is a valid known algorithm
# File lib/longleaf/helpers/digest_helper.rb, line 29 def self.is_known_algorithm?(alg) KNOWN_DIGESTS.include?(alg) end
start_digest(alg)
click to toggle source
Get a Digest class for the specified algorithm @param alg [String] name of the digest algorithm @return [Digest] A digest class for the requested algorithm @raise [InvalidDigestAlgorithmError] if an unknown digest algorithm is requested
# File lib/longleaf/helpers/digest_helper.rb, line 37 def self.start_digest(alg) case alg when 'md5' return Digest::MD5.new when 'sha1' return Digest::SHA1.new when 'sha2', 'sha256' return Digest::SHA2.new when 'sha384' return Digest::SHA2.new(384) when 'sha512' return Digest::SHA2.new(512) when 'rmd160' return Digest::RMD160.new else raise InvalidDigestAlgorithmError.new("Cannot produce digest for unknown algorithm '#{alg}'.") end end
validate_algorithms(algs)
click to toggle source
@param algs Either a string containing one or an array containing zero or more digest
algorithm names.
@raise [InvalidDigestAlgorithmError] thrown if any of the digest algorithms listed are not
known to the system.
# File lib/longleaf/helpers/digest_helper.rb, line 13 def self.validate_algorithms(algs) return if algs.nil? if algs.is_a?(String) unless self.is_known_algorithm?(algs) raise InvalidDigestAlgorithmError.new("Unknown digest algorithm #{algs}") end else unknown = algs.select { |alg| !KNOWN_DIGESTS.include?(alg) } unless unknown.empty? raise InvalidDigestAlgorithmError.new("Unknown digest algorithm(s): #{unknown}") end end end