Module: WechatApp::UserInfo
- Defined in:
- lib/wechat_app/user_info.rb
Defined Under Namespace
Classes: DecryptedDataFormatError
Class Method Summary
collapse
Class Method Details
.data_valid?(raw_data, session_key, signature) ⇒ Boolean
6
7
8
9
|
# File 'lib/wechat_app/user_info.rb', line 6
def data_valid?(raw_data, session_key, signature)
sign_str = "#{raw_data}#{session_key}"
Digest::SHA1.hexdigest(sign_str) == signature
end
|
.decrypt_data(encrypted_data, session_key, iv) ⇒ Object
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/wechat_app/user_info.rb', line 11
def decrypt_data(encrypted_data, session_key, iv)
encrypted = Base64.strict_decode64(encrypted_data)
decipher = OpenSSL::Cipher::AES128.new(:CBC)
decipher.decrypt
decipher.key = Base64.strict_decode64(session_key)
decipher.iv = Base64.strict_decode64(iv)
decrypted_data = decipher.update(encrypted) + decipher.final
begin
JSON.parse(decrypted_data)
rescue JSON::ParserError => e
msg = <<~MSG
decrypted_data parse error: #{e.message}
decrypted_data: #{decrypted_data}
MSG
raise DecryptedDataFormatError.new(msg)
end
end
|