@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,61 @@
|
|
|
1
|
+
import type { IIdProvider } from './interfaces/id-provider';
|
|
2
|
+
/**
|
|
3
|
+
* A secure string buffer is a buffer whose intent is to prevent the raw password from being stored in memory.
|
|
4
|
+
* The buffer is encrypted with a key derived from a random ID.
|
|
5
|
+
* The ID is stored in the clear, but the buffer is encrypted with a key derived from the ID.
|
|
6
|
+
* This allows the buffer to be decrypted, but only if the ID and salt are known.
|
|
7
|
+
*
|
|
8
|
+
* Supports explicit resource management (TC39 proposal) for automatic disposal:
|
|
9
|
+
* ```typescript
|
|
10
|
+
* using buffer = new SecureBuffer(sensitiveData);
|
|
11
|
+
* // buffer automatically disposed when leaving scope
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
export declare class SecureBuffer implements Disposable {
|
|
15
|
+
private _disposed;
|
|
16
|
+
private readonly _id;
|
|
17
|
+
private readonly _idProvider;
|
|
18
|
+
private readonly _length;
|
|
19
|
+
private readonly _obfuscatedValue;
|
|
20
|
+
private readonly _key;
|
|
21
|
+
private readonly _obfuscatedChecksum;
|
|
22
|
+
private _disposedAt?;
|
|
23
|
+
constructor(data?: Uint8Array, idProvider?: IIdProvider);
|
|
24
|
+
dispose(): void;
|
|
25
|
+
/**
|
|
26
|
+
* Symbol.dispose implementation for explicit resource management
|
|
27
|
+
* Allows using 'using' keyword (TC39 proposal)
|
|
28
|
+
*/
|
|
29
|
+
[Symbol.dispose](): void;
|
|
30
|
+
/**
|
|
31
|
+
* Factory method for backward compatibility that uses Constants.idProvider
|
|
32
|
+
* @param data Optional data to secure
|
|
33
|
+
* @returns A new SecureBuffer instance using the global ID provider
|
|
34
|
+
*/
|
|
35
|
+
static create(data?: Uint8Array): SecureBuffer;
|
|
36
|
+
/**
|
|
37
|
+
* Static factory method that creates a SecureBuffer for a symmetric key
|
|
38
|
+
* Useful for managing encryption keys securely
|
|
39
|
+
*/
|
|
40
|
+
static allocateKey(sizeBytes?: number): SecureBuffer;
|
|
41
|
+
private assertNotDisposed;
|
|
42
|
+
static fromString(data: string): SecureBuffer;
|
|
43
|
+
get disposedAtStack(): string | undefined;
|
|
44
|
+
get id(): string;
|
|
45
|
+
get idUint8Array(): Uint8Array;
|
|
46
|
+
get originalLength(): number;
|
|
47
|
+
get value(): Uint8Array;
|
|
48
|
+
get valueAsString(): string;
|
|
49
|
+
get valueAsHexString(): string;
|
|
50
|
+
get valueAsBase64String(): string;
|
|
51
|
+
get checksum(): string;
|
|
52
|
+
private generateSimpleChecksum;
|
|
53
|
+
private createSimpleObfuscatedChecksum;
|
|
54
|
+
private validateSimpleChecksum;
|
|
55
|
+
private timingSafeEqual;
|
|
56
|
+
private validateObfuscatedChecksum;
|
|
57
|
+
private obfuscateData;
|
|
58
|
+
private deobfuscateData;
|
|
59
|
+
get length(): number;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=secure-buffer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secure-buffer.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-ecies-lib/src/secure-buffer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAU5D;;;;;;;;;;;GAWG;AACH,qBAAa,YAAa,YAAW,UAAU;IAC7C,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAa;IAC9C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAa;IACjD,OAAO,CAAC,WAAW,CAAC,CAAS;gBAG3B,IAAI,CAAC,EAAE,UAAU,EACjB,UAAU,GAAE,WAAiC;IAkBxC,OAAO,IAAI,IAAI;IAYtB;;;OAGG;IACH,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAIxB;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,YAAY;IAK9C;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,SAAS,GAAE,MAAW,GAAG,YAAY;IAMxD,OAAO,CAAC,iBAAiB;WAWX,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY;IAGpD,IAAW,eAAe,IAAI,MAAM,GAAG,SAAS,CAE/C;IACD,IAAW,EAAE,IAAI,MAAM,CAGtB;IACD,IAAW,YAAY,IAAI,UAAU,CAGpC;IACD,IAAW,cAAc,IAAI,MAAM,CAGlC;IACD,IAAW,KAAK,IAAI,UAAU,CA4B7B;IACD,IAAW,aAAa,IAAI,MAAM,CAGjC;IACD,IAAW,gBAAgB,IAAI,MAAM,CAGpC;IACD,IAAW,mBAAmB,IAAI,MAAM,CAGvC;IACD,IAAW,QAAQ,IAAI,MAAM,CAM5B;IACD,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,8BAA8B;IAOtC,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,0BAA0B;IAMlC,OAAO,CAAC,aAAa;IAGrB,OAAO,CAAC,eAAe;IAGvB,IAAW,MAAM,IAAI,MAAM,CAG1B;CACF"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
/// <reference path="../../../types/global.d.ts" />
|
|
2
|
+
import { SecureStorageErrorType } from './enumerations/secure-storage-error-type';
|
|
3
|
+
import { DisposedError } from './errors/disposed';
|
|
4
|
+
import { SecureStorageError } from './errors/secure-storage';
|
|
5
|
+
import { ObjectIdProvider } from './lib/id-providers/objectid-provider';
|
|
6
|
+
import { XorService } from './services/xor';
|
|
7
|
+
import { uint8ArrayToHex } from './utils';
|
|
8
|
+
/**
|
|
9
|
+
* Default ID provider (singleton, no circular dependency)
|
|
10
|
+
*/
|
|
11
|
+
const DEFAULT_ID_PROVIDER = new ObjectIdProvider();
|
|
12
|
+
/**
|
|
13
|
+
* A secure string buffer is a buffer whose intent is to prevent the raw password from being stored in memory.
|
|
14
|
+
* The buffer is encrypted with a key derived from a random ID.
|
|
15
|
+
* The ID is stored in the clear, but the buffer is encrypted with a key derived from the ID.
|
|
16
|
+
* This allows the buffer to be decrypted, but only if the ID and salt are known.
|
|
17
|
+
*
|
|
18
|
+
* Supports explicit resource management (TC39 proposal) for automatic disposal:
|
|
19
|
+
* ```typescript
|
|
20
|
+
* using buffer = new SecureBuffer(sensitiveData);
|
|
21
|
+
* // buffer automatically disposed when leaving scope
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export class SecureBuffer {
|
|
25
|
+
_disposed = false;
|
|
26
|
+
_id;
|
|
27
|
+
_idProvider;
|
|
28
|
+
_length;
|
|
29
|
+
_obfuscatedValue;
|
|
30
|
+
_key;
|
|
31
|
+
_obfuscatedChecksum;
|
|
32
|
+
_disposedAt;
|
|
33
|
+
constructor(data, idProvider = DEFAULT_ID_PROVIDER) {
|
|
34
|
+
this._idProvider = idProvider;
|
|
35
|
+
this._id = this._idProvider.generate();
|
|
36
|
+
// don't bother encrypting an empty buffer
|
|
37
|
+
if (data === undefined || data.length === 0) {
|
|
38
|
+
this._length = 0;
|
|
39
|
+
this._obfuscatedValue = new Uint8Array(0);
|
|
40
|
+
this._key = new Uint8Array(0);
|
|
41
|
+
this._obfuscatedChecksum = new Uint8Array(0);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
this._length = data.length;
|
|
45
|
+
this._key = this._id;
|
|
46
|
+
this._obfuscatedValue = this.obfuscateData(data);
|
|
47
|
+
// Create a simple checksum without crypto for synchronous operation
|
|
48
|
+
this._obfuscatedChecksum = this.createSimpleObfuscatedChecksum(data);
|
|
49
|
+
}
|
|
50
|
+
dispose() {
|
|
51
|
+
const err = new DisposedError();
|
|
52
|
+
if (typeof Error.captureStackTrace === 'function') {
|
|
53
|
+
Error.captureStackTrace(err, this.dispose);
|
|
54
|
+
}
|
|
55
|
+
this._disposedAt = err.stack ?? 'stack unavailable';
|
|
56
|
+
this._obfuscatedValue.fill(0);
|
|
57
|
+
this._key.fill(0);
|
|
58
|
+
this._obfuscatedChecksum.fill(0);
|
|
59
|
+
this._disposed = true;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Symbol.dispose implementation for explicit resource management
|
|
63
|
+
* Allows using 'using' keyword (TC39 proposal)
|
|
64
|
+
*/
|
|
65
|
+
[Symbol.dispose]() {
|
|
66
|
+
this.dispose();
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Factory method for backward compatibility that uses Constants.idProvider
|
|
70
|
+
* @param data Optional data to secure
|
|
71
|
+
* @returns A new SecureBuffer instance using the global ID provider
|
|
72
|
+
*/
|
|
73
|
+
static create(data) {
|
|
74
|
+
const { Constants } = require('./constants');
|
|
75
|
+
return new SecureBuffer(data, Constants.idProvider);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Static factory method that creates a SecureBuffer for a symmetric key
|
|
79
|
+
* Useful for managing encryption keys securely
|
|
80
|
+
*/
|
|
81
|
+
static allocateKey(sizeBytes = 32) {
|
|
82
|
+
const keyData = new Uint8Array(sizeBytes);
|
|
83
|
+
// Will be filled by crypto.getRandomValues by caller
|
|
84
|
+
return new SecureBuffer(keyData);
|
|
85
|
+
}
|
|
86
|
+
assertNotDisposed() {
|
|
87
|
+
if (this._disposed) {
|
|
88
|
+
const e = new DisposedError();
|
|
89
|
+
try {
|
|
90
|
+
e.disposedAt = this._disposedAt;
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
// ignore if Error object is sealed/frozen
|
|
94
|
+
}
|
|
95
|
+
throw e;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
static fromString(data) {
|
|
99
|
+
return new SecureBuffer(new TextEncoder().encode(data));
|
|
100
|
+
}
|
|
101
|
+
get disposedAtStack() {
|
|
102
|
+
return this._disposedAt;
|
|
103
|
+
}
|
|
104
|
+
get id() {
|
|
105
|
+
this.assertNotDisposed();
|
|
106
|
+
return this._idProvider.serialize(this._id);
|
|
107
|
+
}
|
|
108
|
+
get idUint8Array() {
|
|
109
|
+
this.assertNotDisposed();
|
|
110
|
+
return this._id;
|
|
111
|
+
}
|
|
112
|
+
get originalLength() {
|
|
113
|
+
this.assertNotDisposed();
|
|
114
|
+
return this._length;
|
|
115
|
+
}
|
|
116
|
+
get value() {
|
|
117
|
+
this.assertNotDisposed();
|
|
118
|
+
if (this._length === 0) {
|
|
119
|
+
return new Uint8Array(0);
|
|
120
|
+
}
|
|
121
|
+
try {
|
|
122
|
+
const deobfuscatedResult = this.deobfuscateData(this._obfuscatedValue);
|
|
123
|
+
if (deobfuscatedResult.length !== this._length) {
|
|
124
|
+
throw new SecureStorageError(SecureStorageErrorType.DecryptedValueLengthMismatch);
|
|
125
|
+
}
|
|
126
|
+
if (!this.validateObfuscatedChecksum(deobfuscatedResult)) {
|
|
127
|
+
throw new SecureStorageError(SecureStorageErrorType.DecryptedValueChecksumMismatch);
|
|
128
|
+
}
|
|
129
|
+
return deobfuscatedResult;
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
// If it's already a SecureStorageError, re-throw it
|
|
133
|
+
if (error instanceof SecureStorageError) {
|
|
134
|
+
throw error;
|
|
135
|
+
}
|
|
136
|
+
// Convert any other error (including AES-GCM authentication errors) to SecureStorageError
|
|
137
|
+
throw new SecureStorageError(SecureStorageErrorType.DecryptedValueChecksumMismatch);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
get valueAsString() {
|
|
141
|
+
this.assertNotDisposed();
|
|
142
|
+
return new TextDecoder().decode(this.value);
|
|
143
|
+
}
|
|
144
|
+
get valueAsHexString() {
|
|
145
|
+
this.assertNotDisposed();
|
|
146
|
+
return uint8ArrayToHex(this.value);
|
|
147
|
+
}
|
|
148
|
+
get valueAsBase64String() {
|
|
149
|
+
this.assertNotDisposed();
|
|
150
|
+
return btoa(String.fromCharCode(...this.value));
|
|
151
|
+
}
|
|
152
|
+
get checksum() {
|
|
153
|
+
this.assertNotDisposed();
|
|
154
|
+
const deobfuscatedChecksum = new TextDecoder().decode(this.deobfuscateData(this._obfuscatedChecksum));
|
|
155
|
+
return deobfuscatedChecksum;
|
|
156
|
+
}
|
|
157
|
+
generateSimpleChecksum(data) {
|
|
158
|
+
const dataBytes = typeof data === 'string' ? new TextEncoder().encode(data) : data;
|
|
159
|
+
let hash = 0;
|
|
160
|
+
for (let i = 0; i < dataBytes.length; i++) {
|
|
161
|
+
hash = ((hash << 5) - hash + dataBytes[i]) & 0xffffffff;
|
|
162
|
+
}
|
|
163
|
+
return hash.toString(16);
|
|
164
|
+
}
|
|
165
|
+
createSimpleObfuscatedChecksum(data) {
|
|
166
|
+
const checksum = this.generateSimpleChecksum(data);
|
|
167
|
+
const result = this.obfuscateData(new TextEncoder().encode(checksum));
|
|
168
|
+
return result;
|
|
169
|
+
}
|
|
170
|
+
validateSimpleChecksum(data, checksum) {
|
|
171
|
+
const generatedChecksum = this.generateSimpleChecksum(data);
|
|
172
|
+
const a = new TextEncoder().encode(generatedChecksum);
|
|
173
|
+
const b = new TextEncoder().encode(checksum);
|
|
174
|
+
return this.timingSafeEqual(a, b);
|
|
175
|
+
}
|
|
176
|
+
timingSafeEqual(a, b) {
|
|
177
|
+
if (a.length !== b.length) {
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
let result = 0;
|
|
181
|
+
for (let i = 0; i < a.length; i++) {
|
|
182
|
+
result |= a[i] ^ b[i];
|
|
183
|
+
}
|
|
184
|
+
return result === 0;
|
|
185
|
+
}
|
|
186
|
+
validateObfuscatedChecksum(data) {
|
|
187
|
+
const deobfuscatedChecksum = new TextDecoder().decode(this.deobfuscateData(this._obfuscatedChecksum));
|
|
188
|
+
return this.validateSimpleChecksum(data, deobfuscatedChecksum);
|
|
189
|
+
}
|
|
190
|
+
obfuscateData(data) {
|
|
191
|
+
return XorService.xor(data, this._key);
|
|
192
|
+
}
|
|
193
|
+
deobfuscateData(data) {
|
|
194
|
+
return XorService.xor(data, this._key);
|
|
195
|
+
}
|
|
196
|
+
get length() {
|
|
197
|
+
this.assertNotDisposed();
|
|
198
|
+
return this._length;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=secure-buffer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secure-buffer.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-ecies-lib/src/secure-buffer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { IIdProvider } from './interfaces/id-provider';
|
|
2
|
+
/**
|
|
3
|
+
* A secure string buffer is a buffer whose intent is to prevent the raw password from being stored in memory.
|
|
4
|
+
*/
|
|
5
|
+
export declare class SecureString {
|
|
6
|
+
private _disposed;
|
|
7
|
+
private readonly _isNull;
|
|
8
|
+
private readonly _id;
|
|
9
|
+
private readonly _idProvider;
|
|
10
|
+
private readonly _length;
|
|
11
|
+
private readonly _obfuscatedValue;
|
|
12
|
+
private readonly _key;
|
|
13
|
+
private readonly _obfuscatedChecksum;
|
|
14
|
+
private _disposedAt?;
|
|
15
|
+
constructor(data?: string | Uint8Array | null, idProvider?: IIdProvider);
|
|
16
|
+
/**
|
|
17
|
+
* Factory method for backward compatibility that uses Constants.idProvider
|
|
18
|
+
* @param data Optional data to secure
|
|
19
|
+
* @returns A new SecureString instance using the global ID provider
|
|
20
|
+
*/
|
|
21
|
+
static create(data?: string | Uint8Array | null): SecureString;
|
|
22
|
+
private assertNotDisposed;
|
|
23
|
+
dispose(): void;
|
|
24
|
+
get disposedAtStack(): string | undefined;
|
|
25
|
+
get id(): string;
|
|
26
|
+
get idUint8Array(): Uint8Array;
|
|
27
|
+
get originalLength(): number;
|
|
28
|
+
get valueAsUint8Array(): Uint8Array;
|
|
29
|
+
get value(): string | null;
|
|
30
|
+
get notNullValue(): string;
|
|
31
|
+
get valueAsHexString(): string;
|
|
32
|
+
get valueAsBase64String(): string;
|
|
33
|
+
get hasValue(): boolean;
|
|
34
|
+
get checksum(): string;
|
|
35
|
+
get length(): number;
|
|
36
|
+
private generateChecksum;
|
|
37
|
+
private createSimpleChecksum;
|
|
38
|
+
private createSimpleObfuscatedChecksum;
|
|
39
|
+
private createObfuscatedChecksum;
|
|
40
|
+
private validateChecksum;
|
|
41
|
+
private timingSafeEqual;
|
|
42
|
+
private validateObfuscatedChecksum;
|
|
43
|
+
private obfuscateData;
|
|
44
|
+
private deobfuscateData;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=secure-string.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secure-string.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-ecies-lib/src/secure-string.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAU5D;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAa;IAC9C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAa;IACjD,OAAO,CAAC,WAAW,CAAC,CAAS;gBAE3B,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,EACjC,UAAU,GAAE,WAAiC;IA0B/C;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,GAAG,YAAY;IAK9D,OAAO,CAAC,iBAAiB;IAWlB,OAAO,IAAI,IAAI;IAWtB,IAAW,eAAe,IAAI,MAAM,GAAG,SAAS,CAE/C;IACD,IAAW,EAAE,IAAI,MAAM,CAGtB;IACD,IAAW,YAAY,IAAI,UAAU,CAGpC;IACD,IAAW,cAAc,IAAI,MAAM,CAGlC;IACD,IAAW,iBAAiB,IAAI,UAAU,CAsCzC;IACD,IAAW,KAAK,IAAI,MAAM,GAAG,IAAI,CAMhC;IACD,IAAW,YAAY,IAAI,MAAM,CAMhC;IACD,IAAW,gBAAgB,IAAI,MAAM,CAGpC;IACD,IAAW,mBAAmB,IAAI,MAAM,CAGvC;IACD,IAAW,QAAQ,IAAI,OAAO,CAG7B;IACD,IAAW,QAAQ,IAAI,MAAM,CAM5B;IACD,IAAW,MAAM,IAAI,MAAM,CAG1B;YACa,gBAAgB;IAS9B,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,8BAA8B;YASxB,wBAAwB;YAOxB,gBAAgB;IAQ9B,OAAO,CAAC,eAAe;YAUT,0BAA0B;IAQxC,OAAO,CAAC,aAAa;IAGrB,OAAO,CAAC,eAAe;CAGxB"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/// <reference path="../../../types/global.d.ts" />
|
|
2
|
+
import { SecureStorageErrorType } from './enumerations/secure-storage-error-type';
|
|
3
|
+
import { DisposedError } from './errors/disposed';
|
|
4
|
+
import { SecureStorageError } from './errors/secure-storage';
|
|
5
|
+
import { ObjectIdProvider } from './lib/id-providers/objectid-provider';
|
|
6
|
+
import { XorService } from './services/xor';
|
|
7
|
+
import { uint8ArrayToHex } from './utils';
|
|
8
|
+
/**
|
|
9
|
+
* Default ID provider (singleton, no circular dependency)
|
|
10
|
+
*/
|
|
11
|
+
const DEFAULT_ID_PROVIDER = new ObjectIdProvider();
|
|
12
|
+
/**
|
|
13
|
+
* A secure string buffer is a buffer whose intent is to prevent the raw password from being stored in memory.
|
|
14
|
+
*/
|
|
15
|
+
export class SecureString {
|
|
16
|
+
_disposed = false;
|
|
17
|
+
_isNull;
|
|
18
|
+
_id;
|
|
19
|
+
_idProvider;
|
|
20
|
+
_length;
|
|
21
|
+
_obfuscatedValue;
|
|
22
|
+
_key;
|
|
23
|
+
_obfuscatedChecksum;
|
|
24
|
+
_disposedAt;
|
|
25
|
+
constructor(data, idProvider = DEFAULT_ID_PROVIDER) {
|
|
26
|
+
this._idProvider = idProvider;
|
|
27
|
+
this._id = this._idProvider.generate();
|
|
28
|
+
// only treat null/undefined as null, empty strings/arrays are valid empty data
|
|
29
|
+
if (data === null || data === undefined) {
|
|
30
|
+
this._isNull = true;
|
|
31
|
+
this._length = 0;
|
|
32
|
+
this._obfuscatedValue = new Uint8Array(0);
|
|
33
|
+
this._key = new Uint8Array(0);
|
|
34
|
+
this._obfuscatedChecksum = new Uint8Array(0);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
this._isNull = false;
|
|
38
|
+
this._key = this._id;
|
|
39
|
+
const dataAsUint8Array = typeof data === 'string'
|
|
40
|
+
? new TextEncoder().encode(data)
|
|
41
|
+
: data;
|
|
42
|
+
// Store the byte length, not the character length
|
|
43
|
+
this._length = dataAsUint8Array.length;
|
|
44
|
+
this._obfuscatedValue = this.obfuscateData(dataAsUint8Array);
|
|
45
|
+
this._obfuscatedChecksum =
|
|
46
|
+
this.createSimpleObfuscatedChecksum(dataAsUint8Array);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Factory method for backward compatibility that uses Constants.idProvider
|
|
50
|
+
* @param data Optional data to secure
|
|
51
|
+
* @returns A new SecureString instance using the global ID provider
|
|
52
|
+
*/
|
|
53
|
+
static create(data) {
|
|
54
|
+
const { Constants } = require('./constants');
|
|
55
|
+
return new SecureString(data, Constants.idProvider);
|
|
56
|
+
}
|
|
57
|
+
assertNotDisposed() {
|
|
58
|
+
if (this._disposed) {
|
|
59
|
+
const e = new DisposedError();
|
|
60
|
+
try {
|
|
61
|
+
e.disposedAt = this._disposedAt;
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// ignore if Error object is sealed/frozen
|
|
65
|
+
}
|
|
66
|
+
throw e;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
dispose() {
|
|
70
|
+
const err = new DisposedError();
|
|
71
|
+
if (typeof Error.captureStackTrace === 'function') {
|
|
72
|
+
Error.captureStackTrace(err, this.dispose);
|
|
73
|
+
}
|
|
74
|
+
this._disposedAt = err.stack ?? 'stack unavailable';
|
|
75
|
+
this._obfuscatedValue.fill(0);
|
|
76
|
+
this._key.fill(0);
|
|
77
|
+
this._obfuscatedChecksum.fill(0);
|
|
78
|
+
this._disposed = true;
|
|
79
|
+
}
|
|
80
|
+
get disposedAtStack() {
|
|
81
|
+
return this._disposedAt;
|
|
82
|
+
}
|
|
83
|
+
get id() {
|
|
84
|
+
this.assertNotDisposed();
|
|
85
|
+
return this._idProvider.serialize(this._id);
|
|
86
|
+
}
|
|
87
|
+
get idUint8Array() {
|
|
88
|
+
this.assertNotDisposed();
|
|
89
|
+
return this._id;
|
|
90
|
+
}
|
|
91
|
+
get originalLength() {
|
|
92
|
+
this.assertNotDisposed();
|
|
93
|
+
return this._length;
|
|
94
|
+
}
|
|
95
|
+
get valueAsUint8Array() {
|
|
96
|
+
this.assertNotDisposed();
|
|
97
|
+
if (this._isNull) {
|
|
98
|
+
return new Uint8Array(0);
|
|
99
|
+
}
|
|
100
|
+
try {
|
|
101
|
+
const deobfuscatedResult = this.deobfuscateData(this._obfuscatedValue);
|
|
102
|
+
if (deobfuscatedResult.length !== this._length) {
|
|
103
|
+
throw new SecureStorageError(SecureStorageErrorType.DecryptedValueLengthMismatch);
|
|
104
|
+
}
|
|
105
|
+
// Validate checksum
|
|
106
|
+
const expectedChecksum = this.createSimpleChecksum(deobfuscatedResult);
|
|
107
|
+
const storedChecksum = new TextDecoder().decode(this.deobfuscateData(this._obfuscatedChecksum));
|
|
108
|
+
const expectedBytes = new TextEncoder().encode(expectedChecksum);
|
|
109
|
+
const storedBytes = new TextEncoder().encode(storedChecksum);
|
|
110
|
+
if (!this.timingSafeEqual(expectedBytes, storedBytes)) {
|
|
111
|
+
throw new SecureStorageError(SecureStorageErrorType.DecryptedValueChecksumMismatch);
|
|
112
|
+
}
|
|
113
|
+
return deobfuscatedResult;
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
// If it's already a SecureStorageError, re-throw it
|
|
117
|
+
if (error instanceof SecureStorageError) {
|
|
118
|
+
throw error;
|
|
119
|
+
}
|
|
120
|
+
// Convert any other error to SecureStorageError
|
|
121
|
+
throw new SecureStorageError(SecureStorageErrorType.DecryptedValueChecksumMismatch);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
get value() {
|
|
125
|
+
this.assertNotDisposed();
|
|
126
|
+
if (this._isNull) {
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
return new TextDecoder().decode(this.valueAsUint8Array);
|
|
130
|
+
}
|
|
131
|
+
get notNullValue() {
|
|
132
|
+
this.assertNotDisposed();
|
|
133
|
+
if (this._isNull) {
|
|
134
|
+
throw new SecureStorageError(SecureStorageErrorType.ValueIsNull);
|
|
135
|
+
}
|
|
136
|
+
return new TextDecoder().decode(this.valueAsUint8Array);
|
|
137
|
+
}
|
|
138
|
+
get valueAsHexString() {
|
|
139
|
+
this.assertNotDisposed();
|
|
140
|
+
return uint8ArrayToHex(this.valueAsUint8Array);
|
|
141
|
+
}
|
|
142
|
+
get valueAsBase64String() {
|
|
143
|
+
this.assertNotDisposed();
|
|
144
|
+
return btoa(String.fromCharCode(...this.valueAsUint8Array));
|
|
145
|
+
}
|
|
146
|
+
get hasValue() {
|
|
147
|
+
this.assertNotDisposed();
|
|
148
|
+
return !this._isNull && this._length > 0;
|
|
149
|
+
}
|
|
150
|
+
get checksum() {
|
|
151
|
+
this.assertNotDisposed();
|
|
152
|
+
const deobfuscatedChecksum = new TextDecoder().decode(this.deobfuscateData(this._obfuscatedChecksum));
|
|
153
|
+
return deobfuscatedChecksum;
|
|
154
|
+
}
|
|
155
|
+
get length() {
|
|
156
|
+
this.assertNotDisposed();
|
|
157
|
+
return this._length;
|
|
158
|
+
}
|
|
159
|
+
async generateChecksum(data) {
|
|
160
|
+
const dataBytes = typeof data === 'string' ? new TextEncoder().encode(data) : data;
|
|
161
|
+
const hashArray = await crypto.subtle.digest('SHA-256', new Uint8Array(dataBytes));
|
|
162
|
+
return uint8ArrayToHex(new Uint8Array(hashArray));
|
|
163
|
+
}
|
|
164
|
+
createSimpleChecksum(data) {
|
|
165
|
+
let hash = 0;
|
|
166
|
+
for (let i = 0; i < data.length; i++) {
|
|
167
|
+
hash = ((hash << 5) - hash + data[i]) & 0xffffffff;
|
|
168
|
+
}
|
|
169
|
+
return hash.toString(16);
|
|
170
|
+
}
|
|
171
|
+
createSimpleObfuscatedChecksum(data) {
|
|
172
|
+
const dataBytes = typeof data === 'string' ? new TextEncoder().encode(data) : data;
|
|
173
|
+
const checksum = this.createSimpleChecksum(dataBytes);
|
|
174
|
+
return this.obfuscateData(new TextEncoder().encode(checksum));
|
|
175
|
+
}
|
|
176
|
+
async createObfuscatedChecksum(data) {
|
|
177
|
+
const checksum = await this.generateChecksum(data);
|
|
178
|
+
const result = this.obfuscateData(new TextEncoder().encode(checksum));
|
|
179
|
+
return result;
|
|
180
|
+
}
|
|
181
|
+
async validateChecksum(data, checksum) {
|
|
182
|
+
const generatedChecksum = await this.generateChecksum(data);
|
|
183
|
+
return generatedChecksum === checksum;
|
|
184
|
+
}
|
|
185
|
+
timingSafeEqual(a, b) {
|
|
186
|
+
if (a.length !== b.length) {
|
|
187
|
+
return false;
|
|
188
|
+
}
|
|
189
|
+
let result = 0;
|
|
190
|
+
for (let i = 0; i < a.length; i++) {
|
|
191
|
+
result |= a[i] ^ b[i];
|
|
192
|
+
}
|
|
193
|
+
return result === 0;
|
|
194
|
+
}
|
|
195
|
+
async validateObfuscatedChecksum(data) {
|
|
196
|
+
const deobfuscatedChecksum = new TextDecoder().decode(this.deobfuscateData(this._obfuscatedChecksum));
|
|
197
|
+
return this.validateChecksum(data, deobfuscatedChecksum);
|
|
198
|
+
}
|
|
199
|
+
obfuscateData(data) {
|
|
200
|
+
return XorService.xor(data, this._key);
|
|
201
|
+
}
|
|
202
|
+
deobfuscateData(data) {
|
|
203
|
+
return XorService.xor(data, this._key);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=secure-string.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secure-string.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-ecies-lib/src/secure-string.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { IECIESConstants } from '../interfaces/ecies-consts';
|
|
2
|
+
export declare abstract class AESGCMService {
|
|
3
|
+
static readonly ALGORITHM_NAME = "AES-GCM";
|
|
4
|
+
/**
|
|
5
|
+
* Encrypt data using AES-GCM
|
|
6
|
+
* @param data Data to encrypt
|
|
7
|
+
* @param key Key to use for encryption (must be 16, 24 or 32 bytes for AES)
|
|
8
|
+
* @returns Encrypted data
|
|
9
|
+
*/
|
|
10
|
+
static encrypt(data: Uint8Array, key: Uint8Array, authTag?: boolean, eciesParams?: IECIESConstants, aad?: Uint8Array): Promise<{
|
|
11
|
+
encrypted: Uint8Array;
|
|
12
|
+
iv: Uint8Array;
|
|
13
|
+
tag?: Uint8Array;
|
|
14
|
+
}>;
|
|
15
|
+
/**
|
|
16
|
+
* Combine encrypted data and auth tag into a single Uint8Array
|
|
17
|
+
* @param encryptedData The encrypted data
|
|
18
|
+
* @param authTag The authentication tag
|
|
19
|
+
* @returns The combined Uint8Array
|
|
20
|
+
*/
|
|
21
|
+
static combineEncryptedDataAndTag(encryptedData: Uint8Array, authTag: Uint8Array): Uint8Array;
|
|
22
|
+
/**
|
|
23
|
+
* Combine IV and encrypted data (with optional auth tag) into a single Uint8Array
|
|
24
|
+
* @param iv The initialization vector
|
|
25
|
+
* @param encryptedDataWithTag The encrypted data with auth tag already appended (if applicable)
|
|
26
|
+
* @returns The combined Uint8Array
|
|
27
|
+
*/
|
|
28
|
+
static combineIvAndEncryptedData(iv: Uint8Array, encryptedDataWithTag: Uint8Array): Uint8Array;
|
|
29
|
+
/**
|
|
30
|
+
* Combine IV, encrypted data and auth tag into a single Uint8Array
|
|
31
|
+
* @param iv The initialization vector
|
|
32
|
+
* @param encryptedData The encrypted data
|
|
33
|
+
* @param authTag The authentication tag
|
|
34
|
+
* @returns The combined Uint8Array
|
|
35
|
+
*/
|
|
36
|
+
static combineIvTagAndEncryptedData(iv: Uint8Array, encryptedData: Uint8Array, authTag: Uint8Array): Uint8Array;
|
|
37
|
+
/**
|
|
38
|
+
* Split combined encrypted data back into its components
|
|
39
|
+
* @param combinedData The combined data containing IV, encrypted data, and optionally auth tag
|
|
40
|
+
* @param hasAuthTag Whether the combined data includes an authentication tag
|
|
41
|
+
* @returns Object containing the split components
|
|
42
|
+
*/
|
|
43
|
+
static splitEncryptedData(combinedData: Uint8Array, hasAuthTag?: boolean, eciesParams?: IECIESConstants): {
|
|
44
|
+
iv: Uint8Array;
|
|
45
|
+
encryptedDataWithTag: Uint8Array;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Decrypt data using AES-GCM
|
|
49
|
+
* @param iv The initialization vector
|
|
50
|
+
* @param encryptedData Data to decrypt (with auth tag appended if authTag is true)
|
|
51
|
+
* @param key Key to use for decryption (must be 16, 24 or 32 bytes for AES)
|
|
52
|
+
* @param authTag Whether the encrypted data includes an authentication tag
|
|
53
|
+
* @returns Decrypted data
|
|
54
|
+
*/
|
|
55
|
+
static decrypt(iv: Uint8Array, encryptedData: Uint8Array, key: Uint8Array, authTag?: boolean, eciesParams?: IECIESConstants, aad?: Uint8Array): Promise<Uint8Array>;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=aes-gcm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aes-gcm.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/services/aes-gcm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAK7D,8BAAsB,aAAa;IACjC,gBAAuB,cAAc,aAAa;IAClD;;;;;OAKG;WACiB,OAAO,CACzB,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,UAAU,EACf,OAAO,GAAE,OAAe,EACxB,WAAW,GAAE,eAAiC,EAC9C,GAAG,CAAC,EAAE,UAAU,GACf,OAAO,CAAC;QAAE,SAAS,EAAE,UAAU,CAAC;QAAC,EAAE,EAAE,UAAU,CAAC;QAAC,GAAG,CAAC,EAAE,UAAU,CAAA;KAAE,CAAC;IAiDvE;;;;;OAKG;WACW,0BAA0B,CACtC,aAAa,EAAE,UAAU,EACzB,OAAO,EAAE,UAAU,GAClB,UAAU;IAOb;;;;;OAKG;WACW,yBAAyB,CACrC,EAAE,EAAE,UAAU,EACd,oBAAoB,EAAE,UAAU,GAC/B,UAAU;IAOb;;;;;;OAMG;WACW,4BAA4B,CACxC,EAAE,EAAE,UAAU,EACd,aAAa,EAAE,UAAU,EACzB,OAAO,EAAE,UAAU,GAClB,UAAU;IAQb;;;;;OAKG;WACW,kBAAkB,CAC9B,YAAY,EAAE,UAAU,EACxB,UAAU,GAAE,OAAc,EAC1B,WAAW,GAAE,eAAiC,GAC7C;QAAE,EAAE,EAAE,UAAU,CAAC;QAAC,oBAAoB,EAAE,UAAU,CAAA;KAAE;IAkBvD;;;;;;;OAOG;WACiB,OAAO,CACzB,EAAE,EAAE,UAAU,EACd,aAAa,EAAE,UAAU,EACzB,GAAG,EAAE,UAAU,EACf,OAAO,GAAE,OAAe,EACxB,WAAW,GAAE,eAAiC,EAC9C,GAAG,CAAC,EAAE,UAAU,GACf,OAAO,CAAC,UAAU,CAAC;CAyDvB"}
|