diff options
Diffstat (limited to 'lib/rack/session/cookie.rb')
-rw-r--r-- | lib/rack/session/cookie.rb | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/lib/rack/session/cookie.rb b/lib/rack/session/cookie.rb index 618b1a0f..70ddadd6 100644 --- a/lib/rack/session/cookie.rb +++ b/lib/rack/session/cookie.rb @@ -6,6 +6,7 @@ require 'rack/request' require 'rack/response' require 'rack/session/abstract/id' require 'json' +require 'base64' module Rack @@ -51,11 +52,11 @@ module Rack # Encode session cookies as Base64 class Base64 def encode(str) - [str].pack('m') + ::Base64.encode64(str) end def decode(str) - str.unpack('m').first + ::Base64.decode64(str) end # Encode session cookies as Marshaled Base64 data @@ -139,9 +140,7 @@ module Rack session_data = request.cookies[@key] if @secrets.size > 0 && session_data - digest, session_data = session_data.reverse.split("--", 2) - digest.reverse! if digest - session_data.reverse! if session_data + session_data, _, digest = session_data.rpartition('--') session_data = nil unless digest_match?(session_data, digest) end |