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:
@@ -19,7 +19,9 @@ CC ?= cc
|
||||
CFLAGS := -std=c99 -Wall -Wextra -Werror -O2 -g -I$(HERE) -I$(ROOT)/kernel/include \
|
||||
-I$(ROOT)/kernel/include/starkernel -I$(ROOT)/v3/include
|
||||
|
||||
TESTS := test_gpt test_usb_config test_sk_v4_stop test_sk_v4_slots
|
||||
TESTS := test_gpt test_usb_config test_sk_v4_stop test_sk_v4_slots test_sk_v4_mint
|
||||
SRC_test_sk_v4_mint := $(ROOT)/kernel/src/v4/sk_v4_mint.c $(ROOT)/kernel/src/gpt.c
|
||||
EXTRA_test_sk_v4_mint := -D__STARKERNEL__ -I$(ROOT)/v4/include
|
||||
SRC_test_sk_v4_slots := $(ROOT)/kernel/src/v4/sk_v4_slots.c
|
||||
SRC_test_sk_v4_stop := $(ROOT)/kernel/src/v4/sk_v4_stop.c
|
||||
SRC_test_gpt := $(ROOT)/kernel/src/gpt.c
|
||||
@@ -28,7 +30,7 @@ SRC_test_usb_config := $(ROOT)/kernel/src/usb/usb_config.c
|
||||
define TEST_RULE
|
||||
$(BUILD)/$(1): $(HERE)/$(1).c $(HERE)/fakes.c $(HERE)/fakes.h $(HERE)/harness.h $$(SRC_$(1))
|
||||
@mkdir -p $(BUILD)
|
||||
$(CC) $(CFLAGS) $(HERE)/$(1).c $(HERE)/fakes.c $$(SRC_$(1)) -o $$@
|
||||
$(CC) $(CFLAGS) $$(EXTRA_$(1)) $(HERE)/$(1).c $(HERE)/fakes.c $$(SRC_$(1)) -o $$@
|
||||
|
||||
.PHONY: run-$(1)
|
||||
run-$(1): $(BUILD)/$(1)
|
||||
|
||||
Reference in New Issue
Block a user