From 28dc076764d1e11e242d6e4da5a32dc5e15fb7fb Mon Sep 17 00:00:00 2001 From: Andrew Kaster Date: Thu, 21 Mar 2024 18:51:07 -0600 Subject: [PATCH] LibWeb: Use a forgiving base64url encoding for JWK export --- Userland/Libraries/LibWeb/Crypto/CryptoAlgorithms.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Userland/Libraries/LibWeb/Crypto/CryptoAlgorithms.cpp b/Userland/Libraries/LibWeb/Crypto/CryptoAlgorithms.cpp index a66507a78c8..3577834888e 100644 --- a/Userland/Libraries/LibWeb/Crypto/CryptoAlgorithms.cpp +++ b/Userland/Libraries/LibWeb/Crypto/CryptoAlgorithms.cpp @@ -83,7 +83,12 @@ ErrorOr base64_url_uint_encode(::Crypto::UnsignedBigInteger integer) for (size_t i = 0; i < data_size; ++i) byte_swapped_data.append(data_slice[data_size - i - 1]); - return encode_base64(byte_swapped_data); + auto encoded = TRY(encode_base64url(byte_swapped_data)); + + // FIXME: create a version of encode_base64url that omits padding bytes + if (auto first_padding_byte = encoded.find_byte_offset('='); first_padding_byte.has_value()) + return encoded.substring_from_byte_offset(0, first_padding_byte.value()); + return encoded; } AlgorithmParams::~AlgorithmParams() = default;