@abaxxtech/id 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +31 -0
- package/README.npm.md +31 -0
- package/dist/bundles/dwn.js +83 -0
- package/dist/cjs/index.js +31250 -0
- package/dist/cjs/package.json +1 -0
- package/dist/esm/generated/precompiled-validators.js +7820 -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 +37 -0
- package/dist/esm/src/core/abstract-message.js.map +1 -0
- package/dist/esm/src/core/auth.js +97 -0
- package/dist/esm/src/core/auth.js.map +1 -0
- package/dist/esm/src/core/dwn-constant.js +8 -0
- package/dist/esm/src/core/dwn-constant.js.map +1 -0
- package/dist/esm/src/core/dwn-error.js +138 -0
- package/dist/esm/src/core/dwn-error.js.map +1 -0
- package/dist/esm/src/core/grant-authorization.js +108 -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 +200 -0
- package/dist/esm/src/core/message.js.map +1 -0
- package/dist/esm/src/core/protocol-authorization.js +449 -0
- package/dist/esm/src/core/protocol-authorization.js.map +1 -0
- package/dist/esm/src/core/records-grant-authorization.js +106 -0
- package/dist/esm/src/core/records-grant-authorization.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/did/did-dht-resolver.js +241 -0
- package/dist/esm/src/did/did-dht-resolver.js.map +1 -0
- package/dist/esm/src/did/did-ion-resolver.js +53 -0
- package/dist/esm/src/did/did-ion-resolver.js.map +1 -0
- package/dist/esm/src/did/did-key-resolver.js +135 -0
- package/dist/esm/src/did/did-key-resolver.js.map +1 -0
- package/dist/esm/src/did/did-resolver.js +70 -0
- package/dist/esm/src/did/did-resolver.js.map +1 -0
- package/dist/esm/src/did/did.js +36 -0
- package/dist/esm/src/did/did.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 +22 -0
- package/dist/esm/src/enums/dwn-interface-method.js.map +1 -0
- package/dist/esm/src/event-log/event-log-level.js +112 -0
- package/dist/esm/src/event-log/event-log-level.js.map +1 -0
- package/dist/esm/src/handlers/events-get.js +48 -0
- package/dist/esm/src/handlers/events-get.js.map +1 -0
- package/dist/esm/src/handlers/messages-get.js +76 -0
- package/dist/esm/src/handlers/messages-get.js.map +1 -0
- package/dist/esm/src/handlers/permissions-grant.js +62 -0
- package/dist/esm/src/handlers/permissions-grant.js.map +1 -0
- package/dist/esm/src/handlers/permissions-request.js +63 -0
- package/dist/esm/src/handlers/permissions-request.js.map +1 -0
- package/dist/esm/src/handlers/permissions-revoke.js +114 -0
- package/dist/esm/src/handlers/permissions-revoke.js.map +1 -0
- package/dist/esm/src/handlers/protocols-configure.js +102 -0
- package/dist/esm/src/handlers/protocols-configure.js.map +1 -0
- package/dist/esm/src/handlers/protocols-query.js +72 -0
- package/dist/esm/src/handlers/protocols-query.js.map +1 -0
- package/dist/esm/src/handlers/records-delete.js +119 -0
- package/dist/esm/src/handlers/records-delete.js.map +1 -0
- package/dist/esm/src/handlers/records-query.js +206 -0
- package/dist/esm/src/handlers/records-query.js.map +1 -0
- package/dist/esm/src/handlers/records-read.js +118 -0
- package/dist/esm/src/handlers/records-read.js.map +1 -0
- package/dist/esm/src/handlers/records-write.js +252 -0
- package/dist/esm/src/handlers/records-write.js.map +1 -0
- package/dist/esm/src/index.js +43 -0
- package/dist/esm/src/index.js.map +1 -0
- package/dist/esm/src/interfaces/events-get.js +41 -0
- package/dist/esm/src/interfaces/events-get.js.map +1 -0
- package/dist/esm/src/interfaces/messages-get.js +58 -0
- package/dist/esm/src/interfaces/messages-get.js.map +1 -0
- package/dist/esm/src/interfaces/permissions-grant.js +130 -0
- package/dist/esm/src/interfaces/permissions-grant.js.map +1 -0
- package/dist/esm/src/interfaces/permissions-request.js +47 -0
- package/dist/esm/src/interfaces/permissions-request.js.map +1 -0
- package/dist/esm/src/interfaces/permissions-revoke.js +47 -0
- package/dist/esm/src/interfaces/permissions-revoke.js.map +1 -0
- package/dist/esm/src/interfaces/protocols-configure.js +149 -0
- package/dist/esm/src/interfaces/protocols-configure.js.map +1 -0
- package/dist/esm/src/interfaces/protocols-query.js +80 -0
- package/dist/esm/src/interfaces/protocols-query.js.map +1 -0
- package/dist/esm/src/interfaces/records-delete.js +56 -0
- package/dist/esm/src/interfaces/records-delete.js.map +1 -0
- package/dist/esm/src/interfaces/records-query.js +81 -0
- package/dist/esm/src/interfaces/records-query.js.map +1 -0
- package/dist/esm/src/interfaces/records-read.js +65 -0
- package/dist/esm/src/interfaces/records-read.js.map +1 -0
- package/dist/esm/src/interfaces/records-write.js +677 -0
- package/dist/esm/src/interfaces/records-write.js.map +1 -0
- package/dist/esm/src/jose/algorithms/signing/ed25519.js +54 -0
- package/dist/esm/src/jose/algorithms/signing/ed25519.js.map +1 -0
- package/dist/esm/src/jose/algorithms/signing/signature-algorithms.js +13 -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/signer.js +36 -0
- package/dist/esm/src/jose/jws/general/signer.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/schema-validator.js +28 -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/data-store-level.js +192 -0
- package/dist/esm/src/store/data-store-level.js.map +1 -0
- package/dist/esm/src/store/index-level.js +302 -0
- package/dist/esm/src/store/index-level.js.map +1 -0
- package/dist/esm/src/store/level-wrapper.js +296 -0
- package/dist/esm/src/store/level-wrapper.js.map +1 -0
- package/dist/esm/src/store/message-store-level.js +236 -0
- package/dist/esm/src/store/message-store-level.js.map +1 -0
- package/dist/esm/src/store/storage-controller.js +69 -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/delegated-grant-message.js +2 -0
- package/dist/esm/src/types/delegated-grant-message.js.map +1 -0
- package/dist/esm/src/types/did-types.js +2 -0
- package/dist/esm/src/types/did-types.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/event-types.js +2 -0
- package/dist/esm/src/types/event-types.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 +6 -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/permissions-grant-descriptor.js +6 -0
- package/dist/esm/src/types/permissions-grant-descriptor.js.map +1 -0
- package/dist/esm/src/types/permissions-types.js +2 -0
- package/dist/esm/src/types/permissions-types.js.map +1 -0
- package/dist/esm/src/types/protocols-types.js +15 -0
- package/dist/esm/src/types/protocols-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/signer.js +2 -0
- package/dist/esm/src/types/signer.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 +88 -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/hd-key.js +60 -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/object.js +50 -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 +267 -0
- package/dist/esm/src/utils/records.js.map +1 -0
- package/dist/esm/src/utils/secp256k1.js +219 -0
- package/dist/esm/src/utils/secp256k1.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 +84 -0
- package/dist/esm/src/utils/time.js.map +1 -0
- package/dist/esm/src/utils/url.js +63 -0
- package/dist/esm/src/utils/url.js.map +1 -0
- package/dist/esm/tests/core/auth.spec.js +25 -0
- package/dist/esm/tests/core/auth.spec.js.map +1 -0
- package/dist/esm/tests/core/message-reply.spec.js +19 -0
- package/dist/esm/tests/core/message-reply.spec.js.map +1 -0
- package/dist/esm/tests/core/message.spec.js +85 -0
- package/dist/esm/tests/core/message.spec.js.map +1 -0
- package/dist/esm/tests/did/did-ion-resolver.spec.js +82 -0
- package/dist/esm/tests/did/did-ion-resolver.spec.js.map +1 -0
- package/dist/esm/tests/did/did-key-resolver.spec.js +74 -0
- package/dist/esm/tests/did/did-key-resolver.spec.js.map +1 -0
- package/dist/esm/tests/did/did-resolver.spec.js +84 -0
- package/dist/esm/tests/did/did-resolver.spec.js.map +1 -0
- package/dist/esm/tests/did/did.spec.js +22 -0
- package/dist/esm/tests/did/did.spec.js.map +1 -0
- package/dist/esm/tests/dwn.spec.js +252 -0
- package/dist/esm/tests/dwn.spec.js.map +1 -0
- package/dist/esm/tests/end-to-end-tests.spec.js +218 -0
- package/dist/esm/tests/end-to-end-tests.spec.js.map +1 -0
- package/dist/esm/tests/event-log/event-log-level.spec.js +137 -0
- package/dist/esm/tests/event-log/event-log-level.spec.js.map +1 -0
- package/dist/esm/tests/handlers/events-get.spec.js +108 -0
- package/dist/esm/tests/handlers/events-get.spec.js.map +1 -0
- package/dist/esm/tests/handlers/messages-get.spec.js +209 -0
- package/dist/esm/tests/handlers/messages-get.spec.js.map +1 -0
- package/dist/esm/tests/handlers/permissions-grant.spec.js +249 -0
- package/dist/esm/tests/handlers/permissions-grant.spec.js.map +1 -0
- package/dist/esm/tests/handlers/permissions-request.spec.js +132 -0
- package/dist/esm/tests/handlers/permissions-request.spec.js.map +1 -0
- package/dist/esm/tests/handlers/permissions-revoke.spec.js +311 -0
- package/dist/esm/tests/handlers/permissions-revoke.spec.js.map +1 -0
- package/dist/esm/tests/handlers/protocols-configure.spec.js +254 -0
- package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -0
- package/dist/esm/tests/handlers/protocols-query.spec.js +373 -0
- package/dist/esm/tests/handlers/protocols-query.spec.js.map +1 -0
- package/dist/esm/tests/handlers/records-delete.spec.js +630 -0
- package/dist/esm/tests/handlers/records-delete.spec.js.map +1 -0
- package/dist/esm/tests/handlers/records-query.spec.js +1937 -0
- package/dist/esm/tests/handlers/records-query.spec.js.map +1 -0
- package/dist/esm/tests/handlers/records-read.spec.js +1729 -0
- package/dist/esm/tests/handlers/records-read.spec.js.map +1 -0
- package/dist/esm/tests/handlers/records-write.spec.js +3381 -0
- package/dist/esm/tests/handlers/records-write.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/events-get.spec.js +73 -0
- package/dist/esm/tests/interfaces/events-get.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/messages-get.spec.js +93 -0
- package/dist/esm/tests/interfaces/messages-get.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/permissions-grant.spec.js +216 -0
- package/dist/esm/tests/interfaces/permissions-grant.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/permissions-request.spec.js +45 -0
- package/dist/esm/tests/interfaces/permissions-request.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/protocols-configure.spec.js +334 -0
- package/dist/esm/tests/interfaces/protocols-configure.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/protocols-query.spec.js +49 -0
- package/dist/esm/tests/interfaces/protocols-query.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/records-delete.spec.js +42 -0
- package/dist/esm/tests/interfaces/records-delete.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/records-query.spec.js +75 -0
- package/dist/esm/tests/interfaces/records-query.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/records-read.spec.js +65 -0
- package/dist/esm/tests/interfaces/records-read.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/records-write.spec.js +369 -0
- package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -0
- package/dist/esm/tests/jose/jws/general.spec.js +185 -0
- package/dist/esm/tests/jose/jws/general.spec.js.map +1 -0
- package/dist/esm/tests/scenarios/delegated-grant.spec.js +490 -0
- package/dist/esm/tests/scenarios/delegated-grant.spec.js.map +1 -0
- package/dist/esm/tests/scenarios/end-to-end-tests.spec.js +218 -0
- package/dist/esm/tests/scenarios/end-to-end-tests.spec.js.map +1 -0
- package/dist/esm/tests/store/data-store-level.spec.js +192 -0
- package/dist/esm/tests/store/data-store-level.spec.js.map +1 -0
- package/dist/esm/tests/store/index-level.spec.js +428 -0
- package/dist/esm/tests/store/index-level.spec.js.map +1 -0
- package/dist/esm/tests/store/message-store-level.spec.js +51 -0
- package/dist/esm/tests/store/message-store-level.spec.js.map +1 -0
- package/dist/esm/tests/store/message-store.spec.js +395 -0
- package/dist/esm/tests/store/message-store.spec.js.map +1 -0
- package/dist/esm/tests/store-dependent-tests.spec.js +8 -0
- package/dist/esm/tests/store-dependent-tests.spec.js.map +1 -0
- package/dist/esm/tests/test-stores.js +40 -0
- package/dist/esm/tests/test-stores.js.map +1 -0
- package/dist/esm/tests/test-suite.js +51 -0
- package/dist/esm/tests/test-suite.js.map +1 -0
- package/dist/esm/tests/utils/cid.spec.js +83 -0
- package/dist/esm/tests/utils/cid.spec.js.map +1 -0
- package/dist/esm/tests/utils/data-stream.spec.js +30 -0
- package/dist/esm/tests/utils/data-stream.spec.js.map +1 -0
- package/dist/esm/tests/utils/encryption.spec.js +151 -0
- package/dist/esm/tests/utils/encryption.spec.js.map +1 -0
- package/dist/esm/tests/utils/jws.spec.js +11 -0
- package/dist/esm/tests/utils/jws.spec.js.map +1 -0
- package/dist/esm/tests/utils/memory-cache.spec.js +38 -0
- package/dist/esm/tests/utils/memory-cache.spec.js.map +1 -0
- package/dist/esm/tests/utils/object.spec.js +39 -0
- package/dist/esm/tests/utils/object.spec.js.map +1 -0
- package/dist/esm/tests/utils/private-key-signer.spec.js +47 -0
- package/dist/esm/tests/utils/private-key-signer.spec.js.map +1 -0
- package/dist/esm/tests/utils/records.spec.js +56 -0
- package/dist/esm/tests/utils/records.spec.js.map +1 -0
- package/dist/esm/tests/utils/secp256k1.spec.js +77 -0
- package/dist/esm/tests/utils/secp256k1.spec.js.map +1 -0
- package/dist/esm/tests/utils/test-data-generator.js +570 -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 +67 -0
- package/dist/esm/tests/utils/time.spec.js.map +1 -0
- package/dist/esm/tests/utils/url.spec.js +46 -0
- package/dist/esm/tests/utils/url.spec.js.map +1 -0
- package/dist/esm/tests/validation/json-schemas/definitions.spec.js +36 -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 +53 -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 +39 -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 +76 -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 +74 -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 +151 -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 +389 -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 +25 -0
- package/dist/esm/tests/vectors/protocol-definitions/author-can.json +32 -0
- package/dist/esm/tests/vectors/protocol-definitions/chat.json +56 -0
- package/dist/esm/tests/vectors/protocol-definitions/credential-issuance.json +37 -0
- package/dist/esm/tests/vectors/protocol-definitions/dex.json +52 -0
- package/dist/esm/tests/vectors/protocol-definitions/email.json +50 -0
- package/dist/esm/tests/vectors/protocol-definitions/free-for-all.json +30 -0
- package/dist/esm/tests/vectors/protocol-definitions/friend-role.json +48 -0
- package/dist/esm/tests/vectors/protocol-definitions/message.json +20 -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 +13 -0
- package/dist/esm/tests/vectors/protocol-definitions/recipient-can.json +36 -0
- package/dist/esm/tests/vectors/protocol-definitions/social-media.json +88 -0
- package/dist/esm/tests/vectors/protocol-definitions/thread-role.json +68 -0
- package/dist/types/generated/precompiled-validators.d.ts +113 -0
- package/dist/types/generated/precompiled-validators.d.ts.map +1 -0
- package/dist/types/src/core/abstract-message.d.ts +19 -0
- package/dist/types/src/core/abstract-message.d.ts.map +1 -0
- package/dist/types/src/core/auth.d.ts +30 -0
- package/dist/types/src/core/auth.d.ts.map +1 -0
- package/dist/types/src/core/dwn-constant.d.ts +8 -0
- package/dist/types/src/core/dwn-constant.d.ts.map +1 -0
- package/dist/types/src/core/dwn-error.d.ts +133 -0
- package/dist/types/src/core/dwn-error.d.ts.map +1 -0
- package/dist/types/src/core/grant-authorization.d.ts +35 -0
- package/dist/types/src/core/grant-authorization.d.ts.map +1 -0
- package/dist/types/src/core/message-reply.d.ts +33 -0
- package/dist/types/src/core/message-reply.d.ts.map +1 -0
- package/dist/types/src/core/message.d.ts +79 -0
- package/dist/types/src/core/message.d.ts.map +1 -0
- package/dist/types/src/core/protocol-authorization.d.ts +85 -0
- package/dist/types/src/core/protocol-authorization.d.ts.map +1 -0
- package/dist/types/src/core/records-grant-authorization.d.ts +38 -0
- package/dist/types/src/core/records-grant-authorization.d.ts.map +1 -0
- package/dist/types/src/core/tenant-gate.d.ts +16 -0
- package/dist/types/src/core/tenant-gate.d.ts.map +1 -0
- package/dist/types/src/did/did-dht-resolver.d.ts +26 -0
- package/dist/types/src/did/did-dht-resolver.d.ts.map +1 -0
- package/dist/types/src/did/did-ion-resolver.d.ts +20 -0
- package/dist/types/src/did/did-ion-resolver.d.ts.map +1 -0
- package/dist/types/src/did/did-key-resolver.d.ts +32 -0
- package/dist/types/src/did/did-key-resolver.d.ts.map +1 -0
- package/dist/types/src/did/did-resolver.d.ts +20 -0
- package/dist/types/src/did/did-resolver.d.ts.map +1 -0
- package/dist/types/src/did/did.d.ts +15 -0
- package/dist/types/src/did/did.d.ts.map +1 -0
- package/dist/types/src/dwn.d.ts +74 -0
- package/dist/types/src/dwn.d.ts.map +1 -0
- package/dist/types/src/enums/dwn-interface-method.d.ts +20 -0
- package/dist/types/src/enums/dwn-interface-method.d.ts.map +1 -0
- package/dist/types/src/event-log/event-log-level.d.ts +26 -0
- package/dist/types/src/event-log/event-log-level.d.ts.map +1 -0
- package/dist/types/src/handlers/events-get.d.ts +16 -0
- package/dist/types/src/handlers/events-get.d.ts.map +1 -0
- package/dist/types/src/handlers/messages-get.d.ts +18 -0
- package/dist/types/src/handlers/messages-get.d.ts.map +1 -0
- package/dist/types/src/handlers/permissions-grant.d.ts +17 -0
- package/dist/types/src/handlers/permissions-grant.d.ts.map +1 -0
- package/dist/types/src/handlers/permissions-request.d.ts +17 -0
- package/dist/types/src/handlers/permissions-request.d.ts.map +1 -0
- package/dist/types/src/handlers/permissions-revoke.d.ts +17 -0
- package/dist/types/src/handlers/permissions-revoke.d.ts.map +1 -0
- package/dist/types/src/handlers/protocols-configure.d.ts +21 -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 +22 -0
- package/dist/types/src/handlers/records-delete.d.ts.map +1 -0
- package/dist/types/src/handlers/records-query.d.ts +78 -0
- package/dist/types/src/handlers/records-query.d.ts.map +1 -0
- package/dist/types/src/handlers/records-read.d.ts +17 -0
- package/dist/types/src/handlers/records-read.d.ts.map +1 -0
- package/dist/types/src/handlers/records-write.d.ts +61 -0
- package/dist/types/src/handlers/records-write.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +72 -0
- package/dist/types/src/index.d.ts.map +1 -0
- package/dist/types/src/interfaces/events-get.d.ts +13 -0
- package/dist/types/src/interfaces/events-get.d.ts.map +1 -0
- package/dist/types/src/interfaces/messages-get.d.ts +19 -0
- package/dist/types/src/interfaces/messages-get.d.ts.map +1 -0
- package/dist/types/src/interfaces/permissions-grant.d.ts +59 -0
- package/dist/types/src/interfaces/permissions-grant.d.ts.map +1 -0
- package/dist/types/src/interfaces/permissions-request.d.ts +19 -0
- package/dist/types/src/interfaces/permissions-request.d.ts.map +1 -0
- package/dist/types/src/interfaces/permissions-revoke.d.ts +14 -0
- package/dist/types/src/interfaces/permissions-revoke.d.ts.map +1 -0
- package/dist/types/src/interfaces/protocols-configure.d.ts +21 -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 +24 -0
- package/dist/types/src/interfaces/records-delete.d.ts.map +1 -0
- package/dist/types/src/interfaces/records-query.d.ts +29 -0
- package/dist/types/src/interfaces/records-query.d.ts.map +1 -0
- package/dist/types/src/interfaces/records-read.d.ts +31 -0
- package/dist/types/src/interfaces/records-read.d.ts.map +1 -0
- package/dist/types/src/interfaces/records-write.d.ts +259 -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/signer.d.ts +8 -0
- package/dist/types/src/jose/jws/general/signer.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/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 +35 -0
- package/dist/types/src/store/blockstore-level.d.ts.map +1 -0
- package/dist/types/src/store/data-store-level.d.ts +44 -0
- package/dist/types/src/store/data-store-level.d.ts.map +1 -0
- package/dist/types/src/store/index-level.d.ts +69 -0
- package/dist/types/src/store/index-level.d.ts.map +1 -0
- package/dist/types/src/store/level-wrapper.d.ts +44 -0
- package/dist/types/src/store/level-wrapper.d.ts.map +1 -0
- package/dist/types/src/store/message-store-level.d.ts +70 -0
- package/dist/types/src/store/message-store-level.d.ts.map +1 -0
- package/dist/types/src/store/storage-controller.d.ts +19 -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 +69 -0
- package/dist/types/src/types/data-store.d.ts.map +1 -0
- package/dist/types/src/types/delegated-grant-message.d.ts +14 -0
- package/dist/types/src/types/delegated-grant-message.d.ts.map +1 -0
- package/dist/types/src/types/did-types.d.ts +68 -0
- package/dist/types/src/types/did-types.d.ts.map +1 -0
- package/dist/types/src/types/event-log.d.ts +39 -0
- package/dist/types/src/types/event-log.d.ts.map +1 -0
- package/dist/types/src/types/event-types.d.ts +18 -0
- package/dist/types/src/types/event-types.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 +22 -0
- package/dist/types/src/types/message-interface.d.ts.map +1 -0
- package/dist/types/src/types/message-store.d.ts +43 -0
- package/dist/types/src/types/message-store.d.ts.map +1 -0
- package/dist/types/src/types/message-types.d.ts +113 -0
- package/dist/types/src/types/message-types.d.ts.map +1 -0
- package/dist/types/src/types/messages-types.d.ts +23 -0
- package/dist/types/src/types/messages-types.d.ts.map +1 -0
- package/dist/types/src/types/method-handler.d.ts +17 -0
- package/dist/types/src/types/method-handler.d.ts.map +1 -0
- package/dist/types/src/types/permissions-grant-descriptor.d.ts +65 -0
- package/dist/types/src/types/permissions-grant-descriptor.d.ts.map +1 -0
- package/dist/types/src/types/permissions-types.d.ts +33 -0
- package/dist/types/src/types/permissions-types.d.ts.map +1 -0
- package/dist/types/src/types/protocols-types.d.ts +138 -0
- package/dist/types/src/types/protocols-types.d.ts.map +1 -0
- package/dist/types/src/types/records-types.d.ts +164 -0
- package/dist/types/src/types/records-types.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/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 +27 -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/hd-key.d.ts +35 -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/object.d.ts +18 -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 +68 -0
- package/dist/types/src/utils/records.d.ts.map +1 -0
- package/dist/types/src/utils/secp256k1.d.ts +78 -0
- package/dist/types/src/utils/secp256k1.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 +49 -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/did/did-ion-resolver.spec.d.ts +2 -0
- package/dist/types/tests/did/did-ion-resolver.spec.d.ts.map +1 -0
- package/dist/types/tests/did/did-key-resolver.spec.d.ts +2 -0
- package/dist/types/tests/did/did-key-resolver.spec.d.ts.map +1 -0
- package/dist/types/tests/did/did-resolver.spec.d.ts +2 -0
- package/dist/types/tests/did/did-resolver.spec.d.ts.map +1 -0
- package/dist/types/tests/did/did.spec.d.ts +2 -0
- package/dist/types/tests/did/did.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/end-to-end-tests.spec.d.ts +2 -0
- package/dist/types/tests/end-to-end-tests.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/handlers/events-get.spec.d.ts +2 -0
- package/dist/types/tests/handlers/events-get.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/messages-get.spec.d.ts +2 -0
- package/dist/types/tests/handlers/messages-get.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/permissions-grant.spec.d.ts +2 -0
- package/dist/types/tests/handlers/permissions-grant.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/permissions-request.spec.d.ts +2 -0
- package/dist/types/tests/handlers/permissions-request.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/permissions-revoke.spec.d.ts +2 -0
- package/dist/types/tests/handlers/permissions-revoke.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-write.spec.d.ts +2 -0
- package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/events-get.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/events-get.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/permissions-grant.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/permissions-grant.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/permissions-request.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/permissions-request.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-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/scenarios/delegated-grant.spec.d.ts +2 -0
- package/dist/types/tests/scenarios/delegated-grant.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/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-stores.d.ts +30 -0
- package/dist/types/tests/test-stores.d.ts.map +1 -0
- package/dist/types/tests/test-suite.d.ts +16 -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/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/object.spec.d.ts +2 -0
- package/dist/types/tests/utils/object.spec.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/test-data-generator.d.ts +323 -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 +156 -0
- package/src/core/abstract-message.ts +48 -0
- package/src/core/auth.ts +108 -0
- package/src/core/dwn-constant.ts +7 -0
- package/src/core/dwn-error.ts +136 -0
- package/src/core/grant-authorization.ts +163 -0
- package/src/core/message-reply.ts +42 -0
- package/src/core/message.ts +224 -0
- package/src/core/protocol-authorization.ts +691 -0
- package/src/core/records-grant-authorization.ts +167 -0
- package/src/core/tenant-gate.ts +18 -0
- package/src/did/did-dht-resolver.ts +241 -0
- package/src/did/did-ion-resolver.ts +52 -0
- package/src/did/did-key-resolver.ts +137 -0
- package/src/did/did-resolver.ts +77 -0
- package/src/did/did.ts +39 -0
- package/src/dwn.ts +213 -0
- package/src/enums/dwn-interface-method.ts +20 -0
- package/src/event-log/event-log-level.ts +116 -0
- package/src/handlers/events-get.ts +46 -0
- package/src/handlers/messages-get.ts +80 -0
- package/src/handlers/permissions-grant.ts +52 -0
- package/src/handlers/permissions-request.ts +54 -0
- package/src/handlers/permissions-revoke.ts +121 -0
- package/src/handlers/protocols-configure.ts +104 -0
- package/src/handlers/protocols-query.ts +81 -0
- package/src/handlers/records-delete.ts +139 -0
- package/src/handlers/records-query.ts +253 -0
- package/src/handlers/records-read.ts +127 -0
- package/src/handlers/records-write.ts +296 -0
- package/src/index.ts +81 -0
- package/src/interfaces/events-get.ts +43 -0
- package/src/interfaces/messages-get.ts +59 -0
- package/src/interfaces/permissions-grant.ts +175 -0
- package/src/interfaces/permissions-request.ts +55 -0
- package/src/interfaces/permissions-revoke.ts +46 -0
- package/src/interfaces/protocols-configure.ts +188 -0
- package/src/interfaces/protocols-query.ts +99 -0
- package/src/interfaces/records-delete.ts +67 -0
- package/src/interfaces/records-query.ts +100 -0
- package/src/interfaces/records-read.ts +82 -0
- package/src/interfaces/records-write.ts +924 -0
- package/src/jose/algorithms/signing/ed25519.ts +61 -0
- package/src/jose/algorithms/signing/signature-algorithms.ts +15 -0
- package/src/jose/jws/general/builder.ts +48 -0
- package/src/jose/jws/general/signer.ts +29 -0
- package/src/jose/jws/general/verifier.ts +113 -0
- package/src/schema-validator.ts +34 -0
- package/src/store/blockstore-level.ts +113 -0
- package/src/store/data-store-level.ts +188 -0
- package/src/store/index-level.ts +306 -0
- package/src/store/level-wrapper.ts +262 -0
- package/src/store/message-store-level.ts +284 -0
- package/src/store/storage-controller.ts +80 -0
- package/src/types/cache.ts +16 -0
- package/src/types/data-store.ts +78 -0
- package/src/types/delegated-grant-message.ts +15 -0
- package/src/types/did-types.ts +95 -0
- package/src/types/event-log.ts +46 -0
- package/src/types/event-types.ts +20 -0
- package/src/types/jose-types.ts +76 -0
- package/src/types/jws-types.ts +28 -0
- package/src/types/message-interface.ts +24 -0
- package/src/types/message-store.ts +56 -0
- package/src/types/message-types.ts +115 -0
- package/src/types/messages-types.ts +26 -0
- package/src/types/method-handler.ts +17 -0
- package/src/types/permissions-grant-descriptor.ts +79 -0
- package/src/types/permissions-types.ts +42 -0
- package/src/types/protocols-types.ts +154 -0
- package/src/types/records-types.ts +184 -0
- package/src/types/signer.ts +27 -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 +85 -0
- package/src/utils/encoder.ts +54 -0
- package/src/utils/encryption.ts +145 -0
- package/src/utils/hd-key.ts +58 -0
- package/src/utils/jws.ts +95 -0
- package/src/utils/memory-cache.ts +31 -0
- package/src/utils/object.ts +55 -0
- package/src/utils/private-key-signer.ts +72 -0
- package/src/utils/protocols.ts +50 -0
- package/src/utils/records.ts +326 -0
- package/src/utils/secp256k1.ts +209 -0
- package/src/utils/string.ts +13 -0
- package/src/utils/time.ts +77 -0
- package/src/utils/url.ts +66 -0
|
@@ -0,0 +1,267 @@
|
|
|
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
|
+
import { Encoder } from './encoder.js';
|
|
11
|
+
import { Encryption } from './encryption.js';
|
|
12
|
+
import { KeyDerivationScheme } from './hd-key.js';
|
|
13
|
+
import { Message } from '../core/message.js';
|
|
14
|
+
import { Secp256k1 } from './secp256k1.js';
|
|
15
|
+
import { DwnError, DwnErrorCode } from '../core/dwn-error.js';
|
|
16
|
+
import { normalizeProtocolUrl, normalizeSchemaUrl } from './url.js';
|
|
17
|
+
/**
|
|
18
|
+
* Class containing useful utilities related to the Records interface.
|
|
19
|
+
*/
|
|
20
|
+
export class Records {
|
|
21
|
+
/**
|
|
22
|
+
* Decrypts the encrypted data in a message reply using the given ancestor private key.
|
|
23
|
+
* @param ancestorPrivateKey Any ancestor private key in the key derivation path.
|
|
24
|
+
*/
|
|
25
|
+
static decrypt(recordsWrite, ancestorPrivateKey, cipherStream) {
|
|
26
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
27
|
+
const { encryption } = recordsWrite;
|
|
28
|
+
// look for an encrypted symmetric key that is encrypted by the public key corresponding to the given private key
|
|
29
|
+
const matchingEncryptedKey = encryption.keyEncryption.find(key => key.rootKeyId === ancestorPrivateKey.rootKeyId &&
|
|
30
|
+
key.derivationScheme === ancestorPrivateKey.derivationScheme);
|
|
31
|
+
if (matchingEncryptedKey === undefined) {
|
|
32
|
+
throw new DwnError(DwnErrorCode.RecordsDecryptNoMatchingKeyEncryptedFound, `Unable to find a symmetric key encrypted using key \
|
|
33
|
+
with ID '${ancestorPrivateKey.rootKeyId}' and '${ancestorPrivateKey.derivationScheme}' derivation scheme.`);
|
|
34
|
+
}
|
|
35
|
+
const fullDerivationPath = Records.constructKeyDerivationPath(matchingEncryptedKey.derivationScheme, recordsWrite);
|
|
36
|
+
// NOTE: right now only `ECIES-ES256K` algorithm is supported for asymmetric encryption,
|
|
37
|
+
// so we will assume that's the algorithm without additional switch/if statements
|
|
38
|
+
const leafPrivateKey = yield Records.derivePrivateKey(ancestorPrivateKey, fullDerivationPath);
|
|
39
|
+
const encryptedKeyBytes = Encoder.base64UrlToBytes(matchingEncryptedKey.encryptedKey);
|
|
40
|
+
const ephemeralPublicKey = Secp256k1.publicJwkToBytes(matchingEncryptedKey.ephemeralPublicKey);
|
|
41
|
+
const keyEncryptionInitializationVector = Encoder.base64UrlToBytes(matchingEncryptedKey.initializationVector);
|
|
42
|
+
const messageAuthenticationCode = Encoder.base64UrlToBytes(matchingEncryptedKey.messageAuthenticationCode);
|
|
43
|
+
const dataEncryptionKey = yield Encryption.eciesSecp256k1Decrypt({
|
|
44
|
+
ciphertext: encryptedKeyBytes,
|
|
45
|
+
ephemeralPublicKey,
|
|
46
|
+
initializationVector: keyEncryptionInitializationVector,
|
|
47
|
+
messageAuthenticationCode,
|
|
48
|
+
privateKey: leafPrivateKey
|
|
49
|
+
});
|
|
50
|
+
// NOTE: right now only `A256CTR` algorithm is supported for symmetric encryption,
|
|
51
|
+
// so we will assume that's the algorithm without additional switch/if statements
|
|
52
|
+
const dataEncryptionInitializationVector = Encoder.base64UrlToBytes(encryption.initializationVector);
|
|
53
|
+
const plaintextStream = yield Encryption.aes256CtrDecrypt(dataEncryptionKey, dataEncryptionInitializationVector, cipherStream);
|
|
54
|
+
return plaintextStream;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Constructs full key derivation path using the specified scheme.
|
|
59
|
+
*/
|
|
60
|
+
static constructKeyDerivationPath(keyDerivationScheme, recordsWriteMessage) {
|
|
61
|
+
const descriptor = recordsWriteMessage.descriptor;
|
|
62
|
+
const contextId = recordsWriteMessage.contextId;
|
|
63
|
+
let fullDerivationPath;
|
|
64
|
+
if (keyDerivationScheme === KeyDerivationScheme.DataFormats) {
|
|
65
|
+
fullDerivationPath = Records.constructKeyDerivationPathUsingDataFormatsScheme(descriptor.schema, descriptor.dataFormat);
|
|
66
|
+
}
|
|
67
|
+
else if (keyDerivationScheme === KeyDerivationScheme.ProtocolPath) {
|
|
68
|
+
fullDerivationPath = Records.constructKeyDerivationPathUsingProtocolPathScheme(descriptor);
|
|
69
|
+
}
|
|
70
|
+
else if (keyDerivationScheme === KeyDerivationScheme.ProtocolContext) {
|
|
71
|
+
fullDerivationPath = Records.constructKeyDerivationPathUsingProtocolContextScheme(contextId);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
// `schemas` scheme
|
|
75
|
+
fullDerivationPath = Records.constructKeyDerivationPathUsingSchemasScheme(descriptor.schema);
|
|
76
|
+
}
|
|
77
|
+
return fullDerivationPath;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Constructs the full key derivation path using `dataFormats` scheme.
|
|
81
|
+
*/
|
|
82
|
+
static constructKeyDerivationPathUsingDataFormatsScheme(schema, dataFormat) {
|
|
83
|
+
if (schema !== undefined) {
|
|
84
|
+
return [
|
|
85
|
+
KeyDerivationScheme.DataFormats,
|
|
86
|
+
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
|
|
87
|
+
dataFormat
|
|
88
|
+
];
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
return [
|
|
92
|
+
KeyDerivationScheme.DataFormats,
|
|
93
|
+
dataFormat
|
|
94
|
+
];
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Constructs the full key derivation path using `protocolPath` scheme.
|
|
99
|
+
*/
|
|
100
|
+
static constructKeyDerivationPathUsingProtocolPathScheme(descriptor) {
|
|
101
|
+
// ensure `protocol` is defined
|
|
102
|
+
// NOTE: no need to check `protocolPath` and `contextId` because earlier code ensures that if `protocol` is defined, those are defined also
|
|
103
|
+
if (descriptor.protocol === undefined) {
|
|
104
|
+
throw new DwnError(DwnErrorCode.RecordsProtocolPathDerivationSchemeMissingProtocol, 'Unable to construct key derivation path using `protocols` scheme because `protocol` is missing.');
|
|
105
|
+
}
|
|
106
|
+
const protocolPathSegments = descriptor.protocolPath.split('/');
|
|
107
|
+
const fullDerivationPath = [
|
|
108
|
+
KeyDerivationScheme.ProtocolPath,
|
|
109
|
+
descriptor.protocol,
|
|
110
|
+
...protocolPathSegments
|
|
111
|
+
];
|
|
112
|
+
return fullDerivationPath;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Constructs the full key derivation path using `protocolContext` scheme.
|
|
116
|
+
*/
|
|
117
|
+
static constructKeyDerivationPathUsingProtocolContextScheme(contextId) {
|
|
118
|
+
if (contextId === undefined) {
|
|
119
|
+
throw new DwnError(DwnErrorCode.RecordsProtocolContextDerivationSchemeMissingContextId, 'Unable to construct key derivation path using `protocolContext` scheme because `contextId` is missing.');
|
|
120
|
+
}
|
|
121
|
+
const fullDerivationPath = [
|
|
122
|
+
KeyDerivationScheme.ProtocolContext,
|
|
123
|
+
contextId
|
|
124
|
+
];
|
|
125
|
+
return fullDerivationPath;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Constructs the full key derivation path using `schemas` scheme.
|
|
129
|
+
*/
|
|
130
|
+
static constructKeyDerivationPathUsingSchemasScheme(schema) {
|
|
131
|
+
if (schema === undefined) {
|
|
132
|
+
throw new DwnError(DwnErrorCode.RecordsSchemasDerivationSchemeMissingSchema, 'Unable to construct key derivation path using `schemas` scheme because `schema` is missing.');
|
|
133
|
+
}
|
|
134
|
+
const fullDerivationPath = [
|
|
135
|
+
KeyDerivationScheme.Schemas,
|
|
136
|
+
schema
|
|
137
|
+
];
|
|
138
|
+
return fullDerivationPath;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Derives a descendant private key given an ancestor private key and the full absolute derivation path.
|
|
142
|
+
* NOTE: right now only `ECIES-ES256K` algorithm is supported for asymmetric encryption,
|
|
143
|
+
* so we will only derive SECP256K1 key without additional conditional checks
|
|
144
|
+
*/
|
|
145
|
+
static derivePrivateKey(ancestorPrivateKey, fullDescendantDerivationPath) {
|
|
146
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
147
|
+
var _a;
|
|
148
|
+
if (ancestorPrivateKey.derivedPrivateKey.crv !== 'secp256k1') {
|
|
149
|
+
throw new DwnError(DwnErrorCode.RecordsDerivePrivateKeyUnSupportedCurve, `Curve ${ancestorPrivateKey.derivedPrivateKey.crv} is not supported.`);
|
|
150
|
+
}
|
|
151
|
+
const ancestorPrivateKeyDerivationPath = (_a = ancestorPrivateKey.derivationPath) !== null && _a !== void 0 ? _a : [];
|
|
152
|
+
Records.validateAncestorKeyAndDescentKeyDerivationPathsMatch(ancestorPrivateKeyDerivationPath, fullDescendantDerivationPath);
|
|
153
|
+
const subDerivationPath = fullDescendantDerivationPath.slice(ancestorPrivateKeyDerivationPath.length);
|
|
154
|
+
const ancestorPrivateKeyBytes = Secp256k1.privateJwkToBytes(ancestorPrivateKey.derivedPrivateKey);
|
|
155
|
+
const leafPrivateKey = yield Secp256k1.derivePrivateKey(ancestorPrivateKeyBytes, subDerivationPath);
|
|
156
|
+
return leafPrivateKey;
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Validates that ancestor derivation path matches the descendant derivation path completely.
|
|
161
|
+
* @throws {DwnError} with `DwnErrorCode.RecordsInvalidAncestorKeyDerivationSegment` if fails validation.
|
|
162
|
+
*/
|
|
163
|
+
static validateAncestorKeyAndDescentKeyDerivationPathsMatch(ancestorKeyDerivationPath, descendantKeyDerivationPath) {
|
|
164
|
+
for (let i = 0; i < ancestorKeyDerivationPath.length; i++) {
|
|
165
|
+
const ancestorSegment = ancestorKeyDerivationPath[i];
|
|
166
|
+
const descendantSegment = descendantKeyDerivationPath[i];
|
|
167
|
+
if (ancestorSegment !== descendantSegment) {
|
|
168
|
+
throw new DwnError(DwnErrorCode.RecordsInvalidAncestorKeyDerivationSegment, `Ancestor key derivation segment '${ancestorSegment}' mismatches against the descendant key derivation segment '${descendantSegment}'.`);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Normalizes the protocol and schema URLs within a provided RecordsFilter and returns a copy of RecordsFilter with the modified values.
|
|
174
|
+
*
|
|
175
|
+
* @param filter incoming RecordsFilter to normalize.
|
|
176
|
+
* @returns {RecordsFilter} a copy of the incoming RecordsFilter with the normalized properties.
|
|
177
|
+
*/
|
|
178
|
+
static normalizeFilter(filter) {
|
|
179
|
+
let protocol;
|
|
180
|
+
if (filter.protocol === undefined) {
|
|
181
|
+
protocol = undefined;
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
protocol = normalizeProtocolUrl(filter.protocol);
|
|
185
|
+
}
|
|
186
|
+
let schema;
|
|
187
|
+
if (filter.schema === undefined) {
|
|
188
|
+
schema = undefined;
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
schema = normalizeSchemaUrl(filter.schema);
|
|
192
|
+
}
|
|
193
|
+
return Object.assign(Object.assign({}, filter), { protocol,
|
|
194
|
+
schema });
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Converts an incoming RecordsFilter into a Filter usable by MessageStore.
|
|
198
|
+
*
|
|
199
|
+
* @param filter A RecordsFilter
|
|
200
|
+
* @returns {Filter} a generic Filter able to be used with MessageStore.
|
|
201
|
+
*/
|
|
202
|
+
static convertFilter(filter) {
|
|
203
|
+
const filterCopy = Object.assign({}, filter);
|
|
204
|
+
const { dateCreated, datePublished, dateUpdated } = filter;
|
|
205
|
+
const dateCreatedFilter = dateCreated ? this.convertRangeCriterion(dateCreated) : undefined;
|
|
206
|
+
if (dateCreatedFilter) {
|
|
207
|
+
filterCopy.dateCreated = dateCreatedFilter;
|
|
208
|
+
}
|
|
209
|
+
const datePublishedFilter = datePublished ? this.convertRangeCriterion(datePublished) : undefined;
|
|
210
|
+
if (datePublishedFilter) {
|
|
211
|
+
// only return published records when filtering with a datePublished range.
|
|
212
|
+
filterCopy.published = true;
|
|
213
|
+
filterCopy.datePublished = datePublishedFilter;
|
|
214
|
+
}
|
|
215
|
+
const messageTimestampFilter = dateUpdated ? this.convertRangeCriterion(dateUpdated) : undefined;
|
|
216
|
+
if (messageTimestampFilter) {
|
|
217
|
+
filterCopy.messageTimestamp = messageTimestampFilter;
|
|
218
|
+
delete filterCopy.dateUpdated;
|
|
219
|
+
}
|
|
220
|
+
return filterCopy;
|
|
221
|
+
}
|
|
222
|
+
static convertRangeCriterion(inputFilter) {
|
|
223
|
+
let rangeFilter;
|
|
224
|
+
if (inputFilter.to !== undefined && inputFilter.from !== undefined) {
|
|
225
|
+
rangeFilter = {
|
|
226
|
+
gte: inputFilter.from,
|
|
227
|
+
lt: inputFilter.to,
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
else if (inputFilter.to !== undefined) {
|
|
231
|
+
rangeFilter = {
|
|
232
|
+
lt: inputFilter.to,
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
else if (inputFilter.from !== undefined) {
|
|
236
|
+
rangeFilter = {
|
|
237
|
+
gte: inputFilter.from,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
return rangeFilter;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Validates the referential integrity regarding delegated grant.
|
|
244
|
+
* @param signaturePayload Decoded payload of the signature of the message. `undefined` if message is not signed.
|
|
245
|
+
* Usage of this property is purely for performance optimization so we don't have to decode the signature payload again.
|
|
246
|
+
*/
|
|
247
|
+
static validateDelegatedGrantReferentialIntegrity(message, signaturePayload) {
|
|
248
|
+
var _a;
|
|
249
|
+
// `deletedGrantId` in the payload of the message signature and `authorDelegatedGrant` in `authorization` must both exist or be both undefined
|
|
250
|
+
const delegatedGrantIdDefined = (signaturePayload === null || signaturePayload === void 0 ? void 0 : signaturePayload.delegatedGrantId) !== undefined;
|
|
251
|
+
const authorDelegatedGrantDefined = ((_a = message.authorization) === null || _a === void 0 ? void 0 : _a.authorDelegatedGrant) !== undefined;
|
|
252
|
+
if (delegatedGrantIdDefined !== authorDelegatedGrantDefined) {
|
|
253
|
+
throw new DwnError(DwnErrorCode.RecordsValidateIntegrityDelegatedGrantAndIdExistenceMismatch, `delegatedGrantId and authorDelegatedGrant must both exist or be undefined. \
|
|
254
|
+
delegatedGrantId defined: ${delegatedGrantIdDefined}, authorDelegatedGrant defined: ${authorDelegatedGrantDefined}`);
|
|
255
|
+
}
|
|
256
|
+
// when delegated grant exists, the grantee (grantedTo) must be the same as the signer of the message
|
|
257
|
+
if (authorDelegatedGrantDefined) {
|
|
258
|
+
const delegatedGrant = message.authorization.authorDelegatedGrant;
|
|
259
|
+
const grantedTo = delegatedGrant.descriptor.grantedTo;
|
|
260
|
+
const signer = Message.getSigner(message);
|
|
261
|
+
if (grantedTo !== signer) {
|
|
262
|
+
throw new DwnError(DwnErrorCode.RecordsValidateIntegrityGrantedToAndSignerMismatch, `grantedTo ${grantedTo} must be the same as the signer ${signer} of the message`);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
//# 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,219 @@
|
|
|
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 publicKeyHex = secp256k1.etc.bytesToHex(publicKeyBytes);
|
|
48
|
+
const curvePoints = secp256k1.ProjectivePoint.fromHex(publicKeyHex);
|
|
49
|
+
uncompressedPublicKeyBytes = curvePoints.toRawBytes(false); // isCompressed = false
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
uncompressedPublicKeyBytes = publicKeyBytes;
|
|
53
|
+
}
|
|
54
|
+
// the first byte is a header that indicates whether the key is uncompressed (0x04 if uncompressed), we can safely ignore
|
|
55
|
+
// bytes 1 - 32 represent X
|
|
56
|
+
// bytes 33 - 64 represent Y
|
|
57
|
+
// skip the first byte because it's used as a header to indicate whether the key is uncompressed
|
|
58
|
+
const x = Encoder.bytesToBase64Url(uncompressedPublicKeyBytes.subarray(1, 33));
|
|
59
|
+
const y = Encoder.bytesToBase64Url(uncompressedPublicKeyBytes.subarray(33, 65));
|
|
60
|
+
const publicJwk = {
|
|
61
|
+
alg: 'ES256K',
|
|
62
|
+
kty: 'EC',
|
|
63
|
+
crv: 'secp256k1',
|
|
64
|
+
x,
|
|
65
|
+
y
|
|
66
|
+
};
|
|
67
|
+
return publicJwk;
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Converts a private key in bytes into a JWK.
|
|
72
|
+
*/
|
|
73
|
+
static privateKeyToJwk(privateKeyBytes) {
|
|
74
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
75
|
+
const publicKeyBytes = yield Secp256k1.getPublicKey(privateKeyBytes);
|
|
76
|
+
const jwk = yield Secp256k1.publicKeyToJwk(publicKeyBytes);
|
|
77
|
+
jwk.d = Encoder.bytesToBase64Url(privateKeyBytes);
|
|
78
|
+
return jwk;
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Creates a compressed key in raw bytes from the given SECP256K1 JWK.
|
|
83
|
+
*/
|
|
84
|
+
static publicJwkToBytes(publicJwk) {
|
|
85
|
+
const x = Encoder.base64UrlToBytes(publicJwk.x);
|
|
86
|
+
const y = Encoder.base64UrlToBytes(publicJwk.y);
|
|
87
|
+
return secp256k1.ProjectivePoint.fromAffine({
|
|
88
|
+
x: secp256k1.etc.bytesToNumberBE(x),
|
|
89
|
+
y: secp256k1.etc.bytesToNumberBE(y)
|
|
90
|
+
}).toRawBytes(true);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Creates a private key in raw bytes from the given SECP256K1 JWK.
|
|
94
|
+
*/
|
|
95
|
+
static privateJwkToBytes(privateJwk) {
|
|
96
|
+
const privateKey = Encoder.base64UrlToBytes(privateJwk.d);
|
|
97
|
+
return privateKey;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Signs the provided content using the provided JWK.
|
|
101
|
+
*/
|
|
102
|
+
static sign(content, privateJwk) {
|
|
103
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
104
|
+
Secp256k1.validateKey(privateJwk);
|
|
105
|
+
// the underlying lib expects us to hash the content ourselves:
|
|
106
|
+
// https://github.com/paulmillr/noble-secp256k1/blob/97aa518b9c12563544ea87eba471b32ecf179916/index.ts#L1160
|
|
107
|
+
const hashedContent = yield sha256.encode(content);
|
|
108
|
+
const hashedContentHex = secp256k1.etc.bytesToHex(hashedContent);
|
|
109
|
+
const privateKeyBytes = Secp256k1.privateJwkToBytes(privateJwk);
|
|
110
|
+
const privateKeyHex = secp256k1.etc.bytesToHex(privateKeyBytes);
|
|
111
|
+
return (yield secp256k1.signAsync(hashedContentHex, privateKeyHex)).toCompactRawBytes();
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Verifies a signature against the provided payload hash and public key.
|
|
116
|
+
* @returns a boolean indicating whether the signature is valid.
|
|
117
|
+
*/
|
|
118
|
+
static verify(content, signature, publicJwk) {
|
|
119
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
120
|
+
Secp256k1.validateKey(publicJwk);
|
|
121
|
+
const publicKeyBytes = Secp256k1.publicJwkToBytes(publicJwk);
|
|
122
|
+
const hashedContent = yield sha256.encode(content);
|
|
123
|
+
return secp256k1.verify(signature, hashedContent, publicKeyBytes);
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Generates a random key pair in JWK format.
|
|
128
|
+
*/
|
|
129
|
+
static generateKeyPair() {
|
|
130
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
131
|
+
const privateKeyBytes = secp256k1.utils.randomPrivateKey();
|
|
132
|
+
const publicKeyBytes = secp256k1.getPublicKey(privateKeyBytes, false); // `false` = uncompressed
|
|
133
|
+
const d = Encoder.bytesToBase64Url(privateKeyBytes);
|
|
134
|
+
const publicJwk = yield Secp256k1.publicKeyToJwk(publicKeyBytes);
|
|
135
|
+
const privateJwk = Object.assign(Object.assign({}, publicJwk), { d });
|
|
136
|
+
return { publicJwk, privateJwk };
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Generates key pair in raw bytes, where the `publicKey` is compressed.
|
|
141
|
+
*/
|
|
142
|
+
static generateKeyPairRaw() {
|
|
143
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
144
|
+
const privateKey = secp256k1.utils.randomPrivateKey();
|
|
145
|
+
const publicKey = secp256k1.getPublicKey(privateKey, true); // `true` = compressed
|
|
146
|
+
return { publicKey, privateKey };
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Gets the compressed public key of the given private key.
|
|
151
|
+
*/
|
|
152
|
+
static getPublicKey(privateKey) {
|
|
153
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
154
|
+
const publicKey = secp256k1.getPublicKey(privateKey, true); // `true` = compressed
|
|
155
|
+
return publicKey;
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Gets the public JWK of the given private JWK.
|
|
160
|
+
*/
|
|
161
|
+
static getPublicJwk(privateKeyJwk) {
|
|
162
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
163
|
+
// strip away `d`
|
|
164
|
+
const { d: _d } = privateKeyJwk, publicKey = __rest(privateKeyJwk, ["d"]);
|
|
165
|
+
return publicKey;
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Derives a hardened hierarchical deterministic public key.
|
|
170
|
+
* @returns uncompressed public key
|
|
171
|
+
*/
|
|
172
|
+
static derivePublicKey(privateKey, relativePath) {
|
|
173
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
174
|
+
Secp256k1.validateKeyDerivationPath(relativePath);
|
|
175
|
+
// derive the private key first then compute the derived public key from the derive private key
|
|
176
|
+
const derivedPrivateKey = yield Secp256k1.derivePrivateKey(privateKey, relativePath);
|
|
177
|
+
const derivedPublicKey = yield Secp256k1.getPublicKey(derivedPrivateKey);
|
|
178
|
+
return derivedPublicKey;
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Derives a hardened hierarchical deterministic private key.
|
|
183
|
+
*/
|
|
184
|
+
static derivePrivateKey(privateKey, relativePath) {
|
|
185
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
186
|
+
Secp256k1.validateKeyDerivationPath(relativePath);
|
|
187
|
+
let currentPrivateKey = privateKey;
|
|
188
|
+
for (const segment of relativePath) {
|
|
189
|
+
const derivationSegment = Encoder.stringToBytes(segment);
|
|
190
|
+
currentPrivateKey = yield Secp256k1.deriveChildPrivateKey(currentPrivateKey, derivationSegment);
|
|
191
|
+
}
|
|
192
|
+
return currentPrivateKey;
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Derives a child private key using the given derivation path segment.
|
|
197
|
+
*/
|
|
198
|
+
static deriveChildPrivateKey(privateKey, derivationPathSegment) {
|
|
199
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
200
|
+
// hash the private key & derivation segment
|
|
201
|
+
const privateKeyHash = yield sha256.encode(privateKey);
|
|
202
|
+
const derivationPathSegmentHash = yield sha256.encode(derivationPathSegment);
|
|
203
|
+
const combinedBytes = secp256k1.etc.concatBytes(privateKeyHash, derivationPathSegmentHash);
|
|
204
|
+
const derivedPrivateKey = secp256k1.etc.hashToPrivateKey(combinedBytes);
|
|
205
|
+
return derivedPrivateKey;
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Parses the given key derivation path.
|
|
210
|
+
* @returns Path segments if successfully validate the derivation path.
|
|
211
|
+
* @throws {DwnError} with `DwnErrorCode.HdKeyDerivationPathInvalid` if derivation path fails validation.
|
|
212
|
+
*/
|
|
213
|
+
static validateKeyDerivationPath(pathSegments) {
|
|
214
|
+
if (pathSegments.includes('')) {
|
|
215
|
+
throw new DwnError(DwnErrorCode.HdKeyDerivationPathInvalid, `Invalid key derivation path: ${pathSegments}`);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
//# 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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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compares two string given in lexicographical order.
|
|
3
|
+
* @returns 1 if `a` is larger than `b`; -1 if `a` is smaller/older than `b`; 0 otherwise (same message)
|
|
4
|
+
*/
|
|
5
|
+
export function lexicographicalCompare(a, b) {
|
|
6
|
+
if (a > b) {
|
|
7
|
+
return 1;
|
|
8
|
+
}
|
|
9
|
+
else if (a < b) {
|
|
10
|
+
return -1;
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
return 0;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=string.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string.js","sourceRoot":"","sources":["../../../../src/utils/string.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,CAAS,EAAE,CAAS;IACzD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACV,OAAO,CAAC,CAAC;IACX,CAAC;SAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACjB,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
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
|
+
import { Temporal } from '@js-temporal/polyfill';
|
|
11
|
+
import { DwnError, DwnErrorCode } from '../core/dwn-error.js';
|
|
12
|
+
/**
|
|
13
|
+
* Time related utilities.
|
|
14
|
+
*/
|
|
15
|
+
export class Time {
|
|
16
|
+
/**
|
|
17
|
+
* sleeps for the desired duration
|
|
18
|
+
* @param durationInMillisecond the desired amount of sleep time
|
|
19
|
+
* @returns when the provided duration has passed
|
|
20
|
+
*/
|
|
21
|
+
static sleep(durationInMillisecond) {
|
|
22
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
23
|
+
return new Promise(resolve => setTimeout(resolve, durationInMillisecond));
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* We must sleep for at least 2ms to avoid timestamp collisions during testing.
|
|
28
|
+
*/
|
|
29
|
+
static minimalSleep() {
|
|
30
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
yield Time.sleep(2);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Returns an UTC ISO-8601 timestamp with microsecond precision accepted by DWN.
|
|
36
|
+
* using @js-temporal/polyfill
|
|
37
|
+
*/
|
|
38
|
+
static getCurrentTimestamp() {
|
|
39
|
+
return Temporal.Now.instant().toString({ smallestUnit: 'microseconds' });
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Creates a UTC ISO-8601 timestamp in microsecond precision accepted by DWN.
|
|
43
|
+
* @param options - Options for creating the timestamp.
|
|
44
|
+
* @returns string
|
|
45
|
+
*/
|
|
46
|
+
static createTimestamp(options) {
|
|
47
|
+
const { year, month, day, hour, minute, second, millisecond, microsecond } = options;
|
|
48
|
+
return Temporal.ZonedDateTime.from({
|
|
49
|
+
timeZone: 'UTC',
|
|
50
|
+
year,
|
|
51
|
+
month,
|
|
52
|
+
day,
|
|
53
|
+
hour,
|
|
54
|
+
minute,
|
|
55
|
+
second,
|
|
56
|
+
millisecond,
|
|
57
|
+
microsecond
|
|
58
|
+
}).toInstant().toString({ smallestUnit: 'microseconds' });
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Creates a UTC ISO-8601 timestamp offset from now or given timestamp accepted by DWN.
|
|
62
|
+
* @param offset Negative number means offset into the past.
|
|
63
|
+
*/
|
|
64
|
+
static createOffsetTimestamp(offset, timestamp) {
|
|
65
|
+
const timestampInstant = timestamp ? Temporal.Instant.from(timestamp) : Temporal.Now.instant();
|
|
66
|
+
const offsetDuration = Temporal.Duration.from(offset);
|
|
67
|
+
const offsetInstant = timestampInstant.add(offsetDuration);
|
|
68
|
+
return offsetInstant.toString({ smallestUnit: 'microseconds' });
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Validates that the provided timestamp is a valid number
|
|
72
|
+
* @param timestamp the timestamp to validate
|
|
73
|
+
* @throws DwnError if timestamp is not a valid number
|
|
74
|
+
*/
|
|
75
|
+
static validateTimestamp(timestamp) {
|
|
76
|
+
try {
|
|
77
|
+
Temporal.Instant.from(timestamp);
|
|
78
|
+
}
|
|
79
|
+
catch (_a) {
|
|
80
|
+
throw new DwnError(DwnErrorCode.TimestampInvalid, `Invalid timestamp: ${timestamp}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=time.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../../../src/utils/time.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE9D;;GAEG;AACH,MAAM,OAAO,IAAI;IACf;;;;OAIG;IACI,MAAM,CAAO,KAAK,CAAC,qBAA6B;;YACrD,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC;QAC5E,CAAC;KAAA;IAED;;OAEG;IACI,MAAM,CAAO,YAAY;;YAC9B,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;KAAA;IAED;;;OAGG;IACI,MAAM,CAAC,mBAAmB;QAC/B,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,eAAe,CAAC,OAE7B;QACC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;QACrF,OAAO,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;YACjC,QAAQ,EAAE,KAAK;YACf,IAAI;YACJ,KAAK;YACL,GAAG;YACH,IAAI;YACJ,MAAM;YACN,MAAM;YACN,WAAW;YACX,WAAW;SACZ,CAAC,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,qBAAqB,CAAC,MAA2B,EAAE,SAAkB;QACjF,MAAM,gBAAgB,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC/F,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,aAAa,GAAG,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC3D,OAAO,aAAa,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,iBAAiB,CAAC,SAAiB;QAC/C,IAAI,CAAC;YACH,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;QAAC,WAAM,CAAC;YACP,MAAM,IAAI,QAAQ,CAAC,YAAY,CAAC,gBAAgB,EAAE,sBAAsB,SAAS,EAAE,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;CACF"}
|