summary refs log tree commit
diff options
context:
space:
mode:
-rw-r--r--lib/rack/auth/basic.rb3
-rw-r--r--lib/rack/auth/digest/nonce.rb5
-rw-r--r--lib/rack/session/cookie.rb5
3 files changed, 8 insertions, 5 deletions
diff --git a/lib/rack/auth/basic.rb b/lib/rack/auth/basic.rb
index 95bbafc4..d334939c 100644
--- a/lib/rack/auth/basic.rb
+++ b/lib/rack/auth/basic.rb
@@ -2,6 +2,7 @@
 
 require 'rack/auth/abstract/handler'
 require 'rack/auth/abstract/request'
+require 'base64'
 
 module Rack
   module Auth
@@ -47,7 +48,7 @@ module Rack
         end
 
         def credentials
-          @credentials ||= params.unpack("m*").first.split(':', 2)
+          @credentials ||= Base64.decode64(params).split(':', 2)
         end
 
         def username
diff --git a/lib/rack/auth/digest/nonce.rb b/lib/rack/auth/digest/nonce.rb
index 089bb6f4..3216d973 100644
--- a/lib/rack/auth/digest/nonce.rb
+++ b/lib/rack/auth/digest/nonce.rb
@@ -1,6 +1,7 @@
 # frozen_string_literal: true
 
 require 'digest/md5'
+require 'base64'
 
 module Rack
   module Auth
@@ -20,7 +21,7 @@ module Rack
         end
 
         def self.parse(string)
-          new(*string.unpack("m*").first.split(' ', 2))
+          new(*Base64.decode64(string).split(' ', 2))
         end
 
         def initialize(timestamp = Time.now, given_digest = nil)
@@ -28,7 +29,7 @@ module Rack
         end
 
         def to_s
-          ["#{@timestamp} #{digest}"].pack("m*").strip
+          Base64.encode64("#{@timestamp} #{digest}").strip
         end
 
         def digest
diff --git a/lib/rack/session/cookie.rb b/lib/rack/session/cookie.rb
index 3c067d7b..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