authorgravatar for sorairolake@protonmail.chShun Sakai <sorairolake@protonmail.ch> 2025-03-23 10:20:31+09:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-03-24 15:31:58+01:00
logf062ec2a1a9d51c81f25d447fadaabfb0765c770
tree95690248df8649a55785926a976552e48702047f
parenta7cfc23e5a44f980c12bb686450fdd9e74ca958d
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

docs(std.base64): Add references to RFC 4648

There are multiple implementations of Base64, but `std.base64` appears to be based on RFC 4648, so we clarify that it is based on RFC 4648.

1 files changed, 14 insertions(+), 5 deletions(-)

lib/std/base64.zig+14-5
......@@ -1,4 +1,5 @@
1//! Base64 encoding/decoding.
1//! Base64 encoding/decoding as specified by
2//! [RFC 4648](https://datatracker.ietf.org/doc/html/rfc4648).
23
34const std = @import("std.zig");
45const assert = std.debug.assert;
......@@ -24,12 +25,15 @@ pub const Codecs = struct {
2425 Decoder: Base64Decoder,
2526};
2627
28/// The Base64 alphabet defined in
29/// [RFC 4648 section 4](https://datatracker.ietf.org/doc/html/rfc4648#section-4).
2730pub const standard_alphabet_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".*;
2831fn standardBase64DecoderWithIgnore(ignore: []const u8) Base64DecoderWithIgnore {
2932 return Base64DecoderWithIgnore.init(standard_alphabet_chars, '=', ignore);
3033}
3134
32/// Standard Base64 codecs, with padding
35/// Standard Base64 codecs, with padding, as defined in
36/// [RFC 4648 section 4](https://datatracker.ietf.org/doc/html/rfc4648#section-4).
3337pub const standard = Codecs{
3438 .alphabet_chars = standard_alphabet_chars,
3539 .pad_char = '=',
......@@ -38,7 +42,8 @@ pub const standard = Codecs{
3842 .Decoder = Base64Decoder.init(standard_alphabet_chars, '='),
3943};
4044
41/// Standard Base64 codecs, without padding
45/// Standard Base64 codecs, without padding, as defined in
46/// [RFC 4648 section 3.2](https://datatracker.ietf.org/doc/html/rfc4648#section-3.2).
4247pub const standard_no_pad = Codecs{
4348 .alphabet_chars = standard_alphabet_chars,
4449 .pad_char = null,
......@@ -47,12 +52,15 @@ pub const standard_no_pad = Codecs{
4752 .Decoder = Base64Decoder.init(standard_alphabet_chars, null),
4853};
4954
55/// The URL-safe Base64 alphabet defined in
56/// [RFC 4648 section 5](https://datatracker.ietf.org/doc/html/rfc4648#section-5).
5057pub const url_safe_alphabet_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".*;
5158fn urlSafeBase64DecoderWithIgnore(ignore: []const u8) Base64DecoderWithIgnore {
5259 return Base64DecoderWithIgnore.init(url_safe_alphabet_chars, null, ignore);
5360}
5461
55/// URL-safe Base64 codecs, with padding
62/// URL-safe Base64 codecs, with padding, as defined in
63/// [RFC 4648 section 5](https://datatracker.ietf.org/doc/html/rfc4648#section-5).
5664pub const url_safe = Codecs{
5765 .alphabet_chars = url_safe_alphabet_chars,
5866 .pad_char = '=',
......@@ -61,7 +69,8 @@ pub const url_safe = Codecs{
6169 .Decoder = Base64Decoder.init(url_safe_alphabet_chars, '='),
6270};
6371
64/// URL-safe Base64 codecs, without padding
72/// URL-safe Base64 codecs, without padding, as defined in
73/// [RFC 4648 section 3.2](https://datatracker.ietf.org/doc/html/rfc4648#section-3.2).
6574pub const url_safe_no_pad = Codecs{
6675 .alphabet_chars = url_safe_alphabet_chars,
6776 .pad_char = null,