{
  "specVersion": "0.10.2",
  "generated": "2026-06-12T21:55:37.000Z",
  "expires": "2027-06-12T21:55:37.000Z",
  "site": "https://ktc-spec.github.io",
  "attestation": {
    "iss": "https://ktc-spec.github.io/vectors/attestation",
    "jwks": "https://ktc-spec.github.io/vectors/attestation/.well-known/jwks.json"
  },
  "vectors": [
    {
      "id": "ktc-d1-baseline",
      "title": "Bare SHLink, baseline",
      "tier": "decode",
      "level": "baseline",
      "file": "vectors/ktc-d1-baseline.json"
    },
    {
      "id": "ktc-d2-prefixed",
      "title": "Viewer-prefixed SHLink",
      "tier": "decode",
      "level": "baseline",
      "file": "vectors/ktc-d2-prefixed.json"
    },
    {
      "id": "ktc-d3-b64url",
      "title": "base64url alphabet (the atob trap)",
      "tier": "decode",
      "level": "baseline",
      "file": "vectors/ktc-d3-b64url.json"
    },
    {
      "id": "ktc-d4-utf8-label",
      "title": "UTF-8 label",
      "tier": "decode",
      "level": "baseline",
      "file": "vectors/ktc-d4-utf8-label.json"
    },
    {
      "id": "ktc-d5-no-label",
      "title": "No label",
      "tier": "decode",
      "level": "baseline",
      "file": "vectors/ktc-d5-no-label.json"
    },
    {
      "id": "ktc-d6-no-exp",
      "title": "Missing exp (valid base SHL, not KTC)",
      "tier": "decode",
      "level": "negative",
      "file": "vectors/ktc-d6-no-exp.json"
    },
    {
      "id": "ktc-d7-flag-p",
      "title": "Flag P (out of KTC scope)",
      "tier": "decode",
      "level": "negative",
      "file": "vectors/ktc-d7-flag-p.json"
    },
    {
      "id": "ktc-d8-flag-empty",
      "title": "Empty flag (manifest flow, out of KTC scope)",
      "tier": "decode",
      "level": "negative",
      "file": "vectors/ktc-d8-flag-empty.json"
    },
    {
      "id": "ktc-d9-truncated",
      "title": "Truncated payload",
      "tier": "decode",
      "level": "negative",
      "file": "vectors/ktc-d9-truncated.json"
    },
    {
      "id": "ktc-r1-gone",
      "title": "Gone: payload URL returns 404",
      "tier": "retrieve",
      "level": "robustness",
      "file": "vectors/ktc-r1-gone.json"
    },
    {
      "id": "ktc-r2-expired",
      "title": "Expired link",
      "tier": "retrieve",
      "level": "robustness",
      "file": "vectors/ktc-r2-expired.json"
    },
    {
      "id": "ktc-e1-zip-def",
      "title": "JWE with zip: DEF",
      "tier": "decrypt",
      "level": "robustness",
      "file": "vectors/ktc-e1-zip-def.json"
    },
    {
      "id": "ktc-e2-tampered",
      "title": "Tampered ciphertext",
      "tier": "decrypt",
      "level": "negative",
      "file": "vectors/ktc-e2-tampered.json"
    },
    {
      "id": "ktc-e3-key-urlsafe",
      "title": "Key with base64url-only characters",
      "tier": "decrypt",
      "level": "baseline",
      "file": "vectors/ktc-e3-key-urlsafe.json"
    },
    {
      "id": "ktc-b1-discrete-only",
      "title": "Discrete resources only (no DocumentReference)",
      "tier": "bundle",
      "level": "baseline",
      "file": "vectors/ktc-b1-discrete-only.json"
    },
    {
      "id": "ktc-b2-both-pdfs",
      "title": "Both PDF kinds in one Bundle",
      "tier": "bundle",
      "level": "baseline",
      "file": "vectors/ktc-b2-both-pdfs.json"
    },
    {
      "id": "ktc-b3-persistence-core",
      "title": "The SHALL-persist four",
      "tier": "bundle",
      "level": "baseline",
      "file": "vectors/ktc-b3-persistence-core.json"
    },
    {
      "id": "ktc-b4-carin-dic",
      "title": "CARIN DIC Coverage",
      "tier": "bundle",
      "level": "baseline",
      "file": "vectors/ktc-b4-carin-dic.json"
    },
    {
      "id": "ktc-b9-carried-note",
      "title": "Ordinary DocumentReference carried along",
      "tier": "bundle",
      "level": "baseline",
      "file": "vectors/ktc-b9-carried-note.json"
    },
    {
      "id": "ktc-b5-attestation",
      "title": "App Attestation (valid)",
      "tier": "bundle",
      "level": "baseline",
      "file": "vectors/ktc-b5-attestation.json"
    },
    {
      "id": "ktc-b6-attestation-broken",
      "title": "App Attestation (unverifiable)",
      "tier": "bundle",
      "level": "robustness",
      "file": "vectors/ktc-b6-attestation-broken.json"
    },
    {
      "id": "ktc-b7-bad-type",
      "title": "Bundle.type is document (invalid)",
      "tier": "bundle",
      "level": "negative",
      "file": "vectors/ktc-b7-bad-type.json"
    },
    {
      "id": "ktc-b8-single-entry",
      "title": "Patient-only Bundle (invalid)",
      "tier": "bundle",
      "level": "negative",
      "file": "vectors/ktc-b8-single-entry.json"
    }
  ]
}