@did-btcr2/method 0.63.0 → 0.64.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.
@@ -26,4 +26,15 @@ export function isBtcr2UpdateContext(value, expected = BTCR2_UPDATE_CONTEXT) {
26
26
  && value.length === expected.length
27
27
  && value.every((url, i) => url === expected[i]);
28
28
  }
29
+ /**
30
+ * The JSON Patch operation of the Deactivate operation: it adds the `deactivated` property
31
+ * with the value `true`. Deactivate is the Update operation with this predetermined patch, and
32
+ * resolution stops at the deactivation for good. See
33
+ * {@link https://dcdpr.github.io/did-btcr2/operations/deactivate.html | Deactivate}.
34
+ */
35
+ export const DEACTIVATION_PATCH = Object.freeze({
36
+ op: 'add',
37
+ path: '/deactivated',
38
+ value: true,
39
+ });
29
40
  //# sourceMappingURL=btcr2-update.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"btcr2-update.js","sourceRoot":"","sources":["../../../src/core/btcr2-update.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC;IAChD,mCAAmC;IACnC,0BAA0B;IAC1B,6CAA6C;IAC7C,8BAA8B;CACtB,CAAC,CAAC;AAEZ;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAc,EACd,WAA8B,oBAAoB;IAElD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;WACtB,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;WAChC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC"}
