Skip to content

Commit ae40cf1

Browse files
committed
test: Add padding tests for Base32/Base64
1 parent e8cc790 commit ae40cf1

File tree

2 files changed

+38
-8
lines changed

2 files changed

+38
-8
lines changed

src/test/base32_tests.cpp

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,28 @@ BOOST_AUTO_TEST_CASE(base32_testvectors)
2929
BOOST_CHECK_MESSAGE(std::ranges::equal(*dec, vstrIn[i]), vstrOut[i]);
3030
}
3131

32+
BOOST_CHECK(!DecodeBase32("AWSX3VPPinvalid")); // invalid size
33+
BOOST_CHECK( DecodeBase32("AWSX3VPP")); // valid
34+
3235
// Decoding strings with embedded NUL characters should fail
33-
BOOST_CHECK(!DecodeBase32("invalid\0"s)); // correct size, invalid due to \0
34-
BOOST_CHECK(DecodeBase32("AWSX3VPP"s)); // valid
35-
BOOST_CHECK(!DecodeBase32("AWSX3VPP\0invalid"s)); // correct size, invalid due to \0
36-
BOOST_CHECK(!DecodeBase32("AWSX3VPPinvalid"s)); // invalid size
36+
BOOST_CHECK(!DecodeBase32("invalid\0"sv)); // correct size, invalid due to \0
37+
BOOST_CHECK(!DecodeBase32("AWSX3VPP\0invalid"sv)); // correct size, invalid due to \0
38+
}
39+
40+
BOOST_AUTO_TEST_CASE(base32_padding)
41+
{
42+
// Is valid without padding
43+
BOOST_CHECK_EQUAL(EncodeBase32("fooba"), "mzxw6ytb");
44+
45+
// Valid size
46+
BOOST_CHECK(!DecodeBase32("========"));
47+
BOOST_CHECK(!DecodeBase32("a======="));
48+
BOOST_CHECK( DecodeBase32("aa======"));
49+
BOOST_CHECK(!DecodeBase32("aaa====="));
50+
BOOST_CHECK( DecodeBase32("aaaa===="));
51+
BOOST_CHECK( DecodeBase32("aaaaa==="));
52+
BOOST_CHECK(!DecodeBase32("aaaaaa=="));
53+
BOOST_CHECK( DecodeBase32("aaaaaaa="));
3754
}
3855

3956
BOOST_AUTO_TEST_SUITE_END()

src/test/base64_tests.cpp

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,24 @@ BOOST_AUTO_TEST_CASE(base64_testvectors)
3636
BOOST_CHECK_EQUAL(EncodeBase64(in_s), out_exp);
3737
}
3838

39+
BOOST_CHECK(DecodeBase64("nQB/pZw=")); // valid
40+
3941
// Decoding strings with embedded NUL characters should fail
40-
BOOST_CHECK(!DecodeBase64("invalid\0"s));
41-
BOOST_CHECK(DecodeBase64("nQB/pZw="s));
42-
BOOST_CHECK(!DecodeBase64("nQB/pZw=\0invalid"s));
43-
BOOST_CHECK(!DecodeBase64("nQB/pZw=invalid\0"s));
42+
BOOST_CHECK(!DecodeBase64("invalid\0"sv)); // correct size, invalid due to \0
43+
BOOST_CHECK(!DecodeBase64("nQB/pZw=\0invalid"sv));
44+
BOOST_CHECK(!DecodeBase64("nQB/pZw=invalid\0"sv)); // invalid, padding only allowed at the end
45+
}
46+
47+
BOOST_AUTO_TEST_CASE(base64_padding)
48+
{
49+
// Is valid without padding
50+
BOOST_CHECK_EQUAL(EncodeBase64("foobar"), "Zm9vYmFy");
51+
52+
// Valid size
53+
BOOST_CHECK(!DecodeBase64("===="));
54+
BOOST_CHECK(!DecodeBase64("a==="));
55+
BOOST_CHECK( DecodeBase64("YQ=="));
56+
BOOST_CHECK( DecodeBase64("YWE="));
4457
}
4558

4659
BOOST_AUTO_TEST_SUITE_END()

0 commit comments

Comments
 (0)