weixin_message_encryptor 0.1.0 → 0.1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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.