A trimmed (~1.7 KB) copy of the cross-language parity vectors now ships inside
each package (Python package-data JSON, Go go:embed, TS generated module). On
the first hashing operation per process each SDK recomputes the commitment
hash, the receipt domain-hash, and an inclusion fold against the vendored
vectors and fails closed (AttestoSelfTestError / ErrSelfTest) on any mismatch
— a corrupted install or diverging runtime can never silently produce wrong
evidence. Result is cached (including failure); cost <5 ms once. Corrupting a
vendored vector is test-asserted to fail closed in all three languages. The
frozen canonical primitives are untouched; the gate lives in the commitment/
verify entry points built on top of them.
attesto doctor: Go CLI subcommand and Python attesto.doctor(), producing a
deterministic {"ok", "checks"} report — vendored self-test, head-store
writability, number-policy dry-run on a sample payload, Ed25519 availability
(Python), and with credentials: reachability, protocol-header acceptance, and
clock skew vs the server Date header (warn >30 s; webhooks break at 300 s).
package_artifact_policy allows exactly attesto/_selftest_vectors.json in the
wheel (verified: built wheel contains it, policy green). READMEs updated.
This completes the last Phase-1 build item.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
59 lines
1.7 KiB
JSON
59 lines
1.7 KiB
JSON
{
|
|
"note": "Trimmed parity self-test set vendored into each SDK package; regenerated from golden-vectors/sdk-parity (do not hand-edit).",
|
|
"commitment": {
|
|
"payload": {
|
|
"b": 2,
|
|
"a": 1,
|
|
"nested": {
|
|
"z": [
|
|
1,
|
|
2,
|
|
3
|
|
],
|
|
"flag": true
|
|
}
|
|
},
|
|
"canonical_payload_hash": "8b2252e6632801faa71c8eb4a597bfeaba385face3ddef30b7eb636787902304"
|
|
},
|
|
"receipt": {
|
|
"payload": {
|
|
"event_hash": "cd7753e1bc862729d4de6d2e9d9c0942830e557cf539ebcbf00bf9b4cd6a62a9",
|
|
"event_id": "evt_golden_2",
|
|
"issued_at": "2026-06-05T20:59:04.000Z",
|
|
"prev_event_hash": "731f8a0a3cc6ea2ca00bb26dca8f721da34e1328750f2e16a32f7bf7b36d7264",
|
|
"protocol": "ATTESTO-PROOFSTREAM-001",
|
|
"protocol_version": "0.1-alpha",
|
|
"seq_no": 2,
|
|
"signer": {
|
|
"alg": "ed25519",
|
|
"key_epoch": "golden-key-2026-06",
|
|
"kid": "golden-key-2026-06"
|
|
},
|
|
"stream_event_id": "sev_golden_2",
|
|
"stream_head_hash": "140142e46eb7cbe17db99c717666cb5a038a858feaff7cc26b78d10c8868da51",
|
|
"stream_id": "str_golden",
|
|
"system_id": "sys_golden",
|
|
"tenant_id": "tnt_golden"
|
|
},
|
|
"receipt_hash": "4f72f15fa4d07c9a83baa908f6168e27beeb1d4c9984f70e52f67ff6c380ccb2"
|
|
},
|
|
"inclusion": {
|
|
"leaf_hash": "7973a148f766058042177a3507c5baa4757c6159c91049cbc42f60f138715072",
|
|
"proof": [
|
|
{
|
|
"side": "right",
|
|
"hash": "2faac607f33011ec3bdf305e01e36d1257bb226868cec5df4bfecbb8a552b48b"
|
|
},
|
|
{
|
|
"side": "right",
|
|
"hash": "9ff585ea4fd08983d242fd3b73144e800b07a4ae86324d4e0f0fb2f70933b26f"
|
|
},
|
|
{
|
|
"side": "right",
|
|
"hash": "6977f0ace2809f289002e6600967de240acc3dcdcf62aa4e078c56c10f57d381"
|
|
}
|
|
],
|
|
"root_hash": "37a6a0d69e0951df3827205cfb8440c84d5d60c729b4c00a0d9460361923a18b"
|
|
}
|
|
}
|