Skip to content

How Attestations Work

Non-normative overview. The canonical formats and requirements are defined in Envelope, Claims, and Verification.

An OSAP attestation is a JSON envelope containing an issuer, claims, timestamps, and usually a subject with one or more content fingerprints. The common envelope format and the five attestation types are defined in Envelope and Claims.

Important fields include:

  • issuer: the signer, identified in v0.1 by a did:web identifier.
  • subject: the asset being described and its asset_hashes.
  • claims: issuer statements such as published_by or original_source_claim.
  • issued_at: the time at which the issuer says it issued the attestation.
  • proof: the signature metadata and signature value.

In v0.1, the proof is a DataIntegrityProof using the eddsa-jcs-2026 cryptosuite. The envelope is canonicalized with JCS, excluding proof.proofValue, and signed with Ed25519. A verifier checks the document format, exact-byte fingerprint, issuer key, signature, and available revocation information. It reports checks that could not be performed as unknown rather than failed.

This example follows examples/source-attestation.json. Its proofValue is a placeholder that reference tooling can replace.

json
{
  "osap": "0.1",
  "id": "osap:attestation:sha256:4a44dc15364204a80fe80e9039455cc1608281820fe2b24f1e5233ade6af1dd5",
  "type": "SourceAttestation",
  "issuer": {
    "id": "did:web:publisher.example",
    "name": "Publisher Example",
    "key_id": "did:web:publisher.example#key-2026"
  },
  "subject": {
    "type": "image/jpeg",
    "canonical_url": "https://publisher.example/images/photo.jpg",
    "asset_hashes": [
      {
        "alg": "sha256",
        "scope": "exact-bytes",
        "value": "4a44dc15364204a80fe80e9039455cc1608281820fe2b24f1e5233ade6af1dd5"
      }
    ]
  },
  "claims": [
    {
      "type": "published_by",
      "value": true
    },
    {
      "type": "original_source_claim",
      "value": true
    }
  ],
  "issued_at": "2026-07-09T12:00:00Z",
  "valid_from": "2026-07-09T12:00:00Z",
  "derived_from": [],
  "evidence": [],
  "revocation": {
    "status_url": "https://publisher.example/.well-known/osap/revocations.json"
  },
  "proof": {
    "type": "DataIntegrityProof",
    "cryptosuite": "eddsa-jcs-2026",
    "created": "2026-07-09T12:00:05Z",
    "verificationMethod": "did:web:publisher.example#key-2026",
    "proofPurpose": "assertionMethod",
    "proofValue": "base64url-signature-placeholder"
  }
}

Attestations may be distributed with an asset or discovered later:

  • a .osap.json sidecar file;
  • a /.well-known/osap.json index;
  • an HTTP Link header;
  • an HTML <link rel="osap-attestation">; or
  • an exact-hash lookup service.

The discovery rules are specified in Discovery. Remote hash lookup is privacy-sensitive because a request can reveal interest in a particular fingerprint; verifiers warn users before using it.