@digitaldefiance/ecies-lib 4.4.13 → 4.4.14
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 +6 -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 +30 -0
- package/src/builders/ecies-builder.js.map +1 -0
- package/src/builders/index.d.ts +6 -0
- package/src/builders/index.d.ts.map +1 -0
- package/src/builders/{index.ts → index.js} +1 -1
- 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 +97 -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 +446 -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 +56 -0
- package/src/core/errors/crypto-error.js.map +1 -0
- package/src/core/index.d.ts +6 -0
- package/src/core/index.d.ts.map +1 -0
- package/src/core/{index.ts → index.js} +1 -1
- 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 +12 -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 +67 -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 +13 -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 +6 -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 +27 -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 +45 -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 +199 -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 +5 -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 +28 -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 +8 -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 +44 -0
- package/src/enumerations/id-provider-error-type.js.map +1 -0
- package/src/enumerations/index.d.ts +18 -0
- package/src/enumerations/index.d.ts.map +1 -0
- package/src/enumerations/{index.ts → index.js} +1 -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 +7 -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 +8 -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 +7 -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 +88 -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 +16 -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 +6 -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 +7 -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 +7 -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 +7 -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 +28 -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 +78 -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 +96 -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 +29 -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 +10 -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 +15 -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 +11 -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 +11 -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 +11 -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 +12 -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 +12 -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 +7 -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 +101 -0
- package/src/i18n-setup.js.map +1 -0
- package/src/index.d.ts +80 -0
- package/src/index.d.ts.map +1 -0
- package/src/{index.ts → index.js} +7 -64
- 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 +2 -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 +2 -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 +3 -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 +2 -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 +2 -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 +2 -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 +2 -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 +12 -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 +2 -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 +2 -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 +2 -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 +52 -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 +13 -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 +18 -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 +2 -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 +2 -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 +2 -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 +2 -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 +11 -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 +2 -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 +2 -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 +2 -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 +8 -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 +9 -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 +2 -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 +26 -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 +46 -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 +914 -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 +85 -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 +122 -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 +29 -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 +104 -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 +110 -0
- package/src/lib/id-providers/uuid-provider.js.map +1 -0
- package/src/lib/index.d.ts +6 -0
- package/src/lib/index.d.ts.map +1 -0
- package/src/lib/{index.ts → index.js} +2 -2
- 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 +97 -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 +49 -0
- package/src/lib/invariants/encryption-algorithm-consistency.js.map +1 -0
- package/src/lib/invariants/index.d.ts +4 -0
- package/src/lib/invariants/index.d.ts.map +1 -0
- package/src/lib/invariants/{index.ts → index.js} +1 -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 +58 -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 +31 -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 +41 -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 +322 -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 +2 -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 +18 -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 +7 -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 +201 -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 +206 -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 +142 -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 +145 -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 +205 -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 +121 -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 +106 -0
- package/src/services/ecies/file.js.map +1 -0
- package/src/services/ecies/index.d.ts +38 -0
- package/src/services/ecies/index.d.ts.map +1 -0
- package/src/services/ecies/{index.ts → index.js} +1 -2
- 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 +167 -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 +5 -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 +163 -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 +344 -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 +210 -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 +72 -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 +322 -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 +295 -0
- package/src/services/encryption-stream.js.map +1 -0
- package/src/services/index.d.ts +11 -0
- package/src/services/index.d.ts.map +1 -0
- package/src/services/{index.ts → index.js} +1 -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 +289 -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 +115 -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 +108 -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 +103 -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 +105 -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 +63 -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 +2 -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 +190 -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.ts → testing.js} +1 -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.ts → de.js} +56 -112
- 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.ts → en-US.js} +58 -116
- 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.ts → es.js} +67 -134
- 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.ts → fr.js} +64 -129
- 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.ts → ja.js} +55 -111
- 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.ts → uk.js} +67 -132
- 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.ts → zh-cn.js} +29 -60
- 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 +2 -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 +2 -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 +61 -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 +273 -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/types/deep-partial.ts +0 -11
- package/src/utils/encryption-type-utils.ts +0 -76
- package/src/utils.ts +0 -329
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { BaseIdProvider } from '../../interfaces/id-provider';
|
|
2
|
+
/**
|
|
3
|
+
* ID provider for standard RFC 4122 UUIDs (16 bytes).
|
|
4
|
+
*
|
|
5
|
+
* Uses the 'uuid' npm package for UUID generation and validation.
|
|
6
|
+
* Serialization uses the standard UUID format with dashes (36 characters).
|
|
7
|
+
*
|
|
8
|
+
* This is functionally similar to GuidV4Provider but uses standard UUID
|
|
9
|
+
* string formatting (with dashes) instead of base64.
|
|
10
|
+
*/
|
|
11
|
+
export declare class UuidProvider extends BaseIdProvider {
|
|
12
|
+
readonly byteLength = 16;
|
|
13
|
+
readonly name = "UUID";
|
|
14
|
+
/**
|
|
15
|
+
* Generate a new random UUIDv4.
|
|
16
|
+
*/
|
|
17
|
+
generate(): Uint8Array;
|
|
18
|
+
/**
|
|
19
|
+
* Validate a UUID buffer.
|
|
20
|
+
* Checks length and RFC 4122 compliance.
|
|
21
|
+
*/
|
|
22
|
+
validate(id: Uint8Array): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Serialize UUID to standard format with dashes (36 characters).
|
|
25
|
+
* Format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
|
26
|
+
*/
|
|
27
|
+
serialize(id: Uint8Array): string;
|
|
28
|
+
/**
|
|
29
|
+
* Deserialize a UUID string (with or without dashes) to buffer.
|
|
30
|
+
*/
|
|
31
|
+
deserialize(str: string): Uint8Array;
|
|
32
|
+
/**
|
|
33
|
+
* Extract the version from a UUID buffer.
|
|
34
|
+
* Should return 4 for v4 UUIDs.
|
|
35
|
+
*/
|
|
36
|
+
getVersion(id: Uint8Array): number | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* Check if a UUID is the nil UUID (all zeros).
|
|
39
|
+
*/
|
|
40
|
+
isNil(id: Uint8Array): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Convert an ID of unknown type to a string representation.
|
|
43
|
+
* Delegates to base implementation.
|
|
44
|
+
*/
|
|
45
|
+
idToString(id: unknown): string;
|
|
46
|
+
/**
|
|
47
|
+
* Convert a string representation of an ID back to an ID buffer.
|
|
48
|
+
* Delegates to deserialize.
|
|
49
|
+
*/
|
|
50
|
+
idFromString(str: string): Uint8Array;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=uuid-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuid-provider.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/lib/id-providers/uuid-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAK9D;;;;;;;;GAQG;AACH,qBAAa,YAAa,SAAQ,cAAc;IAC9C,QAAQ,CAAC,UAAU,MAAM;IACzB,QAAQ,CAAC,IAAI,UAAU;IAEvB;;OAEG;IACH,QAAQ,IAAI,UAAU;IAMtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO;IAcjC;;;OAGG;IACH,SAAS,CAAC,EAAE,EAAE,UAAU,GAAG,MAAM;IAWjC;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;IA4BpC;;;OAGG;IACH,UAAU,CAAC,EAAE,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS;IAQ9C;;OAEG;IACH,KAAK,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO;IAW9B;;;OAGG;IACM,UAAU,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM;IAIxC;;;OAGG;IACM,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;CAG/C"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { BaseIdProvider } from '../../interfaces/id-provider';
|
|
2
|
+
import { v4 as uuidv4, validate as uuidValidate, parse as uuidParse } from 'uuid';
|
|
3
|
+
import { IdProviderError } from '../../errors/id-provider';
|
|
4
|
+
import { IdProviderErrorType } from '../../enumerations/id-provider-error-type';
|
|
5
|
+
/**
|
|
6
|
+
* ID provider for standard RFC 4122 UUIDs (16 bytes).
|
|
7
|
+
*
|
|
8
|
+
* Uses the 'uuid' npm package for UUID generation and validation.
|
|
9
|
+
* Serialization uses the standard UUID format with dashes (36 characters).
|
|
10
|
+
*
|
|
11
|
+
* This is functionally similar to GuidV4Provider but uses standard UUID
|
|
12
|
+
* string formatting (with dashes) instead of base64.
|
|
13
|
+
*/
|
|
14
|
+
export class UuidProvider extends BaseIdProvider {
|
|
15
|
+
byteLength = 16;
|
|
16
|
+
name = 'UUID';
|
|
17
|
+
/**
|
|
18
|
+
* Generate a new random UUIDv4.
|
|
19
|
+
*/
|
|
20
|
+
generate() {
|
|
21
|
+
const buffer = new Uint8Array(16);
|
|
22
|
+
uuidv4(undefined, buffer);
|
|
23
|
+
return buffer;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Validate a UUID buffer.
|
|
27
|
+
* Checks length and RFC 4122 compliance.
|
|
28
|
+
*/
|
|
29
|
+
validate(id) {
|
|
30
|
+
if (id.length !== this.byteLength) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
// Convert to string and validate
|
|
35
|
+
const str = this.serialize(id);
|
|
36
|
+
return uuidValidate(str);
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Serialize UUID to standard format with dashes (36 characters).
|
|
44
|
+
* Format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
|
45
|
+
*/
|
|
46
|
+
serialize(id) {
|
|
47
|
+
this.validateLength(id, 'UuidProvider.serialize');
|
|
48
|
+
const hex = Array.from(id)
|
|
49
|
+
.map(b => b.toString(16).padStart(2, '0'))
|
|
50
|
+
.join('');
|
|
51
|
+
// Insert dashes at proper positions
|
|
52
|
+
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Deserialize a UUID string (with or without dashes) to buffer.
|
|
56
|
+
*/
|
|
57
|
+
deserialize(str) {
|
|
58
|
+
if (typeof str !== 'string') {
|
|
59
|
+
throw new IdProviderError(IdProviderErrorType.InputMustBeString);
|
|
60
|
+
}
|
|
61
|
+
// Validate format
|
|
62
|
+
if (!uuidValidate(str)) {
|
|
63
|
+
throw new IdProviderError(IdProviderErrorType.InvalidUuidFormat, undefined, undefined, { input: str });
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
const buffer = uuidParse(str);
|
|
67
|
+
return buffer;
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
throw new IdProviderError(IdProviderErrorType.ParseFailed, { cause: error instanceof Error ? error : undefined }, undefined, { input: str, message: error instanceof Error ? error.message : String(error) });
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Extract the version from a UUID buffer.
|
|
75
|
+
* Should return 4 for v4 UUIDs.
|
|
76
|
+
*/
|
|
77
|
+
getVersion(id) {
|
|
78
|
+
this.validateLength(id, 'UuidProvider.getVersion');
|
|
79
|
+
// Version is in the most significant 4 bits of byte 6
|
|
80
|
+
const versionByte = id[6];
|
|
81
|
+
return (versionByte >> 4) & 0x0F;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Check if a UUID is the nil UUID (all zeros).
|
|
85
|
+
*/
|
|
86
|
+
isNil(id) {
|
|
87
|
+
this.validateLength(id, 'UuidProvider.isNil');
|
|
88
|
+
for (let i = 0; i < id.length; i++) {
|
|
89
|
+
if (id[i] !== 0) {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Convert an ID of unknown type to a string representation.
|
|
97
|
+
* Delegates to base implementation.
|
|
98
|
+
*/
|
|
99
|
+
idToString(id) {
|
|
100
|
+
return super.idToString(id);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Convert a string representation of an ID back to an ID buffer.
|
|
104
|
+
* Delegates to deserialize.
|
|
105
|
+
*/
|
|
106
|
+
idFromString(str) {
|
|
107
|
+
return this.deserialize(str);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=uuid-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuid-provider.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/lib/id-providers/uuid-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/lib/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/lib/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { IConstants } from '../interfaces/constants';
|
|
2
|
+
import { IInvariant } from '../interfaces/invariant';
|
|
3
|
+
/**
|
|
4
|
+
* Validates all configuration invariants.
|
|
5
|
+
*
|
|
6
|
+
* This class maintains a registry of all invariants and validates them
|
|
7
|
+
* whenever a configuration is created or modified.
|
|
8
|
+
*
|
|
9
|
+
* Adding new invariants is easy - just:
|
|
10
|
+
* 1. Create a class implementing IInvariant
|
|
11
|
+
* 2. Add it to the DEFAULT_INVARIANTS array
|
|
12
|
+
* 3. Tests will automatically validate it
|
|
13
|
+
*/
|
|
14
|
+
export declare class InvariantValidator {
|
|
15
|
+
/**
|
|
16
|
+
* Default invariants that are always checked
|
|
17
|
+
*/
|
|
18
|
+
private static readonly DEFAULT_INVARIANTS;
|
|
19
|
+
/**
|
|
20
|
+
* Custom invariants registered at runtime
|
|
21
|
+
*/
|
|
22
|
+
private static customInvariants;
|
|
23
|
+
/**
|
|
24
|
+
* Register a custom invariant to be checked alongside default invariants
|
|
25
|
+
*/
|
|
26
|
+
static registerInvariant(invariant: IInvariant): void;
|
|
27
|
+
/**
|
|
28
|
+
* Clear all custom invariants (useful for testing)
|
|
29
|
+
*/
|
|
30
|
+
static clearCustomInvariants(): void;
|
|
31
|
+
/**
|
|
32
|
+
* Get all invariants (default + custom)
|
|
33
|
+
*/
|
|
34
|
+
static getAllInvariants(): readonly IInvariant[];
|
|
35
|
+
/**
|
|
36
|
+
* Validate all invariants for a given configuration
|
|
37
|
+
*
|
|
38
|
+
* @param config The configuration to validate
|
|
39
|
+
* @throws Error if any invariant fails
|
|
40
|
+
*/
|
|
41
|
+
static validateAll(config: IConstants): void;
|
|
42
|
+
/**
|
|
43
|
+
* Check a single invariant
|
|
44
|
+
*
|
|
45
|
+
* @param config The configuration to validate
|
|
46
|
+
* @param invariantName Name of the invariant to check
|
|
47
|
+
* @returns true if invariant passes, false otherwise
|
|
48
|
+
*/
|
|
49
|
+
static checkInvariant(config: IConstants, invariantName: string): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Get failure details for a specific invariant
|
|
52
|
+
*
|
|
53
|
+
* @param config The configuration to validate
|
|
54
|
+
* @param invariantName Name of the invariant to check
|
|
55
|
+
* @returns Error message if invariant fails, null if it passes
|
|
56
|
+
*/
|
|
57
|
+
static getFailureDetails(config: IConstants, invariantName: string): string | null;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=invariant-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invariant-validator.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/lib/invariant-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAUrD;;;;;;;;;;GAUG;AACH,qBAAa,kBAAkB;IAC7B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAIxC;IAEF;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAoB;IAEnD;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI;IAIrD;;OAEG;IACH,MAAM,CAAC,qBAAqB,IAAI,IAAI;IAIpC;;OAEG;IACH,MAAM,CAAC,gBAAgB,IAAI,SAAS,UAAU,EAAE;IAIhD;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAuB5C;;;;;;OAMG;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO;IAgBzE;;;;;;OAMG;IACH,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAenF"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { RecipientIdConsistencyInvariant, Pbkdf2ProfilesValidityInvariant, EncryptionAlgorithmConsistencyInvariant, } from './invariants';
|
|
2
|
+
import { EciesComponentId, getEciesI18nEngine } from '../i18n-setup';
|
|
3
|
+
import { EciesStringKey } from '../enumerations/ecies-string-key';
|
|
4
|
+
import { TranslatableGenericError } from '@digitaldefiance/i18n-lib';
|
|
5
|
+
/**
|
|
6
|
+
* Validates all configuration invariants.
|
|
7
|
+
*
|
|
8
|
+
* This class maintains a registry of all invariants and validates them
|
|
9
|
+
* whenever a configuration is created or modified.
|
|
10
|
+
*
|
|
11
|
+
* Adding new invariants is easy - just:
|
|
12
|
+
* 1. Create a class implementing IInvariant
|
|
13
|
+
* 2. Add it to the DEFAULT_INVARIANTS array
|
|
14
|
+
* 3. Tests will automatically validate it
|
|
15
|
+
*/
|
|
16
|
+
export class InvariantValidator {
|
|
17
|
+
/**
|
|
18
|
+
* Default invariants that are always checked
|
|
19
|
+
*/
|
|
20
|
+
static DEFAULT_INVARIANTS = [
|
|
21
|
+
new RecipientIdConsistencyInvariant(),
|
|
22
|
+
new Pbkdf2ProfilesValidityInvariant(),
|
|
23
|
+
new EncryptionAlgorithmConsistencyInvariant(),
|
|
24
|
+
];
|
|
25
|
+
/**
|
|
26
|
+
* Custom invariants registered at runtime
|
|
27
|
+
*/
|
|
28
|
+
static customInvariants = [];
|
|
29
|
+
/**
|
|
30
|
+
* Register a custom invariant to be checked alongside default invariants
|
|
31
|
+
*/
|
|
32
|
+
static registerInvariant(invariant) {
|
|
33
|
+
this.customInvariants.push(invariant);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Clear all custom invariants (useful for testing)
|
|
37
|
+
*/
|
|
38
|
+
static clearCustomInvariants() {
|
|
39
|
+
this.customInvariants = [];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get all invariants (default + custom)
|
|
43
|
+
*/
|
|
44
|
+
static getAllInvariants() {
|
|
45
|
+
return [...this.DEFAULT_INVARIANTS, ...this.customInvariants];
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Validate all invariants for a given configuration
|
|
49
|
+
*
|
|
50
|
+
* @param config The configuration to validate
|
|
51
|
+
* @throws Error if any invariant fails
|
|
52
|
+
*/
|
|
53
|
+
static validateAll(config) {
|
|
54
|
+
const allInvariants = this.getAllInvariants();
|
|
55
|
+
const failures = [];
|
|
56
|
+
for (const invariant of allInvariants) {
|
|
57
|
+
if (!invariant.check(config)) {
|
|
58
|
+
failures.push(invariant.errorMessage(config));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (failures.length > 0) {
|
|
62
|
+
const engine = getEciesI18nEngine();
|
|
63
|
+
throw TranslatableGenericError.withEngine(engine, EciesComponentId, EciesStringKey.Error_Invariant_ConfigurationValidationFailedMultipleTemplate, { count: failures.length, failures: failures.join('\n\n') }, undefined, { invariantCount: failures.length });
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Check a single invariant
|
|
68
|
+
*
|
|
69
|
+
* @param config The configuration to validate
|
|
70
|
+
* @param invariantName Name of the invariant to check
|
|
71
|
+
* @returns true if invariant passes, false otherwise
|
|
72
|
+
*/
|
|
73
|
+
static checkInvariant(config, invariantName) {
|
|
74
|
+
const invariant = this.getAllInvariants().find(i => i.name === invariantName);
|
|
75
|
+
if (!invariant) {
|
|
76
|
+
const engine = getEciesI18nEngine();
|
|
77
|
+
throw TranslatableGenericError.withEngine(engine, EciesComponentId, EciesStringKey.Error_Invariant_UnknownInvariantTemplate, { name: invariantName }, undefined, { invariantName });
|
|
78
|
+
}
|
|
79
|
+
return invariant.check(config);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Get failure details for a specific invariant
|
|
83
|
+
*
|
|
84
|
+
* @param config The configuration to validate
|
|
85
|
+
* @param invariantName Name of the invariant to check
|
|
86
|
+
* @returns Error message if invariant fails, null if it passes
|
|
87
|
+
*/
|
|
88
|
+
static getFailureDetails(config, invariantName) {
|
|
89
|
+
const invariant = this.getAllInvariants().find(i => i.name === invariantName);
|
|
90
|
+
if (!invariant) {
|
|
91
|
+
const engine = getEciesI18nEngine();
|
|
92
|
+
throw TranslatableGenericError.withEngine(engine, EciesComponentId, EciesStringKey.Error_Invariant_UnknownInvariantTemplate, { name: invariantName }, undefined, { invariantName });
|
|
93
|
+
}
|
|
94
|
+
return invariant.check(config) ? null : invariant.errorMessage(config);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=invariant-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invariant-validator.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/lib/invariant-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { IConstants } from '../../interfaces/constants';
|
|
2
|
+
import { BaseInvariant } from '../../interfaces/invariant';
|
|
3
|
+
/**
|
|
4
|
+
* Validates that encryption algorithm parameters are consistent.
|
|
5
|
+
*
|
|
6
|
+
* Checks:
|
|
7
|
+
* - Symmetric key size matches the algorithm (AES-256 = 32 bytes)
|
|
8
|
+
* - Curve name is supported
|
|
9
|
+
* - Key derivation path is valid
|
|
10
|
+
*/
|
|
11
|
+
export declare class EncryptionAlgorithmConsistencyInvariant extends BaseInvariant {
|
|
12
|
+
private static readonly SUPPORTED_CURVES;
|
|
13
|
+
constructor();
|
|
14
|
+
check(config: IConstants): boolean;
|
|
15
|
+
errorMessage(config: IConstants): string;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=encryption-algorithm-consistency.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encryption-algorithm-consistency.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/lib/invariants/encryption-algorithm-consistency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D;;;;;;;GAOG;AACH,qBAAa,uCAAwC,SAAQ,aAAa;IACxE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAKtC;;IASF,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO;IAqBlC,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;CAyBzC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { BaseInvariant } from '../../interfaces/invariant';
|
|
2
|
+
/**
|
|
3
|
+
* Validates that encryption algorithm parameters are consistent.
|
|
4
|
+
*
|
|
5
|
+
* Checks:
|
|
6
|
+
* - Symmetric key size matches the algorithm (AES-256 = 32 bytes)
|
|
7
|
+
* - Curve name is supported
|
|
8
|
+
* - Key derivation path is valid
|
|
9
|
+
*/
|
|
10
|
+
export class EncryptionAlgorithmConsistencyInvariant extends BaseInvariant {
|
|
11
|
+
static SUPPORTED_CURVES = [
|
|
12
|
+
'secp256k1',
|
|
13
|
+
'p256',
|
|
14
|
+
'p384',
|
|
15
|
+
'p521',
|
|
16
|
+
];
|
|
17
|
+
constructor() {
|
|
18
|
+
super('EncryptionAlgorithmConsistency', 'Encryption algorithm parameters must be consistent');
|
|
19
|
+
}
|
|
20
|
+
check(config) {
|
|
21
|
+
// AES-256 requires 32-byte keys
|
|
22
|
+
if (config.ECIES.SYMMETRIC.KEY_SIZE !== 32) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
// Check curve is supported
|
|
26
|
+
if (!EncryptionAlgorithmConsistencyInvariant.SUPPORTED_CURVES.includes(config.ECIES.CURVE_NAME)) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
// Key derivation path should be valid BIP32 path
|
|
30
|
+
if (!config.ECIES.PRIMARY_KEY_DERIVATION_PATH.startsWith('m/')) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
errorMessage(config) {
|
|
36
|
+
const issues = [];
|
|
37
|
+
if (config.ECIES.SYMMETRIC.KEY_SIZE !== 32) {
|
|
38
|
+
issues.push(`SYMMETRIC.KEY_SIZE (${config.ECIES.SYMMETRIC.KEY_SIZE}) must be 32 for AES-256`);
|
|
39
|
+
}
|
|
40
|
+
if (!EncryptionAlgorithmConsistencyInvariant.SUPPORTED_CURVES.includes(config.ECIES.CURVE_NAME)) {
|
|
41
|
+
issues.push(`CURVE_NAME (${config.ECIES.CURVE_NAME}) must be one of: ${EncryptionAlgorithmConsistencyInvariant.SUPPORTED_CURVES.join(', ')}`);
|
|
42
|
+
}
|
|
43
|
+
if (!config.ECIES.PRIMARY_KEY_DERIVATION_PATH.startsWith('m/')) {
|
|
44
|
+
issues.push(`PRIMARY_KEY_DERIVATION_PATH (${config.ECIES.PRIMARY_KEY_DERIVATION_PATH}) must be a valid BIP32 path starting with 'm/'`);
|
|
45
|
+
}
|
|
46
|
+
return `Invariant '${this.name}' failed:\n ${issues.join('\n ')}`;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=encryption-algorithm-consistency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encryption-algorithm-consistency.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/lib/invariants/encryption-algorithm-consistency.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D;;;;;;;GAOG;AACH,MAAM,OAAO,uCAAwC,SAAQ,aAAa;IAChE,MAAM,CAAU,gBAAgB,GAAG;QACzC,WAAW;QACX,MAAM;QACN,MAAM;QACN,MAAM;KACP,CAAC;IAEF;QACE,KAAK,CACH,gCAAgC,EAChC,oDAAoD,CACrD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAkB;QACtB,gCAAgC;QAChC,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;YAC3C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC,uCAAuC,CAAC,gBAAgB,CAAC,QAAQ,CACpE,MAAM,CAAC,KAAK,CAAC,UAAU,CACxB,EAAE,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,iDAAiD;QACjD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,MAAkB;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,CACT,uBAAuB,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,0BAA0B,CACjF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,uCAAuC,CAAC,gBAAgB,CAAC,QAAQ,CACpE,MAAM,CAAC,KAAK,CAAC,UAAU,CACxB,EAAE,CAAC;YACF,MAAM,CAAC,IAAI,CACT,eAAe,MAAM,CAAC,KAAK,CAAC,UAAU,qBAAqB,uCAAuC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACjI,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/D,MAAM,CAAC,IAAI,CACT,gCAAgC,MAAM,CAAC,KAAK,CAAC,2BAA2B,iDAAiD,CAC1H,CAAC;QACJ,CAAC;QAED,OAAO,cAAc,IAAI,CAAC,IAAI,gBAAgB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IACtE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/lib/invariants/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/lib/invariants/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { IConstants } from '../../interfaces/constants';
|
|
2
|
+
import { BaseInvariant } from '../../interfaces/invariant';
|
|
3
|
+
/**
|
|
4
|
+
* Validates that PBKDF2 profiles have sensible parameters.
|
|
5
|
+
*
|
|
6
|
+
* Checks:
|
|
7
|
+
* - iterations > 0 and not too low (security risk)
|
|
8
|
+
* - saltBytes > 0 and reasonable
|
|
9
|
+
* - hashBytes > 0 and matches expected hash output
|
|
10
|
+
*/
|
|
11
|
+
export declare class Pbkdf2ProfilesValidityInvariant extends BaseInvariant {
|
|
12
|
+
constructor();
|
|
13
|
+
check(config: IConstants): boolean;
|
|
14
|
+
errorMessage(config: IConstants): string;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=pbkdf2-profiles-validity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pbkdf2-profiles-validity.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/lib/invariants/pbkdf2-profiles-validity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D;;;;;;;GAOG;AACH,qBAAa,+BAAgC,SAAQ,aAAa;;IAQhE,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO;IA2BlC,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;CA8BzC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { BaseInvariant } from '../../interfaces/invariant';
|
|
2
|
+
import { Pbkdf2ProfileEnum } from '../../enumerations/pbkdf2-profile';
|
|
3
|
+
/**
|
|
4
|
+
* Validates that PBKDF2 profiles have sensible parameters.
|
|
5
|
+
*
|
|
6
|
+
* Checks:
|
|
7
|
+
* - iterations > 0 and not too low (security risk)
|
|
8
|
+
* - saltBytes > 0 and reasonable
|
|
9
|
+
* - hashBytes > 0 and matches expected hash output
|
|
10
|
+
*/
|
|
11
|
+
export class Pbkdf2ProfilesValidityInvariant extends BaseInvariant {
|
|
12
|
+
constructor() {
|
|
13
|
+
super('Pbkdf2ProfilesValidity', 'PBKDF2 profiles must have valid cryptographic parameters');
|
|
14
|
+
}
|
|
15
|
+
check(config) {
|
|
16
|
+
const profiles = [
|
|
17
|
+
config.PBKDF2_PROFILES[Pbkdf2ProfileEnum.BROWSER_PASSWORD],
|
|
18
|
+
config.PBKDF2_PROFILES[Pbkdf2ProfileEnum.HIGH_SECURITY],
|
|
19
|
+
config.PBKDF2_PROFILES[Pbkdf2ProfileEnum.TEST_FAST],
|
|
20
|
+
];
|
|
21
|
+
for (const profile of profiles) {
|
|
22
|
+
// iterations must be positive and reasonable
|
|
23
|
+
if (profile.iterations < 1000 || profile.iterations > 10_000_000) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
// saltBytes must be at least 16 bytes (128 bits)
|
|
27
|
+
if (profile.saltBytes < 16 || profile.saltBytes > 256) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
// hashBytes must be positive and reasonable for sha256
|
|
31
|
+
if (profile.hashBytes < 16 || profile.hashBytes > 64) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
errorMessage(config) {
|
|
38
|
+
const issues = [];
|
|
39
|
+
const profileTests = [
|
|
40
|
+
{ name: 'BROWSER_PASSWORD', profile: config.PBKDF2_PROFILES[Pbkdf2ProfileEnum.BROWSER_PASSWORD] },
|
|
41
|
+
{ name: 'HIGH_SECURITY', profile: config.PBKDF2_PROFILES[Pbkdf2ProfileEnum.HIGH_SECURITY] },
|
|
42
|
+
{ name: 'TEST_FAST', profile: config.PBKDF2_PROFILES[Pbkdf2ProfileEnum.TEST_FAST] },
|
|
43
|
+
];
|
|
44
|
+
for (const { name, profile } of profileTests) {
|
|
45
|
+
if (profile.iterations < 1000 || profile.iterations > 10_000_000) {
|
|
46
|
+
issues.push(`${name}.iterations (${profile.iterations}) must be between 1000 and 10,000,000`);
|
|
47
|
+
}
|
|
48
|
+
if (profile.saltBytes < 16 || profile.saltBytes > 256) {
|
|
49
|
+
issues.push(`${name}.saltBytes (${profile.saltBytes}) must be between 16 and 256`);
|
|
50
|
+
}
|
|
51
|
+
if (profile.hashBytes < 16 || profile.hashBytes > 64) {
|
|
52
|
+
issues.push(`${name}.hashBytes (${profile.hashBytes}) must be between 16 and 64`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return `Invariant '${this.name}' failed:\n ${issues.join('\n ')}`;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=pbkdf2-profiles-validity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pbkdf2-profiles-validity.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/lib/invariants/pbkdf2-profiles-validity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE;;;;;;;GAOG;AACH,MAAM,OAAO,+BAAgC,SAAQ,aAAa;IAChE;QACE,KAAK,CACH,wBAAwB,EACxB,0DAA0D,CAC3D,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAkB;QACtB,MAAM,QAAQ,GAAG;YACf,MAAM,CAAC,eAAe,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;YAC1D,MAAM,CAAC,eAAe,CAAC,iBAAiB,CAAC,aAAa,CAAC;YACvD,MAAM,CAAC,eAAe,CAAC,iBAAiB,CAAC,SAAS,CAAC;SACpD,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,6CAA6C;YAC7C,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,IAAI,OAAO,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC;gBACjE,OAAO,KAAK,CAAC;YACf,CAAC;YAED,iDAAiD;YACjD,IAAI,OAAO,CAAC,SAAS,GAAG,EAAE,IAAI,OAAO,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;gBACtD,OAAO,KAAK,CAAC;YACf,CAAC;YAED,uDAAuD;YACvD,IAAI,OAAO,CAAC,SAAS,GAAG,EAAE,IAAI,OAAO,CAAC,SAAS,GAAG,EAAE,EAAE,CAAC;gBACrD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,MAAkB;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,YAAY,GAAG;YACnB,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,CAAC,eAAe,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EAAE;YACjG,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,CAAC,eAAe,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE;YAC3F,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,eAAe,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE;SACpF,CAAC;QAEF,KAAK,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,YAAY,EAAE,CAAC;YAC7C,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,IAAI,OAAO,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC;gBACjE,MAAM,CAAC,IAAI,CACT,GAAG,IAAI,gBAAgB,OAAO,CAAC,UAAU,uCAAuC,CACjF,CAAC;YACJ,CAAC;YAED,IAAI,OAAO,CAAC,SAAS,GAAG,EAAE,IAAI,OAAO,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;gBACtD,MAAM,CAAC,IAAI,CACT,GAAG,IAAI,eAAe,OAAO,CAAC,SAAS,8BAA8B,CACtE,CAAC;YACJ,CAAC;YAED,IAAI,OAAO,CAAC,SAAS,GAAG,EAAE,IAAI,OAAO,CAAC,SAAS,GAAG,EAAE,EAAE,CAAC;gBACrD,MAAM,CAAC,IAAI,CACT,GAAG,IAAI,eAAe,OAAO,CAAC,SAAS,6BAA6B,CACrE,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,cAAc,IAAI,CAAC,IAAI,gBAAgB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IACtE,CAAC;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { IConstants } from '../../interfaces/constants';
|
|
2
|
+
import { BaseInvariant } from '../../interfaces/invariant';
|
|
3
|
+
/**
|
|
4
|
+
* Validates that all recipient ID size configurations are consistent.
|
|
5
|
+
*
|
|
6
|
+
* This invariant would have caught the 12 vs 32 byte discrepancy.
|
|
7
|
+
*
|
|
8
|
+
* Checks:
|
|
9
|
+
* - MEMBER_ID_LENGTH === idProvider.byteLength
|
|
10
|
+
* - ECIES.MULTIPLE.RECIPIENT_ID_SIZE === idProvider.byteLength
|
|
11
|
+
* - All three values must be in sync
|
|
12
|
+
*/
|
|
13
|
+
export declare class RecipientIdConsistencyInvariant extends BaseInvariant {
|
|
14
|
+
constructor();
|
|
15
|
+
check(config: IConstants): boolean;
|
|
16
|
+
errorMessage(config: IConstants): string;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=recipient-id-consistency.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recipient-id-consistency.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/lib/invariants/recipient-id-consistency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D;;;;;;;;;GASG;AACH,qBAAa,+BAAgC,SAAQ,aAAa;;IAQhE,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO;IAOlC,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;CAiBzC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { BaseInvariant } from '../../interfaces/invariant';
|
|
2
|
+
/**
|
|
3
|
+
* Validates that all recipient ID size configurations are consistent.
|
|
4
|
+
*
|
|
5
|
+
* This invariant would have caught the 12 vs 32 byte discrepancy.
|
|
6
|
+
*
|
|
7
|
+
* Checks:
|
|
8
|
+
* - MEMBER_ID_LENGTH === idProvider.byteLength
|
|
9
|
+
* - ECIES.MULTIPLE.RECIPIENT_ID_SIZE === idProvider.byteLength
|
|
10
|
+
* - All three values must be in sync
|
|
11
|
+
*/
|
|
12
|
+
export class RecipientIdConsistencyInvariant extends BaseInvariant {
|
|
13
|
+
constructor() {
|
|
14
|
+
super('RecipientIdConsistency', 'All recipient ID size configurations must match the ID provider byte length');
|
|
15
|
+
}
|
|
16
|
+
check(config) {
|
|
17
|
+
return (config.MEMBER_ID_LENGTH === config.idProvider.byteLength &&
|
|
18
|
+
config.ECIES.MULTIPLE.RECIPIENT_ID_SIZE === config.idProvider.byteLength);
|
|
19
|
+
}
|
|
20
|
+
errorMessage(config) {
|
|
21
|
+
const issues = [];
|
|
22
|
+
if (config.MEMBER_ID_LENGTH !== config.idProvider.byteLength) {
|
|
23
|
+
issues.push(`MEMBER_ID_LENGTH (${config.MEMBER_ID_LENGTH}) !== idProvider.byteLength (${config.idProvider.byteLength})`);
|
|
24
|
+
}
|
|
25
|
+
if (config.ECIES.MULTIPLE.RECIPIENT_ID_SIZE !== config.idProvider.byteLength) {
|
|
26
|
+
issues.push(`ECIES.MULTIPLE.RECIPIENT_ID_SIZE (${config.ECIES.MULTIPLE.RECIPIENT_ID_SIZE}) !== idProvider.byteLength (${config.idProvider.byteLength})`);
|
|
27
|
+
}
|
|
28
|
+
return `Invariant '${this.name}' failed:\n ${issues.join('\n ')}`;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=recipient-id-consistency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recipient-id-consistency.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/lib/invariants/recipient-id-consistency.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D;;;;;;;;;GASG;AACH,MAAM,OAAO,+BAAgC,SAAQ,aAAa;IAChE;QACE,KAAK,CACH,wBAAwB,EACxB,6EAA6E,CAC9E,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAkB;QACtB,OAAO,CACL,MAAM,CAAC,gBAAgB,KAAK,MAAM,CAAC,UAAU,CAAC,UAAU;YACxD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,KAAK,MAAM,CAAC,UAAU,CAAC,UAAU,CACzE,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,MAAkB;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,MAAM,CAAC,gBAAgB,KAAK,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YAC7D,MAAM,CAAC,IAAI,CACT,qBAAqB,MAAM,CAAC,gBAAgB,gCAAgC,MAAM,CAAC,UAAU,CAAC,UAAU,GAAG,CAC5G,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,KAAK,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YAC7E,MAAM,CAAC,IAAI,CACT,qCAAqC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,gCAAgC,MAAM,CAAC,UAAU,CAAC,UAAU,GAAG,CAC5I,CAAC;QACJ,CAAC;QAED,OAAO,cAAc,IAAI,CAAC,IAAI,gBAAgB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IACtE,CAAC;CACF"}
|