Module: AllinpayCnp::Signature
- Defined in:
- lib/allinpay_cnp/signature.rb
Class Method Summary collapse
- .build_sign_string(params) ⇒ Object
- .sign(params, private_key) ⇒ Object
- .verify(params, public_key) ⇒ Object
Class Method Details
.build_sign_string(params) ⇒ Object
25 26 27 28 29 30 31 32 |
# File 'lib/allinpay_cnp/signature.rb', line 25 def build_sign_string(params) params .transform_keys(&:to_s) .reject { |k, v| k == 'sign' || v.nil? || v.to_s.strip.empty? } .sort_by { |k, _| k } .map { |k, v| "#{k}=#{v.to_s.strip}" } .join('&') end |
.sign(params, private_key) ⇒ Object
9 10 11 12 |
# File 'lib/allinpay_cnp/signature.rb', line 9 def sign(params, private_key) sign_string = build_sign_string(params) rsa_sign(sign_string, private_key) end |
.verify(params, public_key) ⇒ Object
14 15 16 17 18 19 20 21 22 23 |
# File 'lib/allinpay_cnp/signature.rb', line 14 def verify(params, public_key) params = params.transform_keys(&:to_s) signature = params.delete('sign') return false if signature.nil? || signature.empty? sign_string = build_sign_string(params) rsa_verify(sign_string, signature, public_key) rescue OpenSSL::PKey::PKeyError, OpenSSL::OpenSSLError false end |