@peac/protocol 0.13.2 → 0.13.4

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 (36) hide show
  1. package/dist/_internal/legacy-path.d.ts +49 -0
  2. package/dist/_internal/legacy-path.d.ts.map +1 -0
  3. package/dist/_internal/record-core/bounded-validator.d.ts +65 -29
  4. package/dist/_internal/record-core/bounded-validator.d.ts.map +1 -1
  5. package/dist/_internal/record-core/validators/iat-not-yet-valid.d.ts +29 -0
  6. package/dist/_internal/record-core/validators/iat-not-yet-valid.d.ts.map +1 -0
  7. package/dist/_internal/record-core/validators/index.d.ts +7 -0
  8. package/dist/_internal/record-core/validators/index.d.ts.map +1 -1
  9. package/dist/_internal/record-core/validators/jose-typ-strictness.d.ts +39 -0
  10. package/dist/_internal/record-core/validators/jose-typ-strictness.d.ts.map +1 -0
  11. package/dist/_internal/record-core/validators/policy-binding.d.ts +33 -0
  12. package/dist/_internal/record-core/validators/policy-binding.d.ts.map +1 -0
  13. package/dist/_internal/record-core/validators/schema-parse.d.ts +42 -0
  14. package/dist/_internal/record-core/validators/schema-parse.d.ts.map +1 -0
  15. package/dist/_internal/record-core/validators/signature.d.ts +31 -0
  16. package/dist/_internal/record-core/validators/signature.d.ts.map +1 -0
  17. package/dist/_internal/record-core/validators/type-extension-enforcement.d.ts +42 -0
  18. package/dist/_internal/record-core/validators/type-extension-enforcement.d.ts.map +1 -0
  19. package/dist/_internal/record-core/validators/unknown-extension-grammar.d.ts +39 -0
  20. package/dist/_internal/record-core/validators/unknown-extension-grammar.d.ts.map +1 -0
  21. package/dist/_internal/test-helpers/candidate-runner.d.ts +52 -0
  22. package/dist/_internal/test-helpers/candidate-runner.d.ts.map +1 -0
  23. package/dist/_internal/test-helpers/parity-verdict.d.ts +35 -0
  24. package/dist/_internal/test-helpers/parity-verdict.d.ts.map +1 -1
  25. package/dist/index.cjs +195 -27
  26. package/dist/index.cjs.map +1 -1
  27. package/dist/index.mjs +195 -27
  28. package/dist/index.mjs.map +1 -1
  29. package/dist/issue.d.ts.map +1 -1
  30. package/dist/verify-local.cjs +163 -0
  31. package/dist/verify-local.cjs.map +1 -1
  32. package/dist/verify-local.d.ts.map +1 -1
  33. package/dist/verify-local.mjs +163 -0
  34. package/dist/verify-local.mjs.map +1 -1
  35. package/dist/verify.d.ts.map +1 -1
  36. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"issue.d.ts","sourceRoot":"","sources":["../src/issue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"issue.d.ts","sourceRoot":"","sources":["../src/issue.ts"],"names":[],"mappings":"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"}
@@ -340,6 +340,98 @@ function validateExtensionBudgetInternal(extensions) {
340
340
  if (violations.length === 0) return ACCEPTED4;
341
341
  return { accepted: false, violations };
342
342
  }
343
+ function validateSchemaParseInternal(payload) {
344
+ const pr = schema.parseReceiptClaims(payload);
345
+ if (!pr.ok) {
346
+ return { accepted: false, errorCode: pr.error.code };
347
+ }
348
+ if (pr.wireVersion !== "0.2") {
349
+ return { accepted: false, errorCode: "E_UNSUPPORTED_WIRE_VERSION" };
350
+ }
351
+ return { accepted: true, claims: pr.claims };
352
+ }
353
+
354
+ // src/_internal/record-core/validators/jose-typ-strictness.ts
355
+ var ACCEPTED_NO_WARN = { accepted: true };
356
+ var ACCEPTED_TYP_MISSING = {
357
+ accepted: true,
358
+ warnings: [{ code: "typ_missing" }]
359
+ };
360
+ var REJECTED_INVALID_FORMAT = {
361
+ accepted: false,
362
+ errorCode: "E_INVALID_FORMAT"
363
+ };
364
+ function validateJoseTypStrictnessInternal(typ, strictness) {
365
+ const present = typeof typ === "string" && typ.length > 0;
366
+ if (present) return ACCEPTED_NO_WARN;
367
+ if (strictness === "strict") return REJECTED_INVALID_FORMAT;
368
+ return ACCEPTED_TYP_MISSING;
369
+ }
370
+
371
+ // src/_internal/record-core/validators/iat-not-yet-valid.ts
372
+ var ACCEPTED5 = { accepted: true };
373
+ var REJECTED2 = {
374
+ accepted: false,
375
+ errorCode: "E_NOT_YET_VALID"
376
+ };
377
+ function validateIatNotYetValidInternal(iat, now, maxClockSkew) {
378
+ if (iat > now + maxClockSkew) return REJECTED2;
379
+ return ACCEPTED5;
380
+ }
381
+ function validatePolicyBindingInternal(receiptPolicyDigest, localPolicyDigest) {
382
+ if (receiptPolicyDigest === void 0 || localPolicyDigest === void 0) {
383
+ return { accepted: true, status: "unavailable" };
384
+ }
385
+ const status = schema.verifyPolicyBinding(receiptPolicyDigest, localPolicyDigest);
386
+ if (status === "failed") {
387
+ return { accepted: false, errorCode: "E_POLICY_BINDING_FAILED", status };
388
+ }
389
+ return { accepted: true, status };
390
+ }
391
+ var ACCEPTED_EMPTY = {
392
+ accepted: true,
393
+ warnings: []
394
+ };
395
+ function escapeJsonPointer(token) {
396
+ return token.replace(/~/g, "~0").replace(/\//g, "~1");
397
+ }
398
+ function validateUnknownExtensionGrammarInternal(extensions) {
399
+ if (extensions === void 0) return ACCEPTED_EMPTY;
400
+ const keys = Object.keys(extensions);
401
+ if (keys.length === 0) return ACCEPTED_EMPTY;
402
+ const warnings = [];
403
+ for (const key of keys) {
404
+ if (!schema.REGISTERED_EXTENSION_GROUP_KEYS.has(key) && schema.isValidExtensionKey(key)) {
405
+ warnings.push({
406
+ code: "unknown_extension_preserved",
407
+ pointer: `/extensions/${escapeJsonPointer(key)}`
408
+ });
409
+ }
410
+ }
411
+ return { accepted: true, warnings };
412
+ }
413
+ var ACCEPTED_NO_WARN2 = { accepted: true };
414
+ function validateTypeExtensionEnforcementInternal(kind, type, extensions, strictness) {
415
+ const result = checkTypeExtensionMapping(
416
+ kind,
417
+ type,
418
+ extensions,
419
+ kernel.TYPE_TO_EXTENSION_MAP,
420
+ schema.REGISTERED_EXTENSION_GROUP_KEYS
421
+ );
422
+ if (result.status === "ok" || result.status === "skip") {
423
+ return ACCEPTED_NO_WARN2;
424
+ }
425
+ if (strictness === "strict") {
426
+ const errorCode = result.status === "missing" ? "E_EXTENSION_GROUP_REQUIRED" : "E_EXTENSION_GROUP_MISMATCH";
427
+ return { accepted: false, errorCode, pointer: "/type" };
428
+ }
429
+ const warningCode = result.status === "missing" ? "extension_group_missing" : "extension_group_mismatch";
430
+ return {
431
+ accepted: true,
432
+ warnings: [{ code: warningCode, pointer: "/type" }]
433
+ };
434
+ }
343
435
 
344
436
  // src/_internal/record-core/bounded-validator.ts
345
437
  function runBoundedValidatorShadow(input) {
@@ -399,6 +491,68 @@ function runBoundedValidatorShadow(input) {
399
491
  violations.push({ layer: "extension-budget", code: v.code, path: v.path });
400
492
  }
401
493
  }
494
+ if (input.fullClaims !== void 0) {
495
+ const schemaRes = validateSchemaParseInternal(input.fullClaims);
496
+ if (!schemaRes.accepted && schemaRes.errorCode !== void 0) {
497
+ violations.push({ layer: "schema-parse", code: schemaRes.errorCode });
498
+ }
499
+ }
500
+ if (input.header !== void 0 && input.strictness !== void 0) {
501
+ const typRes = validateJoseTypStrictnessInternal(input.header.typ, input.strictness);
502
+ if (!typRes.accepted) {
503
+ violations.push({ layer: "jose-typ-strictness", code: typRes.errorCode });
504
+ } else if (typRes.warnings) {
505
+ for (const w of typRes.warnings) {
506
+ warnings.push({ layer: "jose-typ-strictness", code: w.code });
507
+ }
508
+ }
509
+ }
510
+ if (input.maxClockSkew !== void 0) {
511
+ const iatRes = validateIatNotYetValidInternal(input.claims.iat, input.now, input.maxClockSkew);
512
+ if (!iatRes.accepted && iatRes.errorCode !== void 0) {
513
+ violations.push({ layer: "iat-not-yet-valid", code: iatRes.errorCode });
514
+ }
515
+ }
516
+ if (input.receiptPolicyDigest !== void 0 && input.localPolicyDigest !== void 0) {
517
+ const policyRes = validatePolicyBindingInternal(
518
+ input.receiptPolicyDigest,
519
+ input.localPolicyDigest
520
+ );
521
+ if (!policyRes.accepted && policyRes.errorCode !== void 0) {
522
+ violations.push({ layer: "policy-binding", code: policyRes.errorCode });
523
+ }
524
+ }
525
+ const unknownExtRes = validateUnknownExtensionGrammarInternal(input.claims.extensions);
526
+ for (const w of unknownExtRes.warnings) {
527
+ warnings.push({
528
+ layer: "unknown-extension-grammar",
529
+ code: w.code,
530
+ path: w.pointer
531
+ });
532
+ }
533
+ if (input.strictness !== void 0) {
534
+ const enforceRes = validateTypeExtensionEnforcementInternal(
535
+ input.claims.kind,
536
+ input.claims.type,
537
+ input.claims.extensions,
538
+ input.strictness
539
+ );
540
+ if (!enforceRes.accepted) {
541
+ violations.push({
542
+ layer: "type-extension-enforcement",
543
+ code: enforceRes.errorCode,
544
+ path: enforceRes.pointer
545
+ });
546
+ } else if (enforceRes.warnings) {
547
+ for (const w of enforceRes.warnings) {
548
+ warnings.push({
549
+ layer: "type-extension-enforcement",
550
+ code: w.code,
551
+ path: w.pointer
552
+ });
553
+ }
554
+ }
555
+ }
402
556
  return {
403
557
  accepted: violations.length === 0,
404
558
  violations,
@@ -624,6 +778,14 @@ function pruneStale() {
624
778
  while (SHADOW_LOG.length > 0 && SHADOW_LOG[0].timestamp < cutoffIso) SHADOW_LOG.shift();
625
779
  }
626
780
 
781
+ // src/_internal/legacy-path.ts
782
+ function readLegacyPathFlag(options) {
783
+ if (options?._internal?.legacyPath === true) return true;
784
+ if (typeof process === "undefined" || process === null) return false;
785
+ const env = process.env;
786
+ return env?.PEAC_INTERNAL_LEGACY_PATH === "1";
787
+ }
788
+
627
789
  // src/_internal/shadow-observe.ts
628
790
  function realObservationForVerifyLocalSuccess(warnings) {
629
791
  if (!warnings || warnings.length === 0) return EMPTY_ACCEPTED;
@@ -676,6 +838,7 @@ function sanitizeParseIssues(issues) {
676
838
  }));
677
839
  }
678
840
  async function verifyLocal(jws, publicKey, options = {}) {
841
+ void readLegacyPathFlag(options);
679
842
  const {
680
843
  issuer,
681
844
  subjectUri,