Class: OmniAuth::Strategies::Nordea::Response

Inherits:
Message
  • Object
show all
Defined in:
lib/omniauth/strategies/nordea/response.rb

Constant Summary collapse

SIGNED_KEYS =
[
  'B02K_VERS',      # 0002 (standard), 0003 (with additional data) or 0004.
  'B02K_TIMESTMP',
  'B02K_IDNBR',
  'B02K_STAMP',
  'B02K_CUSTNAME',
  'B02K_KEYVERS',
  'B02K_ALG',       # 01 for md5, 02 for sha1
  'B02K_CUSTID',
  'B02K_CUSTTYPE',
  'B02K_MAC'
]

Constants inherited from Message

Message::ALGORITHM_NAMES

Instance Method Summary collapse

Methods inherited from Message

#each_pair, #initialize, #to_hash

Constructor Details

This class inherits a constructor from OmniAuth::Strategies::Nordea::Message

Instance Method Details

#validate!(mac) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 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