@did-btcr2/method 0.23.0 → 0.25.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 (160) hide show
  1. package/README.md +96 -50
  2. package/dist/browser.js +36332 -37280
  3. package/dist/browser.mjs +36331 -37279
  4. package/dist/cjs/core/beacon/aggregation/communication/adapter/did-comm.js +1 -1
  5. package/dist/cjs/core/beacon/aggregation/communication/adapter/did-comm.js.map +1 -1
  6. package/dist/cjs/core/beacon/aggregation/communication/adapter/nostr.js +1 -1
  7. package/dist/cjs/core/beacon/aggregation/communication/adapter/nostr.js.map +1 -1
  8. package/dist/cjs/core/beacon/aggregation/coordinator.js +40 -44
  9. package/dist/cjs/core/beacon/aggregation/coordinator.js.map +1 -1
  10. package/dist/cjs/core/beacon/aggregation/participant.js +35 -38
  11. package/dist/cjs/core/beacon/aggregation/participant.js.map +1 -1
  12. package/dist/cjs/core/beacon/aggregation/session/index.js +3 -4
  13. package/dist/cjs/core/beacon/aggregation/session/index.js.map +1 -1
  14. package/dist/cjs/core/beacon/beacon.js.map +1 -1
  15. package/dist/cjs/core/beacon/cas-beacon.js +119 -7
  16. package/dist/cjs/core/beacon/cas-beacon.js.map +1 -1
  17. package/dist/cjs/core/beacon/factory.js +1 -1
  18. package/dist/cjs/core/beacon/factory.js.map +1 -1
  19. package/dist/cjs/core/beacon/{singleton.js → singleton-beacon.js} +19 -27
  20. package/dist/cjs/core/beacon/singleton-beacon.js.map +1 -0
  21. package/dist/cjs/core/beacon/smt-beacon.js +1 -1
  22. package/dist/cjs/core/beacon/smt-beacon.js.map +1 -1
  23. package/dist/cjs/core/identifier.js +1 -1
  24. package/dist/cjs/core/identifier.js.map +1 -1
  25. package/dist/{esm/core/resolve.js → cjs/core/resolver.js} +244 -92
  26. package/dist/cjs/core/resolver.js.map +1 -0
  27. package/dist/cjs/core/update.js +7 -7
  28. package/dist/cjs/core/update.js.map +1 -1
  29. package/dist/cjs/did-btcr2.js +34 -94
  30. package/dist/cjs/did-btcr2.js.map +1 -1
  31. package/dist/cjs/index.js +2 -3
  32. package/dist/cjs/index.js.map +1 -1
  33. package/dist/cjs/utils/did-document.js +9 -19
  34. package/dist/cjs/utils/did-document.js.map +1 -1
  35. package/dist/esm/core/beacon/aggregation/communication/adapter/did-comm.js +1 -1
  36. package/dist/esm/core/beacon/aggregation/communication/adapter/did-comm.js.map +1 -1
  37. package/dist/esm/core/beacon/aggregation/communication/adapter/nostr.js +1 -1
  38. package/dist/esm/core/beacon/aggregation/communication/adapter/nostr.js.map +1 -1
  39. package/dist/esm/core/beacon/aggregation/coordinator.js +40 -44
  40. package/dist/esm/core/beacon/aggregation/coordinator.js.map +1 -1
  41. package/dist/esm/core/beacon/aggregation/participant.js +35 -38
  42. package/dist/esm/core/beacon/aggregation/participant.js.map +1 -1
  43. package/dist/esm/core/beacon/aggregation/session/index.js +3 -4
  44. package/dist/esm/core/beacon/aggregation/session/index.js.map +1 -1
  45. package/dist/esm/core/beacon/beacon.js.map +1 -1
  46. package/dist/esm/core/beacon/cas-beacon.js +119 -7
  47. package/dist/esm/core/beacon/cas-beacon.js.map +1 -1
  48. package/dist/esm/core/beacon/factory.js +1 -1
  49. package/dist/esm/core/beacon/factory.js.map +1 -1
  50. package/dist/esm/core/beacon/{singleton.js → singleton-beacon.js} +19 -27
  51. package/dist/esm/core/beacon/singleton-beacon.js.map +1 -0
  52. package/dist/esm/core/beacon/smt-beacon.js +1 -1
  53. package/dist/esm/core/beacon/smt-beacon.js.map +1 -1
  54. package/dist/esm/core/identifier.js +1 -1
  55. package/dist/esm/core/identifier.js.map +1 -1
  56. package/dist/{cjs/core/resolve.js → esm/core/resolver.js} +244 -92
  57. package/dist/esm/core/resolver.js.map +1 -0
  58. package/dist/esm/core/update.js +7 -7
  59. package/dist/esm/core/update.js.map +1 -1
  60. package/dist/esm/did-btcr2.js +34 -94
  61. package/dist/esm/did-btcr2.js.map +1 -1
  62. package/dist/esm/index.js +2 -3
  63. package/dist/esm/index.js.map +1 -1
  64. package/dist/esm/utils/did-document.js +9 -19
  65. package/dist/esm/utils/did-document.js.map +1 -1
  66. package/dist/types/core/beacon/aggregation/cohort/index.d.ts +1 -0
  67. package/dist/types/core/beacon/aggregation/cohort/messages/base.d.ts +1 -0
  68. package/dist/types/core/beacon/aggregation/cohort/messages/constants.d.ts +1 -0
  69. package/dist/types/core/beacon/aggregation/cohort/messages/index.d.ts +1 -0
  70. package/dist/types/core/beacon/aggregation/cohort/messages/keygen/cohort-advert.d.ts +1 -0
  71. package/dist/types/core/beacon/aggregation/cohort/messages/keygen/cohort-ready.d.ts +2 -2
  72. package/dist/types/core/beacon/aggregation/cohort/messages/keygen/cohort-ready.d.ts.map +1 -1
  73. package/dist/types/core/beacon/aggregation/cohort/messages/keygen/opt-in-accept.d.ts +1 -0
  74. package/dist/types/core/beacon/aggregation/cohort/messages/keygen/opt-in.d.ts +1 -0
  75. package/dist/types/core/beacon/aggregation/cohort/messages/keygen/subscribe.d.ts +1 -0
  76. package/dist/types/core/beacon/aggregation/cohort/messages/sign/aggregated-nonce.d.ts +1 -0
  77. package/dist/types/core/beacon/aggregation/cohort/messages/sign/authorization-request.d.ts +1 -0
  78. package/dist/types/core/beacon/aggregation/cohort/messages/sign/nonce-contribution.d.ts +1 -0
  79. package/dist/types/core/beacon/aggregation/cohort/messages/sign/request-signature.d.ts +1 -0
  80. package/dist/types/core/beacon/aggregation/cohort/messages/sign/signature-authorization.d.ts +1 -0
  81. package/dist/types/core/beacon/aggregation/cohort/status.d.ts +1 -0
  82. package/dist/types/core/beacon/aggregation/communication/adapter/did-comm.d.ts +4 -3
  83. package/dist/types/core/beacon/aggregation/communication/adapter/did-comm.d.ts.map +1 -1
  84. package/dist/types/core/beacon/aggregation/communication/adapter/nostr.d.ts +5 -3
  85. package/dist/types/core/beacon/aggregation/communication/adapter/nostr.d.ts.map +1 -1
  86. package/dist/types/core/beacon/aggregation/communication/error.d.ts +1 -0
  87. package/dist/types/core/beacon/aggregation/communication/factory.d.ts +1 -0
  88. package/dist/types/core/beacon/aggregation/communication/service.d.ts +3 -2
  89. package/dist/types/core/beacon/aggregation/communication/service.d.ts.map +1 -1
  90. package/dist/types/core/beacon/aggregation/coordinator.d.ts +1 -0
  91. package/dist/types/core/beacon/aggregation/coordinator.d.ts.map +1 -1
  92. package/dist/types/core/beacon/aggregation/participant.d.ts +1 -0
  93. package/dist/types/core/beacon/aggregation/participant.d.ts.map +1 -1
  94. package/dist/types/core/beacon/aggregation/session/index.d.ts +1 -0
  95. package/dist/types/core/beacon/aggregation/session/index.d.ts.map +1 -1
  96. package/dist/types/core/beacon/aggregation/session/status.d.ts +1 -0
  97. package/dist/types/core/beacon/beacon.d.ts +10 -4
  98. package/dist/types/core/beacon/beacon.d.ts.map +1 -1
  99. package/dist/types/core/beacon/cas-beacon.d.ts +27 -7
  100. package/dist/types/core/beacon/cas-beacon.d.ts.map +1 -1
  101. package/dist/types/core/beacon/error.d.ts +1 -0
  102. package/dist/types/core/beacon/factory.d.ts +1 -0
  103. package/dist/types/core/beacon/interfaces.d.ts +1 -0
  104. package/dist/types/core/beacon/signal-discovery.d.ts +1 -0
  105. package/dist/types/core/beacon/{singleton.d.ts → singleton-beacon.d.ts} +7 -5
  106. package/dist/types/core/beacon/singleton-beacon.d.ts.map +1 -0
  107. package/dist/types/core/beacon/smt-beacon.d.ts +5 -3
  108. package/dist/types/core/beacon/smt-beacon.d.ts.map +1 -1
  109. package/dist/types/core/beacon/utils.d.ts +1 -0
  110. package/dist/types/core/identifier.d.ts +1 -0
  111. package/dist/types/core/interfaces.d.ts +6 -15
  112. package/dist/types/core/interfaces.d.ts.map +1 -1
  113. package/dist/types/core/resolver.d.ts +167 -0
  114. package/dist/types/core/resolver.d.ts.map +1 -0
  115. package/dist/types/core/types.d.ts +1 -0
  116. package/dist/types/core/update.d.ts +4 -3
  117. package/dist/types/core/update.d.ts.map +1 -1
  118. package/dist/types/did-btcr2.d.ts +17 -16
  119. package/dist/types/did-btcr2.d.ts.map +1 -1
  120. package/dist/types/index.d.ts +3 -3
  121. package/dist/types/index.d.ts.map +1 -1
  122. package/dist/types/utils/appendix.d.ts +1 -0
  123. package/dist/types/utils/did-document-builder.d.ts +1 -0
  124. package/dist/types/utils/did-document.d.ts +2 -6
  125. package/dist/types/utils/did-document.d.ts.map +1 -1
  126. package/package.json +5 -5
  127. package/src/core/beacon/aggregation/cohort/messages/keygen/cohort-ready.ts +1 -1
  128. package/src/core/beacon/aggregation/communication/adapter/did-comm.ts +4 -3
  129. package/src/core/beacon/aggregation/communication/adapter/nostr.ts +4 -3
  130. package/src/core/beacon/aggregation/communication/service.ts +2 -2
  131. package/src/core/beacon/aggregation/coordinator.ts +40 -44
  132. package/src/core/beacon/aggregation/participant.ts +38 -40
  133. package/src/core/beacon/aggregation/session/index.ts +3 -4
  134. package/src/core/beacon/beacon.ts +9 -5
  135. package/src/core/beacon/cas-beacon.ts +156 -10
  136. package/src/core/beacon/factory.ts +1 -1
  137. package/src/core/beacon/{singleton.ts → singleton-beacon.ts} +20 -36
  138. package/src/core/beacon/smt-beacon.ts +4 -3
  139. package/src/core/identifier.ts +1 -1
  140. package/src/core/interfaces.ts +5 -16
  141. package/src/core/resolver.ts +706 -0
  142. package/src/core/update.ts +9 -9
  143. package/src/did-btcr2.ts +37 -130
  144. package/src/index.ts +2 -3
  145. package/src/utils/did-document.ts +10 -18
  146. package/dist/cjs/core/beacon/singleton.js.map +0 -1
  147. package/dist/cjs/core/resolve.js.map +0 -1
  148. package/dist/cjs/utils/general.js +0 -195
  149. package/dist/cjs/utils/general.js.map +0 -1
  150. package/dist/esm/core/beacon/singleton.js.map +0 -1
  151. package/dist/esm/core/resolve.js.map +0 -1
  152. package/dist/esm/utils/general.js +0 -195
  153. package/dist/esm/utils/general.js.map +0 -1
  154. package/dist/types/core/beacon/singleton.d.ts.map +0 -1
  155. package/dist/types/core/resolve.d.ts +0 -92
  156. package/dist/types/core/resolve.d.ts.map +0 -1
  157. package/dist/types/utils/general.d.ts +0 -85
  158. package/dist/types/utils/general.d.ts.map +0 -1
  159. package/src/core/resolve.ts +0 -474
  160. package/src/utils/general.ts +0 -204
