aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/message_encryptor.rb
diff options
context:
space:
mode:
authorjgls <joerg@joergleis.com>2013-04-16 15:01:23 +0300
committerJörg Leis <joerg@joergleis.com>2013-04-19 00:33:02 +0200
commit91a0a1156e622cad5221f33e852c19aa8eba6cbf (patch)
tree4f614ce1db2cff77dd9ccfaddf64c920333a92d6 /activesupport/lib/active_support/message_encryptor.rb
parent41a90dd459b791c9dcb532ac0c98400081b63edd (diff)
downloadrails-91a0a1156e622cad5221f33e852c19aa8eba6cbf.tar.gz
rails-91a0a1156e622cad5221f33e852c19aa8eba6cbf.tar.bz2
rails-91a0a1156e622cad5221f33e852c19aa8eba6cbf.zip
Reorganize MessageEncryptor
1) According to OpenSSL's documentation, cipher.random_iv must be called after cipher.encrypt and already sets the generated IV on the cipher. 2) OpenSSL::CipherError was moved to OpenSSL::Cipher::CipherError in Ruby 1.8.7. Since Rails 4 requires at least Ruby 1.9.3, support for the old location can be dropped.
Diffstat (limited to 'activesupport/lib/active_support/message_encryptor.rb')
-rw-r--r--activesupport/lib/active_support/message_encryptor.rb9
1 files changed, 4 insertions, 5 deletions
diff --git a/activesupport/lib/active_support/message_encryptor.rb b/activesupport/lib/active_support/message_encryptor.rb
index ce40a7d689..96025e7614 100644
--- a/activesupport/lib/active_support/message_encryptor.rb
+++ b/activesupport/lib/active_support/message_encryptor.rb
@@ -28,7 +28,7 @@ module ActiveSupport
end
class InvalidMessage < StandardError; end
- OpenSSLCipherError = OpenSSL::Cipher.const_defined?(:CipherError) ? OpenSSL::Cipher::CipherError : OpenSSL::CipherError
+ OpenSSLCipherError = OpenSSL::Cipher::CipherError
# Initialize a new MessageEncryptor. +secret+ must be at least as long as
# the cipher key size. For the default 'aes-256-cbc' cipher, this is 256
@@ -66,12 +66,11 @@ module ActiveSupport
def _encrypt(value)
cipher = new_cipher
- # Rely on OpenSSL for the initialization vector
- iv = cipher.random_iv
-
cipher.encrypt
cipher.key = @secret
- cipher.iv = iv
+
+ # Rely on OpenSSL for the initialization vector
+ iv = cipher.random_iv
encrypted_data = cipher.update(@serializer.dump(value))
encrypted_data << cipher.final