@did-btcr2/method 0.13.1
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.
- package/LICENSE +373 -0
- package/README.md +7 -0
- package/dist/browser.js +2364 -0
- package/dist/browser.js.map +7 -0
- package/dist/browser.mjs +2364 -0
- package/dist/browser.mjs.map +7 -0
- package/dist/cjs/bitcoin/constants.js +20 -0
- package/dist/cjs/bitcoin/constants.js.map +1 -0
- package/dist/cjs/bitcoin/errors.js +11 -0
- package/dist/cjs/bitcoin/errors.js.map +1 -0
- package/dist/cjs/bitcoin/index.js +95 -0
- package/dist/cjs/bitcoin/index.js.map +1 -0
- package/dist/cjs/bitcoin/interface.js +2 -0
- package/dist/cjs/bitcoin/interface.js.map +1 -0
- package/dist/cjs/bitcoin/network.js +17 -0
- package/dist/cjs/bitcoin/network.js.map +1 -0
- package/dist/cjs/bitcoin/rest-client.js +289 -0
- package/dist/cjs/bitcoin/rest-client.js.map +1 -0
- package/dist/cjs/bitcoin/rpc-client.js +722 -0
- package/dist/cjs/bitcoin/rpc-client.js.map +1 -0
- package/dist/cjs/bitcoin/taproot.js +219 -0
- package/dist/cjs/bitcoin/taproot.js.map +1 -0
- package/dist/cjs/btcr2/beacon/aggregation/coordinator.js +120 -0
- package/dist/cjs/btcr2/beacon/aggregation/coordinator.js.map +1 -0
- package/dist/cjs/btcr2/beacon/aggregation/messages/advert.js +24 -0
- package/dist/cjs/btcr2/beacon/aggregation/messages/advert.js.map +1 -0
- package/dist/cjs/btcr2/beacon/aggregation/messages/base.js +37 -0
- package/dist/cjs/btcr2/beacon/aggregation/messages/base.js.map +1 -0
- package/dist/cjs/btcr2/beacon/aggregation/messages/cohort-set.js +25 -0
- package/dist/cjs/btcr2/beacon/aggregation/messages/cohort-set.js.map +1 -0
- package/dist/cjs/btcr2/beacon/aggregation/messages/keygen.js +8 -0
- package/dist/cjs/btcr2/beacon/aggregation/messages/keygen.js.map +1 -0
- package/dist/cjs/btcr2/beacon/aggregation/messages/opt-in.js +23 -0
- package/dist/cjs/btcr2/beacon/aggregation/messages/opt-in.js.map +1 -0
- package/dist/cjs/btcr2/beacon/aggregation/messages/sign.js +7 -0
- package/dist/cjs/btcr2/beacon/aggregation/messages/sign.js.map +1 -0
- package/dist/cjs/btcr2/beacon/aggregation/models/cohort/index.js +92 -0
- package/dist/cjs/btcr2/beacon/aggregation/models/cohort/index.js.map +1 -0
- package/dist/cjs/btcr2/beacon/aggregation/models/cohort/status.js +8 -0
- package/dist/cjs/btcr2/beacon/aggregation/models/cohort/status.js.map +1 -0
- package/dist/cjs/btcr2/beacon/aggregation/participant.js +2 -0
- package/dist/cjs/btcr2/beacon/aggregation/participant.js.map +1 -0
- package/dist/cjs/btcr2/beacon/aggregation/protocol/nostr.js +57 -0
- package/dist/cjs/btcr2/beacon/aggregation/protocol/nostr.js.map +1 -0
- package/dist/cjs/btcr2/beacon/aggregation/protocol/service.js +2 -0
- package/dist/cjs/btcr2/beacon/aggregation/protocol/service.js.map +1 -0
- package/dist/cjs/btcr2/beacon/cid-aggregate.js +116 -0
- package/dist/cjs/btcr2/beacon/cid-aggregate.js.map +1 -0
- package/dist/cjs/btcr2/beacon/factory.js +30 -0
- package/dist/cjs/btcr2/beacon/factory.js.map +1 -0
- package/dist/cjs/btcr2/beacon/singleton.js +220 -0
- package/dist/cjs/btcr2/beacon/singleton.js.map +1 -0
- package/dist/cjs/btcr2/beacon/smt-aggregate.js +126 -0
- package/dist/cjs/btcr2/beacon/smt-aggregate.js.map +1 -0
- package/dist/cjs/btcr2/crud/create.js +102 -0
- package/dist/cjs/btcr2/crud/create.js.map +1 -0
- package/dist/cjs/btcr2/crud/deactivate.js +14 -0
- package/dist/cjs/btcr2/crud/deactivate.js.map +1 -0
- package/dist/cjs/btcr2/crud/read.js +686 -0
- package/dist/cjs/btcr2/crud/read.js.map +1 -0
- package/dist/cjs/btcr2/crud/update.js +195 -0
- package/dist/cjs/btcr2/crud/update.js.map +1 -0
- package/dist/cjs/btcr2/key-manager/index.js +290 -0
- package/dist/cjs/btcr2/key-manager/index.js.map +1 -0
- package/dist/cjs/btcr2/key-manager/interface.js +2 -0
- package/dist/cjs/btcr2/key-manager/interface.js.map +1 -0
- package/dist/cjs/did-btcr2.js +222 -0
- package/dist/cjs/did-btcr2.js.map +1 -0
- package/dist/cjs/index.js +27 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/interfaces/beacon.js +41 -0
- package/dist/cjs/interfaces/beacon.js.map +1 -0
- package/dist/cjs/interfaces/crud.js +2 -0
- package/dist/cjs/interfaces/crud.js.map +1 -0
- package/dist/cjs/interfaces/ibeacon.js +2 -0
- package/dist/cjs/interfaces/ibeacon.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/types/bitcoin.js +62 -0
- package/dist/cjs/types/bitcoin.js.map +1 -0
- package/dist/cjs/types/crud.js +2 -0
- package/dist/cjs/types/crud.js.map +1 -0
- package/dist/cjs/utils/appendix.js +221 -0
- package/dist/cjs/utils/appendix.js.map +1 -0
- package/dist/cjs/utils/beacons.js +206 -0
- package/dist/cjs/utils/beacons.js.map +1 -0
- package/dist/cjs/utils/did-document-builder.js +61 -0
- package/dist/cjs/utils/did-document-builder.js.map +1 -0
- package/dist/cjs/utils/did-document.js +380 -0
- package/dist/cjs/utils/did-document.js.map +1 -0
- package/dist/cjs/utils/general.js +195 -0
- package/dist/cjs/utils/general.js.map +1 -0
- package/dist/cjs/utils/identifier.js +238 -0
- package/dist/cjs/utils/identifier.js.map +1 -0
- package/dist/esm/bitcoin/constants.js +20 -0
- package/dist/esm/bitcoin/constants.js.map +1 -0
- package/dist/esm/bitcoin/errors.js +11 -0
- package/dist/esm/bitcoin/errors.js.map +1 -0
- package/dist/esm/bitcoin/index.js +95 -0
- package/dist/esm/bitcoin/index.js.map +1 -0
- package/dist/esm/bitcoin/interface.js +2 -0
- package/dist/esm/bitcoin/interface.js.map +1 -0
- package/dist/esm/bitcoin/network.js +17 -0
- package/dist/esm/bitcoin/network.js.map +1 -0
- package/dist/esm/bitcoin/rest-client.js +289 -0
- package/dist/esm/bitcoin/rest-client.js.map +1 -0
- package/dist/esm/bitcoin/rpc-client.js +722 -0
- package/dist/esm/bitcoin/rpc-client.js.map +1 -0
- package/dist/esm/bitcoin/taproot.js +219 -0
- package/dist/esm/bitcoin/taproot.js.map +1 -0
- package/dist/esm/btcr2/beacon/aggregation/coordinator.js +120 -0
- package/dist/esm/btcr2/beacon/aggregation/coordinator.js.map +1 -0
- package/dist/esm/btcr2/beacon/aggregation/messages/advert.js +24 -0
- package/dist/esm/btcr2/beacon/aggregation/messages/advert.js.map +1 -0
- package/dist/esm/btcr2/beacon/aggregation/messages/base.js +37 -0
- package/dist/esm/btcr2/beacon/aggregation/messages/base.js.map +1 -0
- package/dist/esm/btcr2/beacon/aggregation/messages/cohort-set.js +25 -0
- package/dist/esm/btcr2/beacon/aggregation/messages/cohort-set.js.map +1 -0
- package/dist/esm/btcr2/beacon/aggregation/messages/keygen.js +8 -0
- package/dist/esm/btcr2/beacon/aggregation/messages/keygen.js.map +1 -0
- package/dist/esm/btcr2/beacon/aggregation/messages/opt-in.js +23 -0
- package/dist/esm/btcr2/beacon/aggregation/messages/opt-in.js.map +1 -0
- package/dist/esm/btcr2/beacon/aggregation/messages/sign.js +7 -0
- package/dist/esm/btcr2/beacon/aggregation/messages/sign.js.map +1 -0
- package/dist/esm/btcr2/beacon/aggregation/models/cohort/index.js +92 -0
- package/dist/esm/btcr2/beacon/aggregation/models/cohort/index.js.map +1 -0
- package/dist/esm/btcr2/beacon/aggregation/models/cohort/status.js +8 -0
- package/dist/esm/btcr2/beacon/aggregation/models/cohort/status.js.map +1 -0
- package/dist/esm/btcr2/beacon/aggregation/participant.js +2 -0
- package/dist/esm/btcr2/beacon/aggregation/participant.js.map +1 -0
- package/dist/esm/btcr2/beacon/aggregation/protocol/nostr.js +57 -0
- package/dist/esm/btcr2/beacon/aggregation/protocol/nostr.js.map +1 -0
- package/dist/esm/btcr2/beacon/aggregation/protocol/service.js +2 -0
- package/dist/esm/btcr2/beacon/aggregation/protocol/service.js.map +1 -0
- package/dist/esm/btcr2/beacon/cid-aggregate.js +116 -0
- package/dist/esm/btcr2/beacon/cid-aggregate.js.map +1 -0
- package/dist/esm/btcr2/beacon/factory.js +30 -0
- package/dist/esm/btcr2/beacon/factory.js.map +1 -0
- package/dist/esm/btcr2/beacon/singleton.js +220 -0
- package/dist/esm/btcr2/beacon/singleton.js.map +1 -0
- package/dist/esm/btcr2/beacon/smt-aggregate.js +126 -0
- package/dist/esm/btcr2/beacon/smt-aggregate.js.map +1 -0
- package/dist/esm/btcr2/crud/create.js +102 -0
- package/dist/esm/btcr2/crud/create.js.map +1 -0
- package/dist/esm/btcr2/crud/deactivate.js +14 -0
- package/dist/esm/btcr2/crud/deactivate.js.map +1 -0
- package/dist/esm/btcr2/crud/read.js +686 -0
- package/dist/esm/btcr2/crud/read.js.map +1 -0
- package/dist/esm/btcr2/crud/update.js +195 -0
- package/dist/esm/btcr2/crud/update.js.map +1 -0
- package/dist/esm/btcr2/key-manager/index.js +290 -0
- package/dist/esm/btcr2/key-manager/index.js.map +1 -0
- package/dist/esm/btcr2/key-manager/interface.js +2 -0
- package/dist/esm/btcr2/key-manager/interface.js.map +1 -0
- package/dist/esm/did-btcr2.js +222 -0
- package/dist/esm/did-btcr2.js.map +1 -0
- package/dist/esm/index.js +27 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/interfaces/beacon.js +41 -0
- package/dist/esm/interfaces/beacon.js.map +1 -0
- package/dist/esm/interfaces/crud.js +2 -0
- package/dist/esm/interfaces/crud.js.map +1 -0
- package/dist/esm/interfaces/ibeacon.js +2 -0
- package/dist/esm/interfaces/ibeacon.js.map +1 -0
- package/dist/esm/types/bitcoin.js +62 -0
- package/dist/esm/types/bitcoin.js.map +1 -0
- package/dist/esm/types/crud.js +2 -0
- package/dist/esm/types/crud.js.map +1 -0
- package/dist/esm/utils/appendix.js +221 -0
- package/dist/esm/utils/appendix.js.map +1 -0
- package/dist/esm/utils/beacons.js +206 -0
- package/dist/esm/utils/beacons.js.map +1 -0
- package/dist/esm/utils/did-document-builder.js +61 -0
- package/dist/esm/utils/did-document-builder.js.map +1 -0
- package/dist/esm/utils/did-document.js +380 -0
- package/dist/esm/utils/did-document.js.map +1 -0
- package/dist/esm/utils/general.js +195 -0
- package/dist/esm/utils/general.js.map +1 -0
- package/dist/esm/utils/identifier.js +238 -0
- package/dist/esm/utils/identifier.js.map +1 -0
- package/dist/types/bitcoin/constants.d.ts +19 -0
- package/dist/types/bitcoin/constants.d.ts.map +1 -0
- package/dist/types/bitcoin/errors.d.ts +5 -0
- package/dist/types/bitcoin/errors.d.ts.map +1 -0
- package/dist/types/bitcoin/index.d.ts +75 -0
- package/dist/types/bitcoin/index.d.ts.map +1 -0
- package/dist/types/bitcoin/interface.d.ts +86 -0
- package/dist/types/bitcoin/interface.d.ts.map +1 -0
- package/dist/types/bitcoin/network.d.ts +2 -0
- package/dist/types/bitcoin/network.d.ts.map +1 -0
- package/dist/types/bitcoin/rest-client.d.ts +268 -0
- package/dist/types/bitcoin/rest-client.d.ts.map +1 -0
- package/dist/types/bitcoin/rpc-client.d.ts +506 -0
- package/dist/types/bitcoin/rpc-client.d.ts.map +1 -0
- package/dist/types/bitcoin/taproot.d.ts +34 -0
- package/dist/types/bitcoin/taproot.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/aggregation/coordinator.d.ts +74 -0
- package/dist/types/btcr2/beacon/aggregation/coordinator.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/aggregation/messages/advert.d.ts +22 -0
- package/dist/types/btcr2/beacon/aggregation/messages/advert.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/aggregation/messages/base.d.ts +36 -0
- package/dist/types/btcr2/beacon/aggregation/messages/base.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/aggregation/messages/cohort-set.d.ts +23 -0
- package/dist/types/btcr2/beacon/aggregation/messages/cohort-set.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/aggregation/messages/keygen.d.ts +6 -0
- package/dist/types/btcr2/beacon/aggregation/messages/keygen.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/aggregation/messages/opt-in.d.ts +22 -0
- package/dist/types/btcr2/beacon/aggregation/messages/opt-in.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/aggregation/messages/sign.d.ts +5 -0
- package/dist/types/btcr2/beacon/aggregation/messages/sign.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/aggregation/models/cohort/index.d.ts +77 -0
- package/dist/types/btcr2/beacon/aggregation/models/cohort/index.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/aggregation/models/cohort/status.d.ts +7 -0
- package/dist/types/btcr2/beacon/aggregation/models/cohort/status.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/aggregation/participant.d.ts +1 -0
- package/dist/types/btcr2/beacon/aggregation/participant.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/aggregation/protocol/nostr.d.ts +36 -0
- package/dist/types/btcr2/beacon/aggregation/protocol/nostr.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/aggregation/protocol/service.d.ts +6 -0
- package/dist/types/btcr2/beacon/aggregation/protocol/service.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/cid-aggregate.d.ts +103 -0
- package/dist/types/btcr2/beacon/cid-aggregate.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/factory.d.ts +17 -0
- package/dist/types/btcr2/beacon/factory.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/singleton.d.ts +93 -0
- package/dist/types/btcr2/beacon/singleton.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/smt-aggregate.d.ts +112 -0
- package/dist/types/btcr2/beacon/smt-aggregate.d.ts.map +1 -0
- package/dist/types/btcr2/crud/create.d.ts +92 -0
- package/dist/types/btcr2/crud/create.d.ts.map +1 -0
- package/dist/types/btcr2/crud/deactivate.d.ts +13 -0
- package/dist/types/btcr2/crud/deactivate.d.ts.map +1 -0
- package/dist/types/btcr2/crud/read.d.ts +341 -0
- package/dist/types/btcr2/crud/read.d.ts.map +1 -0
- package/dist/types/btcr2/crud/update.d.ts +83 -0
- package/dist/types/btcr2/crud/update.d.ts.map +1 -0
- package/dist/types/btcr2/key-manager/index.d.ts +145 -0
- package/dist/types/btcr2/key-manager/index.d.ts.map +1 -0
- package/dist/types/btcr2/key-manager/interface.d.ts +113 -0
- package/dist/types/btcr2/key-manager/interface.d.ts.map +1 -0
- package/dist/types/did-btcr2.d.ts +117 -0
- package/dist/types/did-btcr2.d.ts.map +1 -0
- package/dist/types/index.d.ts +26 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/interfaces/beacon.d.ts +57 -0
- package/dist/types/interfaces/beacon.d.ts.map +1 -0
- package/dist/types/interfaces/crud.d.ts +35 -0
- package/dist/types/interfaces/crud.d.ts.map +1 -0
- package/dist/types/interfaces/ibeacon.d.ts +66 -0
- package/dist/types/interfaces/ibeacon.d.ts.map +1 -0
- package/dist/types/types/bitcoin.d.ts +827 -0
- package/dist/types/types/bitcoin.d.ts.map +1 -0
- package/dist/types/types/crud.d.ts +38 -0
- package/dist/types/types/crud.d.ts.map +1 -0
- package/dist/types/utils/appendix.d.ts +118 -0
- package/dist/types/utils/appendix.d.ts.map +1 -0
- package/dist/types/utils/beacons.d.ts +156 -0
- package/dist/types/utils/beacons.d.ts.map +1 -0
- package/dist/types/utils/did-document-builder.d.ts +13 -0
- package/dist/types/utils/did-document-builder.d.ts.map +1 -0
- package/dist/types/utils/did-document.d.ts +211 -0
- package/dist/types/utils/did-document.d.ts.map +1 -0
- package/dist/types/utils/general.d.ts +85 -0
- package/dist/types/utils/general.d.ts.map +1 -0
- package/dist/types/utils/identifier.d.ts +59 -0
- package/dist/types/utils/identifier.d.ts.map +1 -0
- package/package.json +137 -0
- package/src/bitcoin/constants.ts +19 -0
- package/src/bitcoin/errors.ts +10 -0
- package/src/bitcoin/index.ts +154 -0
- package/src/bitcoin/interface.ts +160 -0
- package/src/bitcoin/network.ts +17 -0
- package/src/bitcoin/rest-client.ts +415 -0
- package/src/bitcoin/rpc-client.ts +888 -0
- package/src/bitcoin/taproot.ts +237 -0
- package/src/btcr2/beacon/aggregation/coordinator.ts +135 -0
- package/src/btcr2/beacon/aggregation/messages/advert.ts +36 -0
- package/src/btcr2/beacon/aggregation/messages/base.ts +59 -0
- package/src/btcr2/beacon/aggregation/messages/cohort-set.ts +37 -0
- package/src/btcr2/beacon/aggregation/messages/keygen.ts +8 -0
- package/src/btcr2/beacon/aggregation/messages/opt-in.ts +35 -0
- package/src/btcr2/beacon/aggregation/messages/sign.ts +7 -0
- package/src/btcr2/beacon/aggregation/models/cohort/index.ts +112 -0
- package/src/btcr2/beacon/aggregation/models/cohort/status.ts +7 -0
- package/src/btcr2/beacon/aggregation/participant.ts +0 -0
- package/src/btcr2/beacon/aggregation/protocol/nostr.ts +81 -0
- package/src/btcr2/beacon/aggregation/protocol/service.ts +6 -0
- package/src/btcr2/beacon/cid-aggregate.ts +154 -0
- package/src/btcr2/beacon/factory.ts +36 -0
- package/src/btcr2/beacon/singleton.ts +257 -0
- package/src/btcr2/beacon/smt-aggregate.ts +136 -0
- package/src/btcr2/crud/create.ts +160 -0
- package/src/btcr2/crud/deactivate.ts +13 -0
- package/src/btcr2/crud/read.ts +946 -0
- package/src/btcr2/crud/update.ts +277 -0
- package/src/btcr2/key-manager/index.ts +364 -0
- package/src/btcr2/key-manager/interface.ts +129 -0
- package/src/canonicalize.d.ts +6 -0
- package/src/did-btcr2.ts +288 -0
- package/src/index.ts +34 -0
- package/src/interfaces/beacon.ts +68 -0
- package/src/interfaces/crud.ts +36 -0
- package/src/interfaces/ibeacon.ts +76 -0
- package/src/types/bitcoin.ts +1028 -0
- package/src/types/crud.ts +41 -0
- package/src/utils/appendix.ts +257 -0
- package/src/utils/beacons.ts +276 -0
- package/src/utils/did-document-builder.ts +73 -0
- package/src/utils/did-document.ts +474 -0
- package/src/utils/general.ts +204 -0
- package/src/utils/identifier.ts +276 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../../../src/btcr2/crud/read.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { BTCR2_DID_UPDATE_PAYLOAD_CONTEXT, Btcr2Error, INVALID_DID_DOCUMENT, INVALID_DID_UPDATE, INVALID_PUBLIC_KEY_TYPE, Logger, NOT_FOUND } from '@did-btcr2/common';
|
|
2
|
+
import { SchnorrMultikey } from '@did-btcr2/cryptosuite';
|
|
3
|
+
import { SchnorrKeyPair, SecretKey } from '@did-btcr2/keypair';
|
|
4
|
+
import { Btc1Appendix } from '../../utils/appendix.js';
|
|
5
|
+
import { Btc1DidDocument } from '../../utils/did-document.js';
|
|
6
|
+
import { BeaconFactory } from '../beacon/factory.js';
|
|
7
|
+
import { Btc1KeyManager } from '../key-manager/index.js';
|
|
8
|
+
/**
|
|
9
|
+
* Implements {@link https://dcdpr.github.io/did-btcr2/#update | 4.3 Update}.
|
|
10
|
+
*
|
|
11
|
+
* An update to a did:btcr2 document is an invoked capability using the ZCAP-LD
|
|
12
|
+
* data format, signed by a verificationMethod that has the authority to make
|
|
13
|
+
* the update as specified in the previous DID document. Capability invocations
|
|
14
|
+
* for updates MUST be authorized using Data Integrity following the
|
|
15
|
+
* bip340-jcs-2025 cryptosuite with a proofPurpose of capabilityInvocation.
|
|
16
|
+
*
|
|
17
|
+
* @class Btc1Update
|
|
18
|
+
* @type {Btc1Update}
|
|
19
|
+
*/
|
|
20
|
+
export class Btc1Update {
|
|
21
|
+
/**
|
|
22
|
+
* Implements {@link https://dcdpr.github.io/did-btcr2/#construct-did-update-payload | 4.3.1 Construct DID Update Payload}.
|
|
23
|
+
*
|
|
24
|
+
* The Construct DID Update Payload algorithm applies the documentPatch to the sourceDocument and verifies the
|
|
25
|
+
* resulting targetDocument is a conformant DID document. It takes in a btc1Identifier, sourceDocument,
|
|
26
|
+
* sourceVersionId, and documentPatch objects. It returns an unsigned DID Update Payload.
|
|
27
|
+
*
|
|
28
|
+
* @param {ConstructPayloadParams} params See {@link ConstructPayloadParams} for more details.
|
|
29
|
+
* @param {string} params.identifier The did-btcr2 identifier to use for verification.
|
|
30
|
+
* @param {Btc1DidDocument} params.sourceDocument The source document to be updated.
|
|
31
|
+
* @param {string} params.sourceVersionId The versionId of the source document.
|
|
32
|
+
* @param {DidDocumentPatch} params.patch The JSON patch to be applied to the source document.
|
|
33
|
+
* @returns {Promise<DidUpdatePayload>} The constructed DidUpdatePayload object.
|
|
34
|
+
* @throws {Btcr2Error} InvalidDid if sourceDocument.id does not match identifier.
|
|
35
|
+
*/
|
|
36
|
+
static async construct({ identifier, sourceDocument, sourceVersionId, patch, }) {
|
|
37
|
+
// 1. Check that sourceDocument.id equals identifier else MUST raise invalidDIDUpdate error.
|
|
38
|
+
if (sourceDocument.id !== identifier) {
|
|
39
|
+
throw new Btcr2Error(INVALID_DID_UPDATE, 'Source document id does not match identifier', { sourceDocument, identifier });
|
|
40
|
+
}
|
|
41
|
+
// 2. Initialize didUpdatePayload to an empty object.
|
|
42
|
+
const didUpdatePayload = {
|
|
43
|
+
// 3. Set didUpdatePayload.@context to the following list
|
|
44
|
+
'@context': BTCR2_DID_UPDATE_PAYLOAD_CONTEXT,
|
|
45
|
+
// 4. Set didUpdatePayload.patch to documentPatch.
|
|
46
|
+
patch,
|
|
47
|
+
targetHash: '',
|
|
48
|
+
targetVersionId: 0,
|
|
49
|
+
sourceHash: '',
|
|
50
|
+
};
|
|
51
|
+
// TODO: Need to add btcr2 context. ["https://w3id.org/zcap/v1", "https://w3id.org/security/data-integrity/v2", "https://w3id.org/json-ld-patch/v1"]
|
|
52
|
+
// 5. Set targetDocument to the result of applying the documentPatch to the sourceDocument, following the JSON Patch
|
|
53
|
+
// specification.
|
|
54
|
+
const targetDocument = JSON.patch.apply(sourceDocument, patch);
|
|
55
|
+
// 6. Validate targetDocument is a conformant DID document, else MUST raise invalidDIDUpdate error.
|
|
56
|
+
Btc1DidDocument.validate(targetDocument);
|
|
57
|
+
// 7. Set sourceHashBytes to the result of passing sourceDocument into the JSON Canonicalization and Hash algorithm.
|
|
58
|
+
// 8. Set didUpdatePayload.sourceHash to the base58-btc Multibase encoding of sourceHashBytes.
|
|
59
|
+
didUpdatePayload.sourceHash = (await JSON.canonicalization.process(sourceDocument, 'base58')).slice(1);
|
|
60
|
+
// TODO: Question - is base58btc the correct encoding scheme?
|
|
61
|
+
// 9. Set targetHashBytes to the result of passing targetDocument into the JSON Canonicalization and Hash algorithm.
|
|
62
|
+
// 10. Set didUpdatePayload.targetHash to the base58-btc Multibase encoding of targetHashBytes.
|
|
63
|
+
didUpdatePayload.targetHash = (await JSON.canonicalization.process(targetDocument, 'base58')).slice(1);
|
|
64
|
+
// 11. Set didUpdatePayload.targetVersionId to sourceVersionId + 1.
|
|
65
|
+
didUpdatePayload.targetVersionId = sourceVersionId + 1;
|
|
66
|
+
// 12. Return updatePayload.
|
|
67
|
+
return didUpdatePayload;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* {@link https://dcdpr.github.io/did-btcr2/#invoke-did-update-payload | 4.3.2 Invoke DID Update Payload}.
|
|
71
|
+
*
|
|
72
|
+
* The Invoke DID Update Payload algorithm takes in a btc1Identifier, an unsigned didUpdatePayload, and a
|
|
73
|
+
* verificationMethod. It retrieves the privateKeyBytes for the verificationMethod and adds a capability invocation in
|
|
74
|
+
* the form of a Data Integrity proof following the Authorization Capabilities (ZCAP-LD) and VC Data Integrity
|
|
75
|
+
* specifications. It returns the invoked DID Update Payload.
|
|
76
|
+
*
|
|
77
|
+
* @param {InvokePayloadParams} params Required params for calling the invokePayload method
|
|
78
|
+
* @param {string} params.identifier The did-btcr2 identifier to derive the root capability from
|
|
79
|
+
* @param {DidUpdatePayload} params.didUpdatePayload The updatePayload object to be signed
|
|
80
|
+
* @param {DidVerificationMethod} params.verificationMethod The verificationMethod object to be used for signing
|
|
81
|
+
* @returns {DidUpdateInvocation} Did update payload secured with a proof => DidUpdateInvocation
|
|
82
|
+
* @throws {Btcr2Error} if the privateKeyBytes are invalid
|
|
83
|
+
*/
|
|
84
|
+
static async invoke({ identifier, didUpdatePayload, verificationMethod }) {
|
|
85
|
+
// Deconstruct the verificationMethod
|
|
86
|
+
const { id: fullId, controller, publicKeyMultibase, secretKeyMultibase } = verificationMethod;
|
|
87
|
+
// Validate the verificationMethod
|
|
88
|
+
if (!publicKeyMultibase) {
|
|
89
|
+
throw new Btcr2Error('Invalid publicKeyMultibase: cannot be undefined', INVALID_PUBLIC_KEY_TYPE, verificationMethod);
|
|
90
|
+
}
|
|
91
|
+
// 1. Set privateKeyBytes to the result of retrieving the private key bytes
|
|
92
|
+
// associated with the verificationMethod value.
|
|
93
|
+
const id = fullId.slice(fullId.indexOf('#'));
|
|
94
|
+
const multikey = !secretKeyMultibase
|
|
95
|
+
// 1.1 Compute the keyUri and check if the key is in the keystore
|
|
96
|
+
? await Btc1KeyManager.getKeyPair(fullId)
|
|
97
|
+
// 1.2 If not, use the secretKeyMultibase from the verificationMethod
|
|
98
|
+
: SchnorrMultikey
|
|
99
|
+
.initialize({
|
|
100
|
+
id,
|
|
101
|
+
controller,
|
|
102
|
+
keys: new SchnorrKeyPair({
|
|
103
|
+
secretKey: SecretKey.decode(secretKeyMultibase)
|
|
104
|
+
})
|
|
105
|
+
});
|
|
106
|
+
// 1.3 If the privateKey is not found, throw an error
|
|
107
|
+
if (!multikey) {
|
|
108
|
+
throw new Btcr2Error('No privateKey found in kms or vm', NOT_FOUND, verificationMethod);
|
|
109
|
+
}
|
|
110
|
+
// 2. Set rootCapability to the result of passing btc1Identifier into the Derive Root Capability from did:btcr2
|
|
111
|
+
// Identifier algorithm.
|
|
112
|
+
const rootCapability = Btc1Appendix.deriveRootCapability(identifier);
|
|
113
|
+
const cryptosuite = 'bip340-jcs-2025';
|
|
114
|
+
// 3. Initialize proofOptions to an empty object.
|
|
115
|
+
// 4. Set proofOptions.type to DataIntegrityProof.
|
|
116
|
+
// 5. Set proofOptions.cryptosuite to schnorr-secp256k1-jcs-2025.
|
|
117
|
+
// 6. Set proofOptions.verificationMethod to verificationMethod.id.
|
|
118
|
+
// 7. Set proofOptions.proofPurpose to capabilityInvocation.
|
|
119
|
+
// 8. Set proofOptions.capability to rootCapability.id.
|
|
120
|
+
// 9. Set proofOptions.capabilityAction to Write.
|
|
121
|
+
// TODO: Wonder if we actually need this. Arent we always writing?
|
|
122
|
+
const options = {
|
|
123
|
+
cryptosuite,
|
|
124
|
+
type: 'DataIntegrityProof',
|
|
125
|
+
verificationMethod: fullId,
|
|
126
|
+
proofPurpose: 'capabilityInvocation',
|
|
127
|
+
capability: rootCapability.id,
|
|
128
|
+
capabilityAction: 'Write',
|
|
129
|
+
};
|
|
130
|
+
// 10. Set cryptosuite to the result of executing the Cryptosuite Instantiation algorithm from the BIP340 Data
|
|
131
|
+
// Integrity specification passing in proofOptions.
|
|
132
|
+
const diproof = multikey.toCryptosuite(cryptosuite).toDataIntegrityProof();
|
|
133
|
+
// TODO: 11. need to set up the proof instantiation such that it can resolve / dereference the root capability. This is deterministic from the DID.
|
|
134
|
+
// 12. Set didUpdateInvocation to the result of executing the Add Proof algorithm from VC Data Integrity passing
|
|
135
|
+
// didUpdatePayload as the input document, cryptosuite, and the set of proofOptions.
|
|
136
|
+
// 13. Return didUpdateInvocation.
|
|
137
|
+
return await diproof.addProof({ document: didUpdatePayload, options });
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Implements {@link https://dcdpr.github.io/did-btcr2/#announce-did-update | 4.3.3 Announce DID Update}.
|
|
141
|
+
*
|
|
142
|
+
* The Announce DID Update algorithm retrieves beaconServices from the sourceDocument and calls the Broadcast DID
|
|
143
|
+
* Update algorithm corresponding to the type of the Beacon. It takes in a btc1Identifier, sourceDocument, an array of
|
|
144
|
+
* beaconIds, and a didUpdateInvocation. It returns an array of signalsMetadata, containing the necessary
|
|
145
|
+
* data to validate the Beacon Signal against the didUpdateInvocation.
|
|
146
|
+
*
|
|
147
|
+
* @param {AnnounceUpdatePayloadParams} params Required params for calling the announcePayload method
|
|
148
|
+
* @param {Btc1DidDocument} params.sourceDocument The did-btcr2 did document to derive the root capability from
|
|
149
|
+
* @param {string[]} params.beaconIds The didUpdatePayload object to be signed
|
|
150
|
+
* @param {DidUpdateInvocation} params.didUpdatePayload The verificationMethod object to be used for signing
|
|
151
|
+
* @returns {SignalsMetadata} The signalsMetadata object containing data to validate the Beacon Signal
|
|
152
|
+
* @throws {Btcr2Error} if the beaconService type is invalid
|
|
153
|
+
*/
|
|
154
|
+
static async announce({ sourceDocument, beaconIds, didUpdateInvocation }) {
|
|
155
|
+
// 1. Set beaconServices to an empty array.
|
|
156
|
+
const beaconServices = [];
|
|
157
|
+
// 2. signalMetadata to an empty array.
|
|
158
|
+
let signalsMetadata;
|
|
159
|
+
// 3. For beaconId in beaconIds:
|
|
160
|
+
for (const beaconId of beaconIds) {
|
|
161
|
+
// 3.1 Find the beacon services in the sourceDocument
|
|
162
|
+
const beaconService = sourceDocument.service.find((s) => s.id === beaconId);
|
|
163
|
+
// 3.2 If no beaconService MUST throw beaconNotFound error.
|
|
164
|
+
if (!beaconService) {
|
|
165
|
+
throw new Btcr2Error('Not found: sourceDocument does not contain beaconId', INVALID_DID_DOCUMENT, { beaconId });
|
|
166
|
+
}
|
|
167
|
+
// 3.3 Push beaconService to beaconServices.
|
|
168
|
+
beaconServices.push(beaconService);
|
|
169
|
+
}
|
|
170
|
+
// 4. For beaconService in beaconServices:
|
|
171
|
+
for (const beaconService of beaconServices) {
|
|
172
|
+
// 4.1 Set signalMetadata to null.
|
|
173
|
+
// 4.2 If beaconService.type == SingletonBeacon:
|
|
174
|
+
// 4.2.1 Set signalMetadata to the result of passing beaconService and didUpdateInvocation to the Broadcast
|
|
175
|
+
// Singleton Beacon Signal algorithm.
|
|
176
|
+
// 4.3 Else If beaconService.type == CIDAggregateBeacon:
|
|
177
|
+
// 4.3.1 Set signalMetadata to the result of passing btc1Identifier, beaconService and didUpdateInvocation to
|
|
178
|
+
// the Broadcast CIDAggregate Beacon Signal algorithm.
|
|
179
|
+
// 4.4 Else If beaconService.type == SMTAggregateBeacon:
|
|
180
|
+
// 4.4.1 Set signalMetadata to the result of passing btc1Identifier, beaconService and didUpdateInvocation to
|
|
181
|
+
// the Broadcast SMTAggregate Beacon Signal algorithm.
|
|
182
|
+
// 4.5 Else:
|
|
183
|
+
// 4.5.1 MUST throw invalidBeacon error.
|
|
184
|
+
const beacon = BeaconFactory.establish(beaconService);
|
|
185
|
+
signalsMetadata = await beacon.broadcastSignal(didUpdateInvocation);
|
|
186
|
+
}
|
|
187
|
+
if (!signalsMetadata) {
|
|
188
|
+
throw new Btcr2Error('Invalid beacon: no signalsMetadata found', INVALID_DID_DOCUMENT, { beaconServices });
|
|
189
|
+
}
|
|
190
|
+
Logger.debug('signalsMetadata', signalsMetadata);
|
|
191
|
+
// Return the signalsMetadata
|
|
192
|
+
return signalsMetadata;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/btcr2/crud/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
import { Btcr2KeyManagerError, Logger, MULTIBASE_URI_PREFIX } from '@did-btcr2/common';
|
|
2
|
+
import { SchnorrMultikey } from '@did-btcr2/cryptosuite';
|
|
3
|
+
import { SchnorrKeyPair, PublicKey } from '@did-btcr2/keypair';
|
|
4
|
+
import { sha256 } from '@noble/hashes/sha2';
|
|
5
|
+
import { MemoryStore } from '@web5/common';
|
|
6
|
+
import { Did } from '@web5/dids';
|
|
7
|
+
;
|
|
8
|
+
/**
|
|
9
|
+
* Class for managing cryptographic keys for the B DID method.
|
|
10
|
+
* @class Btc1KeyManager
|
|
11
|
+
* @type {Btc1KeyManager}
|
|
12
|
+
*/
|
|
13
|
+
export class Btc1KeyManager {
|
|
14
|
+
/**
|
|
15
|
+
* Singleton instance of the Btc1KeyManager.
|
|
16
|
+
* @private
|
|
17
|
+
* @type {Btc1KeyManager}
|
|
18
|
+
*/
|
|
19
|
+
static #instance;
|
|
20
|
+
/**
|
|
21
|
+
* The `activeKeyUri` property is a string that represents the URI of the currently active key.
|
|
22
|
+
* It is used to identify the key that will be used for signing and verifying operations.
|
|
23
|
+
* This property is optional and can be set to a specific key URI when initializing the
|
|
24
|
+
* `Btc1KeyManager` instance. If not set, the key manager will use the default key URI.
|
|
25
|
+
* @type {KeyIdentifier}
|
|
26
|
+
*/
|
|
27
|
+
activeKeyUri;
|
|
28
|
+
/**
|
|
29
|
+
* The `_store` private variable in `Btc1KeyManager` is a `KeyValueStore` instance used for
|
|
30
|
+
* storing and managing cryptographic keys. It allows the `Btc1KeyManager` class to save,
|
|
31
|
+
* retrieve, and handle keys efficiently within the local Key Management System (KMS) context.
|
|
32
|
+
* This variable can be configured to use different storage backends, like in-memory storage or
|
|
33
|
+
* persistent storage, providing flexibility in key management according to the application's
|
|
34
|
+
* requirements.
|
|
35
|
+
* @private
|
|
36
|
+
* @readonly
|
|
37
|
+
* @type {KeyValueStore<KeyIdentifier, SchnorrKeyPair>} The key store for managing cryptographic keys.
|
|
38
|
+
*/
|
|
39
|
+
_store;
|
|
40
|
+
/**
|
|
41
|
+
* Creates an instance of Btc1KeyManager.
|
|
42
|
+
* @param {?KeyManagerParams} params The parameters to initialize the key manager.
|
|
43
|
+
* @param {KeyValueStore<KeyIdentifier, SchnorrMultikey>} params.store An optional property to specify a custom
|
|
44
|
+
* `KeyValueStore` instance for key management. If not provided, {@link Btc1KeyManager} uses a default `MemoryStore`
|
|
45
|
+
* instance. This store is responsible for managing cryptographic keys, allowing them to be retrieved, stored, and
|
|
46
|
+
* managed during cryptographic operations.
|
|
47
|
+
* @param {KeyIdentifier} params.keyUri An optional property to specify the active key URI for the key manager.
|
|
48
|
+
*/
|
|
49
|
+
constructor({ store, keyUri, keys } = {}) {
|
|
50
|
+
// Set the default key store to a MemoryStore instance
|
|
51
|
+
this._store = store ?? new MemoryStore();
|
|
52
|
+
// Import the keys into the key store
|
|
53
|
+
if (keyUri && keys) {
|
|
54
|
+
void this.importKey(keys, keyUri).then(() => {
|
|
55
|
+
this.activeKeyUri = keyUri;
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Gets the singleton instance of the Btc1KeyManager.
|
|
61
|
+
* @returns {Btc1KeyManager} The singleton instance of the Btc1KeyManager.
|
|
62
|
+
*/
|
|
63
|
+
static get instance() {
|
|
64
|
+
// Check if the Btc1KeyManager instance is initialized
|
|
65
|
+
if (!Btc1KeyManager.#instance) {
|
|
66
|
+
throw new Btcr2KeyManagerError('Btc1KeyManager not initialized. Call initialize() first.', 'KEY_MANAGER_NOT_INITIALIZED');
|
|
67
|
+
}
|
|
68
|
+
// Return the singleton instance
|
|
69
|
+
const instance = Btc1KeyManager.#instance;
|
|
70
|
+
return instance;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Signs a transaction using the key associated with the key URI.
|
|
74
|
+
* @param {Hex} txHex The transaction hex to sign.
|
|
75
|
+
* @param {KeyIdentifier} keyUri The URI of the key to sign the transaction with.
|
|
76
|
+
* @returns {Promise<Hex>} A promise resolving to the signed transaction hex.
|
|
77
|
+
*/
|
|
78
|
+
signTransaction(txHex, keyUri) {
|
|
79
|
+
throw new Error('Method not implemented.' + txHex + keyUri);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Gets the key pair from the key store and returns a PublicKey.
|
|
83
|
+
* @param {KeyIdentifier} keyUri The URI of the key to get the public key for.
|
|
84
|
+
* @returns {Promise<PublicKey>} The public key associated with the key URI.
|
|
85
|
+
*/
|
|
86
|
+
async getPublicKey(keyUri) {
|
|
87
|
+
// Use the active key URI if not provided
|
|
88
|
+
const key = await this.getKey(keyUri);
|
|
89
|
+
// Check if the key exists and has a public key
|
|
90
|
+
if (!key?.publicKey) {
|
|
91
|
+
throw new Btcr2KeyManagerError(`Key not found for URI: ${keyUri}`, 'KEY_NOT_FOUND');
|
|
92
|
+
}
|
|
93
|
+
// Return the public key
|
|
94
|
+
return key.publicKey;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Signs the given data using the key associated with the key URI.
|
|
98
|
+
* @param {Hex} data The data to sign.
|
|
99
|
+
* @param {?KeyIdentifier} keyUri The URI of the key to sign the data with.
|
|
100
|
+
* @returns {Promise<SignatureBytes>} A promise resolving to the signature of the data.
|
|
101
|
+
*/
|
|
102
|
+
async sign(data, keyUri) {
|
|
103
|
+
// Get the key from the store
|
|
104
|
+
const key = await this.getKey(keyUri);
|
|
105
|
+
// Check if the key exists
|
|
106
|
+
if (!key) {
|
|
107
|
+
throw new Btcr2KeyManagerError(`Key URI ${keyUri} not found`, 'KEY_NOT_FOUND');
|
|
108
|
+
}
|
|
109
|
+
// Check if the key can sign
|
|
110
|
+
if (!key.signer) {
|
|
111
|
+
throw new Btcr2KeyManagerError(`Key URI ${keyUri} is not a signer`, 'KEY_NOT_SIGNER');
|
|
112
|
+
}
|
|
113
|
+
// Sign the data using the key and return the signature
|
|
114
|
+
return key.sign(data);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Verifies a signature using the key associated with the key URI.
|
|
118
|
+
* @param {KeyIdentifier} keyUri The URI of the key to verify the signature with.
|
|
119
|
+
* @param {SignatureBytes} signature The signature to verify.
|
|
120
|
+
* @param {Hex} data The data to verify the signature with.
|
|
121
|
+
* @returns {Promise<boolean>} A promise resolving to a boolean indicating the verification result.
|
|
122
|
+
*/
|
|
123
|
+
async verify(signature, data, keyUri) {
|
|
124
|
+
// Get the key from the store
|
|
125
|
+
const key = await this.getKey(keyUri);
|
|
126
|
+
// Check if the key exists
|
|
127
|
+
if (!key) {
|
|
128
|
+
throw new Btcr2KeyManagerError(`Key not found for URI: ${keyUri}`, 'KEY_NOT_FOUND');
|
|
129
|
+
}
|
|
130
|
+
// Verify the signature using the multikey
|
|
131
|
+
return key.verify(signature, data);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Gets the key pair from the key store.
|
|
135
|
+
* @param {KeyIdentifier} keyUri The URI of the key to get.
|
|
136
|
+
* @returns {Promise<SchnorrKeyPair>} The key pair associated with the key URI.
|
|
137
|
+
* @throws {Btcr2KeyManagerError} If the key is not found in the key store.
|
|
138
|
+
*/
|
|
139
|
+
async getKey(keyUri) {
|
|
140
|
+
// Use the active key URI if not provided
|
|
141
|
+
const uri = keyUri ?? this.activeKeyUri;
|
|
142
|
+
// Throw an error if no key URI is provided or active
|
|
143
|
+
if (!uri) {
|
|
144
|
+
throw new Btcr2KeyManagerError('No active key uri set.', 'ACTIVE_KEY_URI_NOT_SET');
|
|
145
|
+
}
|
|
146
|
+
// Get the key pair from the key store
|
|
147
|
+
return await this._store.get(uri);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Exports the full multikeypair from the key store.
|
|
151
|
+
* @returns {Promise<SchnorrKeyPair>} The key pair associated with the key URI.
|
|
152
|
+
* @throws {Btcr2KeyManagerError} If the key is not found in the key store.
|
|
153
|
+
*/
|
|
154
|
+
async exportKey(keyUri) {
|
|
155
|
+
// Get the key from the key store and return it
|
|
156
|
+
return await this.getKey(keyUri);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Imports a keypair to the store.
|
|
160
|
+
* @param {SchnorrKeyPair} keys The keypair to import.
|
|
161
|
+
* @param {KeyIdentifier} keyUri The URI of the key to import.
|
|
162
|
+
* @param {Btc1KeyManagerOptions} options Relevant import options.
|
|
163
|
+
* @param {boolean} options.active A flag to set the key as active (optional, default: false).
|
|
164
|
+
* @returns {Promise<KeyIdentifier>} A promise that resolves to the key identifier of the imported key.
|
|
165
|
+
*/
|
|
166
|
+
async importKey(keys, keyUri, options = {}) {
|
|
167
|
+
const parts = Did.parse(keyUri);
|
|
168
|
+
if (!parts) {
|
|
169
|
+
throw new Btcr2KeyManagerError('Invalid key URI: must be valid, parsable BTCR2 identifier', 'INVALID_KEY_URI', { keyUri, parts });
|
|
170
|
+
}
|
|
171
|
+
if (!parts.id) {
|
|
172
|
+
throw new Btcr2KeyManagerError('Invalid key URI: missing id part', 'INVALID_KEY_URI', { keyUri, parts });
|
|
173
|
+
}
|
|
174
|
+
if (!parts.fragment) {
|
|
175
|
+
throw new Btcr2KeyManagerError('Invalid key URI: missing fragment part', 'INVALID_KEY_URI', { keyUri, parts });
|
|
176
|
+
}
|
|
177
|
+
// Instantiate a new SchnorrMultikey with the provided keys
|
|
178
|
+
const multikey = new SchnorrMultikey({ controller: parts.uri, id: `#${parts.fragment}`, keys });
|
|
179
|
+
// Store the keypair in the key store
|
|
180
|
+
await this._store.set(keyUri, multikey);
|
|
181
|
+
// Set the key as active if required
|
|
182
|
+
if (options.active) {
|
|
183
|
+
this.activeKeyUri = keyUri;
|
|
184
|
+
}
|
|
185
|
+
// Return the key URI
|
|
186
|
+
return keyUri;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Computes the hash of the given data.
|
|
190
|
+
* @param {Uint8Array} data The data to hash.
|
|
191
|
+
* @returns {HashBytes} The hash of the data.
|
|
192
|
+
*/
|
|
193
|
+
digest(data) {
|
|
194
|
+
return sha256(data);
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Computes the key URI of a given keypair.
|
|
198
|
+
* @param {string} id The fragment identifier (e.g. 'key-1').
|
|
199
|
+
* @param {string} [controller] The DID controller (e.g. 'did:btcr2:xyz').
|
|
200
|
+
* @returns {KeyIdentifier} A full DID fragment URI (e.g. 'did:btcr2:xyz#key-1')
|
|
201
|
+
*/
|
|
202
|
+
static computeKeyUri(id, controller) {
|
|
203
|
+
// Concat the id to the controller and return
|
|
204
|
+
return `${controller}${id.startsWith('#') ? id : `#${id}`}`;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Computes a multibase-compliant URI from a key.
|
|
208
|
+
* @param key A SchnorrKeyPair, PublicKey, or multibase string
|
|
209
|
+
* @returns {string} A multibase URI (e.g. 'urn:mb:zQ3s...')
|
|
210
|
+
*/
|
|
211
|
+
static toMultibaseUri(data) {
|
|
212
|
+
const multibase = data instanceof SchnorrKeyPair
|
|
213
|
+
? data.publicKey.multibase
|
|
214
|
+
: data instanceof PublicKey
|
|
215
|
+
? data.multibase
|
|
216
|
+
: data;
|
|
217
|
+
return `${MULTIBASE_URI_PREFIX}${multibase}`;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Initializes a singleton Btc1KeyManager instance.
|
|
221
|
+
* @param {SchnorrKeyPair} keys The keypair used to initialize the key manager.
|
|
222
|
+
* @returns {void}
|
|
223
|
+
*/
|
|
224
|
+
static async initialize(keys, keyUri) {
|
|
225
|
+
if (!(keys instanceof SchnorrKeyPair)) {
|
|
226
|
+
keys = SchnorrKeyPair.fromJSON(keys);
|
|
227
|
+
}
|
|
228
|
+
// Check if the Btc1KeyManager instance is already initialized
|
|
229
|
+
if (Btc1KeyManager.#instance) {
|
|
230
|
+
Logger.warn('Btc1KeyManager global instance is already initialized.');
|
|
231
|
+
return Btc1KeyManager.#instance;
|
|
232
|
+
}
|
|
233
|
+
// Check if the keypair is provided
|
|
234
|
+
if (!keys) {
|
|
235
|
+
// Log a warning message if not provided
|
|
236
|
+
Logger.warn('keys not provided, generating ...');
|
|
237
|
+
}
|
|
238
|
+
// Generate a new keypair if not provided
|
|
239
|
+
keys ??= SchnorrKeyPair.generate();
|
|
240
|
+
// Initialize the singleton key manager with the keypair
|
|
241
|
+
Btc1KeyManager.#instance = new Btc1KeyManager({ keys });
|
|
242
|
+
// Import the keypair into the key store
|
|
243
|
+
await Btc1KeyManager.#instance.importKey(keys, keyUri, { active: true });
|
|
244
|
+
// Set the active key URI
|
|
245
|
+
Btc1KeyManager.#instance.activeKeyUri = keyUri;
|
|
246
|
+
// Log the active key URI
|
|
247
|
+
Logger.info(`KeyManager initialized with Active Key URI: ${Btc1KeyManager.#instance.activeKeyUri}`);
|
|
248
|
+
// Return the singleton instance
|
|
249
|
+
return Btc1KeyManager.#instance;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Retrieves a keypair from the key store using the provided key URI.
|
|
253
|
+
* @public
|
|
254
|
+
* @param {KeyIdentifier} keyUri The URI of the keypair to retrieve.
|
|
255
|
+
* @returns {Promise<SchnorrKeyPair | undefined>} The retrieved keypair, or undefined if not found.
|
|
256
|
+
*/
|
|
257
|
+
static async getKeyPair(keyUri) {
|
|
258
|
+
// Use the active key URI if not provided
|
|
259
|
+
keyUri ??= Btc1KeyManager.#instance?.activeKeyUri;
|
|
260
|
+
// Instantiate a new Btc1KeyManager with the default key store
|
|
261
|
+
return await Btc1KeyManager.#instance?.getKey(keyUri);
|
|
262
|
+
}
|
|
263
|
+
async getKeySigner(keyUri, network) {
|
|
264
|
+
const multikey = await this.getKey(keyUri);
|
|
265
|
+
if (!multikey) {
|
|
266
|
+
throw new Btcr2KeyManagerError(`Key not found for URI: ${keyUri}`, 'KEY_NOT_FOUND');
|
|
267
|
+
}
|
|
268
|
+
return new Signer({ multikey, network });
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
export class Signer {
|
|
272
|
+
multikey;
|
|
273
|
+
network;
|
|
274
|
+
constructor(params) {
|
|
275
|
+
this.multikey = params.multikey;
|
|
276
|
+
this.network = params.network;
|
|
277
|
+
}
|
|
278
|
+
get publicKey() {
|
|
279
|
+
// Return the public key from the multikey
|
|
280
|
+
return this.multikey.publicKey.compressed;
|
|
281
|
+
}
|
|
282
|
+
sign(hash) {
|
|
283
|
+
return this.multikey.sign(hash, { scheme: 'ecdsa' });
|
|
284
|
+
}
|
|
285
|
+
;
|
|
286
|
+
signSchnorr(hash) {
|
|
287
|
+
return this.multikey.sign(hash);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/btcr2/key-manager/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../../src/btcr2/key-manager/interface.ts"],"names":[],"mappings":""}
|