Sha256: dc135c9c4033042810703a18ad3bf07754e6a33dcb9f4be8fd7c4a1233a28647

Contents?: true

Size: 763 Bytes

Versions: 13

Compression:

Stored size: 763 Bytes

Contents

require 'digest/md5'

module Ipizza::Provider
  class Nordea::AuthenticationRequest < Ipizza::AuthenticationRequest
    
    attr_accessor :params
    attr_accessor :service_url

    def sign(key_path)
      key = File.read(key_path).strip
      params['MAC'] = Digest::MD5.hexdigest(mac_data_string(key)).upcase
    end
    
    def request_params
      params.inject(Hash.new) { |h, v| h["A01Y_#{v.first}"] = v.last; h }
    end
    
    private
    
    def mac_data_string(key)
      order = ['ACTION_ID', 'VERS', 'RCVID', 'LANGCODE', 'STAMP', 'IDTYPE', 'RETLINK', 'CANLINK', 'REJLINK', 'KEYVERS', 'ALG']
      
      datastr = order.inject('') do |memo, param|
        memo << params[param].to_s << '&'
      end
      datastr << key << '&'
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

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