attenu-guard 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.
Files changed (43) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +12 -4
  3. package/dist/cjs/audit.d.ts +1 -0
  4. package/dist/cjs/audit.d.ts.map +1 -1
  5. package/dist/cjs/audit.js +9 -5
  6. package/dist/cjs/audit.js.map +1 -1
  7. package/dist/cjs/canonical.d.ts +21 -69
  8. package/dist/cjs/canonical.d.ts.map +1 -1
  9. package/dist/cjs/canonical.js +198 -171
  10. package/dist/cjs/canonical.js.map +1 -1
  11. package/dist/cjs/evidence.d.ts +1 -0
  12. package/dist/cjs/evidence.d.ts.map +1 -1
  13. package/dist/cjs/evidence.js +8 -3
  14. package/dist/cjs/evidence.js.map +1 -1
  15. package/dist/cjs/index.d.ts +4 -4
  16. package/dist/cjs/index.d.ts.map +1 -1
  17. package/dist/cjs/index.js +14 -5
  18. package/dist/cjs/index.js.map +1 -1
  19. package/dist/cjs/wire.d.ts +136 -1
  20. package/dist/cjs/wire.d.ts.map +1 -1
  21. package/dist/cjs/wire.js +405 -2
  22. package/dist/cjs/wire.js.map +1 -1
  23. package/dist/esm/audit.d.ts +1 -0
  24. package/dist/esm/audit.d.ts.map +1 -1
  25. package/dist/esm/audit.js +10 -6
  26. package/dist/esm/audit.js.map +1 -1
  27. package/dist/esm/canonical.d.ts +21 -69
  28. package/dist/esm/canonical.d.ts.map +1 -1
  29. package/dist/esm/canonical.js +192 -168
  30. package/dist/esm/canonical.js.map +1 -1
  31. package/dist/esm/evidence.d.ts +1 -0
  32. package/dist/esm/evidence.d.ts.map +1 -1
  33. package/dist/esm/evidence.js +8 -3
  34. package/dist/esm/evidence.js.map +1 -1
  35. package/dist/esm/index.d.ts +4 -4
  36. package/dist/esm/index.d.ts.map +1 -1
  37. package/dist/esm/index.js +3 -3
  38. package/dist/esm/index.js.map +1 -1
  39. package/dist/esm/wire.d.ts +136 -1
  40. package/dist/esm/wire.d.ts.map +1 -1
  41. package/dist/esm/wire.js +400 -2
  42. package/dist/esm/wire.js.map +1 -1
  43. package/package.json +1 -1
package/dist/cjs/wire.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * wire.ts — the signing and verification backends.
3
+ * wire.ts — the Delegation Token: signing backends + offline chain verification.
4
4
  *
5
5
  * Anchors and delegation tokens are signed over canonical JSON bytes. Two
6
6
  * backends ship, matching the Python library's `attenu_guard.wire`:
@@ -9,13 +9,34 @@
9
9
  * `Ed25519Signer` the production signer the Internet-Draft requires, with
10
10
  * `Ed25519Verifier` for anyone holding only the public half.
11
11
  *
12
+ * The second half of the module is `load()`: the Offline Verification Algorithm
13
+ * of draft-asor-wimse-agent-delegation-chain-00, ported from `wire.py`'s
14
+ * `load()`. A Delegation Token is a compact, JWT-shaped, JWS-signed object
15
+ * carrying one hop's `Authority` plus enough chain-linkage state (`del_depth`,
16
+ * `del_max_depth`, `par_hash`) that an Enforcement Point can verify an entire
17
+ * Delegation Chain with no call to an authorization server. The 17 interop
18
+ * vectors under `test/fixtures/vectors/` are the check on that port: they are
19
+ * generated by the Python reference implementation and each declares the exact
20
+ * reason it must be accepted or rejected for.
21
+ *
22
+ * This module MINTS nothing. Serialization (`serialize`/`serialize_chain` in
23
+ * Python) is the issuing side and lives with whoever holds the signing key;
24
+ * what a TypeScript enforcement point needs is the verifying side.
25
+ *
12
26
  * Everything here is built on Node's own `node:crypto`, so the package keeps
13
27
  * zero runtime dependencies. Ed25519 keys are wrapped in the fixed DER prefixes
14
28
  * below rather than pulled from a library.
15
29
  */
