encrypted_cookie_store-instructure 1.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
| @@ -1,9 +1,9 @@ | |
| 1 1 | 
             
            Gem::Specification.new do |s|
         | 
| 2 2 | 
             
              s.name = %q{encrypted_cookie_store-instructure}
         | 
| 3 | 
            -
              s.version = "1.1. | 
| 3 | 
            +
              s.version = "1.1.1"
         | 
| 4 4 |  | 
| 5 5 | 
             
              s.authors = ["Cody Cutrer", "Jacob Fugal", "James Williams"]
         | 
| 6 | 
            -
              s.date = %q{2013- | 
| 6 | 
            +
              s.date = %q{2013-12-20}
         | 
| 7 7 | 
             
              s.extra_rdoc_files = [
         | 
| 8 8 | 
             
                "LICENSE.txt"
         | 
| 9 9 | 
             
              ]
         | 
| @@ -13,6 +13,8 @@ module ActionDispatch | |
| 13 13 | 
             
                  end
         | 
| 14 14 | 
             
                  self.data_cipher_type = "aes-128-cbc".freeze
         | 
| 15 15 |  | 
| 16 | 
            +
                  EXPIRE_AFTER_KEY = "encrypted_cookie_store.session_expire_after"
         | 
| 17 | 
            +
             | 
| 16 18 | 
             
                  OpenSSLCipherError = OpenSSL::Cipher.const_defined?(:CipherError) ? OpenSSL::Cipher::CipherError : OpenSSL::CipherError
         | 
| 17 19 |  | 
| 18 20 | 
             
                  def initialize(app, options = {})
         | 
| @@ -33,8 +35,17 @@ module ActionDispatch | |
| 33 35 | 
             
                    super(app, options)
         | 
| 34 36 | 
             
                  end
         | 
| 35 37 |  | 
| 38 | 
            +
                  def call(env)
         | 
| 39 | 
            +
                    @expire_after = env[EXPIRE_AFTER_KEY]
         | 
| 40 | 
            +
                    super
         | 
| 41 | 
            +
                  end
         | 
| 42 | 
            +
             | 
| 36 43 | 
             
                  private
         | 
| 37 44 |  | 
| 45 | 
            +
                  def expire_after(options={})
         | 
| 46 | 
            +
                    @expire_after || options[:expire_after]
         | 
| 47 | 
            +
                  end
         | 
| 48 | 
            +
             | 
| 38 49 | 
             
                  # overrides method in ActionDispatch::Session::CookieStore
         | 
| 39 50 | 
             
                  def unpacked_cookie_data(env)
         | 
| 40 51 | 
             
                    env['encrypted_cookie_store.cookie'] ||= begin
         | 
| @@ -81,7 +92,7 @@ module ActionDispatch | |
| 81 92 | 
             
                  end
         | 
| 82 93 |  | 
| 83 94 | 
             
                  def refresh_session?(env, options)
         | 
| 84 | 
            -
                    if options | 
| 95 | 
            +
                    if expire_after(options) && options[:refresh_interval] && time = timestamp(env)
         | 
| 85 96 | 
             
                      Time.now.utc.to_i > time + options[:refresh_interval]
         | 
| 86 97 | 
             
                    else
         | 
| 87 98 | 
             
                      false
         | 
| @@ -101,11 +112,11 @@ module ActionDispatch | |
| 101 112 | 
             
                      compressed_session_data = session_data
         | 
| 102 113 | 
             
                    end
         | 
| 103 114 | 
             
                    encrypted_session_data = @data_cipher.update(compressed_session_data) << @data_cipher.final
         | 
| 104 | 
            -
                    timestamp        = Time.now.utc.to_i if options | 
| 115 | 
            +
                    timestamp        = Time.now.utc.to_i if expire_after(options)
         | 
| 105 116 | 
             
                    digest           = OpenSSL::HMAC.digest(OpenSSL::Digest::Digest.new(@digest), @secret, session_data + timestamp.to_s)
         | 
| 106 117 |  | 
| 107 118 | 
             
                    result = "#{base64(iv)}#{compressed_session_data == session_data ? '.' : ' '}#{base64(encrypted_session_data)}.#{base64(digest)}"
         | 
| 108 | 
            -
                    result << ".#{base64([timestamp].pack('N'))}" if options | 
| 119 | 
            +
                    result << ".#{base64([timestamp].pack('N'))}" if expire_after(options)
         | 
| 109 120 | 
             
                    result
         | 
| 110 121 | 
             
                  end
         | 
| 111 122 |  | 
| @@ -125,8 +136,8 @@ module ActionDispatch | |
| 125 136 | 
             
                      session_data = @data_cipher.update(encrypted_session_data) << @data_cipher.final
         | 
| 126 137 | 
             
                      session_data = inflate(session_data) if compressed
         | 
| 127 138 | 
             
                      return nil unless digest == OpenSSL::HMAC.digest(OpenSSL::Digest::Digest.new(@digest), @secret, session_data + timestamp.to_s)
         | 
| 128 | 
            -
                      if options | 
| 129 | 
            -
                        return nil unless timestamp && Time.now.utc.to_i <= timestamp + options | 
| 139 | 
            +
                      if expire_after(options)
         | 
| 140 | 
            +
                        return nil unless timestamp && Time.now.utc.to_i <= timestamp + expire_after(options)
         | 
| 130 141 | 
             
                      end
         | 
| 131 142 |  | 
| 132 143 | 
             
                      loaded_data = Marshal.load(session_data) || nil
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: encrypted_cookie_store-instructure
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.1. | 
| 4 | 
            +
              version: 1.1.1
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -11,7 +11,7 @@ authors: | |
| 11 11 | 
             
            autorequire: 
         | 
| 12 12 | 
             
            bindir: bin
         | 
| 13 13 | 
             
            cert_chain: []
         | 
| 14 | 
            -
            date: 2013- | 
| 14 | 
            +
            date: 2013-12-20 00:00:00.000000000 Z
         | 
| 15 15 | 
             
            dependencies:
         | 
| 16 16 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 17 17 | 
             
              name: actionpack
         |