class OmniAuth::Strategies::Nordea::Response

Constants

SIGNED_KEYS

Public Instance Methods

validate!(mac) click to toggle source
# File lib/omniauth/strategies/nordea/response.rb, line 18
def validate!(mac)
  received_digest = @hash['B02K_MAC']

  h = @hash.dup
  h['B02K_MAC'] = mac

  digester = find_digester(ALGORITHM_NAMES[h['B02K_ALG']])
  signable_string = SIGNED_KEYS.map { |k| CGI.escape(h[k]) }.join("&") + '&'
  expected_digest = digester.hexdigest(signable_string).upcase

  if expected_digest != received_digest
    raise ValidationError, "Digest mismatch"
  end

  self
end