Module: Hashit
- Defined in:
- lib/hashit.rb,
lib/hashit/digests.rb,
lib/hashit/prepare.rb,
lib/hashit/verifier.rb
Constant Summary collapse
- VERSION =
"0.0.2"
Class Method Summary collapse
- .current_time ⇒ Object
- .did_match?(hash, key, text) ⇒ Boolean
- .generate_hash(digest, key, text) ⇒ Object
- .last_time ⇒ Object
- .matches?(hash, key, text) ⇒ Boolean
- .prepare(obj) ⇒ Object
- .prepare_array(arr) ⇒ Object
Class Method Details
.current_time ⇒ Object
23 24 25 26 27 |
# File 'lib/hashit/digests.rb', line 23 def current_time d = DateTime.now ts = d.strftime("%s").to_i ts - ((d.minute % 30) * 60) - d.second end |
.did_match?(hash, key, text) ⇒ Boolean
12 13 14 15 16 17 |
# File 'lib/hashit/verifier.rb', line 12 def did_match? hash, key, text type = hash.split('|').first.sub("timed", "previous") raise ArgumentError, "invalid hash" unless Hashit.respond_to?(type.to_sym) new_hash = Hashit.send type.to_sym, key, text new_hash == hash end |
.generate_hash(digest, key, text) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/hashit/digests.rb', line 33 def generate_hash digest, key, text text = Hashit.prepare text if key.is_a? Array key.reduce(text) do |text, k| k = Hashit.prepare k OpenSSL::HMAC.hexdigest(digest, k, text) end else key = Hashit.prepare key OpenSSL::HMAC.hexdigest(digest, key, text) end end |
.last_time ⇒ Object
29 30 31 |
# File 'lib/hashit/digests.rb', line 29 def last_time current_time - (30 * 60) end |
.matches?(hash, key, text) ⇒ Boolean
5 6 7 8 9 10 |
# File 'lib/hashit/verifier.rb', line 5 def matches? hash, key, text type = hash.split('|').first raise ArgumentError, "invalid hash" unless Hashit.respond_to?(type.to_sym) new_hash = Hashit.send type.to_sym, key, text new_hash == hash end |
.prepare(obj) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/hashit/prepare.rb', line 3 def prepare obj return obj if obj.is_a? String if obj.is_a? Array obj = prepare_array obj elsif obj.nil? raise ArgumentError, "Nil passed in as a text parameter" elsif obj.respond_to? :to_s obj = obj.to_s else raise ArgumentError, "Parameter #{obj} cannot be converted to string" end obj end |
.prepare_array(arr) ⇒ Object
19 20 21 22 23 |
# File 'lib/hashit/prepare.rb', line 19 def prepare_array arr arr.reduce("") do |str, el| str += prepare el end end |