Module: Paymax1::Sign
- Defined in:
- lib/paymax1/sign.rb
Class Method Summary collapse
-
.requestSign(method, header, path, query_string, request_data) ⇒ Object
请求消息签名.
-
.responseSignVerify(header, response_data) ⇒ Object
响应消息验签.
-
.rsa_sign(for_sign_string) ⇒ Object
RSA签名.
-
.verify(for_sign_string, signed_string) ⇒ Object
验签.
Class Method Details
.requestSign(method, header, path, query_string, request_data) ⇒ Object
请求消息签名
8 9 10 11 |
# File 'lib/paymax1/sign.rb', line 8 def requestSign (method,header,path,query_string,request_data) = 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() end |
.responseSignVerify(header, response_data) ⇒ Object
响应消息验签
14 15 16 17 |
# File 'lib/paymax1/sign.rb', line 14 def responseSignVerify (header,response_data) = header[:nonce].to_s+"\n"+header[:timestamp].to_s+"\n" + header[:authorization].to_s+"\n" + response_data.to_s return verify(,header[:sign]) end |
.rsa_sign(for_sign_string) ⇒ Object
RSA签名
20 21 22 23 24 25 26 27 28 29 30 31 |
# 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) ⇒ Object
验签
34 35 36 37 38 39 40 41 42 43 |
# 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 |