Ver Fonte

AK: Use new simdutf option to add padding to Base64URL encodings

Timothy Flynn há 11 meses atrás
pai
commit
408532c910
1 ficheiros alterados com 3 adições e 11 exclusões
  1. 3 11
      AK/Base64.cpp

+ 3 - 11
AK/Base64.cpp

@@ -33,22 +33,14 @@ static ErrorOr<ByteBuffer> decode_base64_impl(StringView input, simdutf::base64_
 static ErrorOr<String> encode_base64_impl(StringView input, simdutf::base64_options options)
 static ErrorOr<String> encode_base64_impl(StringView input, simdutf::base64_options options)
 {
 {
     Vector<u8> output;
     Vector<u8> 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.characters_without_null_termination(),
         input.length(),
         input.length(),
         reinterpret_cast<char*>(output.data()),
         reinterpret_cast<char*>(output.data()),
         options);
         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);
     return String::from_utf8_without_validation(output);
 }
 }
 
 
@@ -69,7 +61,7 @@ ErrorOr<String> encode_base64(ReadonlyBytes input)
 
 
 ErrorOr<String> encode_base64url(ReadonlyBytes input)
 ErrorOr<String> encode_base64url(ReadonlyBytes input)
 {
 {
-    return encode_base64_impl(input, simdutf::base64_url);
+    return encode_base64_impl(input, simdutf::base64_url_with_padding);
 }
 }
 
 
 }
 }