@digitaldefiance/node-ecies-lib 4.4.1 → 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/README.md +5 -0
- package/package.json +11 -7
- package/src/builders/ecies-builder.ts +27 -0
- package/src/builders/{index.d.ts → index.ts} +0 -1
- package/src/builders/member-builder.ts +158 -0
- package/src/constants.ts +251 -0
- package/src/core/errors/crypto-error.ts +10 -0
- package/src/core/{index.d.ts → index.ts} +0 -1
- package/src/core/types/result.ts +3 -0
- package/src/enumerations/index.ts +2 -0
- package/src/enumerations/pbkdf2-profile.ts +8 -0
- package/src/i18n/ecies-i18n-factory.ts +111 -0
- package/src/i18n/{index.d.ts → index.ts} +3 -1
- package/src/i18n/node-ecies-i18n-setup.ts +56 -0
- package/src/i18n/node-keys.ts +69 -0
- package/src/i18n/translations/de.ts +54 -0
- package/src/i18n/translations/en-GB.ts +83 -0
- package/src/i18n/translations/en-US.ts +88 -0
- package/src/i18n/translations/es.ts +54 -0
- package/src/i18n/translations/fr.ts +54 -0
- package/src/i18n/translations/{index.d.ts → index.ts} +0 -1
- package/src/i18n/translations/ja.ts +54 -0
- package/src/i18n/translations/uk.ts +54 -0
- package/src/i18n/translations/zh-cn.ts +54 -0
- package/src/{index.d.ts → index.ts} +5 -1
- package/src/interfaces/authenticated-cipher.ts +10 -0
- package/src/interfaces/authenticated-decipher.ts +9 -0
- package/src/interfaces/backend-member-operational.ts +75 -0
- package/src/interfaces/checksum-config.ts +4 -0
- package/src/interfaces/checksum-consts.ts +13 -0
- package/src/interfaces/constants.ts +54 -0
- package/src/interfaces/ecies-consts.ts +99 -0
- package/src/interfaces/encrypted-chunk.ts +12 -0
- package/src/interfaces/encryption-consts.ts +10 -0
- package/src/interfaces/{index.d.ts → index.ts} +0 -1
- package/src/interfaces/keypair-buffer-with-un-encrypted-private-key.ts +7 -0
- package/src/interfaces/keyring-consts.ts +5 -0
- package/src/interfaces/{member-with-mnemonic.d.ts → member-with-mnemonic.ts} +3 -3
- package/src/interfaces/member.ts +76 -0
- package/src/interfaces/{multi-encrypted-message.d.ts → multi-encrypted-message.ts} +5 -5
- package/src/interfaces/multi-encrypted-parsed-header.ts +28 -0
- package/src/interfaces/multi-recipient-chunk.ts +35 -0
- package/src/interfaces/{pbkdf-profiles.d.ts → pbkdf-profiles.ts} +2 -2
- package/src/interfaces/pbkdf2-result.ts +5 -0
- package/src/interfaces/signing-key-private-key-info.ts +12 -0
- package/src/interfaces/{simple-keypair-buffer.d.ts → simple-keypair-buffer.ts} +3 -3
- package/src/interfaces/{simple-keypair.d.ts → simple-keypair.ts} +3 -3
- package/src/interfaces/simple-public-key-only-buffer.ts +3 -0
- package/src/interfaces/simple-public-key-only.ts +3 -0
- package/src/interfaces/single-encrypted-parsed-header.ts +35 -0
- package/src/interfaces/stream-config.ts +9 -0
- package/src/interfaces/stream-progress.ts +7 -0
- package/src/interfaces/{wallet-seed.d.ts → wallet-seed.ts} +3 -3
- package/src/interfaces/wrapped-key-consts.ts +6 -0
- package/src/lib/crypto-container.ts +32 -0
- package/src/lib/{index.d.ts → index.ts} +0 -1
- package/src/lib/invariant-validator.ts +124 -0
- package/src/lib/invariants/{index.d.ts → index.ts} +2 -2
- package/src/lib/invariants/recipient-id-consistency.ts +77 -0
- package/src/member.ts +511 -0
- package/src/services/aes-gcm.ts +260 -0
- package/src/services/chunk-processor.ts +47 -0
- package/src/services/ecies/crypto-core.ts +319 -0
- package/src/services/ecies/file.ts +171 -0
- package/src/services/ecies/{index.d.ts → index.ts} +0 -1
- package/src/services/ecies/multi-recipient.ts +782 -0
- package/src/services/ecies/service.ts +316 -0
- package/src/services/ecies/signature.ts +91 -0
- package/src/services/ecies/single-recipient.ts +743 -0
- package/src/services/ecies/utilities.ts +128 -0
- package/src/services/encryption-stream.ts +432 -0
- package/src/services/{index.d.ts → index.ts} +0 -1
- package/src/services/multi-recipient-processor.ts +505 -0
- package/src/services/pbkdf2.ts +304 -0
- package/src/services/progress-tracker.ts +43 -0
- package/src/test-mocks/index.ts +1 -0
- package/src/test-mocks/mock-backend-member.ts +195 -0
- package/src/testing.ts +2 -0
- package/src/types/id-guards.ts +91 -0
- package/src/types/index.ts +1 -0
- package/src/{types.d.ts → types.ts} +28 -9
- package/src/utils.ts +124 -0
- package/src/builders/ecies-builder.d.ts +0 -11
- package/src/builders/ecies-builder.d.ts.map +0 -1
- package/src/builders/ecies-builder.js +0 -26
- package/src/builders/ecies-builder.js.map +0 -1
- package/src/builders/index.d.ts.map +0 -1
- package/src/builders/index.js +0 -6
- package/src/builders/index.js.map +0 -1
- package/src/builders/member-builder.d.ts +0 -47
- package/src/builders/member-builder.d.ts.map +0 -1
- package/src/builders/member-builder.js +0 -99
- package/src/builders/member-builder.js.map +0 -1
- package/src/constants.d.ts +0 -38
- package/src/constants.d.ts.map +0 -1
- package/src/constants.js +0 -183
- package/src/constants.js.map +0 -1
- package/src/core/errors/crypto-error.d.ts +0 -6
- package/src/core/errors/crypto-error.d.ts.map +0 -1
- package/src/core/errors/crypto-error.js +0 -15
- package/src/core/errors/crypto-error.js.map +0 -1
- package/src/core/index.d.ts.map +0 -1
- package/src/core/index.js +0 -6
- package/src/core/index.js.map +0 -1
- package/src/core/types/result.d.ts +0 -8
- package/src/core/types/result.d.ts.map +0 -1
- package/src/core/types/result.js +0 -3
- package/src/core/types/result.js.map +0 -1
- package/src/enumerations/index.d.ts +0 -2
- package/src/enumerations/index.d.ts.map +0 -1
- package/src/enumerations/index.js +0 -5
- package/src/enumerations/index.js.map +0 -1
- package/src/enumerations/pbkdf2-profile.d.ts +0 -9
- package/src/enumerations/pbkdf2-profile.d.ts.map +0 -1
- package/src/enumerations/pbkdf2-profile.js +0 -13
- package/src/enumerations/pbkdf2-profile.js.map +0 -1
- package/src/i18n/ecies-i18n-factory.d.ts +0 -28
- package/src/i18n/ecies-i18n-factory.d.ts.map +0 -1
- package/src/i18n/ecies-i18n-factory.js +0 -89
- package/src/i18n/ecies-i18n-factory.js.map +0 -1
- package/src/i18n/index.d.ts.map +0 -1
- package/src/i18n/index.js +0 -8
- package/src/i18n/index.js.map +0 -1
- package/src/i18n/node-ecies-i18n-setup.d.ts +0 -5
- package/src/i18n/node-ecies-i18n-setup.d.ts.map +0 -1
- package/src/i18n/node-ecies-i18n-setup.js +0 -46
- package/src/i18n/node-ecies-i18n-setup.js.map +0 -1
- package/src/i18n/node-keys.d.ts +0 -57
- package/src/i18n/node-keys.d.ts.map +0 -1
- package/src/i18n/node-keys.js +0 -67
- package/src/i18n/node-keys.js.map +0 -1
- package/src/i18n/translations/de.d.ts +0 -3
- package/src/i18n/translations/de.d.ts.map +0 -1
- package/src/i18n/translations/de.js +0 -57
- package/src/i18n/translations/de.js.map +0 -1
- package/src/i18n/translations/en-GB.d.ts +0 -3
- package/src/i18n/translations/en-GB.d.ts.map +0 -1
- package/src/i18n/translations/en-GB.js +0 -61
- package/src/i18n/translations/en-GB.js.map +0 -1
- package/src/i18n/translations/en-US.d.ts +0 -6
- package/src/i18n/translations/en-US.d.ts.map +0 -1
- package/src/i18n/translations/en-US.js +0 -65
- package/src/i18n/translations/en-US.js.map +0 -1
- package/src/i18n/translations/es.d.ts +0 -3
- package/src/i18n/translations/es.d.ts.map +0 -1
- package/src/i18n/translations/es.js +0 -57
- package/src/i18n/translations/es.js.map +0 -1
- package/src/i18n/translations/fr.d.ts +0 -3
- package/src/i18n/translations/fr.d.ts.map +0 -1
- package/src/i18n/translations/fr.js +0 -57
- package/src/i18n/translations/fr.js.map +0 -1
- package/src/i18n/translations/index.d.ts.map +0 -1
- package/src/i18n/translations/index.js +0 -20
- package/src/i18n/translations/index.js.map +0 -1
- package/src/i18n/translations/ja.d.ts +0 -3
- package/src/i18n/translations/ja.d.ts.map +0 -1
- package/src/i18n/translations/ja.js +0 -57
- package/src/i18n/translations/ja.js.map +0 -1
- package/src/i18n/translations/uk.d.ts +0 -3
- package/src/i18n/translations/uk.d.ts.map +0 -1
- package/src/i18n/translations/uk.js +0 -57
- package/src/i18n/translations/uk.js.map +0 -1
- package/src/i18n/translations/zh-cn.d.ts +0 -3
- package/src/i18n/translations/zh-cn.d.ts.map +0 -1
- package/src/i18n/translations/zh-cn.js +0 -57
- package/src/i18n/translations/zh-cn.js.map +0 -1
- package/src/index.d.ts.map +0 -1
- package/src/index.js +0 -31
- package/src/index.js.map +0 -1
- package/src/interfaces/authenticated-cipher.d.ts +0 -12
- package/src/interfaces/authenticated-cipher.d.ts.map +0 -1
- package/src/interfaces/authenticated-cipher.js +0 -3
- package/src/interfaces/authenticated-cipher.js.map +0 -1
- package/src/interfaces/authenticated-decipher.d.ts +0 -11
- package/src/interfaces/authenticated-decipher.d.ts.map +0 -1
- package/src/interfaces/authenticated-decipher.js +0 -3
- package/src/interfaces/authenticated-decipher.js.map +0 -1
- package/src/interfaces/backend-member-operational.d.ts +0 -48
- package/src/interfaces/backend-member-operational.d.ts.map +0 -1
- package/src/interfaces/backend-member-operational.js +0 -3
- package/src/interfaces/backend-member-operational.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 -3
- 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 -3
- package/src/interfaces/checksum-consts.js.map +0 -1
- package/src/interfaces/constants.d.ts +0 -52
- package/src/interfaces/constants.d.ts.map +0 -1
- package/src/interfaces/constants.js +0 -3
- package/src/interfaces/constants.js.map +0 -1
- package/src/interfaces/ecies-consts.d.ts +0 -88
- package/src/interfaces/ecies-consts.d.ts.map +0 -1
- package/src/interfaces/ecies-consts.js +0 -3
- package/src/interfaces/ecies-consts.js.map +0 -1
- package/src/interfaces/encrypted-chunk.d.ts +0 -12
- package/src/interfaces/encrypted-chunk.d.ts.map +0 -1
- package/src/interfaces/encrypted-chunk.js +0 -3
- package/src/interfaces/encrypted-chunk.js.map +0 -1
- package/src/interfaces/encryption-consts.d.ts +0 -11
- package/src/interfaces/encryption-consts.d.ts.map +0 -1
- package/src/interfaces/encryption-consts.js +0 -3
- package/src/interfaces/encryption-consts.js.map +0 -1
- package/src/interfaces/index.d.ts.map +0 -1
- package/src/interfaces/index.js +0 -30
- package/src/interfaces/index.js.map +0 -1
- package/src/interfaces/keypair-buffer-with-un-encrypted-private-key.d.ts +0 -6
- package/src/interfaces/keypair-buffer-with-un-encrypted-private-key.d.ts.map +0 -1
- package/src/interfaces/keypair-buffer-with-un-encrypted-private-key.js +0 -3
- package/src/interfaces/keypair-buffer-with-un-encrypted-private-key.js.map +0 -1
- package/src/interfaces/keyring-consts.d.ts +0 -6
- package/src/interfaces/keyring-consts.d.ts.map +0 -1
- package/src/interfaces/keyring-consts.js +0 -3
- package/src/interfaces/keyring-consts.js.map +0 -1
- package/src/interfaces/member-with-mnemonic.d.ts.map +0 -1
- package/src/interfaces/member-with-mnemonic.js +0 -3
- package/src/interfaces/member-with-mnemonic.js.map +0 -1
- package/src/interfaces/member.d.ts +0 -47
- package/src/interfaces/member.d.ts.map +0 -1
- package/src/interfaces/member.js +0 -3
- package/src/interfaces/member.js.map +0 -1
- package/src/interfaces/multi-encrypted-message.d.ts.map +0 -1
- package/src/interfaces/multi-encrypted-message.js +0 -3
- package/src/interfaces/multi-encrypted-message.js.map +0 -1
- package/src/interfaces/multi-encrypted-parsed-header.d.ts +0 -27
- package/src/interfaces/multi-encrypted-parsed-header.d.ts.map +0 -1
- package/src/interfaces/multi-encrypted-parsed-header.js +0 -3
- package/src/interfaces/multi-encrypted-parsed-header.js.map +0 -1
- package/src/interfaces/multi-recipient-chunk.d.ts +0 -26
- package/src/interfaces/multi-recipient-chunk.d.ts.map +0 -1
- package/src/interfaces/multi-recipient-chunk.js +0 -13
- package/src/interfaces/multi-recipient-chunk.js.map +0 -1
- package/src/interfaces/pbkdf-profiles.d.ts.map +0 -1
- package/src/interfaces/pbkdf-profiles.js +0 -3
- package/src/interfaces/pbkdf-profiles.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 -3
- package/src/interfaces/pbkdf2-result.js.map +0 -1
- package/src/interfaces/signing-key-private-key-info.d.ts +0 -11
- package/src/interfaces/signing-key-private-key-info.d.ts.map +0 -1
- package/src/interfaces/signing-key-private-key-info.js +0 -3
- package/src/interfaces/signing-key-private-key-info.js.map +0 -1
- package/src/interfaces/simple-keypair-buffer.d.ts.map +0 -1
- package/src/interfaces/simple-keypair-buffer.js +0 -3
- package/src/interfaces/simple-keypair-buffer.js.map +0 -1
- package/src/interfaces/simple-keypair.d.ts.map +0 -1
- package/src/interfaces/simple-keypair.js +0 -3
- package/src/interfaces/simple-keypair.js.map +0 -1
- package/src/interfaces/simple-public-key-only-buffer.d.ts +0 -4
- package/src/interfaces/simple-public-key-only-buffer.d.ts.map +0 -1
- package/src/interfaces/simple-public-key-only-buffer.js +0 -3
- package/src/interfaces/simple-public-key-only-buffer.js.map +0 -1
- package/src/interfaces/simple-public-key-only.d.ts +0 -4
- package/src/interfaces/simple-public-key-only.d.ts.map +0 -1
- package/src/interfaces/simple-public-key-only.js +0 -3
- package/src/interfaces/simple-public-key-only.js.map +0 -1
- package/src/interfaces/single-encrypted-parsed-header.d.ts +0 -35
- package/src/interfaces/single-encrypted-parsed-header.d.ts.map +0 -1
- package/src/interfaces/single-encrypted-parsed-header.js +0 -3
- package/src/interfaces/single-encrypted-parsed-header.js.map +0 -1
- package/src/interfaces/stream-config.d.ts +0 -6
- 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-progress.d.ts +0 -8
- package/src/interfaces/stream-progress.d.ts.map +0 -1
- package/src/interfaces/stream-progress.js +0 -3
- package/src/interfaces/stream-progress.js.map +0 -1
- package/src/interfaces/wallet-seed.d.ts.map +0 -1
- package/src/interfaces/wallet-seed.js +0 -3
- package/src/interfaces/wallet-seed.js.map +0 -1
- package/src/interfaces/wrapped-key-consts.d.ts +0 -7
- package/src/interfaces/wrapped-key-consts.d.ts.map +0 -1
- package/src/interfaces/wrapped-key-consts.js +0 -3
- package/src/interfaces/wrapped-key-consts.js.map +0 -1
- package/src/lib/crypto-container.d.ts +0 -13
- package/src/lib/crypto-container.d.ts.map +0 -1
- package/src/lib/crypto-container.js +0 -29
- package/src/lib/crypto-container.js.map +0 -1
- package/src/lib/index.d.ts.map +0 -1
- package/src/lib/index.js +0 -7
- package/src/lib/index.js.map +0 -1
- package/src/lib/invariant-validator.d.ts +0 -62
- package/src/lib/invariant-validator.d.ts.map +0 -1
- package/src/lib/invariant-validator.js +0 -108
- package/src/lib/invariant-validator.js.map +0 -1
- package/src/lib/invariants/index.d.ts.map +0 -1
- package/src/lib/invariants/index.js +0 -12
- package/src/lib/invariants/index.js.map +0 -1
- package/src/lib/invariants/recipient-id-consistency.d.ts +0 -22
- package/src/lib/invariants/recipient-id-consistency.d.ts.map +0 -1
- package/src/lib/invariants/recipient-id-consistency.js +0 -62
- package/src/lib/invariants/recipient-id-consistency.js.map +0 -1
- package/src/member.d.ts +0 -81
- package/src/member.d.ts.map +0 -1
- package/src/member.js +0 -285
- package/src/member.js.map +0 -1
- package/src/services/aes-gcm.d.ts +0 -66
- package/src/services/aes-gcm.d.ts.map +0 -1
- package/src/services/aes-gcm.js +0 -158
- package/src/services/aes-gcm.js.map +0 -1
- package/src/services/chunk-processor.d.ts +0 -15
- package/src/services/chunk-processor.d.ts.map +0 -1
- package/src/services/chunk-processor.js +0 -36
- package/src/services/chunk-processor.js.map +0 -1
- package/src/services/ecies/crypto-core.d.ts +0 -104
- package/src/services/ecies/crypto-core.d.ts.map +0 -1
- package/src/services/ecies/crypto-core.js +0 -237
- package/src/services/ecies/crypto-core.js.map +0 -1
- package/src/services/ecies/file.d.ts +0 -30
- package/src/services/ecies/file.d.ts.map +0 -1
- package/src/services/ecies/file.js +0 -112
- package/src/services/ecies/file.js.map +0 -1
- package/src/services/ecies/index.d.ts.map +0 -1
- package/src/services/ecies/index.js +0 -11
- package/src/services/ecies/index.js.map +0 -1
- package/src/services/ecies/multi-recipient.d.ts +0 -84
- package/src/services/ecies/multi-recipient.d.ts.map +0 -1
- package/src/services/ecies/multi-recipient.js +0 -496
- package/src/services/ecies/multi-recipient.js.map +0 -1
- package/src/services/ecies/service.d.ts +0 -69
- package/src/services/ecies/service.d.ts.map +0 -1
- package/src/services/ecies/service.js +0 -144
- package/src/services/ecies/service.js.map +0 -1
- package/src/services/ecies/signature.d.ts +0 -38
- package/src/services/ecies/signature.d.ts.map +0 -1
- package/src/services/ecies/signature.js +0 -69
- package/src/services/ecies/signature.js.map +0 -1
- package/src/services/ecies/single-recipient.d.ts +0 -83
- package/src/services/ecies/single-recipient.d.ts.map +0 -1
- package/src/services/ecies/single-recipient.js +0 -447
- package/src/services/ecies/single-recipient.js.map +0 -1
- package/src/services/ecies/utilities.d.ts +0 -33
- package/src/services/ecies/utilities.d.ts.map +0 -1
- package/src/services/ecies/utilities.js +0 -91
- package/src/services/ecies/utilities.js.map +0 -1
- package/src/services/encryption-stream.d.ts +0 -33
- package/src/services/encryption-stream.d.ts.map +0 -1
- package/src/services/encryption-stream.js +0 -207
- package/src/services/encryption-stream.js.map +0 -1
- package/src/services/index.d.ts.map +0 -1
- package/src/services/index.js +0 -11
- package/src/services/index.js.map +0 -1
- package/src/services/multi-recipient-processor.d.ts +0 -72
- package/src/services/multi-recipient-processor.d.ts.map +0 -1
- package/src/services/multi-recipient-processor.js +0 -322
- package/src/services/multi-recipient-processor.js.map +0 -1
- package/src/services/pbkdf2.d.ts +0 -105
- package/src/services/pbkdf2.d.ts.map +0 -1
- package/src/services/pbkdf2.js +0 -189
- package/src/services/pbkdf2.js.map +0 -1
- package/src/services/progress-tracker.d.ts +0 -9
- package/src/services/progress-tracker.d.ts.map +0 -1
- package/src/services/progress-tracker.js +0 -41
- package/src/services/progress-tracker.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 -5
- package/src/test-mocks/index.js.map +0 -1
- package/src/test-mocks/mock-backend-member.d.ts +0 -71
- package/src/test-mocks/mock-backend-member.d.ts.map +0 -1
- package/src/test-mocks/mock-backend-member.js +0 -133
- package/src/test-mocks/mock-backend-member.js.map +0 -1
- package/src/testing.d.ts +0 -2
- package/src/testing.d.ts.map +0 -1
- package/src/testing.js +0 -6
- package/src/testing.js.map +0 -1
- package/src/types/id-guards.d.ts +0 -39
- package/src/types/id-guards.d.ts.map +0 -1
- package/src/types/id-guards.js +0 -91
- package/src/types/id-guards.js.map +0 -1
- package/src/types/index.d.ts +0 -2
- package/src/types/index.d.ts.map +0 -1
- package/src/types/index.js +0 -5
- package/src/types/index.js.map +0 -1
- package/src/types.d.ts.map +0 -1
- package/src/types.js +0 -6
- package/src/types.js.map +0 -1
- package/src/utils.d.ts +0 -11
- package/src/utils.d.ts.map +0 -1
- package/src/utils.js +0 -82
- package/src/utils.js.map +0 -1
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ChunkProcessor = void 0;
|
|
4
|
-
class ChunkProcessor {
|
|
5
|
-
ecies;
|
|
6
|
-
constructor(ecies) {
|
|
7
|
-
this.ecies = ecies;
|
|
8
|
-
}
|
|
9
|
-
async encryptChunk(data, publicKey, chunkIndex, isLast, includeChecksums = false) {
|
|
10
|
-
const encrypted = this.ecies.encryptSimpleOrSingle(false, publicKey, data);
|
|
11
|
-
// Prepend chunk header: 4 bytes index + 1 byte flags
|
|
12
|
-
const header = Buffer.alloc(5);
|
|
13
|
-
header.writeUInt32BE(chunkIndex, 0);
|
|
14
|
-
header.writeUInt8(isLast ? 1 : 0, 4);
|
|
15
|
-
const dataWithHeader = Buffer.concat([header, encrypted]);
|
|
16
|
-
return {
|
|
17
|
-
index: chunkIndex,
|
|
18
|
-
data: dataWithHeader,
|
|
19
|
-
isLast,
|
|
20
|
-
metadata: includeChecksums ? { totalChunks: chunkIndex + 1 } : undefined,
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
async decryptChunk(chunkData, privateKey) {
|
|
24
|
-
// Extract chunk header: 4 bytes index + 1 byte flags
|
|
25
|
-
const index = chunkData.readUInt32BE(0);
|
|
26
|
-
const flags = chunkData.readUInt8(4);
|
|
27
|
-
const encrypted = chunkData.subarray(5);
|
|
28
|
-
const decrypted = this.ecies.decryptSimpleOrSingleWithHeader(false, privateKey, encrypted);
|
|
29
|
-
return {
|
|
30
|
-
data: decrypted,
|
|
31
|
-
header: { index, flags },
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
exports.ChunkProcessor = ChunkProcessor;
|
|
36
|
-
//# sourceMappingURL=chunk-processor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-processor.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-ecies-lib/src/services/chunk-processor.ts"],"names":[],"mappings":";;;AAGA,MAAa,cAAc;IACI;IAA7B,YAA6B,KAAmB;QAAnB,UAAK,GAAL,KAAK,CAAc;IAAG,CAAC;IAE7C,KAAK,CAAC,YAAY,CACvB,IAAY,EACZ,SAAiB,EACjB,UAAkB,EAClB,MAAe,EACf,mBAA4B,KAAK;QAEjC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAE3E,qDAAqD;QACrD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAErC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;QAE1D,OAAO;YACL,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,cAAc;YACpB,MAAM;YACN,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;SACzE,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,YAAY,CACvB,SAAiB,EACjB,UAAkB;QAElB,qDAAqD;QACrD,MAAM,KAAK,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAExC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QAE3F,OAAO;YACL,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;SACzB,CAAC;IACJ,CAAC;CACF;AA3CD,wCA2CC"}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import { IECIESConfig, IECIESConstants, SecureString } from '@digitaldefiance/ecies-lib';
|
|
2
|
-
import { Wallet } from '@ethereumjs/wallet';
|
|
3
|
-
import { ISimpleKeyPairBuffer } from '../../interfaces/simple-keypair-buffer';
|
|
4
|
-
import { IWalletSeed } from '../../interfaces/wallet-seed';
|
|
5
|
-
/**
|
|
6
|
-
* Core encryption and decryption functions for ECIES
|
|
7
|
-
* Includes coverage for simple and single modes, does not cover multiple mode which is in a separate module
|
|
8
|
-
*/
|
|
9
|
-
export declare class EciesCryptoCore {
|
|
10
|
-
protected readonly _config: IECIESConfig;
|
|
11
|
-
protected readonly _consts: IECIESConstants;
|
|
12
|
-
get config(): IECIESConfig;
|
|
13
|
-
get consts(): IECIESConstants;
|
|
14
|
-
constructor(config: IECIESConfig, eciesParams?: IECIESConstants);
|
|
15
|
-
/**
|
|
16
|
-
* Validates and normalizes a public key for ECIES operations
|
|
17
|
-
* @param publicKey The public key to normalize
|
|
18
|
-
* @returns Properly formatted public key
|
|
19
|
-
*/
|
|
20
|
-
normalizePublicKey(publicKey: Buffer): Buffer;
|
|
21
|
-
/**
|
|
22
|
-
* Generate a new mnemonic
|
|
23
|
-
* @returns {SecureString} The new mnemonic
|
|
24
|
-
*/
|
|
25
|
-
generateNewMnemonic(): SecureString;
|
|
26
|
-
/**
|
|
27
|
-
* Generate a new wallet from a seed
|
|
28
|
-
* @param seed {Buffer} The seed to generate the wallet from
|
|
29
|
-
* @returns {Wallet} The new wallet
|
|
30
|
-
*/
|
|
31
|
-
walletFromSeed(seed: Buffer): Wallet;
|
|
32
|
-
/**
|
|
33
|
-
* Generate a new wallet and seed from a mnemonic
|
|
34
|
-
* @param mnemonic {SecureString} The mnemonic to generate the wallet and seed from
|
|
35
|
-
* @returns {IWalletSeed} The new wallet and seed
|
|
36
|
-
*/
|
|
37
|
-
walletAndSeedFromMnemonic(mnemonic: SecureString): IWalletSeed;
|
|
38
|
-
/**
|
|
39
|
-
* Generate a new wallet and seed from a mnemonic
|
|
40
|
-
* @param wallet {Wallet} The wallet to generate the key pair from
|
|
41
|
-
* @returns {ISimpleKeyPairBuffer} The new key pair
|
|
42
|
-
*/
|
|
43
|
-
walletToSimpleKeyPairBuffer(wallet: Wallet): ISimpleKeyPairBuffer;
|
|
44
|
-
/**
|
|
45
|
-
* Create a simple key pair from a seed
|
|
46
|
-
* @param seed {Buffer} The seed to generate the key pair from
|
|
47
|
-
* @returns {ISimpleKeyPairBuffer} The new key pair
|
|
48
|
-
*/
|
|
49
|
-
seedToSimpleKeyPairBuffer(seed: Buffer): ISimpleKeyPairBuffer;
|
|
50
|
-
/**
|
|
51
|
-
* Create a simple key pair from a mnemonic
|
|
52
|
-
* @param mnemonic {SecureString} The mnemonic to generate the key pair from
|
|
53
|
-
* @returns {ISimpleKeyPairBuffer} The new key pair
|
|
54
|
-
*/
|
|
55
|
-
mnemonicToSimpleKeyPairBuffer(mnemonic: SecureString): ISimpleKeyPairBuffer;
|
|
56
|
-
/**
|
|
57
|
-
* Generate a random private key
|
|
58
|
-
* @returns {Buffer} The new private key
|
|
59
|
-
*/
|
|
60
|
-
generatePrivateKey(): Buffer;
|
|
61
|
-
/**
|
|
62
|
-
* Get public key from private key
|
|
63
|
-
* @param privateKey {Buffer} The private key
|
|
64
|
-
* @returns {Buffer} The public key
|
|
65
|
-
*/
|
|
66
|
-
getPublicKey(privateKey: Buffer): Buffer;
|
|
67
|
-
/**
|
|
68
|
-
* Generate ephemeral key pair for ECIES
|
|
69
|
-
* @returns {Promise<ISimpleKeyPairBuffer>} The key pair
|
|
70
|
-
*/
|
|
71
|
-
generateEphemeralKeyPair(): Promise<{
|
|
72
|
-
privateKey: Buffer;
|
|
73
|
-
publicKey: Buffer;
|
|
74
|
-
}>;
|
|
75
|
-
/**
|
|
76
|
-
* Compute ECDH shared secret
|
|
77
|
-
* @param privateKey {Buffer} The private key
|
|
78
|
-
* @param publicKey {Buffer} The public key
|
|
79
|
-
* @returns {Buffer} The shared secret
|
|
80
|
-
*/
|
|
81
|
-
computeSharedSecret(privateKey: Buffer, publicKey: Buffer): Buffer;
|
|
82
|
-
/**
|
|
83
|
-
* Derive a symmetric key from a shared secret using HKDF
|
|
84
|
-
* @param sharedSecret The shared secret (ECDH output)
|
|
85
|
-
* @param salt Optional salt
|
|
86
|
-
* @param info Optional context info
|
|
87
|
-
* @param length Length of the output key (default 32 for AES-256)
|
|
88
|
-
*/
|
|
89
|
-
deriveSharedKey(sharedSecret: Buffer, salt?: Buffer, info?: Buffer, length?: number): Buffer;
|
|
90
|
-
/**
|
|
91
|
-
* Sign a message using ECDSA
|
|
92
|
-
* @param privateKey The private key to sign with
|
|
93
|
-
* @param message The message to sign
|
|
94
|
-
*/
|
|
95
|
-
sign(privateKey: Buffer, message: Buffer): Buffer;
|
|
96
|
-
/**
|
|
97
|
-
* Verify a signature using ECDSA
|
|
98
|
-
* @param publicKey The public key to verify with
|
|
99
|
-
* @param message The message that was signed
|
|
100
|
-
* @param signature The signature to verify
|
|
101
|
-
*/
|
|
102
|
-
verify(publicKey: Buffer, message: Buffer, signature: Buffer): boolean;
|
|
103
|
-
}
|
|
104
|
-
//# sourceMappingURL=crypto-core.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"crypto-core.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-node-ecies-lib/src/services/ecies/crypto-core.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EACZ,eAAe,EAEf,YAAY,EACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAS,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAUnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAG3D;;;GAGG;AACH,qBAAa,eAAe;IAC1B,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IACzC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAC5C,IAAW,MAAM,IAAI,YAAY,CAEhC;IAED,IAAW,MAAM,IAAI,eAAe,CAEnC;gBAGC,MAAM,EAAE,YAAY,EACpB,WAAW,GAAE,eAAiC;IAMhD;;;;OAIG;IACI,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IA+EpD;;;OAGG;IACI,mBAAmB,IAAI,YAAY;IAI1C;;;;OAIG;IACI,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAO3C;;;;OAIG;IACI,yBAAyB,CAAC,QAAQ,EAAE,YAAY,GAAG,WAAW;IAiBrE;;;;OAIG;IACI,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB;IAUxE;;;;OAIG;IACI,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB;IAKpE;;;;OAIG;IACI,6BAA6B,CAClC,QAAQ,EAAE,YAAY,GACrB,oBAAoB;IAKvB;;;OAGG;IACI,kBAAkB,IAAI,MAAM;IAInC;;;;OAIG;IACI,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAY/C;;;OAGG;IACU,wBAAwB,IAAI,OAAO,CAAC;QAC/C,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAMF;;;;;OAKG;IACI,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAyBzE;;;;;;OAMG;IACI,eAAe,CACpB,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE,MAAwB,EAC9B,IAAI,GAAE,MAAwB,EAC9B,MAAM,GAAE,MAAW,GAClB,MAAM;IAIT;;;;OAIG;IACI,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAMxD;;;;;OAKG;IACI,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAQ9E"}
|
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EciesCryptoCore = void 0;
|
|
4
|
-
const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
|
|
5
|
-
const wallet_1 = require("@ethereumjs/wallet");
|
|
6
|
-
const bip39_1 = require("bip39");
|
|
7
|
-
const secp256k1_js_1 = require("ethereum-cryptography/secp256k1.js");
|
|
8
|
-
const crypto_1 = require("crypto");
|
|
9
|
-
const ecies_i18n_factory_1 = require("../../i18n/ecies-i18n-factory");
|
|
10
|
-
const constants_1 = require("../../constants");
|
|
11
|
-
/**
|
|
12
|
-
* Core encryption and decryption functions for ECIES
|
|
13
|
-
* Includes coverage for simple and single modes, does not cover multiple mode which is in a separate module
|
|
14
|
-
*/
|
|
15
|
-
class EciesCryptoCore {
|
|
16
|
-
_config;
|
|
17
|
-
_consts;
|
|
18
|
-
get config() {
|
|
19
|
-
return this._config;
|
|
20
|
-
}
|
|
21
|
-
get consts() {
|
|
22
|
-
return this._consts;
|
|
23
|
-
}
|
|
24
|
-
constructor(config, eciesParams = constants_1.Constants.ECIES) {
|
|
25
|
-
this._config = config;
|
|
26
|
-
this._consts = eciesParams;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Validates and normalizes a public key for ECIES operations
|
|
30
|
-
* @param publicKey The public key to normalize
|
|
31
|
-
* @returns Properly formatted public key
|
|
32
|
-
*/
|
|
33
|
-
normalizePublicKey(publicKey) {
|
|
34
|
-
if (!publicKey) {
|
|
35
|
-
const pluginEngine = (0, ecies_i18n_factory_1.getEciesPluginI18nEngine)();
|
|
36
|
-
throw new ecies_lib_1.ECIESError(ecies_lib_1.ECIESErrorTypeEnum.InvalidEphemeralPublicKey, undefined, undefined, {
|
|
37
|
-
error: pluginEngine.translate(ecies_i18n_factory_1.NodeEciesComponentId, ecies_i18n_factory_1.NodeEciesStringKey.Error_InvalidPublicKey),
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
const keyLength = publicKey.length;
|
|
41
|
-
// console.log('[normalizePublicKey] Magic:', this._consts.PUBLIC_KEY_MAGIC);
|
|
42
|
-
// Check for compressed key (33 bytes, starts with 0x02 or 0x03)
|
|
43
|
-
if (keyLength === 33 &&
|
|
44
|
-
(publicKey[0] === 0x02 || publicKey[0] === 0x03)) {
|
|
45
|
-
return publicKey;
|
|
46
|
-
}
|
|
47
|
-
// Check for uncompressed key (65 bytes, starts with 0x04)
|
|
48
|
-
if (keyLength === 65 &&
|
|
49
|
-
publicKey[0] === 0x04) {
|
|
50
|
-
return publicKey;
|
|
51
|
-
}
|
|
52
|
-
// Raw key without prefix (64 bytes) - add the 0x04 prefix
|
|
53
|
-
if (keyLength === 64) {
|
|
54
|
-
return Buffer.concat([
|
|
55
|
-
Buffer.from([0x04]),
|
|
56
|
-
publicKey,
|
|
57
|
-
]);
|
|
58
|
-
}
|
|
59
|
-
// Raw key without prefix (32 bytes) - add the 0x02 prefix (assuming even Y)
|
|
60
|
-
// Note: This is ambiguous for compressed keys as we don't know Y parity.
|
|
61
|
-
// But if we assume it's a raw X coordinate, we might default to 0x02?
|
|
62
|
-
// Actually, RAW_PUBLIC_KEY_LENGTH is 32.
|
|
63
|
-
if (keyLength === this._consts.RAW_PUBLIC_KEY_LENGTH) {
|
|
64
|
-
// If we only have X, we can't fully reconstruct without knowing Y parity.
|
|
65
|
-
// But maybe the intention of RAW_PUBLIC_KEY_LENGTH was for uncompressed without prefix (64 bytes)?
|
|
66
|
-
// The constants say RAW_PUBLIC_KEY_LENGTH = 32.
|
|
67
|
-
// So it expects X coordinate only.
|
|
68
|
-
// We can try to prepend 0x02.
|
|
69
|
-
return Buffer.concat([
|
|
70
|
-
Buffer.from([this._consts.PUBLIC_KEY_MAGIC]),
|
|
71
|
-
publicKey,
|
|
72
|
-
]);
|
|
73
|
-
}
|
|
74
|
-
const pluginEngine = (0, ecies_i18n_factory_1.getEciesPluginI18nEngine)();
|
|
75
|
-
// Invalid format
|
|
76
|
-
throw new ecies_lib_1.ECIESError(ecies_lib_1.ECIESErrorTypeEnum.InvalidEphemeralPublicKey, undefined, undefined, {
|
|
77
|
-
error: pluginEngine.translate(ecies_i18n_factory_1.NodeEciesComponentId, ecies_i18n_factory_1.NodeEciesStringKey.Error_InvalidPublicKeyFormat),
|
|
78
|
-
keyLength: String(keyLength),
|
|
79
|
-
expectedLength64: String(this._consts.RAW_PUBLIC_KEY_LENGTH),
|
|
80
|
-
expectedLength65: String(this._consts.PUBLIC_KEY_LENGTH),
|
|
81
|
-
keyPrefix: keyLength > 0 ? String(publicKey[0]) : 'N/A',
|
|
82
|
-
expectedPrefix: String(this._consts.PUBLIC_KEY_MAGIC),
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Generate a new mnemonic
|
|
87
|
-
* @returns {SecureString} The new mnemonic
|
|
88
|
-
*/
|
|
89
|
-
generateNewMnemonic() {
|
|
90
|
-
return new ecies_lib_1.SecureString((0, bip39_1.generateMnemonic)(this._config.mnemonicStrength));
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Generate a new wallet from a seed
|
|
94
|
-
* @param seed {Buffer} The seed to generate the wallet from
|
|
95
|
-
* @returns {Wallet} The new wallet
|
|
96
|
-
*/
|
|
97
|
-
walletFromSeed(seed) {
|
|
98
|
-
const hdWallet = wallet_1.hdkey.EthereumHDKey.fromMasterSeed(seed);
|
|
99
|
-
return hdWallet
|
|
100
|
-
.derivePath(this._config.primaryKeyDerivationPath)
|
|
101
|
-
.getWallet();
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Generate a new wallet and seed from a mnemonic
|
|
105
|
-
* @param mnemonic {SecureString} The mnemonic to generate the wallet and seed from
|
|
106
|
-
* @returns {IWalletSeed} The new wallet and seed
|
|
107
|
-
*/
|
|
108
|
-
walletAndSeedFromMnemonic(mnemonic) {
|
|
109
|
-
if (!mnemonic.value || !(0, bip39_1.validateMnemonic)(mnemonic.value)) {
|
|
110
|
-
throw new ecies_lib_1.ECIESError(ecies_lib_1.ECIESErrorTypeEnum.InvalidMnemonic, (0, ecies_i18n_factory_1.createEciesTranslationEngine)());
|
|
111
|
-
}
|
|
112
|
-
const seed = (0, bip39_1.mnemonicToSeedSync)(mnemonic.value);
|
|
113
|
-
const wallet = this.walletFromSeed(seed);
|
|
114
|
-
return {
|
|
115
|
-
seed: new ecies_lib_1.SecureBuffer(seed),
|
|
116
|
-
wallet,
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Generate a new wallet and seed from a mnemonic
|
|
121
|
-
* @param wallet {Wallet} The wallet to generate the key pair from
|
|
122
|
-
* @returns {ISimpleKeyPairBuffer} The new key pair
|
|
123
|
-
*/
|
|
124
|
-
walletToSimpleKeyPairBuffer(wallet) {
|
|
125
|
-
const privateKey = Buffer.from(wallet.getPrivateKey());
|
|
126
|
-
const publicKey = this.getPublicKey(privateKey);
|
|
127
|
-
return {
|
|
128
|
-
privateKey,
|
|
129
|
-
publicKey,
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Create a simple key pair from a seed
|
|
134
|
-
* @param seed {Buffer} The seed to generate the key pair from
|
|
135
|
-
* @returns {ISimpleKeyPairBuffer} The new key pair
|
|
136
|
-
*/
|
|
137
|
-
seedToSimpleKeyPairBuffer(seed) {
|
|
138
|
-
const wallet = this.walletFromSeed(seed);
|
|
139
|
-
return this.walletToSimpleKeyPairBuffer(wallet);
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Create a simple key pair from a mnemonic
|
|
143
|
-
* @param mnemonic {SecureString} The mnemonic to generate the key pair from
|
|
144
|
-
* @returns {ISimpleKeyPairBuffer} The new key pair
|
|
145
|
-
*/
|
|
146
|
-
mnemonicToSimpleKeyPairBuffer(mnemonic) {
|
|
147
|
-
const { seed } = this.walletAndSeedFromMnemonic(mnemonic);
|
|
148
|
-
return this.seedToSimpleKeyPairBuffer(Buffer.from(seed.value));
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Generate a random private key
|
|
152
|
-
* @returns {Buffer} The new private key
|
|
153
|
-
*/
|
|
154
|
-
generatePrivateKey() {
|
|
155
|
-
return Buffer.from(secp256k1_js_1.secp256k1.utils.randomPrivateKey());
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Get public key from private key
|
|
159
|
-
* @param privateKey {Buffer} The private key
|
|
160
|
-
* @returns {Buffer} The public key
|
|
161
|
-
*/
|
|
162
|
-
getPublicKey(privateKey) {
|
|
163
|
-
// Security fix 2: Private key validation
|
|
164
|
-
if (privateKey.every(byte => byte === 0)) {
|
|
165
|
-
throw new ecies_lib_1.ECIESError(ecies_lib_1.ECIESErrorTypeEnum.PrivateKeyNotLoaded, (0, ecies_i18n_factory_1.createEciesTranslationEngine)());
|
|
166
|
-
}
|
|
167
|
-
const publicKey = secp256k1_js_1.secp256k1.getPublicKey(privateKey, true);
|
|
168
|
-
return Buffer.from(publicKey);
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Generate ephemeral key pair for ECIES
|
|
172
|
-
* @returns {Promise<ISimpleKeyPairBuffer>} The key pair
|
|
173
|
-
*/
|
|
174
|
-
async generateEphemeralKeyPair() {
|
|
175
|
-
const privateKey = this.generatePrivateKey();
|
|
176
|
-
const publicKey = this.getPublicKey(privateKey);
|
|
177
|
-
return { privateKey, publicKey };
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Compute ECDH shared secret
|
|
181
|
-
* @param privateKey {Buffer} The private key
|
|
182
|
-
* @param publicKey {Buffer} The public key
|
|
183
|
-
* @returns {Buffer} The shared secret
|
|
184
|
-
*/
|
|
185
|
-
computeSharedSecret(privateKey, publicKey) {
|
|
186
|
-
// Security fix 1: Public key validation (check normalized key)
|
|
187
|
-
const normalizedKey = this.normalizePublicKey(publicKey);
|
|
188
|
-
const isAllZeros = normalizedKey.slice(1).every(byte => byte === 0);
|
|
189
|
-
if (isAllZeros) {
|
|
190
|
-
throw new ecies_lib_1.ECIESError(ecies_lib_1.ECIESErrorTypeEnum.InvalidRecipientPublicKey, (0, ecies_i18n_factory_1.createEciesTranslationEngine)());
|
|
191
|
-
}
|
|
192
|
-
const sharedSecret = secp256k1_js_1.secp256k1.getSharedSecret(privateKey, normalizedKey, true);
|
|
193
|
-
const secret = Buffer.from(sharedSecret.slice(1)); // Remove the 0x02/0x03 prefix
|
|
194
|
-
// Security fix 3: Shared secret validation
|
|
195
|
-
if (secret.every(byte => byte === 0)) {
|
|
196
|
-
throw new ecies_lib_1.ECIESError(ecies_lib_1.ECIESErrorTypeEnum.SecretComputationFailed, (0, ecies_i18n_factory_1.createEciesTranslationEngine)());
|
|
197
|
-
}
|
|
198
|
-
return secret;
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Derive a symmetric key from a shared secret using HKDF
|
|
202
|
-
* @param sharedSecret The shared secret (ECDH output)
|
|
203
|
-
* @param salt Optional salt
|
|
204
|
-
* @param info Optional context info
|
|
205
|
-
* @param length Length of the output key (default 32 for AES-256)
|
|
206
|
-
*/
|
|
207
|
-
deriveSharedKey(sharedSecret, salt = Buffer.alloc(0), info = Buffer.alloc(0), length = 32) {
|
|
208
|
-
return Buffer.from((0, crypto_1.hkdfSync)('sha256', sharedSecret, salt, info, length));
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Sign a message using ECDSA
|
|
212
|
-
* @param privateKey The private key to sign with
|
|
213
|
-
* @param message The message to sign
|
|
214
|
-
*/
|
|
215
|
-
sign(privateKey, message) {
|
|
216
|
-
const hash = (0, crypto_1.createHash)('sha256').update(message).digest();
|
|
217
|
-
const signature = secp256k1_js_1.secp256k1.sign(hash, privateKey);
|
|
218
|
-
return Buffer.from(signature.toCompactRawBytes());
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* Verify a signature using ECDSA
|
|
222
|
-
* @param publicKey The public key to verify with
|
|
223
|
-
* @param message The message that was signed
|
|
224
|
-
* @param signature The signature to verify
|
|
225
|
-
*/
|
|
226
|
-
verify(publicKey, message, signature) {
|
|
227
|
-
const hash = (0, crypto_1.createHash)('sha256').update(message).digest();
|
|
228
|
-
try {
|
|
229
|
-
return secp256k1_js_1.secp256k1.verify(signature, hash, publicKey);
|
|
230
|
-
}
|
|
231
|
-
catch (e) {
|
|
232
|
-
return false;
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
exports.EciesCryptoCore = EciesCryptoCore;
|
|
237
|
-
//# sourceMappingURL=crypto-core.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"crypto-core.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-node-ecies-lib/src/services/ecies/crypto-core.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { ECIESService } from './service';
|
|
2
|
-
interface ChunkedFileHeader {
|
|
3
|
-
version: number;
|
|
4
|
-
chunkSize: number;
|
|
5
|
-
totalChunks: number;
|
|
6
|
-
originalSize: number;
|
|
7
|
-
}
|
|
8
|
-
export declare class EciesFileService {
|
|
9
|
-
protected readonly eciesService: ECIESService;
|
|
10
|
-
protected readonly userPrivateKey: Buffer;
|
|
11
|
-
protected readonly config: {
|
|
12
|
-
chunkSize: number;
|
|
13
|
-
headerSize: number;
|
|
14
|
-
};
|
|
15
|
-
constructor(eciesService: ECIESService, userPrivateKey: Buffer, config?: {
|
|
16
|
-
chunkSize: number;
|
|
17
|
-
headerSize: number;
|
|
18
|
-
});
|
|
19
|
-
decryptFile(encryptedData: Buffer): Buffer;
|
|
20
|
-
encryptFileFromPath(filePath: string, recipientPublicKey: Buffer): Buffer;
|
|
21
|
-
decryptFileToPath(encryptedData: Buffer, outputPath: string): void;
|
|
22
|
-
protected serializeHeader(header: ChunkedFileHeader): Buffer;
|
|
23
|
-
protected deserializeHeader(data: Buffer): ChunkedFileHeader;
|
|
24
|
-
protected parseEncryptedFile(encryptedData: Buffer): {
|
|
25
|
-
header: ChunkedFileHeader;
|
|
26
|
-
chunks: Buffer[];
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
export {};
|
|
30
|
-
//# sourceMappingURL=file.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-node-ecies-lib/src/services/ecies/file.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,gBAAgB;IAC3B,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAC9C,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAC1C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;gBAGnE,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,MAAM,EACtB,MAAM,GAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAG9C;IAOH,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAuB1C,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,MAAM;IAyCzE,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAwBlE,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM;IAS5D,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB;IAS5D,SAAS,CAAC,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG;QACnD,MAAM,EAAE,iBAAiB,CAAC;QAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB;CAiCF"}
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EciesFileService = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const fs = tslib_1.__importStar(require("fs"));
|
|
6
|
-
class EciesFileService {
|
|
7
|
-
eciesService;
|
|
8
|
-
userPrivateKey;
|
|
9
|
-
config;
|
|
10
|
-
constructor(eciesService, userPrivateKey, config = {
|
|
11
|
-
chunkSize: 1024 * 1024, // 1MB chunks
|
|
12
|
-
headerSize: 20,
|
|
13
|
-
}) {
|
|
14
|
-
this.eciesService = eciesService;
|
|
15
|
-
this.userPrivateKey = userPrivateKey;
|
|
16
|
-
this.config = Object.freeze(config);
|
|
17
|
-
}
|
|
18
|
-
decryptFile(encryptedData) {
|
|
19
|
-
const { header, chunks } = this.parseEncryptedFile(encryptedData);
|
|
20
|
-
const decryptedChunks = [];
|
|
21
|
-
for (const chunk of chunks) {
|
|
22
|
-
const decrypted = this.eciesService.decryptSimpleOrSingleWithHeader(false, this.userPrivateKey, chunk);
|
|
23
|
-
decryptedChunks.push(decrypted);
|
|
24
|
-
}
|
|
25
|
-
const result = Buffer.alloc(header.originalSize);
|
|
26
|
-
let offset = 0;
|
|
27
|
-
for (const chunk of decryptedChunks) {
|
|
28
|
-
const copyLength = Math.min(chunk.length, header.originalSize - offset);
|
|
29
|
-
chunk.copy(result, offset, 0, copyLength);
|
|
30
|
-
offset += copyLength;
|
|
31
|
-
}
|
|
32
|
-
return result;
|
|
33
|
-
}
|
|
34
|
-
encryptFileFromPath(filePath, recipientPublicKey) {
|
|
35
|
-
const stats = fs.statSync(filePath);
|
|
36
|
-
const totalChunks = Math.ceil(stats.size / this.config.chunkSize);
|
|
37
|
-
const header = {
|
|
38
|
-
version: 1,
|
|
39
|
-
chunkSize: this.config.chunkSize,
|
|
40
|
-
totalChunks,
|
|
41
|
-
originalSize: stats.size,
|
|
42
|
-
};
|
|
43
|
-
const headerBytes = this.serializeHeader(header);
|
|
44
|
-
const encryptedHeader = this.eciesService.encryptSimpleOrSingle(false, recipientPublicKey, headerBytes);
|
|
45
|
-
const chunks = [encryptedHeader];
|
|
46
|
-
const fd = fs.openSync(filePath, 'r');
|
|
47
|
-
try {
|
|
48
|
-
for (let i = 0; i < totalChunks; i++) {
|
|
49
|
-
const offset = i * this.config.chunkSize;
|
|
50
|
-
const chunkSize = Math.min(this.config.chunkSize, stats.size - offset);
|
|
51
|
-
const chunkData = Buffer.alloc(chunkSize);
|
|
52
|
-
fs.readSync(fd, chunkData, 0, chunkSize, offset);
|
|
53
|
-
const encryptedChunk = this.eciesService.encryptSimpleOrSingle(false, recipientPublicKey, chunkData);
|
|
54
|
-
chunks.push(encryptedChunk);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
finally {
|
|
58
|
-
fs.closeSync(fd);
|
|
59
|
-
}
|
|
60
|
-
return Buffer.concat(chunks);
|
|
61
|
-
}
|
|
62
|
-
decryptFileToPath(encryptedData, outputPath) {
|
|
63
|
-
const { header, chunks } = this.parseEncryptedFile(encryptedData);
|
|
64
|
-
const fd = fs.openSync(outputPath, 'w');
|
|
65
|
-
let offset = 0;
|
|
66
|
-
try {
|
|
67
|
-
for (const chunk of chunks) {
|
|
68
|
-
const decrypted = this.eciesService.decryptSimpleOrSingleWithHeader(false, this.userPrivateKey, chunk);
|
|
69
|
-
const writeLength = Math.min(decrypted.length, header.originalSize - offset);
|
|
70
|
-
fs.writeSync(fd, decrypted, 0, writeLength, offset);
|
|
71
|
-
offset += writeLength;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
finally {
|
|
75
|
-
fs.closeSync(fd);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
serializeHeader(header) {
|
|
79
|
-
const buffer = Buffer.alloc(this.config.headerSize);
|
|
80
|
-
buffer.writeUInt32BE(header.version, 0);
|
|
81
|
-
buffer.writeUInt32BE(header.chunkSize, 4);
|
|
82
|
-
buffer.writeUInt32BE(header.totalChunks, 8);
|
|
83
|
-
buffer.writeUInt32BE(header.originalSize, 12);
|
|
84
|
-
return buffer;
|
|
85
|
-
}
|
|
86
|
-
deserializeHeader(data) {
|
|
87
|
-
return {
|
|
88
|
-
version: data.readUInt32BE(0),
|
|
89
|
-
chunkSize: data.readUInt32BE(4),
|
|
90
|
-
totalChunks: data.readUInt32BE(8),
|
|
91
|
-
originalSize: data.readUInt32BE(12),
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
parseEncryptedFile(encryptedData) {
|
|
95
|
-
const headerLength = this.eciesService.computeEncryptedLengthFromDataLength(this.config.headerSize, 'single');
|
|
96
|
-
const encryptedHeader = encryptedData.subarray(0, headerLength);
|
|
97
|
-
const decryptedHeaderBytes = this.eciesService.decryptSimpleOrSingleWithHeader(false, this.userPrivateKey, encryptedHeader);
|
|
98
|
-
const header = this.deserializeHeader(decryptedHeaderBytes);
|
|
99
|
-
const chunks = [];
|
|
100
|
-
let offset = headerLength;
|
|
101
|
-
for (let i = 0; i < header.totalChunks; i++) {
|
|
102
|
-
const chunkLength = this.eciesService.computeEncryptedLengthFromDataLength(i === header.totalChunks - 1
|
|
103
|
-
? header.originalSize % header.chunkSize || header.chunkSize
|
|
104
|
-
: header.chunkSize, 'single');
|
|
105
|
-
chunks.push(encryptedData.subarray(offset, offset + chunkLength));
|
|
106
|
-
offset += chunkLength;
|
|
107
|
-
}
|
|
108
|
-
return { header, chunks };
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
exports.EciesFileService = EciesFileService;
|
|
112
|
-
//# sourceMappingURL=file.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-node-ecies-lib/src/services/ecies/file.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-node-ecies-lib/src/services/ecies/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
tslib_1.__exportStar(require("./crypto-core"), exports);
|
|
5
|
-
tslib_1.__exportStar(require("./file"), exports);
|
|
6
|
-
tslib_1.__exportStar(require("./multi-recipient"), exports);
|
|
7
|
-
tslib_1.__exportStar(require("./service"), exports);
|
|
8
|
-
tslib_1.__exportStar(require("./signature"), exports);
|
|
9
|
-
tslib_1.__exportStar(require("./single-recipient"), exports);
|
|
10
|
-
tslib_1.__exportStar(require("./utilities"), exports);
|
|
11
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-node-ecies-lib/src/services/ecies/index.ts"],"names":[],"mappings":";;;AAAA,wDAA8B;AAC9B,iDAAuB;AACvB,4DAAkC;AAClC,oDAA0B;AAC1B,sDAA4B;AAC5B,6DAAmC;AACnC,sDAA4B"}
|