16
30
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.Ed25519Verifier = exports.Ed25519Signer = exports.HS256TestSigner = void 0;
31
+ exports.VerifiedChain = exports.WireError = exports.WireReasonCode = exports.Ed25519Verifier = exports.Ed25519Signer = exports.HS256TestSigner = void 0;
32
+ exports.b64urlEncode = b64urlEncode;
33
+ exports.b64urlDecode = b64urlDecode;
34
+ exports.load = load;
18
35
  const node_crypto_1 = require("node:crypto");
36
+ const node_util_1 = require("node:util");
37
+ const authority_js_1 = require("./authority.js");
38
+ const canonical_js_1 = require("./canonical.js");
39
+ const reasons_js_1 = require("./reasons.js");
19
40
  /**
20
41
  * stdlib HMAC-SHA256 signer — the default for tests, examples and local dev,
21
42
  * because it needs no key management at all.
@@ -162,4 +183,386 @@ class Ed25519Verifier {
162
183
  }
163
184
  }
164
185
  exports.Ed25519Verifier = Ed25519Verifier;
186
+ // ===========================================================================
187
+ // base64url (RFC 7515 §2: standard base64, `+`/`/` -> `-`/`_`, no `=` padding)
188
+ // ===========================================================================
189
+ /** Encode `data` as unpadded base64url — the encoding every token part uses. */
190
+ function b64urlEncode(data) {
191
+ return data.toString("base64url");
192
+ }
193
+ const B64URL = /^[A-Za-z0-9_-]*$/;
194
+ /**
195
+ * Decode unpadded base64url. Node re-pads internally, so a token part never has
196
+ * to carry `=`.
197
+ *
198
+ * The alphabet and length are checked first, and a bad string throws. Node's own
199
+ * decoder is lenient — it silently drops characters outside the alphabet — which
200
+ * would turn a garbage `par_hash` into a *hash* mismatch instead of the
201
+ * malformed input it actually is. Python's `b64url_decode` raises there and
202
+ * `load()` reports `malformed`; this check is what keeps the two reporting the
203
+ * same reason for the same bytes. A length of 1 mod 4 encodes no whole byte and
204
+ * is rejected for the same reason.
205
+ */
206
+ function b64urlDecode(s) {
207
+ if (!B64URL.test(s) || s.length % 4 === 1) {
208
+ throw new Error(`not valid base64url: ${JSON.stringify(s)}`);
209
+ }
210
+ return Buffer.from(s, "base64url");
211
+ }
212
+ // ===========================================================================
213
+ // Errors / reason codes
214
+ // ===========================================================================
215
+ /**
216
+ * Wire-verification-specific reason codes, string constants (same pattern as
217
+ * `ReasonCode` — see reasons.ts). `EXPIRED` is not reinvented: it aliases
218
+ * `ReasonCode.EXPIRED` verbatim (identical string, identical meaning: a
219
+ * time-bound invariant failed), covering both "now is past exp" and "exp is not
220
+ * monotonic along the chain" — the draft treats both as the same class of check
221
+ * (verification step 5).
222
+ */
223
+ exports.WireReasonCode = {
224
+ SIGNATURE_INVALID: "signature_invalid",
225
+ PAR_HASH_MISMATCH: "par_hash_mismatch",
226
+ DEPTH_INVALID: "depth_invalid",
227
+ NOT_NARROWER: "not_narrower",
228
+ MALFORMED: "malformed",
229
+ NON_FINITE: "non_finite",
230
+ DUPLICATE_MEMBER: "duplicate_member",
231
+ CANONICALIZATION_REQUIRED: "canonicalization_required",
232
+ NON_CANONICAL: "non_canonical",
233
+ EXPIRED: reasons_js_1.ReasonCode.EXPIRED, // "expired" — reuse, don't reinvent
234
+ };
235
+ /**
236
+ * Thrown by `load()` on the FIRST verification failure (the draft: "denying on
237
+ * the first failure") — offline chain verification is fail-fast and fail-closed,
238
+ * not an aggregation of every problem found.
239
+ *
240
+ * The constructor takes `(reason, message)`, mirroring Python's `WireError` so
241
+ * the two `load()`s read the same line for line. That is the opposite order to
242
+ * `AuthorityError(message, reason)`; here the reason code is the contract and
243
+ * the message is the human gloss.
244
+ */
245
+ class WireError extends Error {
246
+ reason;
247
+ constructor(reason, message = "") {
248
+ super(message);
249
+ this.name = "WireError";
250
+ this.reason = reason;
251
+ }
252
+ }
253
+ exports.WireError = WireError;
254
+ function isJsonObject(value) {
255
+ return value !== null && typeof value === "object" && !Array.isArray(value);
256
+ }
257
+ function parseToken(token) {
258
+ const parts = token.split(".");
259
+ if (parts.length !== 3) {
260
+ throw new WireError(exports.WireReasonCode.MALFORMED, `expected 3 dot-separated parts, got ${parts.length}`);
261
+ }
262
+ const [headerB64, payloadB64, sigB64] = parts;
263
+ let headerBytes;
264
+ let payloadBytes;
265
+ let sig;
266
+ try {
267
+ headerBytes = b64urlDecode(headerB64);
268
+ payloadBytes = b64urlDecode(payloadB64);
269
+ sig = b64urlDecode(sigB64);
270
+ }
271
+ catch (e) {
272
+ throw new WireError(exports.WireReasonCode.MALFORMED, `could not decode token: ${String(e)}`);
273
+ }
274
+ let headerRaw;
275
+ let payloadRaw;
276
+ try {
277
+ const decoder = new node_util_1.TextDecoder("utf-8", { fatal: true });
278
+ headerRaw = (0, canonical_js_1.parseJson)(decoder.decode(headerBytes));
279
+ payloadRaw = (0, canonical_js_1.parseJson)(decoder.decode(payloadBytes));
280
+ }
281
+ catch (e) {
282
+ if (e instanceof canonical_js_1.DuplicateMemberError) {
283
+ throw new WireError(exports.WireReasonCode.DUPLICATE_MEMBER, e.message);
284
+ }
285
+ if (e instanceof canonical_js_1.NonFiniteNumberError) {
286
+ throw new WireError(exports.WireReasonCode.NON_FINITE, e.message);
287
+ }
288
+ if (e instanceof canonical_js_1.CanonicalizationError) {
289
+ throw new WireError(exports.WireReasonCode.NON_CANONICAL, e.message);
290
+ }
291
+ throw new WireError(exports.WireReasonCode.MALFORMED, `could not parse token JSON: ${String(e)}`);
292
+ }
293
+ const header = (0, canonical_js_1.toPlain)(headerRaw);
294
+ const payload = (0, canonical_js_1.toPlain)(payloadRaw);
295
+ if (!isJsonObject(header) || !isJsonObject(payload)) {
296
+ throw new WireError(exports.WireReasonCode.MALFORMED, "header/payload must be JSON objects");
297
+ }
298
+ if (header["c14n"] !== "JCS") {
299
+ throw new WireError(exports.WireReasonCode.CANONICALIZATION_REQUIRED, "token header must declare c14n='JCS'");
300
+ }
301
+ let canonicalHeader;
302
+ let canonicalPayload;
303
+ try {
304
+ canonicalHeader = (0, canonical_js_1.canonicalJson)(headerRaw);
305
+ canonicalPayload = (0, canonical_js_1.canonicalJson)(payloadRaw);
306
+ }
307
+ catch (e) {
308
+ if (e instanceof canonical_js_1.NonFiniteNumberError) {
309
+ throw new WireError(exports.WireReasonCode.NON_FINITE, e.message);
310
+ }
311
+ if (e instanceof canonical_js_1.CanonicalizationError) {
312
+ throw new WireError(exports.WireReasonCode.NON_CANONICAL, e.message);
313
+ }
314
+ throw e;
315
+ }
316
+ if (!headerBytes.equals(Buffer.from(canonicalHeader, "utf8")) ||
317
+ !payloadBytes.equals(Buffer.from(canonicalPayload, "utf8"))) {
318
+ throw new WireError(exports.WireReasonCode.NON_CANONICAL, "token header and payload must be RFC 8785 JCS bytes");
319
+ }
320
+ return {
321
+ header,
322
+ payload,
323
+ payloadRaw: payloadRaw,
324
+ sig,
325
+ // ASCII, not utf8: the signing input is by definition the two base64url
326
+ // parts and a dot, so any byte outside ASCII could not have decoded.
327
+ signingInput: Buffer.from(`${headerB64}.${payloadB64}`, "ascii"),
328
+ };
329
+ }
330
+ /**
331
+ * Rebuild the FULL `Authority` a token carries, including `ttl` (recovered as
332
+ * `exp - iat`), so `load()` can hand the very same `Authority.isNarrowerThan`
333
+ * the library uses for in-process attenuation. The draft's subsumption relation
334
+ * and the library relation must be the same relation, so this reconstitutes an
335
+ * `Authority` rather than comparing claim shapes by hand.
336
+ *
337
+ * `ttl` is deliberately absent from `authorization_details` on the wire: token
338
+ * lifetime is carried once, at the top level, in the standard `iat`/`exp`
339
+ * claims, where it cannot drift out of sync with itself.
340
+ */
341
+ function authorityFromPayload(payload) {
342
+ const details = payload["authorization_details"];
343
+ if (!Array.isArray(details) || details.length === 0) {
344
+ throw new WireError(exports.WireReasonCode.MALFORMED, "authorization_details missing or empty");
345
+ }
346
+ const d0 = details[0];
347
+ if (!isJsonObject(d0) || d0["type"] !== "agent_delegation") {
348
+ throw new WireError(exports.WireReasonCode.MALFORMED, "authorization_details[0].type must be 'agent_delegation'");
349
+ }
350
+ const iat = payload["iat"];
351
+ const exp = payload["exp"];
352
+ if (typeof iat !== "number" || typeof exp !== "number") {
353
+ throw new WireError(exports.WireReasonCode.MALFORMED, "iat/exp missing or not numeric");
354
+ }
355
+ const wire = {
356
+ scopes: d0["scopes"] ?? [],
357
+ constraints: d0["constraints"] ?? [],
358
+ ttl: exp - iat,
359
+ };
360
+ try {
361
+ return authority_js_1.Authority.fromWire(wire);
362
+ }
363
+ catch (e) {
364
+ // A malformed constraint shape, and anything else the ceiling registry
365
+ // refuses to build: the token is unusable, so fail closed.
366
+ throw new WireError(exports.WireReasonCode.MALFORMED, `invalid authorization_details: ${String(e)}`);
367
+ }
368
+ }
369
+ // ===========================================================================
370
+ // load() — the Offline Verification Algorithm
371
+ // ===========================================================================
372
+ /**
373
+ * A chain that passed every check in `load()`. It carries only what an
374
+ * Enforcement Point needs afterwards: the LEAF authority — the only authority
375
+ * ever checked against an attempted action — plus enough raw material to log
376
+ * and debug with.
377
+ */
378
+ class VerifiedChain {
379
+ tokens;
380
+ payloads;
381
+ leafAuthority;
382
+ depth;
383
+ delMaxDepth;
384
+ constructor(tokens, payloads, leafAuthority, depth, delMaxDepth) {
385
+ this.tokens = tokens;
386
+ this.payloads = payloads;
387
+ this.leafAuthority = leafAuthority;
388
+ this.depth = depth;
389
+ this.delMaxDepth = delMaxDepth;
390
+ }
391
+ /**
392
+ * Authorize `scope` (with request context `ctx`) against the LEAF authority.
393
+ * Delegates entirely to `Authority.permits`; no policy logic is reimplemented
394
+ * here, so a decision taken from a verified chain and a decision taken
395
+ * in-process are the same decision.
396
+ */
397
+ permits(scope, ctx = null) {
398
+ return this.leafAuthority.permits(scope, ctx);
399
+ }
400
+ }
401
+ exports.VerifiedChain = VerifiedChain;
402
+ /**
403
+ * Run the Offline Verification Algorithm over `tokens` (`[DT_0, ..., DT_n]`,
404
+ * root-first) and, on success, return a `VerifiedChain`. Denies on the FIRST
405
+ * failure by throwing a `WireError` whose `.reason` is one of the
406
+ * `WireReasonCode` constants.
407
+ *
408
+ * `signer` verifies every token in the chain — this implementation's
409
+ * simplifying trust model, matching Python's, is ONE signer/key material per
410
+ * whole chain. A production multi-issuer deployment would generalize `signer`
411
+ * into a `kid`-keyed resolver, which is a straightforward extension left out
412
+ * here.
413
+ *
414
+ * Steps performed, in the draft's own order:
415
+ * 1. JWS signature of every DT_i (+ the alg-confusion guard: the header's
416
+ * declared `alg` must equal `signer.alg` — never trust a token's own claim
417
+ * about which algorithm verifies it), plus the optional `rootKeyIds`
418
+ * restriction on DT_0.
419
+ * 2. The `par_hash` byte-commitment for every i > 0, compared in constant
420
+ * time; DT_0 MUST NOT carry one.
421
+ * 3. `del_depth`/`del_max_depth` bounds.
422
+ * 4. Subsumption: DT_i's authority `isNarrowerThan` DT_{i-1}'s for every
423
+ * i > 0 — REUSES the core's own relation (authority.ts); not
424
+ * reimplemented here.
425
+ * 5. Time: `now <= exp` (and `now >= nbf` where present) for every DT_i, and
426
+ * `exp` non-increasing along the chain.
427
+ *
428
+ * OUT OF SCOPE, as in the Python reference implementation — documented here
429
+ * rather than silently skipped: step 6 (`cnf`/DPoP holder-binding proof) and
430
+ * step 7 (Token Status List revocation). Neither is checked.
431
+ */
432
+ function load(tokens, signer, options = {}) {
433
+ const { rootKeyIds = null, now = 0 } = options;
434
+ if (tokens.length === 0) {
435
+ throw new WireError(exports.WireReasonCode.MALFORMED, "empty token chain");
436
+ }
437
+ const parsed = tokens.map((t) => parseToken(t));
438
+ // ---- step 1: signatures -------------------------------------------------
439
+ const trustedRoots = rootKeyIds === null ? null : new Set(rootKeyIds);
440
+ for (let i = 0; i < parsed.length; i++) {
441
+ const { header, sig, signingInput } = parsed[i];
442
+ const alg = header["alg"];
443
+ if (alg !== signer.alg) {
444
+ throw new WireError(exports.WireReasonCode.SIGNATURE_INVALID, `token[${i}] header alg ${JSON.stringify(alg)} != signer alg ${JSON.stringify(signer.alg)}`);
445
+ }
446
+ const kid = typeof header["kid"] === "string" ? header["kid"] : null;
447
+ if (i === 0 && trustedRoots !== null && !trustedRoots.has(kid)) {
448
+ throw new WireError(exports.WireReasonCode.SIGNATURE_INVALID, `root token kid ${JSON.stringify(kid)} not in trusted rootKeyIds`);
449
+ }
450
+ if (!signer.verify(signingInput, sig, kid)) {
451
+ throw new WireError(exports.WireReasonCode.SIGNATURE_INVALID, `token[${i}] signature does not verify`);
452
+ }
453
+ }
454
+ // ---- step 2: par_hash byte-commitment (constant-time, over hex) ---------
455
+ // The commitment is over the PARENT's signing input — its exact serialized
456
+ // bytes — which is what makes a spliced chain detectable even when the
457
+ // substituted parent is broad enough that subsumption alone would pass it.
458
+ if ("par_hash" in parsed[0].payload) {
459
+ throw new WireError(exports.WireReasonCode.MALFORMED, "DT_0 (del_depth 0) MUST NOT carry par_hash");
460
+ }
461
+ for (let i = 1; i < parsed.length; i++) {
462
+ const expectedHex = (0, node_crypto_1.createHash)("sha256").update(parsed[i - 1].signingInput).digest("hex");
463
+ const gotB64 = parsed[i].payload["par_hash"];
464
+ if (typeof gotB64 !== "string") {
465
+ throw new WireError(exports.WireReasonCode.PAR_HASH_MISMATCH, `token[${i}] missing par_hash`);
466
+ }
467
+ let gotHex;
468
+ try {
469
+ gotHex = b64urlDecode(gotB64).toString("hex");
470
+ }
471
+ catch (e) {
472
+ throw new WireError(exports.WireReasonCode.MALFORMED, `token[${i}] par_hash is not valid base64url: ${String(e)}`);
473
+ }
474
+ if (!constantTimeEqualAscii(expectedHex, gotHex)) {
475
+ throw new WireError(exports.WireReasonCode.PAR_HASH_MISMATCH, `token[${i}] par_hash does not match parent token[${i - 1}]'s signing input ` +
476
+ "(splice, wrong parent, or tampered parent)");
477
+ }
478
+ }
479
+ // ---- step 3: del_depth / del_max_depth ----------------------------------
480
+ const rootPayload = parsed[0].payload;
481
+ if (rootPayload["del_depth"] !== 0) {
482
+ throw new WireError(exports.WireReasonCode.DEPTH_INVALID, "DT_0.del_depth must be 0");
483
+ }
484
+ const delMaxDepth = rootPayload["del_max_depth"];
485
+ if (typeof delMaxDepth !== "number" ||
486
+ !isIntegerLiteral(parsed[0].payloadRaw["del_max_depth"]) ||
487
+ delMaxDepth <= 0) {
488
+ throw new WireError(exports.WireReasonCode.DEPTH_INVALID, "DT_0.del_max_depth must be a positive integer");
489
+ }
490
+ // `del_max_depth` is the maximum chain LENGTH (a token count) while
491
+ // `del_depth` is a 0-based index, so the leaf's index must be strictly below
492
+ // it — a 3-token chain has a leaf at del_depth 2 and needs del_max_depth >= 3.
493
+ const n = parsed.length - 1;
494
+ if (!(n < delMaxDepth)) {
495
+ throw new WireError(exports.WireReasonCode.DEPTH_INVALID, `chain length ${n + 1} exceeds del_max_depth ${delMaxDepth} ` +
496
+ `(need leaf del_depth ${n} < del_max_depth)`);
497
+ }
498
+ for (let i = 0; i < parsed.length; i++) {
499
+ if (parsed[i].payload["del_depth"] !== i) {
500
+ throw new WireError(exports.WireReasonCode.DEPTH_INVALID, `token[${i}].del_depth = ${JSON.stringify(parsed[i].payload["del_depth"])}, expected ${i}`);
501
+ }
502
+ }
503
+ // ---- step 4: subsumption (reuse Authority.isNarrowerThan) ---------------
504
+ const authorities = parsed.map((p) => authorityFromPayload(p.payload));
505
+ for (let i = 1; i < authorities.length; i++) {
506
+ if (!authorities[i].isNarrowerThan(authorities[i - 1])) {
507
+ throw new WireError(exports.WireReasonCode.NOT_NARROWER, `token[${i}] authority is not narrower than token[${i - 1}]'s ` +
508
+ "(widened scope, loosened/dropped ceiling, or looser ttl)");
509
+ }
510
+ }
511
+ // ---- step 5: time -------------------------------------------------------
512
+ let prevExp = null;
513
+ for (let i = 0; i < parsed.length; i++) {
514
+ const payload = parsed[i].payload;
515
+ const exp = payload["exp"];
516
+ if (typeof exp !== "number") {
517
+ throw new WireError(exports.WireReasonCode.MALFORMED, `token[${i}] missing numeric exp`);
518
+ }
519
+ // `nbf` is optional; absent or null means "no lower bound". Anything else
520
+ // that is not a number is refused rather than ignored — Python compares it
521
+ // to `now` directly and raises a TypeError that escapes `load()`, so a
522
+ // caller catching only `WireError` would see the chain neither accepted nor
523
+ // cleanly rejected. Failing closed here is the safe reading of both.
524
+ const nbf = payload["nbf"];
525
+ if (nbf !== undefined && nbf !== null) {
526
+ if (typeof nbf !== "number") {
527
+ throw new WireError(exports.WireReasonCode.MALFORMED, `token[${i}] nbf is not numeric`);
528
+ }
529
+ if (now < nbf) {
530
+ throw new WireError(exports.WireReasonCode.EXPIRED, `token[${i}] not yet valid: now=${now} < nbf=${nbf}`);
531
+ }
532
+ }
533
+ if (now > exp) {
534
+ throw new WireError(exports.WireReasonCode.EXPIRED, `token[${i}] expired: now=${now} > exp=${exp}`);
535
+ }
536
+ if (prevExp !== null && exp > prevExp) {
537
+ throw new WireError(exports.WireReasonCode.EXPIRED, `token[${i}] exp=${exp} exceeds parent token[${i - 1}] exp=${prevExp} ` +
538
+ "(exp must be monotonic non-increasing along the chain)");
539
+ }
540
+ prevExp = exp;
541
+ }
542
+ // ---- steps 6-7: OUT OF SCOPE (see the doc comment) ----------------------
543
+ // step 6: cnf/DPoP holder-binding proof — not checked.
544
+ // step 7: Token Status List revocation — not checked.
545
+ return new VerifiedChain([...tokens], parsed.map((p) => p.payload), authorities[authorities.length - 1], parsed[parsed.length - 1].payload["del_depth"], delMaxDepth);
546
+ }
547
+ /**
548
+ * Did the issuer write an integer, as opposed to a value that merely equals one?
549
+ * `parseJson` keeps every number's original literal precisely so this question
550
+ * can still be asked after parsing.
551
+ */
552
+ function isIntegerLiteral(value) {
553
+ if (value instanceof canonical_js_1.RawNumber)
554
+ return /^-?\d+$/.test(value.raw);
555
+ return typeof value === "number" && Number.isInteger(value);
556
+ }
557
+ /**
558
+ * Compare two ASCII strings without an early exit, so a near-miss and a wild
559
+ * miss take the same time. `timingSafeEqual` throws on unequal lengths, so the
560
+ * length is checked first — that leak is only the digest length, which is fixed
561
+ * and public anyway.
562
+ */
563
+ function constantTimeEqualAscii(a, b) {
564
+ const ab = Buffer.from(a, "ascii");
565
+ const bb = Buffer.from(b, "ascii");
566
+ return ab.length === bb.length && (0, node_crypto_1.timingSafeEqual)(ab, bb);
567
+ }
165
568
  //# sourceMappingURL=wire.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wire.js","sourceRoot":"","sources":["../../src/wire.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wire.js","sourceRoot":"","sources":["../../src/wire.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,7 @@ export interface Sink {
