Sha256: d59d0b455c0a47b2d3fc2662a1d0b2b194840ee02adb67217d6e9cde4ac5f08a
Contents?: true
Size: 1.86 KB
Versions: 3
Compression:
Stored size: 1.86 KB
Contents
require 'longleaf/errors' require 'digest' module Longleaf # Helper methods for generating digests class DigestHelper KNOWN_DIGESTS ||= ['md5', 'sha1', 'sha2', 'sha256', 'sha384', 'sha512', 'rmd160'] # @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. 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 # @param alg [String] identifier of digest algorithm # @return [Boolean] true if the digest is a valid known algorithm def self.is_known_algorithm?(alg) KNOWN_DIGESTS.include?(alg) end # 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 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 end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
longleaf-1.1.1 | lib/longleaf/helpers/digest_helper.rb |
longleaf-1.1.0 | lib/longleaf/helpers/digest_helper.rb |
longleaf-1.0.0 | lib/longleaf/helpers/digest_helper.rb |