module Paymax1::Sign
Public Class Methods
requestSign(method,header,path,query_string,request_data)
click to toggle source
请求消息签名
# File lib/paymax1/sign.rb, line 8 def requestSign (method,header,path,query_string,request_data) message = method+"\n" +path+ "\n" + query_string + "\n"+header[:nonce]+"\n"+header[:timestamp].to_s+"\n" + header[:Authorization]+"\n" + request_data.to_s return rsa_sign(message) end
responseSignVerify(header,response_data)
click to toggle source
响应消息验签
# File lib/paymax1/sign.rb, line 14 def responseSignVerify (header,response_data) message = header[:nonce].to_s+"\n"+header[:timestamp].to_s+"\n" + header[:authorization].to_s+"\n" + response_data.to_s return verify(message,header[:sign]) end
rsa_sign(for_sign_string)
click to toggle source
RSA签名
# File lib/paymax1/sign.rb, line 20 def rsa_sign (for_sign_string) #读取私钥文件 rsa_private_key_file = File.read( Config.settings[:rsa_private_key_path]) #转换为openssl密钥 openssl_key = OpenSSL::PKey::RSA.new rsa_private_key_file #使用openssl方法进行sha1签名digest(不能用sha256) digest = OpenSSL::Digest::SHA1.new signature = openssl_key.sign digest, for_sign_string.force_encoding("utf-8") #base64编码 signature = Base64.strict_encode64(signature) return signature end
verify(for_sign_string, signed_string)
click to toggle source
验签
# File lib/paymax1/sign.rb, line 34 def verify (for_sign_string, signed_string) #读取公钥文件 rsa_public_key_file = File.read( Config.settings[:paymax_rsa_public_key_path]) #转换为RSA对象 openssl_public = OpenSSL::PKey::RSA.new rsa_public_key_file #生成SHA1密钥串 digest = OpenSSL::Digest::SHA1.new #openssl验证签名 openssl_public.verify(digest, Base64.strict_decode64(signed_string), for_sign_string) end