@phosra/gatekeeper 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"gatekeeper.d.ts","sourceRoot":"","sources":["../src/gatekeeper.ts"],"names":[],"mappings":"AACA,OAAO,EAAuJ,KAAK,UAAU,EAAgC,MAAM,uBAAuB,CAAC;AAG3O,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,UAAU,EAEf,KAAK,eAAe,EAKrB,MAAM,YAAY,CAAC;AAsBpB,iCAAiC;AACjC,cAAM,uBAAuB;IAC3B,OAAO,CAAC,CAAC,CAAsC;IAC/C,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAGpD,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,eAAe,GAAG,IAAI;CAGlD;AAED,cAAM,YAAY;IAChB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,OAAO,CAAqB;IACpC,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIpC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAGrC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;CAGtC;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,gBAAgB,CAAC;IACtB,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,cAAc,CAAC;IAC1B,IAAI,EAAE,iBAAiB,CAAC;IACxB,YAAY,EAAE,uBAAuB,CAAC;IACtC,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB;8EAC0E;IAC1E,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;6CAEyC;IACzC,sBAAsB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACrC;AAOD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,CA4ErE"}
1
+ {"version":3,"file":"gatekeeper.d.ts","sourceRoot":"","sources":["../src/gatekeeper.ts"],"names":[],"mappings":"AACA,OAAO,EAAuJ,KAAK,UAAU,EAAgC,MAAM,uBAAuB,CAAC;AAG3O,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,UAAU,EAEf,KAAK,eAAe,EAKrB,MAAM,YAAY,CAAC;AAsBpB,iCAAiC;AACjC,cAAM,uBAAuB;IAC3B,OAAO,CAAC,CAAC,CAAsC;IAC/C,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAGpD,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,eAAe,GAAG,IAAI;CAGlD;AAED,cAAM,YAAY;IAChB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,OAAO,CAAqB;IACpC,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIpC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAGrC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;CAGtC;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,gBAAgB,CAAC;IACtB,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,cAAc,CAAC;IAC1B,IAAI,EAAE,iBAAiB,CAAC;IACxB,YAAY,EAAE,uBAAuB,CAAC;IACtC,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB;8EAC0E;IAC1E,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;6CAEyC;IACzC,sBAAsB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACrC;AAOD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,CAgFrE"}
@@ -115,6 +115,10 @@ export function createGatekeeper(config) {
115
115
  /* no timers in P2 */
116
116
  },
117
117
  _testInjectProfile: (profile) => {
118
+ // Re-stamp cachedAt in place rather than spreading — spreading would trigger
119
+ // accessor traps on "evil" test profiles (the whole-body guard test injects
120
+ // a profile whose `categories` getter throws to simulate corruption).
121
+ profile.cachedAt = rt.now();
118
122
  rt.profileStore.put(profile.endpointId, profile);
119
123
  rt.consentStore.markActive(profile.endpointId);
120
124
  },
@@ -160,6 +164,7 @@ async function refreshProfile(rt, endpointId) {
160
164
  profile_ref: doc.profile_ref,
161
165
  window: doc.window,
162
166
  categories: doc.categories,
167
+ cachedAt: rt.now(),
163
168
  });
164
169
  rt.consentStore.markActive(eid); // a router-verified in-window profile implies active consent at compile
165
170
  }
