Withdraw witness

Trail 2026-09-19-fra1

Experiment Nr. 1, Lauf 3 — Rückkehr nach Wartung, Drain fra1-lab (Virtua FRA)

Fetch and verify

BASE=https://anycast.dev/witness/2026-09-19-fra1
mkdir 2026-09-19-fra1 && cd 2026-09-19-fra1

curl -sO "$BASE/MANIFEST.txt"
curl -sO "$BASE/log.jsonl.gz"
curl -sO "$BASE/checkpoints.jsonl"
curl -sO "$BASE/origin"

mkdir -p keys anchors
curl -s -o keys/signing_key.pub "$BASE/keys/signing_key.pub"
for f in $(awk '$3 ~ /^anchors\// {print $3}' MANIFEST.txt); do
  curl -s -o "$f" "$BASE/$f"
done

gunzip -k log.jsonl.gz

# what you got is what the manifest says
awk '$1 ~ /^[0-9a-f]{64}$/ {print $1"  "$3}' MANIFEST.txt \
  | shasum -a 256 -c          # GNU: sha256sum -c

# the key comes from the published file, not from the trail
curl -s https://anycast.dev/.well-known/logsiegel-pubkey.txt -o pubkeys.txt
sed -n '/Lauf-ID: *2026-09-19-fra1$/,/END PUBLIC KEY/p' pubkeys.txt \
  | sed -n '/BEGIN PUBLIC KEY/,/END PUBLIC KEY/p' > pub.pem

pip install logsiegel==0.1.2
logsiegel verify . --pubkey pub.pem

Expected: PASS: <N> entries, <M> checkpoints. The guide also shows how to break the check on purpose, so you know it measures something.

The copy of the public key inside the trail (keys/signing_key.pub) proves nothing against us — whoever controls the directory can rewrite log and key together. Take the key from the published file.

Files

FileBytesSHA-256 (first 16)
MANIFEST.txt5,3623b7d741839152493
anchors/cp000000-digicert-20260919T225125Z.tsr6,007bf17089a2f56cd10
anchors/cp001707-digicert-20260919T230000Z.tsr6,0088d51d02ed97c9680
anchors/cp005345-digicert-20260919T231500Z.tsr6,007c1970a21f742d4c2
anchors/cp007016-digicert-20260919T232030Z.tsr6,00704cbbf8b37ea9251
anchors/cp010834-digicert-20260919T233000Z.tsr6,007739d62db151e7166
anchors/cp015273-digicert-20260919T234500Z.tsr6,00619e65825f356c198
anchors/cp016863-digicert-20260919T235031Z.tsr6,00710c2d9ac582c40f8
anchors/cp020374-digicert-20260920T000001Z.tsr6,007037c269c58ecd6ef
anchors/cp024925-digicert-20260920T001500Z.tsr6,007198a2405b8f174e8
anchors/cp028244-digicert-20260920T003000Z.tsr6,00763fde9c8dbd04e95
anchors/cp030544-digicert-20260920T004500Z.tsr6,0065d340d153897dffa
anchors/cp032741-digicert-20260920T010001Z.tsr6,006a5e2313edab9fbf8
anchors/cp034950-digicert-20260920T011500Z.tsr6,0072d41edf22eadd889
anchors/cp037089-digicert-20260920T013001Z.tsr6,0085358dfab8de4eaa3
anchors/cp039297-digicert-20260920T014500Z.tsr6,007158b90d1fa033729
anchors/cp041519-digicert-20260920T020000Z.tsr6,008477e250ee78c648c
anchors/cp043694-digicert-20260920T021501Z.tsr6,007f0711d373e7b9657
anchors/cp045893-digicert-20260920T023000Z.tsr6,007241a2191e48e5e66
anchors/cp048197-digicert-20260920T024500Z.tsr6,007f2f0dde4b9100ad3
anchors/cp050324-digicert-20260920T030001Z.tsr6,0074570bae30db8dc26
anchors/cp052538-digicert-20260920T031501Z.tsr6,00683a2cd0888796cf0
anchors/cp054788-digicert-20260920T033000Z.tsr6,008df38928b711d8293
anchors/cp056889-digicert-20260920T034500Z.tsr6,008a5a2a5522de8e148
anchors/cp059090-digicert-20260920T040000Z.tsr6,007a36feb1b1766e656
anchors/cp061378-digicert-20260920T041501Z.tsr6,0070fab6dc37933fd5c
anchors/cp063602-digicert-20260920T043001Z.tsr6,008bc3c3d81951faed1
anchors/cp065725-digicert-20260920T044501Z.tsr6,006f841404c27c6ca37
anchors/cp067935-digicert-20260920T050001Z.tsr6,006bdc53aae4346c0ee
anchors/cp070150-digicert-20260920T051500Z.tsr6,0067d3b962fc40206e3
anchors/cp072381-digicert-20260920T053000Z.tsr6,0061412392fbb01dd44
anchors/cp074588-digicert-20260920T054501Z.tsr6,0061698485847d34560
anchors/cp076577-digicert-20260920T055959Z.tsr6,0084fca7cf7b178e7d7
checkpoints.jsonl137,047b16c6c5cbba904b1
keys/signing_key.pub113b6751feed18703ae
log.jsonl.gz7,583,022050ed0ddb7c5aa38
origin35c1cfe1e7f8e20782

Unpacked, log.jsonl is 56,986,171 bytes, SHA-256 fc357e43a99ecd6d86140ca2c842671e476a1a341d0021c7a46af3684c2316cc. Unpacking changes nothing about the proof.

32 RFC 3161 timestamp tokens are in anchors/; each one stamps a signed checkpoint root. The certificates to check them against: digicert-root-g4.pem, digicert-chain.pem — or your own system trust store, the result must be the same.

All runs