@@ -1,5 +1,5 @@
1
1
  import {
2
- Canonicalization,
2
+ canonicalHash,
3
3
  INVALID_DID_UPDATE,
4
4
  JSONPatch,
5
5
  KeyBytes,
@@ -37,14 +37,14 @@ export class Update {
37
37
  * @param {Btcr2DidDocument} sourceDocument The source DID document to be updated.
38
38
  * @param {PatchOperation[]} patches The array of JSON Patch operations to apply to the sourceDocument.
39
39
  * @param {number} sourceVersionId The version ID of the source document.
40
- * @returns {Promise<SignedBTCR2Update>} The constructed SignedBTCR2Update object.
40
+ * @returns {UnsignedBTCR2Update} The constructed UnsignedBTCR2Update object.
41
41
  * @throws {UpdateError} InvalidDid if sourceDocument.id does not match identifier.
42
42
  */
43
- static async construct(
43
+ static construct(
44
44
  sourceDocument: Btcr2DidDocument,
45
45
  patches: PatchOperation[],
46
46
  sourceVersionId: number,
47
- ): Promise<UnsignedBTCR2Update> {
47
+ ): UnsignedBTCR2Update {
48
48
  // Initialize an unsigned update conformant to btcr2 spec.
49
49
  const unsignedUpdate: UnsignedBTCR2Update = {
50
50
  '@context' : [
@@ -56,7 +56,7 @@ export class Update {
56
56
  patch : patches,
57
57
  targetHash : '',
58
58
  targetVersionId : sourceVersionId + 1,
59
- sourceHash : Canonicalization.process(sourceDocument, { encoding: 'base58btc' }),
59
+ sourceHash : canonicalHash(sourceDocument),
60
60
  };
61
61
 
62
62
  // Apply all JSON patches to sourceDocument.
@@ -73,8 +73,8 @@ export class Update {
73
73
  );
74
74
  }
75
75
 
76
- // Set the targetHash by canonicalizing the targetDocument and encoding it in base58.
77
- unsignedUpdate.targetHash = Canonicalization.process(targetDocument, { encoding: 'base58btc' });
76
+ // Set the targetHash by canonicalizing the targetDocument and encoding it in base64url.
77
+ unsignedUpdate.targetHash = canonicalHash(targetDocument);
78
78
 
79
79
  // Return unsignedUpdate.
80
80
  return unsignedUpdate;
@@ -90,12 +90,12 @@ export class Update {
90
90
  * @returns {SignedBTCR2Update} Did update payload secured with a proof => SignedBTCR2Update
91
91
  * @throws {UpdateError} if the privateKeyBytes are invalid
92
92
  */
93
- static async sign(
93
+ static sign(
94
94
  did: string,
95
95
  unsignedUpdate: UnsignedBTCR2Update,
96
96
  verificationMethod: DidVerificationMethod,
97
97
  secretKey: KeyBytes,
98
- ): Promise<SignedBTCR2Update> {
98
+ ): SignedBTCR2Update {
99
99
  // Parse the controller from the verificationMethod
100
100
  const controller = verificationMethod.controller;
101
101
  // Parse the fragment from the vmId
package/src/did-btcr2.ts CHANGED
@@ -8,10 +8,7 @@ import {
8
8
  KeyBytes,
9
9
  METHOD_NOT_SUPPORTED,
10
10
  MethodError,
11
- MISSING_RESOLUTION_OPTIONS,
12
- MISSING_UPDATE_DATA,
13
11
  PatchOperation,
14
- ResolveError,
15
12
  UpdateError
16
13
  } from '@did-btcr2/common';
17
14
  import { SignedBTCR2Update } from '@did-btcr2/cryptosuite';
@@ -20,22 +17,17 @@ import {
20
17
  DidError,
21
18
  DidErrorCode,
22
19
  DidMethod,
23
- DidResolutionResult,
24
- EMPTY_DID_RESOLUTION_RESULT
25
20
  } from '@web5/dids';
26
21
  import { initEccLib } from 'bitcoinjs-lib';
27
22
  import * as tinysecp from 'tiny-secp256k1';
28
23
  import { BeaconService } from './core/beacon/interfaces.js';
29
- import { BeaconUtils } from './core/beacon/utils.js';
30
24
  import { Identifier } from './core/identifier.js';
31
25
  import { ResolutionOptions } from './core/interfaces.js';
32
- import { Resolve } from './core/resolve.js';
26
+ import { Resolver } from './core/resolver.js';
33
27
  import { Update } from './core/update.js';
34
28
  import { Appendix } from './utils/appendix.js';
35
29
  import { Btcr2DidDocument, DidVerificationMethod } from './utils/did-document.js';
36
30
 
37
- export type Btcr2Identifier = string;
38
-
39
31
  export interface DidCreateOptions {
40
32
  /** Type of identifier to create (key or external) */
41
33
  idType: string;
@@ -45,7 +37,6 @@ export interface DidCreateOptions {
45
37
  network?: string;
46
38
  }
47
39
 
48
- // TODO: convert to API driver?
49
40
  /** Initialize tiny secp256k1 */
50
41
  initEccLib(tinysecp);
51
42
 
@@ -76,7 +67,7 @@ export class DidBtcr2 implements DidMethod {
76
67
  * @param {string} options.idType The type of identifier to create, either 'KEY' or 'EXTERNAL'. Defaults to 'KEY'.
77
68
  * @param {number} options.version The version number of the did:btcr2 specification to use for creating the identifier. Defaults to 1.
78
69
  * @param {string} options.network The Bitcoin network to use for the identifier, e.g. 'bitcoin', 'testnet', etc. Defaults to 'bitcoin'.
79
- * @returns {Promise<Btcr2Identifier>} Promise resolving to a Btcr2Identifier string.
70
+ * @returns {Promise<string>} Promise resolving to an identifier string.
80
71
  * @throws {MethodError} if any of the checks fail
81
72
  * @example
82
73
  * ```ts
@@ -84,7 +75,7 @@ export class DidBtcr2 implements DidMethod {
84
75
  * const did = DidBtcr2.create(genesisBytes, { idType: 'KEY', network: 'regtest' });
85
76
  * ```
86
77
  */
87
- static create(genesisBytes: KeyBytes | DocumentBytes, options?: DidCreateOptions): Btcr2Identifier {
78
+ static create(genesisBytes: KeyBytes | DocumentBytes, options?: DidCreateOptions): string {
88
79
  // Deconstruct the idType, version and network from the options, setting defaults if not given
89
80
  const { idType, version = 1, network = 'bitcoin' } = options || {};
90
81
 
@@ -101,131 +92,48 @@ export class DidBtcr2 implements DidMethod {
101
92
 
102
93
  /**
103
94
  * Entry point for section {@link https://dcdpr.github.io/did-btcr2/operations/resolve.html | 7.2 Resolve}.
104
- * See specification for the {@link https://dcdpr.github.io/did-btcr2/operations/resolve.html#process | Resolve Process}.
105
- * See {@link Resolve | Resolve (class)} for class implementation.
106
95
  *
107
- * Resolving a did:btcr2 identifier iteratively builds a DID document by applying
108
- * BTCR2 Updates to an Initial DID Document that have been committed to the Bitcoin
109
- * blockchain by Authorized Beacon Signals. The Initial DID Document is either
110
- * deterministically created from the DID or provided by Sidecar Data.
96
+ * Factory method that performs pure setup and returns a {@link Resolver} state machine.
97
+ * The caller drives resolution by calling `resolver.resolve()` and `resolver.provide()`.
98
+ * Analogous to Rust's `Document::read()`.
111
99
  *
112
100
  * @param {string} did The did:btcr2 identifier to be resolved.
113
101
  * @param {ResolutionOptions} resolutionOptions Options used during the resolution process.
114
- * @returns {Promise<DidResolutionResult>} Promise resolving to a DID Resolution Result containing the `targetDocument`
115
- * @throws {ResolveError} If the resolution process fails at any step.
102
+ * @returns {Resolver} A sans-I/O state machine the caller drives to completion.
116
103
  * @example
117
104
  * ```ts
118
- * const resolution = await DidBtcr2.resolve(
119
- * 'did:btcr2:k1qgpr45cheptyjekl3cex80xfnkwhxnlclecwwf92gvdjrszm2uwhzlcxu5xte'
120
- * )
105
+ * const resolver = DidBtcr2.resolve(did, { sidecar });
106
+ * let state = resolver.resolve();
107
+ * while (state.status === 'action-required') {
108
+ * for (const need of state.needs) { ... provide data ... }
109
+ * state = resolver.resolve();
110
+ * }
111
+ * const { didDocument, metadata } = state.result;
121
112
  * ```
122
113
  */
123
- static async resolve(
114
+ static resolve(
124
115
  did: string,
125
116
  resolutionOptions: ResolutionOptions = {}
126
- ): Promise<DidResolutionResult> {
127
- try {
128
- // Set versionId from resolutionOptions
129
- const versionId = resolutionOptions.versionId;
130
-
131
- // Initialize an empty DID Resolution Result
132
- const didResolutionResult: DidResolutionResult = {
133
- '@context' : 'https://w3id.org/did-resolution/v1',
134
- didResolutionMetadata : { contentType: 'application/ld+json' },
135
- didDocumentMetadata : {
136
- versionId,
137
- deactivated : false,
138
- updated : undefined,
139
- confirmations : undefined,
140
- },
141
- didDocument : null,
142
- };
143
-
144
- // Decode the did to be resolved
145
- const didComponents = Identifier.decode(did);
146
-
147
- // Process sidecar if provided
148
- const sidecarData = Resolve.sidecarData(resolutionOptions.sidecar);
149
-
150
- // Parse the genesis document from the resolution options if provided
151
- const genesisDocument = resolutionOptions.sidecar?.genesisDocument;
152
-
153
- // Since genesisDocument is optional, check if it exists
154
- if(!genesisDocument) {
155
- // If no genesisDocument and x HRP, throw MISSING_UPDATE_DATA error
156
- if(didComponents.hrp === IdentifierHrp.x)
157
- throw new ResolveError(
158
- 'External resolution requires genesisDocument',
159
- MISSING_UPDATE_DATA, resolutionOptions
160
- );
161
- }
162
-
163
- // Establish the current document
164
- const currentDocument = await Resolve.currentDocument(didComponents, genesisDocument);
165
-
166
- // Extract all Beacon services from the current DID Document
167
- const beaconServices = currentDocument.service
168
- .filter(BeaconUtils.isBeaconService)
169
- .map(BeaconUtils.parseBeaconServiceEndpoint);
170
-
171
- // Check if bitcoin driver provided
172
- if(!resolutionOptions?.drivers?.bitcoin) {
173
- throw new ResolveError(
174
- 'Bitcoin connection required for resolve. Pass a configured driver via '
175
- + 'resolutionOptions.drivers.bitcoin or use DidBtcr2Api which injects it automatically.',
176
- MISSING_RESOLUTION_OPTIONS, resolutionOptions
177
- );
178
- }
179
-
180
- // Get the bitcoin driver from the resolution options
181
- const bitcoin = resolutionOptions.drivers.bitcoin;
182
-
183
- // Process the Beacon Signals to get the required updates
184
- const unsortedUpdates = await Resolve.beaconSignals(
185
- beaconServices,
186
- sidecarData,
187
- bitcoin
188
- );
189
-
190
- // If no updates found, return the current document
191
- if(!unsortedUpdates.length) {
192
- // Set the didDocument in didResolutionResult based on currentDocument
193
- didResolutionResult.didDocument = currentDocument;
194
- // Set other required fields in the didResolutionResult
195
- didResolutionResult.didDocumentMetadata.deactivated = !!currentDocument.deactivated;
196
- didResolutionResult.didDocumentMetadata.versionId = versionId ?? '1';
197
-
198
- // Return the didResolutionResult early
199
- return didResolutionResult;
200
- }
201
-
202
- // Process the updates to apply updates to bring the current DID Document to its more current state
203
- const result = await Resolve.updates(
204
- currentDocument,
205
- unsortedUpdates,
206
- resolutionOptions.versionTime,
207
- versionId
208
- );
209
-
210
- // Set all of the required fields in the didResolutionResult
211
- didResolutionResult.didDocument = result.didDocument;
212
- didResolutionResult.didDocumentMetadata = result.metadata;
213
-
214
- // Return didResolutionResult;
215
- return didResolutionResult;
216
- } catch (error: any) {
217
- // Rethrow any unexpected errors that are not a `ResolveError`.
218
- if (!(error instanceof ResolveError)) throw new Error(error.message ?? error, { cause: error });
219
-
220
- // Return a DID Resolution Result with the appropriate error code.
221
- return {
222
- ...EMPTY_DID_RESOLUTION_RESULT,
223
- didResolutionMetadata : {
224
- error : error.type,
225
- ...error.message && { errorMessage: error.message }
226
- }
227
- };
228
- }
117
+ ): Resolver {
118
+ // Decode the did to be resolved
119
+ const didComponents = Identifier.decode(did);
120
+
121
+ // Process sidecar if provided
122
+ const sidecarData = Resolver.sidecarData(resolutionOptions.sidecar);
123
+
124
+ // Establish the current document for KEY identifiers (pure, synchronous).
125
+ // For EXTERNAL identifiers, defer to the Resolver's GenesisDocument phase
126
+ // since validation (Resolve.external) is async.
127
+ const currentDocument = didComponents.hrp === IdentifierHrp.k
128
+ ? Resolver.deterministic(didComponents)
129
+ : null;
130
+
131
+ // Return the sans-I/O state machine
132
+ return new Resolver(didComponents, sidecarData, currentDocument, {
133
+ versionId : resolutionOptions.versionId,
134
+ versionTime : resolutionOptions.versionTime,
135
+ genesisDocument : resolutionOptions.sidecar?.genesisDocument
136
+ });
229
137
  }
230
138
 
231
139
  /**
@@ -265,7 +173,6 @@ export class DidBtcr2 implements DidMethod {
265
173
  signingMaterial?: KeyBytes | HexString;
266
174
  bitcoin?: BitcoinConnection;
267
175
  }): Promise<SignedBTCR2Update> {
268
- // TODO: provide KMS as alternative
269
176
  // If no signingMaterial provided, throw an UpdateError with INVALID_DID_UPDATE.
270
177
  if (!signingMaterial) {
271
178
  throw new UpdateError(
@@ -315,10 +222,10 @@ export class DidBtcr2 implements DidMethod {
315
222
  }
316
223
 
317
224
  // Construct an unsigned update following the BTCR2 Update construction algorithm
318
- const update = await Update.construct(sourceDocument, patches, sourceVersionId);
225
+ const update = Update.construct(sourceDocument, patches, sourceVersionId);
319
226
 
320
227
  // Sign the unsigned update using the specified verification method
321
- const signed = await Update.sign(sourceDocument.id, update, verificationMethod, secretKey);
228
+ const signed = Update.sign(sourceDocument.id, update, verificationMethod, secretKey);
322
229
 
323
230
  // Filter sourceDocument services to get beaconServices matching beaconIds
324
231
  const beaconService = sourceDocument.service
package/src/index.ts CHANGED
@@ -33,19 +33,18 @@ export * from './core/beacon/error.js';
33
33
  export * from './core/beacon/factory.js';
34
34
  export * from './core/beacon/interfaces.js';
35
35
  export * from './core/beacon/signal-discovery.js';
36
- export * from './core/beacon/singleton.js';
36
+ export * from './core/beacon/singleton-beacon.js';
37
37
  export * from './core/beacon/smt-beacon.js';
38
38
  export * from './core/beacon/utils.js';
39
39
 
40
40
  export * from './core/identifier.js';
41
41
  export * from './core/interfaces.js';
42
- export * from './core/resolve.js';
42
+ export * from './core/resolver.js';
43
43
  export * from './core/types.js';
44
44
  export * from './core/update.js';
45
45
 
46
46
  export * from './utils/appendix.js';
47
47
  export * from './utils/did-document-builder.js';
48
48
  export * from './utils/did-document.js';
49
- export * from './utils/general.js';
50
49
 
51
50
  export * from './did-btcr2.js';
@@ -1,8 +1,8 @@
1
1
  import { getNetwork } from '@did-btcr2/bitcoin';
2
2
  import {
3
- BTCR2_DID_DOCUMENT_CONTEXT,
4
- Canonicalization,
3
+ canonicalize,
5
4
  DidDocumentError,
5
+ hash,
6
6
  HashBytes,
7
7
  IdentifierTypes,
8
8
  INVALID_DID_DOCUMENT,
@@ -18,6 +18,10 @@ import { BeaconUtils } from '../core/beacon/utils.js';
18
18
  import { Identifier } from '../core/identifier.js';
19
19
  import { Appendix } from './appendix.js';
20
20
 
21
+ export const BTCR2_DID_DOCUMENT_CONTEXT = [
22
+ 'https://www.w3.org/ns/did/v1.1',
23
+ 'https://btcr2.dev/context/v1',
24
+ ];
21
25
  export const ID_PLACEHOLDER_VALUE = 'did:btcr2:_';
22
26
  export const BECH32M_CHARS = '';
23
27
  export const DID_REGEX = /did:btcr2:(x1[qpzry9x8gf2tvdw0s3jn54khce6mua7l]*)/g;
@@ -120,8 +124,8 @@ export interface Btcr2DidDocument extends W3CDidDocument {
120
124
  export class DidDocument implements Btcr2DidDocument {
121
125
  id: string;
122
126
  '@context'?: Array<string | JSONObject> = [
123
- 'https://www.w3.org/TR/did-1.1',
124
- 'https://btcr2.dev/context/v1'
127
+ 'https://www.w3.org/ns/did/v1.1',
128
+ 'https://btcr2.dev/context/v1',
125
129
  ];
126
130
  verificationMethod: Array<DidVerificationMethod>;
127
131
  authentication?: Array<string | DidVerificationMethod>;
@@ -166,7 +170,7 @@ export class DidDocument implements Btcr2DidDocument {
166
170
  this.verificationMethod = document.verificationMethod || [];
167
171
  this.service = document.service || [];
168
172
  this['@context'] = document['@context'] || [
169
- 'https://www.w3.org/TR/did-1.1',
173
+ 'https://www.w3.org/ns/did/v1.1',
170
174
  'https://btcr2.dev/context/v1'
171
175
  ];
172
176
 
@@ -321,18 +325,6 @@ export class DidDocument implements Btcr2DidDocument {
321
325
  }
322
326
  }
323
327
 
324
- /**
325
- * Validates that the controller exists and is correctly formatted.
326
- * @param {Array<string>} controller The controller to validate.
327
- * @returns {boolean} True if the controller is valid.
328
- */
329
- private static isValidController(controller: Array<string>): boolean {
330
- if(!controller) return false;
331
- if(!Array.isArray(controller)) return false;
332
- if(!controller.every(c => typeof c === 'string')) return false;
333
- return true;
334
- }
335
-
336
328
  /**
337
329
  * Validates that verification methods exist and are correctly formatted.
338
330
  * @private
@@ -537,6 +529,6 @@ export class GenesisDocument extends DidDocument {
537
529
  * @returns {Bytes} The genesis bytes.
538
530
  */
539
531
  static toGenesisBytes(genesisDocument: GenesisDocumentLike): HashBytes {
540
- return Canonicalization.andHash(genesisDocument);
532
+ return hash(canonicalize(genesisDocument));
541
533
  }
542
534
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"singleton.js","sourceRoot":"","sources":["../../../../src/core/beacon/singleton.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/core/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EACX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,SAAS,EACT,SAAS,EACT,qBAAqB,EACrB,mBAAmB,EACnB,YAAY,EACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,eAAe,EAGhB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAiB,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAiB5D;;;;;;;;GAQG;AACH,MAAM,OAAO,OAAO;IAClB;;;;OAIG;IACH,MAAM,CAAC,aAAa,CAAC,aAA4B;QAC/C,kDAAkD;QAClD,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,CAAC;QAEvC,wCAAwC;QACxC,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QAE3D,oGAAoG;QACpG,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,GAAG,IAAI,4BAA4B,CAAC,YAAY,CAAC,CAAC;QAEzF,kDAAkD;QAClD,MAAM,OAAO,GAAG,WAAW,CAAC,sBAAsB,CAAC;YACjD,EAAE,EAAW,GAAG;YAChB,SAAS,EAAI,YAAY;YACzB,OAAO,EAAM,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC;YAC9C,UAAU,EAAG,iBAAiB;SAC/B,CAAC,CAAC;QAEH,OAAO,IAAI,WAAW,CAAC;YACrB,EAAE,EAAmB,GAAG;YACxB,kBAAkB,EAAG,CAAC;oBACpB,EAAE,EAAmB,GAAG,GAAG,aAAa;oBACxC,IAAI,EAAiB,UAAU;oBAC/B,UAAU,EAAW,GAAG;oBACxB,kBAAkB,EAAG,kBAAkB,CAAC,OAAO;iBAChD,CAAC;YACF,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,QAAQ,CACnB,aAA4B,EAC5B,eAAuB;QAEvB,mDAAmD;QACnD,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAEjF,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,CAAC;QAEvC,iEAAiE;QACjE,IAAI,UAAU,CAAC,YAAY,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3C,MAAM,IAAI,YAAY,CACpB,2CAA2C,UAAU,CAAC,YAAY,CAAC,kBAAkB,SAAS,EAAE,EAChG,oBAAoB,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,CAClD,CAAC;QACJ,CAAC;QAED,wCAAwC;QACxC,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QAE3D,2EAA2E;QAC3E,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAChC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,oBAAoB,EAAE,GAAG,CAAC,CACtE,CAAC;QAEF,uCAAuC;QACvC,OAAO,IAAI,WAAW,CAAC,eAAe,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,UAAmB,EAAa;QACjD,2BAA2B;QAC3B,MAAM,SAAS,GAAG,IAAI,GAAG,EAA6B,CAAC;QACvD,IAAG,OAAO,CAAC,OAAO,EAAE,MAAM;YACxB,KAAI,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YAC/E,CAAC;QAEH,wBAAwB;QACxB,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2B,CAAC;QAClD,IAAG,OAAO,CAAC,UAAU,EAAE,MAAM;YAC3B,KAAI,MAAM,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YAC5E,CAAC;QAEH,iBAAiB;QACjB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;QAC3C,IAAG,OAAO,CAAC,SAAS,EAAE,MAAM;YAC1B,KAAI,MAAM,KAAK,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACrC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC9B,CAAC;QAEH,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACvC,CAAC;IAED;;;;;;;;OAQG;IAEH,MAAM,CAAC,KAAK,CAAC,eAAe,CAC1B,aAA4B,EAC5B,eAAwB;QAExB,0CAA0C;QAC1C,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,aAAa,CAAC;QAE5C,0CAA0C;QAC1C,IAAI,GAAG,KAAK,aAAa,CAAC,CAAC,EAAE,CAAC;YAC5B,IAAG,CAAC,eAAe;gBACjB,MAAM,IAAI,YAAY,CACpB,8CAA8C,EAC9C,mBAAmB,EAAE,EAAE,aAAa,EAAE,CACvC,CAAC;YACJ,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAC7D,CAAC;QAED,oBAAoB;QACpB,IAAG,GAAG,KAAK,aAAa,CAAC,CAAC,EAAC,CAAC;YAC1B,8DAA8D;YAC9D,IAAG,CAAC,4BAA4B,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;gBACvD,MAAM,IAAI,YAAY,CACpB,8DAA8D,EAC9D,WAAW,EAAE,EAAE,YAAY,EAAE,CAC9B,CAAC;YACJ,CAAC;YACD,mCAAmC;YACnC,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAC3C,CAAC;QAED,2CAA2C;QAC3C,MAAM,IAAI,YAAY,CAAC,uBAAuB,GAAG,EAAE,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,CAAC,aAAa,CACxB,cAAoC,EACpC,WAAwB,EACxB,OAA0B;QAE1B,4EAA4E;QAC5E,MAAM,qBAAqB,GAAG,OAAO,CAAC,IAAI;YACxC,CAAC,CAAC,MAAM,qBAAqB,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC;YAC9D,CAAC,CAAC,MAAM,qBAAqB,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAElE,4CAA4C;QAC5C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAC7C,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE;YAC3B,+BAA+B;YAC/B,IAAI,CAAC,OAAO,CAAC,MAAM;gBAAE,OAAO,EAAE,CAAC;YAC/B,mDAAmD;YACnD,OAAO,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC/E,CAAC,CACF,CACF,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,CAClB,eAA4B,EAC5B,eAA0D,EAC1D,WAAoB,EACpB,SAAkB;QAElB,gDAAgD;QAChD,IAAI,gBAAgB,GAAG,CAAC,CAAC;QAEzB,sDAAsD;QACtD,MAAM,iBAAiB,GAAa,EAAE,CAAC;QAEvC,mFAAmF;QACnF,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAClE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CACzE,CAAC;QAEF,mCAAmC;QACnC,MAAM,QAAQ,GAA0B;YACtC,WAAW,EAAG,eAAe;YAC7B,QAAQ,EAAM;gBACZ,SAAS,EAAO,GAAG,gBAAgB,EAAE;gBACrC,aAAa,EAAG,CAAC;gBACjB,OAAO,EAAS,EAAE;gBAClB,WAAW,EAAK,eAAe,CAAC,WAAW,IAAI,KAAK;aACrD;SACF,CAAC;QAEF,wCAAwC;QACxC,KAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;YACrC,uCAAuC;YACvC,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;YAEtG,yCAAyC;YACzC,MAAM,SAAS,GAAG,SAAS,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAE7D,+DAA+D;YAC/D,QAAQ,CAAC,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;YAE1E,+CAA+C;YAC/C,QAAQ,CAAC,QAAQ,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;YAEtD,uGAAuG;YACvG,IAAG,WAAW,EAAE,CAAC;gBACf,0CAA0C;gBAC1C,IAAG,SAAS,GAAG,SAAS,CAAC,qBAAqB,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC5D,OAAO,QAAQ,CAAC;gBAClB,CAAC;YACH,CAAC;YAED,wDAAwD;YACxD,0EAA0E;YAC1E,IAAG,MAAM,CAAC,eAAe,IAAI,gBAAgB,EAAE,CAAC;gBAC9C,iBAAiB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBAC5C,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;YACnD,CAAC;YAED,sEAAsE;iBACjE,IAAI,MAAM,CAAC,eAAe,KAAK,gBAAgB,GAAG,CAAC,EAAE,CAAC;gBACzD,qDAAqD;gBACrD,IAAI,MAAM,CAAC,UAAU,KAAK,mBAAmB,EAAE,CAAC;oBAC9C,yDAAyD;oBACzD,MAAM,IAAI,YAAY,CACpB,0DAA0D,EAC1D,kBAAkB,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,mBAAmB,EAAE,CAC3E,CAAC;gBACJ,CAAC;gBACD,qEAAqE;gBACrE,QAAQ,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;gBAE5E,qEAAqE;gBACrE,MAAM,cAAc,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAwB,CAAC;gBACtF,uEAAuE;gBACvE,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;YAC9F,CAAC;YAED,gFAAgF;iBAC3E,IAAG,MAAM,CAAC,eAAe,GAAG,gBAAgB,GAAG,CAAC,EAAE,CAAC;gBACtD,MAAM,IAAI,YAAY,CACpB,uEAAuE,EACvE,uBAAuB,EAAE;oBACvB,eAAe,EAAI,MAAM,CAAC,eAAe;oBACzC,gBAAgB,EAAG,gBAAgB,GAAG,CAAC;iBACxC,CACF,CAAC;YACJ,CAAC;YAED,6BAA6B;YAC7B,gBAAgB,EAAE,CAAC;YAEnB,yDAAyD;YACzD,QAAQ,CAAC,QAAQ,CAAC,SAAS,GAAG,GAAG,gBAAgB,EAAE,CAAC;YAEpD,4FAA4F;YAC5F,IAAG,gBAAgB,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzC,OAAO,QAAQ,CAAC;YAClB,CAAC;YAED,yEAAyE;YACzE,IAAG,eAAe,CAAC,WAAW,EAAE,CAAC;gBAC/B,4CAA4C;gBAC5C,QAAQ,CAAC,QAAQ,CAAC,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC;gBAC5D,0EAA0E;gBAC1E,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CAAC,MAAyB,EAAE,iBAA2B;QAC5E,qEAAqE;QACrE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,CAAC;QAE/C,2DAA2D;QAC3D,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAEpE,qEAAqE;QACrE,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;QAE3E,sDAAsD;QACtD,IAAI,iBAAiB,CAAC,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC,KAAK,kBAAkB,EAAE,CAAC;YACzE,MAAM,IAAI,YAAY,CACpB,sBAAsB,kBAAkB,mBAAmB,oBAAoB,EAAE,EACjF,qBAAqB,EAAE,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,CACjE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,WAAW,CACtB,eAA4B,EAC5B,MAAyB;QAEzB,kDAAkD;QAClD,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC;QAC9C,qDAAqD;QACrD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,uDAAuD;YACvD,MAAM,IAAI,YAAY,CAAC,oCAAoC,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;QAC3F,CAAC;QAED,mEAAmE;QACnE,MAAM,cAAc,GAAG,QAAQ,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAEhE,2EAA2E;QAC3E,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,cAAc,CAAC;QACxE,+EAA+E;QAC/E,IAAI,CAAC,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC;YACjF,2DAA2D;YAC3D,MAAM,IAAI,YAAY,CACpB,yBAAyB,EACzB,kBAAkB,EAAE,EAAE,cAAc,EAAE,eAAe,EAAE,CACxD,CAAC;QACJ,CAAC;QAED,kFAAkF;QAClF,MAAM,oBAAoB,GAAG,MAAM,CAAC,KAAK,EAAE,kBAAkB,CAAC;QAC9D,qDAAqD;QACrD,IAAG,CAAC,oBAAoB,EAAE,CAAC;YACzB,uDAAuD;YACvD,MAAM,IAAI,YAAY,CAAC,uCAAuC,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;QAC9F,CAAC;QAED,mFAAmF;QACnF,MAAM,EAAE,GAAG,QAAQ,CAAC,gBAAgB,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;QAE5E,mCAAmC;QACnC,MAAM,QAAQ,GAAG,eAAe,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;QAE5D,8DAA8D;QAC9D,MAAM,WAAW,GAAG,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAEpD,0BAA0B;QAC1B,MAAM,eAAe,GAAG,gBAAgB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAE9D,sDAAsD;QACtD,MAAM,OAAO,GAAG,IAAI,wBAAwB,CAAC,WAAW,CAAC,CAAC;QAE1D,8BAA8B;QAC9B,MAAM,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAAC;QAExF,gEAAgE;QAChE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;YACjC,MAAM,IAAI,YAAY,CACpB,oCAAoC,EACpC,kBAAkB,EAAE,kBAAkB,CACvC,CAAC;QACJ,CAAC;QAED,4EAA4E;QAC5E,MAAM,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC,eAAe,EAAE,MAAM,CAAC,KAAK,CAAgB,CAAC;QAEtF,8DAA8D;QAC9D,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAEtC,4EAA4E;QAC5E,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;QAEjG,yEAAyE;QACzE,MAAM,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAC;QAE3C,8DAA8D;QAC9D,IAAI,MAAM,CAAC,UAAU,KAAK,mBAAmB,EAAE,CAAC;YAC9C,wDAAwD;YACxD,MAAM,IAAI,YAAY,CACpB,2DAA2D,EAC3D,kBAAkB,EAAE,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,CAC9D,CAAC;QACJ,CAAC;QAED,iCAAiC;QACjC,OAAO,eAAe,CAAC;IACzB,CAAC;CACF"}
@@ -1,195 +0,0 @@
1
- import { BIP340_PUBLIC_KEY_MULTIBASE_PREFIX } from '@did-btcr2/common';
2
- import { sha256 } from '@noble/hashes/sha2';
3
- import { CURVE, getPublicKey, utils } from '@noble/secp256k1';
4
- import { HDKey } from '@scure/bip32';
5
- import { generateMnemonic, mnemonicToSeed } from '@scure/bip39';
6
- import { wordlist } from '@scure/bip39/wordlists/english';
7
- import { base58btc } from 'multiformats/bases/base58';
8
- /**
9
- * Static class of general utility functions for the did-btcr2 spec implementation
10
- * @class GeneralUtils
11
- * @type {GeneralUtils}
12
- */
13
- export class GeneralUtils {
14
- /**
15
- * Helper function to encode a secp256k1 key in SchnorrSecp256k1 Multikey Format
16
- * @param {KeyBytes} xOnlyKeyBytes
17
- * @returns {PublicKeyMultibase}
18
- */
19
- static encode(xOnlyKeyBytes) {
20
- if (xOnlyKeyBytes.length !== 32) {
21
- throw new Error('x-only public key must be 32 bytes');
22
- }
23
- const prefix = Array.from(BIP340_PUBLIC_KEY_MULTIBASE_PREFIX);
24
- const x = Array.from(xOnlyKeyBytes);
25
- // Set the prefix and the public key bytes
26
- const multikeyBytes = new Uint8Array([...prefix, ...x]);
27
- // Encode the public key as a multibase base58btc string
28
- return base58btc.encode(multikeyBytes);
29
- }
30
- /**
31
- * Converts a bigint to a buffer
32
- * @param {bigint} value The bigint to convert
33
- * @returns {Buffer} The buffer representation of the bigint
34
- */
35
- static bigintToBuffer(value) {
36
- const hex = value.toString(16).padStart(64, '0');
37
- return Buffer.from(hex, 'hex');
38
- }
39
- /**
40
- * Generates a new mnemonic phrase and HD wallet
41
- * @returns {HdWallet} Promise resolving to a new hdwallet object w/ mnemonic and hdkey
42
- * @throws {Error} if the public key bytes cannot be derived
43
- */
44
- static async generateHdWallet() {
45
- // Generate random mnemonic phrase.
46
- const mnemonic = generateMnemonic(wordlist, 128);
47
- // Generate seed from random mnemonic phrase.
48
- const seed = await mnemonicToSeed(mnemonic);
49
- // Generate HDKey from seed.
50
- const hdkey = HDKey.fromMasterSeed(seed);
51
- // Ensure HDKey returns valid
52
- if (!hdkey) {
53
- throw new Error('Failed to derive hd wallet');
54
- }
55
- return { mnemonic, hdkey };
56
- }
57
- static generateCompressedSecp256k1KeyPair() {
58
- const privateKey = utils.randomPrivateKey();
59
- if (!utils.isValidPrivateKey(privateKey)) {
60
- throw new Error('Invalid private key');
61
- }
62
- return { privateKey, publicKey: getPublicKey(privateKey, true) };
63
- }
64
- ;
65
- /**
66
- * Recovers an HDKey from a mnemonic phrase
67
- * @param {string} mnemonic The mnemonic phrase to recover the HDKey from
68
- * @param {Uint8Array} seed Optional seed to recover the HDKey from
69
- * @returns {HDKey} Promise resolving to the recovered HDKey
70
- * @throws Error if the HDKey cannot be recovered
71
- */
72
- static async recoverHdWallet(mnemonic, seed) {
73
- seed ??= await mnemonicToSeed(mnemonic);
74
- // Generate HDKey from seed.
75
- const hdkey = HDKey.fromMasterSeed(seed);
76
- // Ensure HDKey returns valid
77
- if (!hdkey) {
78
- throw new Error('Failed to recover hdkey');
79
- }
80
- // Return the HDKey
81
- return hdkey;
82
- }
83
- /**
84
- * Recovers a secp256k1 privateKey from its original entropy
85
- * @param {Uint8Array} xorEntropy The original entropy to recover the privateKey from
86
- * @param {Uint8Array} salt The salt used to tweak the privateKey
87
- * @returns {Uint8Array} The recovered privateKey
88
- * @throws {Error} if the privateKey cannot be recovered
89
- */
90
- static recoverTweakedRawPrivateKey(xorEntropy, salt) {
91
- // If entropy is not 32 bytes, hash it to get a deterministic 32-byte private key
92
- if (xorEntropy.length !== 32) {
93
- xorEntropy = sha256(xorEntropy);
94
- }
95
- const entropy = this.XNOR(xorEntropy, salt);
96
- // Convert entropy to hex
97
- const hexEntropy = Buffer.from(entropy).toString('hex');
98
- // Convert hexEntropy to BigInt
99
- const privateKey = BigInt(`0x${hexEntropy}`);
100
- // Ensure private key is in valid secp256k1 range1
101
- if (privateKey < BigInt(1) || privateKey >= CURVE.n) {
102
- throw new Error('Invalid private key derived from entropy');
103
- }
104
- // The valid 32-byte private key
105
- return entropy;
106
- }
107
- /**
108
- * Recovers a secp256k1 privateKey from its original entropy
109
- * @param {Uint8Array} entropy The entropy to recover the privateKey from
110
- * @returns {Uint8Array} The recovered privateKey
111
- * @throws {Error} if the privateKey cannot be recovered
112
- */
113
- static recoverRawPrivateKey(entropy) {
114
- // If entropy is not 32 bytes, hash it to get a deterministic 32-byte private key
115
- if (entropy.length !== 32) {
116
- entropy = sha256(entropy);
117
- }
118
- // Convert entropy to hex
119
- const hexEntropy = Buffer.from(entropy).toString('hex');
120
- // Convert hexEntropy to BigInt
121
- const privateKey = BigInt(`0x${hexEntropy}`);
122
- // Ensure private key is in valid secp256k1 range1
123
- if (privateKey < BigInt(1) || privateKey >= CURVE.n) {
124
- throw new Error('Invalid private key derived from entropy');
125
- }
126
- // The valid 32-byte private key
127
- return entropy;
128
- }
129
- /**
130
- * Tweak the entropy with a salt using XOR
131
- * @param {Uint8Array} entropy The entropy to tweak
132
- * @param {Uint8Array} salt The salt to tweak the entropy with
133
- * @returns {Uint8Array} The tweaked entropy
134
- */
135
- static XOR(entropy, salt) {
136
- const tweaked = new Uint8Array(entropy.length);
137
- for (let i = 0; i < entropy.length; i++) {
138
- tweaked[i] = entropy[i] ^ salt[i % salt.length]; // XOR with repeating salt
139
- }
140
- return tweaked;
141
- }
142
- /**
143
- * Untweak the entropy with a salt using XNOR
144
- *
145
- * @param {Uint8Array} tweakedEntropy The tweaked entropy to untweak
146
- * @param {Uint8Array} salt The salt to untweak the entropy with
147
- * @returns {Uint8Array} The original entropy
148
- */
149
- static XNOR(tweakedEntropy, salt) {
150
- const originalEntropy = new Uint8Array(tweakedEntropy.length);
151
- for (let i = 0; i < tweakedEntropy.length; i++) {
152
- originalEntropy[i] = tweakedEntropy[i] ^ salt[i % salt.length]; // XOR with salt again
153
- }
154
- return originalEntropy;
155
- }
156
- /**
157
- * Recovers an HDKey from a mnemonic phrase
158
- * @param {string} mnemonic The mnemonic phrase to recover the HDKey from
159
- * @param {string} path The path to derive the child key from
160
- * @returns {Uint8Array} Promise resolving to the recovered private key bytes
161
- * @throws {Error} if the HDKey cannot be recovered
162
- */
163
- static async recoverHdChildFromMnemonic(mnemonic, path) {
164
- // Generate HDKey from seed.
165
- const hdkey = await this.recoverHdWallet(mnemonic);
166
- // Ensure HDKey returns valid
167
- if (!hdkey) {
168
- throw new Error('Failed to recover hdkey');
169
- }
170
- // Return the privateKey of the derived childKey
171
- const childPrivKeyBytes = hdkey.derive(path).privateKey;
172
- if (!childPrivKeyBytes) {
173
- throw new Error('Failed to recover child private key');
174
- }
175
- return childPrivKeyBytes;
176
- }
177
- /**
178
- * Derives a child key from an HDKey
179
- * @param {HDKey} hdkey The HDKey to derive the child key from
180
- * @param {string} path The path to derive the child key from
181
- * @returns {HDKey} A Promise resolving to the child key
182
- * @throws {Error} Error if the child key cannot be derived
183
- */
184
- static deriveChildKey(hdkey, path) {
185
- // Derive child key from HDKey.
186
- const childKey = hdkey.derive(path);
187
- // Ensure child key returns valid
188
- if (!childKey) {
189
- throw new Error(`Failed to derive child key`);
190
- }
191
- // Return the child key
192
- return childKey;
193
- }
194
- }
195
- //# sourceMappingURL=general.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"general.js","sourceRoot":"","sources":["../../../src/utils/general.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"singleton.js","sourceRoot":"","sources":["../../../../src/core/beacon/singleton.ts"],"names":[],"mappings":"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"}