Module: Adyen::HPP::Signature
Overview
The Signature module can sign and verify HMAC SHA-256 signatures for Hosted Payment Pages
Instance Method Summary collapse
-
#sign(params, shared_secret = nil) ⇒ Hash
Sign the parameters with the given shared secret.
-
#verify(params, shared_secret = nil) ⇒ Boolean
Verify the parameters with the given shared secret.
Instance Method Details
#sign(params, shared_secret = nil) ⇒ Hash
Sign the parameters with the given shared secret
15 16 17 18 19 20 |
# File 'lib/adyen/hpp/signature.rb', line 15 def sign(params, shared_secret = nil) shared_secret ||= params.delete['sharedSecret'] raise ArgumentError, "Cannot verify a signature without a shared secret" unless shared_secret sig = OpenSSL::HMAC.digest(OpenSSL::Digest.new('sha256'), Array(shared_secret).pack("H*"), string_to_sign(params)) params.merge('merchantSig' => Base64.encode64(sig).strip) end |
#verify(params, shared_secret = nil) ⇒ Boolean
Verify the parameters with the given shared secret
28 29 30 31 32 33 |
# File 'lib/adyen/hpp/signature.rb', line 28 def verify(params, shared_secret = nil) their_sig = params.delete('merchantSig') raise ArgumentError, "params must include 'merchantSig' for verification" if their_sig.empty? our_sig = sign(params, shared_secret)['merchantSig'] secure_compare(their_sig, our_sig) end |