23
23
  /** A signed external commitment to a chain head. */
24
24
  export interface Anchor {
25
25
  v: number;
26
+ c14n: "JCS";
26
27
  chain_id: string;
27
28
  seq: number;
28
29
  head: string;
@@ -1 +1 @@
1
- {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/audit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/audit.ts"],"names":[],"mappings":"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"}
package/dist/esm/audit.js CHANGED
@@ -13,7 +13,7 @@
13
13
  import { createHash } from "node:crypto";
14
14
  import { appendFileSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
15
15
  import { dirname } from "node:path";
16
- import { canonicalBytes, parseJson, pyJsonDumps, toPlain, } from "./canonical.js";
16
+ import { canonicalBytes, canonicalJson, parseJson, toPlain, } from "./canonical.js";
17
17
  export const SCHEMA_VERSION = 1;
18
18
  export const GENESIS = "0".repeat(64);
19
19
  /** `sha256(prev_hash || canonical(event-without-hash))`, as hex. */
@@ -59,6 +59,7 @@ export class AuditLog {
59
59
  append(event, ts, fields = {}) {
60
60
  const payload = {
61
61
  v: SCHEMA_VERSION,
62
+ c14n: "JCS",
62
63
  seq: this.seq,
63
64
  ts,
64
65
  event,
@@ -70,9 +71,7 @@ export class AuditLog {
70
71
  this.seq += 1;
71
72
  this._entries.push(payload);
72
73
  if (this.path) {
73
- // Python writes the ledger with `json.dumps(payload, sort_keys=True)` —
74
- // its DEFAULT separators, not the compact pair the hash is taken over.
75
- appendFileSync(this.path, pyJsonDumps(payload) + "\n");
74
+ appendFileSync(this.path, canonicalJson(payload) + "\n");
76
75
  }
77
76
  for (const sink of this.sinks)
78
77
  sink.write(payload);
@@ -106,7 +105,7 @@ export class AuditLog {
106
105
  */
107
106
  anchor(signer, ts = 0) {
108
107
  const [seq, head] = this.head();
109
- const body = { v: SCHEMA_VERSION, chain_id: this.chainIdHint(), seq, head, ts };
108
+ const body = { v: SCHEMA_VERSION, c14n: "JCS", chain_id: this.chainIdHint(), seq, head, ts };
110
109
  return {
111
110
  ...body,
112
111
  kid: signer.kid ?? null,
@@ -116,8 +115,10 @@ export class AuditLog {
116
115
  /** The chain reproduces AND its head matches a SIGNED anchor. */
117
116
  static verifyAnchor(entries, anchor, signer) {
118
117
  const a = anchor ?? {};
118
+ if (toPlain(a["c14n"]) !== "JCS")
119
+ return [false, "anchor canonicalization is not JCS"];
119
120
  const body = {};
120
- for (const k of ["v", "chain_id", "seq", "head", "ts"])
121
+ for (const k of ["v", "c14n", "chain_id", "seq", "head", "ts"])
121
122
  body[k] = a[k] ?? null;
122
123
  const sigHex = toPlain(a["sig"]) ?? "";
123
124
  if (typeof sigHex !== "string" || !/^(?:[0-9a-fA-F]{2})*$/.test(sigHex)) {
@@ -144,6 +145,9 @@ export class AuditLog {
144
145
  let prev = GENESIS;
145
146
  let expectedSeq = 0;
146
147
  for (const e of entries) {
148
+ if (toPlain(e["c14n"]) !== "JCS") {
149
+ return [false, `canonicalization is not JCS at seq ${expectedSeq}`];
150
+ }
147
151
  const seq = asNumber(e["seq"]);
148
152
  if (seq !== expectedSeq) {
149
153
  return [false, `seq gap at ${expectedSeq} (got ${formatSeq(e["seq"])})`];
@@ -1 +1 @@
1
- {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EACL,cAAc,EACd,SAAS,EACT,WAAW,EACX,OAAO,GAER,MAAM,gBAAgB,CAAC;AAGxB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAChC,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAwBtC,oEAAoE;AACpE,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,OAAoB;IAC9D,MAAM,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAClC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAwB;IACxC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,WAAW,CAAC,KAAkB;IACrC,MAAM,GAAG,GAAgB,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3C,IAAI,CAAC,KAAK,MAAM;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AASD,8CAA8C;AAC9C,MAAM,OAAO,QAAQ;IACV,IAAI,CAAgB;IACZ,KAAK,CAAkB;IAChC,IAAI,GAAG,OAAO,CAAC;IACf,GAAG,GAAG,CAAC,CAAC;IACC,QAAQ,GAAkB,EAAE,CAAC;IAE9C;;;;OAIG;IACH,YAAY,OAAqC,EAAE;QACjD,MAAM,IAAI,GAAiB,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7F,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY;QAC5C,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,EAAmB,EAAE,SAAsB,EAAE;QACjE,MAAM,OAAO,GAAgB;YAC3B,CAAC,EAAE,cAAc;YACjB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,EAAE;YACF,KAAK;YACL,GAAG,MAAM;YACT,SAAS,EAAE,IAAI,CAAC,IAAI;SACrB,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAW,CAAC;QACtC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACd,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,wEAAwE;YACxE,uEAAuE;YACvE,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;QACzD,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IACzC,CAAC;IAED,0EAA0E;IAE1E,kFAAkF;IAClF,IAAI;QACF,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;QACtD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAE,EAAE,IAAI,CAAC,MAAM,CAAW,CAAC,CAAC;IAC1D,CAAC;IAEO,WAAW;QACjB,OAAO,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,MAAc,EAAE,KAAsB,CAAC;QAC5C,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAChF,OAAO;YACL,GAAG,IAAI;YACP,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,IAAI;YACvB,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;SACvD,CAAC;IACJ,CAAC;IAED,iEAAiE;IACjE,MAAM,CAAC,YAAY,CACjB,OAA+B,EAC/B,MAAgD,EAChD,MAAc;QAEd,MAAM,CAAC,GAAG,MAAM,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAA0B,EAAE,CAAC;QACvC,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;YAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAC/E,MAAM,MAAM,GAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAY,IAAI,EAAE,CAAC;QACnD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACxE,OAAO,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAkB,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;YACnD,OAAO,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,EAAE;YAAE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC7B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACxF,OAAO,CAAC,KAAK,EAAE,gEAAgE,CAAC,CAAC;QACnF,CAAC;QACD,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,2DAA2D;IAC3D,MAAM,CAAC,MAAM,CAAC,OAA+B;QAC3C,IAAI,IAAI,GAAG,OAAO,CAAC;QACnB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/B,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;gBACxB,OAAO,CAAC,KAAK,EAAE,cAAc,WAAW,SAAS,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3E,CAAC;YACD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;YACzB,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC3C,OAAO,CAAC,KAAK,EAAE,6BAA6B,WAAW,EAAE,CAAC,CAAC;YAC7D,CAAC;YACD,IAAI,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;gBACxC,OAAO,CAAC,KAAK,EAAE,wBAAwB,WAAW,EAAE,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,GAAG,MAAgB,CAAC;YACxB,WAAW,IAAI,CAAC,CAAC;QACnB,CAAC;QACD,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,uEAAuE;IACvE,MAAM,CAAC,IAAI,CAAC,IAAY;QACtB,OAAO,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,iEAAiE;IACjE,MAAM,CAAC,UAAU,CAAC,IAAY;QAC5B,OAAO,IAAI;aACR,KAAK,CAAC,OAAO,CAAC;aACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;aACpC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC,CAAC;IACnD,CAAC;CACF;AAED,SAAS,SAAS,CAAC,KAAwB;IACzC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxE,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,SAAS,CAAC,OAA+B;IACvD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QAClC,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE;YAAE,OAAO,EAAE,CAAC;IAC9C,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/audit.ts"],"names":[],"mappings":"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"}