Skip to content
Versionv0.1 ALPHA 2

Format

OSDF is a layered format. A minimal package is just a safe, self-describing container; each additional layer adds a stronger, independently verifiable guarantee. Implementations declare which profile they target.

Design goals

  • Passive by default - opening a document never executes document-supplied code.
  • Self-describing - every object is declared in a manifest with a digest.
  • Deterministic - canonicalization makes verification reproducible byte-for-byte.
  • Offline-capable - embedded evidence allows verification without a live service.
  • Crypto-agile - every algorithm is identified explicitly and versioned.

Layers

LayerAddsGuarantee
L1 ContainerConstrained ZIP + object tableSafe to parse
L2 ManifestPer-object SHA-256 digestsIntegrity
L3 SignaturesEd25519 over canonical payloadAuthenticity
L4 RevisionsHash-linked revision chainLineage
L5 TransparencySigned Merkle log + proofsNon-repudiation
X1/X2 AccessEnvelope encryption + policyConfidentiality

Canonicalization

Signatures and digests are computed over a canonical byte representation. JSON objects use JCS (RFC 8785); binary objects are hashed with domain separation:

text
object_digest = SHA-256(domain_tag || object_type || canonical_bytes)

Domain tags prevent a hash computed for one purpose from being reused for another.

Versioning

The package header carries a format version and a profile identifier. A conforming viewer that encounters an unknown mandatory extension must fail closed rather than render partial content.

Continue to the Schema.

Spec status: working draft v0.4 · subject to change before v1.0.