Class: Kiji::Digester

Inherits:
Object
  • Object
show all
Defined in:
lib/kiji/digester.rb

Overview

Class that holds OpenSSL::Digest instance with some meta information for digesting in XML.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(algorithm) ⇒ Digester

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.



34
35
36
37
38
39
40
41
42
# 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

Instance Attribute Details

#symbolObject (readonly)

Returns the value of attribute symbol.



44
45
46
# File 'lib/kiji/digester.rb', line 44

def symbol
  @symbol
end

Instance Method Details

#base64(message) ⇒ Object



55
56
57
58
# File 'lib/kiji/digester.rb', line 55

def base64(message)
  hex = digester.hexdigest(message)
  [[hex].pack('H*')].pack('m0')
end

#digest(message) ⇒ Object Also known as: call

Digest



47
48
49
# File 'lib/kiji/digester.rb', line 47

def digest(message)
  digester.digest(message)
end

#digest_idObject

XML-friendly name (for specifying in XML DigestMethod node Algorithm attribute)



73
74
75
# File 'lib/kiji/digester.rb', line 73

def digest_id
  @digest_info[:id]
end

#digest_nameObject

Human-friendly name



68
69
70
# File 'lib/kiji/digester.rb', line 68

def digest_name
  @digest_info[:name]
end

#digesterObject

Returns OpenSSL::Digest (or derived class) instance



63
64
65
# File 'lib/kiji/digester.rb', line 63

def digester
  @digest_info[:digester].reset
end

#hexdigest(message) ⇒ Object



51
52
53
# File 'lib/kiji/digester.rb', line 51

def hexdigest(message)
  digester.hexdigest(message)
end