mirror of
https://github.com/saymrwulf/proof-aware-crypto-tooling-agent.git
synced 2026-09-04 20:03:40 +00:00
The dogfood principle now runs in BOTH directions. Agents already
verified signatures through the proven dalek path; now the provider
SIGNS with it too, and proves to itself that the signing code is in its
own log before every signature:
- dogfood binary gains a `sign` mode (seed over stdin, never argv;
ed25519_dalek::SigningKey from the same pinned merkleized workspace).
Honesty ledger unchanged: the library's VERIFY path is
certificate-covered; its signing path is declared trusted base - but
it is the ATTESTED artifact, not an un-attested third implementation.
- sign_payload_ed25519_detailed: signing dispatch mirroring the verify
dispatch; the backend that actually signed is recorded in every
attestation signature block and STH.
- THE SELF-REFERENTIAL CHECK: before signing any tree head, the
provider runs the SAME Merkle inclusion verification an agent runs -
against the very tree it is about to sign - for the newest leaf
attesting the signing library itself, and embeds the result in the
signature block:
signing_provenance:
signing_backend: verified-dalek-serial
signing_library_component: dalek-ed25519-verified
signing_library_source_commit: aa0f6ab...
self_inclusion: verified
signing_library_leaf_index: 4
signing_library_certificates_proven: 16/16
A root signature that names the leaf vouching for the code that
produced it. First-append chicken-and-egg is handled honestly
(self_inclusion: library_not_in_log).
- Evidence refreshed: all four receipts re-issued under dogfood-signed
STHs; the full agent verify loop re-run green.
50/50 tests (new signing roundtrip test, skip-safe where unbuilt).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
47 lines
2 KiB
YAML
47 lines
2 KiB
YAML
schema_version: 1
|
|
type: pacta.transparency.receipt.v1
|
|
log_id: 205e4c389cb143e08f0d2d58bdc8e425e47e3cbe7f2108cc58bbe835d2cc41d7
|
|
hash_algorithm: RFC9162_SHA256
|
|
attestation_path: provider/out/anza-ed25519.attestation.yaml
|
|
attestation_digest_sha256: 99d7037f592453e4a176ffbbb314245e32e6014738e38e64b3f166992d6fd9ad
|
|
leaf_index: 5
|
|
leaf_hash: 33523f3ea6b6eab72696eead8534d0b7cac78feb60cc3907ac973a24f37adb95
|
|
tree_size: 8
|
|
inclusion_proof:
|
|
- ca164b6cf11aec6a4c8de2d18c2c2fa04c9323657bd7daf4e7111869201bfec2
|
|
- 3bb1e72abbc9c0b945dafde303acdab123996e41faeab49a35563886b1b41e96
|
|
- 04541cffd46cf5a97d7453ed8ae681b1a1fedb879eb8c7a262e05b3176159eed
|
|
consistency:
|
|
from_tree_size: 8
|
|
from_root_hash: 9a15b9a1379edc07ae43d3fc61b52dc4446b56770bff6538e88ed98746ac2283
|
|
proof: []
|
|
status: not_applicable
|
|
sth:
|
|
schema_version: 1
|
|
type: pacta.transparency.signed_tree_head.v1
|
|
log_id: 205e4c389cb143e08f0d2d58bdc8e425e47e3cbe7f2108cc58bbe835d2cc41d7
|
|
tree_size: 8
|
|
timestamp: '2026-07-06T13:20:39Z'
|
|
root_hash: 9a15b9a1379edc07ae43d3fc61b52dc4446b56770bff6538e88ed98746ac2283
|
|
hash_algorithm: RFC9162_SHA256
|
|
signatures:
|
|
ed25519:
|
|
scheme: openssl-ed25519
|
|
signing_backend: verified-dalek-serial
|
|
status: signed
|
|
payload_digest_sha256: d915e3fd22b755768bc91e088259f42e6011e8fb98910aaa6ae4b93ce793255b
|
|
signature_base64: 30Dz9i50AsM9L44fQCGQJcnk84fzpIUuJznbJiumQuREZ2QdAfsY9EpnXiC+uHcTnN8yJ928WIeBcarsKebXBw==
|
|
public_key_fingerprint_sha256: 874c8a008a607021528b2493fa1caf059f9d5c123d29193dfabc09a6d1e7a56a
|
|
signing_provenance:
|
|
signing_backend: verified-dalek-serial
|
|
signing_library_component: dalek-ed25519-verified
|
|
signing_library_source_commit: aa0f6abc327ba2a54a534b21608ca8996cf73682
|
|
self_inclusion: verified
|
|
signing_library_leaf_index: 4
|
|
signing_library_certificates_proven: 16/16
|
|
ml_dsa:
|
|
scheme: ML-DSA-65
|
|
standard: FIPS 204
|
|
status: not_configured
|
|
reason: A backend appears available, but no ML-DSA signing key was configured
|
|
for this log.
|