Skip to content

Commit

Permalink
deprecate Base64.encode64s from AS. Use Base64.strict_encode64 instead
Browse files Browse the repository at this point in the history
  • Loading branch information
nashby committed Dec 27, 2011
1 parent 1a77015 commit a19d0f5
Show file tree
Hide file tree
Showing 6 changed files with 15 additions and 9 deletions.
4 changes: 2 additions & 2 deletions actionpack/lib/action_controller/metal/http_authentication.rb
Expand Up @@ -145,7 +145,7 @@ def decode_credentials(request)
end

def encode_credentials(user_name, password)
"Basic #{ActiveSupport::Base64.encode64s("#{user_name}:#{password}")}"
"Basic #{ActiveSupport::Base64.strict_encode64("#{user_name}:#{password}")}"
end

def authentication_request(controller, realm)
Expand Down Expand Up @@ -289,7 +289,7 @@ def nonce(secret_key, time = Time.now)
t = time.to_i
hashed = [t, secret_key]
digest = ::Digest::MD5.hexdigest(hashed.join(":"))
ActiveSupport::Base64.encode64("#{t}:#{digest}").gsub("\n", '')
ActiveSupport::Base64.strict_encode64("#{t}:#{digest}")
end

# Might want a shorter timeout depending on whether the request
Expand Down
6 changes: 5 additions & 1 deletion activesupport/lib/active_support/base64.rb
Expand Up @@ -3,12 +3,16 @@
module ActiveSupport
Base64 = ::Base64

# *DEPRECATED*: Use +Base64.strict_encode64+ instead.
#
# Encodes the value as base64 without the newline breaks. This makes the base64 encoding readily usable as URL parameters
# or memcache keys without further processing.
#
# ActiveSupport::Base64.encode64s("Original unencoded string")
# # => "T3JpZ2luYWwgdW5lbmNvZGVkIHN0cmluZw=="
def Base64.encode64s(value)
encode64(value).gsub(/\n/, '')
ActiveSupport::Deprecation.warn "encode64s " \
"is deprecated. Use Base64.strict_encode64 instead", caller
strict_encode64(value)
end
end
2 changes: 1 addition & 1 deletion activesupport/lib/active_support/message_encryptor.rb
Expand Up @@ -56,7 +56,7 @@ def _encrypt(value)
encrypted_data = cipher.update(@serializer.dump(value))
encrypted_data << cipher.final

[encrypted_data, iv].map {|v| ActiveSupport::Base64.encode64s(v)}.join("--")
[encrypted_data, iv].map {|v| ActiveSupport::Base64.strict_encode64(v)}.join("--")
end

def _decrypt(encrypted_message)
Expand Down
4 changes: 2 additions & 2 deletions activesupport/lib/active_support/message_verifier.rb
Expand Up @@ -18,7 +18,7 @@ module ActiveSupport
# self.current_user = User.find(id)
# end
#
# By default it uses Marshal to serialize the message. If you want to use another
# By default it uses Marshal to serialize the message. If you want to use another
# serialization method, you can set the serializer attribute to something that responds
# to dump and load, e.g.:
#
Expand All @@ -44,7 +44,7 @@ def verify(signed_message)
end

def generate(value)
data = ActiveSupport::Base64.encode64s(@serializer.dump(value))
data = ActiveSupport::Base64.strict_encode64(@serializer.dump(value))
"#{data}--#{generate_digest(data)}"
end

Expand Down
6 changes: 4 additions & 2 deletions activesupport/test/core_ext/base64_ext_test.rb
Expand Up @@ -2,7 +2,9 @@

class Base64Test < Test::Unit::TestCase
def test_no_newline_in_encoded_value
assert_match(/\n/, ActiveSupport::Base64.encode64("oneverylongstringthatwouldnormallybesplitupbynewlinesbytheregularbase64"))
assert_no_match(/\n/, ActiveSupport::Base64.encode64s("oneverylongstringthatwouldnormallybesplitupbynewlinesbytheregularbase64"))
ActiveSupport::Deprecation.silence do
assert_match(/\n/, ActiveSupport::Base64.encode64("oneverylongstringthatwouldnormallybesplitupbynewlinesbytheregularbase64"))
assert_no_match(/\n/, ActiveSupport::Base64.encode64s("oneverylongstringthatwouldnormallybesplitupbynewlinesbytheregularbase64"))
end
end
end
2 changes: 1 addition & 1 deletion activesupport/test/message_encryptor_test.rb
Expand Up @@ -78,7 +78,7 @@ def assert_not_verified(value)
def munge(base64_string)
bits = ActiveSupport::Base64.decode64(base64_string)
bits.reverse!
ActiveSupport::Base64.encode64s(bits)
ActiveSupport::Base64.strict_encode64(bits)
end
end

Expand Down

0 comments on commit a19d0f5

Please sign in to comment.