@digitaldefiance/ecies-lib 4.4.2 → 4.4.4
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 +21 -0
- package/package.json +9 -6
- package/src/builders/ecies-builder.ts +39 -0
- package/src/builders/{index.js → index.ts} +1 -1
- package/src/builders/member-builder.ts +155 -0
- package/src/constants.ts +609 -0
- package/src/core/errors/crypto-error.ts +78 -0
- package/src/core/{index.js → index.ts} +1 -1
- package/src/core/types/result.ts +19 -0
- package/src/email-string.ts +82 -0
- package/src/enumerations/disposed-error-type.ts +11 -0
- package/src/enumerations/ecies-cipher-suite.ts +4 -0
- package/src/enumerations/ecies-encryption-type.ts +41 -0
- package/src/enumerations/ecies-error-type.ts +43 -0
- package/src/enumerations/ecies-string-key.ts +205 -0
- package/src/enumerations/ecies-version.ts +3 -0
- package/src/enumerations/guid-brand-type.ts +26 -0
- package/src/enumerations/guid-error-type.ts +6 -0
- package/src/enumerations/id-provider-error-type.ts +50 -0
- package/src/enumerations/{index.js → index.ts} +0 -1
- package/src/enumerations/invalid-email-type.ts +5 -0
- package/src/enumerations/length-encoding-type.ts +6 -0
- package/src/enumerations/length-error-type.ts +5 -0
- package/src/enumerations/member-error-type.ts +106 -0
- package/src/enumerations/{member-type.d.ts → member-type.ts} +7 -6
- package/src/enumerations/password-login-error-type.ts +4 -0
- package/src/enumerations/pbkdf2-error-type.ts +5 -0
- package/src/enumerations/pbkdf2-profile.ts +5 -0
- package/src/enumerations/secure-storage-error-type.ts +5 -0
- package/src/errors/disposed.ts +36 -0
- package/src/errors/ecies.ts +153 -0
- package/src/errors/guid.ts +130 -0
- package/src/errors/id-provider.ts +40 -0
- package/src/errors/{index.d.ts → index.ts} +0 -1
- package/src/errors/invalid-email.ts +23 -0
- package/src/errors/length.ts +19 -0
- package/src/errors/member.ts +20 -0
- package/src/errors/pbkdf2.ts +20 -0
- package/src/errors/secure-storage.ts +17 -0
- package/src/errors/simple-ecies.ts +21 -0
- package/src/errors/simple-test-error.ts +6 -0
- package/src/i18n-setup.ts +130 -0
- package/src/{index.js → index.ts} +64 -7
- package/src/interfaces/checksum-config.ts +4 -0
- package/src/interfaces/checksum-consts.ts +13 -0
- package/src/interfaces/configuration-provenance.ts +54 -0
- package/src/interfaces/constants.ts +75 -0
- package/src/interfaces/ecies-config.ts +8 -0
- package/src/interfaces/ecies-consts.ts +74 -0
- package/src/interfaces/ecies-file-service.ts +6 -0
- package/src/interfaces/encrypted-chunk.ts +64 -0
- package/src/interfaces/encryption-state.ts +19 -0
- package/src/interfaces/frontend-member-operational.ts +77 -0
- package/src/interfaces/guid.ts +86 -0
- package/src/interfaces/id-provider.ts +152 -0
- package/src/interfaces/{index.d.ts → index.ts} +0 -1
- package/src/interfaces/invariant.ts +60 -0
- package/src/interfaces/library-error.ts +23 -0
- package/src/interfaces/{member-storage.d.ts → member-storage.ts} +11 -10
- package/src/interfaces/{member-with-mnemonic.d.ts → member-with-mnemonic.ts} +3 -3
- package/src/interfaces/member.ts +84 -0
- package/src/interfaces/multi-recipient-chunk.ts +61 -0
- package/src/interfaces/pbkdf2-config.ts +6 -0
- package/src/interfaces/pbkdf2-consts.ts +10 -0
- package/src/interfaces/pbkdf2-result.ts +5 -0
- package/src/interfaces/stream-config.ts +17 -0
- package/src/interfaces/stream-header.ts +34 -0
- package/src/interfaces/stream-progress.ts +31 -0
- package/src/lib/configuration-provenance-utils.ts +26 -0
- package/src/lib/crypto-container.ts +64 -0
- package/src/lib/guid.ts +1097 -0
- package/src/lib/id-providers/custom-provider.ts +109 -0
- package/src/lib/id-providers/guidv4-provider.ts +141 -0
- package/src/lib/id-providers/{index.d.ts → index.ts} +6 -5
- package/src/lib/id-providers/objectid-provider.ts +125 -0
- package/src/lib/id-providers/uuid-provider.ts +133 -0
- package/src/lib/{index.js → index.ts} +2 -2
- package/src/lib/invariant-validator.ts +133 -0
- package/src/lib/invariants/encryption-algorithm-consistency.ts +73 -0
- package/src/lib/invariants/{index.js → index.ts} +0 -1
- package/src/lib/invariants/pbkdf2-profiles-validity.ts +78 -0
- package/src/lib/invariants/recipient-id-consistency.ts +46 -0
- package/src/lib/multi-recipient-chunk-utils.ts +63 -0
- package/src/member.ts +495 -0
- package/src/{pbkdf2-profiles.d.ts → pbkdf2-profiles.ts} +2 -2
- package/src/phone-number.ts +18 -0
- package/src/regexes.ts +10 -0
- package/src/secure-buffer.ts +226 -0
- package/src/secure-string.ts +244 -0
- package/src/services/aes-gcm.ts +220 -0
- package/src/services/chunk-processor.ts +188 -0
- package/src/services/ecies/README.md +147 -0
- package/src/services/ecies/crypto-core.ts +292 -0
- package/src/services/ecies/example.ts +185 -0
- package/src/services/ecies/file.ts +167 -0
- package/src/services/ecies/{index.js → index.ts} +2 -1
- package/src/services/ecies/integration.ts +241 -0
- package/src/services/ecies/interfaces.ts +62 -0
- package/src/services/ecies/manual-test.ts +219 -0
- package/src/services/ecies/multi-recipient.ts +545 -0
- package/src/services/ecies/service.ts +370 -0
- package/src/services/ecies/signature.ts +93 -0
- package/src/services/ecies/single-recipient.ts +476 -0
- package/src/services/encryption-stream.ts +435 -0
- package/src/services/{index.js → index.ts} +0 -1
- package/src/services/multi-recipient-processor.ts +377 -0
- package/src/services/password-login.ts +226 -0
- package/src/services/pbkdf2.ts +169 -0
- package/src/services/progress-tracker.ts +128 -0
- package/src/services/resumable-encryption.ts +135 -0
- package/src/services/xor.ts +65 -0
- package/src/test-mocks/index.ts +1 -0
- package/src/test-mocks/mock-frontend-member.ts +276 -0
- package/src/{testing.js → testing.ts} +0 -1
- package/src/translations/{de.js → de.ts} +112 -56
- package/src/translations/{en-US.js → en-US.ts} +116 -58
- package/src/translations/{es.js → es.ts} +134 -67
- package/src/translations/{fr.js → fr.ts} +129 -64
- package/src/translations/{ja.js → ja.ts} +111 -55
- package/src/translations/{uk.js → uk.ts} +132 -67
- package/src/translations/{zh-cn.js → zh-cn.ts} +60 -29
- package/src/types/deep-partial.ts +11 -0
- package/src/{types.d.ts → types.ts} +15 -7
- package/src/utils/encryption-type-utils.ts +76 -0
- package/src/utils.ts +329 -0
- package/src/builders/ecies-builder.d.ts +0 -18
- package/src/builders/ecies-builder.d.ts.map +0 -1
- package/src/builders/ecies-builder.js +0 -30
- package/src/builders/ecies-builder.js.map +0 -1
- package/src/builders/index.d.ts +0 -6
- package/src/builders/index.d.ts.map +0 -1
- package/src/builders/index.js.map +0 -1
- package/src/builders/member-builder.d.ts +0 -51
- package/src/builders/member-builder.d.ts.map +0 -1
- package/src/builders/member-builder.js +0 -97
- package/src/builders/member-builder.js.map +0 -1
- package/src/constants.d.ts +0 -60
- package/src/constants.d.ts.map +0 -1
- package/src/constants.js +0 -446
- package/src/constants.js.map +0 -1
- package/src/core/errors/crypto-error.d.ts +0 -34
- package/src/core/errors/crypto-error.d.ts.map +0 -1
- package/src/core/errors/crypto-error.js +0 -56
- package/src/core/errors/crypto-error.js.map +0 -1
- package/src/core/index.d.ts +0 -6
- package/src/core/index.d.ts.map +0 -1
- package/src/core/index.js.map +0 -1
- package/src/core/types/result.d.ts +0 -16
- package/src/core/types/result.d.ts.map +0 -1
- package/src/core/types/result.js +0 -12
- package/src/core/types/result.js.map +0 -1
- package/src/email-string.d.ts +0 -42
- package/src/email-string.d.ts.map +0 -1
- package/src/email-string.js +0 -67
- package/src/email-string.js.map +0 -1
- package/src/enumerations/disposed-error-type.d.ts +0 -12
- package/src/enumerations/disposed-error-type.d.ts.map +0 -1
- package/src/enumerations/disposed-error-type.js +0 -13
- package/src/enumerations/disposed-error-type.js.map +0 -1
- package/src/enumerations/ecies-cipher-suite.d.ts +0 -4
- package/src/enumerations/ecies-cipher-suite.d.ts.map +0 -1
- package/src/enumerations/ecies-cipher-suite.js +0 -6
- package/src/enumerations/ecies-cipher-suite.js.map +0 -1
- package/src/enumerations/ecies-encryption-type.d.ts +0 -11
- package/src/enumerations/ecies-encryption-type.d.ts.map +0 -1
- package/src/enumerations/ecies-encryption-type.js +0 -27
- package/src/enumerations/ecies-encryption-type.js.map +0 -1
- package/src/enumerations/ecies-error-type.d.ts +0 -44
- package/src/enumerations/ecies-error-type.d.ts.map +0 -1
- package/src/enumerations/ecies-error-type.js +0 -45
- package/src/enumerations/ecies-error-type.js.map +0 -1
- package/src/enumerations/ecies-string-key.d.ts +0 -192
- package/src/enumerations/ecies-string-key.d.ts.map +0 -1
- package/src/enumerations/ecies-string-key.js +0 -199
- package/src/enumerations/ecies-string-key.js.map +0 -1
- package/src/enumerations/ecies-version.d.ts +0 -4
- package/src/enumerations/ecies-version.d.ts.map +0 -1
- package/src/enumerations/ecies-version.js +0 -5
- package/src/enumerations/ecies-version.js.map +0 -1
- package/src/enumerations/guid-brand-type.d.ts +0 -27
- package/src/enumerations/guid-brand-type.d.ts.map +0 -1
- package/src/enumerations/guid-brand-type.js +0 -28
- package/src/enumerations/guid-brand-type.js.map +0 -1
- package/src/enumerations/guid-error-type.d.ts +0 -7
- package/src/enumerations/guid-error-type.d.ts.map +0 -1
- package/src/enumerations/guid-error-type.js +0 -8
- package/src/enumerations/guid-error-type.js.map +0 -1
- package/src/enumerations/id-provider-error-type.d.ts +0 -43
- package/src/enumerations/id-provider-error-type.d.ts.map +0 -1
- package/src/enumerations/id-provider-error-type.js +0 -44
- package/src/enumerations/id-provider-error-type.js.map +0 -1
- package/src/enumerations/index.d.ts +0 -18
- package/src/enumerations/index.d.ts.map +0 -1
- package/src/enumerations/index.js.map +0 -1
- package/src/enumerations/invalid-email-type.d.ts +0 -6
- package/src/enumerations/invalid-email-type.d.ts.map +0 -1
- package/src/enumerations/invalid-email-type.js +0 -7
- package/src/enumerations/invalid-email-type.js.map +0 -1
- package/src/enumerations/length-encoding-type.d.ts +0 -7
- package/src/enumerations/length-encoding-type.d.ts.map +0 -1
- package/src/enumerations/length-encoding-type.js +0 -8
- package/src/enumerations/length-encoding-type.js.map +0 -1
- package/src/enumerations/length-error-type.d.ts +0 -6
- package/src/enumerations/length-error-type.d.ts.map +0 -1
- package/src/enumerations/length-error-type.js +0 -7
- package/src/enumerations/length-error-type.js.map +0 -1
- package/src/enumerations/member-error-type.d.ts +0 -87
- package/src/enumerations/member-error-type.d.ts.map +0 -1
- package/src/enumerations/member-error-type.js +0 -88
- package/src/enumerations/member-error-type.js.map +0 -1
- package/src/enumerations/member-type.d.ts.map +0 -1
- package/src/enumerations/member-type.js +0 -16
- package/src/enumerations/member-type.js.map +0 -1
- package/src/enumerations/password-login-error-type.d.ts +0 -5
- package/src/enumerations/password-login-error-type.d.ts.map +0 -1
- package/src/enumerations/password-login-error-type.js +0 -6
- package/src/enumerations/password-login-error-type.js.map +0 -1
- package/src/enumerations/pbkdf2-error-type.d.ts +0 -6
- package/src/enumerations/pbkdf2-error-type.d.ts.map +0 -1
- package/src/enumerations/pbkdf2-error-type.js +0 -7
- package/src/enumerations/pbkdf2-error-type.js.map +0 -1
- package/src/enumerations/pbkdf2-profile.d.ts +0 -6
- package/src/enumerations/pbkdf2-profile.d.ts.map +0 -1
- package/src/enumerations/pbkdf2-profile.js +0 -7
- package/src/enumerations/pbkdf2-profile.js.map +0 -1
- package/src/enumerations/secure-storage-error-type.d.ts +0 -6
- package/src/enumerations/secure-storage-error-type.d.ts.map +0 -1
- package/src/enumerations/secure-storage-error-type.js +0 -7
- package/src/enumerations/secure-storage-error-type.js.map +0 -1
- package/src/errors/disposed.d.ts +0 -22
- package/src/errors/disposed.d.ts.map +0 -1
- package/src/errors/disposed.js +0 -28
- package/src/errors/disposed.js.map +0 -1
- package/src/errors/ecies.d.ts +0 -52
- package/src/errors/ecies.d.ts.map +0 -1
- package/src/errors/ecies.js +0 -78
- package/src/errors/ecies.js.map +0 -1
- package/src/errors/guid.d.ts +0 -49
- package/src/errors/guid.d.ts.map +0 -1
- package/src/errors/guid.js +0 -96
- package/src/errors/guid.js.map +0 -1
- package/src/errors/id-provider.d.ts +0 -23
- package/src/errors/id-provider.d.ts.map +0 -1
- package/src/errors/id-provider.js +0 -29
- package/src/errors/id-provider.js.map +0 -1
- package/src/errors/index.d.ts.map +0 -1
- package/src/errors/index.js +0 -10
- package/src/errors/index.js.map +0 -1
- package/src/errors/invalid-email.d.ts +0 -8
- package/src/errors/invalid-email.d.ts.map +0 -1
- package/src/errors/invalid-email.js +0 -15
- package/src/errors/invalid-email.js.map +0 -1
- package/src/errors/length.d.ts +0 -7
- package/src/errors/length.d.ts.map +0 -1
- package/src/errors/length.js +0 -11
- package/src/errors/length.js.map +0 -1
- package/src/errors/member.d.ts +0 -7
- package/src/errors/member.d.ts.map +0 -1
- package/src/errors/member.js +0 -11
- package/src/errors/member.js.map +0 -1
- package/src/errors/pbkdf2.d.ts +0 -7
- package/src/errors/pbkdf2.d.ts.map +0 -1
- package/src/errors/pbkdf2.js +0 -11
- package/src/errors/pbkdf2.js.map +0 -1
- package/src/errors/secure-storage.d.ts +0 -7
- package/src/errors/secure-storage.d.ts.map +0 -1
- package/src/errors/secure-storage.js +0 -12
- package/src/errors/secure-storage.js.map +0 -1
- package/src/errors/simple-ecies.d.ts +0 -6
- package/src/errors/simple-ecies.d.ts.map +0 -1
- package/src/errors/simple-ecies.js +0 -12
- package/src/errors/simple-ecies.js.map +0 -1
- package/src/errors/simple-test-error.d.ts +0 -4
- package/src/errors/simple-test-error.d.ts.map +0 -1
- package/src/errors/simple-test-error.js +0 -7
- package/src/errors/simple-test-error.js.map +0 -1
- package/src/i18n-setup.d.ts +0 -32
- package/src/i18n-setup.d.ts.map +0 -1
- package/src/i18n-setup.js +0 -101
- package/src/i18n-setup.js.map +0 -1
- package/src/index.d.ts +0 -80
- package/src/index.d.ts.map +0 -1
- package/src/index.js.map +0 -1
- package/src/interfaces/checksum-config.d.ts +0 -5
- package/src/interfaces/checksum-config.d.ts.map +0 -1
- package/src/interfaces/checksum-config.js +0 -2
- package/src/interfaces/checksum-config.js.map +0 -1
- package/src/interfaces/checksum-consts.d.ts +0 -11
- package/src/interfaces/checksum-consts.d.ts.map +0 -1
- package/src/interfaces/checksum-consts.js +0 -2
- package/src/interfaces/checksum-consts.js.map +0 -1
- package/src/interfaces/configuration-provenance.d.ts +0 -43
- package/src/interfaces/configuration-provenance.d.ts.map +0 -1
- package/src/interfaces/configuration-provenance.js +0 -3
- package/src/interfaces/configuration-provenance.js.map +0 -1
- package/src/interfaces/constants.d.ts +0 -70
- package/src/interfaces/constants.d.ts.map +0 -1
- package/src/interfaces/constants.js +0 -2
- package/src/interfaces/constants.js.map +0 -1
- package/src/interfaces/ecies-config.d.ts +0 -9
- package/src/interfaces/ecies-config.d.ts.map +0 -1
- package/src/interfaces/ecies-config.js +0 -2
- package/src/interfaces/ecies-config.js.map +0 -1
- package/src/interfaces/ecies-consts.d.ts +0 -61
- package/src/interfaces/ecies-consts.d.ts.map +0 -1
- package/src/interfaces/ecies-consts.js +0 -2
- package/src/interfaces/ecies-consts.js.map +0 -1
- package/src/interfaces/ecies-file-service.d.ts +0 -7
- package/src/interfaces/ecies-file-service.d.ts.map +0 -1
- package/src/interfaces/ecies-file-service.js +0 -2
- package/src/interfaces/ecies-file-service.js.map +0 -1
- package/src/interfaces/encrypted-chunk.d.ts +0 -55
- package/src/interfaces/encrypted-chunk.d.ts.map +0 -1
- package/src/interfaces/encrypted-chunk.js +0 -12
- package/src/interfaces/encrypted-chunk.js.map +0 -1
- package/src/interfaces/encryption-state.d.ts +0 -18
- package/src/interfaces/encryption-state.d.ts.map +0 -1
- package/src/interfaces/encryption-state.js +0 -2
- package/src/interfaces/encryption-state.js.map +0 -1
- package/src/interfaces/frontend-member-operational.d.ts +0 -51
- package/src/interfaces/frontend-member-operational.d.ts.map +0 -1
- package/src/interfaces/frontend-member-operational.js +0 -2
- package/src/interfaces/frontend-member-operational.js.map +0 -1
- package/src/interfaces/guid.d.ts +0 -78
- package/src/interfaces/guid.d.ts.map +0 -1
- package/src/interfaces/guid.js +0 -2
- package/src/interfaces/guid.js.map +0 -1
- package/src/interfaces/id-provider.d.ts +0 -107
- package/src/interfaces/id-provider.d.ts.map +0 -1
- package/src/interfaces/id-provider.js +0 -52
- package/src/interfaces/id-provider.js.map +0 -1
- package/src/interfaces/index.d.ts.map +0 -1
- package/src/interfaces/index.js +0 -13
- package/src/interfaces/index.js.map +0 -1
- package/src/interfaces/invariant.d.ts +0 -46
- package/src/interfaces/invariant.d.ts.map +0 -1
- package/src/interfaces/invariant.js +0 -18
- package/src/interfaces/invariant.js.map +0 -1
- package/src/interfaces/library-error.d.ts +0 -23
- package/src/interfaces/library-error.d.ts.map +0 -1
- package/src/interfaces/library-error.js +0 -2
- package/src/interfaces/library-error.js.map +0 -1
- package/src/interfaces/member-storage.d.ts.map +0 -1
- package/src/interfaces/member-storage.js +0 -2
- package/src/interfaces/member-storage.js.map +0 -1
- package/src/interfaces/member-with-mnemonic.d.ts.map +0 -1
- package/src/interfaces/member-with-mnemonic.js +0 -2
- package/src/interfaces/member-with-mnemonic.js.map +0 -1
- package/src/interfaces/member.d.ts +0 -55
- package/src/interfaces/member.d.ts.map +0 -1
- package/src/interfaces/member.js +0 -2
- package/src/interfaces/member.js.map +0 -1
- package/src/interfaces/multi-recipient-chunk.d.ts +0 -54
- package/src/interfaces/multi-recipient-chunk.d.ts.map +0 -1
- package/src/interfaces/multi-recipient-chunk.js +0 -11
- package/src/interfaces/multi-recipient-chunk.js.map +0 -1
- package/src/interfaces/pbkdf2-config.d.ts +0 -7
- package/src/interfaces/pbkdf2-config.d.ts.map +0 -1
- package/src/interfaces/pbkdf2-config.js +0 -2
- package/src/interfaces/pbkdf2-config.js.map +0 -1
- package/src/interfaces/pbkdf2-consts.d.ts +0 -9
- package/src/interfaces/pbkdf2-consts.d.ts.map +0 -1
- package/src/interfaces/pbkdf2-consts.js +0 -2
- package/src/interfaces/pbkdf2-consts.js.map +0 -1
- package/src/interfaces/pbkdf2-result.d.ts +0 -6
- package/src/interfaces/pbkdf2-result.d.ts.map +0 -1
- package/src/interfaces/pbkdf2-result.js +0 -2
- package/src/interfaces/pbkdf2-result.js.map +0 -1
- package/src/interfaces/stream-config.d.ts +0 -14
- package/src/interfaces/stream-config.d.ts.map +0 -1
- package/src/interfaces/stream-config.js +0 -8
- package/src/interfaces/stream-config.js.map +0 -1
- package/src/interfaces/stream-header.d.ts +0 -29
- package/src/interfaces/stream-header.d.ts.map +0 -1
- package/src/interfaces/stream-header.js +0 -9
- package/src/interfaces/stream-header.js.map +0 -1
- package/src/interfaces/stream-progress.d.ts +0 -33
- package/src/interfaces/stream-progress.d.ts.map +0 -1
- package/src/interfaces/stream-progress.js +0 -2
- package/src/interfaces/stream-progress.js.map +0 -1
- package/src/lib/configuration-provenance-utils.d.ts +0 -11
- package/src/lib/configuration-provenance-utils.d.ts.map +0 -1
- package/src/lib/configuration-provenance-utils.js +0 -23
- package/src/lib/configuration-provenance-utils.js.map +0 -1
- package/src/lib/crypto-container.d.ts +0 -25
- package/src/lib/crypto-container.d.ts.map +0 -1
- package/src/lib/crypto-container.js +0 -46
- package/src/lib/crypto-container.js.map +0 -1
- package/src/lib/guid.d.ts +0 -344
- package/src/lib/guid.d.ts.map +0 -1
- package/src/lib/guid.js +0 -914
- package/src/lib/guid.js.map +0 -1
- package/src/lib/id-providers/custom-provider.d.ts +0 -46
- package/src/lib/id-providers/custom-provider.d.ts.map +0 -1
- package/src/lib/id-providers/custom-provider.js +0 -85
- package/src/lib/id-providers/custom-provider.js.map +0 -1
- package/src/lib/id-providers/guidv4-provider.d.ts +0 -56
- package/src/lib/id-providers/guidv4-provider.d.ts.map +0 -1
- package/src/lib/id-providers/guidv4-provider.js +0 -122
- package/src/lib/id-providers/guidv4-provider.js.map +0 -1
- package/src/lib/id-providers/index.d.ts.map +0 -1
- package/src/lib/id-providers/index.js +0 -29
- package/src/lib/id-providers/index.js.map +0 -1
- package/src/lib/id-providers/objectid-provider.d.ts +0 -43
- package/src/lib/id-providers/objectid-provider.d.ts.map +0 -1
- package/src/lib/id-providers/objectid-provider.js +0 -104
- package/src/lib/id-providers/objectid-provider.js.map +0 -1
- package/src/lib/id-providers/uuid-provider.d.ts +0 -52
- package/src/lib/id-providers/uuid-provider.d.ts.map +0 -1
- package/src/lib/id-providers/uuid-provider.js +0 -110
- package/src/lib/id-providers/uuid-provider.js.map +0 -1
- package/src/lib/index.d.ts +0 -6
- package/src/lib/index.d.ts.map +0 -1
- package/src/lib/index.js.map +0 -1
- package/src/lib/invariant-validator.d.ts +0 -59
- package/src/lib/invariant-validator.d.ts.map +0 -1
- package/src/lib/invariant-validator.js +0 -97
- package/src/lib/invariant-validator.js.map +0 -1
- package/src/lib/invariants/encryption-algorithm-consistency.d.ts +0 -17
- package/src/lib/invariants/encryption-algorithm-consistency.d.ts.map +0 -1
- package/src/lib/invariants/encryption-algorithm-consistency.js +0 -49
- package/src/lib/invariants/encryption-algorithm-consistency.js.map +0 -1
- package/src/lib/invariants/index.d.ts +0 -4
- package/src/lib/invariants/index.d.ts.map +0 -1
- package/src/lib/invariants/index.js.map +0 -1
- package/src/lib/invariants/pbkdf2-profiles-validity.d.ts +0 -16
- package/src/lib/invariants/pbkdf2-profiles-validity.d.ts.map +0 -1
- package/src/lib/invariants/pbkdf2-profiles-validity.js +0 -58
- package/src/lib/invariants/pbkdf2-profiles-validity.js.map +0 -1
- package/src/lib/invariants/recipient-id-consistency.d.ts +0 -18
- package/src/lib/invariants/recipient-id-consistency.d.ts.map +0 -1
- package/src/lib/invariants/recipient-id-consistency.js +0 -31
- package/src/lib/invariants/recipient-id-consistency.js.map +0 -1
- package/src/lib/multi-recipient-chunk-utils.d.ts +0 -38
- package/src/lib/multi-recipient-chunk-utils.d.ts.map +0 -1
- package/src/lib/multi-recipient-chunk-utils.js +0 -41
- package/src/lib/multi-recipient-chunk-utils.js.map +0 -1
- package/src/member.d.ts +0 -92
- package/src/member.d.ts.map +0 -1
- package/src/member.js +0 -322
- package/src/member.js.map +0 -1
- package/src/pbkdf2-profiles.d.ts.map +0 -1
- package/src/pbkdf2-profiles.js +0 -2
- package/src/pbkdf2-profiles.js.map +0 -1
- package/src/phone-number.d.ts +0 -6
- package/src/phone-number.d.ts.map +0 -1
- package/src/phone-number.js +0 -18
- package/src/phone-number.js.map +0 -1
- package/src/regexes.d.ts +0 -7
- package/src/regexes.d.ts.map +0 -1
- package/src/regexes.js +0 -7
- package/src/regexes.js.map +0 -1
- package/src/secure-buffer.d.ts +0 -61
- package/src/secure-buffer.d.ts.map +0 -1
- package/src/secure-buffer.js +0 -201
- package/src/secure-buffer.js.map +0 -1
- package/src/secure-string.d.ts +0 -46
- package/src/secure-string.d.ts.map +0 -1
- package/src/secure-string.js +0 -206
- package/src/secure-string.js.map +0 -1
- package/src/services/aes-gcm.d.ts +0 -57
- package/src/services/aes-gcm.d.ts.map +0 -1
- package/src/services/aes-gcm.js +0 -142
- package/src/services/aes-gcm.js.map +0 -1
- package/src/services/chunk-processor.d.ts +0 -31
- package/src/services/chunk-processor.d.ts.map +0 -1
- package/src/services/chunk-processor.js +0 -145
- package/src/services/chunk-processor.js.map +0 -1
- package/src/services/ecies/crypto-core.d.ts +0 -72
- package/src/services/ecies/crypto-core.d.ts.map +0 -1
- package/src/services/ecies/crypto-core.js +0 -205
- package/src/services/ecies/crypto-core.js.map +0 -1
- package/src/services/ecies/example.d.ts +0 -25
- package/src/services/ecies/example.d.ts.map +0 -1
- package/src/services/ecies/example.js +0 -121
- package/src/services/ecies/example.js.map +0 -1
- package/src/services/ecies/file.d.ts +0 -18
- package/src/services/ecies/file.d.ts.map +0 -1
- package/src/services/ecies/file.js +0 -106
- package/src/services/ecies/file.js.map +0 -1
- package/src/services/ecies/index.d.ts +0 -38
- package/src/services/ecies/index.d.ts.map +0 -1
- package/src/services/ecies/index.js.map +0 -1
- package/src/services/ecies/integration.d.ts +0 -59
- package/src/services/ecies/integration.d.ts.map +0 -1
- package/src/services/ecies/integration.js +0 -167
- package/src/services/ecies/integration.js.map +0 -1
- package/src/services/ecies/interfaces.d.ts +0 -54
- package/src/services/ecies/interfaces.d.ts.map +0 -1
- package/src/services/ecies/interfaces.js +0 -5
- package/src/services/ecies/interfaces.js.map +0 -1
- package/src/services/ecies/manual-test.d.ts +0 -29
- package/src/services/ecies/manual-test.d.ts.map +0 -1
- package/src/services/ecies/manual-test.js +0 -163
- package/src/services/ecies/manual-test.js.map +0 -1
- package/src/services/ecies/multi-recipient.d.ts +0 -56
- package/src/services/ecies/multi-recipient.d.ts.map +0 -1
- package/src/services/ecies/multi-recipient.js +0 -344
- package/src/services/ecies/multi-recipient.js.map +0 -1
- package/src/services/ecies/service.d.ts +0 -120
- package/src/services/ecies/service.d.ts.map +0 -1
- package/src/services/ecies/service.js +0 -210
- package/src/services/ecies/service.js.map +0 -1
- package/src/services/ecies/signature.d.ts +0 -27
- package/src/services/ecies/signature.d.ts.map +0 -1
- package/src/services/ecies/signature.js +0 -72
- package/src/services/ecies/signature.js.map +0 -1
- package/src/services/ecies/single-recipient.d.ts +0 -46
- package/src/services/ecies/single-recipient.d.ts.map +0 -1
- package/src/services/ecies/single-recipient.js +0 -322
- package/src/services/ecies/single-recipient.js.map +0 -1
- package/src/services/encryption-stream.d.ts +0 -71
- package/src/services/encryption-stream.d.ts.map +0 -1
- package/src/services/encryption-stream.js +0 -295
- package/src/services/encryption-stream.js.map +0 -1
- package/src/services/index.d.ts +0 -11
- package/src/services/index.d.ts.map +0 -1
- package/src/services/index.js.map +0 -1
- package/src/services/multi-recipient-processor.d.ts +0 -35
- package/src/services/multi-recipient-processor.d.ts.map +0 -1
- package/src/services/multi-recipient-processor.js +0 -289
- package/src/services/multi-recipient-processor.js.map +0 -1
- package/src/services/password-login.d.ts +0 -47
- package/src/services/password-login.d.ts.map +0 -1
- package/src/services/password-login.js +0 -115
- package/src/services/password-login.js.map +0 -1
- package/src/services/pbkdf2.d.ts +0 -54
- package/src/services/pbkdf2.d.ts.map +0 -1
- package/src/services/pbkdf2.js +0 -108
- package/src/services/pbkdf2.js.map +0 -1
- package/src/services/progress-tracker.d.ts +0 -23
- package/src/services/progress-tracker.d.ts.map +0 -1
- package/src/services/progress-tracker.js +0 -103
- package/src/services/progress-tracker.js.map +0 -1
- package/src/services/resumable-encryption.d.ts +0 -19
- package/src/services/resumable-encryption.d.ts.map +0 -1
- package/src/services/resumable-encryption.js +0 -105
- package/src/services/resumable-encryption.js.map +0 -1
- package/src/services/xor.d.ts +0 -37
- package/src/services/xor.d.ts.map +0 -1
- package/src/services/xor.js +0 -63
- package/src/services/xor.js.map +0 -1
- package/src/test-mocks/index.d.ts +0 -2
- package/src/test-mocks/index.d.ts.map +0 -1
- package/src/test-mocks/index.js +0 -2
- package/src/test-mocks/index.js.map +0 -1
- package/src/test-mocks/mock-frontend-member.d.ts +0 -85
- package/src/test-mocks/mock-frontend-member.d.ts.map +0 -1
- package/src/test-mocks/mock-frontend-member.js +0 -190
- package/src/test-mocks/mock-frontend-member.js.map +0 -1
- package/src/testing.d.ts +0 -2
- package/src/testing.d.ts.map +0 -1
- package/src/testing.js.map +0 -1
- package/src/translations/de.d.ts +0 -4
- package/src/translations/de.d.ts.map +0 -1
- package/src/translations/de.js.map +0 -1
- package/src/translations/en-US.d.ts +0 -4
- package/src/translations/en-US.d.ts.map +0 -1
- package/src/translations/en-US.js.map +0 -1
- package/src/translations/es.d.ts +0 -4
- package/src/translations/es.d.ts.map +0 -1
- package/src/translations/es.js.map +0 -1
- package/src/translations/fr.d.ts +0 -4
- package/src/translations/fr.d.ts.map +0 -1
- package/src/translations/fr.js.map +0 -1
- package/src/translations/ja.d.ts +0 -4
- package/src/translations/ja.d.ts.map +0 -1
- package/src/translations/ja.js.map +0 -1
- package/src/translations/uk.d.ts +0 -4
- package/src/translations/uk.d.ts.map +0 -1
- package/src/translations/uk.js.map +0 -1
- package/src/translations/zh-cn.d.ts +0 -4
- package/src/translations/zh-cn.d.ts.map +0 -1
- package/src/translations/zh-cn.js.map +0 -1
- package/src/types/deep-partial.d.ts +0 -4
- package/src/types/deep-partial.d.ts.map +0 -1
- package/src/types/deep-partial.js +0 -2
- package/src/types/deep-partial.js.map +0 -1
- package/src/types.d.ts.map +0 -1
- package/src/types.js +0 -2
- package/src/types.js.map +0 -1
- package/src/utils/encryption-type-utils.d.ts +0 -29
- package/src/utils/encryption-type-utils.d.ts.map +0 -1
- package/src/utils/encryption-type-utils.js +0 -61
- package/src/utils/encryption-type-utils.js.map +0 -1
- package/src/utils.d.ts +0 -68
- package/src/utils.d.ts.map +0 -1
- package/src/utils.js +0 -273
- package/src/utils.js.map +0 -1
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface for ID providers that supply recipient identifiers.
|
|
3
|
+
* This allows the library to support various ID formats (ObjectID, GUID, UUID, custom).
|
|
4
|
+
*/
|
|
5
|
+
export interface IIdProvider {
|
|
6
|
+
/**
|
|
7
|
+
* The fixed byte length of IDs produced by this provider.
|
|
8
|
+
* This determines the size of recipient ID fields in encrypted messages.
|
|
9
|
+
*/
|
|
10
|
+
readonly byteLength: number;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* A human-readable name for this ID provider type.
|
|
14
|
+
* Examples: 'ObjectID', 'GUIDv4', 'UUIDv4', 'Custom'
|
|
15
|
+
*/
|
|
16
|
+
readonly name: string;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Generate a new random ID.
|
|
20
|
+
* @returns A newly generated ID as a Uint8Array of length `byteLength`
|
|
21
|
+
*/
|
|
22
|
+
generate(): Uint8Array;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Validate that a given buffer is a properly formatted ID for this provider.
|
|
26
|
+
* This should check length, format constraints, and any version bits if applicable.
|
|
27
|
+
* @param id The ID buffer to validate
|
|
28
|
+
* @returns True if the ID is valid for this provider, false otherwise
|
|
29
|
+
*/
|
|
30
|
+
validate(id: Uint8Array): boolean;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Serialize an ID buffer to a human-readable string representation.
|
|
34
|
+
* Examples: hex string, base64, ObjectID hex, UUID format with dashes
|
|
35
|
+
* @param id The ID buffer to serialize
|
|
36
|
+
* @returns A string representation of the ID
|
|
37
|
+
* @throws Error if the ID is invalid
|
|
38
|
+
*/
|
|
39
|
+
serialize(id: Uint8Array): string;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Deserialize a string representation back to an ID buffer.
|
|
43
|
+
* This is the inverse of `serialize`.
|
|
44
|
+
* @param str The string representation of the ID
|
|
45
|
+
* @returns The ID as a Uint8Array of length `byteLength`
|
|
46
|
+
* @throws Error if the string is not a valid representation
|
|
47
|
+
*/
|
|
48
|
+
deserialize(str: string): Uint8Array;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Compare two IDs for equality.
|
|
52
|
+
* Default implementation uses constant-time comparison.
|
|
53
|
+
* @param a First ID
|
|
54
|
+
* @param b Second ID
|
|
55
|
+
* @returns True if IDs are equal, false otherwise
|
|
56
|
+
*/
|
|
57
|
+
equals(a: Uint8Array, b: Uint8Array): boolean;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Clone an ID buffer.
|
|
61
|
+
* Default implementation creates a defensive copy.
|
|
62
|
+
* @param id The ID to clone
|
|
63
|
+
* @returns A new Uint8Array with the same contents
|
|
64
|
+
*/
|
|
65
|
+
clone(id: Uint8Array): Uint8Array;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Convert an ID of unknown type to a string representation.
|
|
69
|
+
* This is useful when dealing with generic IDs that might be Uint8Array, string, or other types.
|
|
70
|
+
* @param id The ID to convert
|
|
71
|
+
* @returns A string representation of the ID
|
|
72
|
+
*/
|
|
73
|
+
idToString(id: unknown): string;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Convert a string representation of an ID back to an ID buffer.
|
|
77
|
+
* This is an alias for `deserialize` to provide symmetry with `idToString`.
|
|
78
|
+
* @param str The string representation of the ID
|
|
79
|
+
* @returns The ID as a Uint8Array of length `byteLength`
|
|
80
|
+
*/
|
|
81
|
+
idFromString(str: string): Uint8Array;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Base class for ID providers with common utility methods.
|
|
86
|
+
*/
|
|
87
|
+
export abstract class BaseIdProvider implements IIdProvider {
|
|
88
|
+
abstract readonly byteLength: number;
|
|
89
|
+
abstract readonly name: string;
|
|
90
|
+
|
|
91
|
+
abstract generate(): Uint8Array;
|
|
92
|
+
abstract validate(id: Uint8Array): boolean;
|
|
93
|
+
abstract serialize(id: Uint8Array): string;
|
|
94
|
+
abstract deserialize(str: string): Uint8Array;
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Convert an ID of unknown type to a string representation.
|
|
98
|
+
* Default implementation handles Uint8Array using serialize(), and falls back to String().
|
|
99
|
+
*/
|
|
100
|
+
idToString(id: unknown): string {
|
|
101
|
+
if (id instanceof Uint8Array) {
|
|
102
|
+
return this.serialize(id);
|
|
103
|
+
}
|
|
104
|
+
return String(id);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Convert a string representation of an ID back to an ID buffer.
|
|
109
|
+
* Default implementation delegates to `deserialize`.
|
|
110
|
+
*/
|
|
111
|
+
idFromString(str: string): Uint8Array {
|
|
112
|
+
return this.deserialize(str);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Constant-time comparison to prevent timing attacks.
|
|
117
|
+
*/
|
|
118
|
+
equals(a: Uint8Array, b: Uint8Array): boolean {
|
|
119
|
+
if (a.length !== b.length) {
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
let diff = 0;
|
|
124
|
+
for (let i = 0; i < a.length; i++) {
|
|
125
|
+
diff |= a[i] ^ b[i];
|
|
126
|
+
}
|
|
127
|
+
return diff === 0;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Create a defensive copy of an ID.
|
|
132
|
+
*/
|
|
133
|
+
clone(id: Uint8Array): Uint8Array {
|
|
134
|
+
return new Uint8Array(id);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Validate ID length matches expected byte length.
|
|
139
|
+
*/
|
|
140
|
+
protected validateLength(id: Uint8Array, context: string): void {
|
|
141
|
+
if (id.length !== this.byteLength) {
|
|
142
|
+
const { IdProviderError } = require('../errors/id-provider');
|
|
143
|
+
const { IdProviderErrorType } = require('../enumerations/id-provider-error-type');
|
|
144
|
+
throw new IdProviderError(
|
|
145
|
+
IdProviderErrorType.InvalidLength,
|
|
146
|
+
undefined,
|
|
147
|
+
undefined,
|
|
148
|
+
{ context, expected: this.byteLength, actual: id.length }
|
|
149
|
+
);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { IConstants } from './constants';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* An invariant is a relationship between configuration values that must always hold true.
|
|
5
|
+
* Unlike simple property validation, invariants check consistency across multiple related values.
|
|
6
|
+
*
|
|
7
|
+
* Example: MEMBER_ID_LENGTH must equal idProvider.byteLength
|
|
8
|
+
*
|
|
9
|
+
* Invariants help catch configuration errors that simple property validation would miss,
|
|
10
|
+
* such as the 12 vs 32 byte discrepancy we encountered.
|
|
11
|
+
*/
|
|
12
|
+
export interface IInvariant {
|
|
13
|
+
/**
|
|
14
|
+
* Unique name for this invariant (used in error messages)
|
|
15
|
+
*/
|
|
16
|
+
readonly name: string;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Human-readable description of what this invariant validates
|
|
20
|
+
*/
|
|
21
|
+
readonly description: string;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Check if the invariant holds for the given configuration
|
|
25
|
+
* @returns true if invariant is satisfied, false otherwise
|
|
26
|
+
*/
|
|
27
|
+
check(config: IConstants): boolean;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Generate a detailed error message explaining why the invariant failed
|
|
31
|
+
* @param config The configuration that failed validation
|
|
32
|
+
* @returns Error message with actual vs expected values
|
|
33
|
+
*/
|
|
34
|
+
errorMessage(config: IConstants): string;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Base class for invariants with common utilities
|
|
39
|
+
*/
|
|
40
|
+
export abstract class BaseInvariant implements IInvariant {
|
|
41
|
+
constructor(
|
|
42
|
+
public readonly name: string,
|
|
43
|
+
public readonly description: string,
|
|
44
|
+
) {}
|
|
45
|
+
|
|
46
|
+
abstract check(config: IConstants): boolean;
|
|
47
|
+
abstract errorMessage(config: IConstants): string;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Helper to format error messages consistently
|
|
51
|
+
*/
|
|
52
|
+
protected formatError(
|
|
53
|
+
property1: string,
|
|
54
|
+
value1: unknown,
|
|
55
|
+
property2: string,
|
|
56
|
+
value2: unknown,
|
|
57
|
+
): string {
|
|
58
|
+
return `Invariant '${this.name}' failed: ${property1} (${value1}) must equal ${property2} (${value2})`;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standardized error interface for Digital Defiance libraries
|
|
3
|
+
* Ensures consistent error handling across the ecosystem
|
|
4
|
+
*/
|
|
5
|
+
export interface LibraryError extends Error {
|
|
6
|
+
/** The library that generated this error */
|
|
7
|
+
readonly library: string;
|
|
8
|
+
/** Unique error code for programmatic handling */
|
|
9
|
+
readonly errorCode: string;
|
|
10
|
+
/** HTTP-style status code */
|
|
11
|
+
readonly statusCode: number;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Interface for resources that can be disposed
|
|
16
|
+
* Ensures consistent memory management across libraries
|
|
17
|
+
*/
|
|
18
|
+
export interface DisposableResource {
|
|
19
|
+
/** Dispose of the resource and clean up memory */
|
|
20
|
+
dispose(): void;
|
|
21
|
+
/** Whether the resource has been disposed */
|
|
22
|
+
readonly isDisposed: boolean;
|
|
23
|
+
}
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import type { MemberType } from '../enumerations/member-type';
|
|
2
|
+
|
|
2
3
|
/**
|
|
3
4
|
* Storage format for member data - all serializable types
|
|
4
5
|
*/
|
|
5
6
|
export interface IMemberStorageData {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
id: string;
|
|
8
|
+
type: MemberType;
|
|
9
|
+
name: string;
|
|
10
|
+
email: string;
|
|
11
|
+
publicKey: string; // base64
|
|
12
|
+
creatorId: string;
|
|
13
|
+
dateCreated: string; // ISO string
|
|
14
|
+
dateUpdated: string; // ISO string
|
|
14
15
|
}
|
|
16
|
+
|
|
15
17
|
/**
|
|
16
18
|
* Extended storage format for test member data
|
|
17
19
|
*/
|
|
18
20
|
export interface ITestMemberStorageData extends IMemberStorageData {
|
|
19
|
-
|
|
21
|
+
mnemonic?: string;
|
|
20
22
|
}
|
|
21
|
-
//# sourceMappingURL=member-storage.d.ts.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { SecureString } from '../secure-string';
|
|
2
2
|
import type { IMember } from './member';
|
|
3
|
+
|
|
3
4
|
export interface IMemberWithMnemonic {
|
|
4
|
-
|
|
5
|
-
|
|
5
|
+
member: IMember;
|
|
6
|
+
mnemonic: SecureString;
|
|
6
7
|
}
|
|
7
|
-
//# sourceMappingURL=member-with-mnemonic.d.ts.map
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type { Wallet } from '@ethereumjs/wallet';
|
|
2
|
+
import type { EmailString } from '../email-string';
|
|
3
|
+
import type MemberType from '../enumerations/member-type';
|
|
4
|
+
import type { SecureBuffer } from '../secure-buffer';
|
|
5
|
+
import type { SecureString } from '../secure-string';
|
|
6
|
+
import type { SignatureUint8Array } from '../types';
|
|
7
|
+
import type { IECIESConstants } from './ecies-consts';
|
|
8
|
+
import type { IEncryptedChunk } from './encrypted-chunk';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Interface representing a member with cryptographic capabilities.
|
|
12
|
+
* This interface defines the contract for member operations without
|
|
13
|
+
* referencing concrete class implementations.
|
|
14
|
+
*/
|
|
15
|
+
export interface IMember {
|
|
16
|
+
// Required properties
|
|
17
|
+
readonly id: Uint8Array;
|
|
18
|
+
readonly type: MemberType;
|
|
19
|
+
readonly name: string;
|
|
20
|
+
readonly email: EmailString;
|
|
21
|
+
readonly publicKey: Uint8Array;
|
|
22
|
+
readonly creatorId: Uint8Array;
|
|
23
|
+
readonly dateCreated: Date;
|
|
24
|
+
readonly dateUpdated: Date;
|
|
25
|
+
|
|
26
|
+
// Optional private data properties
|
|
27
|
+
readonly privateKey: SecureBuffer | undefined;
|
|
28
|
+
readonly wallet: Wallet;
|
|
29
|
+
|
|
30
|
+
// State properties
|
|
31
|
+
readonly hasPrivateKey: boolean;
|
|
32
|
+
|
|
33
|
+
// Key management methods
|
|
34
|
+
unloadPrivateKey(): void;
|
|
35
|
+
unloadWallet(): void;
|
|
36
|
+
unloadWalletAndPrivateKey(): void;
|
|
37
|
+
loadWallet(mnemonic: SecureString, eciesParams?: IECIESConstants): void;
|
|
38
|
+
loadPrivateKey(privateKey: SecureBuffer): void;
|
|
39
|
+
|
|
40
|
+
// Cryptographic methods
|
|
41
|
+
sign(data: Uint8Array): SignatureUint8Array;
|
|
42
|
+
signData(data: Uint8Array): SignatureUint8Array;
|
|
43
|
+
verify(signature: SignatureUint8Array, data: Uint8Array): boolean;
|
|
44
|
+
verifySignature(
|
|
45
|
+
data: Uint8Array,
|
|
46
|
+
signature: Uint8Array,
|
|
47
|
+
publicKey: Uint8Array,
|
|
48
|
+
): boolean;
|
|
49
|
+
|
|
50
|
+
// Encryption/Decryption methods
|
|
51
|
+
encryptDataStream(
|
|
52
|
+
source: AsyncIterable<Uint8Array> | ReadableStream<Uint8Array>,
|
|
53
|
+
options?: {
|
|
54
|
+
recipientPublicKey?: Uint8Array;
|
|
55
|
+
onProgress?: (progress: {
|
|
56
|
+
bytesProcessed: number;
|
|
57
|
+
chunksProcessed: number;
|
|
58
|
+
}) => void;
|
|
59
|
+
signal?: AbortSignal;
|
|
60
|
+
},
|
|
61
|
+
): AsyncGenerator<IEncryptedChunk, void, unknown>;
|
|
62
|
+
|
|
63
|
+
decryptDataStream(
|
|
64
|
+
source: AsyncIterable<Uint8Array> | ReadableStream<Uint8Array>,
|
|
65
|
+
options?: {
|
|
66
|
+
onProgress?: (progress: {
|
|
67
|
+
bytesProcessed: number;
|
|
68
|
+
chunksProcessed: number;
|
|
69
|
+
}) => void;
|
|
70
|
+
signal?: AbortSignal;
|
|
71
|
+
},
|
|
72
|
+
): AsyncGenerator<Uint8Array, void, unknown>;
|
|
73
|
+
|
|
74
|
+
encryptData(
|
|
75
|
+
data: string | Uint8Array,
|
|
76
|
+
recipientPublicKey?: Uint8Array,
|
|
77
|
+
): Promise<Uint8Array>;
|
|
78
|
+
|
|
79
|
+
decryptData(encryptedData: Uint8Array): Promise<Uint8Array>;
|
|
80
|
+
|
|
81
|
+
// Serialization methods
|
|
82
|
+
toJson(): string;
|
|
83
|
+
dispose(): void;
|
|
84
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-recipient encrypted chunk format
|
|
3
|
+
*
|
|
4
|
+
* Structure:
|
|
5
|
+
* - Header (32 bytes): magic, version, recipientCount, chunkIndex, etc.
|
|
6
|
+
* - Recipient headers (variable): encrypted symmetric keys for each recipient
|
|
7
|
+
* - Encrypted data (variable): data encrypted with symmetric key
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Multi-recipient chunk header (32 bytes)
|
|
12
|
+
*/
|
|
13
|
+
export interface IMultiRecipientChunkHeader {
|
|
14
|
+
/** Magic bytes: 0x4D524543 ("MREC") */
|
|
15
|
+
magic: number;
|
|
16
|
+
/** Version: 0x0001 */
|
|
17
|
+
version: number;
|
|
18
|
+
/** Number of recipients */
|
|
19
|
+
recipientCount: number;
|
|
20
|
+
/** Chunk index */
|
|
21
|
+
chunkIndex: number;
|
|
22
|
+
/** Original data size */
|
|
23
|
+
originalSize: number;
|
|
24
|
+
/** Encrypted data size */
|
|
25
|
+
encryptedSize: number;
|
|
26
|
+
/** Flags (bit 0: isLast, bit 1: hasChecksum) */
|
|
27
|
+
flags: number;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Recipient header (variable size)
|
|
32
|
+
*/
|
|
33
|
+
export interface IRecipientHeader {
|
|
34
|
+
/** Recipient ID (size determined by ID provider) */
|
|
35
|
+
id: Uint8Array;
|
|
36
|
+
/** Encrypted symmetric key size (2 bytes) */
|
|
37
|
+
keySize: number;
|
|
38
|
+
/** Encrypted symmetric key (variable) */
|
|
39
|
+
encryptedKey: Uint8Array;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Multi-recipient encrypted chunk
|
|
44
|
+
*/
|
|
45
|
+
export interface IMultiRecipientChunk {
|
|
46
|
+
/** Chunk index */
|
|
47
|
+
index: number;
|
|
48
|
+
/** Complete chunk data (header + recipient headers + encrypted data) */
|
|
49
|
+
data: Uint8Array;
|
|
50
|
+
/** Whether this is the last chunk */
|
|
51
|
+
isLast: boolean;
|
|
52
|
+
/** Number of recipients */
|
|
53
|
+
recipientCount: number;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// Re-export interface (type-only), utility function and constant from lib
|
|
57
|
+
export {
|
|
58
|
+
MULTI_RECIPIENT_CONSTANTS,
|
|
59
|
+
getMultiRecipientConstants,
|
|
60
|
+
} from '../lib/multi-recipient-chunk-utils';
|
|
61
|
+
export type { IMultiRecipientConstants } from '../lib/multi-recipient-chunk-utils';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface IPBkdf2Consts {
|
|
2
|
+
/** Hash algorithm (sha512) */
|
|
3
|
+
ALGORITHM: string;
|
|
4
|
+
|
|
5
|
+
/** Number of bytes in a salt. */
|
|
6
|
+
SALT_BYTES: number;
|
|
7
|
+
|
|
8
|
+
/** Expected number of pbkdf2 iterations per second when hashing a password. */
|
|
9
|
+
ITERATIONS_PER_SECOND: number;
|
|
10
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration for streaming encryption operations
|
|
3
|
+
*/
|
|
4
|
+
export interface IStreamConfig {
|
|
5
|
+
/** Chunk size in bytes (default: 1MB) */
|
|
6
|
+
chunkSize: number;
|
|
7
|
+
/** Whether to include checksums for each chunk */
|
|
8
|
+
includeChecksums: boolean;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Default streaming configuration
|
|
13
|
+
*/
|
|
14
|
+
export const DEFAULT_STREAM_CONFIG: IStreamConfig = {
|
|
15
|
+
chunkSize: 1024 * 1024, // 1MB
|
|
16
|
+
includeChecksums: false,
|
|
17
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { EciesEncryptionTypeEnum } from '../enumerations/ecies-encryption-type';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Stream header structure (128 bytes fixed)
|
|
5
|
+
*/
|
|
6
|
+
export interface IStreamHeader {
|
|
7
|
+
/** Magic bytes: 0x45435354 ("ECST") */
|
|
8
|
+
magic: number;
|
|
9
|
+
/** Version: 0x0001 */
|
|
10
|
+
version: number;
|
|
11
|
+
/** Encryption type */
|
|
12
|
+
encryptionType: EciesEncryptionTypeEnum;
|
|
13
|
+
/** Chunk size in bytes */
|
|
14
|
+
chunkSize: number;
|
|
15
|
+
/** Total number of chunks (0 if unknown) */
|
|
16
|
+
totalChunks: number;
|
|
17
|
+
/** Total bytes to process (0 if unknown) */
|
|
18
|
+
totalBytes: number;
|
|
19
|
+
/** Timestamp when stream started */
|
|
20
|
+
timestamp: number;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Constants for stream header format
|
|
25
|
+
*/
|
|
26
|
+
export const STREAM_HEADER_CONSTANTS: {
|
|
27
|
+
readonly MAGIC: 0x45435354;
|
|
28
|
+
readonly VERSION: 0x0001;
|
|
29
|
+
readonly HEADER_SIZE: 128;
|
|
30
|
+
} = {
|
|
31
|
+
MAGIC: 0x45435354, // "ECST"
|
|
32
|
+
VERSION: 0x0001,
|
|
33
|
+
HEADER_SIZE: 128,
|
|
34
|
+
} as const;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Progress information for streaming operations
|
|
3
|
+
*/
|
|
4
|
+
export interface IStreamProgress {
|
|
5
|
+
/** Total bytes processed so far */
|
|
6
|
+
bytesProcessed: number;
|
|
7
|
+
/** Total bytes to process (undefined for unknown-length streams) */
|
|
8
|
+
totalBytes?: number;
|
|
9
|
+
/** Number of chunks processed */
|
|
10
|
+
chunksProcessed: number;
|
|
11
|
+
/** Percentage complete (0-100, undefined if totalBytes unknown) */
|
|
12
|
+
percentComplete?: number;
|
|
13
|
+
/** Current throughput in bytes per second */
|
|
14
|
+
throughputBytesPerSec: number;
|
|
15
|
+
/** Estimated time remaining in seconds (undefined if totalBytes unknown) */
|
|
16
|
+
estimatedTimeRemaining?: number;
|
|
17
|
+
/** Timestamp when operation started */
|
|
18
|
+
startTime: number;
|
|
19
|
+
/** Elapsed time in milliseconds */
|
|
20
|
+
elapsedTime: number;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Callback function for progress updates
|
|
25
|
+
*/
|
|
26
|
+
export type ProgressCallback = (progress: IStreamProgress) => void | Promise<void>;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Callback function for chunk completion
|
|
30
|
+
*/
|
|
31
|
+
export type ChunkCallback = (chunk: { index: number; size: number }) => void | Promise<void>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { createHash } from 'crypto';
|
|
2
|
+
import type { IConstants } from '../interfaces/constants';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Calculates a checksum for a configuration object.
|
|
6
|
+
* Uses SHA-256 of JSON representation.
|
|
7
|
+
*/
|
|
8
|
+
export function calculateConfigChecksum(config: IConstants): string {
|
|
9
|
+
// Create a stable JSON representation with BigInt support
|
|
10
|
+
const replacer = (_key: string, value: any) =>
|
|
11
|
+
typeof value === 'bigint' ? value.toString() : value;
|
|
12
|
+
const stable = JSON.stringify(config, replacer);
|
|
13
|
+
return createHash('sha256').update(stable).digest('hex');
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Captures a stack trace for provenance tracking
|
|
18
|
+
*/
|
|
19
|
+
export function captureCreationStack(): string {
|
|
20
|
+
const stack = new Error().stack;
|
|
21
|
+
if (!stack) return 'stack unavailable';
|
|
22
|
+
|
|
23
|
+
// Remove the first two lines (Error message and this function)
|
|
24
|
+
const lines = stack.split('\n').slice(2);
|
|
25
|
+
return lines.join('\n');
|
|
26
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service Container for dependency injection
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { I18nEngine } from '@digitaldefiance/i18n-lib';
|
|
6
|
+
import { Constants } from '../constants';
|
|
7
|
+
import { EciesStringKey } from '../enumerations/ecies-string-key';
|
|
8
|
+
import { EciesComponentId, getEciesI18nEngine } from '../i18n-setup';
|
|
9
|
+
import type { IConstants } from '../interfaces/constants';
|
|
10
|
+
|
|
11
|
+
export enum CryptoServiceKey {
|
|
12
|
+
ECIES = 'ecies',
|
|
13
|
+
PBKDF2 = 'pbkdf2',
|
|
14
|
+
AES_GCM = 'aes-gcm',
|
|
15
|
+
PASSWORD_LOGIN = 'password-login',
|
|
16
|
+
FILE = 'file',
|
|
17
|
+
XOR = 'xor',
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export class CryptoContainer {
|
|
21
|
+
private services = new Map<CryptoServiceKey, unknown>();
|
|
22
|
+
private config: IConstants;
|
|
23
|
+
private i18n: I18nEngine;
|
|
24
|
+
|
|
25
|
+
private constructor(config: IConstants, i18n: I18nEngine) {
|
|
26
|
+
this.config = config;
|
|
27
|
+
this.i18n = i18n;
|
|
28
|
+
this.initServices();
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
static create(
|
|
32
|
+
config: IConstants = Constants,
|
|
33
|
+
i18n?: I18nEngine,
|
|
34
|
+
): CryptoContainer {
|
|
35
|
+
return new CryptoContainer(config, i18n || getEciesI18nEngine());
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
get<T>(key: CryptoServiceKey): T {
|
|
39
|
+
const service = this.services.get(key);
|
|
40
|
+
if (!service) {
|
|
41
|
+
throw new Error(
|
|
42
|
+
this.i18n.translate(
|
|
43
|
+
EciesComponentId,
|
|
44
|
+
EciesStringKey.Error_Container_ServiceNotFoundTemplate,
|
|
45
|
+
{ service: key },
|
|
46
|
+
),
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
return service as T;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
private initServices(): void {
|
|
53
|
+
// Services will be lazily loaded to avoid circular dependencies
|
|
54
|
+
// Implementation will be added as services are migrated
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
getConfig(): IConstants {
|
|
58
|
+
return this.config;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
getI18n(): I18nEngine {
|
|
62
|
+
return this.i18n;
|
|
63
|
+
}
|
|
64
|
+
}
|