@@ -263,14 +263,14 @@ partial plaintext before the final wipe.
263263Before reporting the opaque malformed-input result, the ct decoder passes the
264264accumulated error mask through a non-inlined ` ct_error_gate_barrier ` that uses
265265` core::hint::black_box ` , a compiler fence, and architecture-specific hardware
266- speculation barriers where available (` lfence ` on x86/x86_64, ` isb sy ` on ARM,
267- and ` isb sy; hint #20 ` on AArch64). On RISCV the gate uses ` fence rw, rw ` ,
268- which is an ordering fence rather than a canonical speculation barrier in the
269- base ISA. The runtime backend report exposes this separately through
270- ` ct_gate_posture ` . This is defense in depth around the final public
271- success/failure gate; it does not make the ct decoder a formally verified
272- hardware side-channel resistant primitive and does not change the transient
273- output window described above.
266+ speculation barriers where available (` lfence ` on x86/x86_64 and
267+ ` isb sy; hint #20 ` on AArch64). On 32-bit ARM the gate uses ` isb sy ` , and on
268+ RISCV it uses ` fence rw, rw ` ; both are reported as ` ordering-fence ` because the
269+ base ISA path is not a canonical Spectre-v1 data-flow speculation barrier. The
270+ runtime backend report exposes this separately through ` ct_gate_posture ` . This
271+ is defense in depth around the final public success/failure gate; it does not
272+ make the ct decoder a formally verified hardware side-channel resistant
273+ primitive and does not change the transient output window described above.
274274
275275For shared-memory or in-process sandbox threat models where even that transient
276276output window is unacceptable, use
@@ -316,6 +316,10 @@ CT gate barrier used by malformed-input reporting. The helper is marked
316316` constant_time_eq_public_len ` remains visible as a separate text symbol in the
317317LTO artifact.
318318
319+ When the value length itself should not be modeled as a runtime branch, use
320+ ` constant_time_eq_fixed_width ` with fixed-size arrays. Its length is a
321+ compile-time type fact and it scans exactly that width before returning.
322+
319323This remains a best-effort API and does not upgrade ` base64-ng ` to a formally
320324verified cryptographic constant-time comparison crate. Do not use this helper
321325as the sole MAC, bearer-token, password-hash, or authentication-secret
0 commit comments