class Oschadbank::MacBuilder

Public Class Methods

new(request_type, mac_key, request_params) click to toggle source
# File lib/oschadbank/mac_builder.rb, line 5
def initialize(request_type, mac_key, request_params)
  @request_type = request_type
  @mac_key = mac_key
  @request_params = request_params

  @request_type = :auth if @request_type == :pre_auth
end

Public Instance Methods

build() click to toggle source
# File lib/oschadbank/mac_builder.rb, line 13
def build
  params_order = MAC_PARAMS_ORDER[@request_type]
  return unless params_order

  params_str = join_params(@request_params, params_order)

  digest = OpenSSL::Digest.new('sha1')
  OpenSSL::HMAC.hexdigest(digest, packed_key, params_str)
end

Private Instance Methods

join_params(params, params_order) click to toggle source
# File lib/oschadbank/mac_builder.rb, line 29
def join_params(params, params_order)
  parts = params_order.map do |param|
    value = params[param].to_s
    if value.empty?
      '-'
    else
      "#{value.length}#{value}"
    end
  end

  parts.join
end
packed_key() click to toggle source
# File lib/oschadbank/mac_builder.rb, line 25
def packed_key
  [@mac_key].pack('H*')
end