summary refs log tree commit
path: root/lib/rack/session/cookie.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rack/session/cookie.rb')
-rw-r--r--lib/rack/session/cookie.rb9
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