Sha256: 4336c7e254e2ce671d6b69b6ed2dc534d72aa1c604cf07538e2c81087c0c317d

Contents?: true

Size: 1.04 KB

Versions: 4

Compression:

Stored size: 1.04 KB

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

    def authentication_info
      @authentication_info ||= Ipizza::Authentication.new(user_name: info_name, user_id: info_social_security_id)
    end

    private
    
    def mac_data_string(key)
      order = %w(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

4 entries across 4 versions & 1 rubygems

Version Path
ipizza-2.2.0 lib/ipizza/provider/nordea/authentication_response.rb
ipizza-2.1.0 lib/ipizza/provider/nordea/authentication_response.rb
ipizza-2.0.1 lib/ipizza/provider/nordea/authentication_response.rb
ipizza-2.0.0 lib/ipizza/provider/nordea/authentication_response.rb