fix(v4): MINT-ZUSE wipes Zuse's seed on every return, not only on success (#176, the mint)
sk_v4_mint_zuse wiped seed and rseed only when the real Zuse was minted; its refusals and every failure after YES left them in stack memory. Option 1 (Captain Bob, 2026-11-12: "1 is great"): the seeds are in a 64-byte buffer the caller owns. sk_v4_mint_zuse_with(seeds) runs the mint (now a private mint()) and then wipes the buffer, whichever way it returned -- one place, every exit; sk_v4_mint_zuse() gives it a buffer of its own. kernel/tests/test_sk_v4_mint.c, 17 checks: the real gpt.c on the RAM disk, the identity code, key mint, signature checks, marker and keyboard faked; each of the mint's eight exits run with the buffer filled with 0xEE first -- no stick, under 64 MiB, not YES, the key mint failing, the read-back not hers, no marker, the marker write failing, and minted. Against the mint as it was: 7 failures (every exit but success). Now: 0. Both runs in logs/20261112-181719/. Built for amd64, aarch64, riscv64. The identity code's two (sk_v4_genesis, sk_v4_real_zuse_arrived) follow. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017RzZgrf7V7Zk2iczBXDRbm
This commit is contained in:
@@ -9,6 +9,8 @@
|
||||
#ifndef STARKERNEL_V4_SK_V4_MINT_H
|
||||
#define STARKERNEL_V4_SK_V4_MINT_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/* The whole of STICK.md 6a's minting: asks for a stick, shows its size, writes
|
||||
* nothing until YES, then a GPT and a fresh Zuse identity on it, read back,
|
||||
* and only then the real key in the genesis marker. 0 when she is minted;
|
||||
@@ -16,4 +18,8 @@
|
||||
* MINT-ZUSE word, and (Task 5) the fixed screen's R. */
|
||||
int sk_v4_mint_zuse(void);
|
||||
|
||||
/* The same, with Zuse's seed and its read-back in `seeds` (64 bytes), owned by the caller: on every
|
||||
* return the 64 bytes are zero (#176). */
|
||||
int sk_v4_mint_zuse_with(uint8_t seeds[64]);
|
||||
|
||||
#endif /* STARKERNEL_V4_SK_V4_MINT_H */
|
||||
|
||||
Reference in New Issue
Block a user