@@ -32,9 +32,10 @@ new dependency expands the audit, license, advisory, and supply-chain surface.
3232- ` base64-ng-derive ` is an optional companion package for fixed-size byte
3333 newtypes. It is dependency-free and does not add proc-macro machinery to the
3434 core ` base64-ng ` package.
35- - ` base64-ng-serde ` , ` base64-ng-bytes ` , and ` base64-ng-tokio ` are optional
36- companion packages for applications that already admit ` serde ` , ` bytes ` , or
37- ` tokio ` ; they are not dependencies of the core ` base64-ng ` package.
35+ - ` base64-ng-serde ` , ` base64-ng-bytes ` , ` base64-ng-subtle ` , and
36+ ` base64-ng-tokio ` are optional companion packages for applications that
37+ already admit ` serde ` , ` bytes ` , ` subtle ` , or ` tokio ` ; they are not
38+ dependencies of the core ` base64-ng ` package.
3839- Fuzz, performance, and dudect-style timing harness dependencies are isolated
3940 under ` fuzz/ ` , ` perf/ ` , and ` dudect/ ` ; the standard local gate checks them
4041 separately from the published crate dependency graph.
@@ -64,15 +65,21 @@ Current decisions:
6465- ` base64-ng-bytes ` is admitted as a companion crate because services that
6566 already use ` bytes ` can opt into ` Bytes ` , ` Buf ` , and ` BufMut ` helpers without
6667 adding ` bytes ` to the core package.
68+ - ` base64-ng-subtle ` is admitted as a companion crate because authentication,
69+ MAC, password-hash, and token verification boundaries can opt into a reviewed
70+ ` subtle::ConstantTimeEq ` primitive without adding ` subtle ` to the core
71+ package.
6772- ` base64-ng-tokio ` is admitted as a companion crate for bounded async
6873 read-all/write-all helpers. Full streaming state machines remain deferred
6974 until cancellation-safety and drop-cleanup evidence is complete.
7075- The core ` tokio ` feature remains reserved and inert until async
7176 cancellation, drop cleanup, chunk-boundary, dependency, and release-evidence
7277 requirements are satisfied.
73- - ` zeroize ` and ` subtle ` remain deferred; applications can combine their own
74- approved dependencies with caller-owned buffers while ` base64-ng ` keeps its
75- audited local best-effort helpers dependency-free.
78+ - ` zeroize ` remains deferred for the core crate; applications can combine their
79+ own approved dependencies with caller-owned buffers while ` base64-ng ` keeps
80+ its audited local best-effort helpers dependency-free.
81+ - ` subtle ` is admitted only through ` base64-ng-subtle ` , not through the core
82+ crate.
7683- Property-testing and benchmark frameworks remain isolated or deferred; fuzz,
7784 dudect-style timing, and performance harnesses stay outside the published
7885 crate package.
@@ -131,9 +138,11 @@ core crate today:
131138 needed. The core crate does not admit ` serde ` .
132139- ` bytes ` : use ` base64-ng-bytes ` when ` Bytes ` , ` Buf ` , or ` BufMut ` integration
133140 is needed. The core crate does not admit ` bytes ` .
134- - ` zeroize ` or ` subtle ` : deferred unless a review proves that the dependency
135- materially improves the documented best-effort cleanup or
136- constant-time-oriented posture beyond the current audited local helpers.
141+ - ` zeroize ` : deferred unless a review proves that the dependency materially
142+ improves the documented best-effort cleanup posture beyond the current
143+ audited local helpers.
144+ - ` subtle ` : use ` base64-ng-subtle ` when protocol code needs a reviewed
145+ constant-time equality primitive for decoded or encoded buffers.
137146- Criterion or other benchmark frameworks: keep benchmark evidence isolated
138147 unless the added dependency graph clearly improves release evidence quality.
139148
@@ -160,10 +169,10 @@ workspaces only when they are not packaged with the published crate:
160169- ` perf/ ` dependencies are reviewed by ` scripts/check_perf.sh ` .
161170- ` dudect/ ` dependencies are reviewed by ` scripts/check_dudect.sh ` .
162171- ` crates/base64-ng-sanitization/ ` , ` crates/base64-ng-derive/ ` ,
163- ` crates/base64-ng-serde/ ` , ` crates/base64-ng-bytes/ ` , and
164- ` crates/base64-ng-tokio/ ` are optional companion crates, not dependencies of
165- the core ` base64-ng ` package. They are reviewed separately by
166- ` scripts/check_companion_crates.sh ` so the root package keeps its
172+ ` crates/base64-ng-serde/ ` , ` crates/base64-ng-bytes/ ` ,
173+ ` crates/base64-ng-subtle/ ` , and ` crates/base64-ng-tokio/ ` are optional
174+ companion crates, not dependencies of the core ` base64-ng ` package. They are
175+ reviewed separately by ` scripts/check_companion_crates.sh ` so the root package keeps its
167176 zero-runtime-dependency guarantee.
168177
169178` scripts/checks.sh ` runs those isolated harness checks so ordinary local
0 commit comments