evidence · 2.0 KiB

README.md

Committed at docs/evidence/mainline-uart-progress-memory-printk/firmware-identity-host/README.md. This is what grounds the requirements that cite it.

Open raw source

Protected OpenSBI wrapper matches the inspected host payload

A deterministic legacy U-Boot header around the inspected 270744-byte OpenSBI 1.4 fw_jump.bin produces 270808 bytes with SHA-256 9627edbe…f42c99, exactly the protected wrapper hash recorded by the normal report and freshly checked before the nohz-off trial. Payload SHA 74d08f87…938f9 identifies the actual inspected host binary.

This closes the file-identity gap in the timer/SBI audit: the wrapper store output was absent, but its deterministic packaging is fully reproducible without that output. nix/stage1.nix sets epoch 1700000000 and wraps the existing payload as a RISC-V/Linux/uncompressed kernel with zero load/entry and name linux. The verifier constructs that 64-byte header, computes both CRCs and compares the resulting full-file SHA against the protected normal file and actual physical preflight receipt.

Executed verifier and safe result preserve inputs/hashes and proof limits. Exact command (return 0):

python3 docs/evidence/mainline-uart-progress-memory-printk/firmware-identity-host/verify-wrapper.py \
  --payload /nix/store/7fmfx6dan9c2dsa55cs3jba3b5wx6w6p-opensbi-k230-riscv64-unknown-linux-gnu-1.4/fw_jump.bin \
  --normal-report PRIVATE_NORMAL --trial-result PRIVATE_NOHZ_RESULT \
  --output FRESH_PRIVATE_RESULT

No firmware/kernel build, flash, UART access or new board readback was performed. This is host file reconstruction tied to the earlier physical protected-file check. It supports identifying the inspected OpenSBI payload in that file; it does not independently observe firmware execution, runtime SSTC/backend choice, CSR interrupt state or the cause of missing worker/observer progress. The read source’s full-width timer stop/rearm support is therefore tied to the protected payload, while runtime behavior remains UNVERIFIED.