@enbox/dwn-sdk-js 0.0.6 → 0.0.7
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/dist/browser.mjs +8 -8
- package/dist/browser.mjs.map +4 -4
- package/dist/esm/generated/precompiled-validators.js +1 -2
- package/dist/esm/generated/precompiled-validators.js.map +1 -1
- package/dist/esm/src/core/abstract-message.js +4 -0
- package/dist/esm/src/core/abstract-message.js.map +1 -1
- package/dist/esm/src/core/auth.js +22 -33
- package/dist/esm/src/core/auth.js.map +1 -1
- package/dist/esm/src/core/dwn-constant.js +7 -7
- package/dist/esm/src/core/dwn-constant.js.map +1 -1
- package/dist/esm/src/core/dwn-error.js +1 -0
- package/dist/esm/src/core/dwn-error.js.map +1 -1
- package/dist/esm/src/core/grant-authorization.js +37 -52
- package/dist/esm/src/core/grant-authorization.js.map +1 -1
- package/dist/esm/src/core/message.js +85 -116
- package/dist/esm/src/core/message.js.map +1 -1
- package/dist/esm/src/core/messages-grant-authorization.js +63 -78
- package/dist/esm/src/core/messages-grant-authorization.js.map +1 -1
- package/dist/esm/src/core/protocol-authorization-action.js +266 -0
- package/dist/esm/src/core/protocol-authorization-action.js.map +1 -0
- package/dist/esm/src/core/protocol-authorization-validation.js +254 -0
- package/dist/esm/src/core/protocol-authorization-validation.js.map +1 -0
- package/dist/esm/src/core/protocol-authorization.js +122 -740
- package/dist/esm/src/core/protocol-authorization.js.map +1 -1
- package/dist/esm/src/core/protocols-grant-authorization.js +24 -38
- package/dist/esm/src/core/protocols-grant-authorization.js.map +1 -1
- package/dist/esm/src/core/record-chain.js +64 -0
- package/dist/esm/src/core/record-chain.js.map +1 -0
- package/dist/esm/src/core/records-grant-authorization.js +55 -72
- package/dist/esm/src/core/records-grant-authorization.js.map +1 -1
- package/dist/esm/src/core/resumable-task-manager.js +50 -65
- package/dist/esm/src/core/resumable-task-manager.js.map +1 -1
- package/dist/esm/src/core/tenant-gate.js +2 -13
- package/dist/esm/src/core/tenant-gate.js.map +1 -1
- package/dist/esm/src/dwn.js +69 -86
- package/dist/esm/src/dwn.js.map +1 -1
- package/dist/esm/src/event-stream/event-emitter-stream.js +17 -31
- package/dist/esm/src/event-stream/event-emitter-stream.js.map +1 -1
- package/dist/esm/src/handlers/messages-read.js +67 -77
- package/dist/esm/src/handlers/messages-read.js.map +1 -1
- package/dist/esm/src/handlers/messages-subscribe.js +51 -61
- package/dist/esm/src/handlers/messages-subscribe.js.map +1 -1
- package/dist/esm/src/handlers/messages-sync.js +75 -85
- package/dist/esm/src/handlers/messages-sync.js.map +1 -1
- package/dist/esm/src/handlers/protocols-configure.js +135 -155
- package/dist/esm/src/handlers/protocols-configure.js.map +1 -1
- package/dist/esm/src/handlers/protocols-query.js +52 -51
- package/dist/esm/src/handlers/protocols-query.js.map +1 -1
- package/dist/esm/src/handlers/records-count.js +96 -82
- package/dist/esm/src/handlers/records-count.js.map +1 -1
- package/dist/esm/src/handlers/records-delete.js +78 -88
- package/dist/esm/src/handlers/records-delete.js.map +1 -1
- package/dist/esm/src/handlers/records-query.js +116 -101
- package/dist/esm/src/handlers/records-query.js.map +1 -1
- package/dist/esm/src/handlers/records-read.js +124 -131
- package/dist/esm/src/handlers/records-read.js.map +1 -1
- package/dist/esm/src/handlers/records-subscribe.js +150 -103
- package/dist/esm/src/handlers/records-subscribe.js.map +1 -1
- package/dist/esm/src/handlers/records-write.js +250 -259
- package/dist/esm/src/handlers/records-write.js.map +1 -1
- package/dist/esm/src/interfaces/messages-read.js +24 -32
- package/dist/esm/src/interfaces/messages-read.js.map +1 -1
- package/dist/esm/src/interfaces/messages-subscribe.js +27 -41
- package/dist/esm/src/interfaces/messages-subscribe.js.map +1 -1
- package/dist/esm/src/interfaces/messages-sync.js +26 -40
- package/dist/esm/src/interfaces/messages-sync.js.map +1 -1
- package/dist/esm/src/interfaces/protocols-configure.js +63 -63
- package/dist/esm/src/interfaces/protocols-configure.js.map +1 -1
- package/dist/esm/src/interfaces/protocols-query.js +55 -68
- package/dist/esm/src/interfaces/protocols-query.js.map +1 -1
- package/dist/esm/src/interfaces/records-count.js +50 -66
- package/dist/esm/src/interfaces/records-count.js.map +1 -1
- package/dist/esm/src/interfaces/records-delete.js +45 -55
- package/dist/esm/src/interfaces/records-delete.js.map +1 -1
- package/dist/esm/src/interfaces/records-query.js +60 -76
- package/dist/esm/src/interfaces/records-query.js.map +1 -1
- package/dist/esm/src/interfaces/records-read.js +51 -67
- package/dist/esm/src/interfaces/records-read.js.map +1 -1
- package/dist/esm/src/interfaces/records-subscribe.js +52 -68
- package/dist/esm/src/interfaces/records-subscribe.js.map +1 -1
- package/dist/esm/src/interfaces/records-write-query.js +102 -0
- package/dist/esm/src/interfaces/records-write-query.js.map +1 -0
- package/dist/esm/src/interfaces/records-write-signing.js +92 -0
- package/dist/esm/src/interfaces/records-write-signing.js.map +1 -0
- package/dist/esm/src/interfaces/records-write.js +407 -602
- package/dist/esm/src/interfaces/records-write.js.map +1 -1
- package/dist/esm/src/jose/algorithms/signing/ed25519.js +10 -19
- package/dist/esm/src/jose/algorithms/signing/ed25519.js.map +1 -1
- package/dist/esm/src/jose/jws/general/builder.js +23 -35
- package/dist/esm/src/jose/jws/general/builder.js.map +1 -1
- package/dist/esm/src/jose/jws/general/verifier.js +56 -69
- package/dist/esm/src/jose/jws/general/verifier.js.map +1 -1
- package/dist/esm/src/protocols/permission-grant.js +44 -15
- package/dist/esm/src/protocols/permission-grant.js.map +1 -1
- package/dist/esm/src/protocols/permission-request.js +29 -15
- package/dist/esm/src/protocols/permission-request.js.map +1 -1
- package/dist/esm/src/protocols/permissions.js +216 -226
- package/dist/esm/src/protocols/permissions.js.map +1 -1
- package/dist/esm/src/smt/smt-store-level.js +42 -64
- package/dist/esm/src/smt/smt-store-level.js.map +1 -1
- package/dist/esm/src/smt/smt-store-memory.js +19 -45
- package/dist/esm/src/smt/smt-store-memory.js.map +1 -1
- package/dist/esm/src/smt/smt-utils.js +28 -45
- package/dist/esm/src/smt/smt-utils.js.map +1 -1
- package/dist/esm/src/smt/sparse-merkle-tree.js +426 -471
- package/dist/esm/src/smt/sparse-merkle-tree.js.map +1 -1
- package/dist/esm/src/state-index/state-index-level.js +115 -150
- package/dist/esm/src/state-index/state-index-level.js.map +1 -1
- package/dist/esm/src/store/blockstore-level.js +54 -156
- package/dist/esm/src/store/blockstore-level.js.map +1 -1
- package/dist/esm/src/store/blockstore-mock.js +48 -153
- package/dist/esm/src/store/blockstore-mock.js.map +1 -1
- package/dist/esm/src/store/data-store-level.js +59 -99
- package/dist/esm/src/store/data-store-level.js.map +1 -1
- package/dist/esm/src/store/index-level-compound.js +246 -0
- package/dist/esm/src/store/index-level-compound.js.map +1 -0
- package/dist/esm/src/store/index-level.js +295 -713
- package/dist/esm/src/store/index-level.js.map +1 -1
- package/dist/esm/src/store/level-wrapper.js +143 -244
- package/dist/esm/src/store/level-wrapper.js.map +1 -1
- package/dist/esm/src/store/message-store-level.js +71 -94
- package/dist/esm/src/store/message-store-level.js.map +1 -1
- package/dist/esm/src/store/resumable-task-store-level.js +62 -101
- package/dist/esm/src/store/resumable-task-store-level.js.map +1 -1
- package/dist/esm/src/store/storage-controller.js +129 -144
- package/dist/esm/src/store/storage-controller.js.map +1 -1
- package/dist/esm/src/utils/abort.js +8 -19
- package/dist/esm/src/utils/abort.js.map +1 -1
- package/dist/esm/src/utils/array.js +15 -49
- package/dist/esm/src/utils/array.js.map +1 -1
- package/dist/esm/src/utils/cid.js +29 -77
- package/dist/esm/src/utils/cid.js.map +1 -1
- package/dist/esm/src/utils/data-stream.js +37 -65
- package/dist/esm/src/utils/data-stream.js.map +1 -1
- package/dist/esm/src/utils/encryption.js +136 -162
- package/dist/esm/src/utils/encryption.js.map +1 -1
- package/dist/esm/src/utils/filter.js +1 -12
- package/dist/esm/src/utils/filter.js.map +1 -1
- package/dist/esm/src/utils/hd-key.js +45 -63
- package/dist/esm/src/utils/hd-key.js.map +1 -1
- package/dist/esm/src/utils/jws.js +9 -20
- package/dist/esm/src/utils/jws.js.map +1 -1
- package/dist/esm/src/utils/memory-cache.js +12 -23
- package/dist/esm/src/utils/memory-cache.js.map +1 -1
- package/dist/esm/src/utils/messages.js +9 -3
- package/dist/esm/src/utils/messages.js.map +1 -1
- package/dist/esm/src/utils/private-key-signer.js +9 -17
- package/dist/esm/src/utils/private-key-signer.js.map +1 -1
- package/dist/esm/src/utils/protocols.js +62 -70
- package/dist/esm/src/utils/protocols.js.map +1 -1
- package/dist/esm/src/utils/records.js +100 -125
- package/dist/esm/src/utils/records.js.map +1 -1
- package/dist/esm/src/utils/secp256k1.js +60 -96
- package/dist/esm/src/utils/secp256k1.js.map +1 -1
- package/dist/esm/src/utils/secp256r1.js +54 -71
- package/dist/esm/src/utils/secp256r1.js.map +1 -1
- package/dist/esm/src/utils/time.js +5 -18
- package/dist/esm/src/utils/time.js.map +1 -1
- package/dist/esm/src/utils/url.js +3 -3
- package/dist/esm/src/utils/url.js.map +1 -1
- package/dist/esm/tests/core/auth.spec.js +3 -12
- package/dist/esm/tests/core/auth.spec.js.map +1 -1
- package/dist/esm/tests/core/message.spec.js +50 -59
- package/dist/esm/tests/core/message.spec.js.map +1 -1
- package/dist/esm/tests/core/protocol-authorization.spec.js +9 -18
- package/dist/esm/tests/core/protocol-authorization.spec.js.map +1 -1
- package/dist/esm/tests/dwn.spec.js +45 -58
- package/dist/esm/tests/dwn.spec.js.map +1 -1
- package/dist/esm/tests/event-stream/event-emitter-stream.spec.js +24 -33
- package/dist/esm/tests/event-stream/event-emitter-stream.spec.js.map +1 -1
- package/dist/esm/tests/event-stream/event-stream.spec.js +46 -55
- package/dist/esm/tests/event-stream/event-stream.spec.js.map +1 -1
- package/dist/esm/tests/features/author-delegated-grant.spec.js +326 -343
- package/dist/esm/tests/features/author-delegated-grant.spec.js.map +1 -1
- package/dist/esm/tests/features/owner-delegated-grant.spec.js +153 -169
- package/dist/esm/tests/features/owner-delegated-grant.spec.js.map +1 -1
- package/dist/esm/tests/features/owner-signature.spec.js +67 -78
- package/dist/esm/tests/features/owner-signature.spec.js.map +1 -1
- package/dist/esm/tests/features/permissions.spec.js +446 -181
- package/dist/esm/tests/features/permissions.spec.js.map +1 -1
- package/dist/esm/tests/features/protocol-composition.spec.js +346 -356
- package/dist/esm/tests/features/protocol-composition.spec.js.map +1 -1
- package/dist/esm/tests/features/protocol-create-action.spec.js +42 -51
- package/dist/esm/tests/features/protocol-create-action.spec.js.map +1 -1
- package/dist/esm/tests/features/protocol-delete-action.spec.js +94 -103
- package/dist/esm/tests/features/protocol-delete-action.spec.js.map +1 -1
- package/dist/esm/tests/features/protocol-update-action.spec.js +105 -114
- package/dist/esm/tests/features/protocol-update-action.spec.js.map +1 -1
- package/dist/esm/tests/features/records-prune.spec.js +175 -191
- package/dist/esm/tests/features/records-prune.spec.js.map +1 -1
- package/dist/esm/tests/features/records-tags.spec.js +441 -460
- package/dist/esm/tests/features/records-tags.spec.js.map +1 -1
- package/dist/esm/tests/features/resumable-tasks.spec.js +82 -91
- package/dist/esm/tests/features/resumable-tasks.spec.js.map +1 -1
- package/dist/esm/tests/handlers/messages-read.spec.js +206 -207
- package/dist/esm/tests/handlers/messages-read.spec.js.map +1 -1
- package/dist/esm/tests/handlers/messages-subscribe.spec.js +145 -154
- package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -1
- package/dist/esm/tests/handlers/messages-sync.spec.js +174 -183
- package/dist/esm/tests/handlers/messages-sync.spec.js.map +1 -1
- package/dist/esm/tests/handlers/protocols-configure.spec.js +244 -238
- package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -1
- package/dist/esm/tests/handlers/protocols-query.spec.js +156 -169
- package/dist/esm/tests/handlers/protocols-query.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-count.spec.js +93 -102
- package/dist/esm/tests/handlers/records-count.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-delete.spec.js +252 -264
- package/dist/esm/tests/handlers/records-delete.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-query.spec.js +917 -988
- package/dist/esm/tests/handlers/records-query.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-read.spec.js +549 -564
- package/dist/esm/tests/handlers/records-read.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-subscribe.spec.js +269 -278
- package/dist/esm/tests/handlers/records-subscribe.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-write.spec.js +1057 -1082
- package/dist/esm/tests/handlers/records-write.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/messages-get.spec.js +39 -48
- package/dist/esm/tests/interfaces/messages-get.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/messages-subscribe.spec.js +4 -13
- package/dist/esm/tests/interfaces/messages-subscribe.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/protocols-configure.spec.js +212 -88
- package/dist/esm/tests/interfaces/protocols-configure.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/protocols-query.spec.js +8 -17
- package/dist/esm/tests/interfaces/protocols-query.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/records-delete.spec.js +8 -17
- package/dist/esm/tests/interfaces/records-delete.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/records-query.spec.js +20 -29
- package/dist/esm/tests/interfaces/records-query.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/records-read.spec.js +42 -51
- package/dist/esm/tests/interfaces/records-read.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/records-subscribe.spec.js +16 -25
- package/dist/esm/tests/interfaces/records-subscribe.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/records-write.spec.js +152 -165
- package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -1
- package/dist/esm/tests/jose/jws/general.spec.js +36 -45
- package/dist/esm/tests/jose/jws/general.spec.js.map +1 -1
- package/dist/esm/tests/protocols/permission-grant.spec.js +44 -50
- package/dist/esm/tests/protocols/permission-grant.spec.js.map +1 -1
- package/dist/esm/tests/protocols/permission-request.spec.js +23 -32
- package/dist/esm/tests/protocols/permission-request.spec.js.map +1 -1
- package/dist/esm/tests/protocols/permissions.spec.js +49 -55
- package/dist/esm/tests/protocols/permissions.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/aggregator.spec.js +124 -135
- package/dist/esm/tests/scenarios/aggregator.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/deleted-record.spec.js +23 -32
- package/dist/esm/tests/scenarios/deleted-record.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/end-to-end-tests.spec.js +52 -61
- package/dist/esm/tests/scenarios/end-to-end-tests.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/nested-roles.spec.js +63 -73
- package/dist/esm/tests/scenarios/nested-roles.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/subscriptions.spec.js +377 -333
- package/dist/esm/tests/scenarios/subscriptions.spec.js.map +1 -1
- package/dist/esm/tests/smt/smt-store-level.spec.js +76 -87
- package/dist/esm/tests/smt/smt-store-level.spec.js.map +1 -1
- package/dist/esm/tests/smt/sparse-merkle-tree.spec.js +344 -353
- package/dist/esm/tests/smt/sparse-merkle-tree.spec.js.map +1 -1
- package/dist/esm/tests/state-index/state-index-level.spec.js +117 -126
- package/dist/esm/tests/state-index/state-index-level.spec.js.map +1 -1
- package/dist/esm/tests/store/blockstore-level.spec.js +44 -99
- package/dist/esm/tests/store/blockstore-level.spec.js.map +1 -1
- package/dist/esm/tests/store/blockstore-mock.spec.js +40 -120
- package/dist/esm/tests/store/blockstore-mock.spec.js.map +1 -1
- package/dist/esm/tests/store/data-store-level.spec.js +86 -95
- package/dist/esm/tests/store/data-store-level.spec.js.map +1 -1
- package/dist/esm/tests/store/index-level.spec.js +404 -414
- package/dist/esm/tests/store/index-level.spec.js.map +1 -1
- package/dist/esm/tests/store/message-store-level.spec.js +13 -22
- package/dist/esm/tests/store/message-store-level.spec.js.map +1 -1
- package/dist/esm/tests/store/message-store.spec.js +229 -238
- package/dist/esm/tests/store/message-store.spec.js.map +1 -1
- package/dist/esm/tests/test-event-stream.js +3 -3
- package/dist/esm/tests/test-event-stream.js.map +1 -1
- package/dist/esm/tests/test-stores.js +16 -13
- package/dist/esm/tests/test-stores.js.map +1 -1
- package/dist/esm/tests/test-suite.js +2 -11
- package/dist/esm/tests/test-suite.js.map +1 -1
- package/dist/esm/tests/utils/cid.spec.js +24 -33
- package/dist/esm/tests/utils/cid.spec.js.map +1 -1
- package/dist/esm/tests/utils/data-stream.spec.js +48 -57
- package/dist/esm/tests/utils/data-stream.spec.js.map +1 -1
- package/dist/esm/tests/utils/encryption-callbacks.spec.js +45 -54
- package/dist/esm/tests/utils/encryption-callbacks.spec.js.map +1 -1
- package/dist/esm/tests/utils/encryption.spec.js +229 -82
- package/dist/esm/tests/utils/encryption.spec.js.map +1 -1
- package/dist/esm/tests/utils/filters.spec.js +46 -55
- package/dist/esm/tests/utils/filters.spec.js.map +1 -1
- package/dist/esm/tests/utils/hd-key.spec.js +10 -19
- package/dist/esm/tests/utils/hd-key.spec.js.map +1 -1
- package/dist/esm/tests/utils/jws.spec.js +3 -12
- package/dist/esm/tests/utils/jws.spec.js.map +1 -1
- package/dist/esm/tests/utils/memory-cache.spec.js +9 -18
- package/dist/esm/tests/utils/memory-cache.spec.js.map +1 -1
- package/dist/esm/tests/utils/messages.spec.js +6 -15
- package/dist/esm/tests/utils/messages.spec.js.map +1 -1
- package/dist/esm/tests/utils/poller.js +22 -33
- package/dist/esm/tests/utils/poller.js.map +1 -1
- package/dist/esm/tests/utils/private-key-signer.spec.js +15 -24
- package/dist/esm/tests/utils/private-key-signer.spec.js.map +1 -1
- package/dist/esm/tests/utils/records.spec.js +10 -19
- package/dist/esm/tests/utils/records.spec.js.map +1 -1
- package/dist/esm/tests/utils/secp256k1.spec.js +16 -25
- package/dist/esm/tests/utils/secp256k1.spec.js.map +1 -1
- package/dist/esm/tests/utils/secp256r1.spec.js +18 -27
- package/dist/esm/tests/utils/secp256r1.spec.js.map +1 -1
- package/dist/esm/tests/utils/test-data-generator.js +414 -468
- package/dist/esm/tests/utils/test-data-generator.js.map +1 -1
- package/dist/esm/tests/validation/json-schemas/definitions.spec.js +2 -11
- package/dist/esm/tests/validation/json-schemas/definitions.spec.js.map +1 -1
- package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js +4 -13
- package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js.map +1 -1
- package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js +8 -17
- package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js.map +1 -1
- package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js +3 -12
- package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js.map +1 -1
- package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js +4 -13
- package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js.map +1 -1
- package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js +2 -11
- package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js.map +1 -1
- package/dist/esm/tests/validation/json-schemas/records/records-read.spec.js +2 -11
- package/dist/esm/tests/validation/json-schemas/records/records-read.spec.js.map +1 -1
- package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js +7 -16
- package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js.map +1 -1
- package/dist/types/src/core/protocol-authorization-action.d.ts +42 -0
- package/dist/types/src/core/protocol-authorization-action.d.ts.map +1 -0
- package/dist/types/src/core/protocol-authorization-validation.d.ts +60 -0
- package/dist/types/src/core/protocol-authorization-validation.d.ts.map +1 -0
- package/dist/types/src/core/protocol-authorization.d.ts +10 -100
- package/dist/types/src/core/protocol-authorization.d.ts.map +1 -1
- package/dist/types/src/core/record-chain.d.ts +24 -0
- package/dist/types/src/core/record-chain.d.ts.map +1 -0
- package/dist/types/src/handlers/records-write.d.ts +2 -1
- package/dist/types/src/handlers/records-write.d.ts.map +1 -1
- package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -1
- package/dist/types/src/interfaces/records-write-query.d.ts +33 -0
- package/dist/types/src/interfaces/records-write-query.d.ts.map +1 -0
- package/dist/types/src/interfaces/records-write-signing.d.ts +35 -0
- package/dist/types/src/interfaces/records-write-signing.d.ts.map +1 -0
- package/dist/types/src/interfaces/records-write.d.ts +10 -44
- package/dist/types/src/interfaces/records-write.d.ts.map +1 -1
- package/dist/types/src/store/index-level-compound.d.ts +70 -0
- package/dist/types/src/store/index-level-compound.d.ts.map +1 -0
- package/dist/types/src/store/index-level.d.ts +0 -58
- package/dist/types/src/store/index-level.d.ts.map +1 -1
- package/dist/types/src/utils/protocols.d.ts +5 -0
- package/dist/types/src/utils/protocols.d.ts.map +1 -1
- package/dist/types/tests/features/permissions.spec.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/core/protocol-authorization-action.ts +377 -0
- package/src/core/protocol-authorization-validation.ts +391 -0
- package/src/core/protocol-authorization.ts +60 -849
- package/src/core/record-chain.ts +99 -0
- package/src/handlers/records-read.ts +1 -1
- package/src/handlers/records-write.ts +37 -21
- package/src/interfaces/protocols-configure.ts +33 -5
- package/src/interfaces/records-write-query.ts +139 -0
- package/src/interfaces/records-write-signing.ts +143 -0
- package/src/interfaces/records-write.ts +49 -221
- package/src/store/index-level-compound.ts +324 -0
- package/src/store/index-level.ts +24 -306
- package/src/utils/protocols.ts +8 -0
- package/src/utils/records.ts +1 -1
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { concatBytes } from '@noble/ciphers/utils';
|
|
11
2
|
import { Encoder } from './encoder.js';
|
|
12
3
|
import { KeyDerivationScheme } from './hd-key.js';
|
|
@@ -44,80 +35,72 @@ export class Encryption {
|
|
|
44
35
|
* Encrypts data using an AEAD cipher (A256GCM or XC20P).
|
|
45
36
|
* Returns ciphertext with the authentication tag appended.
|
|
46
37
|
*/
|
|
47
|
-
static aeadEncrypt(algorithm, keyBytes, iv, plaintext) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
});
|
|
38
|
+
static async aeadEncrypt(algorithm, keyBytes, iv, plaintext) {
|
|
39
|
+
if (algorithm === ContentEncryptionAlgorithm.A256GCM) {
|
|
40
|
+
const keyJwk = { kty: 'oct', k: Encoder.bytesToBase64Url(keyBytes), alg: 'A256GCM' };
|
|
41
|
+
// Web Crypto AES-GCM returns ciphertext || tag
|
|
42
|
+
const combined = await AesGcm.encrypt({ data: plaintext, iv, key: keyJwk });
|
|
43
|
+
const ciphertext = combined.slice(0, combined.length - AES_GCM_TAG_LENGTH_BYTES);
|
|
44
|
+
const tag = combined.slice(combined.length - AES_GCM_TAG_LENGTH_BYTES);
|
|
45
|
+
return { ciphertext, tag };
|
|
46
|
+
}
|
|
47
|
+
else if (algorithm === ContentEncryptionAlgorithm.XC20P) {
|
|
48
|
+
// @noble/ciphers XChaCha20-Poly1305 returns ciphertext || tag
|
|
49
|
+
const combined = await XChaCha20Poly1305.encryptRaw({ data: plaintext, keyBytes, nonce: iv });
|
|
50
|
+
const ciphertext = combined.slice(0, combined.length - POLY1305_TAG_LENGTH_BYTES);
|
|
51
|
+
const tag = combined.slice(combined.length - POLY1305_TAG_LENGTH_BYTES);
|
|
52
|
+
return { ciphertext, tag };
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
throw new Error(`Unsupported content encryption algorithm: ${algorithm}`);
|
|
56
|
+
}
|
|
68
57
|
}
|
|
69
58
|
/**
|
|
70
59
|
* Decrypts data using an AEAD cipher (A256GCM or XC20P).
|
|
71
60
|
* Expects ciphertext and tag as separate inputs.
|
|
72
61
|
*/
|
|
73
|
-
static aeadDecrypt(algorithm, keyBytes, iv, ciphertext, tag) {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
});
|
|
62
|
+
static async aeadDecrypt(algorithm, keyBytes, iv, ciphertext, tag) {
|
|
63
|
+
// Both Web Crypto (AES-GCM) and @noble/ciphers (XChaCha20-Poly1305) expect ciphertext || tag
|
|
64
|
+
const combined = concatBytes(ciphertext, tag);
|
|
65
|
+
if (algorithm === ContentEncryptionAlgorithm.A256GCM) {
|
|
66
|
+
const keyJwk = { kty: 'oct', k: Encoder.bytesToBase64Url(keyBytes), alg: 'A256GCM' };
|
|
67
|
+
return AesGcm.decrypt({ data: combined, iv, key: keyJwk });
|
|
68
|
+
}
|
|
69
|
+
else if (algorithm === ContentEncryptionAlgorithm.XC20P) {
|
|
70
|
+
return XChaCha20Poly1305.decryptRaw({ data: combined, keyBytes, nonce: iv });
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
throw new Error(`Unsupported content encryption algorithm: ${algorithm}`);
|
|
74
|
+
}
|
|
88
75
|
}
|
|
89
76
|
/**
|
|
90
77
|
* Encrypts data as a ReadableStream using an AEAD cipher.
|
|
91
78
|
* Collects all chunks, encrypts, and returns a new stream of ciphertext || tag.
|
|
92
79
|
* The iv and tag are NOT embedded in the stream — they are stored in the JWE structure.
|
|
93
80
|
*/
|
|
94
|
-
static aeadEncryptStream(algorithm, keyBytes, iv, plaintextStream) {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
return { ciphertextStream, tag };
|
|
81
|
+
static async aeadEncryptStream(algorithm, keyBytes, iv, plaintextStream) {
|
|
82
|
+
const plaintext = await Encryption.readStream(plaintextStream);
|
|
83
|
+
const { ciphertext, tag } = await Encryption.aeadEncrypt(algorithm, keyBytes, iv, plaintext);
|
|
84
|
+
const ciphertextStream = new ReadableStream({
|
|
85
|
+
start(controller) {
|
|
86
|
+
controller.enqueue(ciphertext);
|
|
87
|
+
controller.close();
|
|
88
|
+
}
|
|
105
89
|
});
|
|
90
|
+
return { ciphertextStream, tag };
|
|
106
91
|
}
|
|
107
92
|
/**
|
|
108
93
|
* Decrypts a ciphertext stream using an AEAD cipher.
|
|
109
94
|
* Returns a ReadableStream of plaintext.
|
|
110
95
|
*/
|
|
111
|
-
static aeadDecryptStream(algorithm, keyBytes, iv, ciphertextStream, tag) {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
});
|
|
96
|
+
static async aeadDecryptStream(algorithm, keyBytes, iv, ciphertextStream, tag) {
|
|
97
|
+
const ciphertext = await Encryption.readStream(ciphertextStream);
|
|
98
|
+
const plaintext = await Encryption.aeadDecrypt(algorithm, keyBytes, iv, ciphertext, tag);
|
|
99
|
+
return new ReadableStream({
|
|
100
|
+
start(controller) {
|
|
101
|
+
controller.enqueue(plaintext);
|
|
102
|
+
controller.close();
|
|
103
|
+
}
|
|
121
104
|
});
|
|
122
105
|
}
|
|
123
106
|
/**
|
|
@@ -128,30 +111,28 @@ export class Encryption {
|
|
|
128
111
|
* @param cek - The Content Encryption Key to wrap.
|
|
129
112
|
* @returns The wrapped CEK bytes.
|
|
130
113
|
*/
|
|
131
|
-
static ecdhEsWrapKey(ephemeralPrivateKey, recipientPublicKey, cek) {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
},
|
|
148
|
-
});
|
|
149
|
-
// 3. AES-256 Key Wrap
|
|
150
|
-
const cekJwk = { kty: 'oct', k: Encoder.bytesToBase64Url(cek), alg: 'A256GCM' };
|
|
151
|
-
const kekJwk = { kty: 'oct', k: Encoder.bytesToBase64Url(kek), alg: 'A256KW' };
|
|
152
|
-
const wrappedKey = yield AesKw.wrapKey({ unwrappedKey: cekJwk, encryptionKey: kekJwk });
|
|
153
|
-
return wrappedKey;
|
|
114
|
+
static async ecdhEsWrapKey(ephemeralPrivateKey, recipientPublicKey, cek) {
|
|
115
|
+
// 1. ECDH shared secret
|
|
116
|
+
const sharedSecret = await X25519.sharedSecret({
|
|
117
|
+
privateKeyA: ephemeralPrivateKey,
|
|
118
|
+
publicKeyB: recipientPublicKey,
|
|
119
|
+
});
|
|
120
|
+
// 2. Derive KEK via Concat KDF (RFC 7518 Section 4.6.2)
|
|
121
|
+
const kek = await ConcatKdf.deriveKey({
|
|
122
|
+
sharedSecret,
|
|
123
|
+
keyDataLen: 256,
|
|
124
|
+
fixedInfo: {
|
|
125
|
+
algorithmId: 'A256KW',
|
|
126
|
+
partyUInfo: '',
|
|
127
|
+
partyVInfo: '',
|
|
128
|
+
suppPubInfo: 256,
|
|
129
|
+
},
|
|
154
130
|
});
|
|
131
|
+
// 3. AES-256 Key Wrap
|
|
132
|
+
const cekJwk = { kty: 'oct', k: Encoder.bytesToBase64Url(cek), alg: 'A256GCM' };
|
|
133
|
+
const kekJwk = { kty: 'oct', k: Encoder.bytesToBase64Url(kek), alg: 'A256KW' };
|
|
134
|
+
const wrappedKey = await AesKw.wrapKey({ unwrappedKey: cekJwk, encryptionKey: kekJwk });
|
|
135
|
+
return wrappedKey;
|
|
155
136
|
}
|
|
156
137
|
/**
|
|
157
138
|
* Performs ECDH-ES key agreement with X25519 and unwraps the CEK using AES-256 Key Unwrap.
|
|
@@ -161,33 +142,31 @@ export class Encryption {
|
|
|
161
142
|
* @param wrappedKey - The wrapped CEK bytes.
|
|
162
143
|
* @returns The unwrapped CEK bytes.
|
|
163
144
|
*/
|
|
164
|
-
static ecdhEsUnwrapKey(recipientPrivateKey, ephemeralPublicKey, wrappedKey) {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
publicKeyB: ephemeralPublicKey,
|
|
170
|
-
});
|
|
171
|
-
// 2. Derive KEK via Concat KDF
|
|
172
|
-
const kek = yield ConcatKdf.deriveKey({
|
|
173
|
-
sharedSecret,
|
|
174
|
-
keyDataLen: 256,
|
|
175
|
-
fixedInfo: {
|
|
176
|
-
algorithmId: 'A256KW',
|
|
177
|
-
partyUInfo: '',
|
|
178
|
-
partyVInfo: '',
|
|
179
|
-
suppPubInfo: 256,
|
|
180
|
-
},
|
|
181
|
-
});
|
|
182
|
-
// 3. AES-256 Key Unwrap
|
|
183
|
-
const kekJwk = { kty: 'oct', k: Encoder.bytesToBase64Url(kek), alg: 'A256KW' };
|
|
184
|
-
const unwrappedJwk = yield AesKw.unwrapKey({
|
|
185
|
-
wrappedKeyBytes: wrappedKey,
|
|
186
|
-
wrappedKeyAlgorithm: 'A256GCM',
|
|
187
|
-
decryptionKey: kekJwk,
|
|
188
|
-
});
|
|
189
|
-
return Encoder.base64UrlToBytes(unwrappedJwk.k);
|
|
145
|
+
static async ecdhEsUnwrapKey(recipientPrivateKey, ephemeralPublicKey, wrappedKey) {
|
|
146
|
+
// 1. ECDH shared secret
|
|
147
|
+
const sharedSecret = await X25519.sharedSecret({
|
|
148
|
+
privateKeyA: recipientPrivateKey,
|
|
149
|
+
publicKeyB: ephemeralPublicKey,
|
|
190
150
|
});
|
|
151
|
+
// 2. Derive KEK via Concat KDF
|
|
152
|
+
const kek = await ConcatKdf.deriveKey({
|
|
153
|
+
sharedSecret,
|
|
154
|
+
keyDataLen: 256,
|
|
155
|
+
fixedInfo: {
|
|
156
|
+
algorithmId: 'A256KW',
|
|
157
|
+
partyUInfo: '',
|
|
158
|
+
partyVInfo: '',
|
|
159
|
+
suppPubInfo: 256,
|
|
160
|
+
},
|
|
161
|
+
});
|
|
162
|
+
// 3. AES-256 Key Unwrap
|
|
163
|
+
const kekJwk = { kty: 'oct', k: Encoder.bytesToBase64Url(kek), alg: 'A256KW' };
|
|
164
|
+
const unwrappedJwk = await AesKw.unwrapKey({
|
|
165
|
+
wrappedKeyBytes: wrappedKey,
|
|
166
|
+
wrappedKeyAlgorithm: 'A256GCM',
|
|
167
|
+
decryptionKey: kekJwk,
|
|
168
|
+
});
|
|
169
|
+
return Encoder.base64UrlToBytes(unwrappedJwk.k);
|
|
191
170
|
}
|
|
192
171
|
/**
|
|
193
172
|
* Builds a JWE encryption property structure from encryption input.
|
|
@@ -197,43 +176,40 @@ export class Encryption {
|
|
|
197
176
|
* @param encryptionInput - Describes the CEK, IV, and recipient key encryption inputs.
|
|
198
177
|
* @param tag - The authentication tag produced by the AEAD cipher during data encryption.
|
|
199
178
|
*/
|
|
200
|
-
static buildJwe(encryptionInput, tag) {
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
179
|
+
static async buildJwe(encryptionInput, tag) {
|
|
180
|
+
const enc = encryptionInput.algorithm ?? ContentEncryptionAlgorithm.A256GCM;
|
|
181
|
+
const protectedHeader = {
|
|
182
|
+
alg: KeyAgreementAlgorithm.EcdhEsA256kw,
|
|
183
|
+
enc,
|
|
184
|
+
};
|
|
185
|
+
const protectedHeaderBase64url = Encoder.stringToBase64Url(JSON.stringify(protectedHeader));
|
|
186
|
+
const recipients = [];
|
|
187
|
+
for (const keyInput of encryptionInput.keyEncryptionInputs) {
|
|
188
|
+
// Generate ephemeral X25519 key pair for each recipient
|
|
189
|
+
const ephemeralPrivateKey = await X25519.generateKey();
|
|
190
|
+
const ephemeralPublicKey = await X25519.getPublicKey({ key: ephemeralPrivateKey });
|
|
191
|
+
// Wrap the CEK
|
|
192
|
+
const wrappedKey = await Encryption.ecdhEsWrapKey(ephemeralPrivateKey, keyInput.publicKey, encryptionInput.key);
|
|
193
|
+
const recipientHeader = {
|
|
194
|
+
kid: keyInput.publicKeyId,
|
|
195
|
+
epk: ephemeralPublicKey,
|
|
196
|
+
derivationScheme: keyInput.derivationScheme,
|
|
207
197
|
};
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
// Generate ephemeral X25519 key pair for each recipient
|
|
212
|
-
const ephemeralPrivateKey = yield X25519.generateKey();
|
|
213
|
-
const ephemeralPublicKey = yield X25519.getPublicKey({ key: ephemeralPrivateKey });
|
|
214
|
-
// Wrap the CEK
|
|
215
|
-
const wrappedKey = yield Encryption.ecdhEsWrapKey(ephemeralPrivateKey, keyInput.publicKey, encryptionInput.key);
|
|
216
|
-
const recipientHeader = {
|
|
217
|
-
kid: keyInput.publicKeyId,
|
|
218
|
-
epk: ephemeralPublicKey,
|
|
219
|
-
derivationScheme: keyInput.derivationScheme,
|
|
220
|
-
};
|
|
221
|
-
// Attach derived public key for protocolContext scheme
|
|
222
|
-
if (keyInput.derivationScheme === KeyDerivationScheme.ProtocolContext) {
|
|
223
|
-
recipientHeader.derivedPublicKey = keyInput.publicKey;
|
|
224
|
-
}
|
|
225
|
-
recipients.push({
|
|
226
|
-
header: recipientHeader,
|
|
227
|
-
encrypted_key: Encoder.bytesToBase64Url(wrappedKey),
|
|
228
|
-
});
|
|
198
|
+
// Attach derived public key for protocolContext scheme
|
|
199
|
+
if (keyInput.derivationScheme === KeyDerivationScheme.ProtocolContext) {
|
|
200
|
+
recipientHeader.derivedPublicKey = keyInput.publicKey;
|
|
229
201
|
}
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
202
|
+
recipients.push({
|
|
203
|
+
header: recipientHeader,
|
|
204
|
+
encrypted_key: Encoder.bytesToBase64Url(wrappedKey),
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
return {
|
|
208
|
+
protected: protectedHeaderBase64url,
|
|
209
|
+
iv: Encoder.bytesToBase64Url(encryptionInput.initializationVector),
|
|
210
|
+
tag: Encoder.bytesToBase64Url(tag),
|
|
211
|
+
recipients,
|
|
212
|
+
};
|
|
237
213
|
}
|
|
238
214
|
/**
|
|
239
215
|
* Parses the JWE protected header from its base64url encoding.
|
|
@@ -244,19 +220,17 @@ export class Encryption {
|
|
|
244
220
|
/**
|
|
245
221
|
* Reads a ReadableStream to completion and returns all bytes concatenated.
|
|
246
222
|
*/
|
|
247
|
-
static readStream(stream) {
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
break;
|
|
255
|
-
}
|
|
256
|
-
chunks.push(value);
|
|
223
|
+
static async readStream(stream) {
|
|
224
|
+
const reader = stream.getReader();
|
|
225
|
+
const chunks = [];
|
|
226
|
+
for (;;) {
|
|
227
|
+
const { done, value } = await reader.read();
|
|
228
|
+
if (done) {
|
|
229
|
+
break;
|
|
257
230
|
}
|
|
258
|
-
|
|
259
|
-
}
|
|
231
|
+
chunks.push(value);
|
|
232
|
+
}
|
|
233
|
+
return concatBytes(...chunks);
|
|
260
234
|
}
|
|
261
235
|
}
|
|
262
236
|
//# sourceMappingURL=encryption.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encryption.js","sourceRoot":"","sources":["../../../../src/utils/encryption.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"encryption.js","sourceRoot":"","sources":["../../../../src/utils/encryption.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
-
var t = {};
|
|
3
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
-
t[p] = s[p];
|
|
5
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
-
t[p[i]] = s[p[i]];
|
|
9
|
-
}
|
|
10
|
-
return t;
|
|
11
|
-
};
|
|
12
1
|
/**
|
|
13
2
|
* A Utility class to help match indexes against filters.
|
|
14
3
|
*/
|
|
@@ -193,7 +182,7 @@ export class FilterSelector {
|
|
|
193
182
|
return filter;
|
|
194
183
|
}
|
|
195
184
|
// else there is are least 2 filter properties, since zero property is not allowed
|
|
196
|
-
const { recordId, attester, parentId, recipient, contextId, author, protocolPath, schema, protocol
|
|
185
|
+
const { recordId, attester, parentId, recipient, contextId, author, protocolPath, schema, protocol, ...remainingProperties } = filter;
|
|
197
186
|
if (recordId !== undefined) {
|
|
198
187
|
return { recordId };
|
|
199
188
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../../src/utils/filter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../../src/utils/filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { Encoder } from './encoder.js';
|
|
11
2
|
import { getWebcryptoSubtle } from '@noble/ciphers/webcrypto';
|
|
12
3
|
import { X25519 } from '@enbox/crypto';
|
|
@@ -32,73 +23,64 @@ export class HdKey {
|
|
|
32
23
|
* Derives a descendant private key.
|
|
33
24
|
* Uses X25519 keys for encryption key derivation.
|
|
34
25
|
*/
|
|
35
|
-
static derivePrivateKey(ancestorKey, subDerivationPath) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
};
|
|
48
|
-
return derivedDescendantPrivateKey;
|
|
49
|
-
});
|
|
26
|
+
static async derivePrivateKey(ancestorKey, subDerivationPath) {
|
|
27
|
+
const ancestorPrivateKey = await X25519.privateKeyToBytes({ privateKey: ancestorKey.derivedPrivateKey });
|
|
28
|
+
const ancestorPrivateKeyDerivationPath = ancestorKey.derivationPath ?? [];
|
|
29
|
+
const derivedPrivateKeyBytes = await HdKey.derivePrivateKeyBytes(ancestorPrivateKey, subDerivationPath);
|
|
30
|
+
const derivedPrivateKeyJwk = await X25519.bytesToPrivateKey({ privateKeyBytes: derivedPrivateKeyBytes });
|
|
31
|
+
const derivedDescendantPrivateKey = {
|
|
32
|
+
rootKeyId: ancestorKey.rootKeyId,
|
|
33
|
+
derivationScheme: ancestorKey.derivationScheme,
|
|
34
|
+
derivationPath: [...ancestorPrivateKeyDerivationPath, ...subDerivationPath],
|
|
35
|
+
derivedPrivateKey: derivedPrivateKeyJwk
|
|
36
|
+
};
|
|
37
|
+
return derivedDescendantPrivateKey;
|
|
50
38
|
}
|
|
51
39
|
/**
|
|
52
40
|
* Derives a descendant public key from an ancestor private key.
|
|
53
41
|
* Uses X25519 keys for encryption key derivation.
|
|
54
42
|
*/
|
|
55
|
-
static derivePublicKey(ancestorKey, subDerivationPath) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
return derivedDescendantPublicKey;
|
|
60
|
-
});
|
|
43
|
+
static async derivePublicKey(ancestorKey, subDerivationPath) {
|
|
44
|
+
const derivedDescendantPrivateKey = await HdKey.derivePrivateKey(ancestorKey, subDerivationPath);
|
|
45
|
+
const derivedDescendantPublicKey = await X25519.getPublicKey({ key: derivedDescendantPrivateKey.derivedPrivateKey });
|
|
46
|
+
return derivedDescendantPublicKey;
|
|
61
47
|
}
|
|
62
48
|
/**
|
|
63
49
|
* Derives a hardened hierarchical deterministic private key.
|
|
64
50
|
*/
|
|
65
|
-
static derivePrivateKeyBytes(privateKey, relativePath) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
return currentPrivateKey;
|
|
79
|
-
});
|
|
51
|
+
static async derivePrivateKeyBytes(privateKey, relativePath) {
|
|
52
|
+
HdKey.validateKeyDerivationPath(relativePath);
|
|
53
|
+
let currentPrivateKey = privateKey;
|
|
54
|
+
for (const segment of relativePath) {
|
|
55
|
+
const segmentBytes = Encoder.stringToBytes(segment);
|
|
56
|
+
currentPrivateKey = await HdKey.deriveKeyUsingHkdf({
|
|
57
|
+
hashAlgorithm: 'SHA-256',
|
|
58
|
+
initialKeyMaterial: currentPrivateKey,
|
|
59
|
+
info: segmentBytes, // use the segment as the application specific info for key derivation
|
|
60
|
+
keyLengthInBytes: 32 // 32 bytes = 256 bits
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
return currentPrivateKey;
|
|
80
64
|
}
|
|
81
65
|
/**
|
|
82
66
|
* Derives a key using HMAC-based Extract-and-Expand Key Derivation Function (HKDF) as defined in RFC 5869.
|
|
83
67
|
*/
|
|
84
|
-
static deriveKeyUsingHkdf(params) {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
return derivedKeyBytes;
|
|
101
|
-
});
|
|
68
|
+
static async deriveKeyUsingHkdf(params) {
|
|
69
|
+
const { hashAlgorithm, initialKeyMaterial, info, keyLengthInBytes } = params;
|
|
70
|
+
const webCrypto = getWebcryptoSubtle();
|
|
71
|
+
// Import the `initialKeyMaterial` into the Web Crypto API to use for the key derivation operation.
|
|
72
|
+
const webCryptoKey = await webCrypto.importKey('raw', initialKeyMaterial, { name: 'HKDF' }, false, ['deriveBits']);
|
|
73
|
+
// Derive the bytes using the Web Crypto API.
|
|
74
|
+
const derivedKeyBuffer = await crypto.subtle.deriveBits({
|
|
75
|
+
name: 'HKDF',
|
|
76
|
+
hash: hashAlgorithm,
|
|
77
|
+
salt: new Uint8Array(0), // `info` should be sufficient in our use case
|
|
78
|
+
info
|
|
79
|
+
}, webCryptoKey, keyLengthInBytes * 8 // convert from bytes to bits
|
|
80
|
+
);
|
|
81
|
+
// Convert from ArrayBuffer to Uint8Array.
|
|
82
|
+
const derivedKeyBytes = new Uint8Array(derivedKeyBuffer);
|
|
83
|
+
return derivedKeyBytes;
|
|
102
84
|
}
|
|
103
85
|
/**
|
|
104
86
|
* Validates that no empty strings exist within the derivation path segments array.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hd-key.js","sourceRoot":"","sources":["../../../../src/utils/hd-key.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hd-key.js","sourceRoot":"","sources":["../../../../src/utils/hd-key.ts"],"names":[],"mappings":"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"}
|