method
decrypt
v8.1.1 -
Show latest stable
- Class:
ActiveSupport::MessageEncryptor
decrypt(encrypted_message)private
No documentation available.
# File activesupport/lib/active_support/message_encryptor.rb, line 295
def decrypt(encrypted_message)
cipher = new_cipher
encrypted_data, iv, auth_tag = extract_parts(encrypted_message)
# Currently the OpenSSL bindings do not raise an error if auth_tag is
# truncated, which would allow an attacker to easily forge it. See
# https://github.com/ruby/openssl/issues/63
if aead_mode? && auth_tag.bytesize != AUTH_TAG_LENGTH
throw :invalid_message_format, "truncated auth_tag"
end
cipher.decrypt
cipher.key = @secret
cipher.iv = iv
if aead_mode?
cipher.auth_tag = auth_tag
cipher.auth_data = ""
end
decrypted_data = cipher.update(encrypted_data)
decrypted_data << cipher.final
rescue OpenSSLCipherError => error
throw :invalid_message_format, error
end