Class: Payflow::Webhooks::SignatureVerifier
- Inherits:
-
Object
- Object
- Payflow::Webhooks::SignatureVerifier
- Defined in:
- lib/payflow/webhooks/signature_verifier.rb
Class Method Summary collapse
- .extract_stripe_parts(header) ⇒ Object
- .verify_stripe(payload:, signature_header:, secret:) ⇒ Object
Instance Method Summary collapse
-
#initialize(provider:, request:) ⇒ SignatureVerifier
constructor
A new instance of SignatureVerifier.
- #valid? ⇒ Boolean
Constructor Details
#initialize(provider:, request:) ⇒ SignatureVerifier
Returns a new instance of SignatureVerifier.
6 7 8 9 |
# File 'lib/payflow/webhooks/signature_verifier.rb', line 6 def initialize(provider:, request:) @provider = provider.to_sym @request = request end |
Class Method Details
.extract_stripe_parts(header) ⇒ Object
33 34 35 36 |
# File 'lib/payflow/webhooks/signature_verifier.rb', line 33 def self.extract_stripe_parts(header) parts = header.split(",").to_h { |part| part.split("=", 2) } [parts["t"], parts["v1"]] end |
.verify_stripe(payload:, signature_header:, secret:) ⇒ Object
22 23 24 25 26 27 28 29 30 31 |
# File 'lib/payflow/webhooks/signature_verifier.rb', line 22 def self.verify_stripe(payload:, signature_header:, secret:) return false if secret.blank? || signature_header.blank? , signature = extract_stripe_parts(signature_header) return false unless && signature signed_payload = "#{}.#{payload}" expected = OpenSSL::HMAC.hexdigest("SHA256", secret, signed_payload) ActiveSupport::SecurityUtils.secure_compare(expected, signature) end |
Instance Method Details
#valid? ⇒ Boolean
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/payflow/webhooks/signature_verifier.rb', line 11 def valid? case @provider when :asaas verify_asaas when :stripe verify_stripe else false end end |