@@ -168,18 +173,52 @@ async function refreshProfile(rt, endpointId) {
168
173
  function parseParams(p) {
169
174
  if (p == null)
170
175
  return {};
171
- return typeof p === "string" ? JSON.parse(p) : p;
176
+ if (typeof p !== "string")
177
+ return p;
178
+ try {
179
+ return JSON.parse(p);
180
+ }
181
+ catch {
182
+ // SAFETY (never-throw): a malformed params string returns {} so the caller's
183
+ // `max_allowed == null` branch fires → decision = "block" (fail-closed). An
184
+ // uncaught throw out of the synchronous isAllowed turns a partner's permissive
185
+ // catch into a fail-OPEN bypass — see the whole-body guard in isAllowed.
186
+ return {};
187
+ }
172
188
  }
173
189
  function failClosedVerdict(rt, category) {
174
190
  return { decision: "block", failMode: "block", ruleSlug: category, ruleRef: null, confirm: async () => undefined };
175
191
  }
176
192
  function isAllowed(rt, args) {
193
+ // WHOLE-BODY SAFETY GUARD: isAllowed is the complete typed contract. Any throw
194
+ // inside the decision body (corruption, a future refactor, an unexpected shape)
195
+ // degrades to a fail-closed block. A partner catch can never be fail-open because
196
+ // there is nothing to catch.
197
+ try {
198
+ return isAllowedInner(rt, args);
199
+ }
200
+ catch {
201
+ // args may itself be null/undefined (a degenerate caller); optional-chain so the
202
+ // catch handler can NEVER throw a second error out of isAllowed — totality is absolute.
203
+ return failClosedVerdict(rt, args?.category);
204
+ }
205
+ }
206
+ function isAllowedInner(rt, args) {
177
207
  const eid = args.endpointId ?? defaultEid(rt);
178
208
  const prof = rt.profileStore.get(eid);
179
209
  if (!prof)
180
210
  return failClosedVerdict(rt, args.category); // missing profile
181
211
  if (!rt.consentStore.isActive(eid))
182
212
  return failClosedVerdict(rt, args.category); // no active consent
213
+ // BOUNDED-STALENESS (stale-closed): an SDK-enforced freshness floor independent of
214
+ // the census window. A profile older than profileMaxAgeMs (default 60s) blocks, so a
215
+ // tightened rule cannot be served stale for the life of a long census window.
216
+ const maxAge = rt.cfg.profileMaxAgeMs ?? 60_000;
217
+ // Fail closed on a non-finite cachedAt too: a NaN comparison is false, which would
218
+ // silently SKIP the freshness floor (fail-open) if a future write path forgot to stamp.
219
+ if (!Number.isFinite(prof.cachedAt) || rt.now() - prof.cachedAt > maxAge) {
220
+ return failClosedVerdict(rt, args.category);
221
+ }
183
222
  const _na = Date.parse(prof.window.not_after);
184
223
  const _nb = Date.parse(prof.window.not_before);
185
224
  if (!Number.isFinite(_na) || _na < rt.now() || !Number.isFinite(_nb) || _nb > rt.now())
@@ -1 +1 @@
1
- {"version":3,"file":"gatekeeper.js","sourceRoot":"","sources":["../src/gatekeeper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gatekeeper.js","sourceRoot":"","sources":["../src/gatekeeper.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  export { createGatekeeper } from "./gatekeeper.js";
2
2
  export { contentAgeFor } from "./crosswalk.js";
3
3
  export { RuleRefRequired, NoRatingMappingError, UnmappedRatingValueError, AssuranceLevelError, type RatingMapping, type GatekeeperConfig, type Verdict, type GatekeeperCategory, type VerifiedProfile, type Gatekeeper, type ReportParentChangeArgs, type ReportParentChangeResult, } from "./types.js";
4
+ export { TrustListCache } from "./trust-list-cache.js";
5
+ export { makePhosraTrustListResolver, type PhosraSandboxEnv } from "./trust-list-resolver.js";
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,OAAO,EACZ,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,GAC9B,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,OAAO,EACZ,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,GAC9B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,2BAA2B,EAAE,KAAK,gBAAgB,EAAE,MAAM,0BAA0B,CAAC"}
package/dist/index.js CHANGED
@@ -2,4 +2,6 @@
2
2
  export { createGatekeeper } from "./gatekeeper.js";
3
3
  export { contentAgeFor } from "./crosswalk.js";
4
4
  export { RuleRefRequired, NoRatingMappingError, UnmappedRatingValueError, AssuranceLevelError, } from "./types.js";
5
+ export { TrustListCache } from "./trust-list-cache.js";
6
+ export { makePhosraTrustListResolver } from "./trust-list-resolver.js";
5
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,GASpB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,GASpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,2BAA2B,EAAyB,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { type SenderKey } from "@openchildsafety/ocss";
2
+ import type { GatekeeperConfig, GatekeeperCategory } from "./types.js";
3
+ export interface SignedStack {
4
+ endpointId: string;
5
+ routerKeyId: string;
6
+ trustRootXB64Url: string;
7
+ /** Deterministic gatekeeper signing key (SenderKey) for the platform side. */
8
+ gatekeeperSigningKey: SenderKey;
9
+ /** Stubbed fetch: well-known -> trust list; /enforcement-profiles/{id} -> profile (404 for unknown). */
10
+ fetchImpl: typeof fetch;
11
+ config(overrides?: Partial<GatekeeperConfig>): GatekeeperConfig;
12
+ /**
13
+ * Re-seal the served profile with the given categories (and optional doc overrides).
14
+ * Also clears any active fault — restores healthy 200 serving.
15
+ */
16
+ setProfile(categories: GatekeeperCategory[], docOverrides?: Record<string, unknown>): void;
17
+ /** Tamper the served profile signature (negative test). */
18
+ corruptProfileSig(): void;
19
+ /**
20
+ * Fault: the profile endpoint returns 404 (simulated revocation / missing profile).
21
+ * refreshProfile() will throw (or not write a cache entry), so isAllowed → block.
22
+ */
23
+ dropProfile(): void;
24
+ /**
25
+ * Fault: the profile endpoint returns 500 (network/upstream failure).
26
+ * refreshProfile() will throw (or not write a cache entry), so isAllowed → block.
27
+ */
28
+ simulateFetchError(): void;
29
+ /**
30
+ * Fault: re-sign the served profile with a window.not_after in the past.
31
+ * The gatekeeper's window check rejects the expired profile → isAllowed → block.
32
+ */
33
+ expireProfile(): void;
34
+ }
35
+ export declare function makeSignedStack(): SignedStack;
36
+ //# sourceMappingURL=testing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAkBA,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAgBvE,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,8EAA8E;IAC9E,oBAAoB,EAAE,SAAS,CAAC;IAChC,wGAAwG;IACxG,SAAS,EAAE,OAAO,KAAK,CAAC;IACxB,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC;IAChE;;;OAGG;IACH,UAAU,CAAC,UAAU,EAAE,kBAAkB,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC3F,2DAA2D;IAC3D,iBAAiB,IAAI,IAAI,CAAC;IAC1B;;;OAGG;IACH,WAAW,IAAI,IAAI,CAAC;IACpB;;;OAGG;IACH,kBAAkB,IAAI,IAAI,CAAC;IAC3B;;;OAGG;IACH,aAAa,IAAI,IAAI,CAAC;CACvB;AAED,wBAAgB,eAAe,IAAI,WAAW,CAwI7C"}
@@ -0,0 +1,164 @@
1
+ /**
2
+ * @phosra/gatekeeper/testing — published in-process signed stack for unit tests.
3
+ *
4
+ * Exports `makeSignedStack()` which builds a real in-process Ed25519 root + signed
5
+ * trust-list + signed enforcement profile + a `fetchImpl` closure. Partners can
6
+ * unit-test `isAllowed` with NO network calls and prove the SDK's fail-closed contract
7
+ * via the three fault injectors:
8
+ *
9
+ * dropProfile() → 404 → no cache written → block
10
+ * simulateFetchError() → 500 → fetch failure → block
11
+ * expireProfile() → window in the past → block
12
+ *
13
+ * setProfile(categories) restores healthy 200 serving and clears any active fault.
14
+ *
15
+ * The base64/canon trap is hidden here — partners never touch the alphabet.
16
+ */
17
+ import { generateKeyPairSync, sign as nodeSign } from "node:crypto";
18
+ import { marshal } from "@openchildsafety/ocss/canon";
19
+ import { b64urlRaw, SPEC_VERSION } from "@openchildsafety/ocss";
20
+ function genEd25519() {
21
+ const { publicKey, privateKey } = generateKeyPairSync("ed25519");
22
+ const xB64Url = publicKey.export({ format: "jwk" }).x; // base64url-raw
23
+ return { privateKey, xB64Url };
24
+ }
25
+ function signRaw(privateKey, msg) {
26
+ return b64urlRaw(new Uint8Array(nodeSign(null, Buffer.from(msg, "utf-8"), privateKey)));
27
+ }
28
+ const ROUTER_DID = "did:ocss:phosra-router";
29
+ const ROUTER_KID = "router-sandbox-2026-06";
30
+ const ROUTER_KEY_ID = `${ROUTER_DID}#${ROUTER_KID}`;
31
+ const ENDPOINT_ID = "endpoint-test-mia";
32
+ export function makeSignedStack() {
33
+ const root = genEd25519();
34
+ const router = genEd25519();
35
+ // SignedDocument.document MUST be a string (not Uint8Array): verifyDocument throws
36
+ // "nil or malformed signed document" when typeof document !== "string", and
37
+ // JSON.stringify(Uint8Array) emits a numeric-keyed object that survives res.json()
38
+ // as an object (never back to Uint8Array). Decode the canon bytes to a UTF-8 string
39
+ // once here; the sign step takes Buffer.from(canon, "utf-8") which round-trips identically.
40
+ const enc = (o) => new TextDecoder().decode(marshal(o));
41
+ const trustListDoc = {
42
+ document_type: "trust_list_issue",
43
+ schema_version: 1,
44
+ ocss_version: SPEC_VERSION,
45
+ issue: {
46
+ number: 1,
47
+ issued_at: "2026-06-26T00:00:00Z",
48
+ prev_issue_digest: "0".repeat(64),
49
+ },
50
+ entries: [
51
+ {
52
+ entity: "Phosra Router",
53
+ did: ROUTER_DID,
54
+ tier: "accredited",
55
+ jurisdiction: ["US"],
56
+ status: "active",
57
+ valid_through: "2030-01-01T00:00:00Z",
58
+ jwks: { signing_keys: [{ kty: "OKP", crv: "Ed25519", x: router.xB64Url, kid: ROUTER_KID }] },
59
+ clock_skew_tolerance_sec: 30,
60
+ },
61
+ ],
62
+ federation_health: { band: "green", accredited_count: 1, reasons: [] },
63
+ };
64
+ const trustListCanon = enc(trustListDoc);
65
+ const signedTrustList = {
66
+ document: trustListCanon,
67
+ key_id: "root#root-test",
68
+ alg: "ed25519",
69
+ sig: signRaw(root.privateKey, trustListCanon),
70
+ };
71
+ let profileMode = "ok";
72
+ function buildProfile(categories, docOverrides) {
73
+ const doc = {
74
+ document_type: "enforcement_profile",
75
+ ocss_version: SPEC_VERSION,
76
+ profile_ref: "sha256:" + "0".repeat(64),
77
+ window: { not_before: "2026-06-26T00:00:00Z", not_after: "2030-01-01T00:00:00Z" },
78
+ categories,
79
+ rotation_epoch: 1,
80
+ token_binding: "0".repeat(64),
81
+ ...docOverrides,
82
+ };
83
+ const canon = enc(doc);
84
+ return { document: canon, key_id: ROUTER_KEY_ID, alg: "ed25519", sig: signRaw(router.privateKey, canon) };
85
+ }
86
+ let servedCategories = [
87
+ {
88
+ category: "content_rating",
89
+ decision: "allow",
90
+ fail_mode: "closed",
91
+ rule_slug: "content_rating",
92
+ params: { family: "numeric_threshold", scale: "ratings_age", max_allowed: 13 },
93
+ rule_ref: "rr-mia-content_rating",
94
+ },
95
+ ];
96
+ let servedDocOverrides;
97
+ let servedProfile = buildProfile(servedCategories, servedDocOverrides);
98
+ const fetchImpl = async (input) => {
99
+ const url = String(input);
100
+ if (url.endsWith("/.well-known/ocss/trust-list")) {
101
+ return new Response(JSON.stringify(signedTrustList), { status: 200 });
102
+ }
103
+ if (url.includes(`/api/v1/enforcement-profiles/${ENDPOINT_ID}`)) {
104
+ if (profileMode === "drop")
105
+ return new Response("not found", { status: 404 });
106
+ if (profileMode === "error")
107
+ return new Response("upstream error", { status: 500 });
108
+ return new Response(JSON.stringify(servedProfile), { status: 200 });
109
+ }
110
+ if (url.includes("/api/v1/enforcement-profiles/")) {
111
+ return new Response("not found", { status: 404 }); // §9.3(b) wrong/unknown resolver
112
+ }
113
+ return new Response("no route", { status: 500 });
114
+ };
115
+ function seedFor(slug) {
116
+ const out = new Uint8Array(32).fill(0x01);
117
+ out.set(new TextEncoder().encode(slug).subarray(0, 32), 0);
118
+ return out;
119
+ }
120
+ return {
121
+ endpointId: ENDPOINT_ID,
122
+ routerKeyId: ROUTER_KEY_ID,
123
+ trustRootXB64Url: root.xB64Url,
124
+ gatekeeperSigningKey: { seed: seedFor("notflix"), keyID: "did:ocss:notflix#notflix-2026-06" },
125
+ fetchImpl,
126
+ config(overrides) {
127
+ return {
128
+ platformDid: "did:ocss:notflix",
129
+ platformKeyId: "notflix-2026-06",
130
+ gatekeeperSigningKey: { seed: seedFor("notflix"), keyID: "did:ocss:notflix#notflix-2026-06" },
131
+ censusBaseUrl: "https://census.example",
132
+ trustRootXB64Url: root.xB64Url,
133
+ endpointId: ENDPOINT_ID,
134
+ ratingMappings: [{ ocssCategory: "content_rating", myField: "maturity", vocabulary: "mpaa" }],
135
+ fetchImpl,
136
+ now: () => Date.parse("2027-01-01T00:00:00Z"),
137
+ ...overrides,
138
+ };
139
+ },
140
+ setProfile(categories, docOverrides) {
141
+ profileMode = "ok"; // a fresh good profile clears any prior fault
142
+ servedCategories = categories;
143
+ servedDocOverrides = docOverrides;
144
+ servedProfile = buildProfile(categories, docOverrides);
145
+ },
146
+ corruptProfileSig() {
147
+ servedProfile = { ...servedProfile, sig: b64urlRaw(new Uint8Array(64)) };
148
+ },
149
+ dropProfile() {
150
+ profileMode = "drop";
151
+ },
152
+ simulateFetchError() {
153
+ profileMode = "error";
154
+ },
155
+ expireProfile() {
156
+ profileMode = "ok";
157
+ servedProfile = buildProfile(servedCategories, {
158
+ ...servedDocOverrides,
159
+ window: { not_before: "2019-01-01T00:00:00Z", not_after: "2020-01-01T00:00:00Z" },
160
+ });
161
+ },
162
+ };
163
+ }
164
+ //# sourceMappingURL=testing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { TrustListCache } from "./trust-list-cache.js";
2
+ /** Hosted Phosra sandbox environments with bundled OCSS roots. */
3
+ export type PhosraSandboxEnv = "sandbox-staging" | "sandbox-production";
4
+ /**
5
+ * Build a TrustListCache wired to a hosted Phosra sandbox: bundles the census base
6
+ * URL and the verify-to-root public key so partners never source the root by hand
7
+ * (the #1 trust-root wiring pitfall). Verifies the Trust List to root on refresh()
8
+ * exactly like the manual path — no weakening of verify-to-root.
9
+ */
10
+ export declare function makePhosraTrustListResolver(env: PhosraSandboxEnv, opts?: {
11
+ fetchImpl?: typeof fetch;
12
+ now?: () => number;
13
+ }): TrustListCache;
14
+ //# sourceMappingURL=trust-list-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust-list-resolver.d.ts","sourceRoot":"","sources":["../src/trust-list-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,kEAAkE;AAClE,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,GAAG,oBAAoB,CAAC;AAkBxE;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,gBAAgB,EACrB,IAAI,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAAE,GACtD,cAAc,CAahB"}
@@ -0,0 +1,35 @@
1
+ import { TrustListCache } from "./trust-list-cache.js";
2
+ /**
3
+ * Bundled hosted-sandbox census base URLs + their OCSS Trust-List ROOT public X
4
+ * (base64url-raw, `-_` unpadded — PUBLIC key material, safe to embed). These match
5
+ * the live `root-sandbox-2026-06` root key_id served at /.well-known/ocss/trust-list.
6
+ */
7
+ const ENVS = {
8
+ "sandbox-staging": {
9
+ baseUrl: "https://phosra-api-sandbox-staging.up.railway.app",
10
+ trustRootXB64Url: "jDWZfB70DM8B3ZnPG8FQ0tnanqLgwJX4ZMr_E1Ugv3w",
11
+ },
12
+ "sandbox-production": {
13
+ baseUrl: "https://phosra-api-sandbox-production.up.railway.app",
14
+ trustRootXB64Url: "CMHWy3vUAiEcYDdE_bDvkRuEqwxkklS0tV-TYHJTlWU",
15
+ },
16
+ };
17
+ /**
18
+ * Build a TrustListCache wired to a hosted Phosra sandbox: bundles the census base
19
+ * URL and the verify-to-root public key so partners never source the root by hand
20
+ * (the #1 trust-root wiring pitfall). Verifies the Trust List to root on refresh()
21
+ * exactly like the manual path — no weakening of verify-to-root.
22
+ */
23
+ export function makePhosraTrustListResolver(env, opts) {
24
+ const cfg = ENVS[env];
25
+ if (!cfg) {
26
+ throw new Error(`@phosra/gatekeeper: unknown env "${env}" — expected one of ${Object.keys(ENVS).join(", ")}`);
27
+ }
28
+ return new TrustListCache({
29
+ fetchImpl: opts?.fetchImpl ?? fetch,
30
+ baseUrl: cfg.baseUrl,
31
+ trustRootXB64Url: cfg.trustRootXB64Url,
32
+ now: opts?.now ?? (() => Date.now()),
33
+ });
34
+ }
35
+ //# sourceMappingURL=trust-list-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust-list-resolver.js","sourceRoot":"","sources":["../src/trust-list-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAKvD;;;;GAIG;AACH,MAAM,IAAI,GAA4E;IACpF,iBAAiB,EAAE;QACjB,OAAO,EAAE,mDAAmD;QAC5D,gBAAgB,EAAE,6CAA6C;KAChE;IACD,oBAAoB,EAAE;QACpB,OAAO,EAAE,sDAAsD;QAC/D,gBAAgB,EAAE,6CAA6C;KAChE;CACF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CACzC,GAAqB,EACrB,IAAuD;IAEvD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,oCAAoC,GAAG,uBAAuB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC7F,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,cAAc,CAAC;QACxB,SAAS,EAAE,IAAI,EAAE,SAAS,IAAI,KAAK;QACnC,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;QACtC,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;KACrC,CAAC,CAAC;AACL,CAAC"}
package/dist/types.d.ts CHANGED
@@ -16,13 +16,28 @@ export interface GatekeeperConfig {
16
16
  * router-signed, not sealed to this key). NEVER shared. */
17
17
  platformPayloadKeyJwk?: JWK;
18
18
  censusBaseUrl: string;
19
- /** Ed25519 root X (base64url-raw); verifies the Trust List to root. */
19
+ /**
20
+ * Ed25519 root X (base64url-raw, `-_` unpadded, NO `=` padding); verifies the
21
+ * Trust List to root. NOTE: this is a DIFFERENT alphabet from the request
22
+ * `Signature`/`Content-Digest` headers (those are std-base64 `+/` padded, and are
23
+ * produced internally by signRequest — you never supply them). Supplying a padded
24
+ * or std-base64 root here yields an opaque "root signature invalid". Prefer
25
+ * makePhosraTrustListResolver(env) which bundles the correct root for you.
26
+ */
20
27
  trustRootXB64Url: string;
21
28
  /** High-entropy §9.3(b) bound-resolver label; presenting it IS authentication. */
22
29
  endpointId: string;
23
30
  ratingMappings: RatingMapping[];
24
31
  tlRefreshIntervalMs?: number;
25
32
  pollIntervalMs?: number;
33
+ /**
34
+ * SDK-enforced bounded-staleness floor in milliseconds (default 60_000 = 60s).
35
+ * A cached enforcement profile older than this is treated as stale and produces a
36
+ * fail-closed block, INDEPENDENT of (and tighter than) the census-signed
37
+ * `window.not_after`. This guarantees a tightened rule propagates within the floor
38
+ * even if the census issued a long window. Set lower for stricter freshness.
39
+ */
40
+ profileMaxAgeMs?: number;
26
41
  /** Injectable for tests/non-default runtimes. */
27
42
  fetchImpl?: typeof fetch;
28
43
  now?: () => number;
@@ -131,6 +146,12 @@ export interface VerifiedProfile {
131
146
  not_after: string;
132
147
  };
133
148
  categories: GatekeeperCategory[];
149
+ /**
150
+ * Epoch-ms timestamp set by the SDK at cache-write time (refreshProfile). NOT
151
+ * caller-trusted — _testInjectProfile re-stamps it. Drives the bounded-staleness
152
+ * floor in isAllowed (profileMaxAgeMs).
153
+ */
154
+ cachedAt: number;
134
155
  }
135
156
  export interface Gatekeeper {
136
157
  refreshTrustList(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA8EA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAqC;IACrE,oEAAoE;IACpE,eAAe,EAAgB,CAAC;IAChC,QAAQ,EAAuB,CAAC;IAChC,yBAAyB,EAAM,CAAC;IAChC,oBAAoB,EAAW,CAAC;IAChC,oBAAoB,EAAW,CAAC;IAChC,oBAAoB,EAAW,CAAC;IAChC,wBAAwB,EAAO,CAAC;IAChC,wBAAwB,EAAO,CAAC;IAChC,4BAA4B,EAAG,CAAC;IAChC,oEAAoE;IACpE,yEAAyE;IACzE,4EAA4E;IAC5E,kEAAkE;IAClE,sBAAsB,EAAW,CAAC;IAClC,+BAA+B,EAAE,CAAC;CAC1B,CAAC;AAEX;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAC7D,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC;KAClC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,0DAA0D,CAAC;KAC1F,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CACzB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAqC;IAC9D,aAAa,EAAO,CAAC;IACrB,iBAAiB,EAAG,CAAC;IACrB,SAAS,EAAW,CAAC;IACrB,iBAAiB,EAAG,CAAC;IACrB,kBAAkB,EAAE,CAAC;CACb,CAAC;AAgEX,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxC;QACE,KAAK,CAAC,iGAAiG,CAAC,CAAC;QACzG,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAeD,0FAA0F;AAC1F,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,QAAgB;QAC1B,KAAK,CAAC,8CAA8C,QAAQ,qEAAqE,CAAC,CAAC;QACnI,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED;;;sEAGsE;AACtE,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACjD,YAAY,UAAkB,EAAE,WAAmB;QACjD,KAAK,CAAC,wBAAwB,WAAW,gDAAgD,UAAU,iEAAiE,CAAC,CAAC;QACtK,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,QAAgB;QAC1B,KAAK,CACH,8BAA8B,QAAQ,oCAAoC;YAC1E,sFAAsF;YACtF,uDAAuD;YACvD,+EAA+E;YAC/E,uCAAuC,CACxC,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA6FA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAqC;IACrE,oEAAoE;IACpE,eAAe,EAAgB,CAAC;IAChC,QAAQ,EAAuB,CAAC;IAChC,yBAAyB,EAAM,CAAC;IAChC,oBAAoB,EAAW,CAAC;IAChC,oBAAoB,EAAW,CAAC;IAChC,oBAAoB,EAAW,CAAC;IAChC,wBAAwB,EAAO,CAAC;IAChC,wBAAwB,EAAO,CAAC;IAChC,4BAA4B,EAAG,CAAC;IAChC,oEAAoE;IACpE,yEAAyE;IACzE,4EAA4E;IAC5E,kEAAkE;IAClE,sBAAsB,EAAW,CAAC;IAClC,+BAA+B,EAAE,CAAC;CAC1B,CAAC;AAEX;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAC7D,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC;KAClC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,0DAA0D,CAAC;KAC1F,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CACzB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAqC;IAC9D,aAAa,EAAO,CAAC;IACrB,iBAAiB,EAAG,CAAC;IACrB,SAAS,EAAW,CAAC;IACrB,iBAAiB,EAAG,CAAC;IACrB,kBAAkB,EAAE,CAAC;CACb,CAAC;AAsEX,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxC;QACE,KAAK,CAAC,iGAAiG,CAAC,CAAC;QACzG,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAeD,0FAA0F;AAC1F,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,QAAgB;QAC1B,KAAK,CAAC,8CAA8C,QAAQ,qEAAqE,CAAC,CAAC;QACnI,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED;;;sEAGsE;AACtE,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACjD,YAAY,UAAkB,EAAE,WAAmB;QACjD,KAAK,CAAC,wBAAwB,WAAW,gDAAgD,UAAU,iEAAiE,CAAC,CAAC;QACtK,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,QAAgB;QAC1B,KAAK,CACH,8BAA8B,QAAQ,oCAAoC;YAC1E,sFAAsF;YACtF,uDAAuD;YACvD,+EAA+E;YAC/E,uCAAuC,CACxC,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF"}
package/package.json CHANGED
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "@phosra/gatekeeper",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
8
8
  "exports": {
9
9
  ".": { "import": "./dist/index.js", "types": "./dist/index.d.ts" },
10
- "./protocol": { "import": "./dist/protocol.js", "types": "./dist/protocol.d.ts" }
10
+ "./protocol": { "import": "./dist/protocol.js", "types": "./dist/protocol.d.ts" },
11
+ "./testing": { "import": "./dist/testing.js", "types": "./dist/testing.d.ts" }
11
12
  },
12
13
  "files": ["dist", "README.md"],
13
14
  "publishConfig": {