@digitaldefiance/ecies-lib 4.4.2 → 4.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/package.json +9 -6
- package/src/builders/ecies-builder.ts +39 -0
- package/src/builders/{index.js → index.ts} +1 -1
- package/src/builders/member-builder.ts +155 -0
- package/src/constants.ts +609 -0
- package/src/core/errors/crypto-error.ts +78 -0
- package/src/core/{index.js → index.ts} +1 -1
- package/src/core/types/result.ts +19 -0
- package/src/email-string.ts +82 -0
- package/src/enumerations/disposed-error-type.ts +11 -0
- package/src/enumerations/ecies-cipher-suite.ts +4 -0
- package/src/enumerations/ecies-encryption-type.ts +41 -0
- package/src/enumerations/ecies-error-type.ts +43 -0
- package/src/enumerations/ecies-string-key.ts +205 -0
- package/src/enumerations/ecies-version.ts +3 -0
- package/src/enumerations/guid-brand-type.ts +26 -0
- package/src/enumerations/guid-error-type.ts +6 -0
- package/src/enumerations/id-provider-error-type.ts +50 -0
- package/src/enumerations/{index.js → index.ts} +0 -1
- package/src/enumerations/invalid-email-type.ts +5 -0
- package/src/enumerations/length-encoding-type.ts +6 -0
- package/src/enumerations/length-error-type.ts +5 -0
- package/src/enumerations/member-error-type.ts +106 -0
- package/src/enumerations/{member-type.d.ts → member-type.ts} +7 -6
- package/src/enumerations/password-login-error-type.ts +4 -0
- package/src/enumerations/pbkdf2-error-type.ts +5 -0
- package/src/enumerations/pbkdf2-profile.ts +5 -0
- package/src/enumerations/secure-storage-error-type.ts +5 -0
- package/src/errors/disposed.ts +36 -0
- package/src/errors/ecies.ts +153 -0
- package/src/errors/guid.ts +130 -0
- package/src/errors/id-provider.ts +40 -0
- package/src/errors/{index.d.ts → index.ts} +0 -1
- package/src/errors/invalid-email.ts +23 -0
- package/src/errors/length.ts +19 -0
- package/src/errors/member.ts +20 -0
- package/src/errors/pbkdf2.ts +20 -0
- package/src/errors/secure-storage.ts +17 -0
- package/src/errors/simple-ecies.ts +21 -0
- package/src/errors/simple-test-error.ts +6 -0
- package/src/i18n-setup.ts +130 -0
- package/src/{index.js → index.ts} +64 -7
- package/src/interfaces/checksum-config.ts +4 -0
- package/src/interfaces/checksum-consts.ts +13 -0
- package/src/interfaces/configuration-provenance.ts +54 -0
- package/src/interfaces/constants.ts +75 -0
- package/src/interfaces/ecies-config.ts +8 -0
- package/src/interfaces/ecies-consts.ts +74 -0
- package/src/interfaces/ecies-file-service.ts +6 -0
- package/src/interfaces/encrypted-chunk.ts +64 -0
- package/src/interfaces/encryption-state.ts +19 -0
- package/src/interfaces/frontend-member-operational.ts +77 -0
- package/src/interfaces/guid.ts +86 -0
- package/src/interfaces/id-provider.ts +152 -0
- package/src/interfaces/{index.d.ts → index.ts} +0 -1
- package/src/interfaces/invariant.ts +60 -0
- package/src/interfaces/library-error.ts +23 -0
- package/src/interfaces/{member-storage.d.ts → member-storage.ts} +11 -10
- package/src/interfaces/{member-with-mnemonic.d.ts → member-with-mnemonic.ts} +3 -3
- package/src/interfaces/member.ts +84 -0
- package/src/interfaces/multi-recipient-chunk.ts +61 -0
- package/src/interfaces/pbkdf2-config.ts +6 -0
- package/src/interfaces/pbkdf2-consts.ts +10 -0
- package/src/interfaces/pbkdf2-result.ts +5 -0
- package/src/interfaces/stream-config.ts +17 -0
- package/src/interfaces/stream-header.ts +34 -0
- package/src/interfaces/stream-progress.ts +31 -0
- package/src/lib/configuration-provenance-utils.ts +26 -0
- package/src/lib/crypto-container.ts +64 -0
- package/src/lib/guid.ts +1097 -0
- package/src/lib/id-providers/custom-provider.ts +109 -0
- package/src/lib/id-providers/guidv4-provider.ts +141 -0
- package/src/lib/id-providers/{index.d.ts → index.ts} +6 -5
- package/src/lib/id-providers/objectid-provider.ts +125 -0
- package/src/lib/id-providers/uuid-provider.ts +133 -0
- package/src/lib/{index.js → index.ts} +2 -2
- package/src/lib/invariant-validator.ts +133 -0
- package/src/lib/invariants/encryption-algorithm-consistency.ts +73 -0
- package/src/lib/invariants/{index.js → index.ts} +0 -1
- package/src/lib/invariants/pbkdf2-profiles-validity.ts +78 -0
- package/src/lib/invariants/recipient-id-consistency.ts +46 -0
- package/src/lib/multi-recipient-chunk-utils.ts +63 -0
- package/src/member.ts +495 -0
- package/src/{pbkdf2-profiles.d.ts → pbkdf2-profiles.ts} +2 -2
- package/src/phone-number.ts +18 -0
- package/src/regexes.ts +10 -0
- package/src/secure-buffer.ts +226 -0
- package/src/secure-string.ts +244 -0
- package/src/services/aes-gcm.ts +220 -0
- package/src/services/chunk-processor.ts +188 -0
- package/src/services/ecies/README.md +147 -0
- package/src/services/ecies/crypto-core.ts +292 -0
- package/src/services/ecies/example.ts +185 -0
- package/src/services/ecies/file.ts +167 -0
- package/src/services/ecies/{index.js → index.ts} +2 -1
- package/src/services/ecies/integration.ts +241 -0
- package/src/services/ecies/interfaces.ts +62 -0
- package/src/services/ecies/manual-test.ts +219 -0
- package/src/services/ecies/multi-recipient.ts +545 -0
- package/src/services/ecies/service.ts +370 -0
- package/src/services/ecies/signature.ts +93 -0
- package/src/services/ecies/single-recipient.ts +476 -0
- package/src/services/encryption-stream.ts +435 -0
- package/src/services/{index.js → index.ts} +0 -1
- package/src/services/multi-recipient-processor.ts +377 -0
- package/src/services/password-login.ts +226 -0
- package/src/services/pbkdf2.ts +169 -0
- package/src/services/progress-tracker.ts +128 -0
- package/src/services/resumable-encryption.ts +135 -0
- package/src/services/xor.ts +65 -0
- package/src/test-mocks/index.ts +1 -0
- package/src/test-mocks/mock-frontend-member.ts +276 -0
- package/src/{testing.js → testing.ts} +0 -1
- package/src/translations/{de.js → de.ts} +112 -56
- package/src/translations/{en-US.js → en-US.ts} +116 -58
- package/src/translations/{es.js → es.ts} +134 -67
- package/src/translations/{fr.js → fr.ts} +129 -64
- package/src/translations/{ja.js → ja.ts} +111 -55
- package/src/translations/{uk.js → uk.ts} +132 -67
- package/src/translations/{zh-cn.js → zh-cn.ts} +60 -29
- package/src/types/deep-partial.ts +11 -0
- package/src/{types.d.ts → types.ts} +15 -7
- package/src/utils/encryption-type-utils.ts +76 -0
- package/src/utils.ts +329 -0
- package/src/builders/ecies-builder.d.ts +0 -18
- package/src/builders/ecies-builder.d.ts.map +0 -1
- package/src/builders/ecies-builder.js +0 -30
- package/src/builders/ecies-builder.js.map +0 -1
- package/src/builders/index.d.ts +0 -6
- package/src/builders/index.d.ts.map +0 -1
- package/src/builders/index.js.map +0 -1
- package/src/builders/member-builder.d.ts +0 -51
- package/src/builders/member-builder.d.ts.map +0 -1
- package/src/builders/member-builder.js +0 -97
- package/src/builders/member-builder.js.map +0 -1
- package/src/constants.d.ts +0 -60
- package/src/constants.d.ts.map +0 -1
- package/src/constants.js +0 -446
- package/src/constants.js.map +0 -1
- package/src/core/errors/crypto-error.d.ts +0 -34
- package/src/core/errors/crypto-error.d.ts.map +0 -1
- package/src/core/errors/crypto-error.js +0 -56
- package/src/core/errors/crypto-error.js.map +0 -1
- package/src/core/index.d.ts +0 -6
- package/src/core/index.d.ts.map +0 -1
- package/src/core/index.js.map +0 -1
- package/src/core/types/result.d.ts +0 -16
- package/src/core/types/result.d.ts.map +0 -1
- package/src/core/types/result.js +0 -12
- package/src/core/types/result.js.map +0 -1
- package/src/email-string.d.ts +0 -42
- package/src/email-string.d.ts.map +0 -1
- package/src/email-string.js +0 -67
- package/src/email-string.js.map +0 -1
- package/src/enumerations/disposed-error-type.d.ts +0 -12
- package/src/enumerations/disposed-error-type.d.ts.map +0 -1
- package/src/enumerations/disposed-error-type.js +0 -13
- package/src/enumerations/disposed-error-type.js.map +0 -1
- package/src/enumerations/ecies-cipher-suite.d.ts +0 -4
- package/src/enumerations/ecies-cipher-suite.d.ts.map +0 -1
- package/src/enumerations/ecies-cipher-suite.js +0 -6
- package/src/enumerations/ecies-cipher-suite.js.map +0 -1
- package/src/enumerations/ecies-encryption-type.d.ts +0 -11
- package/src/enumerations/ecies-encryption-type.d.ts.map +0 -1
- package/src/enumerations/ecies-encryption-type.js +0 -27
- package/src/enumerations/ecies-encryption-type.js.map +0 -1
- package/src/enumerations/ecies-error-type.d.ts +0 -44
- package/src/enumerations/ecies-error-type.d.ts.map +0 -1
- package/src/enumerations/ecies-error-type.js +0 -45
- package/src/enumerations/ecies-error-type.js.map +0 -1
- package/src/enumerations/ecies-string-key.d.ts +0 -192
- package/src/enumerations/ecies-string-key.d.ts.map +0 -1
- package/src/enumerations/ecies-string-key.js +0 -199
- package/src/enumerations/ecies-string-key.js.map +0 -1
- package/src/enumerations/ecies-version.d.ts +0 -4
- package/src/enumerations/ecies-version.d.ts.map +0 -1
- package/src/enumerations/ecies-version.js +0 -5
- package/src/enumerations/ecies-version.js.map +0 -1
- package/src/enumerations/guid-brand-type.d.ts +0 -27
- package/src/enumerations/guid-brand-type.d.ts.map +0 -1
- package/src/enumerations/guid-brand-type.js +0 -28
- package/src/enumerations/guid-brand-type.js.map +0 -1
- package/src/enumerations/guid-error-type.d.ts +0 -7
- package/src/enumerations/guid-error-type.d.ts.map +0 -1
- package/src/enumerations/guid-error-type.js +0 -8
- package/src/enumerations/guid-error-type.js.map +0 -1
- package/src/enumerations/id-provider-error-type.d.ts +0 -43
- package/src/enumerations/id-provider-error-type.d.ts.map +0 -1
- package/src/enumerations/id-provider-error-type.js +0 -44
- package/src/enumerations/id-provider-error-type.js.map +0 -1
- package/src/enumerations/index.d.ts +0 -18
- package/src/enumerations/index.d.ts.map +0 -1
- package/src/enumerations/index.js.map +0 -1
- package/src/enumerations/invalid-email-type.d.ts +0 -6
- package/src/enumerations/invalid-email-type.d.ts.map +0 -1
- package/src/enumerations/invalid-email-type.js +0 -7
- package/src/enumerations/invalid-email-type.js.map +0 -1
- package/src/enumerations/length-encoding-type.d.ts +0 -7
- package/src/enumerations/length-encoding-type.d.ts.map +0 -1
- package/src/enumerations/length-encoding-type.js +0 -8
- package/src/enumerations/length-encoding-type.js.map +0 -1
- package/src/enumerations/length-error-type.d.ts +0 -6
- package/src/enumerations/length-error-type.d.ts.map +0 -1
- package/src/enumerations/length-error-type.js +0 -7
- package/src/enumerations/length-error-type.js.map +0 -1
- package/src/enumerations/member-error-type.d.ts +0 -87
- package/src/enumerations/member-error-type.d.ts.map +0 -1
- package/src/enumerations/member-error-type.js +0 -88
- package/src/enumerations/member-error-type.js.map +0 -1
- package/src/enumerations/member-type.d.ts.map +0 -1
- package/src/enumerations/member-type.js +0 -16
- package/src/enumerations/member-type.js.map +0 -1
- package/src/enumerations/password-login-error-type.d.ts +0 -5
- package/src/enumerations/password-login-error-type.d.ts.map +0 -1
- package/src/enumerations/password-login-error-type.js +0 -6
- package/src/enumerations/password-login-error-type.js.map +0 -1
- package/src/enumerations/pbkdf2-error-type.d.ts +0 -6
- package/src/enumerations/pbkdf2-error-type.d.ts.map +0 -1
- package/src/enumerations/pbkdf2-error-type.js +0 -7
- package/src/enumerations/pbkdf2-error-type.js.map +0 -1
- package/src/enumerations/pbkdf2-profile.d.ts +0 -6
- package/src/enumerations/pbkdf2-profile.d.ts.map +0 -1
- package/src/enumerations/pbkdf2-profile.js +0 -7
- package/src/enumerations/pbkdf2-profile.js.map +0 -1
- package/src/enumerations/secure-storage-error-type.d.ts +0 -6
- package/src/enumerations/secure-storage-error-type.d.ts.map +0 -1
- package/src/enumerations/secure-storage-error-type.js +0 -7
- package/src/enumerations/secure-storage-error-type.js.map +0 -1
- package/src/errors/disposed.d.ts +0 -22
- package/src/errors/disposed.d.ts.map +0 -1
- package/src/errors/disposed.js +0 -28
- package/src/errors/disposed.js.map +0 -1
- package/src/errors/ecies.d.ts +0 -52
- package/src/errors/ecies.d.ts.map +0 -1
- package/src/errors/ecies.js +0 -78
- package/src/errors/ecies.js.map +0 -1
- package/src/errors/guid.d.ts +0 -49
- package/src/errors/guid.d.ts.map +0 -1
- package/src/errors/guid.js +0 -96
- package/src/errors/guid.js.map +0 -1
- package/src/errors/id-provider.d.ts +0 -23
- package/src/errors/id-provider.d.ts.map +0 -1
- package/src/errors/id-provider.js +0 -29
- package/src/errors/id-provider.js.map +0 -1
- package/src/errors/index.d.ts.map +0 -1
- package/src/errors/index.js +0 -10
- package/src/errors/index.js.map +0 -1
- package/src/errors/invalid-email.d.ts +0 -8
- package/src/errors/invalid-email.d.ts.map +0 -1
- package/src/errors/invalid-email.js +0 -15
- package/src/errors/invalid-email.js.map +0 -1
- package/src/errors/length.d.ts +0 -7
- package/src/errors/length.d.ts.map +0 -1
- package/src/errors/length.js +0 -11
- package/src/errors/length.js.map +0 -1
- package/src/errors/member.d.ts +0 -7
- package/src/errors/member.d.ts.map +0 -1
- package/src/errors/member.js +0 -11
- package/src/errors/member.js.map +0 -1
- package/src/errors/pbkdf2.d.ts +0 -7
- package/src/errors/pbkdf2.d.ts.map +0 -1
- package/src/errors/pbkdf2.js +0 -11
- package/src/errors/pbkdf2.js.map +0 -1
- package/src/errors/secure-storage.d.ts +0 -7
- package/src/errors/secure-storage.d.ts.map +0 -1
- package/src/errors/secure-storage.js +0 -12
- package/src/errors/secure-storage.js.map +0 -1
- package/src/errors/simple-ecies.d.ts +0 -6
- package/src/errors/simple-ecies.d.ts.map +0 -1
- package/src/errors/simple-ecies.js +0 -12
- package/src/errors/simple-ecies.js.map +0 -1
- package/src/errors/simple-test-error.d.ts +0 -4
- package/src/errors/simple-test-error.d.ts.map +0 -1
- package/src/errors/simple-test-error.js +0 -7
- package/src/errors/simple-test-error.js.map +0 -1
- package/src/i18n-setup.d.ts +0 -32
- package/src/i18n-setup.d.ts.map +0 -1
- package/src/i18n-setup.js +0 -101
- package/src/i18n-setup.js.map +0 -1
- package/src/index.d.ts +0 -80
- package/src/index.d.ts.map +0 -1
- package/src/index.js.map +0 -1
- package/src/interfaces/checksum-config.d.ts +0 -5
- package/src/interfaces/checksum-config.d.ts.map +0 -1
- package/src/interfaces/checksum-config.js +0 -2
- package/src/interfaces/checksum-config.js.map +0 -1
- package/src/interfaces/checksum-consts.d.ts +0 -11
- package/src/interfaces/checksum-consts.d.ts.map +0 -1
- package/src/interfaces/checksum-consts.js +0 -2
- package/src/interfaces/checksum-consts.js.map +0 -1
- package/src/interfaces/configuration-provenance.d.ts +0 -43
- package/src/interfaces/configuration-provenance.d.ts.map +0 -1
- package/src/interfaces/configuration-provenance.js +0 -3
- package/src/interfaces/configuration-provenance.js.map +0 -1
- package/src/interfaces/constants.d.ts +0 -70
- package/src/interfaces/constants.d.ts.map +0 -1
- package/src/interfaces/constants.js +0 -2
- package/src/interfaces/constants.js.map +0 -1
- package/src/interfaces/ecies-config.d.ts +0 -9
- package/src/interfaces/ecies-config.d.ts.map +0 -1
- package/src/interfaces/ecies-config.js +0 -2
- package/src/interfaces/ecies-config.js.map +0 -1
- package/src/interfaces/ecies-consts.d.ts +0 -61
- package/src/interfaces/ecies-consts.d.ts.map +0 -1
- package/src/interfaces/ecies-consts.js +0 -2
- package/src/interfaces/ecies-consts.js.map +0 -1
- package/src/interfaces/ecies-file-service.d.ts +0 -7
- package/src/interfaces/ecies-file-service.d.ts.map +0 -1
- package/src/interfaces/ecies-file-service.js +0 -2
- package/src/interfaces/ecies-file-service.js.map +0 -1
- package/src/interfaces/encrypted-chunk.d.ts +0 -55
- package/src/interfaces/encrypted-chunk.d.ts.map +0 -1
- package/src/interfaces/encrypted-chunk.js +0 -12
- package/src/interfaces/encrypted-chunk.js.map +0 -1
- package/src/interfaces/encryption-state.d.ts +0 -18
- package/src/interfaces/encryption-state.d.ts.map +0 -1
- package/src/interfaces/encryption-state.js +0 -2
- package/src/interfaces/encryption-state.js.map +0 -1
- package/src/interfaces/frontend-member-operational.d.ts +0 -51
- package/src/interfaces/frontend-member-operational.d.ts.map +0 -1
- package/src/interfaces/frontend-member-operational.js +0 -2
- package/src/interfaces/frontend-member-operational.js.map +0 -1
- package/src/interfaces/guid.d.ts +0 -78
- package/src/interfaces/guid.d.ts.map +0 -1
- package/src/interfaces/guid.js +0 -2
- package/src/interfaces/guid.js.map +0 -1
- package/src/interfaces/id-provider.d.ts +0 -107
- package/src/interfaces/id-provider.d.ts.map +0 -1
- package/src/interfaces/id-provider.js +0 -52
- package/src/interfaces/id-provider.js.map +0 -1
- package/src/interfaces/index.d.ts.map +0 -1
- package/src/interfaces/index.js +0 -13
- package/src/interfaces/index.js.map +0 -1
- package/src/interfaces/invariant.d.ts +0 -46
- package/src/interfaces/invariant.d.ts.map +0 -1
- package/src/interfaces/invariant.js +0 -18
- package/src/interfaces/invariant.js.map +0 -1
- package/src/interfaces/library-error.d.ts +0 -23
- package/src/interfaces/library-error.d.ts.map +0 -1
- package/src/interfaces/library-error.js +0 -2
- package/src/interfaces/library-error.js.map +0 -1
- package/src/interfaces/member-storage.d.ts.map +0 -1
- package/src/interfaces/member-storage.js +0 -2
- package/src/interfaces/member-storage.js.map +0 -1
- package/src/interfaces/member-with-mnemonic.d.ts.map +0 -1
- package/src/interfaces/member-with-mnemonic.js +0 -2
- package/src/interfaces/member-with-mnemonic.js.map +0 -1
- package/src/interfaces/member.d.ts +0 -55
- package/src/interfaces/member.d.ts.map +0 -1
- package/src/interfaces/member.js +0 -2
- package/src/interfaces/member.js.map +0 -1
- package/src/interfaces/multi-recipient-chunk.d.ts +0 -54
- package/src/interfaces/multi-recipient-chunk.d.ts.map +0 -1
- package/src/interfaces/multi-recipient-chunk.js +0 -11
- package/src/interfaces/multi-recipient-chunk.js.map +0 -1
- package/src/interfaces/pbkdf2-config.d.ts +0 -7
- package/src/interfaces/pbkdf2-config.d.ts.map +0 -1
- package/src/interfaces/pbkdf2-config.js +0 -2
- package/src/interfaces/pbkdf2-config.js.map +0 -1
- package/src/interfaces/pbkdf2-consts.d.ts +0 -9
- package/src/interfaces/pbkdf2-consts.d.ts.map +0 -1
- package/src/interfaces/pbkdf2-consts.js +0 -2
- package/src/interfaces/pbkdf2-consts.js.map +0 -1
- package/src/interfaces/pbkdf2-result.d.ts +0 -6
- package/src/interfaces/pbkdf2-result.d.ts.map +0 -1
- package/src/interfaces/pbkdf2-result.js +0 -2
- package/src/interfaces/pbkdf2-result.js.map +0 -1
- package/src/interfaces/stream-config.d.ts +0 -14
- package/src/interfaces/stream-config.d.ts.map +0 -1
- package/src/interfaces/stream-config.js +0 -8
- package/src/interfaces/stream-config.js.map +0 -1
- package/src/interfaces/stream-header.d.ts +0 -29
- package/src/interfaces/stream-header.d.ts.map +0 -1
- package/src/interfaces/stream-header.js +0 -9
- package/src/interfaces/stream-header.js.map +0 -1
- package/src/interfaces/stream-progress.d.ts +0 -33
- package/src/interfaces/stream-progress.d.ts.map +0 -1
- package/src/interfaces/stream-progress.js +0 -2
- package/src/interfaces/stream-progress.js.map +0 -1
- package/src/lib/configuration-provenance-utils.d.ts +0 -11
- package/src/lib/configuration-provenance-utils.d.ts.map +0 -1
- package/src/lib/configuration-provenance-utils.js +0 -23
- package/src/lib/configuration-provenance-utils.js.map +0 -1
- package/src/lib/crypto-container.d.ts +0 -25
- package/src/lib/crypto-container.d.ts.map +0 -1
- package/src/lib/crypto-container.js +0 -46
- package/src/lib/crypto-container.js.map +0 -1
- package/src/lib/guid.d.ts +0 -344
- package/src/lib/guid.d.ts.map +0 -1
- package/src/lib/guid.js +0 -914
- package/src/lib/guid.js.map +0 -1
- package/src/lib/id-providers/custom-provider.d.ts +0 -46
- package/src/lib/id-providers/custom-provider.d.ts.map +0 -1
- package/src/lib/id-providers/custom-provider.js +0 -85
- package/src/lib/id-providers/custom-provider.js.map +0 -1
- package/src/lib/id-providers/guidv4-provider.d.ts +0 -56
- package/src/lib/id-providers/guidv4-provider.d.ts.map +0 -1
- package/src/lib/id-providers/guidv4-provider.js +0 -122
- package/src/lib/id-providers/guidv4-provider.js.map +0 -1
- package/src/lib/id-providers/index.d.ts.map +0 -1
- package/src/lib/id-providers/index.js +0 -29
- package/src/lib/id-providers/index.js.map +0 -1
- package/src/lib/id-providers/objectid-provider.d.ts +0 -43
- package/src/lib/id-providers/objectid-provider.d.ts.map +0 -1
- package/src/lib/id-providers/objectid-provider.js +0 -104
- package/src/lib/id-providers/objectid-provider.js.map +0 -1
- package/src/lib/id-providers/uuid-provider.d.ts +0 -52
- package/src/lib/id-providers/uuid-provider.d.ts.map +0 -1
- package/src/lib/id-providers/uuid-provider.js +0 -110
- package/src/lib/id-providers/uuid-provider.js.map +0 -1
- package/src/lib/index.d.ts +0 -6
- package/src/lib/index.d.ts.map +0 -1
- package/src/lib/index.js.map +0 -1
- package/src/lib/invariant-validator.d.ts +0 -59
- package/src/lib/invariant-validator.d.ts.map +0 -1
- package/src/lib/invariant-validator.js +0 -97
- package/src/lib/invariant-validator.js.map +0 -1
- package/src/lib/invariants/encryption-algorithm-consistency.d.ts +0 -17
- package/src/lib/invariants/encryption-algorithm-consistency.d.ts.map +0 -1
- package/src/lib/invariants/encryption-algorithm-consistency.js +0 -49
- package/src/lib/invariants/encryption-algorithm-consistency.js.map +0 -1
- package/src/lib/invariants/index.d.ts +0 -4
- package/src/lib/invariants/index.d.ts.map +0 -1
- package/src/lib/invariants/index.js.map +0 -1
- package/src/lib/invariants/pbkdf2-profiles-validity.d.ts +0 -16
- package/src/lib/invariants/pbkdf2-profiles-validity.d.ts.map +0 -1
- package/src/lib/invariants/pbkdf2-profiles-validity.js +0 -58
- package/src/lib/invariants/pbkdf2-profiles-validity.js.map +0 -1
- package/src/lib/invariants/recipient-id-consistency.d.ts +0 -18
- package/src/lib/invariants/recipient-id-consistency.d.ts.map +0 -1
- package/src/lib/invariants/recipient-id-consistency.js +0 -31
- package/src/lib/invariants/recipient-id-consistency.js.map +0 -1
- package/src/lib/multi-recipient-chunk-utils.d.ts +0 -38
- package/src/lib/multi-recipient-chunk-utils.d.ts.map +0 -1
- package/src/lib/multi-recipient-chunk-utils.js +0 -41
- package/src/lib/multi-recipient-chunk-utils.js.map +0 -1
- package/src/member.d.ts +0 -92
- package/src/member.d.ts.map +0 -1
- package/src/member.js +0 -322
- package/src/member.js.map +0 -1
- package/src/pbkdf2-profiles.d.ts.map +0 -1
- package/src/pbkdf2-profiles.js +0 -2
- package/src/pbkdf2-profiles.js.map +0 -1
- package/src/phone-number.d.ts +0 -6
- package/src/phone-number.d.ts.map +0 -1
- package/src/phone-number.js +0 -18
- package/src/phone-number.js.map +0 -1
- package/src/regexes.d.ts +0 -7
- package/src/regexes.d.ts.map +0 -1
- package/src/regexes.js +0 -7
- package/src/regexes.js.map +0 -1
- package/src/secure-buffer.d.ts +0 -61
- package/src/secure-buffer.d.ts.map +0 -1
- package/src/secure-buffer.js +0 -201
- package/src/secure-buffer.js.map +0 -1
- package/src/secure-string.d.ts +0 -46
- package/src/secure-string.d.ts.map +0 -1
- package/src/secure-string.js +0 -206
- package/src/secure-string.js.map +0 -1
- package/src/services/aes-gcm.d.ts +0 -57
- package/src/services/aes-gcm.d.ts.map +0 -1
- package/src/services/aes-gcm.js +0 -142
- package/src/services/aes-gcm.js.map +0 -1
- package/src/services/chunk-processor.d.ts +0 -31
- package/src/services/chunk-processor.d.ts.map +0 -1
- package/src/services/chunk-processor.js +0 -145
- package/src/services/chunk-processor.js.map +0 -1
- package/src/services/ecies/crypto-core.d.ts +0 -72
- package/src/services/ecies/crypto-core.d.ts.map +0 -1
- package/src/services/ecies/crypto-core.js +0 -205
- package/src/services/ecies/crypto-core.js.map +0 -1
- package/src/services/ecies/example.d.ts +0 -25
- package/src/services/ecies/example.d.ts.map +0 -1
- package/src/services/ecies/example.js +0 -121
- package/src/services/ecies/example.js.map +0 -1
- package/src/services/ecies/file.d.ts +0 -18
- package/src/services/ecies/file.d.ts.map +0 -1
- package/src/services/ecies/file.js +0 -106
- package/src/services/ecies/file.js.map +0 -1
- package/src/services/ecies/index.d.ts +0 -38
- package/src/services/ecies/index.d.ts.map +0 -1
- package/src/services/ecies/index.js.map +0 -1
- package/src/services/ecies/integration.d.ts +0 -59
- package/src/services/ecies/integration.d.ts.map +0 -1
- package/src/services/ecies/integration.js +0 -167
- package/src/services/ecies/integration.js.map +0 -1
- package/src/services/ecies/interfaces.d.ts +0 -54
- package/src/services/ecies/interfaces.d.ts.map +0 -1
- package/src/services/ecies/interfaces.js +0 -5
- package/src/services/ecies/interfaces.js.map +0 -1
- package/src/services/ecies/manual-test.d.ts +0 -29
- package/src/services/ecies/manual-test.d.ts.map +0 -1
- package/src/services/ecies/manual-test.js +0 -163
- package/src/services/ecies/manual-test.js.map +0 -1
- package/src/services/ecies/multi-recipient.d.ts +0 -56
- package/src/services/ecies/multi-recipient.d.ts.map +0 -1
- package/src/services/ecies/multi-recipient.js +0 -344
- package/src/services/ecies/multi-recipient.js.map +0 -1
- package/src/services/ecies/service.d.ts +0 -120
- package/src/services/ecies/service.d.ts.map +0 -1
- package/src/services/ecies/service.js +0 -210
- package/src/services/ecies/service.js.map +0 -1
- package/src/services/ecies/signature.d.ts +0 -27
- package/src/services/ecies/signature.d.ts.map +0 -1
- package/src/services/ecies/signature.js +0 -72
- package/src/services/ecies/signature.js.map +0 -1
- package/src/services/ecies/single-recipient.d.ts +0 -46
- package/src/services/ecies/single-recipient.d.ts.map +0 -1
- package/src/services/ecies/single-recipient.js +0 -322
- package/src/services/ecies/single-recipient.js.map +0 -1
- package/src/services/encryption-stream.d.ts +0 -71
- package/src/services/encryption-stream.d.ts.map +0 -1
- package/src/services/encryption-stream.js +0 -295
- package/src/services/encryption-stream.js.map +0 -1
- package/src/services/index.d.ts +0 -11
- package/src/services/index.d.ts.map +0 -1
- package/src/services/index.js.map +0 -1
- package/src/services/multi-recipient-processor.d.ts +0 -35
- package/src/services/multi-recipient-processor.d.ts.map +0 -1
- package/src/services/multi-recipient-processor.js +0 -289
- package/src/services/multi-recipient-processor.js.map +0 -1
- package/src/services/password-login.d.ts +0 -47
- package/src/services/password-login.d.ts.map +0 -1
- package/src/services/password-login.js +0 -115
- package/src/services/password-login.js.map +0 -1
- package/src/services/pbkdf2.d.ts +0 -54
- package/src/services/pbkdf2.d.ts.map +0 -1
- package/src/services/pbkdf2.js +0 -108
- package/src/services/pbkdf2.js.map +0 -1
- package/src/services/progress-tracker.d.ts +0 -23
- package/src/services/progress-tracker.d.ts.map +0 -1
- package/src/services/progress-tracker.js +0 -103
- package/src/services/progress-tracker.js.map +0 -1
- package/src/services/resumable-encryption.d.ts +0 -19
- package/src/services/resumable-encryption.d.ts.map +0 -1
- package/src/services/resumable-encryption.js +0 -105
- package/src/services/resumable-encryption.js.map +0 -1
- package/src/services/xor.d.ts +0 -37
- package/src/services/xor.d.ts.map +0 -1
- package/src/services/xor.js +0 -63
- package/src/services/xor.js.map +0 -1
- package/src/test-mocks/index.d.ts +0 -2
- package/src/test-mocks/index.d.ts.map +0 -1
- package/src/test-mocks/index.js +0 -2
- package/src/test-mocks/index.js.map +0 -1
- package/src/test-mocks/mock-frontend-member.d.ts +0 -85
- package/src/test-mocks/mock-frontend-member.d.ts.map +0 -1
- package/src/test-mocks/mock-frontend-member.js +0 -190
- package/src/test-mocks/mock-frontend-member.js.map +0 -1
- package/src/testing.d.ts +0 -2
- package/src/testing.d.ts.map +0 -1
- package/src/testing.js.map +0 -1
- package/src/translations/de.d.ts +0 -4
- package/src/translations/de.d.ts.map +0 -1
- package/src/translations/de.js.map +0 -1
- package/src/translations/en-US.d.ts +0 -4
- package/src/translations/en-US.d.ts.map +0 -1
- package/src/translations/en-US.js.map +0 -1
- package/src/translations/es.d.ts +0 -4
- package/src/translations/es.d.ts.map +0 -1
- package/src/translations/es.js.map +0 -1
- package/src/translations/fr.d.ts +0 -4
- package/src/translations/fr.d.ts.map +0 -1
- package/src/translations/fr.js.map +0 -1
- package/src/translations/ja.d.ts +0 -4
- package/src/translations/ja.d.ts.map +0 -1
- package/src/translations/ja.js.map +0 -1
- package/src/translations/uk.d.ts +0 -4
- package/src/translations/uk.d.ts.map +0 -1
- package/src/translations/uk.js.map +0 -1
- package/src/translations/zh-cn.d.ts +0 -4
- package/src/translations/zh-cn.d.ts.map +0 -1
- package/src/translations/zh-cn.js.map +0 -1
- package/src/types/deep-partial.d.ts +0 -4
- package/src/types/deep-partial.d.ts.map +0 -1
- package/src/types/deep-partial.js +0 -2
- package/src/types/deep-partial.js.map +0 -1
- package/src/types.d.ts.map +0 -1
- package/src/types.js +0 -2
- package/src/types.js.map +0 -1
- package/src/utils/encryption-type-utils.d.ts +0 -29
- package/src/utils/encryption-type-utils.d.ts.map +0 -1
- package/src/utils/encryption-type-utils.js +0 -61
- package/src/utils/encryption-type-utils.js.map +0 -1
- package/src/utils.d.ts +0 -68
- package/src/utils.d.ts.map +0 -1
- package/src/utils.js +0 -273
- package/src/utils.js.map +0 -1
package/src/services/aes-gcm.js
DELETED
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
import { Constants } from '../constants';
|
|
2
|
-
import { EciesComponentId, getEciesI18nEngine } from '../i18n-setup';
|
|
3
|
-
import { EciesStringKey } from '../enumerations';
|
|
4
|
-
export class AESGCMService {
|
|
5
|
-
static ALGORITHM_NAME = 'AES-GCM';
|
|
6
|
-
/**
|
|
7
|
-
* Encrypt data using AES-GCM
|
|
8
|
-
* @param data Data to encrypt
|
|
9
|
-
* @param key Key to use for encryption (must be 16, 24 or 32 bytes for AES)
|
|
10
|
-
* @returns Encrypted data
|
|
11
|
-
*/
|
|
12
|
-
static async encrypt(data, key, authTag = false, eciesParams = Constants.ECIES, aad) {
|
|
13
|
-
// Validate key length (AES supports 16, 24, or 32 bytes)
|
|
14
|
-
if (!key || (key.length !== 16 && key.length !== 24 && key.length !== 32)) {
|
|
15
|
-
const engine = getEciesI18nEngine();
|
|
16
|
-
throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_InvalidAESKeyLength));
|
|
17
|
-
}
|
|
18
|
-
// Validate data exists (empty data is allowed for AES-GCM)
|
|
19
|
-
if (!data) {
|
|
20
|
-
const engine = getEciesI18nEngine();
|
|
21
|
-
throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_CannotEncryptEmptyData));
|
|
22
|
-
}
|
|
23
|
-
if (data.length > eciesParams.MAX_RAW_DATA_SIZE) {
|
|
24
|
-
const engine = getEciesI18nEngine();
|
|
25
|
-
throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_MessageLengthExceedsMaximumAllowedSizeTemplate, { messageLength: data.length }));
|
|
26
|
-
}
|
|
27
|
-
const cryptoKey = await crypto.subtle.importKey('raw', new Uint8Array(key), { name: AESGCMService.ALGORITHM_NAME }, false, ['encrypt']);
|
|
28
|
-
const eciesConsts = eciesParams;
|
|
29
|
-
const iv = crypto.getRandomValues(new Uint8Array(eciesConsts.IV_SIZE));
|
|
30
|
-
const encryptedResult = await crypto.subtle.encrypt({
|
|
31
|
-
name: AESGCMService.ALGORITHM_NAME,
|
|
32
|
-
iv,
|
|
33
|
-
additionalData: aad,
|
|
34
|
-
...(authTag && { tagLength: eciesConsts.AUTH_TAG_SIZE * 8 }),
|
|
35
|
-
}, cryptoKey, new Uint8Array(data));
|
|
36
|
-
const encryptedArray = new Uint8Array(encryptedResult);
|
|
37
|
-
if (!authTag) {
|
|
38
|
-
return { encrypted: encryptedArray, iv };
|
|
39
|
-
}
|
|
40
|
-
const authTagLengthBytes = eciesConsts.AUTH_TAG_SIZE;
|
|
41
|
-
const encryptedBytes = encryptedArray.slice(0, -authTagLengthBytes); // Remove auth tag
|
|
42
|
-
const authTagBytes = encryptedArray.slice(-authTagLengthBytes); // Last 16 bytes are auth tag
|
|
43
|
-
return { encrypted: encryptedBytes, iv, tag: authTagBytes };
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Combine encrypted data and auth tag into a single Uint8Array
|
|
47
|
-
* @param encryptedData The encrypted data
|
|
48
|
-
* @param authTag The authentication tag
|
|
49
|
-
* @returns The combined Uint8Array
|
|
50
|
-
*/
|
|
51
|
-
static combineEncryptedDataAndTag(encryptedData, authTag) {
|
|
52
|
-
const combined = new Uint8Array(encryptedData.length + authTag.length);
|
|
53
|
-
combined.set(encryptedData);
|
|
54
|
-
combined.set(authTag, encryptedData.length);
|
|
55
|
-
return combined;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Combine IV and encrypted data (with optional auth tag) into a single Uint8Array
|
|
59
|
-
* @param iv The initialization vector
|
|
60
|
-
* @param encryptedDataWithTag The encrypted data with auth tag already appended (if applicable)
|
|
61
|
-
* @returns The combined Uint8Array
|
|
62
|
-
*/
|
|
63
|
-
static combineIvAndEncryptedData(iv, encryptedDataWithTag) {
|
|
64
|
-
const combined = new Uint8Array(iv.length + encryptedDataWithTag.length);
|
|
65
|
-
combined.set(iv);
|
|
66
|
-
combined.set(encryptedDataWithTag, iv.length);
|
|
67
|
-
return combined;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Combine IV, encrypted data and auth tag into a single Uint8Array
|
|
71
|
-
* @param iv The initialization vector
|
|
72
|
-
* @param encryptedData The encrypted data
|
|
73
|
-
* @param authTag The authentication tag
|
|
74
|
-
* @returns The combined Uint8Array
|
|
75
|
-
*/
|
|
76
|
-
static combineIvTagAndEncryptedData(iv, encryptedData, authTag) {
|
|
77
|
-
const encryptedWithTag = AESGCMService.combineEncryptedDataAndTag(encryptedData, authTag);
|
|
78
|
-
return AESGCMService.combineIvAndEncryptedData(iv, encryptedWithTag);
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Split combined encrypted data back into its components
|
|
82
|
-
* @param combinedData The combined data containing IV, encrypted data, and optionally auth tag
|
|
83
|
-
* @param hasAuthTag Whether the combined data includes an authentication tag
|
|
84
|
-
* @returns Object containing the split components
|
|
85
|
-
*/
|
|
86
|
-
static splitEncryptedData(combinedData, hasAuthTag = true, eciesParams = Constants.ECIES) {
|
|
87
|
-
const eciesConsts = eciesParams;
|
|
88
|
-
const ivLength = eciesConsts.IV_SIZE;
|
|
89
|
-
const tagLength = hasAuthTag ? eciesConsts.AUTH_TAG_SIZE : 0;
|
|
90
|
-
if (combinedData.length < ivLength + tagLength) {
|
|
91
|
-
const engine = getEciesI18nEngine();
|
|
92
|
-
throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_CombinedDataTooShortForComponents));
|
|
93
|
-
}
|
|
94
|
-
const iv = combinedData.slice(0, ivLength);
|
|
95
|
-
const encryptedDataWithTag = combinedData.slice(ivLength);
|
|
96
|
-
return { iv, encryptedDataWithTag };
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Decrypt data using AES-GCM
|
|
100
|
-
* @param iv The initialization vector
|
|
101
|
-
* @param encryptedData Data to decrypt (with auth tag appended if authTag is true)
|
|
102
|
-
* @param key Key to use for decryption (must be 16, 24 or 32 bytes for AES)
|
|
103
|
-
* @param authTag Whether the encrypted data includes an authentication tag
|
|
104
|
-
* @returns Decrypted data
|
|
105
|
-
*/
|
|
106
|
-
static async decrypt(iv, encryptedData, key, authTag = false, eciesParams = Constants.ECIES, aad) {
|
|
107
|
-
const eciesConsts = eciesParams;
|
|
108
|
-
// Validate key length
|
|
109
|
-
if (!key || (key.length !== 16 && key.length !== 24 && key.length !== 32)) {
|
|
110
|
-
const engine = getEciesI18nEngine();
|
|
111
|
-
throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_InvalidAESKeyLength));
|
|
112
|
-
}
|
|
113
|
-
// Validate IV
|
|
114
|
-
if (!iv || iv.length !== eciesConsts.IV_SIZE) {
|
|
115
|
-
const engine = getEciesI18nEngine();
|
|
116
|
-
throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_InvalidIV));
|
|
117
|
-
}
|
|
118
|
-
// Validate encrypted data exists (empty encrypted data is allowed)
|
|
119
|
-
if (!encryptedData) {
|
|
120
|
-
const engine = getEciesI18nEngine();
|
|
121
|
-
throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_CannotDecryptEmptyData));
|
|
122
|
-
}
|
|
123
|
-
const cryptoKey = await crypto.subtle.importKey('raw', new Uint8Array(key), { name: AESGCMService.ALGORITHM_NAME }, false, ['decrypt']);
|
|
124
|
-
if (!authTag) {
|
|
125
|
-
const decrypted = await crypto.subtle.decrypt({
|
|
126
|
-
name: AESGCMService.ALGORITHM_NAME,
|
|
127
|
-
iv: new Uint8Array(iv),
|
|
128
|
-
additionalData: aad,
|
|
129
|
-
}, cryptoKey, new Uint8Array(encryptedData));
|
|
130
|
-
return new Uint8Array(decrypted);
|
|
131
|
-
}
|
|
132
|
-
// Decrypt with auth tag (already appended to encryptedData)
|
|
133
|
-
const decryptedResult = await crypto.subtle.decrypt({
|
|
134
|
-
name: AESGCMService.ALGORITHM_NAME,
|
|
135
|
-
iv: new Uint8Array(iv),
|
|
136
|
-
tagLength: eciesConsts.AUTH_TAG_SIZE * 8,
|
|
137
|
-
additionalData: aad,
|
|
138
|
-
}, cryptoKey, new Uint8Array(encryptedData));
|
|
139
|
-
return new Uint8Array(decryptedResult);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
//# sourceMappingURL=aes-gcm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"aes-gcm.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/services/aes-gcm.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,OAAgB,aAAa;IAC1B,MAAM,CAAU,cAAc,GAAG,SAAS,CAAC;IAClD;;;;;OAKG;IACI,MAAM,CAAC,KAAK,CAAC,OAAO,CACzB,IAAgB,EAChB,GAAe,EACf,UAAmB,KAAK,EACxB,cAA+B,SAAS,CAAC,KAAK,EAC9C,GAAgB;QAEhB,yDAAyD;QACzD,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,CAAC,EAAE,CAAC;YAC1E,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAC3G,CAAC;QAED,2DAA2D;QAC3D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC,uCAAuC,CAAC,CAAC,CAAC;QAC9G,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,iBAAiB,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC,+DAA+D,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACtK,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAC7C,KAAK,EACL,IAAI,UAAU,CAAC,GAAG,CAAC,EACnB,EAAE,IAAI,EAAE,aAAa,CAAC,cAAc,EAAE,EACtC,KAAK,EACL,CAAC,SAAS,CAAC,CACZ,CAAC;QAEF,MAAM,WAAW,GAAG,WAAW,CAAC;QAChC,MAAM,EAAE,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QACvE,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CACjD;YACE,IAAI,EAAE,aAAa,CAAC,cAAc;YAClC,EAAE;YACF,cAAc,EAAE,GAAG;YACnB,GAAG,CAAC,OAAO,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;SAC7D,EACD,SAAS,EACT,IAAI,UAAU,CAAC,IAAI,CAAC,CACrB,CAAC;QAEF,MAAM,cAAc,GAAG,IAAI,UAAU,CAAC,eAAe,CAAC,CAAC;QACvD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;QAC3C,CAAC;QACD,MAAM,kBAAkB,GAAG,WAAW,CAAC,aAAa,CAAC;QACrD,MAAM,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,kBAAkB;QACvF,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,6BAA6B;QAE7F,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC;IAC9D,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,0BAA0B,CACtC,aAAyB,EACzB,OAAmB;QAEnB,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,aAAa,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QACvE,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC5B,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,yBAAyB,CACrC,EAAc,EACd,oBAAgC;QAEhC,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACzE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjB,QAAQ,CAAC,GAAG,CAAC,oBAAoB,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,4BAA4B,CACxC,EAAc,EACd,aAAyB,EACzB,OAAmB;QAEnB,MAAM,gBAAgB,GAAG,aAAa,CAAC,0BAA0B,CAC/D,aAAa,EACb,OAAO,CACR,CAAC;QACF,OAAO,aAAa,CAAC,yBAAyB,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;IACvE,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,kBAAkB,CAC9B,YAAwB,EACxB,aAAsB,IAAI,EAC1B,cAA+B,SAAS,CAAC,KAAK;QAE9C,MAAM,WAAW,GAAG,WAAW,CAAC;QAChC,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC;QACrC,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7D,IAAI,YAAY,CAAC,MAAM,GAAG,QAAQ,GAAG,SAAS,EAAE,CAAC;YAC/C,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CACb,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC,kDAAkD,CAAC,CACtG,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC3C,MAAM,oBAAoB,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE1D,OAAO,EAAE,EAAE,EAAE,oBAAoB,EAAE,CAAC;IACtC,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,KAAK,CAAC,OAAO,CACzB,EAAc,EACd,aAAyB,EACzB,GAAe,EACf,UAAmB,KAAK,EACxB,cAA+B,SAAS,CAAC,KAAK,EAC9C,GAAgB;QAEhB,MAAM,WAAW,GAAG,WAAW,CAAC;QAEhC,sBAAsB;QACtB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,CAAC,EAAE,CAAC;YAC1E,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAC3G,CAAC;QAED,cAAc;QACd,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACjG,CAAC;QAED,mEAAmE;QACnE,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC,uCAAuC,CAAC,CAAC,CAAC;QAC9G,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAC7C,KAAK,EACL,IAAI,UAAU,CAAC,GAAG,CAAC,EACnB,EAAE,IAAI,EAAE,aAAa,CAAC,cAAc,EAAE,EACtC,KAAK,EACL,CAAC,SAAS,CAAC,CACZ,CAAC;QAEF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAC3C;gBACE,IAAI,EAAE,aAAa,CAAC,cAAc;gBAClC,EAAE,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC;gBACtB,cAAc,EAAE,GAAG;aACpB,EACD,SAAS,EACT,IAAI,UAAU,CAAC,aAAa,CAAC,CAC9B,CAAC;YAEF,OAAO,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;QAED,4DAA4D;QAC5D,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CACjD;YACE,IAAI,EAAE,aAAa,CAAC,cAAc;YAClC,EAAE,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC;YACtB,SAAS,EAAE,WAAW,CAAC,aAAa,GAAG,CAAC;YACxC,cAAc,EAAE,GAAG;SACpB,EACD,SAAS,EACT,IAAI,UAAU,CAAC,aAAa,CAAC,CAC9B,CAAC;QAEF,OAAO,IAAI,UAAU,CAAC,eAAe,CAAC,CAAC;IACzC,CAAC"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { IECIESConstants } from '../interfaces/ecies-consts';
|
|
2
|
-
import { IChunkHeader, IEncryptedChunk } from '../interfaces/encrypted-chunk';
|
|
3
|
-
import { ECIESService } from './ecies/service';
|
|
4
|
-
/**
|
|
5
|
-
* Processes chunks for streaming encryption/decryption
|
|
6
|
-
*/
|
|
7
|
-
export declare class ChunkProcessor {
|
|
8
|
-
private readonly ecies;
|
|
9
|
-
private readonly eciesConsts;
|
|
10
|
-
constructor(ecies: ECIESService, eciesConsts?: IECIESConstants);
|
|
11
|
-
/**
|
|
12
|
-
* Build chunk header
|
|
13
|
-
*/
|
|
14
|
-
buildChunkHeader(header: IChunkHeader): Uint8Array;
|
|
15
|
-
/**
|
|
16
|
-
* Parse chunk header
|
|
17
|
-
*/
|
|
18
|
-
parseChunkHeader(data: Uint8Array): IChunkHeader;
|
|
19
|
-
/**
|
|
20
|
-
* Encrypt a single chunk
|
|
21
|
-
*/
|
|
22
|
-
encryptChunk(data: Uint8Array, publicKey: Uint8Array, index: number, isLast: boolean, includeChecksum: boolean): Promise<IEncryptedChunk>;
|
|
23
|
-
/**
|
|
24
|
-
* Decrypt a single chunk
|
|
25
|
-
*/
|
|
26
|
-
decryptChunk(chunkData: Uint8Array, privateKey: Uint8Array): Promise<{
|
|
27
|
-
data: Uint8Array;
|
|
28
|
-
header: IChunkHeader;
|
|
29
|
-
}>;
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=chunk-processor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-processor.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/services/chunk-processor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EACL,YAAY,EACZ,eAAe,EAEhB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAI/C;;GAEG;AACH,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBADX,KAAK,EAAE,YAAY,EACnB,WAAW,GAAE,eAAiC;IAGjE;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,UAAU;IAelD;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY;IA4BhD;;OAEG;IACG,YAAY,CAChB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,OAAO,EACf,eAAe,EAAE,OAAO,GACvB,OAAO,CAAC,eAAe,CAAC;IAoD3B;;OAEG;IACG,YAAY,CAChB,SAAS,EAAE,UAAU,EACrB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,MAAM,EAAE,YAAY,CAAA;KAAE,CAAC;CAkDvD"}
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
import { sha256 } from '@noble/hashes/sha2.js';
|
|
2
|
-
import { Constants } from '../constants';
|
|
3
|
-
import { CHUNK_CONSTANTS, } from '../interfaces/encrypted-chunk';
|
|
4
|
-
import { getEciesI18nEngine, EciesComponentId } from '../i18n-setup';
|
|
5
|
-
import { EciesStringKey } from '../enumerations/ecies-string-key';
|
|
6
|
-
/**
|
|
7
|
-
* Processes chunks for streaming encryption/decryption
|
|
8
|
-
*/
|
|
9
|
-
export class ChunkProcessor {
|
|
10
|
-
ecies;
|
|
11
|
-
eciesConsts;
|
|
12
|
-
constructor(ecies, eciesConsts = Constants.ECIES) {
|
|
13
|
-
this.ecies = ecies;
|
|
14
|
-
this.eciesConsts = eciesConsts;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Build chunk header
|
|
18
|
-
*/
|
|
19
|
-
buildChunkHeader(header) {
|
|
20
|
-
const buffer = new Uint8Array(CHUNK_CONSTANTS.HEADER_SIZE);
|
|
21
|
-
const view = new DataView(buffer.buffer);
|
|
22
|
-
view.setUint32(0, header.magic, false);
|
|
23
|
-
view.setUint16(4, header.version, false);
|
|
24
|
-
view.setUint32(6, header.index, false);
|
|
25
|
-
view.setUint32(10, header.originalSize, false);
|
|
26
|
-
view.setUint32(14, header.encryptedSize, false);
|
|
27
|
-
view.setUint16(18, header.flags, false);
|
|
28
|
-
// Bytes 20-31: reserved (zeros)
|
|
29
|
-
return buffer;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Parse chunk header
|
|
33
|
-
*/
|
|
34
|
-
parseChunkHeader(data) {
|
|
35
|
-
const engine = getEciesI18nEngine();
|
|
36
|
-
if (data.length < CHUNK_CONSTANTS.HEADER_SIZE) {
|
|
37
|
-
throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Chunk_DataTooShortForHeader));
|
|
38
|
-
}
|
|
39
|
-
const view = new DataView(data.buffer, data.byteOffset);
|
|
40
|
-
const magic = view.getUint32(0, false);
|
|
41
|
-
if (magic !== CHUNK_CONSTANTS.MAGIC) {
|
|
42
|
-
throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Chunk_InvalidMagicBytes));
|
|
43
|
-
}
|
|
44
|
-
const version = view.getUint16(4, false);
|
|
45
|
-
if (version !== CHUNK_CONSTANTS.VERSION) {
|
|
46
|
-
throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Chunk_UnsupportedVersion));
|
|
47
|
-
}
|
|
48
|
-
return {
|
|
49
|
-
magic,
|
|
50
|
-
version,
|
|
51
|
-
index: view.getUint32(6, false),
|
|
52
|
-
originalSize: view.getUint32(10, false),
|
|
53
|
-
encryptedSize: view.getUint32(14, false),
|
|
54
|
-
flags: view.getUint16(18, false),
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Encrypt a single chunk
|
|
59
|
-
*/
|
|
60
|
-
async encryptChunk(data, publicKey, index, isLast, includeChecksum) {
|
|
61
|
-
// Encrypt data
|
|
62
|
-
const encrypted = await this.ecies.encryptSimpleOrSingle(false, publicKey, data);
|
|
63
|
-
// Calculate checksum if requested
|
|
64
|
-
const checksum = includeChecksum ? sha256(data) : undefined;
|
|
65
|
-
// Build header
|
|
66
|
-
let flags = 0;
|
|
67
|
-
if (isLast)
|
|
68
|
-
flags |= CHUNK_CONSTANTS.FLAG_IS_LAST;
|
|
69
|
-
if (includeChecksum)
|
|
70
|
-
flags |= CHUNK_CONSTANTS.FLAG_HAS_CHECKSUM;
|
|
71
|
-
const header = this.buildChunkHeader({
|
|
72
|
-
magic: CHUNK_CONSTANTS.MAGIC,
|
|
73
|
-
version: CHUNK_CONSTANTS.VERSION,
|
|
74
|
-
index,
|
|
75
|
-
originalSize: data.length,
|
|
76
|
-
encryptedSize: encrypted.length,
|
|
77
|
-
flags,
|
|
78
|
-
});
|
|
79
|
-
// Combine: header + encrypted + optional checksum
|
|
80
|
-
const parts = [header, encrypted];
|
|
81
|
-
if (checksum) {
|
|
82
|
-
parts.push(checksum);
|
|
83
|
-
}
|
|
84
|
-
const totalLength = parts.reduce((sum, part) => sum + part.length, 0);
|
|
85
|
-
const result = new Uint8Array(totalLength);
|
|
86
|
-
let offset = 0;
|
|
87
|
-
for (const part of parts) {
|
|
88
|
-
result.set(part, offset);
|
|
89
|
-
offset += part.length;
|
|
90
|
-
}
|
|
91
|
-
return {
|
|
92
|
-
index,
|
|
93
|
-
data: result,
|
|
94
|
-
isLast,
|
|
95
|
-
metadata: {
|
|
96
|
-
originalSize: data.length,
|
|
97
|
-
encryptedSize: encrypted.length,
|
|
98
|
-
timestamp: Date.now(),
|
|
99
|
-
checksum,
|
|
100
|
-
},
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Decrypt a single chunk
|
|
105
|
-
*/
|
|
106
|
-
async decryptChunk(chunkData, privateKey) {
|
|
107
|
-
// Parse header
|
|
108
|
-
const header = this.parseChunkHeader(chunkData);
|
|
109
|
-
// Extract encrypted data
|
|
110
|
-
const hasChecksum = (header.flags & CHUNK_CONSTANTS.FLAG_HAS_CHECKSUM) !== 0;
|
|
111
|
-
const encryptedStart = CHUNK_CONSTANTS.HEADER_SIZE;
|
|
112
|
-
const encryptedEnd = hasChecksum
|
|
113
|
-
? chunkData.length - CHUNK_CONSTANTS.CHECKSUM_SIZE
|
|
114
|
-
: chunkData.length;
|
|
115
|
-
const encrypted = chunkData.slice(encryptedStart, encryptedEnd);
|
|
116
|
-
// Validate encrypted size matches header
|
|
117
|
-
if (encrypted.length !== header.encryptedSize) {
|
|
118
|
-
const engine = getEciesI18nEngine();
|
|
119
|
-
throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Chunk_EncryptedSizeMismatchTemplate, { expectedSize: header.encryptedSize, actualSize: encrypted.length }));
|
|
120
|
-
}
|
|
121
|
-
// Decrypt
|
|
122
|
-
const decrypted = await this.ecies.decryptSimpleOrSingleWithHeader(false, privateKey, encrypted);
|
|
123
|
-
// Verify checksum if present
|
|
124
|
-
if (hasChecksum) {
|
|
125
|
-
const storedChecksum = chunkData.slice(-CHUNK_CONSTANTS.CHECKSUM_SIZE);
|
|
126
|
-
const computedChecksum = sha256(decrypted);
|
|
127
|
-
// Constant-time comparison to prevent timing attacks
|
|
128
|
-
let diff = 0;
|
|
129
|
-
for (let i = 0; i < CHUNK_CONSTANTS.CHECKSUM_SIZE; i++) {
|
|
130
|
-
diff |= storedChecksum[i] ^ computedChecksum[i];
|
|
131
|
-
}
|
|
132
|
-
if (diff !== 0) {
|
|
133
|
-
const engine = getEciesI18nEngine();
|
|
134
|
-
throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Chunk_ChecksumMismatch));
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
// Verify size
|
|
138
|
-
if (decrypted.length !== header.originalSize) {
|
|
139
|
-
const engine = getEciesI18nEngine();
|
|
140
|
-
throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_Chunk_DecryptedSizeMismatch));
|
|
141
|
-
}
|
|
142
|
-
return { data: decrypted, header };
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
//# sourceMappingURL=chunk-processor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-processor.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/services/chunk-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { IECIESConfig } from '../../interfaces/ecies-config';
|
|
2
|
-
import { SecureString } from '../../secure-string';
|
|
3
|
-
import { ISimpleKeyPair, IWalletSeed } from './interfaces';
|
|
4
|
-
import { IECIESConstants } from '../../interfaces/ecies-consts';
|
|
5
|
-
/**
|
|
6
|
-
* Browser-compatible crypto core for ECIES operations
|
|
7
|
-
* Uses @scure libraries for browser compatibility
|
|
8
|
-
*/
|
|
9
|
-
export declare class EciesCryptoCore {
|
|
10
|
-
protected readonly _config: IECIESConfig;
|
|
11
|
-
protected readonly _eciesConsts: IECIESConstants;
|
|
12
|
-
constructor(config: IECIESConfig, eciesParams?: IECIESConstants);
|
|
13
|
-
get config(): IECIESConfig;
|
|
14
|
-
/**
|
|
15
|
-
* Validates and normalizes a public key for ECIES operations
|
|
16
|
-
*/
|
|
17
|
-
normalizePublicKey(publicKey: Uint8Array): Uint8Array;
|
|
18
|
-
/**
|
|
19
|
-
* Generate a new mnemonic
|
|
20
|
-
*/
|
|
21
|
-
generateNewMnemonic(): SecureString;
|
|
22
|
-
/**
|
|
23
|
-
* Generate wallet and seed from mnemonic
|
|
24
|
-
*/
|
|
25
|
-
walletAndSeedFromMnemonic(mnemonic: SecureString): IWalletSeed;
|
|
26
|
-
/**
|
|
27
|
-
* Create a simple key pair from a seed
|
|
28
|
-
*/
|
|
29
|
-
seedToSimpleKeyPair(seed: Uint8Array): ISimpleKeyPair;
|
|
30
|
-
/**
|
|
31
|
-
* Create a simple key pair from a mnemonic
|
|
32
|
-
*/
|
|
33
|
-
mnemonicToSimpleKeyPair(mnemonic: SecureString): ISimpleKeyPair;
|
|
34
|
-
/**
|
|
35
|
-
* Generate a random private key
|
|
36
|
-
*/
|
|
37
|
-
generatePrivateKey(): Uint8Array;
|
|
38
|
-
/**
|
|
39
|
-
* Get public key from private key
|
|
40
|
-
*/
|
|
41
|
-
getPublicKey(privateKey: Uint8Array): Uint8Array;
|
|
42
|
-
/**
|
|
43
|
-
* Generate ephemeral key pair for ECIES
|
|
44
|
-
*/
|
|
45
|
-
generateEphemeralKeyPair(): Promise<ISimpleKeyPair>;
|
|
46
|
-
/**
|
|
47
|
-
* Compute ECDH shared secret
|
|
48
|
-
*/
|
|
49
|
-
computeSharedSecret(privateKey: Uint8Array, publicKey: Uint8Array): Uint8Array;
|
|
50
|
-
/**
|
|
51
|
-
* Derive a symmetric key from a shared secret using HKDF
|
|
52
|
-
* @param sharedSecret The shared secret (ECDH output)
|
|
53
|
-
* @param salt Optional salt
|
|
54
|
-
* @param info Optional context info
|
|
55
|
-
* @param length Length of the output key (default 32 for AES-256)
|
|
56
|
-
*/
|
|
57
|
-
deriveSharedKey(sharedSecret: Uint8Array, salt?: Uint8Array, info?: Uint8Array, length?: number): Uint8Array;
|
|
58
|
-
/**
|
|
59
|
-
* Sign a message using ECDSA
|
|
60
|
-
* @param privateKey The private key to sign with
|
|
61
|
-
* @param message The message to sign
|
|
62
|
-
*/
|
|
63
|
-
sign(privateKey: Uint8Array, message: Uint8Array): Uint8Array;
|
|
64
|
-
/**
|
|
65
|
-
* Verify a signature using ECDSA
|
|
66
|
-
* @param publicKey The public key to verify with
|
|
67
|
-
* @param message The message that was signed
|
|
68
|
-
* @param signature The signature to verify
|
|
69
|
-
*/
|
|
70
|
-
verify(publicKey: Uint8Array, message: Uint8Array, signature: Uint8Array): boolean;
|
|
71
|
-
}
|
|
72
|
-
//# sourceMappingURL=crypto-core.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"crypto-core.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/services/ecies/crypto-core.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAO3D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE;;;GAGG;AACH,qBAAa,eAAe;IAC1B,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IACzC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;gBAG/C,MAAM,EAAE,YAAY,EACpB,WAAW,GAAE,eAAiC;IAMhD,IAAW,MAAM,IAAI,YAAY,CAEhC;IAED;;OAEG;IACI,kBAAkB,CAAC,SAAS,EAAE,UAAU,GAAG,UAAU;IA8D5D;;OAEG;IACI,mBAAmB,IAAI,YAAY;IAM1C;;OAEG;IACI,yBAAyB,CAAC,QAAQ,EAAE,YAAY,GAAG,WAAW;IAmCrE;;OAEG;IACI,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,cAAc;IAuB5D;;OAEG;IACI,uBAAuB,CAAC,QAAQ,EAAE,YAAY,GAAG,cAAc;IAKtE;;OAEG;IACI,kBAAkB,IAAI,UAAU;IAIvC;;OAEG;IACI,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU;IAKvD;;OAEG;IACU,wBAAwB,IAAI,OAAO,CAAC,cAAc,CAAC;IAMhE;;OAEG;IACI,mBAAmB,CACxB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,UAAU,GACpB,UAAU;IAeb;;;;;;OAMG;IACI,eAAe,CACpB,YAAY,EAAE,UAAU,EACxB,IAAI,GAAE,UAA8B,EACpC,IAAI,GAAE,UAA8B,EACpC,MAAM,GAAE,MAAW,GAClB,UAAU;IAIb;;;;OAIG;IACI,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,GAAG,UAAU;IAqBpE;;;;;OAKG;IACI,MAAM,CACX,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,UAAU,GACpB,OAAO;CAQX"}
|
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
import { Wallet } from '@ethereumjs/wallet';
|
|
2
|
-
import { HDKey } from '@scure/bip32';
|
|
3
|
-
import { generateMnemonic, mnemonicToSeedSync, validateMnemonic, } from '@scure/bip39';
|
|
4
|
-
import { wordlist } from '@scure/bip39/wordlists/english';
|
|
5
|
-
import { Constants } from '../../constants';
|
|
6
|
-
import { SecureString } from '../../secure-string';
|
|
7
|
-
import { secp256k1 } from '@noble/curves/secp256k1.js';
|
|
8
|
-
import { hkdf } from '@noble/hashes/hkdf.js';
|
|
9
|
-
import { sha256 } from '@noble/hashes/sha2.js';
|
|
10
|
-
import { EciesStringKey } from '../../enumerations';
|
|
11
|
-
import { EciesComponentId, getEciesI18nEngine } from '../../i18n-setup';
|
|
12
|
-
/**
|
|
13
|
-
* Browser-compatible crypto core for ECIES operations
|
|
14
|
-
* Uses @scure libraries for browser compatibility
|
|
15
|
-
*/
|
|
16
|
-
export class EciesCryptoCore {
|
|
17
|
-
_config;
|
|
18
|
-
_eciesConsts;
|
|
19
|
-
constructor(config, eciesParams = Constants.ECIES) {
|
|
20
|
-
this._config = config;
|
|
21
|
-
this._eciesConsts = eciesParams;
|
|
22
|
-
}
|
|
23
|
-
get config() {
|
|
24
|
-
return this._config;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Validates and normalizes a public key for ECIES operations
|
|
28
|
-
*/
|
|
29
|
-
normalizePublicKey(publicKey) {
|
|
30
|
-
if (!publicKey) {
|
|
31
|
-
const engine = getEciesI18nEngine();
|
|
32
|
-
throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_ReceivedNullOrUndefinedPublicKey));
|
|
33
|
-
}
|
|
34
|
-
const keyLength = publicKey.length;
|
|
35
|
-
let normalizedKey;
|
|
36
|
-
// Compressed key (33 bytes) - 0x02 or 0x03 prefix
|
|
37
|
-
if (keyLength === 33 && (publicKey[0] === 0x02 || publicKey[0] === 0x03)) {
|
|
38
|
-
normalizedKey = publicKey;
|
|
39
|
-
}
|
|
40
|
-
// Uncompressed key (65 bytes) - 0x04 prefix
|
|
41
|
-
// We accept this for backward compatibility with existing keys
|
|
42
|
-
else if (keyLength === 65 && publicKey[0] === 0x04) {
|
|
43
|
-
normalizedKey = publicKey;
|
|
44
|
-
}
|
|
45
|
-
// Raw key without prefix (64 bytes) - add the 0x04 prefix
|
|
46
|
-
// Legacy support
|
|
47
|
-
else if (keyLength === 64) {
|
|
48
|
-
normalizedKey = new Uint8Array(65);
|
|
49
|
-
normalizedKey[0] = 0x04;
|
|
50
|
-
normalizedKey.set(publicKey, 1);
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
const engine = getEciesI18nEngine();
|
|
54
|
-
throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_InvalidPublicKeyFormatOrLengthTemplate, { keyLength }));
|
|
55
|
-
}
|
|
56
|
-
// Basic validation: check it's not all zeros
|
|
57
|
-
let allZeros = true;
|
|
58
|
-
for (let i = 1; i < normalizedKey.length; i++) {
|
|
59
|
-
// Skip first byte (prefix)
|
|
60
|
-
if (normalizedKey[i] !== 0) {
|
|
61
|
-
allZeros = false;
|
|
62
|
-
break;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
if (allZeros) {
|
|
66
|
-
const engine = getEciesI18nEngine();
|
|
67
|
-
throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_InvalidPublicKeyNotOnCurve));
|
|
68
|
-
}
|
|
69
|
-
return normalizedKey;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Generate a new mnemonic
|
|
73
|
-
*/
|
|
74
|
-
generateNewMnemonic() {
|
|
75
|
-
return new SecureString(generateMnemonic(wordlist, this._config.mnemonicStrength));
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Generate wallet and seed from mnemonic
|
|
79
|
-
*/
|
|
80
|
-
walletAndSeedFromMnemonic(mnemonic) {
|
|
81
|
-
if (!mnemonic || !validateMnemonic(mnemonic.value ?? '', wordlist)) {
|
|
82
|
-
const engine = getEciesI18nEngine();
|
|
83
|
-
throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_InvalidMnemonic));
|
|
84
|
-
}
|
|
85
|
-
const seed = mnemonicToSeedSync(mnemonic.value ?? '');
|
|
86
|
-
const hdKey = HDKey.fromMasterSeed(seed);
|
|
87
|
-
const derivedKey = hdKey.derive(this._config.primaryKeyDerivationPath);
|
|
88
|
-
if (!derivedKey.privateKey) {
|
|
89
|
-
const engine = getEciesI18nEngine();
|
|
90
|
-
throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_FailedToDervivePrivateKey));
|
|
91
|
-
}
|
|
92
|
-
const privateKey = derivedKey.privateKey;
|
|
93
|
-
const wallet = new Wallet(privateKey);
|
|
94
|
-
return {
|
|
95
|
-
wallet,
|
|
96
|
-
seed,
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Create a simple key pair from a seed
|
|
101
|
-
*/
|
|
102
|
-
seedToSimpleKeyPair(seed) {
|
|
103
|
-
const hdKey = HDKey.fromMasterSeed(seed);
|
|
104
|
-
const derivedKey = hdKey.derive(this._config.primaryKeyDerivationPath);
|
|
105
|
-
if (!derivedKey.privateKey) {
|
|
106
|
-
const engine = getEciesI18nEngine();
|
|
107
|
-
throw new Error(engine.translate(EciesComponentId, EciesStringKey.Error_ECIESError_FailedToDervivePrivateKey));
|
|
108
|
-
}
|
|
109
|
-
const privateKey = derivedKey.privateKey;
|
|
110
|
-
const publicKey = secp256k1.getPublicKey(privateKey, true); // compressed
|
|
111
|
-
return {
|
|
112
|
-
privateKey,
|
|
113
|
-
publicKey,
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Create a simple key pair from a mnemonic
|
|
118
|
-
*/
|
|
119
|
-
mnemonicToSimpleKeyPair(mnemonic) {
|
|
120
|
-
const { seed } = this.walletAndSeedFromMnemonic(mnemonic);
|
|
121
|
-
return this.seedToSimpleKeyPair(seed);
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Generate a random private key
|
|
125
|
-
*/
|
|
126
|
-
generatePrivateKey() {
|
|
127
|
-
return secp256k1.utils.randomSecretKey();
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Get public key from private key
|
|
131
|
-
*/
|
|
132
|
-
getPublicKey(privateKey) {
|
|
133
|
-
const publicKeyPoint = secp256k1.getPublicKey(privateKey, true); // compressed
|
|
134
|
-
return publicKeyPoint;
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Generate ephemeral key pair for ECIES
|
|
138
|
-
*/
|
|
139
|
-
async generateEphemeralKeyPair() {
|
|
140
|
-
const privateKey = this.generatePrivateKey();
|
|
141
|
-
const publicKey = this.getPublicKey(privateKey);
|
|
142
|
-
return { privateKey, publicKey };
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Compute ECDH shared secret
|
|
146
|
-
*/
|
|
147
|
-
computeSharedSecret(privateKey, publicKey) {
|
|
148
|
-
// Normalize the public key to ensure it has the correct format
|
|
149
|
-
const normalizedPublicKey = this.normalizePublicKey(publicKey);
|
|
150
|
-
// Use uncompressed shared secret to match Node.js ECDH behavior
|
|
151
|
-
// Node.js ECDH.computeSecret() returns the x-coordinate of the shared point
|
|
152
|
-
const sharedSecret = secp256k1.getSharedSecret(privateKey, normalizedPublicKey, false);
|
|
153
|
-
// Return only the x-coordinate (first 32 bytes after the 0x04 prefix)
|
|
154
|
-
return sharedSecret.slice(1, 33);
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Derive a symmetric key from a shared secret using HKDF
|
|
158
|
-
* @param sharedSecret The shared secret (ECDH output)
|
|
159
|
-
* @param salt Optional salt
|
|
160
|
-
* @param info Optional context info
|
|
161
|
-
* @param length Length of the output key (default 32 for AES-256)
|
|
162
|
-
*/
|
|
163
|
-
deriveSharedKey(sharedSecret, salt = new Uint8Array(0), info = new Uint8Array(0), length = 32) {
|
|
164
|
-
return hkdf(sha256, sharedSecret, salt, info, length);
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Sign a message using ECDSA
|
|
168
|
-
* @param privateKey The private key to sign with
|
|
169
|
-
* @param message The message to sign
|
|
170
|
-
*/
|
|
171
|
-
sign(privateKey, message) {
|
|
172
|
-
const hash = sha256(message);
|
|
173
|
-
const signature = secp256k1.sign(hash, privateKey);
|
|
174
|
-
if (signature instanceof Uint8Array) {
|
|
175
|
-
return signature;
|
|
176
|
-
}
|
|
177
|
-
// Check if signature has toCompactRawBytes method
|
|
178
|
-
if (signature &&
|
|
179
|
-
typeof signature === 'object' &&
|
|
180
|
-
'toCompactRawBytes' in signature) {
|
|
181
|
-
const sig = signature;
|
|
182
|
-
if (typeof sig.toCompactRawBytes === 'function') {
|
|
183
|
-
return sig.toCompactRawBytes();
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
// Fallback or error
|
|
187
|
-
throw new Error('Unknown signature format');
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* Verify a signature using ECDSA
|
|
191
|
-
* @param publicKey The public key to verify with
|
|
192
|
-
* @param message The message that was signed
|
|
193
|
-
* @param signature The signature to verify
|
|
194
|
-
*/
|
|
195
|
-
verify(publicKey, message, signature) {
|
|
196
|
-
const hash = sha256(message);
|
|
197
|
-
try {
|
|
198
|
-
return secp256k1.verify(signature, hash, publicKey);
|
|
199
|
-
}
|
|
200
|
-
catch (e) {
|
|
201
|
-
return false;
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
//# sourceMappingURL=crypto-core.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"crypto-core.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-ecies-lib/src/services/ecies/crypto-core.ts"],"names":[],"mappings":"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"}
|