From 408532c9102033c8bc8e32e61d3c146282b8c824 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Fri, 30 Aug 2024 09:41:01 -0400 Subject: [PATCH] AK: Use new simdutf option to add padding to Base64URL encodings --- AK/Base64.cpp | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/AK/Base64.cpp b/AK/Base64.cpp index 05691270f2c..b70425165e2 100644 --- a/AK/Base64.cpp +++ b/AK/Base64.cpp @@ -33,22 +33,14 @@ static ErrorOr decode_base64_impl(StringView input, simdutf::base64_ static ErrorOr encode_base64_impl(StringView input, simdutf::base64_options options) { Vector output; + TRY(output.try_resize(simdutf::base64_length_from_binary(input.length(), options))); - // simdutf does not append padding to base64url encodings. We use the default encoding option here to allocate room - // for the padding characters that we will later append ourselves if necessary. - TRY(output.try_resize(simdutf::base64_length_from_binary(input.length(), simdutf::base64_default))); - - auto size_written = simdutf::binary_to_base64( + simdutf::binary_to_base64( input.characters_without_null_termination(), input.length(), reinterpret_cast(output.data()), options); - if (options == simdutf::base64_url) { - for (size_t i = size_written; i < output.size(); ++i) - output[i] = '='; - } - return String::from_utf8_without_validation(output); } @@ -69,7 +61,7 @@ ErrorOr encode_base64(ReadonlyBytes input) ErrorOr encode_base64url(ReadonlyBytes input) { - return encode_base64_impl(input, simdutf::base64_url); + return encode_base64_impl(input, simdutf::base64_url_with_padding); } }