@did-btcr2/method 0.56.0 → 0.58.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 (56) hide show
  1. package/README.md +10 -4
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/browser.js +3 -3
  4. package/dist/browser.mjs +3 -3
  5. package/dist/cjs/index.js +93 -37
  6. package/dist/esm/core/beacon/beacon.js +11 -1
  7. package/dist/esm/core/beacon/beacon.js.map +1 -1
  8. package/dist/esm/core/beacon/cas-beacon.js +7 -6
  9. package/dist/esm/core/beacon/cas-beacon.js.map +1 -1
  10. package/dist/esm/core/beacon/factory.js +6 -4
  11. package/dist/esm/core/beacon/factory.js.map +1 -1
  12. package/dist/esm/core/beacon/singleton-beacon.js +2 -2
  13. package/dist/esm/core/beacon/singleton-beacon.js.map +1 -1
  14. package/dist/esm/core/beacon/smt-beacon.js +7 -6
  15. package/dist/esm/core/beacon/smt-beacon.js.map +1 -1
  16. package/dist/esm/core/did-sender-resolver.js +8 -2
  17. package/dist/esm/core/did-sender-resolver.js.map +1 -1
  18. package/dist/esm/core/resolver.js +5 -28
  19. package/dist/esm/core/resolver.js.map +1 -1
  20. package/dist/esm/core/updater.js +17 -4
  21. package/dist/esm/core/updater.js.map +1 -1
  22. package/dist/esm/did-btcr2.js +23 -7
  23. package/dist/esm/did-btcr2.js.map +1 -1
  24. package/dist/esm/utils/appendix.js +36 -5
  25. package/dist/esm/utils/appendix.js.map +1 -1
  26. package/dist/types/core/beacon/beacon.d.ts +10 -1
  27. package/dist/types/core/beacon/beacon.d.ts.map +1 -1
  28. package/dist/types/core/beacon/cas-beacon.d.ts +2 -1
  29. package/dist/types/core/beacon/cas-beacon.d.ts.map +1 -1
  30. package/dist/types/core/beacon/factory.d.ts +3 -1
  31. package/dist/types/core/beacon/factory.d.ts.map +1 -1
  32. package/dist/types/core/beacon/singleton-beacon.d.ts +1 -1
  33. package/dist/types/core/beacon/singleton-beacon.d.ts.map +1 -1
  34. package/dist/types/core/beacon/smt-beacon.d.ts +2 -1
  35. package/dist/types/core/beacon/smt-beacon.d.ts.map +1 -1
  36. package/dist/types/core/did-sender-resolver.d.ts.map +1 -1
  37. package/dist/types/core/interfaces.d.ts.map +1 -1
  38. package/dist/types/core/resolver.d.ts.map +1 -1
  39. package/dist/types/core/updater.d.ts +11 -4
  40. package/dist/types/core/updater.d.ts.map +1 -1
  41. package/dist/types/did-btcr2.d.ts.map +1 -1
  42. package/dist/types/utils/appendix.d.ts +30 -4
  43. package/dist/types/utils/appendix.d.ts.map +1 -1
  44. package/package.json +3 -3
  45. package/src/core/beacon/beacon.ts +12 -1
  46. package/src/core/beacon/cas-beacon.ts +7 -6
  47. package/src/core/beacon/factory.ts +6 -4
  48. package/src/core/beacon/interfaces.ts +1 -1
  49. package/src/core/beacon/singleton-beacon.ts +2 -2
  50. package/src/core/beacon/smt-beacon.ts +7 -6
  51. package/src/core/did-sender-resolver.ts +10 -2
  52. package/src/core/interfaces.ts +1 -0
  53. package/src/core/resolver.ts +12 -30
  54. package/src/core/updater.ts +25 -5
  55. package/src/did-btcr2.ts +28 -8
  56. package/src/utils/appendix.ts +37 -5
