diff --git a/lib/std/base64.zig b/lib/std/base64.zig index 3963436982..9e9f82e2bd 100644 --- a/lib/std/base64.zig +++ b/lib/std/base64.zig @@ -39,13 +39,33 @@ pub const standard = Codecs{ .DecoderUnsafe = Base64DecoderUnsafe.init(standard_alphabet_chars, '='), }; +/// Standard Base64 codecs, without padding +pub const standard_no_pad = Codecs{ + .alphabet_chars = standard_alphabet_chars, + .pad_char = null, + .decoderWithIgnore = standardBase64DecoderWithIgnore, + .Encoder = Base64Encoder.init(standard_alphabet_chars, null), + .Decoder = Base64Decoder.init(standard_alphabet_chars, null), + .DecoderUnsafe = Base64DecoderUnsafe.init(standard_alphabet_chars, null), +}; + pub const url_safe_alphabet_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".*; fn urlSafeBase64DecoderWithIgnore(ignore: []const u8) Base64DecoderWithIgnore { return Base64DecoderWithIgnore.init(url_safe_alphabet_chars, null, ignore); } -/// URL-safe Base64 codecs, without padding +/// URL-safe Base64 codecs, with padding pub const url_safe = Codecs{ + .alphabet_chars = url_safe_alphabet_chars, + .pad_char = '=', + .decoderWithIgnore = urlSafeBase64DecoderWithIgnore, + .Encoder = Base64Encoder.init(url_safe_alphabet_chars, '='), + .Decoder = Base64Decoder.init(url_safe_alphabet_chars, '='), + .DecoderUnsafe = Base64DecoderUnsafe.init(url_safe_alphabet_chars, '='), +}; + +/// URL-safe Base64 codecs, without padding +pub const url_safe_no_pad = Codecs{ .alphabet_chars = url_safe_alphabet_chars, .pad_char = null, .decoderWithIgnore = urlSafeBase64DecoderWithIgnore, @@ -378,10 +398,10 @@ test "base64" { comptime testAllApis(standard, "comptime", "Y29tcHRpbWU=") catch unreachable; } -test "base64 url_safe" { +test "base64 url_safe_no_pad" { @setEvalBranchQuota(8000); - testBase64UrlSafe() catch unreachable; - comptime testAllApis(url_safe, "comptime", "Y29tcHRpbWU") catch unreachable; + testBase64UrlSafeNoPad() catch unreachable; + comptime testAllApis(url_safe_no_pad, "comptime", "Y29tcHRpbWU") catch unreachable; } fn testBase64() !void { @@ -420,8 +440,8 @@ fn testBase64() !void { try testNoSpaceLeftError(codecs, "AAAAAA=="); } -fn testBase64UrlSafe() !void { - const codecs = url_safe; +fn testBase64UrlSafeNoPad() !void { + const codecs = url_safe_no_pad; try testAllApis(codecs, "", ""); try testAllApis(codecs, "f", "Zg");