1 //! URL-safe Base64 tests
6 /// URL-safe Base64 with `=` padding
9 use base64ct
::Base64Url
;
11 const TEST_VECTORS
: &[TestVector
] = &[
12 TestVector { raw: b"", b64: "" }
,
22 raw
: b
"\x01\x02\x03\x04",
26 raw
: b
"\xAD\xAD\xAD\xAD\xAD",
30 raw
: b
"\xFF\xEF\xFE\xFF\xEF\xFE",
34 raw
: b
"\xFF\xFF\xFF\xFF\xFF",
38 raw
: b
"\x40\xC1\x3F\xBD\x05\x4C\x72\x2A\xA3\xC2\xF2\x11\x73\xC0\x69\xEA\
39 \x49\x7D\x35\x29\x6B\xCC\x24\x65\xF6\xF9\xD0\x41\x08\x7B\xD7\xA9",
40 b64
: "QME_vQVMciqjwvIRc8Bp6kl9NSlrzCRl9vnQQQh716k=",
43 raw
: b
"\x00\x10\x83\x10Q\x87 \x92\x8B0\xD3\x8FA\x14\x93QU\x97a\x96\x9Bq\
44 \xD7\x9F\x82\x18\xA3\x92Y\xA7\xA2\x9A\xAB\xB2\xDB\xAF\xC3\x1C\xB3\
46 b64
: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_AA",
50 impl_tests
!(Base64Url
);
53 fn reject_trailing_whitespace() {
54 let input
= "QME/vQVMciqjwvIRc8Bp6kl9NSlrzCRl9vnQQQh716k\n";
55 let mut buf
= [0u8; 1024];
57 Base64Url
::decode(input
, &mut buf
),
58 Err(Error
::InvalidEncoding
)
63 /// URL-safe Base64 *without* padding
66 use base64ct
::Base64UrlUnpadded
;
68 const TEST_VECTORS
: &[TestVector
] = &[
69 TestVector { raw: b"", b64: "" }
,
79 raw
: b
"\x01\x02\x03\x04",
83 raw
: b
"\xAD\xAD\xAD\xAD\xAD",
87 raw
: b
"\xFF\xEF\xFE\xFF\xEF\xFE",
91 raw
: b
"\xFF\xFF\xFF\xFF\xFF",
95 raw
: b
"\x40\xC1\x3F\xBD\x05\x4C\x72\x2A\xA3\xC2\xF2\x11\x73\xC0\x69\xEA\
96 \x49\x7D\x35\x29\x6B\xCC\x24\x65\xF6\xF9\xD0\x41\x08\x7B\xD7\xA9",
97 b64
: "QME_vQVMciqjwvIRc8Bp6kl9NSlrzCRl9vnQQQh716k",
100 raw
: b
"\x00\x10\x83\x10Q\x87 \x92\x8B0\xD3\x8FA\x14\x93QU\x97a\x96\x9Bq\
101 \xD7\x9F\x82\x18\xA3\x92Y\xA7\xA2\x9A\xAB\xB2\xDB\xAF\xC3\x1C\xB3\
103 b64
: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_AA",
107 impl_tests
!(Base64UrlUnpadded
);
110 fn reject_trailing_whitespace() {
111 let input
= "QME/vQVMciqjwvIRc8Bp6kl9NSlrzCRl9vnQQQh716k\n";
112 let mut buf
= [0u8; 1024];
114 Base64UrlUnpadded
::decode(input
, &mut buf
),
115 Err(Error
::InvalidEncoding
)
120 fn unpadded_reject_trailing_equals() {
121 let input
= "QME_vQVMciqjwvIRc8Bp6kl9NSlrzCRl9vnQQQh716k=";
122 let mut buf
= [0u8; 1024];
124 Base64UrlUnpadded
::decode(input
, &mut buf
),
125 Err(Error
::InvalidEncoding
)