Module: Wajub::Crypto

Defined in:
lib/wajub/crypto.rb

Class Method Summary collapse

Class Method Details

.hmac_sha256(key, data) ⇒ Object



9
10
11
# File 'lib/wajub/crypto.rb', line 9

def hmac_sha256(key, data)
  OpenSSL::HMAC.hexdigest('SHA256', key, data)
end

.timing_safe_equal(a, b) ⇒ Object



13
14
15
16
17
18
19
20
21
# File 'lib/wajub/crypto.rb', line 13

def timing_safe_equal(a, b)
  return false unless a.bytesize == b.bytesize

  l = a.unpack('C*')
  r = b.unpack('C*')
  result = 0
  l.zip(r) { |x, y| result |= x ^ y }
  result.zero?
end