update master-with-bazel from master branch

This commit is contained in:
BoringSSL Robot
2024-05-15 20:19:59 +00:00
2 changed files with 27 additions and 4 deletions
+4
View File
@@ -307,6 +307,10 @@ static int base64_decode_quad(uint8_t *out, size_t *out_num_bytes,
(in[2] == '=') << 1 |
(in[3] == '=');
// In presence of padding, the lowest bits of v are unused. Canonical encoding
// (RFC 4648, section 3.5) requires that these bits all be set to zero. Common
// PEM parsers accept noncanonical base64, adding to the malleability of the
// format. This decoder follows OpenSSL's and Go's PEM parsers and accepts it.
switch (padding_pattern) {
case 0:
// The common case of no padding.
+23 -4
View File
@@ -45,8 +45,8 @@ struct Base64TestVector {
const char *encoded;
};
// Test vectors from RFC 4648.
static const Base64TestVector kTestVectors[] = {
// Test vectors from RFC 4648, section 10.
{canonical, "", ""},
{canonical, "f", "Zg==\n"},
{canonical, "fo", "Zm8=\n"},
@@ -54,12 +54,31 @@ static const Base64TestVector kTestVectors[] = {
{canonical, "foob", "Zm9vYg==\n"},
{canonical, "fooba", "Zm9vYmE=\n"},
{canonical, "foobar", "Zm9vYmFy\n"},
{valid, "foobar", "Zm9vYmFy\n\n"},
{valid, "foobar", " Zm9vYmFy\n\n"},
{valid, "foobar", " Z m 9 v Y m F y\n\n"},
{invalid, "", "Zm9vYmFy=\n"},
{invalid, "", "Zm9vYmFy==\n"},
{invalid, "", "Zm9vYmFy===\n"},
// valid non-canonical encodings due to arbitrary whitespace
{valid, "foobar", "Zm9vYmFy\n\n"},
{valid, "foobar", " Zm9vYmFy\n\n"},
{valid, "foobar", " Z m 9 v Y m F y\n\n"},
{valid, "foobar", "Zm9vYmFy\r\n"},
// The following "valid" encodings are arguably invalid, but they are
// commonly accepted by parsers, in particular by OpenSSL.
{valid, "v", "dv==\n"},
{canonical, "w", "dw==\n"},
{valid, "w", "dx==\n"},
{valid, "w", "d+==\n"},
{valid, "w", "d/==\n"},
{invalid, "", "d===\n"},
{canonical, "w`", "d2A=\n"},
{valid, "w`", "d2B=\n"},
{valid, "w`", "d2C=\n"},
{valid, "w`", "d2D=\n"},
{canonical, "wa", "d2E=\n"},
{invalid, "", "Z"},
{invalid, "", "Z\n"},
{invalid, "", "ab!c"},