Skip to content

Quick Reference

UM is a specification. Any language/runtime can implement it.

FieldRequiredTypeNotes
@contextYesstringVersion context URL
@idYesURI stringRecommended urn:uuid:<uuidv4>
@typeYesstring or arrayMust include um:Manifest
manifestVersionYesstring"0.1" or "0.2"
subjectYesURI stringStable subject ID
issuedAtYestimestampRFC 3339
expiresAtYestimestampRFC 3339
signaturev0.2 onlyobjectEd25519 + JCS profile
  1. Parse JSON object.
  2. Validate required fields.
  3. Validate @type includes um:Manifest.
  4. Parse timestamps and enforce issuedAt <= expiresAt.
  5. Enforce TTL (now <= expiresAt).
  6. Ignore unknown fields safely.
  1. Check profile pair (Ed25519, JCS-RFC8785).
  2. Remove signature from payload.
  3. Canonicalize using JCS.
  4. Load key from publicKeySpkiB64 or keyRef.
  5. Verify Ed25519 signature.
  • v0.1-baseline: parse + required fields + TTL + unknown-field tolerance.
  • v0.2-baseline: v0.1 baseline + signature profile.
  • v0.2-extended: v0.2 baseline + revocation-aware checks.

Decision tree text fallback:

  1. Consume only -> v0.1-baseline.
  2. Produce manifests -> add issuer behavior.
  3. Need tamper protection -> v0.2-baseline.
  4. Need revocation checks -> v0.2-extended.