class Kiji::Digester
Class that holds OpenSSL::Digest
instance with some meta information for digesting in XML.
Attributes
symbol[R]
Public Class Methods
new(algorithm)
click to toggle source
You may pass either a one of :sha1
, :sha256
or :gostr3411
symbols or Hash
with keys :id
with a string, which will denote algorithm in XML Reference tag and :digester
with instance of class with interface compatible with OpenSSL::Digest
class.
# File lib/kiji/digester.rb, line 34 def initialize(algorithm) if algorithm.is_a? Symbol @digest_info = DIGEST_ALGORITHMS[algorithm].dup @digest_info[:digester] = @digest_info[:digester].call @symbol = algorithm else @digest_info = algorithm end end
Public Instance Methods
base64(message)
click to toggle source
# File lib/kiji/digester.rb, line 55 def base64(message) hex = digester.hexdigest(message) [[hex].pack('H*')].pack('m0') end
digest(message)
click to toggle source
Digest
# File lib/kiji/digester.rb, line 47 def digest(message) digester.digest(message) end
Also aliased as: call
digest_id()
click to toggle source
XML-friendly name (for specifying in XML DigestMethod
node Algorithm
attribute)
# File lib/kiji/digester.rb, line 73 def digest_id @digest_info[:id] end
digest_name()
click to toggle source
Human-friendly name
# File lib/kiji/digester.rb, line 68 def digest_name @digest_info[:name] end
digester()
click to toggle source
Returns OpenSSL::Digest
(or derived class) instance
# File lib/kiji/digester.rb, line 63 def digester @digest_info[:digester].reset end
hexdigest(message)
click to toggle source
# File lib/kiji/digester.rb, line 51 def hexdigest(message) digester.hexdigest(message) end