@enbox/dwn-sdk-js 0.0.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 +201 -0
- package/README.md +352 -0
- package/dist/bundles/dwn.js +153 -0
- package/dist/cjs/index.js +36749 -0
- package/dist/cjs/package.json +1 -0
- package/dist/esm/generated/precompiled-validators.js +11973 -0
- package/dist/esm/generated/precompiled-validators.js.map +1 -0
- package/dist/esm/json-schemas/definitions.json +23 -0
- package/dist/esm/src/core/abstract-message.js +47 -0
- package/dist/esm/src/core/abstract-message.js.map +1 -0
- package/dist/esm/src/core/auth.js +39 -0
- package/dist/esm/src/core/auth.js.map +1 -0
- package/dist/esm/src/core/dwn-constant.js +10 -0
- package/dist/esm/src/core/dwn-constant.js.map +1 -0
- package/dist/esm/src/core/dwn-error.js +169 -0
- package/dist/esm/src/core/dwn-error.js.map +1 -0
- package/dist/esm/src/core/grant-authorization.js +97 -0
- package/dist/esm/src/core/grant-authorization.js.map +1 -0
- package/dist/esm/src/core/message-reply.js +5 -0
- package/dist/esm/src/core/message-reply.js.map +1 -0
- package/dist/esm/src/core/message.js +233 -0
- package/dist/esm/src/core/message.js.map +1 -0
- package/dist/esm/src/core/messages-grant-authorization.js +101 -0
- package/dist/esm/src/core/messages-grant-authorization.js.map +1 -0
- package/dist/esm/src/core/protocol-authorization.js +608 -0
- package/dist/esm/src/core/protocol-authorization.js.map +1 -0
- package/dist/esm/src/core/protocols-grant-authorization.js +66 -0
- package/dist/esm/src/core/protocols-grant-authorization.js.map +1 -0
- package/dist/esm/src/core/records-grant-authorization.js +132 -0
- package/dist/esm/src/core/records-grant-authorization.js.map +1 -0
- package/dist/esm/src/core/resumable-task-manager.js +109 -0
- package/dist/esm/src/core/resumable-task-manager.js.map +1 -0
- package/dist/esm/src/core/tenant-gate.js +20 -0
- package/dist/esm/src/core/tenant-gate.js.map +1 -0
- package/dist/esm/src/dwn.js +164 -0
- package/dist/esm/src/dwn.js.map +1 -0
- package/dist/esm/src/enums/dwn-interface-method.js +16 -0
- package/dist/esm/src/enums/dwn-interface-method.js.map +1 -0
- package/dist/esm/src/event-log/event-emitter-stream.js +60 -0
- package/dist/esm/src/event-log/event-emitter-stream.js.map +1 -0
- package/dist/esm/src/event-log/event-log-level.js +63 -0
- package/dist/esm/src/event-log/event-log-level.js.map +1 -0
- package/dist/esm/src/handlers/messages-query.js +71 -0
- package/dist/esm/src/handlers/messages-query.js.map +1 -0
- package/dist/esm/src/handlers/messages-read.js +102 -0
- package/dist/esm/src/handlers/messages-read.js.map +1 -0
- package/dist/esm/src/handlers/messages-subscribe.js +81 -0
- package/dist/esm/src/handlers/messages-subscribe.js.map +1 -0
- package/dist/esm/src/handlers/protocols-configure.js +133 -0
- package/dist/esm/src/handlers/protocols-configure.js.map +1 -0
- package/dist/esm/src/handlers/protocols-query.js +73 -0
- package/dist/esm/src/handlers/protocols-query.js.map +1 -0
- package/dist/esm/src/handlers/records-delete.js +107 -0
- package/dist/esm/src/handlers/records-delete.js.map +1 -0
- package/dist/esm/src/handlers/records-query.js +210 -0
- package/dist/esm/src/handlers/records-query.js.map +1 -0
- package/dist/esm/src/handlers/records-read.js +169 -0
- package/dist/esm/src/handlers/records-read.js.map +1 -0
- package/dist/esm/src/handlers/records-subscribe.js +172 -0
- package/dist/esm/src/handlers/records-subscribe.js.map +1 -0
- package/dist/esm/src/handlers/records-write.js +344 -0
- package/dist/esm/src/handlers/records-write.js.map +1 -0
- package/dist/esm/src/index.js +49 -0
- package/dist/esm/src/index.js.map +1 -0
- package/dist/esm/src/interfaces/messages-query.js +53 -0
- package/dist/esm/src/interfaces/messages-query.js.map +1 -0
- package/dist/esm/src/interfaces/messages-read.js +61 -0
- package/dist/esm/src/interfaces/messages-read.js.map +1 -0
- package/dist/esm/src/interfaces/messages-subscribe.js +58 -0
- package/dist/esm/src/interfaces/messages-subscribe.js.map +1 -0
- package/dist/esm/src/interfaces/protocols-configure.js +271 -0
- package/dist/esm/src/interfaces/protocols-configure.js.map +1 -0
- package/dist/esm/src/interfaces/protocols-query.js +84 -0
- package/dist/esm/src/interfaces/protocols-query.js.map +1 -0
- package/dist/esm/src/interfaces/records-delete.js +89 -0
- package/dist/esm/src/interfaces/records-delete.js.map +1 -0
- package/dist/esm/src/interfaces/records-query.js +104 -0
- package/dist/esm/src/interfaces/records-query.js.map +1 -0
- package/dist/esm/src/interfaces/records-read.js +84 -0
- package/dist/esm/src/interfaces/records-read.js.map +1 -0
- package/dist/esm/src/interfaces/records-subscribe.js +91 -0
- package/dist/esm/src/interfaces/records-subscribe.js.map +1 -0
- package/dist/esm/src/interfaces/records-write.js +795 -0
- package/dist/esm/src/interfaces/records-write.js.map +1 -0
- package/dist/esm/src/jose/algorithms/signing/ed25519.js +51 -0
- package/dist/esm/src/jose/algorithms/signing/ed25519.js.map +1 -0
- package/dist/esm/src/jose/algorithms/signing/signature-algorithms.js +20 -0
- package/dist/esm/src/jose/algorithms/signing/signature-algorithms.js.map +1 -0
- package/dist/esm/src/jose/jws/general/builder.js +47 -0
- package/dist/esm/src/jose/jws/general/builder.js.map +1 -0
- package/dist/esm/src/jose/jws/general/verifier.js +97 -0
- package/dist/esm/src/jose/jws/general/verifier.js.map +1 -0
- package/dist/esm/src/protocols/permission-grant.js +39 -0
- package/dist/esm/src/protocols/permission-grant.js.map +1 -0
- package/dist/esm/src/protocols/permission-request.js +35 -0
- package/dist/esm/src/protocols/permission-request.js.map +1 -0
- package/dist/esm/src/protocols/permissions.js +357 -0
- package/dist/esm/src/protocols/permissions.js.map +1 -0
- package/dist/esm/src/schema-validator.js +37 -0
- package/dist/esm/src/schema-validator.js.map +1 -0
- package/dist/esm/src/store/blockstore-level.js +187 -0
- package/dist/esm/src/store/blockstore-level.js.map +1 -0
- package/dist/esm/src/store/blockstore-mock.js +168 -0
- package/dist/esm/src/store/blockstore-mock.js.map +1 -0
- package/dist/esm/src/store/data-store-level.js +136 -0
- package/dist/esm/src/store/data-store-level.js.map +1 -0
- package/dist/esm/src/store/index-level.js +660 -0
- package/dist/esm/src/store/index-level.js.map +1 -0
- package/dist/esm/src/store/level-wrapper.js +305 -0
- package/dist/esm/src/store/level-wrapper.js.map +1 -0
- package/dist/esm/src/store/message-store-level.js +159 -0
- package/dist/esm/src/store/message-store-level.js.map +1 -0
- package/dist/esm/src/store/resumable-task-store-level.js +131 -0
- package/dist/esm/src/store/resumable-task-store-level.js.map +1 -0
- package/dist/esm/src/store/storage-controller.js +184 -0
- package/dist/esm/src/store/storage-controller.js.map +1 -0
- package/dist/esm/src/types/cache.js +2 -0
- package/dist/esm/src/types/cache.js.map +1 -0
- package/dist/esm/src/types/data-store.js +2 -0
- package/dist/esm/src/types/data-store.js.map +1 -0
- package/dist/esm/src/types/event-log.js +2 -0
- package/dist/esm/src/types/event-log.js.map +1 -0
- package/dist/esm/src/types/jose-types.js +2 -0
- package/dist/esm/src/types/jose-types.js.map +1 -0
- package/dist/esm/src/types/jws-types.js +2 -0
- package/dist/esm/src/types/jws-types.js.map +1 -0
- package/dist/esm/src/types/message-interface.js +2 -0
- package/dist/esm/src/types/message-interface.js.map +1 -0
- package/dist/esm/src/types/message-store.js +2 -0
- package/dist/esm/src/types/message-store.js.map +1 -0
- package/dist/esm/src/types/message-types.js +3 -0
- package/dist/esm/src/types/message-types.js.map +1 -0
- package/dist/esm/src/types/messages-types.js +2 -0
- package/dist/esm/src/types/messages-types.js.map +1 -0
- package/dist/esm/src/types/method-handler.js +2 -0
- package/dist/esm/src/types/method-handler.js.map +1 -0
- package/dist/esm/src/types/permission-types.js +6 -0
- package/dist/esm/src/types/permission-types.js.map +1 -0
- package/dist/esm/src/types/protocols-types.js +20 -0
- package/dist/esm/src/types/protocols-types.js.map +1 -0
- package/dist/esm/src/types/query-types.js +6 -0
- package/dist/esm/src/types/query-types.js.map +1 -0
- package/dist/esm/src/types/records-types.js +8 -0
- package/dist/esm/src/types/records-types.js.map +1 -0
- package/dist/esm/src/types/resumable-task-store.js +2 -0
- package/dist/esm/src/types/resumable-task-store.js.map +1 -0
- package/dist/esm/src/types/signer.js +2 -0
- package/dist/esm/src/types/signer.js.map +1 -0
- package/dist/esm/src/types/subscriptions.js +2 -0
- package/dist/esm/src/types/subscriptions.js.map +1 -0
- package/dist/esm/src/utils/abort.js +40 -0
- package/dist/esm/src/utils/abort.js.map +1 -0
- package/dist/esm/src/utils/array.js +72 -0
- package/dist/esm/src/utils/array.js.map +1 -0
- package/dist/esm/src/utils/cid.js +130 -0
- package/dist/esm/src/utils/cid.js.map +1 -0
- package/dist/esm/src/utils/data-stream.js +100 -0
- package/dist/esm/src/utils/data-stream.js.map +1 -0
- package/dist/esm/src/utils/encoder.js +45 -0
- package/dist/esm/src/utils/encoder.js.map +1 -0
- package/dist/esm/src/utils/encryption.js +128 -0
- package/dist/esm/src/utils/encryption.js.map +1 -0
- package/dist/esm/src/utils/filter.js +229 -0
- package/dist/esm/src/utils/filter.js.map +1 -0
- package/dist/esm/src/utils/hd-key.js +114 -0
- package/dist/esm/src/utils/hd-key.js.map +1 -0
- package/dist/esm/src/utils/jws.js +89 -0
- package/dist/esm/src/utils/jws.js.map +1 -0
- package/dist/esm/src/utils/memory-cache.js +41 -0
- package/dist/esm/src/utils/memory-cache.js.map +1 -0
- package/dist/esm/src/utils/messages.js +84 -0
- package/dist/esm/src/utils/messages.js.map +1 -0
- package/dist/esm/src/utils/object.js +40 -0
- package/dist/esm/src/utils/object.js.map +1 -0
- package/dist/esm/src/utils/private-key-signer.js +43 -0
- package/dist/esm/src/utils/private-key-signer.js.map +1 -0
- package/dist/esm/src/utils/protocols.js +51 -0
- package/dist/esm/src/utils/protocols.js.map +1 -0
- package/dist/esm/src/utils/records.js +454 -0
- package/dist/esm/src/utils/records.js.map +1 -0
- package/dist/esm/src/utils/secp256k1.js +166 -0
- package/dist/esm/src/utils/secp256k1.js.map +1 -0
- package/dist/esm/src/utils/secp256r1.js +120 -0
- package/dist/esm/src/utils/secp256r1.js.map +1 -0
- package/dist/esm/src/utils/string.js +16 -0
- package/dist/esm/src/utils/string.js.map +1 -0
- package/dist/esm/src/utils/time.js +85 -0
- package/dist/esm/src/utils/time.js.map +1 -0
- package/dist/esm/src/utils/url.js +62 -0
- package/dist/esm/src/utils/url.js.map +1 -0
- package/dist/esm/tests/core/auth.spec.js +22 -0
- package/dist/esm/tests/core/auth.spec.js.map +1 -0
- package/dist/esm/tests/core/message-reply.spec.js +16 -0
- package/dist/esm/tests/core/message-reply.spec.js.map +1 -0
- package/dist/esm/tests/core/message.spec.js +146 -0
- package/dist/esm/tests/core/message.spec.js.map +1 -0
- package/dist/esm/tests/core/protocol-authorization.spec.js +48 -0
- package/dist/esm/tests/core/protocol-authorization.spec.js.map +1 -0
- package/dist/esm/tests/dwn.spec.js +166 -0
- package/dist/esm/tests/dwn.spec.js.map +1 -0
- package/dist/esm/tests/event-log/event-emitter-stream.spec.js +78 -0
- package/dist/esm/tests/event-log/event-emitter-stream.spec.js.map +1 -0
- package/dist/esm/tests/event-log/event-log-level.spec.js +44 -0
- package/dist/esm/tests/event-log/event-log-level.spec.js.map +1 -0
- package/dist/esm/tests/event-log/event-log.spec.js +236 -0
- package/dist/esm/tests/event-log/event-log.spec.js.map +1 -0
- package/dist/esm/tests/event-log/event-stream.spec.js +125 -0
- package/dist/esm/tests/event-log/event-stream.spec.js.map +1 -0
- package/dist/esm/tests/features/author-delegated-grant.spec.js +1273 -0
- package/dist/esm/tests/features/author-delegated-grant.spec.js.map +1 -0
- package/dist/esm/tests/features/owner-delegated-grant.spec.js +584 -0
- package/dist/esm/tests/features/owner-delegated-grant.spec.js.map +1 -0
- package/dist/esm/tests/features/owner-signature.spec.js +192 -0
- package/dist/esm/tests/features/owner-signature.spec.js.map +1 -0
- package/dist/esm/tests/features/permissions.spec.js +815 -0
- package/dist/esm/tests/features/permissions.spec.js.map +1 -0
- package/dist/esm/tests/features/protocol-create-action.spec.js +248 -0
- package/dist/esm/tests/features/protocol-create-action.spec.js.map +1 -0
- package/dist/esm/tests/features/protocol-delete-action.spec.js +492 -0
- package/dist/esm/tests/features/protocol-delete-action.spec.js.map +1 -0
- package/dist/esm/tests/features/protocol-update-action.spec.js +572 -0
- package/dist/esm/tests/features/protocol-update-action.spec.js.map +1 -0
- package/dist/esm/tests/features/records-prune.spec.js +812 -0
- package/dist/esm/tests/features/records-prune.spec.js.map +1 -0
- package/dist/esm/tests/features/records-tags.spec.js +2516 -0
- package/dist/esm/tests/features/records-tags.spec.js.map +1 -0
- package/dist/esm/tests/features/resumable-tasks.spec.js +349 -0
- package/dist/esm/tests/features/resumable-tasks.spec.js.map +1 -0
- package/dist/esm/tests/handlers/messages-query.spec.js +349 -0
- package/dist/esm/tests/handlers/messages-query.spec.js.map +1 -0
- package/dist/esm/tests/handlers/messages-read.spec.js +647 -0
- package/dist/esm/tests/handlers/messages-read.spec.js.map +1 -0
- package/dist/esm/tests/handlers/messages-subscribe.spec.js +432 -0
- package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -0
- package/dist/esm/tests/handlers/protocols-configure.spec.js +608 -0
- package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -0
- package/dist/esm/tests/handlers/protocols-query.spec.js +454 -0
- package/dist/esm/tests/handlers/protocols-query.spec.js.map +1 -0
- package/dist/esm/tests/handlers/records-delete.spec.js +662 -0
- package/dist/esm/tests/handlers/records-delete.spec.js.map +1 -0
- package/dist/esm/tests/handlers/records-query.spec.js +2695 -0
- package/dist/esm/tests/handlers/records-query.spec.js.map +1 -0
- package/dist/esm/tests/handlers/records-read.spec.js +1724 -0
- package/dist/esm/tests/handlers/records-read.spec.js.map +1 -0
- package/dist/esm/tests/handlers/records-subscribe.spec.js +684 -0
- package/dist/esm/tests/handlers/records-subscribe.spec.js.map +1 -0
- package/dist/esm/tests/handlers/records-write.spec.js +3637 -0
- package/dist/esm/tests/handlers/records-write.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/messages-get.spec.js +78 -0
- package/dist/esm/tests/interfaces/messages-get.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/messages-subscribe.spec.js +30 -0
- package/dist/esm/tests/interfaces/messages-subscribe.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/messagess-query.spec.js +127 -0
- package/dist/esm/tests/interfaces/messagess-query.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/protocols-configure.spec.js +489 -0
- package/dist/esm/tests/interfaces/protocols-configure.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/protocols-query.spec.js +46 -0
- package/dist/esm/tests/interfaces/protocols-query.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/records-delete.spec.js +39 -0
- package/dist/esm/tests/interfaces/records-delete.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/records-query.spec.js +85 -0
- package/dist/esm/tests/interfaces/records-query.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/records-read.spec.js +62 -0
- package/dist/esm/tests/interfaces/records-read.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/records-subscribe.spec.js +72 -0
- package/dist/esm/tests/interfaces/records-subscribe.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/records-write.spec.js +423 -0
- package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -0
- package/dist/esm/tests/jose/jws/general.spec.js +243 -0
- package/dist/esm/tests/jose/jws/general.spec.js.map +1 -0
- package/dist/esm/tests/protocols/permission-request.spec.js +40 -0
- package/dist/esm/tests/protocols/permission-request.spec.js.map +1 -0
- package/dist/esm/tests/protocols/permissions.spec.js +123 -0
- package/dist/esm/tests/protocols/permissions.spec.js.map +1 -0
- package/dist/esm/tests/scenarios/aggregator.spec.js +670 -0
- package/dist/esm/tests/scenarios/aggregator.spec.js.map +1 -0
- package/dist/esm/tests/scenarios/deleted-record.spec.js +102 -0
- package/dist/esm/tests/scenarios/deleted-record.spec.js.map +1 -0
- package/dist/esm/tests/scenarios/end-to-end-tests.spec.js +220 -0
- package/dist/esm/tests/scenarios/end-to-end-tests.spec.js.map +1 -0
- package/dist/esm/tests/scenarios/messages-query.spec.js +395 -0
- package/dist/esm/tests/scenarios/messages-query.spec.js.map +1 -0
- package/dist/esm/tests/scenarios/nested-roles.spec.js +300 -0
- package/dist/esm/tests/scenarios/nested-roles.spec.js.map +1 -0
- package/dist/esm/tests/scenarios/subscriptions.spec.js +886 -0
- package/dist/esm/tests/scenarios/subscriptions.spec.js.map +1 -0
- package/dist/esm/tests/store/blockstore-mock.spec.js +192 -0
- package/dist/esm/tests/store/blockstore-mock.spec.js.map +1 -0
- package/dist/esm/tests/store/data-store-level.spec.js +146 -0
- package/dist/esm/tests/store/data-store-level.spec.js.map +1 -0
- package/dist/esm/tests/store/index-level.spec.js +1208 -0
- package/dist/esm/tests/store/index-level.spec.js.map +1 -0
- package/dist/esm/tests/store/message-store-level.spec.js +48 -0
- package/dist/esm/tests/store/message-store-level.spec.js.map +1 -0
- package/dist/esm/tests/store/message-store.spec.js +404 -0
- package/dist/esm/tests/store/message-store.spec.js.map +1 -0
- package/dist/esm/tests/store-dependent-tests.spec.js +5 -0
- package/dist/esm/tests/store-dependent-tests.spec.js.map +1 -0
- package/dist/esm/tests/test-event-stream.js +25 -0
- package/dist/esm/tests/test-event-stream.js.map +1 -0
- package/dist/esm/tests/test-stores.js +45 -0
- package/dist/esm/tests/test-stores.js.map +1 -0
- package/dist/esm/tests/test-suite.js +88 -0
- package/dist/esm/tests/test-suite.js.map +1 -0
- package/dist/esm/tests/utils/cid.spec.js +80 -0
- package/dist/esm/tests/utils/cid.spec.js.map +1 -0
- package/dist/esm/tests/utils/data-stream.spec.js +27 -0
- package/dist/esm/tests/utils/data-stream.spec.js.map +1 -0
- package/dist/esm/tests/utils/encryption.spec.js +148 -0
- package/dist/esm/tests/utils/encryption.spec.js.map +1 -0
- package/dist/esm/tests/utils/filters.spec.js +295 -0
- package/dist/esm/tests/utils/filters.spec.js.map +1 -0
- package/dist/esm/tests/utils/hd-key.spec.js +35 -0
- package/dist/esm/tests/utils/hd-key.spec.js.map +1 -0
- package/dist/esm/tests/utils/jws.spec.js +8 -0
- package/dist/esm/tests/utils/jws.spec.js.map +1 -0
- package/dist/esm/tests/utils/memory-cache.spec.js +35 -0
- package/dist/esm/tests/utils/memory-cache.spec.js.map +1 -0
- package/dist/esm/tests/utils/messages.spec.js +101 -0
- package/dist/esm/tests/utils/messages.spec.js.map +1 -0
- package/dist/esm/tests/utils/object.spec.js +36 -0
- package/dist/esm/tests/utils/object.spec.js.map +1 -0
- package/dist/esm/tests/utils/poller.js +49 -0
- package/dist/esm/tests/utils/poller.js.map +1 -0
- package/dist/esm/tests/utils/private-key-signer.spec.js +44 -0
- package/dist/esm/tests/utils/private-key-signer.spec.js.map +1 -0
- package/dist/esm/tests/utils/records.spec.js +53 -0
- package/dist/esm/tests/utils/records.spec.js.map +1 -0
- package/dist/esm/tests/utils/secp256k1.spec.js +50 -0
- package/dist/esm/tests/utils/secp256k1.spec.js.map +1 -0
- package/dist/esm/tests/utils/secp256r1.spec.js +56 -0
- package/dist/esm/tests/utils/secp256r1.spec.js.map +1 -0
- package/dist/esm/tests/utils/test-data-generator.js +643 -0
- package/dist/esm/tests/utils/test-data-generator.js.map +1 -0
- package/dist/esm/tests/utils/test-stub-generator.js +39 -0
- package/dist/esm/tests/utils/test-stub-generator.js.map +1 -0
- package/dist/esm/tests/utils/time.spec.js +64 -0
- package/dist/esm/tests/utils/time.spec.js.map +1 -0
- package/dist/esm/tests/utils/url.spec.js +43 -0
- package/dist/esm/tests/utils/url.spec.js.map +1 -0
- package/dist/esm/tests/validation/json-schemas/definitions.spec.js +33 -0
- package/dist/esm/tests/validation/json-schemas/definitions.spec.js.map +1 -0
- package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js +50 -0
- package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js.map +1 -0
- package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js +36 -0
- package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js.map +1 -0
- package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js +82 -0
- package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js.map +1 -0
- package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js +75 -0
- package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js.map +1 -0
- package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js +148 -0
- package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js.map +1 -0
- package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js +421 -0
- package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js.map +1 -0
- package/dist/esm/tests/vectors/protocol-definitions/anyone-collaborate.json +21 -0
- package/dist/esm/tests/vectors/protocol-definitions/author-can.json +33 -0
- package/dist/esm/tests/vectors/protocol-definitions/chat.json +70 -0
- package/dist/esm/tests/vectors/protocol-definitions/credential-issuance.json +41 -0
- package/dist/esm/tests/vectors/protocol-definitions/dex.json +58 -0
- package/dist/esm/tests/vectors/protocol-definitions/email.json +62 -0
- package/dist/esm/tests/vectors/protocol-definitions/free-for-all.json +45 -0
- package/dist/esm/tests/vectors/protocol-definitions/friend-role.json +48 -0
- package/dist/esm/tests/vectors/protocol-definitions/message.json +37 -0
- package/dist/esm/tests/vectors/protocol-definitions/minimal.json +10 -0
- package/dist/esm/tests/vectors/protocol-definitions/nested.json +31 -0
- package/dist/esm/tests/vectors/protocol-definitions/private-protocol.json +15 -0
- package/dist/esm/tests/vectors/protocol-definitions/recipient-can.json +33 -0
- package/dist/esm/tests/vectors/protocol-definitions/slack.json +242 -0
- package/dist/esm/tests/vectors/protocol-definitions/social-media.json +106 -0
- package/dist/esm/tests/vectors/protocol-definitions/thread-role.json +70 -0
- package/dist/types/generated/precompiled-validators.d.ts +597 -0
- package/dist/types/generated/precompiled-validators.d.ts.map +1 -0
- package/dist/types/src/core/abstract-message.d.ts +25 -0
- package/dist/types/src/core/abstract-message.d.ts.map +1 -0
- package/dist/types/src/core/auth.d.ts +9 -0
- package/dist/types/src/core/auth.d.ts.map +1 -0
- package/dist/types/src/core/dwn-constant.d.ts +10 -0
- package/dist/types/src/core/dwn-constant.d.ts.map +1 -0
- package/dist/types/src/core/dwn-error.d.ts +164 -0
- package/dist/types/src/core/dwn-error.d.ts.map +1 -0
- package/dist/types/src/core/grant-authorization.d.ts +43 -0
- package/dist/types/src/core/grant-authorization.d.ts.map +1 -0
- package/dist/types/src/core/message-reply.d.ts +32 -0
- package/dist/types/src/core/message-reply.d.ts.map +1 -0
- package/dist/types/src/core/message.d.ts +94 -0
- package/dist/types/src/core/message.d.ts.map +1 -0
- package/dist/types/src/core/messages-grant-authorization.d.ts +34 -0
- package/dist/types/src/core/messages-grant-authorization.d.ts.map +1 -0
- package/dist/types/src/core/protocol-authorization.d.ts +103 -0
- package/dist/types/src/core/protocol-authorization.d.ts.map +1 -0
- package/dist/types/src/core/protocols-grant-authorization.d.ts +31 -0
- package/dist/types/src/core/protocols-grant-authorization.d.ts.map +1 -0
- package/dist/types/src/core/records-grant-authorization.d.ts +60 -0
- package/dist/types/src/core/records-grant-authorization.d.ts.map +1 -0
- package/dist/types/src/core/resumable-task-manager.d.ts +43 -0
- package/dist/types/src/core/resumable-task-manager.d.ts.map +1 -0
- package/dist/types/src/core/tenant-gate.d.ts +29 -0
- package/dist/types/src/core/tenant-gate.d.ts.map +1 -0
- package/dist/types/src/dwn.d.ts +85 -0
- package/dist/types/src/dwn.d.ts.map +1 -0
- package/dist/types/src/enums/dwn-interface-method.d.ts +14 -0
- package/dist/types/src/enums/dwn-interface-method.d.ts.map +1 -0
- package/dist/types/src/event-log/event-emitter-stream.d.ts +23 -0
- package/dist/types/src/event-log/event-emitter-stream.d.ts.map +1 -0
- package/dist/types/src/event-log/event-log-level.d.ts +35 -0
- package/dist/types/src/event-log/event-log-level.d.ts.map +1 -0
- package/dist/types/src/handlers/messages-query.d.ts +17 -0
- package/dist/types/src/handlers/messages-query.d.ts.map +1 -0
- package/dist/types/src/handlers/messages-read.d.ts +22 -0
- package/dist/types/src/handlers/messages-read.d.ts.map +1 -0
- package/dist/types/src/handlers/messages-subscribe.d.ts +18 -0
- package/dist/types/src/handlers/messages-subscribe.d.ts.map +1 -0
- package/dist/types/src/handlers/protocols-configure.d.ts +24 -0
- package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -0
- package/dist/types/src/handlers/protocols-query.d.ts +20 -0
- package/dist/types/src/handlers/protocols-query.d.ts.map +1 -0
- package/dist/types/src/handlers/records-delete.d.ts +23 -0
- package/dist/types/src/handlers/records-delete.d.ts.map +1 -0
- package/dist/types/src/handlers/records-query.d.ts +70 -0
- package/dist/types/src/handlers/records-query.d.ts.map +1 -0
- package/dist/types/src/handlers/records-read.d.ts +20 -0
- package/dist/types/src/handlers/records-read.d.ts.map +1 -0
- package/dist/types/src/handlers/records-subscribe.d.ts +62 -0
- package/dist/types/src/handlers/records-subscribe.d.ts.map +1 -0
- package/dist/types/src/handlers/records-write.d.ts +51 -0
- package/dist/types/src/handlers/records-write.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +63 -0
- package/dist/types/src/index.d.ts.map +1 -0
- package/dist/types/src/interfaces/messages-query.d.ts +16 -0
- package/dist/types/src/interfaces/messages-query.d.ts.map +1 -0
- package/dist/types/src/interfaces/messages-read.d.ts +20 -0
- package/dist/types/src/interfaces/messages-read.d.ts.map +1 -0
- package/dist/types/src/interfaces/messages-subscribe.d.ts +20 -0
- package/dist/types/src/interfaces/messages-subscribe.d.ts.map +1 -0
- package/dist/types/src/interfaces/protocols-configure.d.ts +40 -0
- package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -0
- package/dist/types/src/interfaces/protocols-query.d.ts +17 -0
- package/dist/types/src/interfaces/protocols-query.d.ts.map +1 -0
- package/dist/types/src/interfaces/records-delete.d.ts +34 -0
- package/dist/types/src/interfaces/records-delete.d.ts.map +1 -0
- package/dist/types/src/interfaces/records-query.d.ts +31 -0
- package/dist/types/src/interfaces/records-query.d.ts.map +1 -0
- package/dist/types/src/interfaces/records-read.d.ts +36 -0
- package/dist/types/src/interfaces/records-read.d.ts.map +1 -0
- package/dist/types/src/interfaces/records-subscribe.d.ts +27 -0
- package/dist/types/src/interfaces/records-subscribe.d.ts.map +1 -0
- package/dist/types/src/interfaces/records-write.d.ts +309 -0
- package/dist/types/src/interfaces/records-write.d.ts.map +1 -0
- package/dist/types/src/jose/algorithms/signing/ed25519.d.ts +3 -0
- package/dist/types/src/jose/algorithms/signing/ed25519.d.ts.map +1 -0
- package/dist/types/src/jose/algorithms/signing/signature-algorithms.d.ts +3 -0
- package/dist/types/src/jose/algorithms/signing/signature-algorithms.d.ts.map +1 -0
- package/dist/types/src/jose/jws/general/builder.d.ts +10 -0
- package/dist/types/src/jose/jws/general/builder.d.ts.map +1 -0
- package/dist/types/src/jose/jws/general/verifier.d.ts +32 -0
- package/dist/types/src/jose/jws/general/verifier.d.ts.map +1 -0
- package/dist/types/src/protocols/permission-grant.d.ts +50 -0
- package/dist/types/src/protocols/permission-grant.d.ts.map +1 -0
- package/dist/types/src/protocols/permission-request.d.ts +35 -0
- package/dist/types/src/protocols/permission-request.d.ts.map +1 -0
- package/dist/types/src/protocols/permissions.d.ts +150 -0
- package/dist/types/src/protocols/permissions.d.ts.map +1 -0
- package/dist/types/src/schema-validator.d.ts +8 -0
- package/dist/types/src/schema-validator.d.ts.map +1 -0
- package/dist/types/src/store/blockstore-level.d.ts +34 -0
- package/dist/types/src/store/blockstore-level.d.ts.map +1 -0
- package/dist/types/src/store/blockstore-mock.d.ts +27 -0
- package/dist/types/src/store/blockstore-mock.d.ts.map +1 -0
- package/dist/types/src/store/data-store-level.d.ts +34 -0
- package/dist/types/src/store/data-store-level.d.ts.map +1 -0
- package/dist/types/src/store/index-level.d.ts +171 -0
- package/dist/types/src/store/index-level.d.ts.map +1 -0
- package/dist/types/src/store/level-wrapper.d.ts +48 -0
- package/dist/types/src/store/level-wrapper.d.ts.map +1 -0
- package/dist/types/src/store/message-store-level.d.ts +46 -0
- package/dist/types/src/store/message-store-level.d.ts.map +1 -0
- package/dist/types/src/store/resumable-task-store-level.d.ts +28 -0
- package/dist/types/src/store/resumable-task-store-level.d.ts.map +1 -0
- package/dist/types/src/store/storage-controller.d.ts +46 -0
- package/dist/types/src/store/storage-controller.d.ts.map +1 -0
- package/dist/types/src/types/cache.d.ts +16 -0
- package/dist/types/src/types/cache.d.ts.map +1 -0
- package/dist/types/src/types/data-store.d.ts +57 -0
- package/dist/types/src/types/data-store.d.ts.map +1 -0
- package/dist/types/src/types/event-log.d.ts +52 -0
- package/dist/types/src/types/event-log.d.ts.map +1 -0
- package/dist/types/src/types/jose-types.d.ts +75 -0
- package/dist/types/src/types/jose-types.d.ts.map +1 -0
- package/dist/types/src/types/jws-types.d.ts +27 -0
- package/dist/types/src/types/jws-types.d.ts.map +1 -0
- package/dist/types/src/types/message-interface.d.ts +27 -0
- package/dist/types/src/types/message-interface.d.ts.map +1 -0
- package/dist/types/src/types/message-store.d.ts +42 -0
- package/dist/types/src/types/message-store.d.ts.map +1 -0
- package/dist/types/src/types/message-types.d.ts +116 -0
- package/dist/types/src/types/message-types.d.ts.map +1 -0
- package/dist/types/src/types/messages-types.d.ts +65 -0
- package/dist/types/src/types/messages-types.d.ts.map +1 -0
- package/dist/types/src/types/method-handler.d.ts +19 -0
- package/dist/types/src/types/method-handler.d.ts.map +1 -0
- package/dist/types/src/types/permission-types.d.ts +93 -0
- package/dist/types/src/types/permission-types.d.ts.map +1 -0
- package/dist/types/src/types/protocols-types.d.ts +154 -0
- package/dist/types/src/types/protocols-types.d.ts.map +1 -0
- package/dist/types/src/types/query-types.d.ts +66 -0
- package/dist/types/src/types/query-types.d.ts.map +1 -0
- package/dist/types/src/types/records-types.d.ts +230 -0
- package/dist/types/src/types/records-types.d.ts.map +1 -0
- package/dist/types/src/types/resumable-task-store.d.ts +89 -0
- package/dist/types/src/types/resumable-task-store.d.ts.map +1 -0
- package/dist/types/src/types/signer.d.ts +26 -0
- package/dist/types/src/types/signer.d.ts.map +1 -0
- package/dist/types/src/types/subscriptions.d.ts +30 -0
- package/dist/types/src/types/subscriptions.d.ts.map +1 -0
- package/dist/types/src/utils/abort.d.ts +5 -0
- package/dist/types/src/utils/abort.d.ts.map +1 -0
- package/dist/types/src/utils/array.d.ts +18 -0
- package/dist/types/src/utils/array.d.ts.map +1 -0
- package/dist/types/src/utils/cid.d.ts +30 -0
- package/dist/types/src/utils/cid.d.ts.map +1 -0
- package/dist/types/src/utils/data-stream.d.ts +31 -0
- package/dist/types/src/utils/data-stream.d.ts.map +1 -0
- package/dist/types/src/utils/encoder.d.ts +14 -0
- package/dist/types/src/utils/encoder.d.ts.map +1 -0
- package/dist/types/src/utils/encryption.d.ts +44 -0
- package/dist/types/src/utils/encryption.d.ts.map +1 -0
- package/dist/types/src/utils/filter.d.ts +60 -0
- package/dist/types/src/utils/filter.d.ts.map +1 -0
- package/dist/types/src/utils/hd-key.d.ts +54 -0
- package/dist/types/src/utils/hd-key.d.ts.map +1 -0
- package/dist/types/src/utils/jws.d.ts +39 -0
- package/dist/types/src/utils/jws.d.ts.map +1 -0
- package/dist/types/src/utils/memory-cache.d.ts +15 -0
- package/dist/types/src/utils/memory-cache.d.ts.map +1 -0
- package/dist/types/src/utils/messages.d.ts +27 -0
- package/dist/types/src/utils/messages.d.ts.map +1 -0
- package/dist/types/src/utils/object.d.ts +13 -0
- package/dist/types/src/utils/object.d.ts.map +1 -0
- package/dist/types/src/utils/private-key-signer.d.ts +34 -0
- package/dist/types/src/utils/private-key-signer.d.ts.map +1 -0
- package/dist/types/src/utils/protocols.d.ts +14 -0
- package/dist/types/src/utils/protocols.d.ts.map +1 -0
- package/dist/types/src/utils/records.d.ts +122 -0
- package/dist/types/src/utils/records.d.ts.map +1 -0
- package/dist/types/src/utils/secp256k1.d.ts +59 -0
- package/dist/types/src/utils/secp256k1.d.ts.map +1 -0
- package/dist/types/src/utils/secp256r1.d.ts +39 -0
- package/dist/types/src/utils/secp256r1.d.ts.map +1 -0
- package/dist/types/src/utils/string.d.ts +6 -0
- package/dist/types/src/utils/string.d.ts.map +1 -0
- package/dist/types/src/utils/time.d.ts +50 -0
- package/dist/types/src/utils/time.d.ts.map +1 -0
- package/dist/types/src/utils/url.d.ts +5 -0
- package/dist/types/src/utils/url.d.ts.map +1 -0
- package/dist/types/tests/core/auth.spec.d.ts +2 -0
- package/dist/types/tests/core/auth.spec.d.ts.map +1 -0
- package/dist/types/tests/core/message-reply.spec.d.ts +2 -0
- package/dist/types/tests/core/message-reply.spec.d.ts.map +1 -0
- package/dist/types/tests/core/message.spec.d.ts +2 -0
- package/dist/types/tests/core/message.spec.d.ts.map +1 -0
- package/dist/types/tests/core/protocol-authorization.spec.d.ts +2 -0
- package/dist/types/tests/core/protocol-authorization.spec.d.ts.map +1 -0
- package/dist/types/tests/dwn.spec.d.ts +2 -0
- package/dist/types/tests/dwn.spec.d.ts.map +1 -0
- package/dist/types/tests/event-log/event-emitter-stream.spec.d.ts +2 -0
- package/dist/types/tests/event-log/event-emitter-stream.spec.d.ts.map +1 -0
- package/dist/types/tests/event-log/event-log-level.spec.d.ts +2 -0
- package/dist/types/tests/event-log/event-log-level.spec.d.ts.map +1 -0
- package/dist/types/tests/event-log/event-log.spec.d.ts +2 -0
- package/dist/types/tests/event-log/event-log.spec.d.ts.map +1 -0
- package/dist/types/tests/event-log/event-stream.spec.d.ts +2 -0
- package/dist/types/tests/event-log/event-stream.spec.d.ts.map +1 -0
- package/dist/types/tests/features/author-delegated-grant.spec.d.ts +2 -0
- package/dist/types/tests/features/author-delegated-grant.spec.d.ts.map +1 -0
- package/dist/types/tests/features/owner-delegated-grant.spec.d.ts +2 -0
- package/dist/types/tests/features/owner-delegated-grant.spec.d.ts.map +1 -0
- package/dist/types/tests/features/owner-signature.spec.d.ts +2 -0
- package/dist/types/tests/features/owner-signature.spec.d.ts.map +1 -0
- package/dist/types/tests/features/permissions.spec.d.ts +2 -0
- package/dist/types/tests/features/permissions.spec.d.ts.map +1 -0
- package/dist/types/tests/features/protocol-create-action.spec.d.ts +2 -0
- package/dist/types/tests/features/protocol-create-action.spec.d.ts.map +1 -0
- package/dist/types/tests/features/protocol-delete-action.spec.d.ts +2 -0
- package/dist/types/tests/features/protocol-delete-action.spec.d.ts.map +1 -0
- package/dist/types/tests/features/protocol-update-action.spec.d.ts +2 -0
- package/dist/types/tests/features/protocol-update-action.spec.d.ts.map +1 -0
- package/dist/types/tests/features/records-prune.spec.d.ts +2 -0
- package/dist/types/tests/features/records-prune.spec.d.ts.map +1 -0
- package/dist/types/tests/features/records-tags.spec.d.ts +2 -0
- package/dist/types/tests/features/records-tags.spec.d.ts.map +1 -0
- package/dist/types/tests/features/resumable-tasks.spec.d.ts +2 -0
- package/dist/types/tests/features/resumable-tasks.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/messages-query.spec.d.ts +2 -0
- package/dist/types/tests/handlers/messages-query.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/messages-read.spec.d.ts +2 -0
- package/dist/types/tests/handlers/messages-read.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/messages-subscribe.spec.d.ts +2 -0
- package/dist/types/tests/handlers/messages-subscribe.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/protocols-configure.spec.d.ts +2 -0
- package/dist/types/tests/handlers/protocols-configure.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/protocols-query.spec.d.ts +2 -0
- package/dist/types/tests/handlers/protocols-query.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/records-delete.spec.d.ts +2 -0
- package/dist/types/tests/handlers/records-delete.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/records-query.spec.d.ts +2 -0
- package/dist/types/tests/handlers/records-query.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/records-read.spec.d.ts +2 -0
- package/dist/types/tests/handlers/records-read.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/records-subscribe.spec.d.ts +2 -0
- package/dist/types/tests/handlers/records-subscribe.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/records-write.spec.d.ts +2 -0
- package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/messages-get.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/messages-get.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/messages-subscribe.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/messages-subscribe.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/messagess-query.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/messagess-query.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/protocols-configure.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/protocols-configure.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/protocols-query.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/protocols-query.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/records-delete.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/records-delete.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/records-query.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/records-query.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/records-read.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/records-read.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/records-subscribe.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/records-subscribe.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/records-write.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/records-write.spec.d.ts.map +1 -0
- package/dist/types/tests/jose/jws/general.spec.d.ts +2 -0
- package/dist/types/tests/jose/jws/general.spec.d.ts.map +1 -0
- package/dist/types/tests/protocols/permission-request.spec.d.ts +2 -0
- package/dist/types/tests/protocols/permission-request.spec.d.ts.map +1 -0
- package/dist/types/tests/protocols/permissions.spec.d.ts +2 -0
- package/dist/types/tests/protocols/permissions.spec.d.ts.map +1 -0
- package/dist/types/tests/scenarios/aggregator.spec.d.ts +2 -0
- package/dist/types/tests/scenarios/aggregator.spec.d.ts.map +1 -0
- package/dist/types/tests/scenarios/deleted-record.spec.d.ts +2 -0
- package/dist/types/tests/scenarios/deleted-record.spec.d.ts.map +1 -0
- package/dist/types/tests/scenarios/end-to-end-tests.spec.d.ts +2 -0
- package/dist/types/tests/scenarios/end-to-end-tests.spec.d.ts.map +1 -0
- package/dist/types/tests/scenarios/messages-query.spec.d.ts +2 -0
- package/dist/types/tests/scenarios/messages-query.spec.d.ts.map +1 -0
- package/dist/types/tests/scenarios/nested-roles.spec.d.ts +2 -0
- package/dist/types/tests/scenarios/nested-roles.spec.d.ts.map +1 -0
- package/dist/types/tests/scenarios/subscriptions.spec.d.ts +2 -0
- package/dist/types/tests/scenarios/subscriptions.spec.d.ts.map +1 -0
- package/dist/types/tests/store/blockstore-mock.spec.d.ts +2 -0
- package/dist/types/tests/store/blockstore-mock.spec.d.ts.map +1 -0
- package/dist/types/tests/store/data-store-level.spec.d.ts +2 -0
- package/dist/types/tests/store/data-store-level.spec.d.ts.map +1 -0
- package/dist/types/tests/store/index-level.spec.d.ts +2 -0
- package/dist/types/tests/store/index-level.spec.d.ts.map +1 -0
- package/dist/types/tests/store/message-store-level.spec.d.ts +2 -0
- package/dist/types/tests/store/message-store-level.spec.d.ts.map +1 -0
- package/dist/types/tests/store/message-store.spec.d.ts +2 -0
- package/dist/types/tests/store/message-store.spec.d.ts.map +1 -0
- package/dist/types/tests/store-dependent-tests.spec.d.ts +2 -0
- package/dist/types/tests/store-dependent-tests.spec.d.ts.map +1 -0
- package/dist/types/tests/test-event-stream.d.ts +22 -0
- package/dist/types/tests/test-event-stream.d.ts.map +1 -0
- package/dist/types/tests/test-stores.d.ts +33 -0
- package/dist/types/tests/test-stores.d.ts.map +1 -0
- package/dist/types/tests/test-suite.d.ts +18 -0
- package/dist/types/tests/test-suite.d.ts.map +1 -0
- package/dist/types/tests/utils/cid.spec.d.ts +2 -0
- package/dist/types/tests/utils/cid.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/data-stream.spec.d.ts +2 -0
- package/dist/types/tests/utils/data-stream.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/encryption.spec.d.ts +2 -0
- package/dist/types/tests/utils/encryption.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/filters.spec.d.ts +2 -0
- package/dist/types/tests/utils/filters.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/hd-key.spec.d.ts +2 -0
- package/dist/types/tests/utils/hd-key.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/jws.spec.d.ts +2 -0
- package/dist/types/tests/utils/jws.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/memory-cache.spec.d.ts +2 -0
- package/dist/types/tests/utils/memory-cache.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/messages.spec.d.ts +2 -0
- package/dist/types/tests/utils/messages.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/object.spec.d.ts +2 -0
- package/dist/types/tests/utils/object.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/poller.d.ts +21 -0
- package/dist/types/tests/utils/poller.d.ts.map +1 -0
- package/dist/types/tests/utils/private-key-signer.spec.d.ts +2 -0
- package/dist/types/tests/utils/private-key-signer.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/records.spec.d.ts +2 -0
- package/dist/types/tests/utils/records.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/secp256k1.spec.d.ts +2 -0
- package/dist/types/tests/utils/secp256k1.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/secp256r1.spec.d.ts +2 -0
- package/dist/types/tests/utils/secp256r1.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/test-data-generator.d.ts +342 -0
- package/dist/types/tests/utils/test-data-generator.d.ts.map +1 -0
- package/dist/types/tests/utils/test-stub-generator.d.ts +16 -0
- package/dist/types/tests/utils/test-stub-generator.d.ts.map +1 -0
- package/dist/types/tests/utils/time.spec.d.ts +2 -0
- package/dist/types/tests/utils/time.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/url.spec.d.ts +2 -0
- package/dist/types/tests/utils/url.spec.d.ts.map +1 -0
- package/dist/types/tests/validation/json-schemas/definitions.spec.d.ts +2 -0
- package/dist/types/tests/validation/json-schemas/definitions.spec.d.ts.map +1 -0
- package/dist/types/tests/validation/json-schemas/jwk/general-jwk.spec.d.ts +2 -0
- package/dist/types/tests/validation/json-schemas/jwk/general-jwk.spec.d.ts.map +1 -0
- package/dist/types/tests/validation/json-schemas/jwk/public-jwk.spec.d.ts +2 -0
- package/dist/types/tests/validation/json-schemas/jwk/public-jwk.spec.d.ts.map +1 -0
- package/dist/types/tests/validation/json-schemas/jwk-verification-method.spec.d.ts +2 -0
- package/dist/types/tests/validation/json-schemas/jwk-verification-method.spec.d.ts.map +1 -0
- package/dist/types/tests/validation/json-schemas/protocols/protocols-configure.spec.d.ts +2 -0
- package/dist/types/tests/validation/json-schemas/protocols/protocols-configure.spec.d.ts.map +1 -0
- package/dist/types/tests/validation/json-schemas/records/records-query.spec.d.ts +2 -0
- package/dist/types/tests/validation/json-schemas/records/records-query.spec.d.ts.map +1 -0
- package/dist/types/tests/validation/json-schemas/records/records-write.spec.d.ts +2 -0
- package/dist/types/tests/validation/json-schemas/records/records-write.spec.d.ts.map +1 -0
- package/package.json +167 -0
- package/src/core/abstract-message.ts +62 -0
- package/src/core/auth.ts +36 -0
- package/src/core/dwn-constant.ts +9 -0
- package/src/core/dwn-error.ts +167 -0
- package/src/core/grant-authorization.ts +148 -0
- package/src/core/message-reply.ts +41 -0
- package/src/core/message.ts +259 -0
- package/src/core/messages-grant-authorization.ts +134 -0
- package/src/core/protocol-authorization.ts +903 -0
- package/src/core/protocols-grant-authorization.ts +88 -0
- package/src/core/records-grant-authorization.ts +197 -0
- package/src/core/resumable-task-manager.ts +114 -0
- package/src/core/tenant-gate.ts +33 -0
- package/src/dwn.ts +264 -0
- package/src/enums/dwn-interface-method.ts +14 -0
- package/src/event-log/event-emitter-stream.ts +69 -0
- package/src/event-log/event-log-level.ts +72 -0
- package/src/handlers/messages-query.ts +67 -0
- package/src/handlers/messages-read.ts +103 -0
- package/src/handlers/messages-subscribe.ts +89 -0
- package/src/handlers/protocols-configure.ts +137 -0
- package/src/handlers/protocols-query.ts +82 -0
- package/src/handlers/records-delete.ts +124 -0
- package/src/handlers/records-query.ts +262 -0
- package/src/handlers/records-read.ts +187 -0
- package/src/handlers/records-subscribe.ts +218 -0
- package/src/handlers/records-write.ts +404 -0
- package/src/index.ts +67 -0
- package/src/interfaces/messages-query.ts +60 -0
- package/src/interfaces/messages-read.ts +63 -0
- package/src/interfaces/messages-subscribe.ts +64 -0
- package/src/interfaces/protocols-configure.ts +340 -0
- package/src/interfaces/protocols-query.ts +96 -0
- package/src/interfaces/records-delete.ts +117 -0
- package/src/interfaces/records-query.ts +131 -0
- package/src/interfaces/records-read.ts +100 -0
- package/src/interfaces/records-subscribe.ts +104 -0
- package/src/interfaces/records-write.ts +1072 -0
- package/src/jose/algorithms/signing/ed25519.ts +58 -0
- package/src/jose/algorithms/signing/signature-algorithms.ts +22 -0
- package/src/jose/jws/general/builder.ts +48 -0
- package/src/jose/jws/general/verifier.ts +112 -0
- package/src/protocols/permission-grant.ts +86 -0
- package/src/protocols/permission-request.ts +63 -0
- package/src/protocols/permissions.ts +508 -0
- package/src/schema-validator.ts +46 -0
- package/src/store/blockstore-level.ts +113 -0
- package/src/store/blockstore-mock.ts +80 -0
- package/src/store/data-store-level.ts +120 -0
- package/src/store/index-level.ts +691 -0
- package/src/store/level-wrapper.ts +272 -0
- package/src/store/message-store-level.ts +195 -0
- package/src/store/resumable-task-store-level.ts +120 -0
- package/src/store/storage-controller.ts +240 -0
- package/src/types/cache.ts +16 -0
- package/src/types/data-store.ts +64 -0
- package/src/types/event-log.ts +52 -0
- package/src/types/jose-types.ts +76 -0
- package/src/types/jws-types.ts +28 -0
- package/src/types/message-interface.ts +30 -0
- package/src/types/message-store.ts +57 -0
- package/src/types/message-types.ts +132 -0
- package/src/types/messages-types.ts +77 -0
- package/src/types/method-handler.ts +19 -0
- package/src/types/permission-types.ts +110 -0
- package/src/types/protocols-types.ts +177 -0
- package/src/types/query-types.ts +61 -0
- package/src/types/records-types.ts +263 -0
- package/src/types/resumable-task-store.ts +96 -0
- package/src/types/signer.ts +27 -0
- package/src/types/subscriptions.ts +34 -0
- package/src/utils/abort.ts +31 -0
- package/src/utils/array.ts +39 -0
- package/src/utils/cid.ts +101 -0
- package/src/utils/data-stream.ts +99 -0
- package/src/utils/encoder.ts +54 -0
- package/src/utils/encryption.ts +145 -0
- package/src/utils/filter.ts +245 -0
- package/src/utils/hd-key.ts +126 -0
- package/src/utils/jws.ts +95 -0
- package/src/utils/memory-cache.ts +31 -0
- package/src/utils/messages.ts +109 -0
- package/src/utils/object.ts +43 -0
- package/src/utils/private-key-signer.ts +72 -0
- package/src/utils/protocols.ts +50 -0
- package/src/utils/records.ts +559 -0
- package/src/utils/secp256k1.ts +157 -0
- package/src/utils/secp256r1.ts +142 -0
- package/src/utils/string.ts +13 -0
- package/src/utils/time.ts +78 -0
- package/src/utils/url.ts +65 -0
|
@@ -0,0 +1,454 @@
|
|
|
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
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
11
|
+
var t = {};
|
|
12
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
13
|
+
t[p] = s[p];
|
|
14
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
15
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
16
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
17
|
+
t[p[i]] = s[p[i]];
|
|
18
|
+
}
|
|
19
|
+
return t;
|
|
20
|
+
};
|
|
21
|
+
import { DateSort } from '../types/records-types.js';
|
|
22
|
+
import { Encoder } from './encoder.js';
|
|
23
|
+
import { Encryption } from './encryption.js';
|
|
24
|
+
import { FilterUtility } from './filter.js';
|
|
25
|
+
import { Jws } from './jws.js';
|
|
26
|
+
import { Message } from '../core/message.js';
|
|
27
|
+
import { PermissionGrant } from '../protocols/permission-grant.js';
|
|
28
|
+
import { removeUndefinedProperties } from './object.js';
|
|
29
|
+
import { Secp256k1 } from './secp256k1.js';
|
|
30
|
+
import { DwnError, DwnErrorCode } from '../core/dwn-error.js';
|
|
31
|
+
import { DwnInterfaceName, DwnMethodName } from '../enums/dwn-interface-method.js';
|
|
32
|
+
import { HdKey, KeyDerivationScheme } from './hd-key.js';
|
|
33
|
+
import { normalizeProtocolUrl, normalizeSchemaUrl } from './url.js';
|
|
34
|
+
/**
|
|
35
|
+
* Class containing useful utilities related to the Records interface.
|
|
36
|
+
*/
|
|
37
|
+
export class Records {
|
|
38
|
+
/**
|
|
39
|
+
* Checks if the given message is a `RecordsWriteMessage`.
|
|
40
|
+
*/
|
|
41
|
+
static isRecordsWrite(message) {
|
|
42
|
+
const isRecordsWrite = message.descriptor.interface === DwnInterfaceName.Records &&
|
|
43
|
+
message.descriptor.method === DwnMethodName.Write;
|
|
44
|
+
return isRecordsWrite;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Decrypts the encrypted data in a message reply using the given ancestor private key.
|
|
48
|
+
* @param ancestorPrivateKey Any ancestor private key in the key derivation path.
|
|
49
|
+
*/
|
|
50
|
+
static decrypt(recordsWrite, ancestorPrivateKey, cipherStream) {
|
|
51
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
const { encryption } = recordsWrite;
|
|
53
|
+
// look for an encrypted symmetric key that is encrypted by the public key corresponding to the given private key
|
|
54
|
+
const matchingEncryptedKey = encryption.keyEncryption.find(key => key.rootKeyId === ancestorPrivateKey.rootKeyId &&
|
|
55
|
+
key.derivationScheme === ancestorPrivateKey.derivationScheme);
|
|
56
|
+
if (matchingEncryptedKey === undefined) {
|
|
57
|
+
throw new DwnError(DwnErrorCode.RecordsDecryptNoMatchingKeyEncryptedFound, `Unable to find a symmetric key encrypted using key \
|
|
58
|
+
with ID '${ancestorPrivateKey.rootKeyId}' and '${ancestorPrivateKey.derivationScheme}' derivation scheme.`);
|
|
59
|
+
}
|
|
60
|
+
const fullDerivationPath = Records.constructKeyDerivationPath(matchingEncryptedKey.derivationScheme, recordsWrite);
|
|
61
|
+
// NOTE: right now only `ECIES-ES256K` algorithm is supported for asymmetric encryption,
|
|
62
|
+
// so we will assume that's the algorithm without additional switch/if statements
|
|
63
|
+
const leafPrivateKey = yield Records.derivePrivateKey(ancestorPrivateKey, fullDerivationPath);
|
|
64
|
+
const encryptedKeyBytes = Encoder.base64UrlToBytes(matchingEncryptedKey.encryptedKey);
|
|
65
|
+
const ephemeralPublicKey = Secp256k1.publicJwkToBytes(matchingEncryptedKey.ephemeralPublicKey);
|
|
66
|
+
const keyEncryptionInitializationVector = Encoder.base64UrlToBytes(matchingEncryptedKey.initializationVector);
|
|
67
|
+
const messageAuthenticationCode = Encoder.base64UrlToBytes(matchingEncryptedKey.messageAuthenticationCode);
|
|
68
|
+
const dataEncryptionKey = yield Encryption.eciesSecp256k1Decrypt({
|
|
69
|
+
ciphertext: encryptedKeyBytes,
|
|
70
|
+
ephemeralPublicKey,
|
|
71
|
+
initializationVector: keyEncryptionInitializationVector,
|
|
72
|
+
messageAuthenticationCode,
|
|
73
|
+
privateKey: leafPrivateKey
|
|
74
|
+
});
|
|
75
|
+
// NOTE: right now only `A256CTR` algorithm is supported for symmetric encryption,
|
|
76
|
+
// so we will assume that's the algorithm without additional switch/if statements
|
|
77
|
+
const dataEncryptionInitializationVector = Encoder.base64UrlToBytes(encryption.initializationVector);
|
|
78
|
+
const plaintextStream = yield Encryption.aes256CtrDecrypt(dataEncryptionKey, dataEncryptionInitializationVector, cipherStream);
|
|
79
|
+
return plaintextStream;
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Constructs full key derivation path using the specified scheme.
|
|
84
|
+
*/
|
|
85
|
+
static constructKeyDerivationPath(keyDerivationScheme, recordsWriteMessage) {
|
|
86
|
+
const descriptor = recordsWriteMessage.descriptor;
|
|
87
|
+
const contextId = recordsWriteMessage.contextId;
|
|
88
|
+
let fullDerivationPath;
|
|
89
|
+
if (keyDerivationScheme === KeyDerivationScheme.DataFormats) {
|
|
90
|
+
fullDerivationPath = Records.constructKeyDerivationPathUsingDataFormatsScheme(descriptor.schema, descriptor.dataFormat);
|
|
91
|
+
}
|
|
92
|
+
else if (keyDerivationScheme === KeyDerivationScheme.ProtocolPath) {
|
|
93
|
+
fullDerivationPath = Records.constructKeyDerivationPathUsingProtocolPathScheme(descriptor);
|
|
94
|
+
}
|
|
95
|
+
else if (keyDerivationScheme === KeyDerivationScheme.ProtocolContext) {
|
|
96
|
+
fullDerivationPath = Records.constructKeyDerivationPathUsingProtocolContextScheme(contextId);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
// `schemas` scheme
|
|
100
|
+
fullDerivationPath = Records.constructKeyDerivationPathUsingSchemasScheme(descriptor.schema);
|
|
101
|
+
}
|
|
102
|
+
return fullDerivationPath;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Constructs the full key derivation path using `dataFormats` scheme.
|
|
106
|
+
*/
|
|
107
|
+
static constructKeyDerivationPathUsingDataFormatsScheme(schema, dataFormat) {
|
|
108
|
+
if (schema !== undefined) {
|
|
109
|
+
return [
|
|
110
|
+
KeyDerivationScheme.DataFormats,
|
|
111
|
+
schema, // this is as spec-ed on TP27, the intent is to support sharing the key for just a specific data type under a schema
|
|
112
|
+
dataFormat
|
|
113
|
+
];
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
return [
|
|
117
|
+
KeyDerivationScheme.DataFormats,
|
|
118
|
+
dataFormat
|
|
119
|
+
];
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Constructs the full key derivation path using `protocolPath` scheme.
|
|
124
|
+
*/
|
|
125
|
+
static constructKeyDerivationPathUsingProtocolPathScheme(descriptor) {
|
|
126
|
+
// ensure `protocol` is defined
|
|
127
|
+
// NOTE: no need to check `protocolPath` and `contextId` because earlier code ensures that if `protocol` is defined, those are defined also
|
|
128
|
+
if (descriptor.protocol === undefined) {
|
|
129
|
+
throw new DwnError(DwnErrorCode.RecordsProtocolPathDerivationSchemeMissingProtocol, 'Unable to construct key derivation path using `protocols` scheme because `protocol` is missing.');
|
|
130
|
+
}
|
|
131
|
+
const protocolPathSegments = descriptor.protocolPath.split('/');
|
|
132
|
+
const fullDerivationPath = [
|
|
133
|
+
KeyDerivationScheme.ProtocolPath,
|
|
134
|
+
descriptor.protocol,
|
|
135
|
+
...protocolPathSegments
|
|
136
|
+
];
|
|
137
|
+
return fullDerivationPath;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Constructs the full key derivation path using `protocolContext` scheme.
|
|
141
|
+
*/
|
|
142
|
+
static constructKeyDerivationPathUsingProtocolContextScheme(contextId) {
|
|
143
|
+
if (contextId === undefined) {
|
|
144
|
+
throw new DwnError(DwnErrorCode.RecordsProtocolContextDerivationSchemeMissingContextId, 'Unable to construct key derivation path using `protocolContext` scheme because `contextId` is missing.');
|
|
145
|
+
}
|
|
146
|
+
// TODO: issue #683 -Extend key derivation support to include the full contextId (https://github.com/TBD54566975/dwn-sdk-js/issues/683)
|
|
147
|
+
const firstContextSegment = contextId.split('/')[0];
|
|
148
|
+
const fullDerivationPath = [
|
|
149
|
+
KeyDerivationScheme.ProtocolContext,
|
|
150
|
+
firstContextSegment
|
|
151
|
+
];
|
|
152
|
+
return fullDerivationPath;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Constructs the full key derivation path using `schemas` scheme.
|
|
156
|
+
*/
|
|
157
|
+
static constructKeyDerivationPathUsingSchemasScheme(schema) {
|
|
158
|
+
if (schema === undefined) {
|
|
159
|
+
throw new DwnError(DwnErrorCode.RecordsSchemasDerivationSchemeMissingSchema, 'Unable to construct key derivation path using `schemas` scheme because `schema` is missing.');
|
|
160
|
+
}
|
|
161
|
+
const fullDerivationPath = [
|
|
162
|
+
KeyDerivationScheme.Schemas,
|
|
163
|
+
schema
|
|
164
|
+
];
|
|
165
|
+
return fullDerivationPath;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Derives a descendant private key given an ancestor private key and the full absolute derivation path.
|
|
169
|
+
* NOTE: right now only `ECIES-ES256K` algorithm is supported for asymmetric encryption,
|
|
170
|
+
* so we will only derive SECP256K1 key without additional conditional checks
|
|
171
|
+
*/
|
|
172
|
+
static derivePrivateKey(ancestorPrivateKey, fullDescendantDerivationPath) {
|
|
173
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
174
|
+
var _a;
|
|
175
|
+
if (ancestorPrivateKey.derivedPrivateKey.crv !== 'secp256k1') {
|
|
176
|
+
throw new DwnError(DwnErrorCode.RecordsDerivePrivateKeyUnSupportedCurve, `Curve ${ancestorPrivateKey.derivedPrivateKey.crv} is not supported.`);
|
|
177
|
+
}
|
|
178
|
+
const ancestorPrivateKeyDerivationPath = (_a = ancestorPrivateKey.derivationPath) !== null && _a !== void 0 ? _a : [];
|
|
179
|
+
Records.validateAncestorKeyAndDescentKeyDerivationPathsMatch(ancestorPrivateKeyDerivationPath, fullDescendantDerivationPath);
|
|
180
|
+
const subDerivationPath = fullDescendantDerivationPath.slice(ancestorPrivateKeyDerivationPath.length);
|
|
181
|
+
const ancestorPrivateKeyBytes = Secp256k1.privateJwkToBytes(ancestorPrivateKey.derivedPrivateKey);
|
|
182
|
+
const leafPrivateKey = yield HdKey.derivePrivateKeyBytes(ancestorPrivateKeyBytes, subDerivationPath);
|
|
183
|
+
return leafPrivateKey;
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Validates that ancestor derivation path matches the descendant derivation path completely.
|
|
188
|
+
* @throws {DwnError} with `DwnErrorCode.RecordsInvalidAncestorKeyDerivationSegment` if fails validation.
|
|
189
|
+
*/
|
|
190
|
+
static validateAncestorKeyAndDescentKeyDerivationPathsMatch(ancestorKeyDerivationPath, descendantKeyDerivationPath) {
|
|
191
|
+
for (let i = 0; i < ancestorKeyDerivationPath.length; i++) {
|
|
192
|
+
const ancestorSegment = ancestorKeyDerivationPath[i];
|
|
193
|
+
const descendantSegment = descendantKeyDerivationPath[i];
|
|
194
|
+
if (ancestorSegment !== descendantSegment) {
|
|
195
|
+
throw new DwnError(DwnErrorCode.RecordsInvalidAncestorKeyDerivationSegment, `Ancestor key derivation segment '${ancestorSegment}' mismatches against the descendant key derivation segment '${descendantSegment}'.`);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Extracts the parent context ID from the given context ID.
|
|
201
|
+
*/
|
|
202
|
+
static getParentContextFromOfContextId(contextId) {
|
|
203
|
+
if (contextId === undefined) {
|
|
204
|
+
return undefined;
|
|
205
|
+
}
|
|
206
|
+
// NOTE: assumes the given contextId is a valid contextId in the form of `a/b/c/d`.
|
|
207
|
+
// `/a/b/c/d` or `a/b/c/d/` is not supported.
|
|
208
|
+
const lastIndex = contextId.lastIndexOf('/');
|
|
209
|
+
// If '/' is not found, this means this is a root record, so return an empty string as the parent context ID.
|
|
210
|
+
if (lastIndex === -1) {
|
|
211
|
+
return '';
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
return contextId.substring(0, lastIndex);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Normalizes the protocol and schema URLs within a provided RecordsFilter and returns a copy of RecordsFilter with the modified values.
|
|
219
|
+
*
|
|
220
|
+
* @param filter incoming RecordsFilter to normalize.
|
|
221
|
+
* @returns {RecordsFilter} a copy of the incoming RecordsFilter with the normalized properties.
|
|
222
|
+
*/
|
|
223
|
+
static normalizeFilter(filter) {
|
|
224
|
+
let protocol;
|
|
225
|
+
if (filter.protocol === undefined) {
|
|
226
|
+
protocol = undefined;
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
protocol = normalizeProtocolUrl(filter.protocol);
|
|
230
|
+
}
|
|
231
|
+
let schema;
|
|
232
|
+
if (filter.schema === undefined) {
|
|
233
|
+
schema = undefined;
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
schema = normalizeSchemaUrl(filter.schema);
|
|
237
|
+
}
|
|
238
|
+
const filterCopy = Object.assign(Object.assign({}, filter), { protocol,
|
|
239
|
+
schema });
|
|
240
|
+
removeUndefinedProperties(filterCopy);
|
|
241
|
+
return filterCopy;
|
|
242
|
+
}
|
|
243
|
+
static isStartsWithFilter(filter) {
|
|
244
|
+
return typeof filter === 'object' && ('startsWith' in filter && typeof filter.startsWith === 'string');
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* This will create individual keys for each of the tags that look like `tag.tag_property`
|
|
248
|
+
*/
|
|
249
|
+
static buildTagIndexes(tags) {
|
|
250
|
+
const tagValues = {};
|
|
251
|
+
for (const property in tags) {
|
|
252
|
+
const value = tags[property];
|
|
253
|
+
tagValues[`tag.${property}`] = value;
|
|
254
|
+
}
|
|
255
|
+
return tagValues;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* This will create individual keys for each of the tag filters that look like `tag.tag_filter_property`
|
|
259
|
+
*/
|
|
260
|
+
static convertTagsFilter(tags) {
|
|
261
|
+
const tagValues = {};
|
|
262
|
+
for (const property in tags) {
|
|
263
|
+
const value = tags[property];
|
|
264
|
+
tagValues[`tag.${property}`] = this.isStartsWithFilter(value) ? FilterUtility.constructPrefixFilterAsRangeFilter(value.startsWith) : value;
|
|
265
|
+
}
|
|
266
|
+
return tagValues;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Converts an incoming RecordsFilter into a Filter usable by MessageStore.
|
|
270
|
+
*
|
|
271
|
+
* @param filter A RecordsFilter
|
|
272
|
+
* @returns {Filter} a generic Filter able to be used with MessageStore.
|
|
273
|
+
*/
|
|
274
|
+
static convertFilter(filter, dateSort) {
|
|
275
|
+
// we process tags separately from the remaining filters.
|
|
276
|
+
// this is because we prepend each field within the `tags` object with a `tag.` to avoid name clashing with first-class index keys.
|
|
277
|
+
// so `{ tags: { tag1: 'val1', tag2: [1,2] }}` would translate to `'tag.tag1':'val1'` and `'tag.tag2': [1,2]`
|
|
278
|
+
const { tags } = filter, remainingFilter = __rest(filter, ["tags"]);
|
|
279
|
+
let tagsFilter = {};
|
|
280
|
+
if (tags !== undefined) {
|
|
281
|
+
// this will namespace the tags so the properties are filtered as `tag.property_name`
|
|
282
|
+
tagsFilter = Object.assign({}, this.convertTagsFilter(tags));
|
|
283
|
+
}
|
|
284
|
+
const filterCopy = Object.assign(Object.assign({}, remainingFilter), tagsFilter);
|
|
285
|
+
// extract properties that needs conversion
|
|
286
|
+
const { dateCreated, datePublished, dateUpdated, contextId } = filter;
|
|
287
|
+
const dateCreatedFilter = dateCreated ? FilterUtility.convertRangeCriterion(dateCreated) : undefined;
|
|
288
|
+
if (dateCreatedFilter) {
|
|
289
|
+
filterCopy.dateCreated = dateCreatedFilter;
|
|
290
|
+
}
|
|
291
|
+
const datePublishedFilter = datePublished ? FilterUtility.convertRangeCriterion(datePublished) : undefined;
|
|
292
|
+
if (datePublishedFilter) {
|
|
293
|
+
// only return published records when filtering with a datePublished range.
|
|
294
|
+
filterCopy.published = true;
|
|
295
|
+
filterCopy.datePublished = datePublishedFilter;
|
|
296
|
+
}
|
|
297
|
+
// if we sort by `PublishedAscending` or `PublishedDescending` we must filter for only published records.
|
|
298
|
+
if (filterCopy.published !== true && (dateSort === DateSort.PublishedAscending || dateSort === DateSort.PublishedDescending)) {
|
|
299
|
+
filterCopy.published = true;
|
|
300
|
+
}
|
|
301
|
+
const messageTimestampFilter = dateUpdated ? FilterUtility.convertRangeCriterion(dateUpdated) : undefined;
|
|
302
|
+
if (messageTimestampFilter) {
|
|
303
|
+
filterCopy.messageTimestamp = messageTimestampFilter;
|
|
304
|
+
delete filterCopy.dateUpdated;
|
|
305
|
+
}
|
|
306
|
+
// contextId conversion to prefix match
|
|
307
|
+
const contextIdPrefixFilter = contextId ? FilterUtility.constructPrefixFilterAsRangeFilter(contextId) : undefined;
|
|
308
|
+
if (contextIdPrefixFilter) {
|
|
309
|
+
filterCopy.contextId = contextIdPrefixFilter;
|
|
310
|
+
}
|
|
311
|
+
// if the author filter is an array and it's empty, we should remove it from the filter as it will always return no results.
|
|
312
|
+
if (Array.isArray(filterCopy.author) && filterCopy.author.length === 0) {
|
|
313
|
+
delete filterCopy.author;
|
|
314
|
+
}
|
|
315
|
+
// if the recipient filter is an array and it's empty, we should remove it from the filter as it will always return no results.
|
|
316
|
+
if (Array.isArray(filterCopy.recipient) && filterCopy.recipient.length === 0) {
|
|
317
|
+
delete filterCopy.recipient;
|
|
318
|
+
}
|
|
319
|
+
return filterCopy;
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Validates the referential integrity of both author-delegated grant and owner-delegated grant.
|
|
323
|
+
* @param authorSignaturePayload Decoded payload of the author signature of the message. Pass `undefined` if message is not signed.
|
|
324
|
+
* Passed purely as a performance optimization so we don't have to decode the signature payload again.
|
|
325
|
+
* @param ownerSignaturePayload Decoded payload of the owner signature of the message. Pass `undefined` if no owner signature is present.
|
|
326
|
+
* Passed purely as a performance optimization so we don't have to decode the owner signature payload again.
|
|
327
|
+
*/
|
|
328
|
+
static validateDelegatedGrantReferentialIntegrity(message, authorSignaturePayload, ownerSignaturePayload) {
|
|
329
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
330
|
+
var _a, _b;
|
|
331
|
+
// `deletedGrantId` in the payload of the message signature and `authorDelegatedGrant` in `authorization` must both exist or be both undefined
|
|
332
|
+
const authorDelegatedGrantIdDefined = (authorSignaturePayload === null || authorSignaturePayload === void 0 ? void 0 : authorSignaturePayload.delegatedGrantId) !== undefined;
|
|
333
|
+
const authorDelegatedGrantDefined = ((_a = message.authorization) === null || _a === void 0 ? void 0 : _a.authorDelegatedGrant) !== undefined;
|
|
334
|
+
if (authorDelegatedGrantIdDefined !== authorDelegatedGrantDefined) {
|
|
335
|
+
throw new DwnError(DwnErrorCode.RecordsAuthorDelegatedGrantAndIdExistenceMismatch, `delegatedGrantId in message (author) signature and authorDelegatedGrant must both exist or be undefined. \
|
|
336
|
+
delegatedGrantId in message (author) signature defined: ${authorDelegatedGrantIdDefined}, \
|
|
337
|
+
authorDelegatedGrant defined: ${authorDelegatedGrantDefined}`);
|
|
338
|
+
}
|
|
339
|
+
if (authorDelegatedGrantDefined) {
|
|
340
|
+
const delegatedGrant = message.authorization.authorDelegatedGrant;
|
|
341
|
+
const permissionGrant = yield PermissionGrant.parse(delegatedGrant);
|
|
342
|
+
if (permissionGrant.delegated !== true) {
|
|
343
|
+
throw new DwnError(DwnErrorCode.RecordsAuthorDelegatedGrantNotADelegatedGrant, `The owner delegated grant given is not a delegated grant.`);
|
|
344
|
+
}
|
|
345
|
+
const grantedTo = delegatedGrant.descriptor.recipient;
|
|
346
|
+
const signer = Message.getSigner(message);
|
|
347
|
+
if (grantedTo !== signer) {
|
|
348
|
+
throw new DwnError(DwnErrorCode.RecordsAuthorDelegatedGrantGrantedToAndOwnerSignatureMismatch, `grantedTo ${grantedTo} in author delegated grant must be the same as the signer ${signer} of the message signature.`);
|
|
349
|
+
}
|
|
350
|
+
const delegateGrantCid = yield Message.getCid(delegatedGrant);
|
|
351
|
+
if (delegateGrantCid !== authorSignaturePayload.delegatedGrantId) {
|
|
352
|
+
throw new DwnError(DwnErrorCode.RecordsAuthorDelegatedGrantCidMismatch, `CID of the author delegated grant ${delegateGrantCid} must be the same as \
|
|
353
|
+
the delegatedGrantId ${authorSignaturePayload.delegatedGrantId} in the message signature.`);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
// repeat the same checks for the owner signature below
|
|
357
|
+
// `deletedGrantId` in the payload of the owner signature and `ownerDelegatedGrant` in `authorization` must both exist or be both undefined
|
|
358
|
+
const ownerDelegatedGrantIdDefined = (ownerSignaturePayload === null || ownerSignaturePayload === void 0 ? void 0 : ownerSignaturePayload.delegatedGrantId) !== undefined;
|
|
359
|
+
const ownerDelegatedGrantDefined = ((_b = message.authorization) === null || _b === void 0 ? void 0 : _b.ownerDelegatedGrant) !== undefined;
|
|
360
|
+
if (ownerDelegatedGrantIdDefined !== ownerDelegatedGrantDefined) {
|
|
361
|
+
throw new DwnError(DwnErrorCode.RecordsOwnerDelegatedGrantAndIdExistenceMismatch, `delegatedGrantId in owner signature and ownerDelegatedGrant must both exist or be undefined. \
|
|
362
|
+
delegatedGrantId in owner signature defined: ${ownerDelegatedGrantIdDefined}, \
|
|
363
|
+
ownerDelegatedGrant defined: ${ownerDelegatedGrantDefined}`);
|
|
364
|
+
}
|
|
365
|
+
if (ownerDelegatedGrantDefined) {
|
|
366
|
+
const delegatedGrant = message.authorization.ownerDelegatedGrant;
|
|
367
|
+
const permissionGrant = yield PermissionGrant.parse(delegatedGrant);
|
|
368
|
+
if (permissionGrant.delegated !== true) {
|
|
369
|
+
throw new DwnError(DwnErrorCode.RecordsOwnerDelegatedGrantNotADelegatedGrant, `The owner delegated grant given is not a delegated grant.`);
|
|
370
|
+
}
|
|
371
|
+
const grantedTo = delegatedGrant.descriptor.recipient;
|
|
372
|
+
const signer = Jws.getSignerDid(message.authorization.ownerSignature.signatures[0]);
|
|
373
|
+
if (grantedTo !== signer) {
|
|
374
|
+
throw new DwnError(DwnErrorCode.RecordsOwnerDelegatedGrantGrantedToAndOwnerSignatureMismatch, `grantedTo ${grantedTo} in owner delegated grant must be the same as the signer ${signer} of the owner signature.`);
|
|
375
|
+
}
|
|
376
|
+
const delegateGrantCid = yield Message.getCid(delegatedGrant);
|
|
377
|
+
if (delegateGrantCid !== ownerSignaturePayload.delegatedGrantId) {
|
|
378
|
+
throw new DwnError(DwnErrorCode.RecordsOwnerDelegatedGrantCidMismatch, `CID of the owner delegated grant ${delegateGrantCid} must be the same as \
|
|
379
|
+
the delegatedGrantId ${ownerSignaturePayload.delegatedGrantId} in the owner signature.`);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Determines if signature payload contains a protocolRole and should be authorized as such.
|
|
386
|
+
*/
|
|
387
|
+
static shouldProtocolAuthorize(signaturePayload) {
|
|
388
|
+
return signaturePayload.protocolRole !== undefined;
|
|
389
|
+
}
|
|
390
|
+
/**
|
|
391
|
+
* Checks if the filter supports returning published records.
|
|
392
|
+
*/
|
|
393
|
+
static filterIncludesPublishedRecords(filter) {
|
|
394
|
+
// NOTE: published records should still be returned when `published` and `datePublished` range are both undefined.
|
|
395
|
+
return filter.datePublished !== undefined || filter.published !== false;
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Checks if the filter supports returning unpublished records.
|
|
399
|
+
*/
|
|
400
|
+
static filterIncludesUnpublishedRecords(filter) {
|
|
401
|
+
// When `published` and `datePublished` range are both undefined, unpublished records can be returned.
|
|
402
|
+
if (filter.datePublished === undefined && filter.published === undefined) {
|
|
403
|
+
return true;
|
|
404
|
+
}
|
|
405
|
+
return filter.published === false;
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* Checks if the given RecordsDelete message can be performed against a record with the given newest existing state.
|
|
409
|
+
*/
|
|
410
|
+
static canPerformDeleteAgainstRecord(deleteToBePerformed, newestExistingMessage) {
|
|
411
|
+
if (newestExistingMessage === undefined) {
|
|
412
|
+
return false;
|
|
413
|
+
}
|
|
414
|
+
// can't perform delete if:
|
|
415
|
+
// attempting to delete on an already deleted record; or
|
|
416
|
+
// attempting to prune on an already pruned record;
|
|
417
|
+
if (newestExistingMessage.descriptor.method === DwnMethodName.Delete) {
|
|
418
|
+
if (deleteToBePerformed.descriptor.prune !== true) {
|
|
419
|
+
return false;
|
|
420
|
+
}
|
|
421
|
+
else if (newestExistingMessage.descriptor.prune === true) {
|
|
422
|
+
return false;
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
return true;
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* Checks whether or not the incoming records query filter should build an unpublished recipient MessageStore filter.
|
|
429
|
+
*
|
|
430
|
+
* @param filter The incoming RecordsFilter to evaluate against.
|
|
431
|
+
* @param recipient The recipient to check against the filter, typically the query/subscribe message author.
|
|
432
|
+
* @returns {boolean} True if the filter contains the recipient, or if the recipient filter is undefined/empty.
|
|
433
|
+
*/
|
|
434
|
+
static shouldBuildUnpublishedRecipientFilter(filter, recipient) {
|
|
435
|
+
const { recipient: recipientFilter } = filter;
|
|
436
|
+
return Array.isArray(recipientFilter) ?
|
|
437
|
+
recipientFilter.length === 0 || recipientFilter.includes(recipient) :
|
|
438
|
+
recipientFilter === undefined || recipientFilter === recipient;
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Checks whether or not the incoming records query filter should build an unpublished author MessageStore filter.
|
|
442
|
+
*
|
|
443
|
+
* @param filter The incoming RecordsFilter to evaluate against.
|
|
444
|
+
* @param author The author to check against the filter, typically the query/subscribe message author.
|
|
445
|
+
* @returns {boolean} True if the filter contains the author, or if the author filter is undefined/empty.
|
|
446
|
+
*/
|
|
447
|
+
static shouldBuildUnpublishedAuthorFilter(filter, author) {
|
|
448
|
+
const { author: authorFilter } = filter;
|
|
449
|
+
return Array.isArray(authorFilter) ?
|
|
450
|
+
authorFilter.length === 0 || authorFilter.includes(author) :
|
|
451
|
+
authorFilter === undefined || authorFilter === author;
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
//# sourceMappingURL=records.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"records.js","sourceRoot":"","sources":["../../../../src/utils/records.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,166 @@
|
|
|
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
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
11
|
+
var t = {};
|
|
12
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
13
|
+
t[p] = s[p];
|
|
14
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
15
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
16
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
17
|
+
t[p[i]] = s[p[i]];
|
|
18
|
+
}
|
|
19
|
+
return t;
|
|
20
|
+
};
|
|
21
|
+
import * as secp256k1 from '@noble/secp256k1';
|
|
22
|
+
import { Encoder } from '../utils/encoder.js';
|
|
23
|
+
import { sha256 } from 'multiformats/hashes/sha2';
|
|
24
|
+
import { DwnError, DwnErrorCode } from '../core/dwn-error.js';
|
|
25
|
+
/**
|
|
26
|
+
* Class containing SECP256K1 related utility methods.
|
|
27
|
+
*/
|
|
28
|
+
export class Secp256k1 {
|
|
29
|
+
/**
|
|
30
|
+
* Validates the given JWK is a SECP256K1 key.
|
|
31
|
+
* @throws {Error} if fails validation.
|
|
32
|
+
*/
|
|
33
|
+
static validateKey(jwk) {
|
|
34
|
+
if (jwk.kty !== 'EC' || jwk.crv !== 'secp256k1') {
|
|
35
|
+
throw new DwnError(DwnErrorCode.Secp256k1KeyNotValid, 'Invalid SECP256K1 JWK: `kty` MUST be `EC`. `crv` MUST be `secp256k1`');
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Converts a public key in bytes into a JWK.
|
|
40
|
+
*/
|
|
41
|
+
static publicKeyToJwk(publicKeyBytes) {
|
|
42
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
43
|
+
// ensure public key is in uncompressed format so we can convert it into both x and y value
|
|
44
|
+
let uncompressedPublicKeyBytes;
|
|
45
|
+
if (publicKeyBytes.byteLength === 33) {
|
|
46
|
+
// this means given key is compressed
|
|
47
|
+
const curvePoints = secp256k1.ProjectivePoint.fromHex(publicKeyBytes);
|
|
48
|
+
uncompressedPublicKeyBytes = curvePoints.toRawBytes(false); // isCompressed = false
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
uncompressedPublicKeyBytes = publicKeyBytes;
|
|
52
|
+
}
|
|
53
|
+
// the first byte is a header that indicates whether the key is uncompressed (0x04 if uncompressed), we can safely ignore
|
|
54
|
+
// bytes 1 - 32 represent X
|
|
55
|
+
// bytes 33 - 64 represent Y
|
|
56
|
+
// skip the first byte because it's used as a header to indicate whether the key is uncompressed
|
|
57
|
+
const x = Encoder.bytesToBase64Url(uncompressedPublicKeyBytes.subarray(1, 33));
|
|
58
|
+
const y = Encoder.bytesToBase64Url(uncompressedPublicKeyBytes.subarray(33, 65));
|
|
59
|
+
const publicJwk = {
|
|
60
|
+
alg: 'ES256K',
|
|
61
|
+
kty: 'EC',
|
|
62
|
+
crv: 'secp256k1',
|
|
63
|
+
x,
|
|
64
|
+
y
|
|
65
|
+
};
|
|
66
|
+
return publicJwk;
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Converts a private key in bytes into a JWK.
|
|
71
|
+
*/
|
|
72
|
+
static privateKeyToJwk(privateKeyBytes) {
|
|
73
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
74
|
+
const publicKeyBytes = yield Secp256k1.getPublicKey(privateKeyBytes);
|
|
75
|
+
const jwk = yield Secp256k1.publicKeyToJwk(publicKeyBytes);
|
|
76
|
+
jwk.d = Encoder.bytesToBase64Url(privateKeyBytes);
|
|
77
|
+
return jwk;
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Creates a compressed key in raw bytes from the given SECP256K1 JWK.
|
|
82
|
+
*/
|
|
83
|
+
static publicJwkToBytes(publicJwk) {
|
|
84
|
+
const x = Encoder.base64UrlToBytes(publicJwk.x);
|
|
85
|
+
const y = Encoder.base64UrlToBytes(publicJwk.y);
|
|
86
|
+
return secp256k1.ProjectivePoint.fromAffine({
|
|
87
|
+
x: secp256k1.etc.bytesToNumberBE(x),
|
|
88
|
+
y: secp256k1.etc.bytesToNumberBE(y)
|
|
89
|
+
}).toRawBytes(true);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Creates a private key in raw bytes from the given SECP256K1 JWK.
|
|
93
|
+
*/
|
|
94
|
+
static privateJwkToBytes(privateJwk) {
|
|
95
|
+
const privateKey = Encoder.base64UrlToBytes(privateJwk.d);
|
|
96
|
+
return privateKey;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Signs the provided content using the provided JWK.
|
|
100
|
+
*/
|
|
101
|
+
static sign(content, privateJwk) {
|
|
102
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
103
|
+
Secp256k1.validateKey(privateJwk);
|
|
104
|
+
// the underlying lib expects us to hash the content ourselves:
|
|
105
|
+
// https://github.com/paulmillr/noble-secp256k1/blob/97aa518b9c12563544ea87eba471b32ecf179916/index.ts#L1160
|
|
106
|
+
const hashedContent = yield sha256.encode(content);
|
|
107
|
+
const privateKeyBytes = Secp256k1.privateJwkToBytes(privateJwk);
|
|
108
|
+
return (yield secp256k1.signAsync(hashedContent, privateKeyBytes)).toCompactRawBytes();
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Verifies a signature against the provided payload hash and public key.
|
|
113
|
+
* @returns a boolean indicating whether the signature is valid.
|
|
114
|
+
*/
|
|
115
|
+
static verify(content, signature, publicJwk) {
|
|
116
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
117
|
+
Secp256k1.validateKey(publicJwk);
|
|
118
|
+
const publicKeyBytes = Secp256k1.publicJwkToBytes(publicJwk);
|
|
119
|
+
const hashedContent = yield sha256.encode(content);
|
|
120
|
+
return secp256k1.verify(signature, hashedContent, publicKeyBytes, { lowS: false });
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Generates a random key pair in JWK format.
|
|
125
|
+
*/
|
|
126
|
+
static generateKeyPair() {
|
|
127
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
128
|
+
const privateKeyBytes = secp256k1.utils.randomPrivateKey();
|
|
129
|
+
const publicKeyBytes = secp256k1.getPublicKey(privateKeyBytes, false); // `false` = uncompressed
|
|
130
|
+
const d = Encoder.bytesToBase64Url(privateKeyBytes);
|
|
131
|
+
const publicJwk = yield Secp256k1.publicKeyToJwk(publicKeyBytes);
|
|
132
|
+
const privateJwk = Object.assign(Object.assign({}, publicJwk), { d });
|
|
133
|
+
return { publicJwk, privateJwk };
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Generates key pair in raw bytes, where the `publicKey` is compressed.
|
|
138
|
+
*/
|
|
139
|
+
static generateKeyPairRaw() {
|
|
140
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
141
|
+
const privateKey = secp256k1.utils.randomPrivateKey();
|
|
142
|
+
const publicKey = secp256k1.getPublicKey(privateKey, true); // `true` = compressed
|
|
143
|
+
return { publicKey, privateKey };
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Gets the compressed public key of the given private key.
|
|
148
|
+
*/
|
|
149
|
+
static getPublicKey(privateKey) {
|
|
150
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
151
|
+
const publicKey = secp256k1.getPublicKey(privateKey, true); // `true` = compressed
|
|
152
|
+
return publicKey;
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Gets the public JWK of the given private JWK.
|
|
157
|
+
*/
|
|
158
|
+
static getPublicJwk(privateKeyJwk) {
|
|
159
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
160
|
+
// strip away `d`
|
|
161
|
+
const { d: _d } = privateKeyJwk, publicKey = __rest(privateKeyJwk, ["d"]);
|
|
162
|
+
return publicKey;
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=secp256k1.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secp256k1.js","sourceRoot":"","sources":["../../../../src/utils/secp256k1.ts"],"names":[],"mappings":"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"}
|