@digitaldefiance/ecies-lib 4.4.13 → 4.4.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +5 -4
- package/src/builders/ecies-builder.d.ts +18 -0
- package/src/builders/ecies-builder.d.ts.map +1 -0
- package/src/builders/ecies-builder.js +34 -0
- package/src/builders/ecies-builder.js.map +1 -0
- package/src/builders/{index.ts → index.d.ts} +1 -1
- package/src/builders/index.d.ts.map +1 -0
- package/src/builders/index.js +9 -0
- package/src/builders/index.js.map +1 -0
- package/src/builders/member-builder.d.ts +51 -0
- package/src/builders/member-builder.d.ts.map +1 -0
- package/src/builders/member-builder.js +101 -0
- package/src/builders/member-builder.js.map +1 -0
- package/src/constants.d.ts +60 -0
- package/src/constants.d.ts.map +1 -0
- package/src/constants.js +457 -0
- package/src/constants.js.map +1 -0
- package/src/core/errors/crypto-error.d.ts +34 -0
- package/src/core/errors/crypto-error.d.ts.map +1 -0
- package/src/core/errors/crypto-error.js +60 -0
- package/src/core/errors/crypto-error.js.map +1 -0
- package/src/core/{index.ts → index.d.ts} +1 -1
- package/src/core/index.d.ts.map +1 -0
- package/src/core/index.js +9 -0
- package/src/core/index.js.map +1 -0
- package/src/core/types/result.d.ts +16 -0
- package/src/core/types/result.d.ts.map +1 -0
- package/src/core/types/result.js +16 -0
- package/src/core/types/result.js.map +1 -0
- package/src/email-string.d.ts +42 -0
- package/src/email-string.d.ts.map +1 -0
- package/src/email-string.js +72 -0
- package/src/email-string.js.map +1 -0
- package/src/enumerations/disposed-error-type.d.ts +12 -0
- package/src/enumerations/disposed-error-type.d.ts.map +1 -0
- package/src/enumerations/disposed-error-type.js +16 -0
- package/src/enumerations/disposed-error-type.js.map +1 -0
- package/src/enumerations/ecies-cipher-suite.d.ts +4 -0
- package/src/enumerations/ecies-cipher-suite.d.ts.map +1 -0
- package/src/enumerations/ecies-cipher-suite.js +9 -0
- package/src/enumerations/ecies-cipher-suite.js.map +1 -0
- package/src/enumerations/ecies-encryption-type.d.ts +11 -0
- package/src/enumerations/ecies-encryption-type.d.ts.map +1 -0
- package/src/enumerations/ecies-encryption-type.js +30 -0
- package/src/enumerations/ecies-encryption-type.js.map +1 -0
- package/src/enumerations/ecies-error-type.d.ts +44 -0
- package/src/enumerations/ecies-error-type.d.ts.map +1 -0
- package/src/enumerations/ecies-error-type.js +48 -0
- package/src/enumerations/ecies-error-type.js.map +1 -0
- package/src/enumerations/ecies-string-key.d.ts +192 -0
- package/src/enumerations/ecies-string-key.d.ts.map +1 -0
- package/src/enumerations/ecies-string-key.js +202 -0
- package/src/enumerations/ecies-string-key.js.map +1 -0
- package/src/enumerations/ecies-version.d.ts +4 -0
- package/src/enumerations/ecies-version.d.ts.map +1 -0
- package/src/enumerations/ecies-version.js +8 -0
- package/src/enumerations/ecies-version.js.map +1 -0
- package/src/enumerations/guid-brand-type.d.ts +27 -0
- package/src/enumerations/guid-brand-type.d.ts.map +1 -0
- package/src/enumerations/guid-brand-type.js +31 -0
- package/src/enumerations/guid-brand-type.js.map +1 -0
- package/src/enumerations/guid-error-type.d.ts +7 -0
- package/src/enumerations/guid-error-type.d.ts.map +1 -0
- package/src/enumerations/guid-error-type.js +11 -0
- package/src/enumerations/guid-error-type.js.map +1 -0
- package/src/enumerations/id-provider-error-type.d.ts +43 -0
- package/src/enumerations/id-provider-error-type.d.ts.map +1 -0
- package/src/enumerations/id-provider-error-type.js +47 -0
- package/src/enumerations/id-provider-error-type.js.map +1 -0
- package/src/enumerations/{index.ts → index.d.ts} +1 -0
- package/src/enumerations/index.d.ts.map +1 -0
- package/src/enumerations/index.js +21 -0
- package/src/enumerations/index.js.map +1 -0
- package/src/enumerations/invalid-email-type.d.ts +6 -0
- package/src/enumerations/invalid-email-type.d.ts.map +1 -0
- package/src/enumerations/invalid-email-type.js +10 -0
- package/src/enumerations/invalid-email-type.js.map +1 -0
- package/src/enumerations/length-encoding-type.d.ts +7 -0
- package/src/enumerations/length-encoding-type.d.ts.map +1 -0
- package/src/enumerations/length-encoding-type.js +11 -0
- package/src/enumerations/length-encoding-type.js.map +1 -0
- package/src/enumerations/length-error-type.d.ts +6 -0
- package/src/enumerations/length-error-type.d.ts.map +1 -0
- package/src/enumerations/length-error-type.js +10 -0
- package/src/enumerations/length-error-type.js.map +1 -0
- package/src/enumerations/member-error-type.d.ts +87 -0
- package/src/enumerations/member-error-type.d.ts.map +1 -0
- package/src/enumerations/member-error-type.js +91 -0
- package/src/enumerations/member-error-type.js.map +1 -0
- package/src/enumerations/{member-type.ts → member-type.d.ts} +6 -7
- package/src/enumerations/member-type.d.ts.map +1 -0
- package/src/enumerations/member-type.js +19 -0
- package/src/enumerations/member-type.js.map +1 -0
- package/src/enumerations/password-login-error-type.d.ts +5 -0
- package/src/enumerations/password-login-error-type.d.ts.map +1 -0
- package/src/enumerations/password-login-error-type.js +9 -0
- package/src/enumerations/password-login-error-type.js.map +1 -0
- package/src/enumerations/pbkdf2-error-type.d.ts +6 -0
- package/src/enumerations/pbkdf2-error-type.d.ts.map +1 -0
- package/src/enumerations/pbkdf2-error-type.js +10 -0
- package/src/enumerations/pbkdf2-error-type.js.map +1 -0
- package/src/enumerations/pbkdf2-profile.d.ts +6 -0
- package/src/enumerations/pbkdf2-profile.d.ts.map +1 -0
- package/src/enumerations/pbkdf2-profile.js +10 -0
- package/src/enumerations/pbkdf2-profile.js.map +1 -0
- package/src/enumerations/secure-storage-error-type.d.ts +6 -0
- package/src/enumerations/secure-storage-error-type.d.ts.map +1 -0
- package/src/enumerations/secure-storage-error-type.js +10 -0
- package/src/enumerations/secure-storage-error-type.js.map +1 -0
- package/src/errors/disposed.d.ts +22 -0
- package/src/errors/disposed.d.ts.map +1 -0
- package/src/errors/disposed.js +32 -0
- package/src/errors/disposed.js.map +1 -0
- package/src/errors/ecies.d.ts +52 -0
- package/src/errors/ecies.d.ts.map +1 -0
- package/src/errors/ecies.js +82 -0
- package/src/errors/ecies.js.map +1 -0
- package/src/errors/guid.d.ts +49 -0
- package/src/errors/guid.d.ts.map +1 -0
- package/src/errors/guid.js +100 -0
- package/src/errors/guid.js.map +1 -0
- package/src/errors/id-provider.d.ts +23 -0
- package/src/errors/id-provider.d.ts.map +1 -0
- package/src/errors/id-provider.js +33 -0
- package/src/errors/id-provider.js.map +1 -0
- package/src/errors/{index.ts → index.d.ts} +1 -0
- package/src/errors/index.d.ts.map +1 -0
- package/src/errors/index.js +13 -0
- package/src/errors/index.js.map +1 -0
- package/src/errors/invalid-email.d.ts +8 -0
- package/src/errors/invalid-email.d.ts.map +1 -0
- package/src/errors/invalid-email.js +19 -0
- package/src/errors/invalid-email.js.map +1 -0
- package/src/errors/length.d.ts +7 -0
- package/src/errors/length.d.ts.map +1 -0
- package/src/errors/length.js +15 -0
- package/src/errors/length.js.map +1 -0
- package/src/errors/member.d.ts +7 -0
- package/src/errors/member.d.ts.map +1 -0
- package/src/errors/member.js +15 -0
- package/src/errors/member.js.map +1 -0
- package/src/errors/pbkdf2.d.ts +7 -0
- package/src/errors/pbkdf2.d.ts.map +1 -0
- package/src/errors/pbkdf2.js +15 -0
- package/src/errors/pbkdf2.js.map +1 -0
- package/src/errors/secure-storage.d.ts +7 -0
- package/src/errors/secure-storage.d.ts.map +1 -0
- package/src/errors/secure-storage.js +16 -0
- package/src/errors/secure-storage.js.map +1 -0
- package/src/errors/simple-ecies.d.ts +6 -0
- package/src/errors/simple-ecies.d.ts.map +1 -0
- package/src/errors/simple-ecies.js +16 -0
- package/src/errors/simple-ecies.js.map +1 -0
- package/src/errors/simple-test-error.d.ts +4 -0
- package/src/errors/simple-test-error.d.ts.map +1 -0
- package/src/errors/simple-test-error.js +11 -0
- package/src/errors/simple-test-error.js.map +1 -0
- package/src/i18n-setup.d.ts +32 -0
- package/src/i18n-setup.d.ts.map +1 -0
- package/src/i18n-setup.js +109 -0
- package/src/i18n-setup.js.map +1 -0
- package/src/{index.ts → index.d.ts} +12 -72
- package/src/index.d.ts.map +1 -0
- package/src/index.js +146 -0
- package/src/index.js.map +1 -0
- package/src/interfaces/checksum-config.d.ts +5 -0
- package/src/interfaces/checksum-config.d.ts.map +1 -0
- package/src/interfaces/checksum-config.js +3 -0
- package/src/interfaces/checksum-config.js.map +1 -0
- package/src/interfaces/checksum-consts.d.ts +11 -0
- package/src/interfaces/checksum-consts.d.ts.map +1 -0
- package/src/interfaces/checksum-consts.js +3 -0
- package/src/interfaces/checksum-consts.js.map +1 -0
- package/src/interfaces/configuration-provenance.d.ts +43 -0
- package/src/interfaces/configuration-provenance.d.ts.map +1 -0
- package/src/interfaces/configuration-provenance.js +8 -0
- package/src/interfaces/configuration-provenance.js.map +1 -0
- package/src/interfaces/constants.d.ts +70 -0
- package/src/interfaces/constants.d.ts.map +1 -0
- package/src/interfaces/constants.js +3 -0
- package/src/interfaces/constants.js.map +1 -0
- package/src/interfaces/ecies-config.d.ts +9 -0
- package/src/interfaces/ecies-config.d.ts.map +1 -0
- package/src/interfaces/ecies-config.js +3 -0
- package/src/interfaces/ecies-config.js.map +1 -0
- package/src/interfaces/ecies-consts.d.ts +61 -0
- package/src/interfaces/ecies-consts.d.ts.map +1 -0
- package/src/interfaces/ecies-consts.js +3 -0
- package/src/interfaces/ecies-consts.js.map +1 -0
- package/src/interfaces/ecies-file-service.d.ts +7 -0
- package/src/interfaces/ecies-file-service.d.ts.map +1 -0
- package/src/interfaces/ecies-file-service.js +3 -0
- package/src/interfaces/ecies-file-service.js.map +1 -0
- package/src/interfaces/encrypted-chunk.d.ts +55 -0
- package/src/interfaces/encrypted-chunk.d.ts.map +1 -0
- package/src/interfaces/encrypted-chunk.js +15 -0
- package/src/interfaces/encrypted-chunk.js.map +1 -0
- package/src/interfaces/encryption-state.d.ts +18 -0
- package/src/interfaces/encryption-state.d.ts.map +1 -0
- package/src/interfaces/encryption-state.js +5 -0
- package/src/interfaces/encryption-state.js.map +1 -0
- package/src/interfaces/frontend-member-operational.d.ts +51 -0
- package/src/interfaces/frontend-member-operational.d.ts.map +1 -0
- package/src/interfaces/frontend-member-operational.js +3 -0
- package/src/interfaces/frontend-member-operational.js.map +1 -0
- package/src/interfaces/guid.d.ts +78 -0
- package/src/interfaces/guid.d.ts.map +1 -0
- package/src/interfaces/guid.js +3 -0
- package/src/interfaces/guid.js.map +1 -0
- package/src/interfaces/id-provider.d.ts +107 -0
- package/src/interfaces/id-provider.d.ts.map +1 -0
- package/src/interfaces/id-provider.js +56 -0
- package/src/interfaces/id-provider.js.map +1 -0
- package/src/interfaces/{index.ts → index.d.ts} +1 -0
- package/src/interfaces/index.d.ts.map +1 -0
- package/src/interfaces/index.js +16 -0
- package/src/interfaces/index.js.map +1 -0
- package/src/interfaces/invariant.d.ts +46 -0
- package/src/interfaces/invariant.d.ts.map +1 -0
- package/src/interfaces/invariant.js +22 -0
- package/src/interfaces/invariant.js.map +1 -0
- package/src/interfaces/library-error.d.ts +23 -0
- package/src/interfaces/library-error.d.ts.map +1 -0
- package/src/interfaces/library-error.js +3 -0
- package/src/interfaces/library-error.js.map +1 -0
- package/src/interfaces/{member-storage.ts → member-storage.d.ts} +10 -11
- package/src/interfaces/member-storage.d.ts.map +1 -0
- package/src/interfaces/member-storage.js +3 -0
- package/src/interfaces/member-storage.js.map +1 -0
- package/src/interfaces/{member-with-mnemonic.ts → member-with-mnemonic.d.ts} +3 -3
- package/src/interfaces/member-with-mnemonic.d.ts.map +1 -0
- package/src/interfaces/member-with-mnemonic.js +3 -0
- package/src/interfaces/member-with-mnemonic.js.map +1 -0
- package/src/interfaces/member.d.ts +55 -0
- package/src/interfaces/member.d.ts.map +1 -0
- package/src/interfaces/member.js +3 -0
- package/src/interfaces/member.js.map +1 -0
- package/src/interfaces/multi-recipient-chunk.d.ts +54 -0
- package/src/interfaces/multi-recipient-chunk.d.ts.map +1 -0
- package/src/interfaces/multi-recipient-chunk.js +16 -0
- package/src/interfaces/multi-recipient-chunk.js.map +1 -0
- package/src/interfaces/pbkdf2-config.d.ts +7 -0
- package/src/interfaces/pbkdf2-config.d.ts.map +1 -0
- package/src/interfaces/pbkdf2-config.js +3 -0
- package/src/interfaces/pbkdf2-config.js.map +1 -0
- package/src/interfaces/pbkdf2-consts.d.ts +9 -0
- package/src/interfaces/pbkdf2-consts.d.ts.map +1 -0
- package/src/interfaces/pbkdf2-consts.js +3 -0
- package/src/interfaces/pbkdf2-consts.js.map +1 -0
- package/src/interfaces/pbkdf2-result.d.ts +6 -0
- package/src/interfaces/pbkdf2-result.d.ts.map +1 -0
- package/src/interfaces/pbkdf2-result.js +3 -0
- package/src/interfaces/pbkdf2-result.js.map +1 -0
- package/src/interfaces/stream-config.d.ts +14 -0
- package/src/interfaces/stream-config.d.ts.map +1 -0
- package/src/interfaces/stream-config.js +11 -0
- package/src/interfaces/stream-config.js.map +1 -0
- package/src/interfaces/stream-header.d.ts +29 -0
- package/src/interfaces/stream-header.d.ts.map +1 -0
- package/src/interfaces/stream-header.js +12 -0
- package/src/interfaces/stream-header.js.map +1 -0
- package/src/interfaces/stream-progress.d.ts +33 -0
- package/src/interfaces/stream-progress.d.ts.map +1 -0
- package/src/interfaces/stream-progress.js +3 -0
- package/src/interfaces/stream-progress.js.map +1 -0
- package/src/lib/configuration-provenance-utils.d.ts +11 -0
- package/src/lib/configuration-provenance-utils.d.ts.map +1 -0
- package/src/lib/configuration-provenance-utils.js +30 -0
- package/src/lib/configuration-provenance-utils.js.map +1 -0
- package/src/lib/crypto-container.d.ts +25 -0
- package/src/lib/crypto-container.d.ts.map +1 -0
- package/src/lib/crypto-container.js +50 -0
- package/src/lib/crypto-container.js.map +1 -0
- package/src/lib/guid.d.ts +344 -0
- package/src/lib/guid.d.ts.map +1 -0
- package/src/lib/guid.js +919 -0
- package/src/lib/guid.js.map +1 -0
- package/src/lib/id-providers/custom-provider.d.ts +46 -0
- package/src/lib/id-providers/custom-provider.d.ts.map +1 -0
- package/src/lib/id-providers/custom-provider.js +89 -0
- package/src/lib/id-providers/custom-provider.js.map +1 -0
- package/src/lib/id-providers/guidv4-provider.d.ts +56 -0
- package/src/lib/id-providers/guidv4-provider.d.ts.map +1 -0
- package/src/lib/id-providers/guidv4-provider.js +126 -0
- package/src/lib/id-providers/guidv4-provider.js.map +1 -0
- package/src/lib/id-providers/{index.ts → index.d.ts} +5 -6
- package/src/lib/id-providers/index.d.ts.map +1 -0
- package/src/lib/id-providers/index.js +37 -0
- package/src/lib/id-providers/index.js.map +1 -0
- package/src/lib/id-providers/objectid-provider.d.ts +43 -0
- package/src/lib/id-providers/objectid-provider.d.ts.map +1 -0
- package/src/lib/id-providers/objectid-provider.js +108 -0
- package/src/lib/id-providers/objectid-provider.js.map +1 -0
- package/src/lib/id-providers/uuid-provider.d.ts +52 -0
- package/src/lib/id-providers/uuid-provider.d.ts.map +1 -0
- package/src/lib/id-providers/uuid-provider.js +114 -0
- package/src/lib/id-providers/uuid-provider.js.map +1 -0
- package/src/lib/{index.ts → index.d.ts} +2 -2
- package/src/lib/index.d.ts.map +1 -0
- package/src/lib/index.js +9 -0
- package/src/lib/index.js.map +1 -0
- package/src/lib/invariant-validator.d.ts +59 -0
- package/src/lib/invariant-validator.d.ts.map +1 -0
- package/src/lib/invariant-validator.js +101 -0
- package/src/lib/invariant-validator.js.map +1 -0
- package/src/lib/invariants/encryption-algorithm-consistency.d.ts +17 -0
- package/src/lib/invariants/encryption-algorithm-consistency.d.ts.map +1 -0
- package/src/lib/invariants/encryption-algorithm-consistency.js +53 -0
- package/src/lib/invariants/encryption-algorithm-consistency.js.map +1 -0
- package/src/lib/invariants/{index.ts → index.d.ts} +1 -0
- package/src/lib/invariants/index.d.ts.map +1 -0
- package/src/lib/invariants/index.js +7 -0
- package/src/lib/invariants/index.js.map +1 -0
- package/src/lib/invariants/pbkdf2-profiles-validity.d.ts +16 -0
- package/src/lib/invariants/pbkdf2-profiles-validity.d.ts.map +1 -0
- package/src/lib/invariants/pbkdf2-profiles-validity.js +62 -0
- package/src/lib/invariants/pbkdf2-profiles-validity.js.map +1 -0
- package/src/lib/invariants/recipient-id-consistency.d.ts +18 -0
- package/src/lib/invariants/recipient-id-consistency.d.ts.map +1 -0
- package/src/lib/invariants/recipient-id-consistency.js +35 -0
- package/src/lib/invariants/recipient-id-consistency.js.map +1 -0
- package/src/lib/multi-recipient-chunk-utils.d.ts +38 -0
- package/src/lib/multi-recipient-chunk-utils.d.ts.map +1 -0
- package/src/lib/multi-recipient-chunk-utils.js +45 -0
- package/src/lib/multi-recipient-chunk-utils.js.map +1 -0
- package/src/member.d.ts +92 -0
- package/src/member.d.ts.map +1 -0
- package/src/member.js +327 -0
- package/src/member.js.map +1 -0
- package/src/{pbkdf2-profiles.ts → pbkdf2-profiles.d.ts} +2 -2
- package/src/pbkdf2-profiles.d.ts.map +1 -0
- package/src/pbkdf2-profiles.js +3 -0
- package/src/pbkdf2-profiles.js.map +1 -0
- package/src/phone-number.d.ts +6 -0
- package/src/phone-number.d.ts.map +1 -0
- package/src/phone-number.js +22 -0
- package/src/phone-number.js.map +1 -0
- package/src/regexes.d.ts +7 -0
- package/src/regexes.d.ts.map +1 -0
- package/src/regexes.js +10 -0
- package/src/regexes.js.map +1 -0
- package/src/secure-buffer.d.ts +61 -0
- package/src/secure-buffer.d.ts.map +1 -0
- package/src/secure-buffer.js +205 -0
- package/src/secure-buffer.js.map +1 -0
- package/src/secure-string.d.ts +46 -0
- package/src/secure-string.d.ts.map +1 -0
- package/src/secure-string.js +210 -0
- package/src/secure-string.js.map +1 -0
- package/src/services/aes-gcm.d.ts +57 -0
- package/src/services/aes-gcm.d.ts.map +1 -0
- package/src/services/aes-gcm.js +146 -0
- package/src/services/aes-gcm.js.map +1 -0
- package/src/services/chunk-processor.d.ts +31 -0
- package/src/services/chunk-processor.d.ts.map +1 -0
- package/src/services/chunk-processor.js +149 -0
- package/src/services/chunk-processor.js.map +1 -0
- package/src/services/ecies/crypto-core.d.ts +72 -0
- package/src/services/ecies/crypto-core.d.ts.map +1 -0
- package/src/services/ecies/crypto-core.js +209 -0
- package/src/services/ecies/crypto-core.js.map +1 -0
- package/src/services/ecies/example.d.ts +25 -0
- package/src/services/ecies/example.d.ts.map +1 -0
- package/src/services/ecies/example.js +128 -0
- package/src/services/ecies/example.js.map +1 -0
- package/src/services/ecies/file.d.ts +18 -0
- package/src/services/ecies/file.d.ts.map +1 -0
- package/src/services/ecies/file.js +110 -0
- package/src/services/ecies/file.js.map +1 -0
- package/src/services/ecies/{index.ts → index.d.ts} +1 -3
- package/src/services/ecies/index.d.ts.map +1 -0
- package/src/services/ecies/index.js +44 -0
- package/src/services/ecies/index.js.map +1 -0
- package/src/services/ecies/integration.d.ts +59 -0
- package/src/services/ecies/integration.d.ts.map +1 -0
- package/src/services/ecies/integration.js +172 -0
- package/src/services/ecies/integration.js.map +1 -0
- package/src/services/ecies/interfaces.d.ts +54 -0
- package/src/services/ecies/interfaces.d.ts.map +1 -0
- package/src/services/ecies/interfaces.js +6 -0
- package/src/services/ecies/interfaces.js.map +1 -0
- package/src/services/ecies/manual-test.d.ts +29 -0
- package/src/services/ecies/manual-test.d.ts.map +1 -0
- package/src/services/ecies/manual-test.js +171 -0
- package/src/services/ecies/manual-test.js.map +1 -0
- package/src/services/ecies/multi-recipient.d.ts +56 -0
- package/src/services/ecies/multi-recipient.d.ts.map +1 -0
- package/src/services/ecies/multi-recipient.js +348 -0
- package/src/services/ecies/multi-recipient.js.map +1 -0
- package/src/services/ecies/service.d.ts +120 -0
- package/src/services/ecies/service.d.ts.map +1 -0
- package/src/services/ecies/service.js +214 -0
- package/src/services/ecies/service.js.map +1 -0
- package/src/services/ecies/signature.d.ts +27 -0
- package/src/services/ecies/signature.d.ts.map +1 -0
- package/src/services/ecies/signature.js +76 -0
- package/src/services/ecies/signature.js.map +1 -0
- package/src/services/ecies/single-recipient.d.ts +46 -0
- package/src/services/ecies/single-recipient.d.ts.map +1 -0
- package/src/services/ecies/single-recipient.js +326 -0
- package/src/services/ecies/single-recipient.js.map +1 -0
- package/src/services/encryption-stream.d.ts +71 -0
- package/src/services/encryption-stream.d.ts.map +1 -0
- package/src/services/encryption-stream.js +299 -0
- package/src/services/encryption-stream.js.map +1 -0
- package/src/services/{index.ts → index.d.ts} +1 -0
- package/src/services/index.d.ts.map +1 -0
- package/src/services/index.js +14 -0
- package/src/services/index.js.map +1 -0
- package/src/services/multi-recipient-processor.d.ts +35 -0
- package/src/services/multi-recipient-processor.d.ts.map +1 -0
- package/src/services/multi-recipient-processor.js +293 -0
- package/src/services/multi-recipient-processor.js.map +1 -0
- package/src/services/password-login.d.ts +47 -0
- package/src/services/password-login.d.ts.map +1 -0
- package/src/services/password-login.js +119 -0
- package/src/services/password-login.js.map +1 -0
- package/src/services/pbkdf2.d.ts +54 -0
- package/src/services/pbkdf2.d.ts.map +1 -0
- package/src/services/pbkdf2.js +112 -0
- package/src/services/pbkdf2.js.map +1 -0
- package/src/services/progress-tracker.d.ts +23 -0
- package/src/services/progress-tracker.d.ts.map +1 -0
- package/src/services/progress-tracker.js +107 -0
- package/src/services/progress-tracker.js.map +1 -0
- package/src/services/resumable-encryption.d.ts +19 -0
- package/src/services/resumable-encryption.d.ts.map +1 -0
- package/src/services/resumable-encryption.js +109 -0
- package/src/services/resumable-encryption.js.map +1 -0
- package/src/services/xor.d.ts +37 -0
- package/src/services/xor.d.ts.map +1 -0
- package/src/services/xor.js +67 -0
- package/src/services/xor.js.map +1 -0
- package/src/test-mocks/index.d.ts +2 -0
- package/src/test-mocks/index.d.ts.map +1 -0
- package/src/test-mocks/index.js +5 -0
- package/src/test-mocks/index.js.map +1 -0
- package/src/test-mocks/mock-frontend-member.d.ts +85 -0
- package/src/test-mocks/mock-frontend-member.d.ts.map +1 -0
- package/src/test-mocks/mock-frontend-member.js +194 -0
- package/src/test-mocks/mock-frontend-member.js.map +1 -0
- package/src/testing.d.ts +2 -0
- package/src/testing.d.ts.map +1 -0
- package/src/testing.js +6 -0
- package/src/testing.js.map +1 -0
- package/src/translations/de.d.ts +4 -0
- package/src/translations/de.d.ts.map +1 -0
- package/src/translations/de.js +207 -0
- package/src/translations/de.js.map +1 -0
- package/src/translations/en-US.d.ts +4 -0
- package/src/translations/en-US.d.ts.map +1 -0
- package/src/translations/en-US.js +207 -0
- package/src/translations/en-US.js.map +1 -0
- package/src/translations/es.d.ts +4 -0
- package/src/translations/es.d.ts.map +1 -0
- package/src/translations/es.js +207 -0
- package/src/translations/es.js.map +1 -0
- package/src/translations/fr.d.ts +4 -0
- package/src/translations/fr.d.ts.map +1 -0
- package/src/translations/fr.js +207 -0
- package/src/translations/fr.js.map +1 -0
- package/src/translations/ja.d.ts +4 -0
- package/src/translations/ja.d.ts.map +1 -0
- package/src/translations/ja.js +206 -0
- package/src/translations/ja.js.map +1 -0
- package/src/translations/uk.d.ts +4 -0
- package/src/translations/uk.d.ts.map +1 -0
- package/src/translations/uk.js +209 -0
- package/src/translations/uk.js.map +1 -0
- package/src/translations/zh-cn.d.ts +4 -0
- package/src/translations/zh-cn.d.ts.map +1 -0
- package/src/translations/zh-cn.js +206 -0
- package/src/translations/zh-cn.js.map +1 -0
- package/src/types/deep-partial.d.ts +4 -0
- package/src/types/deep-partial.d.ts.map +1 -0
- package/src/types/deep-partial.js +3 -0
- package/src/types/deep-partial.js.map +1 -0
- package/src/{types.ts → types.d.ts} +7 -15
- package/src/types.d.ts.map +1 -0
- package/src/types.js +3 -0
- package/src/types.js.map +1 -0
- package/src/utils/encryption-type-utils.d.ts +29 -0
- package/src/utils/encryption-type-utils.d.ts.map +1 -0
- package/src/utils/encryption-type-utils.js +67 -0
- package/src/utils/encryption-type-utils.js.map +1 -0
- package/src/utils.d.ts +68 -0
- package/src/utils.d.ts.map +1 -0
- package/src/utils.js +291 -0
- package/src/utils.js.map +1 -0
- package/LICENSE +0 -21
- package/src/builders/ecies-builder.ts +0 -39
- package/src/builders/member-builder.ts +0 -155
- package/src/constants.ts +0 -609
- package/src/core/errors/crypto-error.ts +0 -78
- package/src/core/types/result.ts +0 -19
- package/src/email-string.ts +0 -82
- package/src/enumerations/disposed-error-type.ts +0 -11
- package/src/enumerations/ecies-cipher-suite.ts +0 -4
- package/src/enumerations/ecies-encryption-type.ts +0 -41
- package/src/enumerations/ecies-error-type.ts +0 -43
- package/src/enumerations/ecies-string-key.ts +0 -205
- package/src/enumerations/ecies-version.ts +0 -3
- package/src/enumerations/guid-brand-type.ts +0 -26
- package/src/enumerations/guid-error-type.ts +0 -6
- package/src/enumerations/id-provider-error-type.ts +0 -50
- package/src/enumerations/invalid-email-type.ts +0 -5
- package/src/enumerations/length-encoding-type.ts +0 -6
- package/src/enumerations/length-error-type.ts +0 -5
- package/src/enumerations/member-error-type.ts +0 -106
- package/src/enumerations/password-login-error-type.ts +0 -4
- package/src/enumerations/pbkdf2-error-type.ts +0 -5
- package/src/enumerations/pbkdf2-profile.ts +0 -5
- package/src/enumerations/secure-storage-error-type.ts +0 -5
- package/src/errors/disposed.ts +0 -36
- package/src/errors/ecies.ts +0 -153
- package/src/errors/guid.ts +0 -130
- package/src/errors/id-provider.ts +0 -40
- package/src/errors/invalid-email.ts +0 -23
- package/src/errors/length.ts +0 -19
- package/src/errors/member.ts +0 -20
- package/src/errors/pbkdf2.ts +0 -20
- package/src/errors/secure-storage.ts +0 -17
- package/src/errors/simple-ecies.ts +0 -21
- package/src/errors/simple-test-error.ts +0 -6
- package/src/i18n-setup.ts +0 -130
- package/src/interfaces/checksum-config.ts +0 -4
- package/src/interfaces/checksum-consts.ts +0 -13
- package/src/interfaces/configuration-provenance.ts +0 -54
- package/src/interfaces/constants.ts +0 -75
- package/src/interfaces/ecies-config.ts +0 -8
- package/src/interfaces/ecies-consts.ts +0 -76
- package/src/interfaces/ecies-file-service.ts +0 -6
- package/src/interfaces/encrypted-chunk.ts +0 -64
- package/src/interfaces/encryption-state.ts +0 -19
- package/src/interfaces/frontend-member-operational.ts +0 -77
- package/src/interfaces/guid.ts +0 -86
- package/src/interfaces/id-provider.ts +0 -152
- package/src/interfaces/invariant.ts +0 -60
- package/src/interfaces/library-error.ts +0 -23
- package/src/interfaces/member.ts +0 -84
- package/src/interfaces/multi-recipient-chunk.ts +0 -61
- package/src/interfaces/pbkdf2-config.ts +0 -6
- package/src/interfaces/pbkdf2-consts.ts +0 -10
- package/src/interfaces/pbkdf2-result.ts +0 -5
- package/src/interfaces/stream-config.ts +0 -17
- package/src/interfaces/stream-header.ts +0 -34
- package/src/interfaces/stream-progress.ts +0 -31
- package/src/lib/configuration-provenance-utils.ts +0 -29
- package/src/lib/crypto-container.ts +0 -64
- package/src/lib/guid.ts +0 -1097
- package/src/lib/id-providers/custom-provider.ts +0 -109
- package/src/lib/id-providers/guidv4-provider.ts +0 -141
- package/src/lib/id-providers/objectid-provider.ts +0 -125
- package/src/lib/id-providers/uuid-provider.ts +0 -133
- package/src/lib/invariant-validator.ts +0 -133
- package/src/lib/invariants/encryption-algorithm-consistency.ts +0 -73
- package/src/lib/invariants/pbkdf2-profiles-validity.ts +0 -78
- package/src/lib/invariants/recipient-id-consistency.ts +0 -46
- package/src/lib/multi-recipient-chunk-utils.ts +0 -63
- package/src/member.ts +0 -495
- package/src/phone-number.ts +0 -18
- package/src/regexes.ts +0 -10
- package/src/secure-buffer.ts +0 -226
- package/src/secure-string.ts +0 -244
- package/src/services/aes-gcm.ts +0 -220
- package/src/services/chunk-processor.ts +0 -188
- package/src/services/ecies/README.md +0 -147
- package/src/services/ecies/crypto-core.ts +0 -292
- package/src/services/ecies/example.ts +0 -185
- package/src/services/ecies/file.ts +0 -167
- package/src/services/ecies/integration.ts +0 -241
- package/src/services/ecies/interfaces.ts +0 -62
- package/src/services/ecies/manual-test.ts +0 -219
- package/src/services/ecies/multi-recipient.ts +0 -545
- package/src/services/ecies/service.ts +0 -370
- package/src/services/ecies/signature.ts +0 -93
- package/src/services/ecies/single-recipient.ts +0 -476
- package/src/services/encryption-stream.ts +0 -435
- package/src/services/multi-recipient-processor.ts +0 -377
- package/src/services/password-login.ts +0 -226
- package/src/services/pbkdf2.ts +0 -169
- package/src/services/progress-tracker.ts +0 -128
- package/src/services/resumable-encryption.ts +0 -135
- package/src/services/xor.ts +0 -65
- package/src/test-mocks/index.ts +0 -1
- package/src/test-mocks/mock-frontend-member.ts +0 -276
- package/src/testing.ts +0 -2
- package/src/translations/de.ts +0 -260
- package/src/translations/en-US.ts +0 -262
- package/src/translations/es.ts +0 -271
- package/src/translations/fr.ts +0 -269
- package/src/translations/ja.ts +0 -259
- package/src/translations/uk.ts +0 -271
- package/src/translations/zh-cn.ts +0 -234
- package/src/types/deep-partial.ts +0 -11
- package/src/utils/encryption-type-utils.ts +0 -76
- package/src/utils.ts +0 -329
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EciesSingleRecipient = void 0;
|
|
4
|
+
const constants_1 = require("../../constants");
|
|
5
|
+
const ecies_encryption_type_1 = require("../../enumerations/ecies-encryption-type");
|
|
6
|
+
const ecies_version_1 = require("../../enumerations/ecies-version");
|
|
7
|
+
const ecies_cipher_suite_1 = require("../../enumerations/ecies-cipher-suite");
|
|
8
|
+
const aes_gcm_1 = require("../aes-gcm");
|
|
9
|
+
const crypto_core_1 = require("./crypto-core");
|
|
10
|
+
const i18n_setup_1 = require("../../i18n-setup");
|
|
11
|
+
const enumerations_1 = require("../../enumerations");
|
|
12
|
+
/**
|
|
13
|
+
* Browser-compatible single recipient ECIES encryption/decryption
|
|
14
|
+
*/
|
|
15
|
+
class EciesSingleRecipient {
|
|
16
|
+
cryptoCore;
|
|
17
|
+
config;
|
|
18
|
+
eciesConsts;
|
|
19
|
+
constructor(config, eciesParams = constants_1.Constants.ECIES) {
|
|
20
|
+
this.config = config;
|
|
21
|
+
this.eciesConsts = eciesParams;
|
|
22
|
+
this.cryptoCore = new crypto_core_1.EciesCryptoCore(config, this.eciesConsts);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Encrypt a message for a single recipient
|
|
26
|
+
*/
|
|
27
|
+
async encrypt(encryptSimple, receiverPublicKey, message, preamble = new Uint8Array(0)) {
|
|
28
|
+
const encryptionType = encryptSimple
|
|
29
|
+
? 'simple'
|
|
30
|
+
: 'single';
|
|
31
|
+
const encryptionTypeArray = new Uint8Array([
|
|
32
|
+
encryptionType === 'simple'
|
|
33
|
+
? this.eciesConsts.ENCRYPTION_TYPE.SIMPLE
|
|
34
|
+
: this.eciesConsts.ENCRYPTION_TYPE.SINGLE,
|
|
35
|
+
]);
|
|
36
|
+
const versionArray = new Uint8Array([ecies_version_1.EciesVersionEnum.V1]);
|
|
37
|
+
const cipherSuiteArray = new Uint8Array([ecies_cipher_suite_1.EciesCipherSuiteEnum.Secp256k1_Aes256Gcm_Sha256]);
|
|
38
|
+
if (message.length > this.eciesConsts.MAX_RAW_DATA_SIZE) {
|
|
39
|
+
const engine = (0, i18n_setup_1.getEciesI18nEngine)();
|
|
40
|
+
throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_ECIESError_MessageLengthExceedsMaximumAllowedSizeTemplate, { messageLength: message.length }));
|
|
41
|
+
}
|
|
42
|
+
// Generate ephemeral key pair
|
|
43
|
+
const ephemeralPrivateKey = this.cryptoCore.generatePrivateKey();
|
|
44
|
+
const ephemeralPublicKey = this.cryptoCore.getPublicKey(ephemeralPrivateKey);
|
|
45
|
+
// Compute shared secret
|
|
46
|
+
const normalizedReceiverPublicKey = this.cryptoCore.normalizePublicKey(receiverPublicKey);
|
|
47
|
+
const sharedSecret = this.cryptoCore.computeSharedSecret(ephemeralPrivateKey, normalizedReceiverPublicKey);
|
|
48
|
+
// Use HKDF to derive the key
|
|
49
|
+
const symKey = this.cryptoCore.deriveSharedKey(sharedSecret, new Uint8Array(0), // No salt
|
|
50
|
+
new TextEncoder().encode('ecies-v2-key-derivation'), // Info
|
|
51
|
+
this.eciesConsts.SYMMETRIC.KEY_SIZE);
|
|
52
|
+
// Construct AAD
|
|
53
|
+
const aad = new Uint8Array(preamble.length +
|
|
54
|
+
versionArray.length +
|
|
55
|
+
cipherSuiteArray.length +
|
|
56
|
+
encryptionTypeArray.length +
|
|
57
|
+
ephemeralPublicKey.length);
|
|
58
|
+
let aadOffset = 0;
|
|
59
|
+
aad.set(preamble, aadOffset);
|
|
60
|
+
aadOffset += preamble.length;
|
|
61
|
+
aad.set(versionArray, aadOffset);
|
|
62
|
+
aadOffset += versionArray.length;
|
|
63
|
+
aad.set(cipherSuiteArray, aadOffset);
|
|
64
|
+
aadOffset += cipherSuiteArray.length;
|
|
65
|
+
aad.set(encryptionTypeArray, aadOffset);
|
|
66
|
+
aadOffset += encryptionTypeArray.length;
|
|
67
|
+
aad.set(ephemeralPublicKey, aadOffset);
|
|
68
|
+
// Encrypt using AES-GCM
|
|
69
|
+
const encryptResult = await aes_gcm_1.AESGCMService.encrypt(message, symKey, true, this.eciesConsts, aad);
|
|
70
|
+
const { encrypted, iv } = encryptResult;
|
|
71
|
+
const authTag = encryptResult.tag;
|
|
72
|
+
if (!authTag) {
|
|
73
|
+
const engine = (0, i18n_setup_1.getEciesI18nEngine)();
|
|
74
|
+
throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_ECIESError_AuthenticationTagIsRequiredForECIESEncryption));
|
|
75
|
+
}
|
|
76
|
+
// Validate encrypted size is reasonable
|
|
77
|
+
const maxEncryptedSize = message.length + 1024; // Allow overhead for encryption
|
|
78
|
+
if (encrypted.length > maxEncryptedSize) {
|
|
79
|
+
const engine = (0, i18n_setup_1.getEciesI18nEngine)();
|
|
80
|
+
throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_ECIESError_EncryptedSizeExceedsExpected));
|
|
81
|
+
}
|
|
82
|
+
// Add length prefix for single mode
|
|
83
|
+
const lengthArray = encryptionType === 'simple' ? new Uint8Array(0) : new Uint8Array(8);
|
|
84
|
+
if (encryptionType === 'single') {
|
|
85
|
+
const view = new DataView(lengthArray.buffer);
|
|
86
|
+
view.setBigUint64(0, BigInt(message.length), false); // big-endian
|
|
87
|
+
}
|
|
88
|
+
// Format: [preamble] | version (1) | cipherSuite (1) | type (1) | ephemeralPublicKey (65) | iv (16) | authTag (16) | length (8) | encryptedData
|
|
89
|
+
const result = new Uint8Array(preamble.length +
|
|
90
|
+
versionArray.length +
|
|
91
|
+
cipherSuiteArray.length +
|
|
92
|
+
encryptionTypeArray.length +
|
|
93
|
+
ephemeralPublicKey.length +
|
|
94
|
+
iv.length +
|
|
95
|
+
authTag.length +
|
|
96
|
+
lengthArray.length +
|
|
97
|
+
encrypted.length);
|
|
98
|
+
let offset = 0;
|
|
99
|
+
result.set(preamble, offset);
|
|
100
|
+
offset += preamble.length;
|
|
101
|
+
result.set(versionArray, offset);
|
|
102
|
+
offset += versionArray.length;
|
|
103
|
+
result.set(cipherSuiteArray, offset);
|
|
104
|
+
offset += cipherSuiteArray.length;
|
|
105
|
+
result.set(encryptionTypeArray, offset);
|
|
106
|
+
offset += encryptionTypeArray.length;
|
|
107
|
+
result.set(ephemeralPublicKey, offset);
|
|
108
|
+
offset += ephemeralPublicKey.length;
|
|
109
|
+
result.set(iv, offset);
|
|
110
|
+
offset += iv.length;
|
|
111
|
+
result.set(authTag, offset);
|
|
112
|
+
offset += authTag.length;
|
|
113
|
+
result.set(lengthArray, offset);
|
|
114
|
+
offset += lengthArray.length;
|
|
115
|
+
result.set(encrypted, offset);
|
|
116
|
+
return result;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Parse encrypted message header
|
|
120
|
+
*/
|
|
121
|
+
parseEncryptedMessage(encryptionType, data, preambleSize = 0, options) {
|
|
122
|
+
const engine = (0, i18n_setup_1.getEciesI18nEngine)();
|
|
123
|
+
let offset = preambleSize;
|
|
124
|
+
const preamble = data.slice(0, preambleSize);
|
|
125
|
+
// Read Version
|
|
126
|
+
const version = data[offset];
|
|
127
|
+
offset += this.eciesConsts.VERSION_SIZE;
|
|
128
|
+
if (version !== ecies_version_1.EciesVersionEnum.V1) {
|
|
129
|
+
throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_ECIESError_InvalidVersionTemplate, { version }));
|
|
130
|
+
}
|
|
131
|
+
// Read CipherSuite
|
|
132
|
+
const cipherSuite = data[offset];
|
|
133
|
+
offset += this.eciesConsts.CIPHER_SUITE_SIZE;
|
|
134
|
+
if (cipherSuite !== ecies_cipher_suite_1.EciesCipherSuiteEnum.Secp256k1_Aes256Gcm_Sha256) {
|
|
135
|
+
throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_ECIESError_InvalidCipherSuiteTemplate, { cipherSuite }));
|
|
136
|
+
}
|
|
137
|
+
// Read encryption type from first byte after preamble and version/suite
|
|
138
|
+
const actualEncryptionTypeByte = data[offset];
|
|
139
|
+
let actualEncryptionType;
|
|
140
|
+
switch (actualEncryptionTypeByte) {
|
|
141
|
+
case this.eciesConsts.ENCRYPTION_TYPE.SIMPLE:
|
|
142
|
+
actualEncryptionType = ecies_encryption_type_1.EciesEncryptionTypeEnum.Simple;
|
|
143
|
+
break;
|
|
144
|
+
case this.eciesConsts.ENCRYPTION_TYPE.SINGLE:
|
|
145
|
+
actualEncryptionType = ecies_encryption_type_1.EciesEncryptionTypeEnum.Single;
|
|
146
|
+
break;
|
|
147
|
+
case this.eciesConsts.ENCRYPTION_TYPE.MULTIPLE:
|
|
148
|
+
throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_ECIESError_MultipleEncryptionTypeNotSupportedInSingleRecipientMode));
|
|
149
|
+
default:
|
|
150
|
+
// convert the encryption type byte to hex
|
|
151
|
+
const encryptionTypeHex = actualEncryptionTypeByte.toString(16).padStart(2, '0');
|
|
152
|
+
throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_ECIESError_InvalidEncryptionTypeTemplate, { encryptionType: encryptionTypeHex }));
|
|
153
|
+
}
|
|
154
|
+
if (encryptionType !== undefined &&
|
|
155
|
+
actualEncryptionType !== encryptionType) {
|
|
156
|
+
throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_ECIESError_EncryptionTypeMismatchTemplate, { encryptionType, actualEncryptionType }));
|
|
157
|
+
}
|
|
158
|
+
const includeLengthAndCrc = actualEncryptionType === ecies_encryption_type_1.EciesEncryptionTypeEnum.Single;
|
|
159
|
+
const requiredSize = includeLengthAndCrc
|
|
160
|
+
? this.eciesConsts.SINGLE.FIXED_OVERHEAD_SIZE
|
|
161
|
+
: this.eciesConsts.SIMPLE.FIXED_OVERHEAD_SIZE;
|
|
162
|
+
if (data.length < requiredSize) {
|
|
163
|
+
throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_ECIESError_DataTooShortTemplate, { requiredSize, dataLength: data.length }));
|
|
164
|
+
}
|
|
165
|
+
// Skip encryption type byte
|
|
166
|
+
offset += 1;
|
|
167
|
+
// Extract header components
|
|
168
|
+
const ephemeralPublicKey = data.slice(offset, offset + this.eciesConsts.PUBLIC_KEY_LENGTH);
|
|
169
|
+
offset += this.eciesConsts.PUBLIC_KEY_LENGTH;
|
|
170
|
+
const normalizedKey = this.cryptoCore.normalizePublicKey(ephemeralPublicKey);
|
|
171
|
+
const iv = data.slice(offset, offset + this.eciesConsts.IV_SIZE);
|
|
172
|
+
offset += this.eciesConsts.IV_SIZE;
|
|
173
|
+
const authTag = data.slice(offset, offset + this.eciesConsts.AUTH_TAG_SIZE);
|
|
174
|
+
offset += this.eciesConsts.AUTH_TAG_SIZE;
|
|
175
|
+
// Extract length for single mode
|
|
176
|
+
const dataLengthArray = includeLengthAndCrc
|
|
177
|
+
? data.slice(offset, offset + this.eciesConsts.SINGLE.DATA_LENGTH_SIZE)
|
|
178
|
+
: new Uint8Array(0);
|
|
179
|
+
if (includeLengthAndCrc) {
|
|
180
|
+
offset += this.eciesConsts.SINGLE.DATA_LENGTH_SIZE;
|
|
181
|
+
}
|
|
182
|
+
const dataLength = includeLengthAndCrc
|
|
183
|
+
? Number(new DataView(dataLengthArray.buffer, dataLengthArray.byteOffset, dataLengthArray.byteLength).getBigUint64(0, false))
|
|
184
|
+
: options?.dataLength ?? -1;
|
|
185
|
+
// Validate data length is reasonable
|
|
186
|
+
if (includeLengthAndCrc && (dataLength < 0 || dataLength > this.eciesConsts.MAX_RAW_DATA_SIZE)) {
|
|
187
|
+
throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_ECIESError_InvalidDataLength));
|
|
188
|
+
}
|
|
189
|
+
if (includeLengthAndCrc &&
|
|
190
|
+
options?.dataLength !== undefined &&
|
|
191
|
+
dataLength !== options.dataLength) {
|
|
192
|
+
throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_ECIESError_DataLengthMismatchTemplate, { expectedDataLength: dataLength, receivedDataLength: options.dataLength }));
|
|
193
|
+
}
|
|
194
|
+
// No CRC in Single encryption (AES-GCM provides authentication)
|
|
195
|
+
// For single mode, read all remaining data as encrypted data
|
|
196
|
+
// The dataLength represents the original message length, not encrypted length
|
|
197
|
+
const encryptedData = data.slice(offset);
|
|
198
|
+
const remainder = new Uint8Array(0);
|
|
199
|
+
// No CRC validation needed (AES-GCM provides authentication)
|
|
200
|
+
return {
|
|
201
|
+
header: {
|
|
202
|
+
preamble,
|
|
203
|
+
encryptionType: actualEncryptionType,
|
|
204
|
+
ephemeralPublicKey: normalizedKey,
|
|
205
|
+
iv,
|
|
206
|
+
authTag,
|
|
207
|
+
dataLength,
|
|
208
|
+
headerSize: includeLengthAndCrc
|
|
209
|
+
? this.eciesConsts.SINGLE.FIXED_OVERHEAD_SIZE
|
|
210
|
+
: this.eciesConsts.SIMPLE.FIXED_OVERHEAD_SIZE,
|
|
211
|
+
},
|
|
212
|
+
data: encryptedData,
|
|
213
|
+
remainder,
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Decrypt with header
|
|
218
|
+
*/
|
|
219
|
+
async decryptWithHeader(encryptionType, privateKey, encryptedData, preambleSize = 0, options) {
|
|
220
|
+
const result = await this.decryptWithHeaderEx(encryptionType, privateKey, encryptedData, preambleSize, options);
|
|
221
|
+
return result.decrypted;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Extended decrypt with header that returns additional info
|
|
225
|
+
*/
|
|
226
|
+
async decryptWithHeaderEx(encryptionType, privateKey, encryptedData, preambleSize = 0, options) {
|
|
227
|
+
const { data, header } = this.parseEncryptedMessage(encryptionType, encryptedData, preambleSize, options);
|
|
228
|
+
// Construct AAD
|
|
229
|
+
const versionArray = new Uint8Array([ecies_version_1.EciesVersionEnum.V1]);
|
|
230
|
+
const cipherSuiteArray = new Uint8Array([ecies_cipher_suite_1.EciesCipherSuiteEnum.Secp256k1_Aes256Gcm_Sha256]);
|
|
231
|
+
const encryptionTypeArray = new Uint8Array([
|
|
232
|
+
header.encryptionType === ecies_encryption_type_1.EciesEncryptionTypeEnum.Simple
|
|
233
|
+
? this.eciesConsts.ENCRYPTION_TYPE.SIMPLE
|
|
234
|
+
: this.eciesConsts.ENCRYPTION_TYPE.SINGLE,
|
|
235
|
+
]);
|
|
236
|
+
const preamble = header.preamble ?? new Uint8Array(preambleSize);
|
|
237
|
+
const aad = new Uint8Array(preamble.length +
|
|
238
|
+
versionArray.length +
|
|
239
|
+
cipherSuiteArray.length +
|
|
240
|
+
encryptionTypeArray.length +
|
|
241
|
+
header.ephemeralPublicKey.length);
|
|
242
|
+
let offset = 0;
|
|
243
|
+
aad.set(preamble, offset);
|
|
244
|
+
offset += preamble.length;
|
|
245
|
+
aad.set(versionArray, offset);
|
|
246
|
+
offset += versionArray.length;
|
|
247
|
+
aad.set(cipherSuiteArray, offset);
|
|
248
|
+
offset += cipherSuiteArray.length;
|
|
249
|
+
aad.set(encryptionTypeArray, offset);
|
|
250
|
+
offset += encryptionTypeArray.length;
|
|
251
|
+
aad.set(header.ephemeralPublicKey, offset);
|
|
252
|
+
const decrypted = await this.decryptWithComponents(privateKey, header.ephemeralPublicKey, header.iv, header.authTag, data, aad);
|
|
253
|
+
return {
|
|
254
|
+
decrypted,
|
|
255
|
+
consumedBytes: preambleSize + header.headerSize + data.length,
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Decrypt with individual components
|
|
260
|
+
*/
|
|
261
|
+
async decryptWithComponents(privateKey, ephemeralPublicKey, iv, authTag, encrypted, aad) {
|
|
262
|
+
// Validate private key
|
|
263
|
+
if (!privateKey || privateKey.length !== 32) {
|
|
264
|
+
const engine = (0, i18n_setup_1.getEciesI18nEngine)();
|
|
265
|
+
throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_ECIESError_InvalidPrivateKey));
|
|
266
|
+
}
|
|
267
|
+
// Check for all-zero private key
|
|
268
|
+
let allZeros = true;
|
|
269
|
+
for (let i = 0; i < privateKey.length; i++) {
|
|
270
|
+
if (privateKey[i] !== 0) {
|
|
271
|
+
allZeros = false;
|
|
272
|
+
break;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
if (allZeros) {
|
|
276
|
+
const engine = (0, i18n_setup_1.getEciesI18nEngine)();
|
|
277
|
+
throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_ECIESError_InvalidPrivateKey));
|
|
278
|
+
}
|
|
279
|
+
// Validate IV
|
|
280
|
+
if (!iv || iv.length !== this.eciesConsts.IV_SIZE) {
|
|
281
|
+
const engine = (0, i18n_setup_1.getEciesI18nEngine)();
|
|
282
|
+
throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_ECIESError_InvalidIV));
|
|
283
|
+
}
|
|
284
|
+
// Validate auth tag
|
|
285
|
+
if (!authTag || authTag.length !== this.eciesConsts.AUTH_TAG_SIZE) {
|
|
286
|
+
const engine = (0, i18n_setup_1.getEciesI18nEngine)();
|
|
287
|
+
throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_ECIESError_InvalidAuthTag));
|
|
288
|
+
}
|
|
289
|
+
// Normalize ephemeral public key (this validates it's a valid key)
|
|
290
|
+
const normalizedEphemeralKey = this.cryptoCore.normalizePublicKey(ephemeralPublicKey);
|
|
291
|
+
// Compute shared secret
|
|
292
|
+
const sharedSecret = this.cryptoCore.computeSharedSecret(privateKey, normalizedEphemeralKey);
|
|
293
|
+
// Validate shared secret is not all zeros
|
|
294
|
+
let sharedSecretAllZeros = true;
|
|
295
|
+
for (let i = 0; i < sharedSecret.length; i++) {
|
|
296
|
+
if (sharedSecret[i] !== 0) {
|
|
297
|
+
sharedSecretAllZeros = false;
|
|
298
|
+
break;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
if (sharedSecretAllZeros) {
|
|
302
|
+
const engine = (0, i18n_setup_1.getEciesI18nEngine)();
|
|
303
|
+
throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_ECIESError_InvalidSharedSecret));
|
|
304
|
+
}
|
|
305
|
+
// Use HKDF to derive the key
|
|
306
|
+
const symKey = this.cryptoCore.deriveSharedKey(sharedSecret, new Uint8Array(0), // No salt
|
|
307
|
+
new TextEncoder().encode('ecies-v2-key-derivation'), // Info
|
|
308
|
+
this.eciesConsts.SYMMETRIC.KEY_SIZE);
|
|
309
|
+
// Combine encrypted data with auth tag for AES-GCM
|
|
310
|
+
const encryptedWithTag = aes_gcm_1.AESGCMService.combineEncryptedDataAndTag(encrypted, authTag);
|
|
311
|
+
// Decrypt
|
|
312
|
+
return await aes_gcm_1.AESGCMService.decrypt(iv, encryptedWithTag, symKey, true, this.eciesConsts, aad);
|
|
313
|
+
}
|
|
314
|
+
arraysEqual(a, b) {
|
|
315
|
+
if (a.length !== b.length)
|
|
316
|
+
return false;
|
|
317
|
+
// Constant-time comparison to prevent timing attacks
|
|
318
|
+
let diff = 0;
|
|
319
|
+
for (let i = 0; i < a.length; i++) {
|
|
320
|
+
diff |= a[i] ^ b[i];
|
|
321
|
+
}
|
|
322
|
+
return diff === 0;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
exports.EciesSingleRecipient = EciesSingleRecipient;
|
|
326
|
+
//# sourceMappingURL=single-recipient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"single-recipient.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/services/ecies/single-recipient.ts"],"names":[],"mappings":";;;AACA,+CAA4C;AAC5C,oFAGkD;AAClD,oEAAoE;AACpE,8EAA6E;AAE7E,wCAA2C;AAE3C,+CAAgD;AAEhD,iDAAwE;AACxE,qDAAoD;AAEpD;;GAEG;AACH,MAAa,oBAAoB;IACZ,UAAU,CAAkB;IAC5B,MAAM,CAAe;IACrB,WAAW,CAAkB;IAEhD,YAAY,MAAoB,EAAE,cAA+B,qBAAS,CAAC,KAAK;QAC9E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,6BAAe,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAO,CAClB,aAAsB,EACtB,iBAA6B,EAC7B,OAAmB,EACnB,WAAuB,IAAI,UAAU,CAAC,CAAC,CAAC;QAExC,MAAM,cAAc,GAAwB,aAAa;YACvD,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,QAAQ,CAAC;QACb,MAAM,mBAAmB,GAAG,IAAI,UAAU,CAAC;YACzC,cAAc,KAAK,QAAQ;gBACzB,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM;gBACzC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM;SAC5C,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,CAAC,gCAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3D,MAAM,gBAAgB,GAAG,IAAI,UAAU,CAAC,CAAC,yCAAoB,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAE3F,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;YACxD,MAAM,MAAM,GAAG,IAAA,+BAAkB,GAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,6BAAgB,EAAE,6BAAc,CAAC,+DAA+D,EAAE,EAAC,aAAa,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACxK,CAAC;QAED,8BAA8B;QAC9B,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;QACjE,MAAM,kBAAkB,GACtB,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;QAEpD,wBAAwB;QACxB,MAAM,2BAA2B,GAC/B,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;QACxD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CACtD,mBAAmB,EACnB,2BAA2B,CAC5B,CAAC;QAEF,6BAA6B;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAC5C,YAAY,EACZ,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU;QAC7B,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAE,OAAO;QAC5D,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CACpC,CAAC;QAEF,gBAAgB;QAChB,MAAM,GAAG,GAAG,IAAI,UAAU,CACxB,QAAQ,CAAC,MAAM;YACf,YAAY,CAAC,MAAM;YACnB,gBAAgB,CAAC,MAAM;YACvB,mBAAmB,CAAC,MAAM;YAC1B,kBAAkB,CAAC,MAAM,CAC1B,CAAC;QAEF,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAAC,SAAS,IAAI,QAAQ,CAAC,MAAM,CAAC;QAC3D,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAAC,SAAS,IAAI,YAAY,CAAC,MAAM,CAAC;QACnE,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;QAAC,SAAS,IAAI,gBAAgB,CAAC,MAAM,CAAC;QAC3E,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;QAAC,SAAS,IAAI,mBAAmB,CAAC,MAAM,CAAC;QACjF,GAAG,CAAC,GAAG,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;QAEvC,wBAAwB;QACxB,MAAM,aAAa,GAAG,MAAM,uBAAa,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAChG,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,aAAa,CAAC;QACxC,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC;QAElC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,IAAA,+BAAkB,GAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,6BAAgB,EAAE,6BAAc,CAAC,8DAA8D,CAAC,CAAC,CAAC;QACrI,CAAC;QAED,wCAAwC;QACxC,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,gCAAgC;QAChF,IAAI,SAAS,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,IAAA,+BAAkB,GAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,6BAAgB,EAAE,6BAAc,CAAC,6CAA6C,CAAC,CAAC,CAAC;QACpH,CAAC;QAED,oCAAoC;QACpC,MAAM,WAAW,GACf,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QAEtE,IAAI,cAAc,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC9C,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,aAAa;QACpE,CAAC;QAED,gJAAgJ;QAChJ,MAAM,MAAM,GAAG,IAAI,UAAU,CAC3B,QAAQ,CAAC,MAAM;YACb,YAAY,CAAC,MAAM;YACnB,gBAAgB,CAAC,MAAM;YACvB,mBAAmB,CAAC,MAAM;YAC1B,kBAAkB,CAAC,MAAM;YACzB,EAAE,CAAC,MAAM;YACT,OAAO,CAAC,MAAM;YACd,WAAW,CAAC,MAAM;YAClB,SAAS,CAAC,MAAM,CACnB,CAAC;QAEF,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC7B,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;QAC1B,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACjC,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACrC,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;QACxC,MAAM,IAAI,mBAAmB,CAAC,MAAM,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;QACvC,MAAM,IAAI,kBAAkB,CAAC,MAAM,CAAC;QACpC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACvB,MAAM,IAAI,EAAE,CAAC,MAAM,CAAC;QACpB,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAChC,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAE9B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,qBAAqB,CAC1B,cAAmD,EACnD,IAAgB,EAChB,eAAuB,CAAC,EACxB,OAAiC;QAMjC,MAAM,MAAM,GAAG,IAAA,+BAAkB,GAAE,CAAC;QACpC,IAAI,MAAM,GAAG,YAAY,CAAC;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;QAE7C,eAAe;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;QACxC,IAAI,OAAO,KAAK,gCAAgB,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,6BAAgB,EAAE,6BAAc,CAAC,uCAAuC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QAC3H,CAAC;QAED,mBAAmB;QACnB,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC;QAC7C,IAAI,WAAW,KAAK,yCAAoB,CAAC,0BAA0B,EAAE,CAAC;YACpE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,6BAAgB,EAAE,6BAAc,CAAC,2CAA2C,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;QACnI,CAAC;QAED,wEAAwE;QACxE,MAAM,wBAAwB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,oBAA6C,CAAC;QAElD,QAAQ,wBAAwB,EAAE,CAAC;YACjC,KAAK,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM;gBAC1C,oBAAoB,GAAG,+CAAuB,CAAC,MAAM,CAAC;gBACtD,MAAM;YACR,KAAK,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM;gBAC1C,oBAAoB,GAAG,+CAAuB,CAAC,MAAM,CAAC;gBACtD,MAAM;YACR,KAAK,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,QAAQ;gBAC5C,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,6BAAgB,EAAE,6BAAc,CAAC,wEAAwE,CAAC,CAAC,CAAC;YAC/I;gBACE,0CAA0C;gBAC1C,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBACjF,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,6BAAgB,EAAE,6BAAc,CAAC,8CAA8C,EAAE,EAAE,cAAc,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;QAC9J,CAAC;QAED,IACE,cAAc,KAAK,SAAS;YAC5B,oBAAoB,KAAK,cAAc,EACvC,CAAC;YACD,MAAM,IAAI,KAAK,CACb,MAAM,CAAC,SAAS,CAAC,6BAAgB,EAAE,6BAAc,CAAC,+CAA+C,EAAE,EAAE,cAAc,EAAE,oBAAoB,EAAE,CAAC,CAC7I,CAAC;QACJ,CAAC;QAED,MAAM,mBAAmB,GACvB,oBAAoB,KAAK,+CAAuB,CAAC,MAAM,CAAC;QAC1D,MAAM,YAAY,GAAG,mBAAmB;YACtC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,mBAAmB;YAC7C,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,mBAAmB,CAAC;QAEhD,IAAI,IAAI,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACb,MAAM,CAAC,SAAS,CAAC,6BAAgB,EAAE,6BAAc,CAAC,qCAAqC,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CACpI,CAAC;QACJ,CAAC;QAED,4BAA4B;QAC5B,MAAM,IAAI,CAAC,CAAC;QAEZ,4BAA4B;QAC5B,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CACnC,MAAM,EACN,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAC5C,CAAC;QACF,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC;QAE7C,MAAM,aAAa,GACjB,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;QAEzD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACjE,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;QAEnC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAC5E,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;QACzC,iCAAiC;QACjC,MAAM,eAAe,GAAG,mBAAmB;YACzC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,gBAAgB,CAAC;YACvE,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QAEtB,IAAI,mBAAmB,EAAE,CAAC;YACxB,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,gBAAgB,CAAC;QACrD,CAAC;QAED,MAAM,UAAU,GAAG,mBAAmB;YACpC,CAAC,CAAC,MAAM,CACJ,IAAI,QAAQ,CACV,eAAe,CAAC,MAAM,EACtB,eAAe,CAAC,UAAU,EAC1B,eAAe,CAAC,UAAU,CAC3B,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CACzB;YACH,CAAC,CAAC,OAAO,EAAE,UAAU,IAAI,CAAC,CAAC,CAAC;QAE9B,qCAAqC;QACrC,IAAI,mBAAmB,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC/F,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,6BAAgB,EAAE,6BAAc,CAAC,kCAAkC,CAAC,CAAC,CAAC;QACzG,CAAC;QAED,IACE,mBAAmB;YACnB,OAAO,EAAE,UAAU,KAAK,SAAS;YACjC,UAAU,KAAK,OAAO,CAAC,UAAU,EACjC,CAAC;YACD,MAAM,IAAI,KAAK,CACb,MAAM,CAAC,SAAS,CAAC,6BAAgB,EAAE,6BAAc,CAAC,2CAA2C,EAAE,EAAE,kBAAkB,EAAE,UAAU,EAAE,kBAAkB,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAC3K,CAAC;QACJ,CAAC;QAED,gEAAgE;QAEhE,6DAA6D;QAC7D,8EAA8E;QAC9E,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEzC,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QAEpC,6DAA6D;QAE7D,OAAO;YACL,MAAM,EAAE;gBACN,QAAQ;gBACR,cAAc,EAAE,oBAAoB;gBACpC,kBAAkB,EAAE,aAAa;gBACjC,EAAE;gBACF,OAAO;gBACP,UAAU;gBACV,UAAU,EAAE,mBAAmB;oBAC7B,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,mBAAmB;oBAC7C,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,mBAAmB;aAChD;YACD,IAAI,EAAE,aAAa;YACnB,SAAS;SACV,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,iBAAiB,CAC5B,cAAmD,EACnD,UAAsB,EACtB,aAAyB,EACzB,eAAuB,CAAC,EACxB,OAAiC;QAEjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAC3C,cAAc,EACd,UAAU,EACV,aAAa,EACb,YAAY,EACZ,OAAO,CACR,CAAC;QACF,OAAO,MAAM,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,mBAAmB,CAC9B,cAAmD,EACnD,UAAsB,EACtB,aAAyB,EACzB,eAAuB,CAAC,EACxB,OAAiC;QAEjC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,qBAAqB,CACjD,cAAc,EACd,aAAa,EACb,YAAY,EACZ,OAAO,CACR,CAAC;QAEF,gBAAgB;QAChB,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,CAAC,gCAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3D,MAAM,gBAAgB,GAAG,IAAI,UAAU,CAAC,CAAC,yCAAoB,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAC3F,MAAM,mBAAmB,GAAG,IAAI,UAAU,CAAC;YACzC,MAAM,CAAC,cAAc,KAAK,+CAAuB,CAAC,MAAM;gBACtD,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM;gBACzC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM;SAC5C,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC;QAEjE,MAAM,GAAG,GAAG,IAAI,UAAU,CACxB,QAAQ,CAAC,MAAM;YACf,YAAY,CAAC,MAAM;YACnB,gBAAgB,CAAC,MAAM;YACvB,mBAAmB,CAAC,MAAM;YAC1B,MAAM,CAAC,kBAAkB,CAAC,MAAM,CACjC,CAAC;QAEF,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;QACrD,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAAC,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC;QAC7D,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAAC,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC;QACrE,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;QAAC,MAAM,IAAI,mBAAmB,CAAC,MAAM,CAAC;QAC3E,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;QAE3C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAChD,UAAU,EACV,MAAM,CAAC,kBAAkB,EACzB,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,OAAO,EACd,IAAI,EACJ,GAAG,CACJ,CAAC;QAEF,OAAO;YACL,SAAS;YACT,aAAa,EAAE,YAAY,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM;SAC9D,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,qBAAqB,CAChC,UAAsB,EACtB,kBAA8B,EAC9B,EAAc,EACd,OAAmB,EACnB,SAAqB,EACrB,GAAgB;QAEhB,uBAAuB;QACvB,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,IAAA,+BAAkB,GAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,6BAAgB,EAAE,6BAAc,CAAC,kCAAkC,CAAC,CAAC,CAAC;QACzG,CAAC;QAED,iCAAiC;QACjC,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,QAAQ,GAAG,KAAK,CAAC;gBACjB,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,IAAA,+BAAkB,GAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,6BAAgB,EAAE,6BAAc,CAAC,kCAAkC,CAAC,CAAC,CAAC;QACzG,CAAC;QAED,cAAc;QACd,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,IAAA,+BAAkB,GAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,6BAAgB,EAAE,6BAAc,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACjG,CAAC;QAED,oBAAoB;QACpB,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;YAClE,MAAM,MAAM,GAAG,IAAA,+BAAkB,GAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,6BAAgB,EAAE,6BAAc,CAAC,+BAA+B,CAAC,CAAC,CAAC;QACtG,CAAC;QAED,mEAAmE;QACnE,MAAM,sBAAsB,GAC1B,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;QAEzD,wBAAwB;QACxB,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CACtD,UAAU,EACV,sBAAsB,CACvB,CAAC;QAEF,0CAA0C;QAC1C,IAAI,oBAAoB,GAAG,IAAI,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,oBAAoB,GAAG,KAAK,CAAC;gBAC7B,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,oBAAoB,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,IAAA,+BAAkB,GAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,6BAAgB,EAAE,6BAAc,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAC3G,CAAC;QAED,6BAA6B;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAC5C,YAAY,EACZ,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU;QAC7B,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAE,OAAO;QAC5D,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CACpC,CAAC;QAEF,mDAAmD;QACnD,MAAM,gBAAgB,GAAG,uBAAa,CAAC,0BAA0B,CAC/D,SAAS,EACT,OAAO,CACR,CAAC;QAEF,UAAU;QACV,OAAO,MAAM,uBAAa,CAAC,OAAO,CAAC,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAChG,CAAC;IAEO,WAAW,CAAC,CAAa,EAAE,CAAa;QAC9C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAExC,qDAAqD;QACrD,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,KAAK,CAAC,CAAC;IACpB,CAAC;CACF;AAxcD,oDAwcC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { IECIESConstants } from '../interfaces/ecies-consts';
|
|
2
|
+
import { IConstants } from '../interfaces/constants';
|
|
3
|
+
import { IStreamConfig } from '../interfaces/stream-config';
|
|
4
|
+
import { IEncryptedChunk } from '../interfaces/encrypted-chunk';
|
|
5
|
+
import { IStreamHeader } from '../interfaces/stream-header';
|
|
6
|
+
import { IStreamProgress } from '../interfaces/stream-progress';
|
|
7
|
+
import { ECIESService } from './ecies/service';
|
|
8
|
+
import { IMultiRecipientChunk } from '../interfaces/multi-recipient-chunk';
|
|
9
|
+
/**
|
|
10
|
+
* Options for stream encryption
|
|
11
|
+
*/
|
|
12
|
+
export interface IEncryptStreamOptions {
|
|
13
|
+
chunkSize?: number;
|
|
14
|
+
signal?: AbortSignal;
|
|
15
|
+
includeChecksums?: boolean;
|
|
16
|
+
onProgress?: (progress: IStreamProgress) => void;
|
|
17
|
+
}
|
|
18
|
+
export interface IMultiRecipientStreamOptions extends IEncryptStreamOptions {
|
|
19
|
+
recipients: Array<{
|
|
20
|
+
id: Uint8Array;
|
|
21
|
+
publicKey: Uint8Array;
|
|
22
|
+
}>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Options for stream decryption
|
|
26
|
+
*/
|
|
27
|
+
export interface IDecryptStreamOptions {
|
|
28
|
+
signal?: AbortSignal;
|
|
29
|
+
onProgress?: (progress: IStreamProgress) => void;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Streaming encryption/decryption service
|
|
33
|
+
*/
|
|
34
|
+
export declare class EncryptionStream {
|
|
35
|
+
private readonly ecies;
|
|
36
|
+
private readonly config;
|
|
37
|
+
private readonly eciesConsts;
|
|
38
|
+
private readonly constants;
|
|
39
|
+
private readonly processor;
|
|
40
|
+
private readonly multiRecipientProcessor;
|
|
41
|
+
constructor(ecies: ECIESService, config?: IStreamConfig, eciesConsts?: IECIESConstants, constants?: IConstants);
|
|
42
|
+
/**
|
|
43
|
+
* Build stream header
|
|
44
|
+
*/
|
|
45
|
+
buildStreamHeader(header: IStreamHeader): Uint8Array;
|
|
46
|
+
/**
|
|
47
|
+
* Parse stream header
|
|
48
|
+
*/
|
|
49
|
+
parseStreamHeader(data: Uint8Array): IStreamHeader;
|
|
50
|
+
/**
|
|
51
|
+
* Encrypt data stream
|
|
52
|
+
*/
|
|
53
|
+
encryptStream(source: AsyncIterable<Uint8Array>, publicKey: Uint8Array, options?: IEncryptStreamOptions): AsyncGenerator<IEncryptedChunk, void, unknown>;
|
|
54
|
+
/**
|
|
55
|
+
* Encrypt stream for multiple recipients
|
|
56
|
+
* Uses shared symmetric key encrypted for each recipient
|
|
57
|
+
*/
|
|
58
|
+
encryptStreamMultiple(source: AsyncIterable<Uint8Array>, recipients: Array<{
|
|
59
|
+
id: Uint8Array;
|
|
60
|
+
publicKey: Uint8Array;
|
|
61
|
+
}>, options?: IEncryptStreamOptions): AsyncGenerator<IMultiRecipientChunk, void, unknown>;
|
|
62
|
+
/**
|
|
63
|
+
* Decrypt multi-recipient stream
|
|
64
|
+
*/
|
|
65
|
+
decryptStreamMultiple(source: AsyncIterable<Uint8Array>, recipientId: Uint8Array, privateKey: Uint8Array, options?: IDecryptStreamOptions): AsyncGenerator<Uint8Array, void, unknown>;
|
|
66
|
+
/**
|
|
67
|
+
* Decrypt data stream
|
|
68
|
+
*/
|
|
69
|
+
decryptStream(source: AsyncIterable<Uint8Array>, privateKey: Uint8Array, options?: IDecryptStreamOptions): AsyncGenerator<Uint8Array, void, unknown>;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=encryption-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encryption-stream.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/services/encryption-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAyB,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,aAAa,EAA2B,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAI/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAI3E;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,4BAA6B,SAAQ,qBAAqB;IACzE,UAAU,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,UAAU,CAAC;QAAC,SAAS,EAAE,UAAU,CAAA;KAAE,CAAC,CAAC;CAC9D;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,CAAC;CAClD;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAKzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAP5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiB;IAC3C,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA0B;gBAG/C,KAAK,EAAE,YAAY,EACnB,MAAM,GAAE,aAAqC,EAC7C,WAAW,GAAE,eAAiC,EAC9C,SAAS,GAAE,UAAsB;IAMpD;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,UAAU;IAgBpD;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa;IA6BlD;;OAEG;IACI,aAAa,CAClB,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,EACjC,SAAS,EAAE,UAAU,EACrB,OAAO,GAAE,qBAA0B,GAClC,cAAc,CAAC,eAAe,EAAE,IAAI,EAAE,OAAO,CAAC;IAkGjD;;;OAGG;IACI,qBAAqB,CAC1B,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,EACjC,UAAU,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,UAAU,CAAC;QAAC,SAAS,EAAE,UAAU,CAAA;KAAE,CAAC,EAC5D,OAAO,GAAE,qBAA0B,GAClC,cAAc,CAAC,oBAAoB,EAAE,IAAI,EAAE,OAAO,CAAC;IAsGtD;;OAEG;IACI,qBAAqB,CAC1B,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,EACjC,WAAW,EAAE,UAAU,EACvB,UAAU,EAAE,UAAU,EACtB,OAAO,GAAE,qBAA0B,GAClC,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC;IAiD5C;;OAEG;IACI,aAAa,CAClB,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,EACjC,UAAU,EAAE,UAAU,EACtB,OAAO,GAAE,qBAA0B,GAClC,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC;CAiD7C"}
|