@digitaldefiance/ecies-lib 4.4.13 → 4.4.15
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/package.json +5 -4
- package/src/builders/ecies-builder.d.ts +18 -0
- package/src/builders/ecies-builder.d.ts.map +1 -0
- package/src/builders/ecies-builder.js +34 -0
- package/src/builders/ecies-builder.js.map +1 -0
- package/src/builders/{index.ts → index.d.ts} +1 -1
- package/src/builders/index.d.ts.map +1 -0
- package/src/builders/index.js +9 -0
- package/src/builders/index.js.map +1 -0
- package/src/builders/member-builder.d.ts +51 -0
- package/src/builders/member-builder.d.ts.map +1 -0
- package/src/builders/member-builder.js +101 -0
- package/src/builders/member-builder.js.map +1 -0
- package/src/constants.d.ts +60 -0
- package/src/constants.d.ts.map +1 -0
- package/src/constants.js +457 -0
- package/src/constants.js.map +1 -0
- package/src/core/errors/crypto-error.d.ts +34 -0
- package/src/core/errors/crypto-error.d.ts.map +1 -0
- package/src/core/errors/crypto-error.js +60 -0
- package/src/core/errors/crypto-error.js.map +1 -0
- package/src/core/{index.ts → index.d.ts} +1 -1
- package/src/core/index.d.ts.map +1 -0
- package/src/core/index.js +9 -0
- package/src/core/index.js.map +1 -0
- package/src/core/types/result.d.ts +16 -0
- package/src/core/types/result.d.ts.map +1 -0
- package/src/core/types/result.js +16 -0
- package/src/core/types/result.js.map +1 -0
- package/src/email-string.d.ts +42 -0
- package/src/email-string.d.ts.map +1 -0
- package/src/email-string.js +72 -0
- package/src/email-string.js.map +1 -0
- package/src/enumerations/disposed-error-type.d.ts +12 -0
- package/src/enumerations/disposed-error-type.d.ts.map +1 -0
- package/src/enumerations/disposed-error-type.js +16 -0
- package/src/enumerations/disposed-error-type.js.map +1 -0
- package/src/enumerations/ecies-cipher-suite.d.ts +4 -0
- package/src/enumerations/ecies-cipher-suite.d.ts.map +1 -0
- package/src/enumerations/ecies-cipher-suite.js +9 -0
- package/src/enumerations/ecies-cipher-suite.js.map +1 -0
- package/src/enumerations/ecies-encryption-type.d.ts +11 -0
- package/src/enumerations/ecies-encryption-type.d.ts.map +1 -0
- package/src/enumerations/ecies-encryption-type.js +30 -0
- package/src/enumerations/ecies-encryption-type.js.map +1 -0
- package/src/enumerations/ecies-error-type.d.ts +44 -0
- package/src/enumerations/ecies-error-type.d.ts.map +1 -0
- package/src/enumerations/ecies-error-type.js +48 -0
- package/src/enumerations/ecies-error-type.js.map +1 -0
- package/src/enumerations/ecies-string-key.d.ts +192 -0
- package/src/enumerations/ecies-string-key.d.ts.map +1 -0
- package/src/enumerations/ecies-string-key.js +202 -0
- package/src/enumerations/ecies-string-key.js.map +1 -0
- package/src/enumerations/ecies-version.d.ts +4 -0
- package/src/enumerations/ecies-version.d.ts.map +1 -0
- package/src/enumerations/ecies-version.js +8 -0
- package/src/enumerations/ecies-version.js.map +1 -0
- package/src/enumerations/guid-brand-type.d.ts +27 -0
- package/src/enumerations/guid-brand-type.d.ts.map +1 -0
- package/src/enumerations/guid-brand-type.js +31 -0
- package/src/enumerations/guid-brand-type.js.map +1 -0
- package/src/enumerations/guid-error-type.d.ts +7 -0
- package/src/enumerations/guid-error-type.d.ts.map +1 -0
- package/src/enumerations/guid-error-type.js +11 -0
- package/src/enumerations/guid-error-type.js.map +1 -0
- package/src/enumerations/id-provider-error-type.d.ts +43 -0
- package/src/enumerations/id-provider-error-type.d.ts.map +1 -0
- package/src/enumerations/id-provider-error-type.js +47 -0
- package/src/enumerations/id-provider-error-type.js.map +1 -0
- package/src/enumerations/{index.ts → index.d.ts} +1 -0
- package/src/enumerations/index.d.ts.map +1 -0
- package/src/enumerations/index.js +21 -0
- package/src/enumerations/index.js.map +1 -0
- package/src/enumerations/invalid-email-type.d.ts +6 -0
- package/src/enumerations/invalid-email-type.d.ts.map +1 -0
- package/src/enumerations/invalid-email-type.js +10 -0
- package/src/enumerations/invalid-email-type.js.map +1 -0
- package/src/enumerations/length-encoding-type.d.ts +7 -0
- package/src/enumerations/length-encoding-type.d.ts.map +1 -0
- package/src/enumerations/length-encoding-type.js +11 -0
- package/src/enumerations/length-encoding-type.js.map +1 -0
- package/src/enumerations/length-error-type.d.ts +6 -0
- package/src/enumerations/length-error-type.d.ts.map +1 -0
- package/src/enumerations/length-error-type.js +10 -0
- package/src/enumerations/length-error-type.js.map +1 -0
- package/src/enumerations/member-error-type.d.ts +87 -0
- package/src/enumerations/member-error-type.d.ts.map +1 -0
- package/src/enumerations/member-error-type.js +91 -0
- package/src/enumerations/member-error-type.js.map +1 -0
- package/src/enumerations/{member-type.ts → member-type.d.ts} +6 -7
- package/src/enumerations/member-type.d.ts.map +1 -0
- package/src/enumerations/member-type.js +19 -0
- package/src/enumerations/member-type.js.map +1 -0
- package/src/enumerations/password-login-error-type.d.ts +5 -0
- package/src/enumerations/password-login-error-type.d.ts.map +1 -0
- package/src/enumerations/password-login-error-type.js +9 -0
- package/src/enumerations/password-login-error-type.js.map +1 -0
- package/src/enumerations/pbkdf2-error-type.d.ts +6 -0
- package/src/enumerations/pbkdf2-error-type.d.ts.map +1 -0
- package/src/enumerations/pbkdf2-error-type.js +10 -0
- package/src/enumerations/pbkdf2-error-type.js.map +1 -0
- package/src/enumerations/pbkdf2-profile.d.ts +6 -0
- package/src/enumerations/pbkdf2-profile.d.ts.map +1 -0
- package/src/enumerations/pbkdf2-profile.js +10 -0
- package/src/enumerations/pbkdf2-profile.js.map +1 -0
- package/src/enumerations/secure-storage-error-type.d.ts +6 -0
- package/src/enumerations/secure-storage-error-type.d.ts.map +1 -0
- package/src/enumerations/secure-storage-error-type.js +10 -0
- package/src/enumerations/secure-storage-error-type.js.map +1 -0
- package/src/errors/disposed.d.ts +22 -0
- package/src/errors/disposed.d.ts.map +1 -0
- package/src/errors/disposed.js +32 -0
- package/src/errors/disposed.js.map +1 -0
- package/src/errors/ecies.d.ts +52 -0
- package/src/errors/ecies.d.ts.map +1 -0
- package/src/errors/ecies.js +82 -0
- package/src/errors/ecies.js.map +1 -0
- package/src/errors/guid.d.ts +49 -0
- package/src/errors/guid.d.ts.map +1 -0
- package/src/errors/guid.js +100 -0
- package/src/errors/guid.js.map +1 -0
- package/src/errors/id-provider.d.ts +23 -0
- package/src/errors/id-provider.d.ts.map +1 -0
- package/src/errors/id-provider.js +33 -0
- package/src/errors/id-provider.js.map +1 -0
- package/src/errors/{index.ts → index.d.ts} +1 -0
- package/src/errors/index.d.ts.map +1 -0
- package/src/errors/index.js +13 -0
- package/src/errors/index.js.map +1 -0
- package/src/errors/invalid-email.d.ts +8 -0
- package/src/errors/invalid-email.d.ts.map +1 -0
- package/src/errors/invalid-email.js +19 -0
- package/src/errors/invalid-email.js.map +1 -0
- package/src/errors/length.d.ts +7 -0
- package/src/errors/length.d.ts.map +1 -0
- package/src/errors/length.js +15 -0
- package/src/errors/length.js.map +1 -0
- package/src/errors/member.d.ts +7 -0
- package/src/errors/member.d.ts.map +1 -0
- package/src/errors/member.js +15 -0
- package/src/errors/member.js.map +1 -0
- package/src/errors/pbkdf2.d.ts +7 -0
- package/src/errors/pbkdf2.d.ts.map +1 -0
- package/src/errors/pbkdf2.js +15 -0
- package/src/errors/pbkdf2.js.map +1 -0
- package/src/errors/secure-storage.d.ts +7 -0
- package/src/errors/secure-storage.d.ts.map +1 -0
- package/src/errors/secure-storage.js +16 -0
- package/src/errors/secure-storage.js.map +1 -0
- package/src/errors/simple-ecies.d.ts +6 -0
- package/src/errors/simple-ecies.d.ts.map +1 -0
- package/src/errors/simple-ecies.js +16 -0
- package/src/errors/simple-ecies.js.map +1 -0
- package/src/errors/simple-test-error.d.ts +4 -0
- package/src/errors/simple-test-error.d.ts.map +1 -0
- package/src/errors/simple-test-error.js +11 -0
- package/src/errors/simple-test-error.js.map +1 -0
- package/src/i18n-setup.d.ts +32 -0
- package/src/i18n-setup.d.ts.map +1 -0
- package/src/i18n-setup.js +109 -0
- package/src/i18n-setup.js.map +1 -0
- package/src/{index.ts → index.d.ts} +12 -72
- package/src/index.d.ts.map +1 -0
- package/src/index.js +146 -0
- package/src/index.js.map +1 -0
- package/src/interfaces/checksum-config.d.ts +5 -0
- package/src/interfaces/checksum-config.d.ts.map +1 -0
- package/src/interfaces/checksum-config.js +3 -0
- package/src/interfaces/checksum-config.js.map +1 -0
- package/src/interfaces/checksum-consts.d.ts +11 -0
- package/src/interfaces/checksum-consts.d.ts.map +1 -0
- package/src/interfaces/checksum-consts.js +3 -0
- package/src/interfaces/checksum-consts.js.map +1 -0
- package/src/interfaces/configuration-provenance.d.ts +43 -0
- package/src/interfaces/configuration-provenance.d.ts.map +1 -0
- package/src/interfaces/configuration-provenance.js +8 -0
- package/src/interfaces/configuration-provenance.js.map +1 -0
- package/src/interfaces/constants.d.ts +70 -0
- package/src/interfaces/constants.d.ts.map +1 -0
- package/src/interfaces/constants.js +3 -0
- package/src/interfaces/constants.js.map +1 -0
- package/src/interfaces/ecies-config.d.ts +9 -0
- package/src/interfaces/ecies-config.d.ts.map +1 -0
- package/src/interfaces/ecies-config.js +3 -0
- package/src/interfaces/ecies-config.js.map +1 -0
- package/src/interfaces/ecies-consts.d.ts +61 -0
- package/src/interfaces/ecies-consts.d.ts.map +1 -0
- package/src/interfaces/ecies-consts.js +3 -0
- package/src/interfaces/ecies-consts.js.map +1 -0
- package/src/interfaces/ecies-file-service.d.ts +7 -0
- package/src/interfaces/ecies-file-service.d.ts.map +1 -0
- package/src/interfaces/ecies-file-service.js +3 -0
- package/src/interfaces/ecies-file-service.js.map +1 -0
- package/src/interfaces/encrypted-chunk.d.ts +55 -0
- package/src/interfaces/encrypted-chunk.d.ts.map +1 -0
- package/src/interfaces/encrypted-chunk.js +15 -0
- package/src/interfaces/encrypted-chunk.js.map +1 -0
- package/src/interfaces/encryption-state.d.ts +18 -0
- package/src/interfaces/encryption-state.d.ts.map +1 -0
- package/src/interfaces/encryption-state.js +5 -0
- package/src/interfaces/encryption-state.js.map +1 -0
- package/src/interfaces/frontend-member-operational.d.ts +51 -0
- package/src/interfaces/frontend-member-operational.d.ts.map +1 -0
- package/src/interfaces/frontend-member-operational.js +3 -0
- package/src/interfaces/frontend-member-operational.js.map +1 -0
- package/src/interfaces/guid.d.ts +78 -0
- package/src/interfaces/guid.d.ts.map +1 -0
- package/src/interfaces/guid.js +3 -0
- package/src/interfaces/guid.js.map +1 -0
- package/src/interfaces/id-provider.d.ts +107 -0
- package/src/interfaces/id-provider.d.ts.map +1 -0
- package/src/interfaces/id-provider.js +56 -0
- package/src/interfaces/id-provider.js.map +1 -0
- package/src/interfaces/{index.ts → index.d.ts} +1 -0
- package/src/interfaces/index.d.ts.map +1 -0
- package/src/interfaces/index.js +16 -0
- package/src/interfaces/index.js.map +1 -0
- package/src/interfaces/invariant.d.ts +46 -0
- package/src/interfaces/invariant.d.ts.map +1 -0
- package/src/interfaces/invariant.js +22 -0
- package/src/interfaces/invariant.js.map +1 -0
- package/src/interfaces/library-error.d.ts +23 -0
- package/src/interfaces/library-error.d.ts.map +1 -0
- package/src/interfaces/library-error.js +3 -0
- package/src/interfaces/library-error.js.map +1 -0
- package/src/interfaces/{member-storage.ts → member-storage.d.ts} +10 -11
- package/src/interfaces/member-storage.d.ts.map +1 -0
- package/src/interfaces/member-storage.js +3 -0
- package/src/interfaces/member-storage.js.map +1 -0
- package/src/interfaces/{member-with-mnemonic.ts → member-with-mnemonic.d.ts} +3 -3
- package/src/interfaces/member-with-mnemonic.d.ts.map +1 -0
- package/src/interfaces/member-with-mnemonic.js +3 -0
- package/src/interfaces/member-with-mnemonic.js.map +1 -0
- package/src/interfaces/member.d.ts +55 -0
- package/src/interfaces/member.d.ts.map +1 -0
- package/src/interfaces/member.js +3 -0
- package/src/interfaces/member.js.map +1 -0
- package/src/interfaces/multi-recipient-chunk.d.ts +54 -0
- package/src/interfaces/multi-recipient-chunk.d.ts.map +1 -0
- package/src/interfaces/multi-recipient-chunk.js +16 -0
- package/src/interfaces/multi-recipient-chunk.js.map +1 -0
- package/src/interfaces/pbkdf2-config.d.ts +7 -0
- package/src/interfaces/pbkdf2-config.d.ts.map +1 -0
- package/src/interfaces/pbkdf2-config.js +3 -0
- package/src/interfaces/pbkdf2-config.js.map +1 -0
- package/src/interfaces/pbkdf2-consts.d.ts +9 -0
- package/src/interfaces/pbkdf2-consts.d.ts.map +1 -0
- package/src/interfaces/pbkdf2-consts.js +3 -0
- package/src/interfaces/pbkdf2-consts.js.map +1 -0
- package/src/interfaces/pbkdf2-result.d.ts +6 -0
- package/src/interfaces/pbkdf2-result.d.ts.map +1 -0
- package/src/interfaces/pbkdf2-result.js +3 -0
- package/src/interfaces/pbkdf2-result.js.map +1 -0
- package/src/interfaces/stream-config.d.ts +14 -0
- package/src/interfaces/stream-config.d.ts.map +1 -0
- package/src/interfaces/stream-config.js +11 -0
- package/src/interfaces/stream-config.js.map +1 -0
- package/src/interfaces/stream-header.d.ts +29 -0
- package/src/interfaces/stream-header.d.ts.map +1 -0
- package/src/interfaces/stream-header.js +12 -0
- package/src/interfaces/stream-header.js.map +1 -0
- package/src/interfaces/stream-progress.d.ts +33 -0
- package/src/interfaces/stream-progress.d.ts.map +1 -0
- package/src/interfaces/stream-progress.js +3 -0
- package/src/interfaces/stream-progress.js.map +1 -0
- package/src/lib/configuration-provenance-utils.d.ts +11 -0
- package/src/lib/configuration-provenance-utils.d.ts.map +1 -0
- package/src/lib/configuration-provenance-utils.js +30 -0
- package/src/lib/configuration-provenance-utils.js.map +1 -0
- package/src/lib/crypto-container.d.ts +25 -0
- package/src/lib/crypto-container.d.ts.map +1 -0
- package/src/lib/crypto-container.js +50 -0
- package/src/lib/crypto-container.js.map +1 -0
- package/src/lib/guid.d.ts +344 -0
- package/src/lib/guid.d.ts.map +1 -0
- package/src/lib/guid.js +919 -0
- package/src/lib/guid.js.map +1 -0
- package/src/lib/id-providers/custom-provider.d.ts +46 -0
- package/src/lib/id-providers/custom-provider.d.ts.map +1 -0
- package/src/lib/id-providers/custom-provider.js +89 -0
- package/src/lib/id-providers/custom-provider.js.map +1 -0
- package/src/lib/id-providers/guidv4-provider.d.ts +56 -0
- package/src/lib/id-providers/guidv4-provider.d.ts.map +1 -0
- package/src/lib/id-providers/guidv4-provider.js +126 -0
- package/src/lib/id-providers/guidv4-provider.js.map +1 -0
- package/src/lib/id-providers/{index.ts → index.d.ts} +5 -6
- package/src/lib/id-providers/index.d.ts.map +1 -0
- package/src/lib/id-providers/index.js +37 -0
- package/src/lib/id-providers/index.js.map +1 -0
- package/src/lib/id-providers/objectid-provider.d.ts +43 -0
- package/src/lib/id-providers/objectid-provider.d.ts.map +1 -0
- package/src/lib/id-providers/objectid-provider.js +108 -0
- package/src/lib/id-providers/objectid-provider.js.map +1 -0
- package/src/lib/id-providers/uuid-provider.d.ts +52 -0
- package/src/lib/id-providers/uuid-provider.d.ts.map +1 -0
- package/src/lib/id-providers/uuid-provider.js +114 -0
- package/src/lib/id-providers/uuid-provider.js.map +1 -0
- package/src/lib/{index.ts → index.d.ts} +2 -2
- package/src/lib/index.d.ts.map +1 -0
- package/src/lib/index.js +9 -0
- package/src/lib/index.js.map +1 -0
- package/src/lib/invariant-validator.d.ts +59 -0
- package/src/lib/invariant-validator.d.ts.map +1 -0
- package/src/lib/invariant-validator.js +101 -0
- package/src/lib/invariant-validator.js.map +1 -0
- package/src/lib/invariants/encryption-algorithm-consistency.d.ts +17 -0
- package/src/lib/invariants/encryption-algorithm-consistency.d.ts.map +1 -0
- package/src/lib/invariants/encryption-algorithm-consistency.js +53 -0
- package/src/lib/invariants/encryption-algorithm-consistency.js.map +1 -0
- package/src/lib/invariants/{index.ts → index.d.ts} +1 -0
- package/src/lib/invariants/index.d.ts.map +1 -0
- package/src/lib/invariants/index.js +7 -0
- package/src/lib/invariants/index.js.map +1 -0
- package/src/lib/invariants/pbkdf2-profiles-validity.d.ts +16 -0
- package/src/lib/invariants/pbkdf2-profiles-validity.d.ts.map +1 -0
- package/src/lib/invariants/pbkdf2-profiles-validity.js +62 -0
- package/src/lib/invariants/pbkdf2-profiles-validity.js.map +1 -0
- package/src/lib/invariants/recipient-id-consistency.d.ts +18 -0
- package/src/lib/invariants/recipient-id-consistency.d.ts.map +1 -0
- package/src/lib/invariants/recipient-id-consistency.js +35 -0
- package/src/lib/invariants/recipient-id-consistency.js.map +1 -0
- package/src/lib/multi-recipient-chunk-utils.d.ts +38 -0
- package/src/lib/multi-recipient-chunk-utils.d.ts.map +1 -0
- package/src/lib/multi-recipient-chunk-utils.js +45 -0
- package/src/lib/multi-recipient-chunk-utils.js.map +1 -0
- package/src/member.d.ts +92 -0
- package/src/member.d.ts.map +1 -0
- package/src/member.js +327 -0
- package/src/member.js.map +1 -0
- package/src/{pbkdf2-profiles.ts → pbkdf2-profiles.d.ts} +2 -2
- package/src/pbkdf2-profiles.d.ts.map +1 -0
- package/src/pbkdf2-profiles.js +3 -0
- package/src/pbkdf2-profiles.js.map +1 -0
- package/src/phone-number.d.ts +6 -0
- package/src/phone-number.d.ts.map +1 -0
- package/src/phone-number.js +22 -0
- package/src/phone-number.js.map +1 -0
- package/src/regexes.d.ts +7 -0
- package/src/regexes.d.ts.map +1 -0
- package/src/regexes.js +10 -0
- package/src/regexes.js.map +1 -0
- package/src/secure-buffer.d.ts +61 -0
- package/src/secure-buffer.d.ts.map +1 -0
- package/src/secure-buffer.js +205 -0
- package/src/secure-buffer.js.map +1 -0
- package/src/secure-string.d.ts +46 -0
- package/src/secure-string.d.ts.map +1 -0
- package/src/secure-string.js +210 -0
- package/src/secure-string.js.map +1 -0
- package/src/services/aes-gcm.d.ts +57 -0
- package/src/services/aes-gcm.d.ts.map +1 -0
- package/src/services/aes-gcm.js +146 -0
- package/src/services/aes-gcm.js.map +1 -0
- package/src/services/chunk-processor.d.ts +31 -0
- package/src/services/chunk-processor.d.ts.map +1 -0
- package/src/services/chunk-processor.js +149 -0
- package/src/services/chunk-processor.js.map +1 -0
- package/src/services/ecies/crypto-core.d.ts +72 -0
- package/src/services/ecies/crypto-core.d.ts.map +1 -0
- package/src/services/ecies/crypto-core.js +209 -0
- package/src/services/ecies/crypto-core.js.map +1 -0
- package/src/services/ecies/example.d.ts +25 -0
- package/src/services/ecies/example.d.ts.map +1 -0
- package/src/services/ecies/example.js +128 -0
- package/src/services/ecies/example.js.map +1 -0
- package/src/services/ecies/file.d.ts +18 -0
- package/src/services/ecies/file.d.ts.map +1 -0
- package/src/services/ecies/file.js +110 -0
- package/src/services/ecies/file.js.map +1 -0
- package/src/services/ecies/{index.ts → index.d.ts} +1 -3
- package/src/services/ecies/index.d.ts.map +1 -0
- package/src/services/ecies/index.js +44 -0
- package/src/services/ecies/index.js.map +1 -0
- package/src/services/ecies/integration.d.ts +59 -0
- package/src/services/ecies/integration.d.ts.map +1 -0
- package/src/services/ecies/integration.js +172 -0
- package/src/services/ecies/integration.js.map +1 -0
- package/src/services/ecies/interfaces.d.ts +54 -0
- package/src/services/ecies/interfaces.d.ts.map +1 -0
- package/src/services/ecies/interfaces.js +6 -0
- package/src/services/ecies/interfaces.js.map +1 -0
- package/src/services/ecies/manual-test.d.ts +29 -0
- package/src/services/ecies/manual-test.d.ts.map +1 -0
- package/src/services/ecies/manual-test.js +171 -0
- package/src/services/ecies/manual-test.js.map +1 -0
- package/src/services/ecies/multi-recipient.d.ts +56 -0
- package/src/services/ecies/multi-recipient.d.ts.map +1 -0
- package/src/services/ecies/multi-recipient.js +348 -0
- package/src/services/ecies/multi-recipient.js.map +1 -0
- package/src/services/ecies/service.d.ts +120 -0
- package/src/services/ecies/service.d.ts.map +1 -0
- package/src/services/ecies/service.js +214 -0
- package/src/services/ecies/service.js.map +1 -0
- package/src/services/ecies/signature.d.ts +27 -0
- package/src/services/ecies/signature.d.ts.map +1 -0
- package/src/services/ecies/signature.js +76 -0
- package/src/services/ecies/signature.js.map +1 -0
- package/src/services/ecies/single-recipient.d.ts +46 -0
- package/src/services/ecies/single-recipient.d.ts.map +1 -0
- package/src/services/ecies/single-recipient.js +326 -0
- package/src/services/ecies/single-recipient.js.map +1 -0
- package/src/services/encryption-stream.d.ts +71 -0
- package/src/services/encryption-stream.d.ts.map +1 -0
- package/src/services/encryption-stream.js +299 -0
- package/src/services/encryption-stream.js.map +1 -0
- package/src/services/{index.ts → index.d.ts} +1 -0
- package/src/services/index.d.ts.map +1 -0
- package/src/services/index.js +14 -0
- package/src/services/index.js.map +1 -0
- package/src/services/multi-recipient-processor.d.ts +35 -0
- package/src/services/multi-recipient-processor.d.ts.map +1 -0
- package/src/services/multi-recipient-processor.js +293 -0
- package/src/services/multi-recipient-processor.js.map +1 -0
- package/src/services/password-login.d.ts +47 -0
- package/src/services/password-login.d.ts.map +1 -0
- package/src/services/password-login.js +119 -0
- package/src/services/password-login.js.map +1 -0
- package/src/services/pbkdf2.d.ts +54 -0
- package/src/services/pbkdf2.d.ts.map +1 -0
- package/src/services/pbkdf2.js +112 -0
- package/src/services/pbkdf2.js.map +1 -0
- package/src/services/progress-tracker.d.ts +23 -0
- package/src/services/progress-tracker.d.ts.map +1 -0
- package/src/services/progress-tracker.js +107 -0
- package/src/services/progress-tracker.js.map +1 -0
- package/src/services/resumable-encryption.d.ts +19 -0
- package/src/services/resumable-encryption.d.ts.map +1 -0
- package/src/services/resumable-encryption.js +109 -0
- package/src/services/resumable-encryption.js.map +1 -0
- package/src/services/xor.d.ts +37 -0
- package/src/services/xor.d.ts.map +1 -0
- package/src/services/xor.js +67 -0
- package/src/services/xor.js.map +1 -0
- package/src/test-mocks/index.d.ts +2 -0
- package/src/test-mocks/index.d.ts.map +1 -0
- package/src/test-mocks/index.js +5 -0
- package/src/test-mocks/index.js.map +1 -0
- package/src/test-mocks/mock-frontend-member.d.ts +85 -0
- package/src/test-mocks/mock-frontend-member.d.ts.map +1 -0
- package/src/test-mocks/mock-frontend-member.js +194 -0
- package/src/test-mocks/mock-frontend-member.js.map +1 -0
- package/src/testing.d.ts +2 -0
- package/src/testing.d.ts.map +1 -0
- package/src/testing.js +6 -0
- package/src/testing.js.map +1 -0
- package/src/translations/de.d.ts +4 -0
- package/src/translations/de.d.ts.map +1 -0
- package/src/translations/de.js +207 -0
- package/src/translations/de.js.map +1 -0
- package/src/translations/en-US.d.ts +4 -0
- package/src/translations/en-US.d.ts.map +1 -0
- package/src/translations/en-US.js +207 -0
- package/src/translations/en-US.js.map +1 -0
- package/src/translations/es.d.ts +4 -0
- package/src/translations/es.d.ts.map +1 -0
- package/src/translations/es.js +207 -0
- package/src/translations/es.js.map +1 -0
- package/src/translations/fr.d.ts +4 -0
- package/src/translations/fr.d.ts.map +1 -0
- package/src/translations/fr.js +207 -0
- package/src/translations/fr.js.map +1 -0
- package/src/translations/ja.d.ts +4 -0
- package/src/translations/ja.d.ts.map +1 -0
- package/src/translations/ja.js +206 -0
- package/src/translations/ja.js.map +1 -0
- package/src/translations/uk.d.ts +4 -0
- package/src/translations/uk.d.ts.map +1 -0
- package/src/translations/uk.js +209 -0
- package/src/translations/uk.js.map +1 -0
- package/src/translations/zh-cn.d.ts +4 -0
- package/src/translations/zh-cn.d.ts.map +1 -0
- package/src/translations/zh-cn.js +206 -0
- package/src/translations/zh-cn.js.map +1 -0
- package/src/types/deep-partial.d.ts +4 -0
- package/src/types/deep-partial.d.ts.map +1 -0
- package/src/types/deep-partial.js +3 -0
- package/src/types/deep-partial.js.map +1 -0
- package/src/{types.ts → types.d.ts} +7 -15
- package/src/types.d.ts.map +1 -0
- package/src/types.js +3 -0
- package/src/types.js.map +1 -0
- package/src/utils/encryption-type-utils.d.ts +29 -0
- package/src/utils/encryption-type-utils.d.ts.map +1 -0
- package/src/utils/encryption-type-utils.js +67 -0
- package/src/utils/encryption-type-utils.js.map +1 -0
- package/src/utils.d.ts +68 -0
- package/src/utils.d.ts.map +1 -0
- package/src/utils.js +291 -0
- package/src/utils.js.map +1 -0
- package/LICENSE +0 -21
- package/src/builders/ecies-builder.ts +0 -39
- package/src/builders/member-builder.ts +0 -155
- package/src/constants.ts +0 -609
- package/src/core/errors/crypto-error.ts +0 -78
- package/src/core/types/result.ts +0 -19
- package/src/email-string.ts +0 -82
- package/src/enumerations/disposed-error-type.ts +0 -11
- package/src/enumerations/ecies-cipher-suite.ts +0 -4
- package/src/enumerations/ecies-encryption-type.ts +0 -41
- package/src/enumerations/ecies-error-type.ts +0 -43
- package/src/enumerations/ecies-string-key.ts +0 -205
- package/src/enumerations/ecies-version.ts +0 -3
- package/src/enumerations/guid-brand-type.ts +0 -26
- package/src/enumerations/guid-error-type.ts +0 -6
- package/src/enumerations/id-provider-error-type.ts +0 -50
- package/src/enumerations/invalid-email-type.ts +0 -5
- package/src/enumerations/length-encoding-type.ts +0 -6
- package/src/enumerations/length-error-type.ts +0 -5
- package/src/enumerations/member-error-type.ts +0 -106
- package/src/enumerations/password-login-error-type.ts +0 -4
- package/src/enumerations/pbkdf2-error-type.ts +0 -5
- package/src/enumerations/pbkdf2-profile.ts +0 -5
- package/src/enumerations/secure-storage-error-type.ts +0 -5
- package/src/errors/disposed.ts +0 -36
- package/src/errors/ecies.ts +0 -153
- package/src/errors/guid.ts +0 -130
- package/src/errors/id-provider.ts +0 -40
- package/src/errors/invalid-email.ts +0 -23
- package/src/errors/length.ts +0 -19
- package/src/errors/member.ts +0 -20
- package/src/errors/pbkdf2.ts +0 -20
- package/src/errors/secure-storage.ts +0 -17
- package/src/errors/simple-ecies.ts +0 -21
- package/src/errors/simple-test-error.ts +0 -6
- package/src/i18n-setup.ts +0 -130
- package/src/interfaces/checksum-config.ts +0 -4
- package/src/interfaces/checksum-consts.ts +0 -13
- package/src/interfaces/configuration-provenance.ts +0 -54
- package/src/interfaces/constants.ts +0 -75
- package/src/interfaces/ecies-config.ts +0 -8
- package/src/interfaces/ecies-consts.ts +0 -76
- package/src/interfaces/ecies-file-service.ts +0 -6
- package/src/interfaces/encrypted-chunk.ts +0 -64
- package/src/interfaces/encryption-state.ts +0 -19
- package/src/interfaces/frontend-member-operational.ts +0 -77
- package/src/interfaces/guid.ts +0 -86
- package/src/interfaces/id-provider.ts +0 -152
- package/src/interfaces/invariant.ts +0 -60
- package/src/interfaces/library-error.ts +0 -23
- package/src/interfaces/member.ts +0 -84
- package/src/interfaces/multi-recipient-chunk.ts +0 -61
- package/src/interfaces/pbkdf2-config.ts +0 -6
- package/src/interfaces/pbkdf2-consts.ts +0 -10
- package/src/interfaces/pbkdf2-result.ts +0 -5
- package/src/interfaces/stream-config.ts +0 -17
- package/src/interfaces/stream-header.ts +0 -34
- package/src/interfaces/stream-progress.ts +0 -31
- package/src/lib/configuration-provenance-utils.ts +0 -29
- package/src/lib/crypto-container.ts +0 -64
- package/src/lib/guid.ts +0 -1097
- package/src/lib/id-providers/custom-provider.ts +0 -109
- package/src/lib/id-providers/guidv4-provider.ts +0 -141
- package/src/lib/id-providers/objectid-provider.ts +0 -125
- package/src/lib/id-providers/uuid-provider.ts +0 -133
- package/src/lib/invariant-validator.ts +0 -133
- package/src/lib/invariants/encryption-algorithm-consistency.ts +0 -73
- package/src/lib/invariants/pbkdf2-profiles-validity.ts +0 -78
- package/src/lib/invariants/recipient-id-consistency.ts +0 -46
- package/src/lib/multi-recipient-chunk-utils.ts +0 -63
- package/src/member.ts +0 -495
- package/src/phone-number.ts +0 -18
- package/src/regexes.ts +0 -10
- package/src/secure-buffer.ts +0 -226
- package/src/secure-string.ts +0 -244
- package/src/services/aes-gcm.ts +0 -220
- package/src/services/chunk-processor.ts +0 -188
- package/src/services/ecies/README.md +0 -147
- package/src/services/ecies/crypto-core.ts +0 -292
- package/src/services/ecies/example.ts +0 -185
- package/src/services/ecies/file.ts +0 -167
- package/src/services/ecies/integration.ts +0 -241
- package/src/services/ecies/interfaces.ts +0 -62
- package/src/services/ecies/manual-test.ts +0 -219
- package/src/services/ecies/multi-recipient.ts +0 -545
- package/src/services/ecies/service.ts +0 -370
- package/src/services/ecies/signature.ts +0 -93
- package/src/services/ecies/single-recipient.ts +0 -476
- package/src/services/encryption-stream.ts +0 -435
- package/src/services/multi-recipient-processor.ts +0 -377
- package/src/services/password-login.ts +0 -226
- package/src/services/pbkdf2.ts +0 -169
- package/src/services/progress-tracker.ts +0 -128
- package/src/services/resumable-encryption.ts +0 -135
- package/src/services/xor.ts +0 -65
- package/src/test-mocks/index.ts +0 -1
- package/src/test-mocks/mock-frontend-member.ts +0 -276
- package/src/testing.ts +0 -2
- package/src/translations/de.ts +0 -260
- package/src/translations/en-US.ts +0 -262
- package/src/translations/es.ts +0 -271
- package/src/translations/fr.ts +0 -269
- package/src/translations/ja.ts +0 -259
- package/src/translations/uk.ts +0 -271
- package/src/translations/zh-cn.ts +0 -234
- package/src/types/deep-partial.ts +0 -11
- package/src/utils/encryption-type-utils.ts +0 -76
- package/src/utils.ts +0 -329
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { IConstants } from '../../interfaces/constants';
|
|
2
|
-
import { BaseInvariant } from '../../interfaces/invariant';
|
|
3
|
-
import { Pbkdf2ProfileEnum } from '../../enumerations/pbkdf2-profile';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Validates that PBKDF2 profiles have sensible parameters.
|
|
7
|
-
*
|
|
8
|
-
* Checks:
|
|
9
|
-
* - iterations > 0 and not too low (security risk)
|
|
10
|
-
* - saltBytes > 0 and reasonable
|
|
11
|
-
* - hashBytes > 0 and matches expected hash output
|
|
12
|
-
*/
|
|
13
|
-
export class Pbkdf2ProfilesValidityInvariant extends BaseInvariant {
|
|
14
|
-
constructor() {
|
|
15
|
-
super(
|
|
16
|
-
'Pbkdf2ProfilesValidity',
|
|
17
|
-
'PBKDF2 profiles must have valid cryptographic parameters'
|
|
18
|
-
);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
check(config: IConstants): boolean {
|
|
22
|
-
const profiles = [
|
|
23
|
-
config.PBKDF2_PROFILES[Pbkdf2ProfileEnum.BROWSER_PASSWORD],
|
|
24
|
-
config.PBKDF2_PROFILES[Pbkdf2ProfileEnum.HIGH_SECURITY],
|
|
25
|
-
config.PBKDF2_PROFILES[Pbkdf2ProfileEnum.TEST_FAST],
|
|
26
|
-
];
|
|
27
|
-
|
|
28
|
-
for (const profile of profiles) {
|
|
29
|
-
// iterations must be positive and reasonable
|
|
30
|
-
if (profile.iterations < 1000 || profile.iterations > 10_000_000) {
|
|
31
|
-
return false;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// saltBytes must be at least 16 bytes (128 bits)
|
|
35
|
-
if (profile.saltBytes < 16 || profile.saltBytes > 256) {
|
|
36
|
-
return false;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// hashBytes must be positive and reasonable for sha256
|
|
40
|
-
if (profile.hashBytes < 16 || profile.hashBytes > 64) {
|
|
41
|
-
return false;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
return true;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
errorMessage(config: IConstants): string {
|
|
49
|
-
const issues: string[] = [];
|
|
50
|
-
const profileTests = [
|
|
51
|
-
{ name: 'BROWSER_PASSWORD', profile: config.PBKDF2_PROFILES[Pbkdf2ProfileEnum.BROWSER_PASSWORD] },
|
|
52
|
-
{ name: 'HIGH_SECURITY', profile: config.PBKDF2_PROFILES[Pbkdf2ProfileEnum.HIGH_SECURITY] },
|
|
53
|
-
{ name: 'TEST_FAST', profile: config.PBKDF2_PROFILES[Pbkdf2ProfileEnum.TEST_FAST] },
|
|
54
|
-
];
|
|
55
|
-
|
|
56
|
-
for (const { name, profile } of profileTests) {
|
|
57
|
-
if (profile.iterations < 1000 || profile.iterations > 10_000_000) {
|
|
58
|
-
issues.push(
|
|
59
|
-
`${name}.iterations (${profile.iterations}) must be between 1000 and 10,000,000`
|
|
60
|
-
);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
if (profile.saltBytes < 16 || profile.saltBytes > 256) {
|
|
64
|
-
issues.push(
|
|
65
|
-
`${name}.saltBytes (${profile.saltBytes}) must be between 16 and 256`
|
|
66
|
-
);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
if (profile.hashBytes < 16 || profile.hashBytes > 64) {
|
|
70
|
-
issues.push(
|
|
71
|
-
`${name}.hashBytes (${profile.hashBytes}) must be between 16 and 64`
|
|
72
|
-
);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
return `Invariant '${this.name}' failed:\n ${issues.join('\n ')}`;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { IConstants } from '../../interfaces/constants';
|
|
2
|
-
import { BaseInvariant } from '../../interfaces/invariant';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Validates that all recipient ID size configurations are consistent.
|
|
6
|
-
*
|
|
7
|
-
* This invariant would have caught the 12 vs 32 byte discrepancy.
|
|
8
|
-
*
|
|
9
|
-
* Checks:
|
|
10
|
-
* - MEMBER_ID_LENGTH === idProvider.byteLength
|
|
11
|
-
* - ECIES.MULTIPLE.RECIPIENT_ID_SIZE === idProvider.byteLength
|
|
12
|
-
* - All three values must be in sync
|
|
13
|
-
*/
|
|
14
|
-
export class RecipientIdConsistencyInvariant extends BaseInvariant {
|
|
15
|
-
constructor() {
|
|
16
|
-
super(
|
|
17
|
-
'RecipientIdConsistency',
|
|
18
|
-
'All recipient ID size configurations must match the ID provider byte length'
|
|
19
|
-
);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
check(config: IConstants): boolean {
|
|
23
|
-
return (
|
|
24
|
-
config.MEMBER_ID_LENGTH === config.idProvider.byteLength &&
|
|
25
|
-
config.ECIES.MULTIPLE.RECIPIENT_ID_SIZE === config.idProvider.byteLength
|
|
26
|
-
);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
errorMessage(config: IConstants): string {
|
|
30
|
-
const issues: string[] = [];
|
|
31
|
-
|
|
32
|
-
if (config.MEMBER_ID_LENGTH !== config.idProvider.byteLength) {
|
|
33
|
-
issues.push(
|
|
34
|
-
`MEMBER_ID_LENGTH (${config.MEMBER_ID_LENGTH}) !== idProvider.byteLength (${config.idProvider.byteLength})`
|
|
35
|
-
);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
if (config.ECIES.MULTIPLE.RECIPIENT_ID_SIZE !== config.idProvider.byteLength) {
|
|
39
|
-
issues.push(
|
|
40
|
-
`ECIES.MULTIPLE.RECIPIENT_ID_SIZE (${config.ECIES.MULTIPLE.RECIPIENT_ID_SIZE}) !== idProvider.byteLength (${config.idProvider.byteLength})`
|
|
41
|
-
);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
return `Invariant '${this.name}' failed:\n ${issues.join('\n ')}`;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Multi-recipient format constants structure
|
|
3
|
-
*/
|
|
4
|
-
export interface IMultiRecipientConstants {
|
|
5
|
-
readonly MAGIC: number;
|
|
6
|
-
readonly VERSION: number;
|
|
7
|
-
readonly HEADER_SIZE: number;
|
|
8
|
-
readonly RECIPIENT_ID_SIZE: number;
|
|
9
|
-
readonly KEY_SIZE_BYTES: number;
|
|
10
|
-
readonly FLAG_IS_LAST: number;
|
|
11
|
-
readonly FLAG_HAS_CHECKSUM: number;
|
|
12
|
-
readonly MAX_RECIPIENTS: number;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Get multi-recipient constants for a specific recipient ID size.
|
|
17
|
-
* This allows the format to adapt to different ID providers.
|
|
18
|
-
*
|
|
19
|
-
* @param recipientIdSize - The byte length of recipient IDs (from ID provider)
|
|
20
|
-
* @returns Frozen constants object for the multi-recipient format
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
* ```typescript
|
|
24
|
-
* // For ObjectID (12 bytes)
|
|
25
|
-
* const constants = getMultiRecipientConstants(12);
|
|
26
|
-
*
|
|
27
|
-
* // For GUID (16 bytes)
|
|
28
|
-
* const constants = getMultiRecipientConstants(16);
|
|
29
|
-
* ```
|
|
30
|
-
*/
|
|
31
|
-
export function getMultiRecipientConstants(
|
|
32
|
-
recipientIdSize: number,
|
|
33
|
-
): IMultiRecipientConstants {
|
|
34
|
-
if (
|
|
35
|
-
!Number.isInteger(recipientIdSize) ||
|
|
36
|
-
recipientIdSize < 1 ||
|
|
37
|
-
recipientIdSize > 255
|
|
38
|
-
) {
|
|
39
|
-
throw new Error(
|
|
40
|
-
`Invalid recipientIdSize: ${recipientIdSize}. Must be an integer between 1 and 255.`,
|
|
41
|
-
);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
return Object.freeze({
|
|
45
|
-
MAGIC: 0x4d524543, // "MREC"
|
|
46
|
-
VERSION: 0x0002, // Updated to 0x0002 for Shared Ephemeral Key support
|
|
47
|
-
HEADER_SIZE: 64, // Increased to 64 bytes to accommodate Ephemeral Public Key (33 bytes)
|
|
48
|
-
RECIPIENT_ID_SIZE: recipientIdSize,
|
|
49
|
-
KEY_SIZE_BYTES: 2,
|
|
50
|
-
FLAG_IS_LAST: 0x01,
|
|
51
|
-
FLAG_HAS_CHECKSUM: 0x02,
|
|
52
|
-
MAX_RECIPIENTS: 65535,
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Default multi-recipient constants using ObjectID size (12 bytes).
|
|
58
|
-
*
|
|
59
|
-
* @deprecated Use getMultiRecipientConstants(config.idProvider.byteLength) instead
|
|
60
|
-
* for dynamic ID size support. This constant is provided for backward compatibility only.
|
|
61
|
-
*/
|
|
62
|
-
export const MULTI_RECIPIENT_CONSTANTS: IMultiRecipientConstants =
|
|
63
|
-
getMultiRecipientConstants(12);
|
package/src/member.ts
DELETED
|
@@ -1,495 +0,0 @@
|
|
|
1
|
-
import { Wallet } from '@ethereumjs/wallet';
|
|
2
|
-
import { Constants, ECIES } from './constants';
|
|
3
|
-
import { EmailString } from './email-string';
|
|
4
|
-
import MemberErrorType from './enumerations/member-error-type';
|
|
5
|
-
import MemberType from './enumerations/member-type';
|
|
6
|
-
import { MemberError } from './errors/member';
|
|
7
|
-
import { IECIESConstants } from './interfaces/ecies-consts';
|
|
8
|
-
import { IEncryptedChunk } from './interfaces/encrypted-chunk';
|
|
9
|
-
import { IFrontendMemberOperational } from './interfaces/frontend-member-operational';
|
|
10
|
-
import { IMember } from './interfaces/member';
|
|
11
|
-
import { IMemberStorageData } from './interfaces/member-storage';
|
|
12
|
-
import { IMemberWithMnemonic } from './interfaces/member-with-mnemonic';
|
|
13
|
-
import { SecureBuffer } from './secure-buffer';
|
|
14
|
-
import { SecureString } from './secure-string';
|
|
15
|
-
import { ECIESService } from './services/ecies/service';
|
|
16
|
-
import { EncryptionStream } from './services/encryption-stream';
|
|
17
|
-
import { SignatureUint8Array } from './types';
|
|
18
|
-
import {
|
|
19
|
-
base64ToUint8Array,
|
|
20
|
-
uint8ArrayToBase64,
|
|
21
|
-
uint8ArrayToHex,
|
|
22
|
-
} from './utils';
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Represents a member with cryptographic capabilities.
|
|
26
|
-
* This class provides methods for signing, verifying, encrypting, and decrypting data.
|
|
27
|
-
* It also manages the member's keys and wallet.
|
|
28
|
-
*/
|
|
29
|
-
export class Member implements IMember, IFrontendMemberOperational<Uint8Array> {
|
|
30
|
-
private readonly _eciesService: ECIESService;
|
|
31
|
-
private readonly _id: Uint8Array;
|
|
32
|
-
private readonly _type: MemberType;
|
|
33
|
-
private readonly _name: string;
|
|
34
|
-
private readonly _email: EmailString;
|
|
35
|
-
private readonly _publicKey: Uint8Array;
|
|
36
|
-
private readonly _creatorId: Uint8Array;
|
|
37
|
-
private readonly _dateCreated: Date;
|
|
38
|
-
private readonly _dateUpdated: Date;
|
|
39
|
-
private _privateKey?: SecureBuffer;
|
|
40
|
-
private _wallet?: Wallet;
|
|
41
|
-
|
|
42
|
-
constructor(
|
|
43
|
-
// Add injected services as parameters
|
|
44
|
-
eciesService: ECIESService,
|
|
45
|
-
// Original parameters
|
|
46
|
-
type: MemberType,
|
|
47
|
-
name: string,
|
|
48
|
-
email: EmailString,
|
|
49
|
-
publicKey: Uint8Array,
|
|
50
|
-
privateKey?: SecureBuffer,
|
|
51
|
-
wallet?: Wallet,
|
|
52
|
-
id?: Uint8Array,
|
|
53
|
-
dateCreated?: Date,
|
|
54
|
-
dateUpdated?: Date,
|
|
55
|
-
creatorId?: Uint8Array,
|
|
56
|
-
) {
|
|
57
|
-
// Assign injected services
|
|
58
|
-
this._eciesService = eciesService;
|
|
59
|
-
// Assign original parameters
|
|
60
|
-
this._type = type;
|
|
61
|
-
this._id = id ?? Constants.idProvider.generate();
|
|
62
|
-
this._name = name;
|
|
63
|
-
if (!this._name || this._name.length == 0) {
|
|
64
|
-
throw new MemberError(MemberErrorType.MissingMemberName);
|
|
65
|
-
}
|
|
66
|
-
if (this._name.trim() != this._name) {
|
|
67
|
-
throw new MemberError(MemberErrorType.InvalidMemberNameWhitespace);
|
|
68
|
-
}
|
|
69
|
-
this._email = email;
|
|
70
|
-
this._publicKey = publicKey;
|
|
71
|
-
this._privateKey = privateKey;
|
|
72
|
-
this._wallet = wallet;
|
|
73
|
-
|
|
74
|
-
// don't create a new date object with nearly identical values to the existing one
|
|
75
|
-
let _now: null | Date = null;
|
|
76
|
-
const now = function () {
|
|
77
|
-
if (!_now) {
|
|
78
|
-
_now = new Date();
|
|
79
|
-
}
|
|
80
|
-
return _now;
|
|
81
|
-
};
|
|
82
|
-
this._dateCreated = dateCreated ?? now();
|
|
83
|
-
this._dateUpdated = dateUpdated ?? now();
|
|
84
|
-
this._creatorId = creatorId ?? this._id;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
// Required getters
|
|
88
|
-
public get id(): Uint8Array {
|
|
89
|
-
return this._id;
|
|
90
|
-
}
|
|
91
|
-
public get type(): MemberType {
|
|
92
|
-
return this._type;
|
|
93
|
-
}
|
|
94
|
-
public get name(): string {
|
|
95
|
-
return this._name;
|
|
96
|
-
}
|
|
97
|
-
public get email(): EmailString {
|
|
98
|
-
return this._email;
|
|
99
|
-
}
|
|
100
|
-
public get publicKey(): Uint8Array {
|
|
101
|
-
return this._publicKey;
|
|
102
|
-
}
|
|
103
|
-
public get creatorId(): Uint8Array {
|
|
104
|
-
return this._creatorId;
|
|
105
|
-
}
|
|
106
|
-
public get dateCreated(): Date {
|
|
107
|
-
return this._dateCreated;
|
|
108
|
-
}
|
|
109
|
-
public get dateUpdated(): Date {
|
|
110
|
-
return this._dateUpdated;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
// Optional private data getters
|
|
114
|
-
public get privateKey(): SecureBuffer | undefined {
|
|
115
|
-
return this._privateKey;
|
|
116
|
-
}
|
|
117
|
-
public get wallet(): Wallet {
|
|
118
|
-
if (!this._wallet) {
|
|
119
|
-
throw new MemberError(MemberErrorType.NoWallet);
|
|
120
|
-
}
|
|
121
|
-
return this._wallet;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
// State getters
|
|
125
|
-
public get hasPrivateKey(): boolean {
|
|
126
|
-
return this._privateKey !== undefined;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
public unloadPrivateKey(): void {
|
|
130
|
-
// Do not dispose here; tests expect the same SecureBuffer instance to remain usable
|
|
131
|
-
// when reloaded into another member in the same process.
|
|
132
|
-
this._privateKey = undefined;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
public unloadWallet(): void {
|
|
136
|
-
this._wallet = undefined;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
public unloadWalletAndPrivateKey(): void {
|
|
140
|
-
this.unloadWallet();
|
|
141
|
-
this.unloadPrivateKey();
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
public loadWallet(
|
|
145
|
-
mnemonic: SecureString,
|
|
146
|
-
eciesParams?: IECIESConstants,
|
|
147
|
-
): void {
|
|
148
|
-
if (this._wallet) {
|
|
149
|
-
throw new MemberError(MemberErrorType.WalletAlreadyLoaded);
|
|
150
|
-
}
|
|
151
|
-
const eciesConsts = eciesParams ?? ECIES;
|
|
152
|
-
const { wallet } = this._eciesService.walletAndSeedFromMnemonic(mnemonic);
|
|
153
|
-
const privateKey = wallet.getPrivateKey();
|
|
154
|
-
// Use service to get compressed public key
|
|
155
|
-
const publicKey = this._eciesService.getPublicKey(privateKey);
|
|
156
|
-
|
|
157
|
-
if (uint8ArrayToHex(publicKey) !== uint8ArrayToHex(this._publicKey)) {
|
|
158
|
-
throw new MemberError(MemberErrorType.InvalidMnemonic);
|
|
159
|
-
}
|
|
160
|
-
this._wallet = wallet;
|
|
161
|
-
this._privateKey?.dispose();
|
|
162
|
-
this._privateKey = new SecureBuffer(privateKey);
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
/**
|
|
166
|
-
* Loads the private key and optionally the voting private key.
|
|
167
|
-
*
|
|
168
|
-
* @param privateKey The private key to load.
|
|
169
|
-
* @param votingPrivateKey The voting private key to load.
|
|
170
|
-
*/
|
|
171
|
-
public loadPrivateKey(privateKey: SecureBuffer): void {
|
|
172
|
-
this._privateKey = privateKey;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
public sign(data: Uint8Array): SignatureUint8Array {
|
|
176
|
-
if (!this._privateKey) {
|
|
177
|
-
throw new MemberError(MemberErrorType.MissingPrivateKey);
|
|
178
|
-
}
|
|
179
|
-
return this._eciesService.signMessage(this._privateKey.value, data);
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
public signData(data: Uint8Array): SignatureUint8Array {
|
|
183
|
-
if (!this._privateKey) {
|
|
184
|
-
throw new MemberError(MemberErrorType.MissingPrivateKey);
|
|
185
|
-
}
|
|
186
|
-
return this._eciesService.signMessage(
|
|
187
|
-
new Uint8Array(this._privateKey.value),
|
|
188
|
-
data,
|
|
189
|
-
);
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
public verify(signature: SignatureUint8Array, data: Uint8Array): boolean {
|
|
193
|
-
return this._eciesService.verifyMessage(this._publicKey, data, signature);
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
public verifySignature(
|
|
197
|
-
data: Uint8Array,
|
|
198
|
-
signature: Uint8Array,
|
|
199
|
-
publicKey: Uint8Array,
|
|
200
|
-
): boolean {
|
|
201
|
-
return this._eciesService.verifyMessage(
|
|
202
|
-
publicKey,
|
|
203
|
-
data,
|
|
204
|
-
signature as SignatureUint8Array,
|
|
205
|
-
);
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
private static readonly MAX_ENCRYPTION_SIZE = 1024 * 1024 * 10; // 10MB limit
|
|
209
|
-
private static readonly VALID_STRING_REGEX = /^[\x20-\x7E\n\r\t]*$/; // Printable ASCII + common whitespace
|
|
210
|
-
|
|
211
|
-
/**
|
|
212
|
-
* Encrypt data stream (for large data)
|
|
213
|
-
*/
|
|
214
|
-
async *encryptDataStream(
|
|
215
|
-
source: AsyncIterable<Uint8Array> | ReadableStream<Uint8Array>,
|
|
216
|
-
options?: {
|
|
217
|
-
recipientPublicKey?: Uint8Array;
|
|
218
|
-
onProgress?: (progress: {
|
|
219
|
-
bytesProcessed: number;
|
|
220
|
-
chunksProcessed: number;
|
|
221
|
-
}) => void;
|
|
222
|
-
signal?: AbortSignal;
|
|
223
|
-
},
|
|
224
|
-
): AsyncGenerator<IEncryptedChunk, void, unknown> {
|
|
225
|
-
if (!this._privateKey && !options?.recipientPublicKey) {
|
|
226
|
-
throw new MemberError(MemberErrorType.MissingPrivateKey);
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
const targetPublicKey = options?.recipientPublicKey || this._publicKey;
|
|
230
|
-
const stream = new EncryptionStream(this._eciesService);
|
|
231
|
-
|
|
232
|
-
// Convert ReadableStream to AsyncIterable if needed
|
|
233
|
-
const asyncSource =
|
|
234
|
-
'getReader' in source
|
|
235
|
-
? this.readableStreamToAsyncIterable(
|
|
236
|
-
source as ReadableStream<Uint8Array>,
|
|
237
|
-
)
|
|
238
|
-
: (source as AsyncIterable<Uint8Array>);
|
|
239
|
-
|
|
240
|
-
let bytesProcessed = 0;
|
|
241
|
-
let chunksProcessed = 0;
|
|
242
|
-
|
|
243
|
-
for await (const chunk of stream.encryptStream(
|
|
244
|
-
asyncSource,
|
|
245
|
-
targetPublicKey,
|
|
246
|
-
{
|
|
247
|
-
signal: options?.signal,
|
|
248
|
-
},
|
|
249
|
-
)) {
|
|
250
|
-
bytesProcessed += chunk.metadata?.originalSize || 0;
|
|
251
|
-
chunksProcessed++;
|
|
252
|
-
|
|
253
|
-
if (options?.onProgress) {
|
|
254
|
-
options.onProgress({ bytesProcessed, chunksProcessed });
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
yield chunk;
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
/**
|
|
262
|
-
* Decrypt data stream (for large data)
|
|
263
|
-
*/
|
|
264
|
-
async *decryptDataStream(
|
|
265
|
-
source: AsyncIterable<Uint8Array> | ReadableStream<Uint8Array>,
|
|
266
|
-
options?: {
|
|
267
|
-
onProgress?: (progress: {
|
|
268
|
-
bytesProcessed: number;
|
|
269
|
-
chunksProcessed: number;
|
|
270
|
-
}) => void;
|
|
271
|
-
signal?: AbortSignal;
|
|
272
|
-
},
|
|
273
|
-
): AsyncGenerator<Uint8Array, void, unknown> {
|
|
274
|
-
if (!this._privateKey) {
|
|
275
|
-
throw new MemberError(MemberErrorType.MissingPrivateKey);
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
const stream = new EncryptionStream(this._eciesService);
|
|
279
|
-
|
|
280
|
-
// Convert ReadableStream to AsyncIterable if needed
|
|
281
|
-
const asyncSource =
|
|
282
|
-
'getReader' in source
|
|
283
|
-
? this.readableStreamToAsyncIterable(
|
|
284
|
-
source as ReadableStream<Uint8Array>,
|
|
285
|
-
)
|
|
286
|
-
: (source as AsyncIterable<Uint8Array>);
|
|
287
|
-
|
|
288
|
-
let bytesProcessed = 0;
|
|
289
|
-
let chunksProcessed = 0;
|
|
290
|
-
|
|
291
|
-
for await (const chunk of stream.decryptStream(
|
|
292
|
-
asyncSource,
|
|
293
|
-
new Uint8Array(this._privateKey.value),
|
|
294
|
-
{ signal: options?.signal },
|
|
295
|
-
)) {
|
|
296
|
-
bytesProcessed += chunk.length;
|
|
297
|
-
chunksProcessed++;
|
|
298
|
-
|
|
299
|
-
if (options?.onProgress) {
|
|
300
|
-
options.onProgress({ bytesProcessed, chunksProcessed });
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
yield chunk;
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
/**
|
|
308
|
-
* Convert ReadableStream to AsyncIterable
|
|
309
|
-
*/
|
|
310
|
-
private async *readableStreamToAsyncIterable(
|
|
311
|
-
stream: ReadableStream<Uint8Array>,
|
|
312
|
-
): AsyncIterable<Uint8Array> {
|
|
313
|
-
const reader = stream.getReader();
|
|
314
|
-
try {
|
|
315
|
-
while (true) {
|
|
316
|
-
const { done, value } = await reader.read();
|
|
317
|
-
if (done) break;
|
|
318
|
-
yield value;
|
|
319
|
-
}
|
|
320
|
-
} finally {
|
|
321
|
-
reader.releaseLock();
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
public async encryptData(
|
|
326
|
-
data: string | Uint8Array,
|
|
327
|
-
recipientPublicKey?: Uint8Array,
|
|
328
|
-
): Promise<Uint8Array> {
|
|
329
|
-
// Validate input
|
|
330
|
-
if (!data) {
|
|
331
|
-
throw new MemberError(MemberErrorType.MissingEncryptionData);
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
// Check size limit
|
|
335
|
-
const arr: Uint8Array =
|
|
336
|
-
data instanceof Uint8Array ? data : new TextEncoder().encode(data);
|
|
337
|
-
if (arr.length > Member.MAX_ENCRYPTION_SIZE) {
|
|
338
|
-
throw new MemberError(MemberErrorType.EncryptionDataTooLarge);
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
// Use recipient public key or self public key
|
|
342
|
-
const targetPublicKey = recipientPublicKey || this._publicKey;
|
|
343
|
-
|
|
344
|
-
return await this._eciesService.encryptSimpleOrSingle(
|
|
345
|
-
false,
|
|
346
|
-
targetPublicKey,
|
|
347
|
-
arr,
|
|
348
|
-
);
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
public async decryptData(encryptedData: Uint8Array): Promise<Uint8Array> {
|
|
352
|
-
if (!this._privateKey) {
|
|
353
|
-
throw new MemberError(MemberErrorType.MissingPrivateKey);
|
|
354
|
-
}
|
|
355
|
-
// decryptSingleWithHeader now returns the Uint8Array directly
|
|
356
|
-
return await this._eciesService.decryptSimpleOrSingleWithHeader(
|
|
357
|
-
false,
|
|
358
|
-
new Uint8Array(this._privateKey.value),
|
|
359
|
-
encryptedData,
|
|
360
|
-
);
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
public toJson(): string {
|
|
364
|
-
const storage: IMemberStorageData = {
|
|
365
|
-
id: Constants.idProvider.serialize(this._id),
|
|
366
|
-
type: this._type,
|
|
367
|
-
name: this._name,
|
|
368
|
-
email: this._email.toString(),
|
|
369
|
-
publicKey: uint8ArrayToBase64(this._publicKey),
|
|
370
|
-
creatorId: Constants.idProvider.serialize(this._creatorId),
|
|
371
|
-
dateCreated: this._dateCreated.toISOString(),
|
|
372
|
-
dateUpdated: this._dateUpdated.toISOString(),
|
|
373
|
-
};
|
|
374
|
-
return JSON.stringify(storage);
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
public dispose(): void {
|
|
378
|
-
// Ensure secret material is zeroized when disposing
|
|
379
|
-
try {
|
|
380
|
-
this._privateKey?.dispose();
|
|
381
|
-
} finally {
|
|
382
|
-
this.unloadWalletAndPrivateKey();
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
public static fromJson(
|
|
387
|
-
json: string,
|
|
388
|
-
// Add injected services as parameters
|
|
389
|
-
eciesService: ECIESService,
|
|
390
|
-
): Member {
|
|
391
|
-
let storage: IMemberStorageData;
|
|
392
|
-
try {
|
|
393
|
-
storage = JSON.parse(json);
|
|
394
|
-
} catch (error) {
|
|
395
|
-
throw new MemberError(MemberErrorType.InvalidMemberData);
|
|
396
|
-
}
|
|
397
|
-
const email = new EmailString(storage.email);
|
|
398
|
-
|
|
399
|
-
// Pass injected services to constructor
|
|
400
|
-
const dateCreated = new Date(storage.dateCreated);
|
|
401
|
-
return new Member(
|
|
402
|
-
eciesService,
|
|
403
|
-
storage.type,
|
|
404
|
-
storage.name,
|
|
405
|
-
email,
|
|
406
|
-
base64ToUint8Array(storage.publicKey),
|
|
407
|
-
undefined,
|
|
408
|
-
undefined,
|
|
409
|
-
Constants.idProvider.deserialize(storage.id),
|
|
410
|
-
dateCreated,
|
|
411
|
-
new Date(storage.dateUpdated),
|
|
412
|
-
Constants.idProvider.deserialize(storage.creatorId),
|
|
413
|
-
);
|
|
414
|
-
}
|
|
415
|
-
|
|
416
|
-
public static fromMnemonic(
|
|
417
|
-
mnemonic: SecureString,
|
|
418
|
-
eciesService: ECIESService,
|
|
419
|
-
eciesParams?: IECIESConstants,
|
|
420
|
-
name = 'Test User',
|
|
421
|
-
email = new EmailString('test@example.com'),
|
|
422
|
-
): Member {
|
|
423
|
-
const eciesConsts = eciesParams ?? ECIES;
|
|
424
|
-
const { wallet } = eciesService.walletAndSeedFromMnemonic(mnemonic);
|
|
425
|
-
const privateKey = wallet.getPrivateKey();
|
|
426
|
-
// Use service to get compressed public key
|
|
427
|
-
const publicKey = eciesService.getPublicKey(privateKey);
|
|
428
|
-
|
|
429
|
-
return new Member(
|
|
430
|
-
eciesService,
|
|
431
|
-
MemberType.User,
|
|
432
|
-
name,
|
|
433
|
-
email,
|
|
434
|
-
publicKey,
|
|
435
|
-
new SecureBuffer(privateKey),
|
|
436
|
-
wallet,
|
|
437
|
-
);
|
|
438
|
-
}
|
|
439
|
-
|
|
440
|
-
public static newMember(
|
|
441
|
-
// Add injected services as parameters
|
|
442
|
-
eciesService: ECIESService,
|
|
443
|
-
// Original parameters
|
|
444
|
-
type: MemberType,
|
|
445
|
-
name: string,
|
|
446
|
-
email: EmailString,
|
|
447
|
-
forceMnemonic?: SecureString,
|
|
448
|
-
createdBy?: Uint8Array,
|
|
449
|
-
eciesParams?: IECIESConstants,
|
|
450
|
-
): IMemberWithMnemonic {
|
|
451
|
-
// Validate inputs first
|
|
452
|
-
if (!name || name.length == 0) {
|
|
453
|
-
throw new MemberError(MemberErrorType.MissingMemberName);
|
|
454
|
-
}
|
|
455
|
-
if (name.trim() != name) {
|
|
456
|
-
throw new MemberError(MemberErrorType.InvalidMemberNameWhitespace);
|
|
457
|
-
}
|
|
458
|
-
if (!email || email.toString().length == 0) {
|
|
459
|
-
throw new MemberError(MemberErrorType.MissingEmail);
|
|
460
|
-
}
|
|
461
|
-
if (email.toString().trim() != email.toString()) {
|
|
462
|
-
throw new MemberError(MemberErrorType.InvalidEmailWhitespace);
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
const eciesConsts = eciesParams ?? ECIES;
|
|
466
|
-
// Use injected services
|
|
467
|
-
const mnemonic = forceMnemonic ?? eciesService.generateNewMnemonic();
|
|
468
|
-
const { wallet } = eciesService.walletAndSeedFromMnemonic(mnemonic);
|
|
469
|
-
|
|
470
|
-
// Get private key from wallet
|
|
471
|
-
const privateKey = wallet.getPrivateKey();
|
|
472
|
-
// Get compressed public key
|
|
473
|
-
const publicKey = eciesService.getPublicKey(privateKey);
|
|
474
|
-
|
|
475
|
-
const newId = Constants.idProvider.generate();
|
|
476
|
-
const dateCreated = new Date();
|
|
477
|
-
return {
|
|
478
|
-
// Pass injected services to constructor
|
|
479
|
-
member: new Member(
|
|
480
|
-
eciesService,
|
|
481
|
-
type,
|
|
482
|
-
name,
|
|
483
|
-
email,
|
|
484
|
-
publicKey,
|
|
485
|
-
new SecureBuffer(privateKey),
|
|
486
|
-
wallet,
|
|
487
|
-
newId,
|
|
488
|
-
dateCreated,
|
|
489
|
-
dateCreated,
|
|
490
|
-
createdBy ?? newId,
|
|
491
|
-
),
|
|
492
|
-
mnemonic,
|
|
493
|
-
};
|
|
494
|
-
}
|
|
495
|
-
}
|
package/src/phone-number.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { EciesStringKey } from './enumerations';
|
|
2
|
-
import { EciesComponentId, getEciesI18nEngine } from './i18n-setup';
|
|
3
|
-
import { PhoneNumberRegex } from './regexes';
|
|
4
|
-
|
|
5
|
-
export class PhoneNumber {
|
|
6
|
-
private readonly _number: string;
|
|
7
|
-
constructor(number: string) {
|
|
8
|
-
// make sure the phone number fits the regex
|
|
9
|
-
if (!PhoneNumberRegex.test(number)) {
|
|
10
|
-
const engine = getEciesI18nEngine();
|
|
11
|
-
throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_PhoneNumber_InvalidTemplate, { phoneNumber: number }));
|
|
12
|
-
}
|
|
13
|
-
this._number = number;
|
|
14
|
-
}
|
|
15
|
-
public get number(): string {
|
|
16
|
-
return this._number;
|
|
17
|
-
}
|
|
18
|
-
}
|
package/src/regexes.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export const PASSWORD_REGEX =
|
|
2
|
-
/^(?=.*[A-Za-z])(?=.*\d)(?=.*[!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?])[A-Za-z\d!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?]{8,}$/;
|
|
3
|
-
|
|
4
|
-
export const MNEMONIC_REGEX =
|
|
5
|
-
/^(?:\w+\s){11}\w+$|^(?:\w+\s){14}\w+$|^(?:\w+\s){17}\w+$|^(?:\w+\s){20}\w+$|^(?:\w+\s){23}\w+$/i;
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Phone number regex to validate phone numbers
|
|
9
|
-
*/
|
|
10
|
-
export const PhoneNumberRegex = /^(\+\d{1,3}[- ]?)?\d{10}$/; // Matches international phone numbers with optional country code
|