Class: MoneyMover::Dwolla::RequestSignatureValidator

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Model
Defined in:
lib/money_mover/dwolla/request_signature_validator.rb

Instance Method Summary collapse

Constructor Details

#initialize(request_body, request_headers, ach_config = Config.new) ⇒ RequestSignatureValidator



7
8
9
10
11
# File 'lib/money_mover/dwolla/request_signature_validator.rb', line 7

def initialize(request_body, request_headers, ach_config = Config.new)
  @request_body = request_body
  @ach_request_signature = request_headers['HTTP_X_REQUEST_SIGNATURE_SHA_256']
  @ach_webhook_secret_key = ach_config.webhook_secret_key
end

Instance Method Details

#signed_bodyObject



19
20
21
# File 'lib/money_mover/dwolla/request_signature_validator.rb', line 19

def signed_body
  OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new("sha256"), @ach_webhook_secret_key, @request_body.string)
end

#valid_request_signatureObject



13
14
15
16
17
# File 'lib/money_mover/dwolla/request_signature_validator.rb', line 13

def valid_request_signature
  unless @ach_request_signature && Rack::Utils.secure_compare(signed_body, @ach_request_signature)
    errors.add :base, "Request Signature Invalid"
  end
end