class ActionDispatch::Cookies::UpgradeLegacyHmacAesCbcCookieJar

UpgradeLegacyHmacAesCbcCookieJar is used by ActionDispatch::Session::CookieStore to upgrade cookies encrypted with AES-256-CBC with HMAC to AES-256-GCM

Public Class Methods

new(parent_jar) click to toggle source
Calls superclass method Object::new
# File actionpack/lib/action_dispatch/middleware/cookies.rb, line 641
def initialize(parent_jar)
  super

  secret = key_generator.generate_key(request.encrypted_cookie_salt || "")[0, ActiveSupport::MessageEncryptor.key_len]
  sign_secret = key_generator.generate_key(request.encrypted_signed_cookie_salt || "")

  @legacy_encryptor = ActiveSupport::MessageEncryptor.new(secret, sign_secret, cipher: "aes-256-cbc", digest: digest, serializer: ActiveSupport::MessageEncryptor::NullSerializer)
end

Public Instance Methods

decrypt_and_verify_legacy_encrypted_message(name, signed_message) click to toggle source
# File actionpack/lib/action_dispatch/middleware/cookies.rb, line 650
def decrypt_and_verify_legacy_encrypted_message(name, signed_message)
  deserialize(name, @legacy_encryptor.decrypt_and_verify(signed_message)).tap do |value|
    self[name] = { value: value }
  end
rescue ActiveSupport::MessageVerifier::InvalidSignature, ActiveSupport::MessageEncryptor::InvalidMessage
  nil
end

Private Instance Methods

parse(name, signed_message) click to toggle source
Calls superclass method
# File actionpack/lib/action_dispatch/middleware/cookies.rb, line 659
def parse(name, signed_message)
  super || decrypt_and_verify_legacy_encrypted_message(name, signed_message)
end