package/dist/cjs/index.js CHANGED
@@ -280,8 +280,18 @@ var SinglePartyBeacon = class {
280
280
  * The Beacon service configuration parsed from the DID Document.
281
281
  */
282
282
  service;
283
- constructor(service) {
283
+ /**
284
+ * The absolute did:btcr2 identifier this beacon instance serves.
285
+ *
286
+ * Injected by the caller rather than recovered from {@link service}. A beacon
287
+ * service `id` is permitted to be a relative DID URL (`#beacon-1`), which
288
+ * carries no DID to strip a fragment from, so deriving the subject from it is
289
+ * only correct for the absolute spelling.
290
+ */
291
+ did;
292
+ constructor(service, did) {
284
293
  this.service = service;
294
+ this.did = did;
285
295
  }
286
296
  /**
287
297
  * Build + sign + broadcast a singleton beacon signal transaction. The beacon
@@ -424,9 +434,10 @@ var CASBeacon = class extends SinglePartyBeacon {
424
434
  /**
425
435
  * Creates an instance of CASBeacon.
426
436
  * @param {BeaconService} service The service of the Beacon.
437
+ * @param {string} did The absolute did:btcr2 identifier this beacon serves.
427
438
  */
428
- constructor(service) {
429
- super({ ...service, type: "CASBeacon" });
439
+ constructor(service, did) {
440
+ super({ ...service, type: "CASBeacon" }, did);
430
441
  }
431
442
  /**
432
443
  * Implements {@link https://dcdpr.github.io/did-btcr2/operations/resolve.html#process-cas-beacon | 7.2.e.1 Process CAS Beacon}.
@@ -444,7 +455,7 @@ var CASBeacon = class extends SinglePartyBeacon {
444
455
  processSignals(signals, sidecar) {
445
456
  const updates = new Array();
446
457
  const needs = new Array();
447
- const did = this.service.id.split("#")[0];
458
+ const did = this.did;
448
459
  for (const signal of signals) {
449
460
  const announcementHash = signal.signalBytes;
450
461
  const casAnnouncement = sidecar.casMap.get(announcementHash);
@@ -497,7 +508,7 @@ var CASBeacon = class extends SinglePartyBeacon {
497
508
  * @throws {BeaconError} if the bitcoin address is invalid, unfunded, or UTXO cannot cover the fee.
498
509
  */
499
510
  async broadcastSignal(signedUpdate, signer, bitcoin, options) {
500
- const did = this.service.id.split("#")[0];
511
+ const did = this.did;
501
512
  const updateHash = (0, import_common2.canonicalHash)(signedUpdate);
502
513
  const casAnnouncement = { [did]: updateHash };
503
514
  const announcementHash = (0, import_common2.hash)((0, import_common2.canonicalize)(casAnnouncement));
@@ -519,8 +530,8 @@ var SingletonBeacon = class extends SinglePartyBeacon {
519
530
  * Creates an instance of SingletonBeacon.
520
531
  * @param {BeaconService} service The BeaconService object representing the funded beacon to announce the update to.
521
532
  */
522
- constructor(service) {
523
- super({ ...service, type: "SingletonBeacon" });
533
+ constructor(service, did) {
534
+ super({ ...service, type: "SingletonBeacon" }, did);
524
535
  }
525
536
  /**
526
537
  * Processes an array of Beacon Signals associated with a Singleton Beacon Service.
@@ -575,9 +586,10 @@ var SMTBeacon = class extends SinglePartyBeacon {
575
586
  /**
576
587
  * Creates an instance of SMTBeacon.
577
588
  * @param {BeaconService} service The Beacon service.
589
+ * @param {string} did The absolute did:btcr2 identifier this beacon serves.
578
590
  */
579
- constructor(service) {
580
- super({ ...service, type: "SMTBeacon" });
591
+ constructor(service, did) {
592
+ super({ ...service, type: "SMTBeacon" }, did);
581
593
  }
582
594
  /**
583
595
  * Implements {@link https://dcdpr.github.io/did-btcr2/operations/resolve.html#process-smt-beacon | 7.2.e.1 Process SMT Beacon}.
@@ -595,7 +607,7 @@ var SMTBeacon = class extends SinglePartyBeacon {
595
607
  processSignals(signals, sidecar) {
596
608
  const updates = new Array();
597
609
  const needs = new Array();
598
- const did = this.service.id.split("#")[0];
610
+ const did = this.did;
599
611
  for (const signal of signals) {
600
612
  const smtProof = sidecar.smtMap.get(signal.signalBytes);
601
613
  if (!smtProof) {
@@ -659,7 +671,7 @@ var SMTBeacon = class extends SinglePartyBeacon {
659
671
  * @throws {BeaconError} if the bitcoin address is invalid, unfunded, or UTXO cannot cover the fee.
660
672
  */
661
673
  async broadcastSignal(signedUpdate, signer, bitcoin, options) {
662
- const did = this.service.id.split("#")[0];
674
+ const did = this.did;
663
675
  const canonicalBytes = new TextEncoder().encode((0, import_common4.canonicalize)(signedUpdate));
664
676
  const nonce = (0, import_utils2.randomBytes)(32);
665
677
  const tree = new import_smt.BTCR2MerkleTree();
@@ -676,16 +688,18 @@ var BeaconFactory = class {
676
688
  /**
677
689
  * Establish a Beacon instance based on the provided service and optional sidecar data.
678
690
  * @param {BeaconService} service The beacon service configuration.
691
+ * @param {string} did The absolute did:btcr2 identifier the beacon serves. Supplied
692
+ * by the caller because a beacon service `id` may be a relative DID URL.
679
693
  * @returns {SinglePartyBeacon} The established Beacon instance.
680
694
  */
681
- static establish(service) {
695
+ static establish(service, did) {
682
696
  switch (service.type) {
683
697
  case "SingletonBeacon":
684
- return new SingletonBeacon(service);
698
+ return new SingletonBeacon(service, did);
685
699
  case "CASBeacon":
686
- return new CASBeacon(service);
700
+ return new CASBeacon(service, did);
687
701
  case "SMTBeacon":
688
- return new SMTBeacon(service);
702
+ return new SMTBeacon(service, did);
689
703
  default:
690
704
  throw new import_common5.MethodError("Invalid Beacon Type", "INVALID_BEACON_ERROR", service);
691
705
  }
@@ -706,14 +720,43 @@ var import_dids = require("@web5/dids");
706
720
  var import_common6 = require("@did-btcr2/common");
707
721
  var Appendix = class _Appendix {
708
722
  /**
709
- * Extracts a DID fragment from a given input
710
- * @param {unknown} input The input to extract the DID fragment from
711
- * @returns {string | undefined} The extracted DID fragment or undefined if not found
723
+ * Resolves a DID URL that may be written as a relative reference against the
724
+ * DID it appears under. DID Core permits the `id` of a verification method or
725
+ * service, and the entries of a verification relationship, to be a relative
726
+ * DID URL such as `#initialKey`; it denotes that fragment of `did`. Absolute
727
+ * DID URLs are returned unchanged, so both spellings of the same reference
728
+ * compare equal without discarding the DID being compared.
729
+ *
730
+ * @param {unknown} input The DID URL to resolve. Non-strings yield `undefined`.
731
+ * @param {string} did The DID the relative reference is resolved against.
732
+ * @returns {string | undefined} The absolute DID URL, or `undefined` if `input` is not a usable string.
712
733
  */
713
- static extractDidFragment(input) {
734
+ static absoluteDidUrl(input, did) {
714
735
  if (typeof input !== "string") return void 0;
715
736
  if (input.length === 0) return void 0;
716
- return input;
737
+ return input.startsWith("#") ? `${did}${input}` : input;
738
+ }
739
+ /**
740
+ * Resolves a verification relationship entry to the absolute DID URL of the method it
741
+ * names. A relationship entry is either a reference to a method defined elsewhere in the
742
+ * document, or a method embedded inline, which names itself with its own `id`; either
743
+ * spelling may be a relative DID URL.
744
+ *
745
+ * Every comparison of a relationship entry against a method id goes through this helper,
746
+ * on both the read path and the write path, so the two admit exactly the same spellings.
747
+ *
748
+ * Malformed entries yield `undefined` rather than a placeholder string, so two unusable
749
+ * values never compare equal to each other. Callers comparing a resolved entry must still
750
+ * reject an `undefined` target before comparing, or an unusable target matches an
751
+ * unusable entry.
752
+ *
753
+ * @param {unknown} entry The relationship entry: a reference, or an embedded method.
754
+ * @param {string} did The DID the relative reference is resolved against.
755
+ * @returns {string | undefined} The absolute DID URL, or `undefined` if unusable.
756
+ */
757
+ static relationshipMethodId(entry, did) {
758
+ const id = typeof entry === "object" && entry !== null && !Array.isArray(entry) ? entry.id : entry;
759
+ return _Appendix.absoluteDidUrl(id, did);
717
760
  }
718
761
  /**
719
762
  * Validates that the given object is a DidVerificationMethod
@@ -1819,6 +1862,7 @@ var Updater = class _Updater {
1819
1862
  }
1820
1863
  const id = verificationMethod.id.slice(hashIdx);
1821
1864
  const multikey = import_cryptosuite.SchnorrMultikey.fromSigner(id, controller, signer);
1865
+ const absoluteMethodId = hashIdx === 0 ? `${did}${id}` : verificationMethod.id;
1822
1866
  const signerKey = multikey.publicKey.multibase.encoded;
1823
1867
  if (verificationMethod.publicKeyMultibase && signerKey !== verificationMethod.publicKeyMultibase) {
1824
1868
  throw new import_common11.UpdateError(
@@ -1840,7 +1884,12 @@ var Updater = class _Updater {
1840
1884
  ],
1841
1885
  cryptosuite: "bip340-jcs-2025",
1842
1886
  type: "DataIntegrityProof",
1843
- verificationMethod: verificationMethod.id,
1887
+ // The proof names the signing method by absolute DID URL, even when the document
1888
+ // spells that method's own id relatively: a proof travels apart from the document
1889
+ // that defines the method, so a bare `#initialKey` in it resolves against nothing.
1890
+ // For a document that already spells its ids absolutely this is the id unchanged,
1891
+ // so proofs over such documents are byte-identical to before.
1892
+ verificationMethod: absoluteMethodId,
1844
1893
  proofPurpose: "capabilityInvocation",
1845
1894
  capability: `urn:zcap:root:${encodeURIComponent(did)}`,
1846
1895
  capabilityAction: "Write"
@@ -1853,6 +1902,8 @@ var Updater = class _Updater {
1853
1902
  * Announces a signed update to the Bitcoin blockchain via the specified beacon.
1854
1903
  *
1855
1904
  * @param {BeaconService} beaconService The beacon service to broadcast through.
1905
+ * @param {string} did The DID being updated. Required because a beacon service
1906
+ * `id` may be a relative DID URL and so cannot supply the subject.
1856
1907
  * @param {SignedBTCR2Update} update The signed update to announce.
1857
1908
  * @param {Signer} signer Signer that produces the ECDSA signature for the Bitcoin transaction.
1858
1909
  * @param {BitcoinConnection} bitcoin The Bitcoin network connection.
@@ -1862,8 +1913,8 @@ var Updater = class _Updater {
1862
1913
  * @returns {Promise<BroadcastResult>} The broadcast artifacts: the signed update, the signal
1863
1914
  * txid, and any per-beacon-type sidecar data (CAS announcement / SMT proof).
1864
1915
  */
1865
- static async announce(beaconService, update, signer, bitcoin, options) {
1866
- const beacon = BeaconFactory.establish(beaconService);
1916
+ static async announce(beaconService, did, update, signer, bitcoin, options) {
1917
+ const beacon = BeaconFactory.establish(beaconService, did);
1867
1918
  return beacon.broadcastSignal(update, signer, bitcoin, options);
1868
1919
  }
1869
1920
  // Private instance wrappers
@@ -1922,7 +1973,8 @@ var Updater = class _Updater {
1922
1973
  needs: [{
1923
1974
  kind: "NeedBroadcast",
1924
1975
  beaconService: this.#beaconService,
1925
- signedUpdate: this.#state.signedUpdate
1976
+ signedUpdate: this.#state.signedUpdate,
1977
+ did: this.#sourceDocument.id
1926
1978
  }]
1927
1979
  };
1928
1980
  }
@@ -2097,7 +2149,11 @@ var DidBtcr2 = class {
2097
2149
  verificationMethodId,
2098
2150
  beaconId
2099
2151
  }) {
2100
- if (!sourceDocument.capabilityInvocation?.some((vr) => vr === verificationMethodId)) {
2152
+ const authorizedMethodId = Appendix.relationshipMethodId(verificationMethodId, sourceDocument.id);
2153
+ const authorized = authorizedMethodId !== void 0 && sourceDocument.capabilityInvocation?.some(
2154
+ (entry) => Appendix.relationshipMethodId(entry, sourceDocument.id) === authorizedMethodId
2155
+ );
2156
+ if (!authorized) {
2101
2157
  throw new import_common12.UpdateError(
2102
2158
  "Invalid verificationMethodId: not authorized for capabilityInvocation",
2103
2159
  import_common12.INVALID_DID_DOCUMENT,
@@ -2126,7 +2182,8 @@ var DidBtcr2 = class {
2126
2182
  verificationMethod
2127
2183
  );
2128
2184
  }
2129
- const beaconService = sourceDocument.service.filter((service) => service.id === beaconId).filter((service) => !!service).shift();
2185
+ const targetBeaconId = Appendix.absoluteDidUrl(beaconId, sourceDocument.id);
2186
+ const beaconService = sourceDocument.service.filter((service) => targetBeaconId !== void 0 && Appendix.absoluteDidUrl(service.id, sourceDocument.id) === targetBeaconId).filter((service) => !!service).shift();
2130
2187
  if (!beaconService) {
2131
2188
  throw new import_common12.UpdateError(
2132
2189
  "No beacon service found for provided beaconId",
@@ -2158,8 +2215,9 @@ var DidBtcr2 = class {
2158
2215
  if (parsedDid && parsedDid.method !== this.methodName) {
2159
2216
  throw new import_common12.MethodError(`Method not supported: ${parsedDid.method}`, import_common12.METHOD_NOT_SUPPORTED, { identifier: didDocument.id });
2160
2217
  }
2161
- const verificationMethod = didDocument.verificationMethod?.find(
2162
- (vm) => Appendix.extractDidFragment(vm.id) === (Appendix.extractDidFragment(methodId) ?? Appendix.extractDidFragment(didDocument.assertionMethod?.[0]))
2218
+ const targetId = Appendix.absoluteDidUrl(methodId, didDocument.id) ?? Appendix.relationshipMethodId(didDocument.assertionMethod?.[0], didDocument.id);
2219
+ const verificationMethod = targetId === void 0 ? void 0 : didDocument.verificationMethod?.find(
2220
+ (vm) => Appendix.absoluteDidUrl(vm.id, didDocument.id) === targetId
2163
2221
  );
2164
2222
  if (!(verificationMethod && verificationMethod.publicKeyMultibase)) {
2165
2223
  throw new import_dids2.DidError(
@@ -2187,11 +2245,6 @@ function isSMTProof(value) {
2187
2245
  if (!isRecord(value)) return false;
2188
2246
  return typeof value.id === "string" && typeof value.collapsed === "string" && Array.isArray(value.hashes);
2189
2247
  }
2190
- function relationshipMethodId(documentId, entry) {
2191
- const id = isRecord(entry) ? entry.id : entry;
2192
- if (typeof id !== "string" || id.length === 0) return void 0;
2193
- return id.startsWith("#") ? `${documentId}${id}` : id;
2194
- }
2195
2248
  var Resolver = class _Resolver {
2196
2249
  // --- Immutable inputs ---
2197
2250
  #didComponents;
@@ -2463,9 +2516,9 @@ var Resolver = class _Resolver {
2463
2516
  if (!verificationMethodId) {
2464
2517
  throw new import_common13.ResolveError("No verificationMethod found in update", import_common13.INVALID_DID_UPDATE, update);
2465
2518
  }
2466
- const authorizedMethodId = relationshipMethodId(currentDocument.id, verificationMethodId);
2519
+ const authorizedMethodId = Appendix.relationshipMethodId(verificationMethodId, currentDocument.id);
2467
2520
  const authorized = authorizedMethodId !== void 0 && currentDocument.capabilityInvocation?.some(
2468
- (entry) => relationshipMethodId(currentDocument.id, entry) === authorizedMethodId
2521
+ (entry) => Appendix.relationshipMethodId(entry, currentDocument.id) === authorizedMethodId
2469
2522
  );
2470
2523
  if (!authorized) {
2471
2524
  throw new import_common13.ResolveError(
@@ -2558,7 +2611,7 @@ var Resolver = class _Resolver {
2558
2611
  const allNeeds = [];
2559
2612
  for (const [service, signals] of this.#beaconServicesSignals) {
2560
2613
  if (this.#processedServices.has(service.id) || !signals.length) continue;
2561
- const beacon = BeaconFactory.establish(service);
2614
+ const beacon = BeaconFactory.establish(service, this.#currentDocument.id);
2562
2615
  const result = beacon.processSignals(signals, this.#sidecarData);
2563
2616
  if (result.needs.length > 0) {
2564
2617
  allNeeds.push(...result.needs);
@@ -2720,7 +2773,10 @@ function getAggregationCommunicationKey(document) {
2720
2773
  { id: document.id }
2721
2774
  );
2722
2775
  }
2723
- const vm = typeof invocation === "string" ? document.verificationMethod?.find((method) => method.id === invocation) : invocation;
2776
+ const invocationId = Appendix.absoluteDidUrl(invocation, document.id);
2777
+ const vm = typeof invocation === "string" ? invocationId === void 0 ? void 0 : document.verificationMethod?.find(
2778
+ (method) => Appendix.absoluteDidUrl(method.id, document.id) === invocationId
2779
+ ) : invocation;
2724
2780
  if (!vm) {
2725
2781
  throw new import_common14.DidDocumentError(
2726
2782
  `Cannot derive aggregation communication key: capabilityInvocation[0] "${invocation}" does not resolve to a verification method`,
@@ -372,8 +372,18 @@ export class SinglePartyBeacon {
372
372
  * The Beacon service configuration parsed from the DID Document.
373
373
  */
374
374
  service;
375
- constructor(service) {
375
+ /**
376
+ * The absolute did:btcr2 identifier this beacon instance serves.
377
+ *
378
+ * Injected by the caller rather than recovered from {@link service}. A beacon
379
+ * service `id` is permitted to be a relative DID URL (`#beacon-1`), which
380
+ * carries no DID to strip a fragment from, so deriving the subject from it is
381
+ * only correct for the absolute spelling.
382
+ */
383
+ did;
384
+ constructor(service, did) {
376
385
  this.service = service;
386
+ this.did = did;
377
387
  }
378
388
  /**
379
389
  * Build + sign + broadcast a singleton beacon signal transaction. The beacon
@@ -1 +1 @@
1
- {"version":3,"file":"beacon.js","sourceRoot":"","sources":["../../../../src/core/beacon/beacon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"beacon.js","sourceRoot":"","sources":["../../../../src/core/beacon/beacon.ts"],"names":[],"mappings":"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"}
@@ -39,9 +39,10 @@ export class CASBeacon extends SinglePartyBeacon {
39
39
  /**
40
40
  * Creates an instance of CASBeacon.
41
41
  * @param {BeaconService} service The service of the Beacon.
42
+ * @param {string} did The absolute did:btcr2 identifier this beacon serves.
42
43
  */
43
- constructor(service) {
44
- super({ ...service, type: 'CASBeacon' });
44
+ constructor(service, did) {
45
+ super({ ...service, type: 'CASBeacon' }, did);
45
46
  }
46
47
  /**
47
48
  * Implements {@link https://dcdpr.github.io/did-btcr2/operations/resolve.html#process-cas-beacon | 7.2.e.1 Process CAS Beacon}.
@@ -59,8 +60,8 @@ export class CASBeacon extends SinglePartyBeacon {
59
60
  processSignals(signals, sidecar) {
60
61
  const updates = new Array();
61
62
  const needs = new Array();
62
- // Extract the DID from the beacon service id (strip the #fragment)
63
- const did = this.service.id.split('#')[0];
63
+ // The DID under resolution keys this beacon's announcement entry.
64
+ const did = this.did;
64
65
  for (const signal of signals) {
65
66
  // Signal bytes are hex, matches hex-keyed sidecar maps directly
66
67
  const announcementHash = signal.signalBytes;
@@ -121,8 +122,8 @@ export class CASBeacon extends SinglePartyBeacon {
121
122
  * @throws {BeaconError} if the bitcoin address is invalid, unfunded, or UTXO cannot cover the fee.
122
123
  */
123
124
  async broadcastSignal(signedUpdate, signer, bitcoin, options) {
124
- // Extract the DID from the beacon service id (strip the #fragment)
125
- const did = this.service.id.split('#')[0];
125
+ // The DID this beacon serves keys its announcement entry.
126
+ const did = this.did;
126
127
  // Hash the signed update (base64urlnopad for the CAS Announcement entry per spec)
127
128
  const updateHash = canonicalHash(signedUpdate);
128
129
  // Create the CAS Announcement mapping this DID to its update hash
@@ -1 +1 @@
1
- {"version":3,"file":"cas-beacon.js","sourceRoot":"","sources":["../../../../src/core/beacon/cas-beacon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cas-beacon.js","sourceRoot":"","sources":["../../../../src/core/beacon/cas-beacon.ts"],"names":[],"mappings":"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"}
@@ -11,16 +11,18 @@ export class BeaconFactory {
11
11
  /**
12
12
  * Establish a Beacon instance based on the provided service and optional sidecar data.
13
13
  * @param {BeaconService} service The beacon service configuration.
14
+ * @param {string} did The absolute did:btcr2 identifier the beacon serves. Supplied
15
+ * by the caller because a beacon service `id` may be a relative DID URL.
14
16
  * @returns {SinglePartyBeacon} The established Beacon instance.
15
17
  */
16
- static establish(service) {
18
+ static establish(service, did) {
17
19
  switch (service.type) {
18
20
  case 'SingletonBeacon':
19
- return new SingletonBeacon(service);
21
+ return new SingletonBeacon(service, did);
20
22
  case 'CASBeacon':
21
- return new CASBeacon(service);
23
+ return new CASBeacon(service, did);
22
24
  case 'SMTBeacon':
23
- return new SMTBeacon(service);
25
+ return new SMTBeacon(service, did);
24
26
  default:
25
27
  throw new MethodError('Invalid Beacon Type', 'INVALID_BEACON_ERROR', service);
26
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../src/core/beacon/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;;;GAIG;AACH,MAAM,OAAO,aAAa;IACxB;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,OAAsB;QACrC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,iBAAiB;gBACpB,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;YACtC,KAAK,WAAW;gBACd,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;YAChC,KAAK,WAAW;gBACd,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;YAChC;gBACE,MAAM,IAAI,WAAW,CAAC,qBAAqB,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../src/core/beacon/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;;;GAIG;AACH,MAAM,OAAO,aAAa;IACxB;;;;;;OAMG;IACH,MAAM,CAAC,SAAS,CAAC,OAAsB,EAAE,GAAW;QAClD,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,iBAAiB;gBACpB,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC3C,KAAK,WAAW;gBACd,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACrC,KAAK,WAAW;gBACd,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACrC;gBACE,MAAM,IAAI,WAAW,CAAC,qBAAqB,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;CACF"}
@@ -11,8 +11,8 @@ export class SingletonBeacon extends SinglePartyBeacon {
11
11
  * Creates an instance of SingletonBeacon.
12
12
  * @param {BeaconService} service The BeaconService object representing the funded beacon to announce the update to.
13
13
  */
14
- constructor(service) {
15
- super({ ...service, type: 'SingletonBeacon' });
14
+ constructor(service, did) {
15
+ super({ ...service, type: 'SingletonBeacon' }, did);
16
16
  }
17
17
  /**
18
18
  * Processes an array of Beacon Signals associated with a Singleton Beacon Service.
@@ -1 +1 @@
1
- {"version":3,"file":"singleton-beacon.js","sourceRoot":"","sources":["../../../../src/core/beacon/singleton-beacon.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAMvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhD;;;;;GAKG;AACH,MAAM,OAAO,eAAgB,SAAQ,iBAAiB;IAEpD;;;OAGG;IACH,YAAY,OAAsB;QAChC,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACjD,CAAC;IAED;;;;;OAKG;IACH,cAAc,CACZ,OAA4B,EAC5B,OAAoB;QAEpB,MAAM,OAAO,GAAG,IAAI,KAAK,EAAsC,CAAC;QAChE,MAAM,KAAK,GAAG,IAAI,KAAK,EAAY,CAAC;QAEpC,KAAI,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC5B,gEAAgE;YAChE,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;YAEtC,iDAAiD;YACjD,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAEvD,IAAG,CAAC,YAAY,EAAE,CAAC;gBACjB,sDAAsD;gBACtD,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAe,kBAAkB;oBACrC,UAAU;oBACV,eAAe,EAAI,IAAI,CAAC,OAAO,CAAC,EAAE;iBACnC,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;IACD;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,eAAe,CACnB,YAA+B,EAC/B,MAAc,EACd,OAA0B,EAC1B,OAA0B;QAE1B,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACrF,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAChC,CAAC;CACF"}
1
+ {"version":3,"file":"singleton-beacon.js","sourceRoot":"","sources":["../../../../src/core/beacon/singleton-beacon.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAMvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhD;;;;;GAKG;AACH,MAAM,OAAO,eAAgB,SAAQ,iBAAiB;IAEpD;;;OAGG;IACH,YAAY,OAAsB,EAAE,GAAW;QAC7C,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,GAAG,CAAC,CAAC;IACtD,CAAC;IAED;;;;;OAKG;IACH,cAAc,CACZ,OAA4B,EAC5B,OAAoB;QAEpB,MAAM,OAAO,GAAG,IAAI,KAAK,EAAsC,CAAC;QAChE,MAAM,KAAK,GAAG,IAAI,KAAK,EAAY,CAAC;QAEpC,KAAI,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC5B,gEAAgE;YAChE,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;YAEtC,iDAAiD;YACjD,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAEvD,IAAG,CAAC,YAAY,EAAE,CAAC;gBACjB,sDAAsD;gBACtD,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAe,kBAAkB;oBACrC,UAAU;oBACV,eAAe,EAAI,IAAI,CAAC,OAAO,CAAC,EAAE;iBACnC,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;IACD;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,eAAe,CACnB,YAA+B,EAC/B,MAAc,EACd,OAA0B,EAC1B,OAA0B;QAE1B,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACrF,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAChC,CAAC;CACF"}
@@ -19,9 +19,10 @@ export class SMTBeacon extends SinglePartyBeacon {
19
19
  /**
20
20
  * Creates an instance of SMTBeacon.
21
21
  * @param {BeaconService} service The Beacon service.
22
+ * @param {string} did The absolute did:btcr2 identifier this beacon serves.
22
23
  */
23
- constructor(service) {
24
- super({ ...service, type: 'SMTBeacon' });
24
+ constructor(service, did) {
25
+ super({ ...service, type: 'SMTBeacon' }, did);
25
26
  }
26
27
  /**
27
28
  * Implements {@link https://dcdpr.github.io/did-btcr2/operations/resolve.html#process-smt-beacon | 7.2.e.1 Process SMT Beacon}.
@@ -39,8 +40,8 @@ export class SMTBeacon extends SinglePartyBeacon {
39
40
  processSignals(signals, sidecar) {
40
41
  const updates = new Array();
41
42
  const needs = new Array();
42
- // Extract the DID from the beacon service id (strip the #fragment)
43
- const did = this.service.id.split('#')[0];
43
+ // The DID under resolution keys this beacon's leaf index.
44
+ const did = this.did;
44
45
  for (const signal of signals) {
45
46
  // Signal bytes are the hex-encoded SMT root hash; smtMap is keyed by proof.id (also hex)
46
47
  const smtProof = sidecar.smtMap.get(signal.signalBytes);
@@ -109,8 +110,8 @@ export class SMTBeacon extends SinglePartyBeacon {
109
110
  * @throws {BeaconError} if the bitcoin address is invalid, unfunded, or UTXO cannot cover the fee.
110
111
  */
111
112
  async broadcastSignal(signedUpdate, signer, bitcoin, options) {
112
- // Extract the DID from the beacon service id (strip the #fragment)
113
- const did = this.service.id.split('#')[0];
113
+ // The DID keys this beacon's leaf index in the tree.
114
+ const did = this.did;
114
115
  // Build a single-entry SMT from the signed update
115
116
  const canonicalBytes = new TextEncoder().encode(canonicalize(signedUpdate));
116
117
  const nonce = randomBytes(32);
@@ -1 +1 @@
1
- {"version":3,"file":"smt-beacon.js","sourceRoot":"","sources":["../../../../src/core/beacon/smt-beacon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smt-beacon.js","sourceRoot":"","sources":["../../../../src/core/beacon/smt-beacon.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC3H,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIlD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG5C;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,SAAU,SAAQ,iBAAiB;IAC9C;;;;OAIG;IACH,YAAY,OAAsB,EAAE,GAAW;QAC7C,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,cAAc,CACZ,OAA4B,EAC5B,OAAoB;QAEpB,MAAM,OAAO,GAAG,IAAI,KAAK,EAAsC,CAAC;QAChE,MAAM,KAAK,GAAG,IAAI,KAAK,EAAY,CAAC;QAEpC,0DAA0D;QAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAErB,KAAI,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC5B,yFAAyF;YACzF,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAExD,IAAG,CAAC,QAAQ,EAAE,CAAC;gBACb,uCAAuC;gBACvC,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAc,cAAc;oBAChC,WAAW,EAAO,MAAM,CAAC,WAAW;oBACpC,eAAe,EAAG,IAAI,CAAC,OAAO,CAAC,EAAE;iBAClC,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,0EAA0E;YAC1E,IAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACnB,MAAM,IAAI,cAAc,CACtB,yCAAyC,EACzC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CACvC,CAAC;YACJ,CAAC;YAED,uEAAuE;YACvE,gFAAgF;YAChF,mEAAmE;YACnE,sEAAsE;YACtE,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClD,MAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ;gBACrC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACrE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;YACpC,MAAM,KAAK,GAAG,qBAAqB,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;YAEpE,IAAG,CAAC,KAAK,EAAE,CAAC;gBACV,MAAM,IAAI,cAAc,CACtB,gCAAgC,EAChC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CACvC,CAAC;YACJ,CAAC;YAED,yEAAyE;YACzE,IAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACtB,SAAS;YACX,CAAC;YAED,yEAAyE;YACzE,wEAAwE;YACxE,MAAM,aAAa,GAAG,SAAS,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YACpE,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAE1D,IAAG,CAAC,YAAY,EAAE,CAAC;gBACjB,2CAA2C;gBAC3C,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAe,kBAAkB;oBACrC,UAAU,EAAS,aAAa;oBAChC,eAAe,EAAI,IAAI,CAAC,OAAO,CAAC,EAAE;iBACnC,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,eAAe,CACnB,YAA+B,EAC/B,MAAc,EACd,OAA0B,EAC1B,OAA0B;QAE1B,qDAAqD;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAErB,kDAAkD;QAClD,MAAM,cAAc,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;QAC5E,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,eAAe,EAAE,CAAC;QACnC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEhB,yEAAyE;QACzE,6EAA6E;QAC7E,wEAAwE;QACxE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE9B,yDAAyD;QACzD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAEvF,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACvC,CAAC;CACF"}
@@ -1,6 +1,7 @@
1
1
  import { DidDocumentError, INVALID_DID_DOCUMENT } from '@did-btcr2/common';
2
2
  import { SchnorrMultikey } from '@did-btcr2/cryptosuite';
3
3
  import { CompressedSecp256k1PublicKey } from '@did-btcr2/keypair';
4
+ import { Appendix } from '../utils/appendix.js';
4
5
  import { Identifier } from './identifier.js';
5
6
  import { Resolver } from './resolver.js';
6
7
  /**
@@ -32,9 +33,14 @@ export function getAggregationCommunicationKey(document) {
32
33
  // Resolve capabilityInvocation[0] to a verification method: a string reference is
33
34
  // dereferenced by id against verificationMethod; an embedded method is used directly.
34
35
  // A local id lookup is used rather than getSigningMethod, which defaults to #initialKey
35
- // and does not resolve embedded methods.
36
+ // and does not resolve embedded methods. Reference and method id are each resolved to an
37
+ // absolute DID URL first, because either may be spelled as a relative DID URL; an
38
+ // unusable reference resolves to nothing rather than to the first unusable method id.
39
+ const invocationId = Appendix.absoluteDidUrl(invocation, document.id);
36
40
  const vm = typeof invocation === 'string'
37
- ? document.verificationMethod?.find(method => method.id === invocation)
41
+ ? (invocationId === undefined
42
+ ? undefined
43
+ : document.verificationMethod?.find(method => Appendix.absoluteDidUrl(method.id, document.id) === invocationId))
38
44
  : invocation;
39
45
  if (!vm) {
40
46
  throw new DidDocumentError(`Cannot derive aggregation communication key: capabilityInvocation[0] "${invocation}" `
@@ -1 +1 @@
1
- {"version":3,"file":"did-sender-resolver.js","sourceRoot":"","sources":["../../../src/core/did-sender-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,8BAA8B,CAC5C,QAAqB;IAErB,MAAM,UAAU,GAAG,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC;IACtD,IAAG,UAAU,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,gBAAgB,CACxB,6EAA6E,EAC7E,oBAAoB,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,CAC1C,CAAC;IACJ,CAAC;IAED,kFAAkF;IAClF,sFAAsF;IACtF,wFAAwF;IACxF,yCAAyC;IACzC,MAAM,EAAE,GAAsC,OAAO,UAAU,KAAK,QAAQ;QAC1E,CAAC,CAAC,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,UAAU,CAAC;QACvE,CAAC,CAAC,UAAU,CAAC;IAEf,IAAG,CAAC,EAAE,EAAE,CAAC;QACP,MAAM,IAAI,gBAAgB,CACxB,yEAAyE,UAAU,IAAI;cACnF,2CAA2C,EAC/C,oBAAoB,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,CACtD,CAAC;IACJ,CAAC;IAED,OAAO,eAAe,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;AAC9D,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,oBAAoB,CAClC,GAAW,EACX,IAAmC;IAEnC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAG,UAAU,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC/B,OAAO,IAAI,4BAA4B,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QACnE,CAAC;QACD,qFAAqF;QACrF,sFAAsF;QACtF,6CAA6C;QAC7C,IAAG,IAAI,EAAE,eAAe,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YACrE,OAAO,8BAA8B,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,qFAAqF;QACrF,iEAAiE;IACnE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"did-sender-resolver.js","sourceRoot":"","sources":["../../../src/core/did-sender-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,8BAA8B,CAC5C,QAAqB;IAErB,MAAM,UAAU,GAAG,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC;IACtD,IAAG,UAAU,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,gBAAgB,CACxB,6EAA6E,EAC7E,oBAAoB,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,CAC1C,CAAC;IACJ,CAAC;IAED,kFAAkF;IAClF,sFAAsF;IACtF,wFAAwF;IACxF,yFAAyF;IACzF,kFAAkF;IAClF,sFAAsF;IACtF,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;IACtE,MAAM,EAAE,GAAsC,OAAO,UAAU,KAAK,QAAQ;QAC1E,CAAC,CAAC,CAAC,YAAY,KAAK,SAAS;YAC3B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CACjC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,YAAY,CAC3E,CAAC;QACJ,CAAC,CAAC,UAAU,CAAC;IAEf,IAAG,CAAC,EAAE,EAAE,CAAC;QACP,MAAM,IAAI,gBAAgB,CACxB,yEAAyE,UAAU,IAAI;cACnF,2CAA2C,EAC/C,oBAAoB,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,CACtD,CAAC;IACJ,CAAC;IAED,OAAO,eAAe,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;AAC9D,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,oBAAoB,CAClC,GAAW,EACX,IAAmC;IAEnC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAG,UAAU,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC/B,OAAO,IAAI,4BAA4B,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QACnE,CAAC;QACD,qFAAqF;QACrF,sFAAsF;QACtF,6CAA6C;QAC7C,IAAG,IAAI,EAAE,eAAe,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YACrE,OAAO,8BAA8B,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,qFAAqF;QACrF,iEAAiE;IACnE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -43,31 +43,6 @@ function isSMTProof(value) {
43
43
  && typeof value.collapsed === 'string'
44
44
  && Array.isArray(value.hashes);
45
45
  }
46
- // ─── verification relationship membership ────────────────────────────────────
47
- /**
48
- * Resolves a verification relationship entry to the absolute DID URL of the
49
- * method it names, or `undefined` when the entry names no method.
50
- *
51
- * An entry is either a reference (a bare fragment such as `#key-0`, or an
52
- * absolute DID URL) or an embedded verification method object. A bare fragment
53
- * is relative to the document that carries it, so it is resolved against
54
- * `documentId` before comparison; every other string is returned unchanged, so
55
- * a reference naming a different DID can never collapse onto this document's.
56
- *
57
- * Malformed entries yield `undefined` rather than a placeholder string, so two
58
- * unusable values never compare equal to each other.
59
- *
60
- * @param {string} documentId The `id` of the DID document carrying the entry.
61
- * @param {unknown} entry The relationship entry: a reference or an embedded method.
62
- * @returns {string | undefined} The absolute DID URL, or undefined if unusable.
63
- */
64
- function relationshipMethodId(documentId, entry) {
65
- // An embedded method names itself with its `id`; a reference is the id itself.
66
- const id = isRecord(entry) ? entry.id : entry;
67
- if (typeof id !== 'string' || id.length === 0)
68
- return undefined;
69
- return id.startsWith('#') ? `${documentId}${id}` : id;
70
- }
71
46
  /**
72
47
  * Different possible Resolver states representing phases in the resolution process.
73
48
  */
@@ -437,8 +412,8 @@ export class Resolver {
437
412
  // without it here the read path applies an update signed by any key in the document.
438
413
  // Checked before the method is located so an unauthorized method always fails with
439
414
  // this typed error, whether or not it also appears in verificationMethod[].
440
- const authorizedMethodId = relationshipMethodId(currentDocument.id, verificationMethodId);
441
- const authorized = authorizedMethodId !== undefined && currentDocument.capabilityInvocation?.some(entry => relationshipMethodId(currentDocument.id, entry) === authorizedMethodId);
415
+ const authorizedMethodId = Appendix.relationshipMethodId(verificationMethodId, currentDocument.id);
416
+ const authorized = authorizedMethodId !== undefined && currentDocument.capabilityInvocation?.some(entry => Appendix.relationshipMethodId(entry, currentDocument.id) === authorizedMethodId);
442
417
  if (!authorized) {
443
418
  throw new ResolveError('Invalid update: verificationMethod is not authorized for capabilityInvocation', INVALID_DID_UPDATE, {
444
419
  verificationMethodId,
@@ -538,7 +513,9 @@ export class Resolver {
538
513
  if (this.#processedServices.has(service.id) || !signals.length)
539
514
  continue;
540
515
  // Establish a typed beacon and process its signals
541
- const beacon = BeaconFactory.establish(service);
516
+ // The beacon is bound to the DID under resolution: a beacon service
517
+ // `id` may be a relative DID URL, so it cannot supply the subject.
518
+ const beacon = BeaconFactory.establish(service, this.#currentDocument.id);
542
519
  const result = beacon.processSignals(signals, this.#sidecarData);
543
520
  if (result.needs.length > 0) {
544
521
  // This service has unmet data needs, collect them