weixin_message_encryptor 0.1.0 → 0.1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 078898dc51a1a01e6f218666e45cb126ba076b54
4
- data.tar.gz: af1e9443ae0b895c73c37e9f813d4f63cb547a3c
3
+ metadata.gz: b6049b7499b256402b46ba5a334a17da04973d3d
4
+ data.tar.gz: 50e24af04daa67cf41f71a9bb5c0eb4ef4d2c7e5
5
5
  SHA512:
6
- metadata.gz: f6940aff753c0d4488bd1b4df4147e0ba9e1f5e84f249a4e064f2f638aff1735ad59192f8f6ab220fa0d0aacfef10ef73458635c607f64cbc121f2b04747738b
7
- data.tar.gz: ba660926e5f548e659a7c74242a5fdedaf89ae116125df37f7cf415b3c392d9c267a3d76b5bf363eeb945d474621ad0be039c984c2a3efdfb5f51345388d7457
6
+ metadata.gz: 2020b76bcd5a7af06b99e81981b1b3e449d541838010c46dc9d3f920b76dbf4a1a5d813f58255f0229f588899c2a361c999f254f17f58088b4f47cd554c2a848
7
+ data.tar.gz: 7078ee2f92369d1929b2e32a07cc33ca9806ad4726f07cb329cb47ea0f6010758a731ea2e19590e9b1868a71044d908839a5cda36d6ffc7959a637798b712e91
@@ -17,27 +17,19 @@ class WeixinMessageEncryptor
17
17
  end
18
18
 
19
19
  def encrypt(payload)
20
- encrypted_payload = aes_encrypt(payload).delete("\n")
21
- encrypted_message(encrypted_payload)
20
+ aes_encrypt(payload).delete("\n")
22
21
  end
23
22
 
24
- def decrypt(payload)
25
- encrypted_payload = payload['echostr'] || payload['xml']['Encrypt']
26
- sign = generate_signature encrypted_payload, payload['timestamp'], payload['nonce']
27
- message, app_id = decrypt_payload encrypted_payload
28
- return message, app_id, sign
29
- end
30
-
31
- private
32
-
33
- def aes_key
34
- @aes_key ||= Base64.decode64 encoding_aes_key + '='
35
- end
36
-
37
- def encrypted_message(encrypted_payload)
23
+ def encrypt_with_signature(payload)
24
+ encrypted_payload = encrypt(payload)
38
25
  timestamp = Time.now.to_i.to_s
39
26
  nonce = SecureRandom.hex(8)
40
27
  signature = generate_signature(encrypted_payload, timestamp, nonce)
28
+ return [encrypted_payload, timestamp, nonce, signature]
29
+ end
30
+
31
+ def encrypt_to_xml(payload)
32
+ encrypted_payload, timestamp, nonce, signature = encrypt_with_signature(payload)
41
33
  <<XML
42
34
  <xml>
43
35
  <Encrypt><![CDATA[#{encrypted_payload}]]></Encrypt>
@@ -48,6 +40,19 @@ class WeixinMessageEncryptor
48
40
  XML
49
41
  end
50
42
 
43
+ def decrypt(payload)
44
+ encrypted_payload = payload['echostr'] || payload['xml']['Encrypt']
45
+ sign = generate_signature encrypted_payload, payload['timestamp'], payload['nonce']
46
+ message, app_id = decrypt_payload encrypted_payload
47
+ return message, app_id, sign
48
+ end
49
+
50
+ private
51
+
52
+ def aes_key
53
+ @aes_key ||= Base64.decode64 encoding_aes_key + '='
54
+ end
55
+
51
56
  def decrypt_payload(encrypted_payload)
52
57
  text = Base64.decode64 encrypted_payload
53
58
  text = handle_cipher(:decrypt, text)
@@ -1,3 +1,3 @@
1
1
  class WeixinMessageEncryptor
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.0.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: weixin_message_encryptor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - FENG Zhichao
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-02-02 00:00:00.000000000 Z
11
+ date: 2018-02-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -119,7 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
119
  version: '0'
120
120
  requirements: []
121
121
  rubyforge_project:
122
- rubygems_version: 2.4.8
122
+ rubygems_version: 2.6.14
123
123
  signing_key:
124
124
  specification_version: 4
125
125
  summary: A simple tool to decrypt and encrypt Weixin messages.