Module: Meowth::Util
- Defined in:
- lib/meowth/util.rb
Class Method Summary collapse
- .decrypt(ciper_text) ⇒ Object
- .encrypt(plain_text) ⇒ Object
- .encrypt_pin(pin, card) ⇒ Object
-
.sign(params) ⇒ Object
请求报文签名(sha1摘要算法) 插入certId字段,计算签名,再插入签名,最后返回整个请求报文.
-
.verify(params) ⇒ Object
对响应报文签名验证(sha1摘要算法).
Class Method Details
.decrypt(ciper_text) ⇒ Object
49 50 51 52 |
# File 'lib/meowth/util.rb', line 49 def self.decrypt(ciper_text) private_key = Meowth::Config.sign_cert_private_key private_key.private_decrypt(Base64.strict_decode64(ciper_text)) end |
.encrypt(plain_text) ⇒ Object
44 45 46 47 |
# File 'lib/meowth/util.rb', line 44 def self.encrypt(plain_text) public_key = Meowth::Config.encrypt_cert_public_key Base64.strict_encode64(public_key.public_encrypt(plain_text)) end |
.encrypt_pin(pin, card) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/meowth/util.rb', line 32 def self.encrypt_pin(pin, card) len = "%02d" % pin.length tmp = len + pin + "F" * (14 - pin.length) pin_byte = [tmp].pack("H*") card_no = "0" * (13 - card.length) + card tmp = "0000" + card_no[0..11] card_byte = [tmp].pack("H*") c = pin_byte.bytes.zip(card_byte.bytes).map{ |a, b| a ^ b }.pack('c*') public_key = Meowth::Config.encrypt_cert_public_key Base64.strict_encode64(public_key.public_encrypt(c)) end |
.sign(params) ⇒ Object
请求报文签名(sha1摘要算法) 插入certId字段,计算签名,再插入签名,最后返回整个请求报文
11 12 13 14 15 16 17 18 19 |
# File 'lib/meowth/util.rb', line 11 def self.sign(params) params[Meowth::Constant::CERT_ID] = Meowth::Config.sign_cert_id data = params.sort.map{ |k, v| "#{k}=#{v}" }.join('&') digest = Digest::SHA1.hexdigest(data) key = Meowth::Config.sign_cert_private_key sign = Base64.strict_encode64(key.sign('sha1', digest)) params[Meowth::Constant::SIGNATURE] = sign params end |
.verify(params) ⇒ Object
对响应报文签名验证(sha1摘要算法)
22 23 24 25 26 27 28 29 |
# File 'lib/meowth/util.rb', line 22 def self.verify(params) sign = params[Meowth::Constant::SIGNATURE] params.delete(Meowth::Constant::SIGNATURE) data = params.sort.map{ |k, v| "#{k}=#{v}" }.join('&') digest = Digest::SHA1.hexdigest(data) key = Meowth::Config.verify_sign_cert_public_key key.verify('sha1', Base64.strict_decode64(sign), digest) end |