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
call(message)
Alias for: digest
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