@digitaldefiance/node-ecies-lib 4.4.9 → 4.4.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +6 -5
- package/src/builders/ecies-builder.d.ts +11 -0
- package/src/builders/ecies-builder.d.ts.map +1 -0
- package/src/builders/ecies-builder.js +26 -0
- package/src/builders/ecies-builder.js.map +1 -0
- package/src/builders/{index.ts → index.d.ts} +1 -0
- package/src/builders/index.d.ts.map +1 -0
- package/src/builders/index.js +6 -0
- package/src/builders/index.js.map +1 -0
- package/src/builders/member-builder.d.ts +47 -0
- package/src/builders/member-builder.d.ts.map +1 -0
- package/src/builders/member-builder.js +99 -0
- package/src/builders/member-builder.js.map +1 -0
- package/src/constants.d.ts +38 -0
- package/src/constants.d.ts.map +1 -0
- package/src/constants.js +183 -0
- package/src/constants.js.map +1 -0
- package/src/core/errors/crypto-error.d.ts +6 -0
- package/src/core/errors/crypto-error.d.ts.map +1 -0
- package/src/core/errors/crypto-error.js +15 -0
- package/src/core/errors/crypto-error.js.map +1 -0
- package/src/core/{index.ts → index.d.ts} +1 -0
- package/src/core/index.d.ts.map +1 -0
- package/src/core/index.js +6 -0
- package/src/core/index.js.map +1 -0
- package/src/core/types/result.d.ts +8 -0
- package/src/core/types/result.d.ts.map +1 -0
- package/src/core/types/result.js +3 -0
- package/src/core/types/result.js.map +1 -0
- package/src/enumerations/index.d.ts +2 -0
- package/src/enumerations/index.d.ts.map +1 -0
- package/src/enumerations/index.js +5 -0
- package/src/enumerations/index.js.map +1 -0
- package/src/enumerations/pbkdf2-profile.d.ts +9 -0
- package/src/enumerations/pbkdf2-profile.d.ts.map +1 -0
- package/src/enumerations/pbkdf2-profile.js +13 -0
- package/src/enumerations/pbkdf2-profile.js.map +1 -0
- package/src/i18n/ecies-i18n-factory.d.ts +28 -0
- package/src/i18n/ecies-i18n-factory.d.ts.map +1 -0
- package/src/i18n/ecies-i18n-factory.js +89 -0
- package/src/i18n/ecies-i18n-factory.js.map +1 -0
- package/src/i18n/{index.ts → index.d.ts} +1 -3
- package/src/i18n/index.d.ts.map +1 -0
- package/src/i18n/index.js +8 -0
- package/src/i18n/index.js.map +1 -0
- package/src/i18n/node-ecies-i18n-setup.d.ts +5 -0
- package/src/i18n/node-ecies-i18n-setup.d.ts.map +1 -0
- package/src/i18n/node-ecies-i18n-setup.js +46 -0
- package/src/i18n/node-ecies-i18n-setup.js.map +1 -0
- package/src/i18n/node-keys.d.ts +57 -0
- package/src/i18n/node-keys.d.ts.map +1 -0
- package/src/i18n/node-keys.js +67 -0
- package/src/i18n/node-keys.js.map +1 -0
- package/src/i18n/translations/de.d.ts +3 -0
- package/src/i18n/translations/de.d.ts.map +1 -0
- package/src/i18n/translations/de.js +57 -0
- package/src/i18n/translations/de.js.map +1 -0
- package/src/i18n/translations/en-GB.d.ts +3 -0
- package/src/i18n/translations/en-GB.d.ts.map +1 -0
- package/src/i18n/translations/en-GB.js +61 -0
- package/src/i18n/translations/en-GB.js.map +1 -0
- package/src/i18n/translations/en-US.d.ts +6 -0
- package/src/i18n/translations/en-US.d.ts.map +1 -0
- package/src/i18n/translations/en-US.js +65 -0
- package/src/i18n/translations/en-US.js.map +1 -0
- package/src/i18n/translations/es.d.ts +3 -0
- package/src/i18n/translations/es.d.ts.map +1 -0
- package/src/i18n/translations/es.js +57 -0
- package/src/i18n/translations/es.js.map +1 -0
- package/src/i18n/translations/fr.d.ts +3 -0
- package/src/i18n/translations/fr.d.ts.map +1 -0
- package/src/i18n/translations/fr.js +57 -0
- package/src/i18n/translations/fr.js.map +1 -0
- package/src/i18n/translations/{index.ts → index.d.ts} +1 -0
- package/src/i18n/translations/index.d.ts.map +1 -0
- package/src/i18n/translations/index.js +20 -0
- package/src/i18n/translations/index.js.map +1 -0
- package/src/i18n/translations/ja.d.ts +3 -0
- package/src/i18n/translations/ja.d.ts.map +1 -0
- package/src/i18n/translations/ja.js +57 -0
- package/src/i18n/translations/ja.js.map +1 -0
- package/src/i18n/translations/uk.d.ts +3 -0
- package/src/i18n/translations/uk.d.ts.map +1 -0
- package/src/i18n/translations/uk.js +57 -0
- package/src/i18n/translations/uk.js.map +1 -0
- package/src/i18n/translations/zh-cn.d.ts +3 -0
- package/src/i18n/translations/zh-cn.d.ts.map +1 -0
- package/src/i18n/translations/zh-cn.js +57 -0
- package/src/i18n/translations/zh-cn.js.map +1 -0
- package/src/{index.ts → index.d.ts} +1 -5
- package/src/index.d.ts.map +1 -0
- package/src/index.js +31 -0
- package/src/index.js.map +1 -0
- package/src/interfaces/authenticated-cipher.d.ts +12 -0
- package/src/interfaces/authenticated-cipher.d.ts.map +1 -0
- package/src/interfaces/authenticated-cipher.js +3 -0
- package/src/interfaces/authenticated-cipher.js.map +1 -0
- package/src/interfaces/authenticated-decipher.d.ts +11 -0
- package/src/interfaces/authenticated-decipher.d.ts.map +1 -0
- package/src/interfaces/authenticated-decipher.js +3 -0
- package/src/interfaces/authenticated-decipher.js.map +1 -0
- package/src/interfaces/backend-member-operational.d.ts +48 -0
- package/src/interfaces/backend-member-operational.d.ts.map +1 -0
- package/src/interfaces/backend-member-operational.js +3 -0
- package/src/interfaces/backend-member-operational.js.map +1 -0
- package/src/interfaces/checksum-config.d.ts +5 -0
- package/src/interfaces/checksum-config.d.ts.map +1 -0
- package/src/interfaces/checksum-config.js +3 -0
- package/src/interfaces/checksum-config.js.map +1 -0
- package/src/interfaces/checksum-consts.d.ts +11 -0
- package/src/interfaces/checksum-consts.d.ts.map +1 -0
- package/src/interfaces/checksum-consts.js +3 -0
- package/src/interfaces/checksum-consts.js.map +1 -0
- package/src/interfaces/constants.d.ts +52 -0
- package/src/interfaces/constants.d.ts.map +1 -0
- package/src/interfaces/constants.js +3 -0
- package/src/interfaces/constants.js.map +1 -0
- package/src/interfaces/ecies-consts.d.ts +88 -0
- package/src/interfaces/ecies-consts.d.ts.map +1 -0
- package/src/interfaces/ecies-consts.js +3 -0
- package/src/interfaces/ecies-consts.js.map +1 -0
- package/src/interfaces/encrypted-chunk.d.ts +12 -0
- package/src/interfaces/encrypted-chunk.d.ts.map +1 -0
- package/src/interfaces/encrypted-chunk.js +3 -0
- package/src/interfaces/encrypted-chunk.js.map +1 -0
- package/src/interfaces/encryption-consts.d.ts +11 -0
- package/src/interfaces/encryption-consts.d.ts.map +1 -0
- package/src/interfaces/encryption-consts.js +3 -0
- package/src/interfaces/encryption-consts.js.map +1 -0
- package/src/interfaces/{index.ts → index.d.ts} +1 -0
- package/src/interfaces/index.d.ts.map +1 -0
- package/src/interfaces/index.js +30 -0
- package/src/interfaces/index.js.map +1 -0
- package/src/interfaces/keypair-buffer-with-un-encrypted-private-key.d.ts +6 -0
- package/src/interfaces/keypair-buffer-with-un-encrypted-private-key.d.ts.map +1 -0
- package/src/interfaces/keypair-buffer-with-un-encrypted-private-key.js +3 -0
- package/src/interfaces/keypair-buffer-with-un-encrypted-private-key.js.map +1 -0
- package/src/interfaces/keyring-consts.d.ts +6 -0
- package/src/interfaces/keyring-consts.d.ts.map +1 -0
- package/src/interfaces/keyring-consts.js +3 -0
- package/src/interfaces/keyring-consts.js.map +1 -0
- package/src/interfaces/{member-with-mnemonic.ts → member-with-mnemonic.d.ts} +3 -3
- package/src/interfaces/member-with-mnemonic.d.ts.map +1 -0
- package/src/interfaces/member-with-mnemonic.js +3 -0
- package/src/interfaces/member-with-mnemonic.js.map +1 -0
- package/src/interfaces/member.d.ts +47 -0
- package/src/interfaces/member.d.ts.map +1 -0
- package/src/interfaces/member.js +3 -0
- package/src/interfaces/member.js.map +1 -0
- package/src/interfaces/{multi-encrypted-message.ts → multi-encrypted-message.d.ts} +5 -5
- package/src/interfaces/multi-encrypted-message.d.ts.map +1 -0
- package/src/interfaces/multi-encrypted-message.js +3 -0
- package/src/interfaces/multi-encrypted-message.js.map +1 -0
- package/src/interfaces/multi-encrypted-parsed-header.d.ts +27 -0
- package/src/interfaces/multi-encrypted-parsed-header.d.ts.map +1 -0
- package/src/interfaces/multi-encrypted-parsed-header.js +3 -0
- package/src/interfaces/multi-encrypted-parsed-header.js.map +1 -0
- package/src/interfaces/multi-recipient-chunk.d.ts +26 -0
- package/src/interfaces/multi-recipient-chunk.d.ts.map +1 -0
- package/src/interfaces/multi-recipient-chunk.js +13 -0
- package/src/interfaces/multi-recipient-chunk.js.map +1 -0
- package/src/interfaces/{pbkdf-profiles.ts → pbkdf-profiles.d.ts} +2 -2
- package/src/interfaces/pbkdf-profiles.d.ts.map +1 -0
- package/src/interfaces/pbkdf-profiles.js +3 -0
- package/src/interfaces/pbkdf-profiles.js.map +1 -0
- package/src/interfaces/pbkdf2-result.d.ts +6 -0
- package/src/interfaces/pbkdf2-result.d.ts.map +1 -0
- package/src/interfaces/pbkdf2-result.js +3 -0
- package/src/interfaces/pbkdf2-result.js.map +1 -0
- package/src/interfaces/signing-key-private-key-info.d.ts +11 -0
- package/src/interfaces/signing-key-private-key-info.d.ts.map +1 -0
- package/src/interfaces/signing-key-private-key-info.js +3 -0
- package/src/interfaces/signing-key-private-key-info.js.map +1 -0
- package/src/interfaces/{simple-keypair-buffer.ts → simple-keypair-buffer.d.ts} +3 -3
- package/src/interfaces/simple-keypair-buffer.d.ts.map +1 -0
- package/src/interfaces/simple-keypair-buffer.js +3 -0
- package/src/interfaces/simple-keypair-buffer.js.map +1 -0
- package/src/interfaces/{simple-keypair.ts → simple-keypair.d.ts} +3 -3
- package/src/interfaces/simple-keypair.d.ts.map +1 -0
- package/src/interfaces/simple-keypair.js +3 -0
- package/src/interfaces/simple-keypair.js.map +1 -0
- package/src/interfaces/simple-public-key-only-buffer.d.ts +4 -0
- package/src/interfaces/simple-public-key-only-buffer.d.ts.map +1 -0
- package/src/interfaces/simple-public-key-only-buffer.js +3 -0
- package/src/interfaces/simple-public-key-only-buffer.js.map +1 -0
- package/src/interfaces/simple-public-key-only.d.ts +4 -0
- package/src/interfaces/simple-public-key-only.d.ts.map +1 -0
- package/src/interfaces/simple-public-key-only.js +3 -0
- package/src/interfaces/simple-public-key-only.js.map +1 -0
- package/src/interfaces/single-encrypted-parsed-header.d.ts +35 -0
- package/src/interfaces/single-encrypted-parsed-header.d.ts.map +1 -0
- package/src/interfaces/single-encrypted-parsed-header.js +3 -0
- package/src/interfaces/single-encrypted-parsed-header.js.map +1 -0
- package/src/interfaces/stream-config.d.ts +6 -0
- package/src/interfaces/stream-config.d.ts.map +1 -0
- package/src/interfaces/stream-config.js +8 -0
- package/src/interfaces/stream-config.js.map +1 -0
- package/src/interfaces/stream-progress.d.ts +8 -0
- package/src/interfaces/stream-progress.d.ts.map +1 -0
- package/src/interfaces/stream-progress.js +3 -0
- package/src/interfaces/stream-progress.js.map +1 -0
- package/src/interfaces/{wallet-seed.ts → wallet-seed.d.ts} +3 -3
- package/src/interfaces/wallet-seed.d.ts.map +1 -0
- package/src/interfaces/wallet-seed.js +3 -0
- package/src/interfaces/wallet-seed.js.map +1 -0
- package/src/interfaces/wrapped-key-consts.d.ts +7 -0
- package/src/interfaces/wrapped-key-consts.d.ts.map +1 -0
- package/src/interfaces/wrapped-key-consts.js +3 -0
- package/src/interfaces/wrapped-key-consts.js.map +1 -0
- package/src/lib/crypto-container.d.ts +13 -0
- package/src/lib/crypto-container.d.ts.map +1 -0
- package/src/lib/crypto-container.js +29 -0
- package/src/lib/crypto-container.js.map +1 -0
- package/src/lib/{index.ts → index.d.ts} +1 -0
- package/src/lib/index.d.ts.map +1 -0
- package/src/lib/index.js +7 -0
- package/src/lib/index.js.map +1 -0
- package/src/lib/invariant-validator.d.ts +62 -0
- package/src/lib/invariant-validator.d.ts.map +1 -0
- package/src/lib/invariant-validator.js +108 -0
- package/src/lib/invariant-validator.js.map +1 -0
- package/src/lib/invariants/{index.ts → index.d.ts} +2 -2
- package/src/lib/invariants/index.d.ts.map +1 -0
- package/src/lib/invariants/index.js +12 -0
- package/src/lib/invariants/index.js.map +1 -0
- package/src/lib/invariants/recipient-id-consistency.d.ts +22 -0
- package/src/lib/invariants/recipient-id-consistency.d.ts.map +1 -0
- package/src/lib/invariants/recipient-id-consistency.js +62 -0
- package/src/lib/invariants/recipient-id-consistency.js.map +1 -0
- package/src/member.d.ts +81 -0
- package/src/member.d.ts.map +1 -0
- package/src/member.js +285 -0
- package/src/member.js.map +1 -0
- package/src/services/aes-gcm.d.ts +66 -0
- package/src/services/aes-gcm.d.ts.map +1 -0
- package/src/services/aes-gcm.js +158 -0
- package/src/services/aes-gcm.js.map +1 -0
- package/src/services/chunk-processor.d.ts +15 -0
- package/src/services/chunk-processor.d.ts.map +1 -0
- package/src/services/chunk-processor.js +36 -0
- package/src/services/chunk-processor.js.map +1 -0
- package/src/services/ecies/crypto-core.d.ts +104 -0
- package/src/services/ecies/crypto-core.d.ts.map +1 -0
- package/src/services/ecies/crypto-core.js +237 -0
- package/src/services/ecies/crypto-core.js.map +1 -0
- package/src/services/ecies/file.d.ts +30 -0
- package/src/services/ecies/file.d.ts.map +1 -0
- package/src/services/ecies/file.js +112 -0
- package/src/services/ecies/file.js.map +1 -0
- package/src/services/ecies/{index.ts → index.d.ts} +1 -0
- package/src/services/ecies/index.d.ts.map +1 -0
- package/src/services/ecies/index.js +11 -0
- package/src/services/ecies/index.js.map +1 -0
- package/src/services/ecies/multi-recipient.d.ts +84 -0
- package/src/services/ecies/multi-recipient.d.ts.map +1 -0
- package/src/services/ecies/multi-recipient.js +496 -0
- package/src/services/ecies/multi-recipient.js.map +1 -0
- package/src/services/ecies/service.d.ts +69 -0
- package/src/services/ecies/service.d.ts.map +1 -0
- package/src/services/ecies/service.js +144 -0
- package/src/services/ecies/service.js.map +1 -0
- package/src/services/ecies/signature.d.ts +38 -0
- package/src/services/ecies/signature.d.ts.map +1 -0
- package/src/services/ecies/signature.js +69 -0
- package/src/services/ecies/signature.js.map +1 -0
- package/src/services/ecies/single-recipient.d.ts +83 -0
- package/src/services/ecies/single-recipient.d.ts.map +1 -0
- package/src/services/ecies/single-recipient.js +447 -0
- package/src/services/ecies/single-recipient.js.map +1 -0
- package/src/services/ecies/utilities.d.ts +33 -0
- package/src/services/ecies/utilities.d.ts.map +1 -0
- package/src/services/ecies/utilities.js +91 -0
- package/src/services/ecies/utilities.js.map +1 -0
- package/src/services/encryption-stream.d.ts +33 -0
- package/src/services/encryption-stream.d.ts.map +1 -0
- package/src/services/encryption-stream.js +207 -0
- package/src/services/encryption-stream.js.map +1 -0
- package/src/services/{index.ts → index.d.ts} +1 -0
- package/src/services/index.d.ts.map +1 -0
- package/src/services/index.js +11 -0
- package/src/services/index.js.map +1 -0
- package/src/services/multi-recipient-processor.d.ts +72 -0
- package/src/services/multi-recipient-processor.d.ts.map +1 -0
- package/src/services/multi-recipient-processor.js +322 -0
- package/src/services/multi-recipient-processor.js.map +1 -0
- package/src/services/pbkdf2.d.ts +105 -0
- package/src/services/pbkdf2.d.ts.map +1 -0
- package/src/services/pbkdf2.js +189 -0
- package/src/services/pbkdf2.js.map +1 -0
- package/src/services/progress-tracker.d.ts +9 -0
- package/src/services/progress-tracker.d.ts.map +1 -0
- package/src/services/progress-tracker.js +41 -0
- package/src/services/progress-tracker.js.map +1 -0
- package/src/test-mocks/index.d.ts +2 -0
- package/src/test-mocks/index.d.ts.map +1 -0
- package/src/test-mocks/index.js +5 -0
- package/src/test-mocks/index.js.map +1 -0
- package/src/test-mocks/mock-backend-member.d.ts +71 -0
- package/src/test-mocks/mock-backend-member.d.ts.map +1 -0
- package/src/test-mocks/mock-backend-member.js +133 -0
- package/src/test-mocks/mock-backend-member.js.map +1 -0
- package/src/testing.d.ts +2 -0
- package/src/testing.d.ts.map +1 -0
- package/src/testing.js +6 -0
- package/src/testing.js.map +1 -0
- package/src/types/id-guards.d.ts +39 -0
- package/src/types/id-guards.d.ts.map +1 -0
- package/src/types/id-guards.js +91 -0
- package/src/types/id-guards.js.map +1 -0
- package/src/types/index.d.ts +2 -0
- package/src/types/index.d.ts.map +1 -0
- package/src/types/index.js +5 -0
- package/src/types/index.js.map +1 -0
- package/src/{types.ts → types.d.ts} +9 -28
- package/src/types.d.ts.map +1 -0
- package/src/types.js +6 -0
- package/src/types.js.map +1 -0
- package/src/utils.d.ts +11 -0
- package/src/utils.d.ts.map +1 -0
- package/src/utils.js +82 -0
- package/src/utils.js.map +1 -0
- package/LICENSE +0 -21
- package/src/builders/ecies-builder.ts +0 -27
- package/src/builders/member-builder.ts +0 -158
- package/src/constants.ts +0 -251
- package/src/core/errors/crypto-error.ts +0 -10
- package/src/core/types/result.ts +0 -3
- package/src/enumerations/index.ts +0 -2
- package/src/enumerations/pbkdf2-profile.ts +0 -8
- package/src/i18n/ecies-i18n-factory.ts +0 -111
- package/src/i18n/node-ecies-i18n-setup.ts +0 -56
- package/src/i18n/node-keys.ts +0 -69
- package/src/i18n/translations/de.ts +0 -54
- package/src/i18n/translations/en-GB.ts +0 -83
- package/src/i18n/translations/en-US.ts +0 -88
- package/src/i18n/translations/es.ts +0 -54
- package/src/i18n/translations/fr.ts +0 -54
- package/src/i18n/translations/ja.ts +0 -54
- package/src/i18n/translations/uk.ts +0 -54
- package/src/i18n/translations/zh-cn.ts +0 -54
- package/src/interfaces/authenticated-cipher.ts +0 -10
- package/src/interfaces/authenticated-decipher.ts +0 -9
- package/src/interfaces/backend-member-operational.ts +0 -75
- package/src/interfaces/checksum-config.ts +0 -4
- package/src/interfaces/checksum-consts.ts +0 -13
- package/src/interfaces/constants.ts +0 -54
- package/src/interfaces/ecies-consts.ts +0 -99
- package/src/interfaces/encrypted-chunk.ts +0 -12
- package/src/interfaces/encryption-consts.ts +0 -10
- package/src/interfaces/keypair-buffer-with-un-encrypted-private-key.ts +0 -7
- package/src/interfaces/keyring-consts.ts +0 -5
- package/src/interfaces/member.ts +0 -76
- package/src/interfaces/multi-encrypted-parsed-header.ts +0 -28
- package/src/interfaces/multi-recipient-chunk.ts +0 -35
- package/src/interfaces/pbkdf2-result.ts +0 -5
- package/src/interfaces/signing-key-private-key-info.ts +0 -12
- package/src/interfaces/simple-public-key-only-buffer.ts +0 -3
- package/src/interfaces/simple-public-key-only.ts +0 -3
- package/src/interfaces/single-encrypted-parsed-header.ts +0 -35
- package/src/interfaces/stream-config.ts +0 -9
- package/src/interfaces/stream-progress.ts +0 -7
- package/src/interfaces/wrapped-key-consts.ts +0 -6
- package/src/lib/crypto-container.ts +0 -32
- package/src/lib/invariant-validator.ts +0 -124
- package/src/lib/invariants/recipient-id-consistency.ts +0 -77
- package/src/member.ts +0 -511
- package/src/services/aes-gcm.ts +0 -260
- package/src/services/chunk-processor.ts +0 -47
- package/src/services/ecies/crypto-core.ts +0 -319
- package/src/services/ecies/file.ts +0 -171
- package/src/services/ecies/multi-recipient.ts +0 -782
- package/src/services/ecies/service.ts +0 -316
- package/src/services/ecies/signature.ts +0 -91
- package/src/services/ecies/single-recipient.ts +0 -743
- package/src/services/ecies/utilities.ts +0 -128
- package/src/services/encryption-stream.ts +0 -432
- package/src/services/multi-recipient-processor.ts +0 -505
- package/src/services/pbkdf2.ts +0 -304
- package/src/services/progress-tracker.ts +0 -43
- package/src/test-mocks/index.ts +0 -1
- package/src/test-mocks/mock-backend-member.ts +0 -195
- package/src/testing.ts +0 -2
- package/src/types/id-guards.ts +0 -91
- package/src/types/index.ts +0 -1
- package/src/utils.ts +0 -124
package/src/member.ts
DELETED
|
@@ -1,511 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
EmailString,
|
|
3
|
-
IMemberStorageData,
|
|
4
|
-
MemberErrorType,
|
|
5
|
-
MemberType,
|
|
6
|
-
SecureBuffer,
|
|
7
|
-
SecureString,
|
|
8
|
-
} from '@digitaldefiance/ecies-lib';
|
|
9
|
-
import { Wallet } from '@ethereumjs/wallet';
|
|
10
|
-
import { secp256k1 } from 'ethereum-cryptography/secp256k1';
|
|
11
|
-
import {
|
|
12
|
-
getNodeEciesTranslation,
|
|
13
|
-
NodeEciesStringKey,
|
|
14
|
-
} from './i18n/ecies-i18n-factory';
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Custom error classes that work with the plugin i18n system
|
|
18
|
-
*/
|
|
19
|
-
export class NodeMemberError extends Error {
|
|
20
|
-
constructor(message: string, public readonly type: MemberErrorType) {
|
|
21
|
-
super(message);
|
|
22
|
-
this.name = 'NodeMemberError';
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
import { IEncryptedChunk } from './interfaces/encrypted-chunk';
|
|
27
|
-
import { IMember } from './interfaces/member';
|
|
28
|
-
import { IStreamProgress } from './interfaces/stream-progress';
|
|
29
|
-
import { ECIESService } from './services/ecies/service';
|
|
30
|
-
import { EncryptionStream } from './services/encryption-stream';
|
|
31
|
-
// Removed: import { ServiceProvider } from './services/service.provider';
|
|
32
|
-
import { Types } from '@digitaldefiance/mongoose-types';
|
|
33
|
-
import { Constants } from './constants';
|
|
34
|
-
import { IBackendMemberOperational } from './interfaces/backend-member-operational';
|
|
35
|
-
import { SignatureBuffer, toBuffer, toUint8Array } from './types';
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* A member of an ECIES interchange
|
|
39
|
-
*/
|
|
40
|
-
export class Member<
|
|
41
|
-
TID extends string | Types.ObjectId | Buffer | Uint8Array = Buffer
|
|
42
|
-
> implements IMember<TID>, IBackendMemberOperational<TID>
|
|
43
|
-
{
|
|
44
|
-
private readonly _eciesService: ECIESService;
|
|
45
|
-
private readonly _id: TID;
|
|
46
|
-
private readonly _type: MemberType;
|
|
47
|
-
private readonly _name: string;
|
|
48
|
-
private readonly _email: EmailString;
|
|
49
|
-
private readonly _publicKey: Buffer;
|
|
50
|
-
private readonly _creatorId: TID;
|
|
51
|
-
private readonly _dateCreated: Date;
|
|
52
|
-
private readonly _dateUpdated: Date;
|
|
53
|
-
private _privateKey?: SecureBuffer;
|
|
54
|
-
private _wallet?: Wallet;
|
|
55
|
-
|
|
56
|
-
constructor(
|
|
57
|
-
// Add injected services as parameters
|
|
58
|
-
eciesService: ECIESService,
|
|
59
|
-
// Original parameters
|
|
60
|
-
type: MemberType,
|
|
61
|
-
name: string,
|
|
62
|
-
email: EmailString,
|
|
63
|
-
publicKey: Buffer,
|
|
64
|
-
privateKey?: SecureBuffer,
|
|
65
|
-
wallet?: Wallet,
|
|
66
|
-
id?: TID,
|
|
67
|
-
dateCreated?: Date,
|
|
68
|
-
dateUpdated?: Date,
|
|
69
|
-
creatorId?: TID
|
|
70
|
-
) {
|
|
71
|
-
// Assign injected services
|
|
72
|
-
this._eciesService = eciesService;
|
|
73
|
-
// Assign original parameters
|
|
74
|
-
this._type = type;
|
|
75
|
-
this._id = id ?? (toBuffer(Constants.idProvider.generate()) as TID);
|
|
76
|
-
this._name = name;
|
|
77
|
-
if (!this._name || this._name.length == 0) {
|
|
78
|
-
throw new NodeMemberError(
|
|
79
|
-
getNodeEciesTranslation(
|
|
80
|
-
NodeEciesStringKey.Error_Member_MissingMemberName
|
|
81
|
-
),
|
|
82
|
-
MemberErrorType.MissingMemberName
|
|
83
|
-
);
|
|
84
|
-
}
|
|
85
|
-
if (this._name.trim() != this._name) {
|
|
86
|
-
throw new NodeMemberError(
|
|
87
|
-
getNodeEciesTranslation(
|
|
88
|
-
NodeEciesStringKey.Error_Member_InvalidMemberNameWhitespace
|
|
89
|
-
),
|
|
90
|
-
MemberErrorType.InvalidMemberNameWhitespace
|
|
91
|
-
);
|
|
92
|
-
}
|
|
93
|
-
this._email = email;
|
|
94
|
-
this._publicKey = publicKey;
|
|
95
|
-
this._privateKey = privateKey;
|
|
96
|
-
this._wallet = wallet;
|
|
97
|
-
|
|
98
|
-
// don't create a new date object with nearly identical values to the existing one
|
|
99
|
-
let _now: null | Date = null;
|
|
100
|
-
const now = function () {
|
|
101
|
-
if (!_now) {
|
|
102
|
-
_now = new Date();
|
|
103
|
-
}
|
|
104
|
-
return _now;
|
|
105
|
-
};
|
|
106
|
-
this._dateCreated = dateCreated ?? now();
|
|
107
|
-
this._dateUpdated = dateUpdated ?? now();
|
|
108
|
-
this._creatorId = creatorId ?? this._id;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
// Required getters
|
|
112
|
-
public get id(): TID {
|
|
113
|
-
return this._id;
|
|
114
|
-
}
|
|
115
|
-
public get type(): MemberType {
|
|
116
|
-
return this._type;
|
|
117
|
-
}
|
|
118
|
-
public get name(): string {
|
|
119
|
-
return this._name;
|
|
120
|
-
}
|
|
121
|
-
public get email(): EmailString {
|
|
122
|
-
return this._email;
|
|
123
|
-
}
|
|
124
|
-
public get publicKey(): Buffer {
|
|
125
|
-
return this._publicKey;
|
|
126
|
-
}
|
|
127
|
-
public get creatorId(): TID {
|
|
128
|
-
return this._creatorId;
|
|
129
|
-
}
|
|
130
|
-
public get dateCreated(): Date {
|
|
131
|
-
return this._dateCreated;
|
|
132
|
-
}
|
|
133
|
-
public get dateUpdated(): Date {
|
|
134
|
-
return this._dateUpdated;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
// Optional private data getters
|
|
138
|
-
public get privateKey(): SecureBuffer | undefined {
|
|
139
|
-
return this._privateKey;
|
|
140
|
-
}
|
|
141
|
-
public get wallet(): Wallet {
|
|
142
|
-
if (!this._wallet) {
|
|
143
|
-
throw new NodeMemberError(
|
|
144
|
-
getNodeEciesTranslation(NodeEciesStringKey.Error_Member_NoWallet),
|
|
145
|
-
MemberErrorType.NoWallet
|
|
146
|
-
);
|
|
147
|
-
}
|
|
148
|
-
return this._wallet;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
// State getters
|
|
152
|
-
public get hasPrivateKey(): boolean {
|
|
153
|
-
return this._privateKey !== undefined;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
public unloadPrivateKey(): void {
|
|
157
|
-
// Do not dispose here; tests expect the same SecureBuffer instance to remain usable
|
|
158
|
-
// when reloaded into another member in the same process.
|
|
159
|
-
this._privateKey = undefined;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
public unloadWallet(): void {
|
|
163
|
-
this._wallet = undefined;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
public unloadWalletAndPrivateKey(): void {
|
|
167
|
-
this.unloadWallet();
|
|
168
|
-
this.unloadPrivateKey();
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
public loadWallet(mnemonic: SecureString): void {
|
|
172
|
-
if (this._wallet) {
|
|
173
|
-
throw new NodeMemberError(
|
|
174
|
-
getNodeEciesTranslation(
|
|
175
|
-
NodeEciesStringKey.Error_Member_WalletAlreadyLoaded
|
|
176
|
-
),
|
|
177
|
-
MemberErrorType.WalletAlreadyLoaded
|
|
178
|
-
);
|
|
179
|
-
}
|
|
180
|
-
const { wallet } = this._eciesService.walletAndSeedFromMnemonic(mnemonic);
|
|
181
|
-
const privateKey = wallet.getPrivateKey();
|
|
182
|
-
const publicKey = secp256k1.getPublicKey(privateKey, true);
|
|
183
|
-
const publicKeyWithPrefix = Buffer.from(publicKey);
|
|
184
|
-
|
|
185
|
-
if (
|
|
186
|
-
publicKeyWithPrefix.toString('hex') !== this._publicKey.toString('hex')
|
|
187
|
-
) {
|
|
188
|
-
throw new NodeMemberError(
|
|
189
|
-
getNodeEciesTranslation(
|
|
190
|
-
NodeEciesStringKey.Error_Member_InvalidMnemonic
|
|
191
|
-
),
|
|
192
|
-
MemberErrorType.InvalidMnemonic
|
|
193
|
-
);
|
|
194
|
-
}
|
|
195
|
-
this._wallet = wallet;
|
|
196
|
-
this._privateKey = new SecureBuffer(privateKey);
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
/**
|
|
200
|
-
* Loads the private key and optionally the voting private key.
|
|
201
|
-
*
|
|
202
|
-
* @param privateKey The private key to load.
|
|
203
|
-
* @param votingPrivateKey The voting private key to load.
|
|
204
|
-
*/
|
|
205
|
-
public loadPrivateKey(privateKey: SecureBuffer): void {
|
|
206
|
-
this._privateKey = privateKey;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
public sign(data: Buffer): SignatureBuffer {
|
|
210
|
-
if (!this._privateKey) {
|
|
211
|
-
throw new NodeMemberError(
|
|
212
|
-
getNodeEciesTranslation(
|
|
213
|
-
NodeEciesStringKey.Error_Member_MissingPrivateKey
|
|
214
|
-
),
|
|
215
|
-
MemberErrorType.MissingPrivateKey
|
|
216
|
-
);
|
|
217
|
-
}
|
|
218
|
-
return this._eciesService.signMessage(
|
|
219
|
-
Buffer.from(this._privateKey.value),
|
|
220
|
-
data
|
|
221
|
-
);
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
public signData(data: Buffer): SignatureBuffer {
|
|
225
|
-
if (!this._privateKey) {
|
|
226
|
-
throw new NodeMemberError(
|
|
227
|
-
getNodeEciesTranslation(
|
|
228
|
-
NodeEciesStringKey.Error_Member_MissingPrivateKey
|
|
229
|
-
),
|
|
230
|
-
MemberErrorType.MissingPrivateKey
|
|
231
|
-
);
|
|
232
|
-
}
|
|
233
|
-
return this._eciesService.signMessage(
|
|
234
|
-
Buffer.from(this._privateKey.value),
|
|
235
|
-
data
|
|
236
|
-
);
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
public verify(signature: SignatureBuffer, data: Buffer): boolean {
|
|
240
|
-
return this._eciesService.verifyMessage(this._publicKey, data, signature);
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
public verifySignature(
|
|
244
|
-
data: Buffer,
|
|
245
|
-
signature: Buffer,
|
|
246
|
-
publicKey: Buffer
|
|
247
|
-
): boolean {
|
|
248
|
-
return this._eciesService.verifyMessage(
|
|
249
|
-
publicKey,
|
|
250
|
-
data,
|
|
251
|
-
signature as SignatureBuffer
|
|
252
|
-
);
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
private static readonly MAX_ENCRYPTION_SIZE = 1024 * 1024 * 10; // 10MB limit
|
|
256
|
-
private static readonly VALID_STRING_REGEX = /^[\x20-\x7E\n\r\t]*$/; // Printable ASCII + common whitespace
|
|
257
|
-
|
|
258
|
-
public encryptData(
|
|
259
|
-
data: string | Buffer,
|
|
260
|
-
recipientPublicKey?: Buffer
|
|
261
|
-
): Buffer {
|
|
262
|
-
// Validate input
|
|
263
|
-
if (!data) {
|
|
264
|
-
throw new NodeMemberError(
|
|
265
|
-
getNodeEciesTranslation(
|
|
266
|
-
NodeEciesStringKey.Error_Member_MissingEncryptionData
|
|
267
|
-
),
|
|
268
|
-
MemberErrorType.MissingEncryptionData
|
|
269
|
-
);
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
// Check size limit
|
|
273
|
-
const dataSize = Buffer.isBuffer(data)
|
|
274
|
-
? data.length
|
|
275
|
-
: Buffer.byteLength(data);
|
|
276
|
-
if (dataSize > Member.MAX_ENCRYPTION_SIZE) {
|
|
277
|
-
throw new NodeMemberError(
|
|
278
|
-
getNodeEciesTranslation(
|
|
279
|
-
NodeEciesStringKey.Error_Member_EncryptionDataTooLarge
|
|
280
|
-
),
|
|
281
|
-
MemberErrorType.EncryptionDataTooLarge
|
|
282
|
-
);
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
// Create buffer from data
|
|
286
|
-
const bufferData = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
287
|
-
|
|
288
|
-
// Use recipient public key or self public key
|
|
289
|
-
const targetPublicKey = recipientPublicKey || this._publicKey;
|
|
290
|
-
|
|
291
|
-
return this._eciesService.encryptSimpleOrSingle(
|
|
292
|
-
false,
|
|
293
|
-
targetPublicKey,
|
|
294
|
-
bufferData
|
|
295
|
-
);
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
public decryptData(encryptedData: Buffer): Buffer {
|
|
299
|
-
if (!this._privateKey) {
|
|
300
|
-
throw new NodeMemberError(
|
|
301
|
-
getNodeEciesTranslation(
|
|
302
|
-
NodeEciesStringKey.Error_Member_MissingPrivateKey
|
|
303
|
-
),
|
|
304
|
-
MemberErrorType.MissingPrivateKey
|
|
305
|
-
);
|
|
306
|
-
}
|
|
307
|
-
// decryptSingleWithHeader now returns the Buffer directly
|
|
308
|
-
return this._eciesService.decryptSimpleOrSingleWithHeader(
|
|
309
|
-
false,
|
|
310
|
-
Buffer.from(this._privateKey.value),
|
|
311
|
-
encryptedData
|
|
312
|
-
);
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
public toJson(): string {
|
|
316
|
-
const storage: IMemberStorageData = {
|
|
317
|
-
id: Constants.idProvider.serialize(
|
|
318
|
-
toUint8Array(this._id as Buffer | Uint8Array | string)
|
|
319
|
-
),
|
|
320
|
-
type: this._type,
|
|
321
|
-
name: this._name,
|
|
322
|
-
email: this._email.toString(),
|
|
323
|
-
publicKey: this._publicKey.toString('base64'),
|
|
324
|
-
creatorId: Constants.idProvider.serialize(
|
|
325
|
-
toUint8Array(this._creatorId as Buffer | Uint8Array | string)
|
|
326
|
-
),
|
|
327
|
-
dateCreated: this._dateCreated.toISOString(),
|
|
328
|
-
dateUpdated: this._dateUpdated.toISOString(),
|
|
329
|
-
};
|
|
330
|
-
return JSON.stringify(storage);
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
public dispose(): void {
|
|
334
|
-
// Ensure secret material is zeroized when disposing
|
|
335
|
-
try {
|
|
336
|
-
this._privateKey?.dispose();
|
|
337
|
-
} finally {
|
|
338
|
-
this.unloadWalletAndPrivateKey();
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
public async *encryptDataStream(
|
|
343
|
-
source: AsyncIterable<Buffer>,
|
|
344
|
-
options?: {
|
|
345
|
-
recipientPublicKey?: Buffer;
|
|
346
|
-
onProgress?: (progress: IStreamProgress) => void;
|
|
347
|
-
signal?: AbortSignal;
|
|
348
|
-
}
|
|
349
|
-
): AsyncGenerator<IEncryptedChunk, void, unknown> {
|
|
350
|
-
const targetPublicKey = options?.recipientPublicKey || this._publicKey;
|
|
351
|
-
const stream = new EncryptionStream(this._eciesService);
|
|
352
|
-
|
|
353
|
-
for await (const chunk of stream.encryptStream(source, targetPublicKey, {
|
|
354
|
-
onProgress: options?.onProgress,
|
|
355
|
-
signal: options?.signal,
|
|
356
|
-
})) {
|
|
357
|
-
yield chunk;
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
public async *decryptDataStream(
|
|
362
|
-
source: AsyncIterable<Buffer>,
|
|
363
|
-
options?: {
|
|
364
|
-
onProgress?: (progress: IStreamProgress) => void;
|
|
365
|
-
signal?: AbortSignal;
|
|
366
|
-
}
|
|
367
|
-
): AsyncGenerator<Buffer, void, unknown> {
|
|
368
|
-
if (!this._privateKey) {
|
|
369
|
-
throw new NodeMemberError(
|
|
370
|
-
getNodeEciesTranslation(
|
|
371
|
-
NodeEciesStringKey.Error_Member_MissingPrivateKey
|
|
372
|
-
),
|
|
373
|
-
MemberErrorType.MissingPrivateKey
|
|
374
|
-
);
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
const stream = new EncryptionStream(this._eciesService);
|
|
378
|
-
|
|
379
|
-
for await (const chunk of stream.decryptStream(
|
|
380
|
-
source,
|
|
381
|
-
Buffer.from(this._privateKey.value),
|
|
382
|
-
{
|
|
383
|
-
onProgress: options?.onProgress,
|
|
384
|
-
signal: options?.signal,
|
|
385
|
-
}
|
|
386
|
-
)) {
|
|
387
|
-
yield chunk;
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
public static fromJson(
|
|
392
|
-
json: string,
|
|
393
|
-
// Add injected services as parameters
|
|
394
|
-
eciesService: ECIESService
|
|
395
|
-
): Member {
|
|
396
|
-
const storage: IMemberStorageData = JSON.parse(json);
|
|
397
|
-
const email = new EmailString(storage.email);
|
|
398
|
-
|
|
399
|
-
// Pass injected services to constructor
|
|
400
|
-
const dateCreated = new Date(storage.dateCreated);
|
|
401
|
-
return new Member(
|
|
402
|
-
eciesService,
|
|
403
|
-
storage.type,
|
|
404
|
-
storage.name,
|
|
405
|
-
email,
|
|
406
|
-
Buffer.from(storage.publicKey, 'base64'),
|
|
407
|
-
undefined,
|
|
408
|
-
undefined,
|
|
409
|
-
Buffer.from(Constants.idProvider.deserialize(storage.id)),
|
|
410
|
-
dateCreated,
|
|
411
|
-
new Date(storage.dateUpdated),
|
|
412
|
-
Buffer.from(Constants.idProvider.deserialize(storage.creatorId))
|
|
413
|
-
);
|
|
414
|
-
}
|
|
415
|
-
|
|
416
|
-
public static fromMnemonic(
|
|
417
|
-
mnemonic: SecureString,
|
|
418
|
-
eciesService: ECIESService,
|
|
419
|
-
memberType = MemberType.User,
|
|
420
|
-
name = 'Test User',
|
|
421
|
-
email = new EmailString('test@example.com')
|
|
422
|
-
): Member {
|
|
423
|
-
const { wallet } = eciesService.walletAndSeedFromMnemonic(mnemonic);
|
|
424
|
-
const privateKey = wallet.getPrivateKey();
|
|
425
|
-
const publicKey = secp256k1.getPublicKey(privateKey, true);
|
|
426
|
-
const publicKeyWithPrefix = Buffer.from(publicKey);
|
|
427
|
-
|
|
428
|
-
return new Member(
|
|
429
|
-
eciesService,
|
|
430
|
-
memberType,
|
|
431
|
-
name,
|
|
432
|
-
email,
|
|
433
|
-
publicKeyWithPrefix,
|
|
434
|
-
new SecureBuffer(privateKey),
|
|
435
|
-
wallet
|
|
436
|
-
);
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
public static newMember(
|
|
440
|
-
// Add injected services as parameters
|
|
441
|
-
eciesService: ECIESService,
|
|
442
|
-
// Original parameters
|
|
443
|
-
type: MemberType,
|
|
444
|
-
name: string,
|
|
445
|
-
email: EmailString,
|
|
446
|
-
forceMnemonic?: SecureString,
|
|
447
|
-
createdBy?: Buffer
|
|
448
|
-
): { member: Member; mnemonic: SecureString } {
|
|
449
|
-
// Validate inputs first
|
|
450
|
-
if (!name || name.length == 0) {
|
|
451
|
-
throw new NodeMemberError(
|
|
452
|
-
getNodeEciesTranslation(
|
|
453
|
-
NodeEciesStringKey.Error_Member_MissingMemberName
|
|
454
|
-
),
|
|
455
|
-
MemberErrorType.MissingMemberName
|
|
456
|
-
);
|
|
457
|
-
}
|
|
458
|
-
if (name.trim() != name) {
|
|
459
|
-
throw new NodeMemberError(
|
|
460
|
-
getNodeEciesTranslation(
|
|
461
|
-
NodeEciesStringKey.Error_Member_InvalidMemberNameWhitespace
|
|
462
|
-
),
|
|
463
|
-
MemberErrorType.InvalidMemberNameWhitespace
|
|
464
|
-
);
|
|
465
|
-
}
|
|
466
|
-
if (!email || email.toString().length == 0) {
|
|
467
|
-
throw new NodeMemberError(
|
|
468
|
-
getNodeEciesTranslation(NodeEciesStringKey.Error_Member_MissingEmail),
|
|
469
|
-
MemberErrorType.MissingEmail
|
|
470
|
-
);
|
|
471
|
-
}
|
|
472
|
-
if (email.toString().trim() != email.toString()) {
|
|
473
|
-
throw new NodeMemberError(
|
|
474
|
-
getNodeEciesTranslation(
|
|
475
|
-
NodeEciesStringKey.Error_Member_InvalidEmailWhitespace
|
|
476
|
-
),
|
|
477
|
-
MemberErrorType.InvalidEmailWhitespace
|
|
478
|
-
);
|
|
479
|
-
}
|
|
480
|
-
|
|
481
|
-
// Use injected services
|
|
482
|
-
const mnemonic = forceMnemonic ?? eciesService.generateNewMnemonic();
|
|
483
|
-
const { wallet } = eciesService.walletAndSeedFromMnemonic(mnemonic);
|
|
484
|
-
|
|
485
|
-
// Get private key from wallet
|
|
486
|
-
const privateKey = wallet.getPrivateKey();
|
|
487
|
-
// Get public key with 0x04 prefix
|
|
488
|
-
const publicKey = secp256k1.getPublicKey(privateKey, true);
|
|
489
|
-
const publicKeyWithPrefix = Buffer.from(publicKey);
|
|
490
|
-
|
|
491
|
-
const newId = Buffer.from(Constants.idProvider.generate());
|
|
492
|
-
const dateCreated = new Date();
|
|
493
|
-
return {
|
|
494
|
-
// Pass injected services to constructor
|
|
495
|
-
member: new Member(
|
|
496
|
-
eciesService,
|
|
497
|
-
type,
|
|
498
|
-
name,
|
|
499
|
-
email,
|
|
500
|
-
publicKeyWithPrefix,
|
|
501
|
-
new SecureBuffer(privateKey),
|
|
502
|
-
wallet,
|
|
503
|
-
newId,
|
|
504
|
-
dateCreated,
|
|
505
|
-
dateCreated,
|
|
506
|
-
createdBy ?? newId
|
|
507
|
-
),
|
|
508
|
-
mnemonic,
|
|
509
|
-
};
|
|
510
|
-
}
|
|
511
|
-
}
|