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