class MoneyMover::Dwolla::RequestSignatureValidator

Public Class Methods

new(request_body, request_headers, ach_config = Config.new) click to toggle source
# 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

Public Instance Methods

signed_body() click to toggle source
# 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_signature() click to toggle source
# 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