Module: Paymax1::Sign

Defined in:
lib/paymax1/sign.rb

Class Method Summary collapse

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)
  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) ⇒ Object

响应消息验签



14
15
16
17
# 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) ⇒ 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