Skip to content

Predicate type

https://socair.ai/acceptance/v1

Socair acceptance

A named person’s signature accepting the untested rows of one reviewed report, until a set time.

Shape

Envelope
An in-toto Statement v1 (https://in-toto.io/Statement/v1) in a DSSE envelope with payload type application/vnd.in-toto+json, signed with Ed25519. It verifies offline: no transparency log or certificate authority is involved.
Subject
One subject: the artifact by name and SHA-256, the same artifact as the reviewed report.

Predicate

reviewed_document_hash
The document hash of the withheld report the acceptor reviewed.
reviewed_document_id
That report’s document id.
accepted_surfaces
The report’s NOT_TESTED rows, all of them and only them.
accepted_by
The acceptor’s name as they wrote it. The key is the proof.
accepted_at
When they signed.
expires
When the acceptance stops counting.
rationale
Optional: why they accepted the gaps.

Sign and verify

socair accept --attestation report.dsse.json --key ciso.key \
  --by "Jane Doe, CISO" --expires <RFC 3339 time> \
  --trusted operator.pub
socair sign --key operator.key --attestation report.dsse.json \
  --acceptance report.acceptance.dsse.json \
  --trusted keys/ --acceptors acceptors/

What the signature means

  • The flow is review, accept, re-issue. The operator re-issues the same report as authorized with conditions, with the acceptance embedded, so one attestation carries both signatures.
  • An acceptance covers NOT_TESTED rows only. No acceptance clears a FAIL or a LEAD.
  • The airlock checks the acceptor’s signature against its own acceptor keys, kept apart from the keys that sign attestations, so nobody accepts their own report.

Where it is defined

The other signed documents: Socair attestation, Socair reference feed, Socair inventory snapshot, Socair OCI binding, Socair derivation record.