Module: Cmbpay::Sign
- Defined in:
- lib/cmbpay/sign.rb
Constant Summary collapse
- CMBPAY_RSA_PUBLIC_KEY =
"-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDZs4l8Ez3F4MG0kF7RRSL+pn8M\nmxVE3nfdXzjx6d3rH8IfDbNvNRLS0X0b5iJnPyFO8sbbUo1Im4zX0M8XA0xnnviG\nyn5E6occiyUXJRgokphWb5BwaYdVhnLldctdimHoJTk3NFEQFav3guygR54i3tym\nrDc8lWtuG8EczVu8FwIDAQAB\n-----END PUBLIC KEY-----\n"
Class Method Summary collapse
- .generate(params, options = {}) ⇒ Object
- .params_to_string(params) ⇒ Object
- .verify?(params, options = {}) ⇒ Boolean
Class Method Details
.generate(params, options = {}) ⇒ Object
5 6 7 8 9 10 11 12 13 |
# File 'lib/cmbpay/sign.rb', line 5 def self.generate(params, ={}) key = .delete(:key) query = params.sort.map do |k, v| "#{k}=#{v}" end.compact.join('&') p query Digest::SHA256.hexdigest("#{query}&#{key || Cmbpay.key}") end |
.params_to_string(params) ⇒ Object
35 36 37 |
# File 'lib/cmbpay/sign.rb', line 35 def self.params_to_string(params) params.sort.map { |item| item.join('=') }.join('&') end |
.verify?(params, options = {}) ⇒ Boolean
24 25 26 27 28 29 30 31 32 33 |
# File 'lib/cmbpay/sign.rb', line 24 def self.verify?(params, = {}) params = Utils.stringify_keys(params) sign_type = params.delete('sign_type') sign = params.delete('sign') string = params_to_string(params['noticeData']) public_key = ['public_key'] || CMBPAY_RSA_PUBLIC_KEY RSA.verify?(public_key, string, sign) end |