Sha256: a2ac1bffcddfd4772dd06e66f265225f73595d702488aeb6cbdf4139b4aa002f

Contents?: true

Size: 946 Bytes

Versions: 12

Compression:

Stored size: 946 Bytes

Contents

require 'digest/md5'

module Ipizza::Provider
  class Nordea::AuthenticationResponse < Ipizza::AuthenticationResponse
    
    def initialize(params)
      @params = params
    end

    def verify(key_path)
      key = File.read(key_path).strip
      @valid = @params['B02K_MAC'] == Digest::MD5.hexdigest(mac_data_string(key)).upcase
    end
    
    def success?
      @valid && @params['B02K_CUSTID'].present?
    end
    
    def valid?
      @valid
    end
    
    def info_name
      valid? ? @params['B02K_CUSTNAME'] : ''
    end
    
    def info_social_security_id
      valid? ? @params['B02K_CUSTID'] : ''
    end
    
    private
    
    def mac_data_string(key)
      order = ['VERS', 'TIMESTMP', 'IDNBR', 'STAMP', 'CUSTNAME', 'KEYVERS', 'ALG', 'CUSTID', 'CUSTTYPE']
      
      datastr = order.inject('') do |memo, param|
        memo << @params["B02K_#{param}"].to_s << '&'
      end
      datastr << key << '&'
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
ipizza-1.0.0 lib/ipizza/provider/nordea/authentication_response.rb
ipizza-0.7.1 lib/ipizza/provider/nordea/authentication_response.rb
ipizza-0.6.1 lib/ipizza/provider/nordea/authentication_response.rb
ipizza-0.5.5 lib/ipizza/provider/nordea/authentication_response.rb
ipizza-0.5.4 lib/ipizza/provider/nordea/authentication_response.rb
ipizza-0.5.3 lib/ipizza/provider/nordea/authentication_response.rb
ipizza-0.5.2 lib/ipizza/provider/nordea/authentication_response.rb
ipizza-0.5.1 lib/ipizza/provider/nordea/authentication_response.rb
ipizza-0.5.0 lib/ipizza/provider/nordea/authentication_response.rb
ipizza-0.4.4 lib/ipizza/provider/nordea/authentication_response.rb
ipizza-0.4.3 lib/ipizza/provider/nordea/authentication_response.rb
ipizza-0.4.2 lib/ipizza/provider/nordea/authentication_response.rb