1
+ {"version":3,"file":"btcr2-update.js","sourceRoot":"","sources":["../../../src/core/btcr2-update.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC;IAChD,mCAAmC;IACnC,0BAA0B;IAC1B,6CAA6C;IAC7C,8BAA8B;CACtB,CAAC,CAAC;AAEZ;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAc,EACd,WAA8B,oBAAoB;IAElD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;WACtB,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;WAChC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAA6B,MAAM,CAAC,MAAM,CAAC;IACxE,EAAE,EAAM,KAAK;IACb,IAAI,EAAI,cAAc;IACtB,KAAK,EAAG,IAAI;CACb,CAAC,CAAC"}
@@ -3,9 +3,9 @@ import { canonicalHash, canonicalHashBytes, canonicalize, DateUtils, encode as e
3
3
  import { BTCR2_UPDATE_CONTEXT, isBtcr2UpdateContext } from './btcr2-update.js';
4
4
  import { BIP340Cryptosuite, BIP340DataIntegrityProof, SchnorrMultikey } from '@did-btcr2/cryptosuite';
5
5
  import { CompressedSecp256k1PublicKey } from '@did-btcr2/keypair';
6
- import { DidBtcr2 } from '../did-btcr2.js';
7
6
  import { Appendix } from '../utils/appendix.js';
8
7
  import { DidDocument, ID_PLACEHOLDER_VALUE } from '../utils/did-document.js';
8
+ import { errorCause } from '../utils/error-cause.js';
9
9
  import { BeaconFactory } from './beacon/factory.js';
10
10
  import { BeaconUtils } from './beacon/utils.js';
11
11
  import { Identifier } from './identifier.js';
@@ -88,6 +88,8 @@ function validateVersionId(value) {
88
88
  }
89
89
  /** An XML Datetime in UTC with the `Z` designator and no fraction, for example `2026-07-01T00:00:00Z`. */
90
90
  const UTC_XSD_DATETIME = /^-?\d{4,}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$/;
91
+ /** The timezone part that an XML Schema `dateTimeStamp` requires: `Z` or an offset. */
92
+ const XSD_TIMEZONE = /(Z|[+-]\d{2}:\d{2})$/;
91
93
  /**
92
94
  * Parse `ResolutionOptions.versionTime`. DID Resolution v1 requires an XML Datetime
93
95
  * normalized to UTC without sub-second precision. The specification raises
@@ -350,19 +352,85 @@ export class Resolver {
350
352
  });
351
353
  }
352
354
  }
355
+ /**
356
+ * Decode a hash of a BTCR2 Update (`sourceHash` or `targetHash`). The specification encodes
357
+ * both with base64url without padding.
358
+ * @param {unknown} value The encoded hash.
359
+ * @param {'sourceHash' | 'targetHash'} field The name of the field, for the error.
360
+ * @returns {HashBytes} The decoded bytes.
361
+ * @throws {ResolveError} `INVALID_DID_UPDATE` if the value is not a string or does not decode.
362
+ */
363
+ static decodeUpdateHash(value, field) {
364
+ if (typeof value === 'string') {
365
+ try {
366
+ return decodeHash(value, 'base64urlnopad');
367
+ }
368
+ catch (error) {
369
+ throw new ResolveError(`Invalid update: ${field} does not decode as base64url: ${errorCause(error).message}`, INVALID_DID_UPDATE, { [field]: value, cause: errorCause(error) });
370
+ }
371
+ }
372
+ throw new ResolveError(`Invalid update: ${field} is not a string`, INVALID_DID_UPDATE, { [field]: value });
373
+ }
374
+ /**
375
+ * Parse a `created` or `expires` value of an update proof. Data Integrity types both as an
376
+ * XML Schema `dateTimeStamp`: an XML Datetime with a timezone. A value without a timezone
377
+ * names no fixed instant, so two resolvers would read two instants; it is rejected.
378
+ * @param {Btcr2DataIntegrityProof} proof The update proof.
379
+ * @param {'created' | 'expires'} field The field to parse.
380
+ * @returns {number | undefined} The instant in milliseconds since the Unix epoch, or `undefined` when the field is absent.
381
+ * @throws {ResolveError} `INVALID_DID_UPDATE` for a value that is not an XML Datetime with a timezone.
382
+ */
383
+ static proofInstant(proof, field) {
384
+ const value = proof[field];
385
+ if (value === undefined)
386
+ return undefined;
387
+ if (typeof value === 'string' && XSD_TIMEZONE.test(value) && DateUtils.isValidXsdDateTime(value)) {
388
+ const ms = Date.parse(value);
389
+ if (Number.isFinite(ms))
390
+ return ms;
391
+ }
392
+ throw new ResolveError(`Invalid update: proof.${field} is not an XML Datetime with a timezone`, INVALID_DID_UPDATE, { [field]: value });
393
+ }
394
+ /**
395
+ * Spec "Check `update.proof`": the proof time window against the block that contains the
396
+ * Beacon Signal. `created` must not be after the header time of the block: a controller
397
+ * signs a short time before the block, and on mainnet the header time is about one hour
398
+ * after the `mediantime`. `expires` must not be before the block `mediantime`: it limits a
399
+ * replay, and a single miner cannot change `mediantime`. `expires` must not be before
400
+ * `created`. Each comparison has no tolerance.
401
+ * @param {Btcr2DataIntegrityProof} proof The update proof.
402
+ * @param {BlockMetadata} block The block of the Beacon Signal.
403
+ * @throws {ResolveError} `INVALID_DID_UPDATE` if a value is outside the window.
404
+ */
405
+ static checkProofWindow(proof, block) {
406
+ const created = Resolver.proofInstant(proof, 'created');
407
+ const expires = Resolver.proofInstant(proof, 'expires');
408
+ if (created !== undefined && created > block.time * 1000) {
409
+ throw new ResolveError('Invalid update: proof.created is after the header time of the block that contains the Beacon Signal', INVALID_DID_UPDATE, { created: proof.created, blockTime: block.time });
410
+ }
411
+ if (expires !== undefined && expires < block.mediantime * 1000) {
412
+ throw new ResolveError('Invalid update: proof.expires is before the mediantime of the block that contains the Beacon Signal', INVALID_DID_UPDATE, { expires: proof.expires, mediantime: block.mediantime });
413
+ }
414
+ if (created !== undefined && expires !== undefined && expires < created) {
415
+ throw new ResolveError('Invalid update: proof.expires is before proof.created', INVALID_DID_UPDATE, { created: proof.created, expires: proof.expires });
416
+ }
417
+ }
353
418
  /**
354
419
  * Implements subsection {@link https://dcdpr.github.io/did-btcr2/operations/resolve.html#apply-update | Apply update}
355
420
  * and its step {@link https://dcdpr.github.io/did-btcr2/operations/resolve.html#check-update-proof | Check update.proof}.
421
+ * Every failure that the specification names raises `INVALID_DID_UPDATE`. An error of the
422
+ * cryptosuite, the multikey, the hash decoder, or the patch rides along as `data.cause`.
356
423
  * @param {DidDocument} currentDocument The current DID Document to apply the update to.
357
424
  * @param {SignedBTCR2Update} update The BTCR2 Signed Update to apply.
425
+ * @param {BlockMetadata} block The block that contains the Beacon Signal that announced the update.
358
426
  * @returns {DidDocument} The updated DID Document after applying the update.
359
427
  * @throws {ResolveError} `INVALID_DID_UPDATE` if the update is invalid or cannot be applied.
360
428
  */
361
- static applyUpdate(currentDocument, update) {
429
+ static applyUpdate(currentDocument, update, block) {
362
430
  // Spec "Apply update": the hash of the current document must be the decoded
363
431
  // update.sourceHash (byte comparison).
364
432
  const currentDocumentHash = canonicalHashBytes(currentDocument);
365
- const sourceHashBytes = decodeHash(update.sourceHash, 'base64urlnopad');
433
+ const sourceHashBytes = Resolver.decodeUpdateHash(update.sourceHash, 'sourceHash');
366
434
  if (!equalBytes(sourceHashBytes, currentDocumentHash)) {
367
435
  throw new ResolveError(`Hash mismatch: update.sourceHash !== currentDocumentHash`, INVALID_DID_UPDATE, {
368
436
  sourceHash: update.sourceHash,
@@ -380,73 +448,88 @@ export class Resolver {
380
448
  if (!isBtcr2UpdateContext(update.proof?.['@context'], update['@context'])) {
381
449
  throw new ResolveError('Invalid update: proof @context does not equal the update @context', INVALID_DID_UPDATE, { proofContext: update.proof?.['@context'], context: update['@context'] });
382
450
  }
383
- // Get the capability id from the to update proof.
384
- const capabilityId = update.proof?.capability;
385
- // Since this field is optional, check that it exists
386
- if (!capabilityId) {
387
- // If it does not exist, throw INVALID_DID_UPDATE error
388
- throw new ResolveError('No root capability found in update', INVALID_DID_UPDATE, update);
389
- }
390
- // Get the root capability object by dereferencing the capabilityId
391
- const rootCapability = Appendix.dereferenceZcapId(capabilityId);
392
- // Deconstruct the invocationTarget and controller from the root capability
393
- const { invocationTarget, controller: rootController } = rootCapability;
394
- // Check that both invocationTarget and rootController equal currentDocument.id
395
- if (![invocationTarget, rootController].every((id) => id === currentDocument.id)) {
396
- // If they do not all match, throw INVALID_DID_UPDATE error
397
- throw new ResolveError('Invalid root capability', INVALID_DID_UPDATE, { rootCapability, currentDocument });
398
- }
399
- // Get the verificationMethod field from the update proof as verificationMethodId.
400
- const verificationMethodId = update.proof?.verificationMethod;
401
- // Since this field is optional, check that it exists
402
- if (!verificationMethodId) {
403
- // If it does not exist, throw INVALID_DID_UPDATE error
404
- throw new ResolveError('No verificationMethod found in update', INVALID_DID_UPDATE, update);
451
+ // Spec "Check update.proof": each proof field by string equality, before the method
452
+ // lookup and before signature verification, so that a failure names the field. The
453
+ // capability is the URN that the Data Integrity Config specifies for this DID; the root
454
+ // capability is not derived, the specification makes that optional.
455
+ const proof = update.proof;
456
+ const expectedFields = [
457
+ ['type', 'DataIntegrityProof'],
458
+ ['cryptosuite', 'bip340-jcs-2025'],
459
+ ['proofPurpose', 'capabilityInvocation'],
460
+ ['capabilityAction', 'Write'],
461
+ ['capability', `urn:zcap:root:${encodeURIComponent(currentDocument.id)}`],
462
+ ];
463
+ for (const [field, expected] of expectedFields) {
464
+ const actual = proof[field];
465
+ if (actual !== expected) {
466
+ throw new ResolveError(`Invalid update: proof.${field} must equal "${expected}"`, INVALID_DID_UPDATE, { field, expected, actual });
467
+ }
405
468
  }
406
- // Spec "Check update.proof": raise INVALID_DID_UPDATE if
407
- // currentDocument.capabilityInvocation does not contain
408
- // update.proof.verificationMethod. Locating the method in verificationMethod[] and
409
- // verifying its signature is not sufficient on its own: a key the controller
410
- // published only for authentication (or for no relationship at all) must not be
411
- // able to authorize a DID update. The write path enforces this in DidBtcr2.update();
412
- // without it here the read path applies an update signed by any key in the document.
413
- // Checked before the method is located so an unauthorized method always fails with
414
- // this typed error, whether or not it also appears in verificationMethod[].
415
- const authorizedMethodId = Appendix.relationshipMethodId(verificationMethodId, currentDocument.id);
416
- const authorized = authorizedMethodId !== undefined && currentDocument.capabilityInvocation?.some(entry => Appendix.relationshipMethodId(entry, currentDocument.id) === authorizedMethodId);
417
- if (!authorized) {
469
+ // Spec "Check update.proof": the entry of currentDocument.capabilityInvocation that
470
+ // identifies update.proof.verificationMethod, in the reference form or the embedded
471
+ // form. A key the controller published for authentication only, or for no relationship
472
+ // at all, must not authorize an update; the membership test runs before the method
473
+ // lookup so that such a key always fails with this typed error. The method is the
474
+ // entry itself when embedded, else the member of verificationMethod[] with that id.
475
+ const verificationMethodId = proof.verificationMethod;
476
+ const entry = Appendix.capabilityInvocationEntry(currentDocument, verificationMethodId);
477
+ if (entry === undefined) {
418
478
  throw new ResolveError('Invalid update: verificationMethod is not authorized for capabilityInvocation', INVALID_DID_UPDATE, {
419
479
  verificationMethodId,
420
480
  capabilityInvocation: currentDocument.capabilityInvocation
421
481
  });
422
482
  }
423
- // Get the verificationMethod from the DID Document using the verificationMethodId.
424
- const vm = DidBtcr2.getSigningMethod(currentDocument, verificationMethodId);
425
- // Construct a new SchnorrMultikey.
426
- const multikey = SchnorrMultikey.fromVerificationMethod(vm);
427
- // Construct a new BIP340Cryptosuite with the SchnorrMultikey.
428
- const cryptosuite = new BIP340Cryptosuite(multikey);
429
- // Canonicalize the update
430
- const canonicalUpdate = canonicalize(update);
431
- // Construct a DataIntegrityProof with the cryptosuite
432
- const diProof = new BIP340DataIntegrityProof(cryptosuite);
433
- // Call the verifyProof method
434
- const verificationResult = diProof.verifyProof(canonicalUpdate, 'capabilityInvocation');
435
- // If the result is not verified, throw INVALID_DID_UPDATE error
436
- if (!verificationResult.verified) {
437
- throw new ResolveError('Invalid update: proof not verified', INVALID_DID_UPDATE, verificationResult);
483
+ const vm = Appendix.verificationMethodOfEntry(currentDocument, entry);
484
+ if (vm === undefined) {
485
+ throw new ResolveError('Invalid update: verificationMethod is not found in the verificationMethod of the current document', INVALID_DID_UPDATE, { verificationMethodId });
486
+ }
487
+ // Spec "Check update.proof": the proof time window against the block of the signal.
488
+ Resolver.checkProofWindow(proof, block);
489
+ // Verify the proof with the public key that the verification method publishes. The
490
+ // multikey names the method by its absolute DID URL, as the proof does. An error of the
491
+ // multikey or the cryptosuite (a key that does not decode, a proof value that does not
492
+ // decode, a created value the suite rejects) is an invalid update.
493
+ let verified;
494
+ try {
495
+ const multikey = SchnorrMultikey.fromVerificationMethod({
496
+ ...vm, id: Appendix.absoluteDidUrl(vm.id, currentDocument.id) ?? vm.id
497
+ });
498
+ const diProof = new BIP340DataIntegrityProof(new BIP340Cryptosuite(multikey));
499
+ verified = diProof.verifyProof(canonicalize(update), 'capabilityInvocation').verified;
500
+ }
501
+ catch (error) {
502
+ throw new ResolveError(`Invalid update: proof verification failed: ${errorCause(error).message}`, INVALID_DID_UPDATE, { verificationMethodId, cause: errorCause(error) });
503
+ }
504
+ if (!verified) {
505
+ throw new ResolveError('Invalid update: proof not verified', INVALID_DID_UPDATE, { verificationMethodId });
506
+ }
507
+ // Spec "Apply update": apply update.patch strictly. The first operation that fails,
508
+ // including a failed test, fails the whole patch.
509
+ let updatedDocument;
510
+ try {
511
+ updatedDocument = JSONPatch.apply(currentDocument, update.patch, { strict: true });
512
+ }
513
+ catch (error) {
514
+ throw new ResolveError(`Invalid update: ${errorCause(error).message}`, INVALID_DID_UPDATE, { cause: errorCause(error) });
515
+ }
516
+ // Spec "Apply update": the patched document keeps the DID as its id and conforms to
517
+ // DID Core v1.1.
518
+ if (updatedDocument?.id !== currentDocument.id) {
519
+ throw new ResolveError(`Invalid update: the patch changes the document id (from "${currentDocument.id}" to "${String(updatedDocument?.id)}")`, INVALID_DID_UPDATE, { sourceId: currentDocument.id, targetId: updatedDocument?.id });
520
+ }
521
+ try {
522
+ DidDocument.validate(updatedDocument);
523
+ }
524
+ catch (error) {
525
+ throw new ResolveError(`Invalid update: the patched document does not conform to DID Core: ${errorCause(error).message}`, INVALID_DID_UPDATE, { cause: errorCause(error) });
438
526
  }
439
- // Apply the update.patch to the currentDocument to get the updatedDocument.
440
- const updatedDocument = JSONPatch.apply(currentDocument, update.patch);
441
- // Verify that updatedDocument is conformant to DID Core v1.1.
442
- DidDocument.validate(updatedDocument);
443
527
  // Canonicalize and hash the updatedDocument (raw bytes).
444
528
  const updatedDocumentHash = canonicalHashBytes(updatedDocument);
445
529
  // Prepare the update targetHash for comparison with updatedDocumentHash.
446
- const updateTargetHash = decodeHash(update.targetHash);
530
+ const updateTargetHash = Resolver.decodeUpdateHash(update.targetHash, 'targetHash');
447
531
  // Make sure the update.targetHash equals updatedDocumentHash.
448
532
  if (!equalBytes(updateTargetHash, updatedDocumentHash)) {
449
- // If they do not match, throw INVALID_DID_UPDATE error.
450
533
  throw new ResolveError(`Invalid update: update.targetHash !== updatedDocumentHash`, INVALID_DID_UPDATE, { updateTargetHash, updatedDocumentHash });
451
534
  }
452
535
  // Return final updatedDocument.
@@ -597,7 +680,7 @@ export class Resolver {
597
680
  }
598
681
  // Second arm: update.targetVersionId == currentVersionId + 1. Apply the update,
599
682
  // append the unsigned update hash to the history, increment the version.
600
- this.#currentDocument = Resolver.applyUpdate(document, update);
683
+ this.#currentDocument = Resolver.applyUpdate(document, update, block);
601
684
  const unsignedUpdate = JSONUtils.deleteKeys(update, ['proof']);
602
685
  this.#updateHashHistory.push(canonicalHashBytes(unsignedUpdate));
603
686
  this.#currentVersionId++;
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/core/resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/core/resolver.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  var _a;
2
- import { canonicalHash, INVALID_DID_UPDATE, JSONPatch, UpdateError } from '@did-btcr2/common';
2
+ import { canonicalHash, canonicalize, INVALID_DID_UPDATE, JSONPatch, UpdateError } from '@did-btcr2/common';
3
3
  import { SchnorrMultikey } from '@did-btcr2/cryptosuite';
4
4
  import { BTCR2_UPDATE_CONTEXT } from './btcr2-update.js';
5
5
  import { DidDocument } from '../utils/did-document.js';
6
+ import { errorCause } from '../utils/error-cause.js';
6
7
  import { BeaconFactory } from './beacon/factory.js';
7
8
  /**
8
9
  * Sans-I/O state machine for did:btcr2 updates: the counterpart to {@link Resolver}.
@@ -91,7 +92,17 @@ export class Updater {
91
92
  targetVersionId: sourceVersionId + 1,
92
93
  sourceHash: canonicalHash(sourceDocument),
93
94
  };
94
- const targetDocument = JSONPatch.apply(sourceDocument, patches);
95
+ // Spec "Construct BTCR2 Unsigned Update": apply jsonPatch strictly. The first operation
96
+ // that fails, including a failed test, fails the whole patch. A patch that a lenient
97
+ // library applies with no effect is refused here, before it is signed and announced: a
98
+ // conformant resolver would reject the announced update.
99
+ let targetDocument;
100
+ try {
101
+ targetDocument = JSONPatch.apply(sourceDocument, patches, { strict: true });
102
+ }
103
+ catch (error) {
104
+ throw new UpdateError(`Invalid patch: ${errorCause(error).message}`, INVALID_DID_UPDATE, { cause: errorCause(error) });
105
+ }
95
106
  // Spec (operations/update.md): "An INVALID_DID_UPDATE error MUST be raised if
96
107
  // didTargetDocument.id is not equal to didSourceDocument.id." `DidDocument.isValid`
97
108
  // checks W3C conformance but not this equality, so it's enforced explicitly here.
@@ -166,7 +177,26 @@ export class Updater {
166
177
  capabilityAction: 'Write',
167
178
  };
168
179
  const diproof = multikey.toCryptosuite().toDataIntegrityProof();
169
- return diproof.addProof(unsignedUpdate, config);
180
+ const signedUpdate = diproof.addProof(unsignedUpdate, config);
181
+ // Spec "Construct BTCR2 Signed Update": verify update.proof before the announcement,
182
+ // with the public key that the verification method publishes, not the signer's key. A
183
+ // signer that returns a wrong signature for the right key passes the key comparison
184
+ // above. An announced update with an invalid proof permanently invalidates the DID, so
185
+ // the failure surfaces here, before the state machine asks for funding.
186
+ let verified;
187
+ try {
188
+ const verifier = SchnorrMultikey.fromVerificationMethod({ ...verificationMethod, id: absoluteMethodId });
189
+ verified = verifier.toCryptosuite().toDataIntegrityProof()
190
+ .verifyProof(canonicalize(signedUpdate), 'capabilityInvocation').verified;
191
+ }
192
+ catch (error) {
193
+ throw new UpdateError(`Invalid update: the proof does not verify with the public key of "${verificationMethod.id}": `
194
+ + errorCause(error).message, INVALID_DID_UPDATE, { verificationMethodId: verificationMethod.id, cause: errorCause(error) });
195
+ }
196
+ if (!verified) {
197
+ throw new UpdateError(`Invalid update: the proof does not verify with the public key of "${verificationMethod.id}".`, INVALID_DID_UPDATE, { verificationMethodId: verificationMethod.id });
198
+ }
199
+ return signedUpdate;
170
200
  }
171
201
  /**
172
202
  * Implements subsection {@link https://dcdpr.github.io/did-btcr2/operations/update.html#announce-did-update | 7.3.d Announce DID Update}.
@@ -1 +1 @@
1
- {"version":3,"file":"updater.js","sourceRoot":"","sources":["../../../src/core/updater.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"updater.js","sourceRoot":"","sources":["../../../src/core/updater.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { IdentifierHrp, INVALID_DID_DOCUMENT, INVALID_DID_UPDATE, METHOD_NOT_SUPPORTED, MethodError, UpdateError } from '@did-btcr2/common';
2
2
  import { Did, DidError, DidErrorCode } from '@web5/dids';
3
+ import { DEACTIVATION_PATCH } from './core/btcr2-update.js';
3
4
  import { Identifier } from './core/identifier.js';
4
5
  import { Resolver } from './core/resolver.js';
5
6
  import { Updater } from './core/updater.js';
@@ -108,26 +109,34 @@ export class DidBtcr2 {
108
109
  * @param {string} params.verificationMethodId The verification method ID to sign with.
109
110
  * @param {string} params.beaconId The beacon service ID to broadcast through.
110
111
  * @returns {Updater} A sans-I/O state machine for driving the update.
111
- * @throws {UpdateError} If the verification method is not authorized, not found,
112
- * not of type `Multikey`, or does not have a `zQ3s` publicKeyMultibase prefix.
113
- * Also throws if the beacon service is not found.
112
+ * @throws {UpdateError} `INVALID_DID_UPDATE` if `sourceVersionId` is not an integer of at
113
+ * least 1, if no entry of `capabilityInvocation` identifies the verification method, if a
114
+ * reference entry names no member of `verificationMethod`, or if the beacon service is not
115
+ * found. `INVALID_DID_DOCUMENT` if the method is not of type `Multikey` or does not have a
116
+ * `zQ3s` publicKeyMultibase prefix.
114
117
  */
115
118
  static update({ sourceDocument, patches, sourceVersionId, verificationMethodId, beaconId, }) {
116
- // Validate that the verificationMethodId is authorized for capabilityInvocation.
117
- // Both sides are resolved to absolute DID URLs first, so the caller's spelling of the
118
- // reference and the document's spelling of the entry may differ: either is legal per
119
- // DID Core. This is the same rule the read path applies to an update's proof, so an
120
- // update this factory authorizes is one the resolver will also accept.
121
- const authorizedMethodId = Appendix.relationshipMethodId(verificationMethodId, sourceDocument.id);
122
- const authorized = authorizedMethodId !== undefined && sourceDocument.capabilityInvocation?.some(entry => Appendix.relationshipMethodId(entry, sourceDocument.id) === authorizedMethodId);
123
- if (!authorized) {
124
- throw new UpdateError('Invalid verificationMethodId: not authorized for capabilityInvocation', INVALID_DID_DOCUMENT, sourceDocument);
119
+ // The version of the source document is a positive integer: versionId starts at 1, and
120
+ // targetVersionId is sourceVersionId + 1. Without the guard, Number(undefined) + 1 is
121
+ // NaN, and the update carries no usable version.
122
+ if (!Number.isInteger(sourceVersionId) || sourceVersionId < 1) {
123
+ throw new UpdateError(`Invalid sourceVersionId: expected an integer of at least 1, got ${String(sourceVersionId)}.`, INVALID_DID_UPDATE, { sourceVersionId });
125
124
  }
126
- // Get the verification method to be used for signing the update
127
- const verificationMethod = this.getSigningMethod(sourceDocument, verificationMethodId);
128
- // Validate the verificationMethod exists in the sourceDocument
125
+ // Spec "Construct BTCR2 Signed Update": an entry of capabilityInvocation must identify
126
+ // the verificationMethodId, in the reference form or the embedded form. Both sides are
127
+ // resolved to absolute DID URLs first, so the caller's spelling of the reference and the
128
+ // document's spelling of the entry may differ: either is legal per DID Core. This is the
129
+ // same rule the read path applies to an update's proof, so an update this factory
130
+ // authorizes is one the resolver will also accept.
131
+ const entry = Appendix.capabilityInvocationEntry(sourceDocument, verificationMethodId);
132
+ if (entry === undefined) {
133
+ throw new UpdateError('Invalid verificationMethodId: not authorized for capabilityInvocation', INVALID_DID_UPDATE, { verificationMethodId, capabilityInvocation: sourceDocument.capabilityInvocation });
134
+ }
135
+ // The verification method is the embedded object of the entry, or the member of
136
+ // verificationMethod[] that a reference entry names.
137
+ const verificationMethod = Appendix.verificationMethodOfEntry(sourceDocument, entry);
129
138
  if (!verificationMethod) {
130
- throw new UpdateError('Invalid verificationMethod: not found in source document', INVALID_DID_DOCUMENT, { sourceDocument, verificationMethodId });
139
+ throw new UpdateError('Invalid verificationMethodId: not found in source document', INVALID_DID_UPDATE, { verificationMethodId });
131
140
  }
132
141
  // Validate the verificationMethod is of type 'Multikey'
133
142
  if (verificationMethod.type !== MULTIKEY_VERIFICATION_METHOD_TYPE) {
@@ -149,15 +158,38 @@ export class DidBtcr2 {
149
158
  if (!beaconService) {
150
159
  throw new UpdateError('No beacon service found for provided beaconId', INVALID_DID_UPDATE, { sourceDocument, beaconId });
151
160
  }
152
- // Return a sans-I/O state machine the caller will drive
161
+ // Return a sans-I/O state machine the caller will drive. The prefix check above proves
162
+ // that the method carries a publicKeyMultibase, which the btcr2 method type requires.
153
163
  return new Updater({
154
164
  sourceDocument,
155
165
  patches,
156
166
  sourceVersionId,
157
- verificationMethod,
167
+ verificationMethod: verificationMethod,
158
168
  beaconService,
159
169
  });
160
170
  }
171
+ /**
172
+ * Entry point for section {@link https://dcdpr.github.io/did-btcr2/operations/deactivate.html | 7.4 Deactivate}.
173
+ *
174
+ * Deactivate is the Update operation with the predetermined patch {@link DEACTIVATION_PATCH}:
175
+ * it adds the `deactivated` property with the value `true`. The factory returns the
176
+ * {@link Updater} that {@link DidBtcr2.update} returns for that patch, and the caller drives
177
+ * it in the same way. Resolution stops at the deactivation for good. The factory does not
178
+ * refuse a source document that is deactivated already; the api does (ADR 100).
179
+ *
180
+ * @param params Deactivation parameters: the parameters of {@link DidBtcr2.update} without `patches`.
181
+ * @returns {Updater} A sans-I/O state machine for driving the deactivation.
182
+ * @throws {UpdateError} As {@link DidBtcr2.update}.
183
+ */
184
+ static deactivate({ sourceDocument, sourceVersionId, verificationMethodId, beaconId, }) {
185
+ return this.update({
186
+ sourceDocument,
187
+ patches: [{ ...DEACTIVATION_PATCH }],
188
+ sourceVersionId,
189
+ verificationMethodId,
190
+ beaconId,
191
+ });
192
+ }
161
193
  /**
162
194
  * Given the W3C DID Document of a `did:btcr2` identifier, return the signing verification method that will be used
163
195
  * for signing messages and credentials. If given, the `methodId` parameter is used to select the
@@ -184,8 +216,9 @@ export class DidBtcr2 {
184
216
  ?? Appendix.relationshipMethodId(didDocument.assertionMethod?.[0], didDocument.id);
185
217
  // An unusable target matches nothing: without this guard it compares equal to every
186
218
  // method whose own id is unusable, and the document's first malformed method is
187
- // returned as the signing method.
188
- const verificationMethod = targetId === undefined ? undefined : didDocument.verificationMethod?.find((vm) => Appendix.absoluteDidUrl(vm.id, didDocument.id) === targetId);
219
+ // returned as the signing method. The search covers verificationMethod[] first, then the
220
+ // methods that a verification relationship embeds.
221
+ const verificationMethod = targetId === undefined ? undefined : Appendix.getVerificationMethods(didDocument).find(vm => Appendix.absoluteDidUrl(vm.id, didDocument.id) === targetId);
189
222
  // If no verification method is found, throw an error
190
223
  if (!(verificationMethod && verificationMethod.publicKeyMultibase)) {
191
224
  throw new DidError(DidErrorCode.InternalError, 'A verification method intended for signing could not be determined from the DID Document');