module WechatApp::UserInfo
Public Class Methods
data_valid?(raw_data, session_key, signature)
click to toggle source
# 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)
click to toggle source
# 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