authorgravatar for sorairolake@protonmail.chShun Sakai <sorairolake@protonmail.ch> 2025-03-23 10:20:31+09:00
committergravatar for mail@linusgroh.deLinus Groh <mail@linusgroh.de> 2025-03-24 11:42:28+00:00
log677b2d62e5af4d7a97883994b8d8c45a06535ea0
tree0f3278aac71630b54462a4db0fc1d14b122f40dd
parentdfe0fb675de43f3a4697246a5ec4ec6300b57682

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,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
3const std = @import("std.zig");4const std = @import("std.zig");
4const assert = std.debug.assert;5const assert = std.debug.assert;
...@@ -24,12 +25,15 @@ pub const Codecs = struct {...@@ -24,12 +25,15 @@ pub const Codecs = struct {
24 Decoder: Base64Decoder,25 Decoder: Base64Decoder,
25};26};
2627
28/// The Base64 alphabet defined in
29/// [RFC 4648 section 4](https://datatracker.ietf.org/doc/html/rfc4648#section-4).
27pub const standard_alphabet_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".*;30pub const standard_alphabet_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".*;
28fn standardBase64DecoderWithIgnore(ignore: []const u8) Base64DecoderWithIgnore {31fn standardBase64DecoderWithIgnore(ignore: []const u8) Base64DecoderWithIgnore {
29 return Base64DecoderWithIgnore.init(standard_alphabet_chars, '=', ignore);32 return Base64DecoderWithIgnore.init(standard_alphabet_chars, '=', ignore);
30}33}
3134
32/// Standard Base64 codecs, with padding35/// Standard Base64 codecs, with padding, as defined in
36/// [RFC 4648 section 4](https://datatracker.ietf.org/doc/html/rfc4648#section-4).
33pub const standard = Codecs{37pub const standard = Codecs{
34 .alphabet_chars = standard_alphabet_chars,38 .alphabet_chars = standard_alphabet_chars,
35 .pad_char = '=',39 .pad_char = '=',
...@@ -38,7 +42,8 @@ pub const standard = Codecs{...@@ -38,7 +42,8 @@ pub const standard = Codecs{
38 .Decoder = Base64Decoder.init(standard_alphabet_chars, '='),42 .Decoder = Base64Decoder.init(standard_alphabet_chars, '='),
39};43};
4044
41/// Standard Base64 codecs, without padding45/// Standard Base64 codecs, without padding, as defined in
46/// [RFC 4648 section 3.2](https://datatracker.ietf.org/doc/html/rfc4648#section-3.2).
42pub const standard_no_pad = Codecs{47pub const standard_no_pad = Codecs{
43 .alphabet_chars = standard_alphabet_chars,48 .alphabet_chars = standard_alphabet_chars,
44 .pad_char = null,49 .pad_char = null,
...@@ -47,12 +52,15 @@ pub const standard_no_pad = Codecs{...@@ -47,12 +52,15 @@ pub const standard_no_pad = Codecs{
47 .Decoder = Base64Decoder.init(standard_alphabet_chars, null),52 .Decoder = Base64Decoder.init(standard_alphabet_chars, null),
48};53};
4954
55/// The URL-safe Base64 alphabet defined in
56/// [RFC 4648 section 5](https://datatracker.ietf.org/doc/html/rfc4648#section-5).
50pub const url_safe_alphabet_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".*;57pub const url_safe_alphabet_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".*;
51fn urlSafeBase64DecoderWithIgnore(ignore: []const u8) Base64DecoderWithIgnore {58fn urlSafeBase64DecoderWithIgnore(ignore: []const u8) Base64DecoderWithIgnore {
52 return Base64DecoderWithIgnore.init(url_safe_alphabet_chars, null, ignore);59 return Base64DecoderWithIgnore.init(url_safe_alphabet_chars, null, ignore);
53}60}
5461
55/// URL-safe Base64 codecs, with padding62/// URL-safe Base64 codecs, with padding, as defined in
63/// [RFC 4648 section 5](https://datatracker.ietf.org/doc/html/rfc4648#section-5).
56pub const url_safe = Codecs{64pub const url_safe = Codecs{
57 .alphabet_chars = url_safe_alphabet_chars,65 .alphabet_chars = url_safe_alphabet_chars,
58 .pad_char = '=',66 .pad_char = '=',
...@@ -61,7 +69,8 @@ pub const url_safe = Codecs{...@@ -61,7 +69,8 @@ pub const url_safe = Codecs{
61 .Decoder = Base64Decoder.init(url_safe_alphabet_chars, '='),69 .Decoder = Base64Decoder.init(url_safe_alphabet_chars, '='),
62};70};
6371
64/// URL-safe Base64 codecs, without padding72/// 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).
65pub const url_safe_no_pad = Codecs{74pub const url_safe_no_pad = Codecs{
66 .alphabet_chars = url_safe_alphabet_chars,75 .alphabet_chars = url_safe_alphabet_chars,
67 .pad_char = null,76 .pad_char = null,