@digitaldefiance/node-ecies-lib 1.1.22 → 1.1.23

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.
Files changed (212) hide show
  1. package/README.md +4 -0
  2. package/package.json +6 -5
  3. package/src/constants.d.ts +32 -0
  4. package/src/constants.d.ts.map +1 -0
  5. package/src/constants.js +137 -0
  6. package/src/constants.js.map +1 -0
  7. package/src/enumerations/index.d.ts +2 -0
  8. package/src/enumerations/index.d.ts.map +1 -0
  9. package/src/enumerations/index.js +5 -0
  10. package/src/enumerations/index.js.map +1 -0
  11. package/src/enumerations/pbkdf2-profile.d.ts +9 -0
  12. package/src/enumerations/pbkdf2-profile.d.ts.map +1 -0
  13. package/src/enumerations/pbkdf2-profile.js +13 -0
  14. package/src/enumerations/pbkdf2-profile.js.map +1 -0
  15. package/src/i18n/ecies-i18n-factory.d.ts +54 -0
  16. package/src/i18n/ecies-i18n-factory.d.ts.map +1 -0
  17. package/src/i18n/ecies-i18n-factory.js +333 -0
  18. package/src/i18n/ecies-i18n-factory.js.map +1 -0
  19. package/src/i18n/{index.ts → index.d.ts} +1 -0
  20. package/src/i18n/index.d.ts.map +1 -0
  21. package/src/i18n/index.js +5 -0
  22. package/src/i18n/index.js.map +1 -0
  23. package/src/{index.ts → index.d.ts} +1 -0
  24. package/src/index.d.ts.map +1 -0
  25. package/src/index.js +11 -0
  26. package/src/index.js.map +1 -0
  27. package/src/interfaces/authenticated-cipher.d.ts +10 -0
  28. package/src/interfaces/authenticated-cipher.d.ts.map +1 -0
  29. package/src/interfaces/authenticated-cipher.js +3 -0
  30. package/src/interfaces/authenticated-cipher.js.map +1 -0
  31. package/src/interfaces/authenticated-decipher.d.ts +9 -0
  32. package/src/interfaces/authenticated-decipher.d.ts.map +1 -0
  33. package/src/interfaces/authenticated-decipher.js +3 -0
  34. package/src/interfaces/authenticated-decipher.js.map +1 -0
  35. package/src/interfaces/checksum-config.d.ts +5 -0
  36. package/src/interfaces/checksum-config.d.ts.map +1 -0
  37. package/src/interfaces/checksum-config.js +3 -0
  38. package/src/interfaces/checksum-config.js.map +1 -0
  39. package/src/interfaces/checksum-consts.d.ts +11 -0
  40. package/src/interfaces/checksum-consts.d.ts.map +1 -0
  41. package/src/interfaces/checksum-consts.js +3 -0
  42. package/src/interfaces/checksum-consts.js.map +1 -0
  43. package/src/interfaces/constants.d.ts +43 -0
  44. package/src/interfaces/constants.d.ts.map +1 -0
  45. package/src/interfaces/constants.js +3 -0
  46. package/src/interfaces/constants.js.map +1 -0
  47. package/src/interfaces/ecies-consts.d.ts +88 -0
  48. package/src/interfaces/ecies-consts.d.ts.map +1 -0
  49. package/src/interfaces/ecies-consts.js +3 -0
  50. package/src/interfaces/ecies-consts.js.map +1 -0
  51. package/src/interfaces/encryption-consts.d.ts +11 -0
  52. package/src/interfaces/encryption-consts.d.ts.map +1 -0
  53. package/src/interfaces/encryption-consts.js +3 -0
  54. package/src/interfaces/encryption-consts.js.map +1 -0
  55. package/src/interfaces/{index.ts → index.d.ts} +1 -0
  56. package/src/interfaces/index.d.ts.map +1 -0
  57. package/src/interfaces/index.js +21 -0
  58. package/src/interfaces/index.js.map +1 -0
  59. package/src/interfaces/keypair-buffer-with-un-encrypted-private-key.d.ts +6 -0
  60. package/src/interfaces/keypair-buffer-with-un-encrypted-private-key.d.ts.map +1 -0
  61. package/src/interfaces/keypair-buffer-with-un-encrypted-private-key.js +3 -0
  62. package/src/interfaces/keypair-buffer-with-un-encrypted-private-key.js.map +1 -0
  63. package/src/interfaces/keyring-consts.d.ts +6 -0
  64. package/src/interfaces/keyring-consts.d.ts.map +1 -0
  65. package/src/interfaces/keyring-consts.js +3 -0
  66. package/src/interfaces/keyring-consts.js.map +1 -0
  67. package/src/interfaces/member-operational.d.ts +36 -0
  68. package/src/interfaces/member-operational.d.ts.map +1 -0
  69. package/src/interfaces/member-operational.js +3 -0
  70. package/src/interfaces/member-operational.js.map +1 -0
  71. package/src/interfaces/{member-with-mnemonic.ts → member-with-mnemonic.d.ts} +3 -3
  72. package/src/interfaces/member-with-mnemonic.d.ts.map +1 -0
  73. package/src/interfaces/member-with-mnemonic.js +3 -0
  74. package/src/interfaces/member-with-mnemonic.js.map +1 -0
  75. package/src/interfaces/{multi-encrypted-message.ts → multi-encrypted-message.d.ts} +5 -5
  76. package/src/interfaces/multi-encrypted-message.d.ts.map +1 -0
  77. package/src/interfaces/multi-encrypted-message.js +3 -0
  78. package/src/interfaces/multi-encrypted-message.js.map +1 -0
  79. package/src/interfaces/multi-encrypted-parsed-header.d.ts +24 -0
  80. package/src/interfaces/multi-encrypted-parsed-header.d.ts.map +1 -0
  81. package/src/interfaces/multi-encrypted-parsed-header.js +3 -0
  82. package/src/interfaces/multi-encrypted-parsed-header.js.map +1 -0
  83. package/src/interfaces/{pbkdf-profiles.ts → pbkdf-profiles.d.ts} +2 -2
  84. package/src/interfaces/pbkdf-profiles.d.ts.map +1 -0
  85. package/src/interfaces/pbkdf-profiles.js +3 -0
  86. package/src/interfaces/pbkdf-profiles.js.map +1 -0
  87. package/src/interfaces/pbkdf2-result.d.ts +6 -0
  88. package/src/interfaces/pbkdf2-result.d.ts.map +1 -0
  89. package/src/interfaces/pbkdf2-result.js +3 -0
  90. package/src/interfaces/pbkdf2-result.js.map +1 -0
  91. package/src/interfaces/signing-key-private-key-info.d.ts +11 -0
  92. package/src/interfaces/signing-key-private-key-info.d.ts.map +1 -0
  93. package/src/interfaces/signing-key-private-key-info.js +3 -0
  94. package/src/interfaces/signing-key-private-key-info.js.map +1 -0
  95. package/src/interfaces/{simple-keypair-buffer.ts → simple-keypair-buffer.d.ts} +3 -3
  96. package/src/interfaces/simple-keypair-buffer.d.ts.map +1 -0
  97. package/src/interfaces/simple-keypair-buffer.js +3 -0
  98. package/src/interfaces/simple-keypair-buffer.js.map +1 -0
  99. package/src/interfaces/{simple-keypair.ts → simple-keypair.d.ts} +3 -3
  100. package/src/interfaces/simple-keypair.d.ts.map +1 -0
  101. package/src/interfaces/simple-keypair.js +3 -0
  102. package/src/interfaces/simple-keypair.js.map +1 -0
  103. package/src/interfaces/simple-public-key-only-buffer.d.ts +4 -0
  104. package/src/interfaces/simple-public-key-only-buffer.d.ts.map +1 -0
  105. package/src/interfaces/simple-public-key-only-buffer.js +3 -0
  106. package/src/interfaces/simple-public-key-only-buffer.js.map +1 -0
  107. package/src/interfaces/simple-public-key-only.d.ts +4 -0
  108. package/src/interfaces/simple-public-key-only.d.ts.map +1 -0
  109. package/src/interfaces/simple-public-key-only.js +3 -0
  110. package/src/interfaces/simple-public-key-only.js.map +1 -0
  111. package/src/interfaces/single-encrypted-parsed-header.d.ts +35 -0
  112. package/src/interfaces/single-encrypted-parsed-header.d.ts.map +1 -0
  113. package/src/interfaces/single-encrypted-parsed-header.js +3 -0
  114. package/src/interfaces/single-encrypted-parsed-header.js.map +1 -0
  115. package/src/interfaces/{wallet-seed.ts → wallet-seed.d.ts} +3 -3
  116. package/src/interfaces/wallet-seed.d.ts.map +1 -0
  117. package/src/interfaces/wallet-seed.js +3 -0
  118. package/src/interfaces/wallet-seed.js.map +1 -0
  119. package/src/interfaces/wrapped-key-consts.d.ts +7 -0
  120. package/src/interfaces/wrapped-key-consts.d.ts.map +1 -0
  121. package/src/interfaces/wrapped-key-consts.js +3 -0
  122. package/src/interfaces/wrapped-key-consts.js.map +1 -0
  123. package/src/member.d.ts +74 -0
  124. package/src/member.d.ts.map +1 -0
  125. package/src/member.js +273 -0
  126. package/src/member.js.map +1 -0
  127. package/src/services/aes-gcm.d.ts +66 -0
  128. package/src/services/aes-gcm.d.ts.map +1 -0
  129. package/src/services/aes-gcm.js +115 -0
  130. package/src/services/aes-gcm.js.map +1 -0
  131. package/src/services/ecies/crypto-core.d.ts +83 -0
  132. package/src/services/ecies/crypto-core.d.ts.map +1 -0
  133. package/src/services/ecies/crypto-core.js +166 -0
  134. package/src/services/ecies/crypto-core.js.map +1 -0
  135. package/src/services/ecies/file.d.ts +30 -0
  136. package/src/services/ecies/file.d.ts.map +1 -0
  137. package/src/services/ecies/file.js +112 -0
  138. package/src/services/ecies/file.js.map +1 -0
  139. package/src/services/ecies/{index.ts → index.d.ts} +1 -0
  140. package/src/services/ecies/index.d.ts.map +1 -0
  141. package/src/services/ecies/index.js +11 -0
  142. package/src/services/ecies/index.js.map +1 -0
  143. package/src/services/ecies/multi-recipient.d.ts +82 -0
  144. package/src/services/ecies/multi-recipient.d.ts.map +1 -0
  145. package/src/services/ecies/multi-recipient.js +360 -0
  146. package/src/services/ecies/multi-recipient.js.map +1 -0
  147. package/src/services/ecies/service.d.ts +70 -0
  148. package/src/services/ecies/service.d.ts.map +1 -0
  149. package/src/services/ecies/service.js +167 -0
  150. package/src/services/ecies/service.js.map +1 -0
  151. package/src/services/ecies/signature.d.ts +38 -0
  152. package/src/services/ecies/signature.d.ts.map +1 -0
  153. package/src/services/ecies/signature.js +69 -0
  154. package/src/services/ecies/signature.js.map +1 -0
  155. package/src/services/ecies/single-recipient.d.ts +85 -0
  156. package/src/services/ecies/single-recipient.d.ts.map +1 -0
  157. package/src/services/ecies/single-recipient.js +399 -0
  158. package/src/services/ecies/single-recipient.js.map +1 -0
  159. package/src/services/ecies/utilities.d.ts +22 -0
  160. package/src/services/ecies/utilities.d.ts.map +1 -0
  161. package/src/services/ecies/utilities.js +75 -0
  162. package/src/services/ecies/utilities.js.map +1 -0
  163. package/src/services/index.d.ts +4 -0
  164. package/src/services/index.d.ts.map +1 -0
  165. package/src/services/index.js +7 -0
  166. package/src/services/index.js.map +1 -0
  167. package/src/services/pbkdf2.d.ts +106 -0
  168. package/src/services/pbkdf2.d.ts.map +1 -0
  169. package/src/services/pbkdf2.js +195 -0
  170. package/src/services/pbkdf2.js.map +1 -0
  171. package/src/{types.ts → types.d.ts} +9 -26
  172. package/src/types.d.ts.map +1 -0
  173. package/src/types.js +3 -0
  174. package/src/types.js.map +1 -0
  175. package/src/utils.d.ts +11 -0
  176. package/src/utils.d.ts.map +1 -0
  177. package/src/utils.js +82 -0
  178. package/src/utils.js.map +1 -0
  179. package/LICENSE +0 -21
  180. package/src/constants.ts +0 -182
  181. package/src/enumerations/index.ts +0 -1
  182. package/src/enumerations/pbkdf2-profile.ts +0 -8
  183. package/src/i18n/ecies-i18n-factory.ts +0 -435
  184. package/src/interfaces/authenticated-cipher.ts +0 -9
  185. package/src/interfaces/authenticated-decipher.ts +0 -8
  186. package/src/interfaces/checksum-config.ts +0 -4
  187. package/src/interfaces/checksum-consts.ts +0 -13
  188. package/src/interfaces/constants.ts +0 -43
  189. package/src/interfaces/ecies-consts.ts +0 -99
  190. package/src/interfaces/encryption-consts.ts +0 -10
  191. package/src/interfaces/keypair-buffer-with-un-encrypted-private-key.ts +0 -7
  192. package/src/interfaces/keyring-consts.ts +0 -5
  193. package/src/interfaces/member-operational.ts +0 -52
  194. package/src/interfaces/multi-encrypted-parsed-header.ts +0 -24
  195. package/src/interfaces/pbkdf2-result.ts +0 -5
  196. package/src/interfaces/signing-key-private-key-info.ts +0 -12
  197. package/src/interfaces/simple-public-key-only-buffer.ts +0 -3
  198. package/src/interfaces/simple-public-key-only.ts +0 -3
  199. package/src/interfaces/single-encrypted-parsed-header.ts +0 -35
  200. package/src/interfaces/wrapped-key-consts.ts +0 -6
  201. package/src/member.ts +0 -463
  202. package/src/services/aes-gcm.ts +0 -160
  203. package/src/services/ecies/crypto-core.ts +0 -213
  204. package/src/services/ecies/file.ts +0 -174
  205. package/src/services/ecies/multi-recipient.ts +0 -583
  206. package/src/services/ecies/service.ts +0 -351
  207. package/src/services/ecies/signature.ts +0 -91
  208. package/src/services/ecies/single-recipient.ts +0 -676
  209. package/src/services/ecies/utilities.ts +0 -111
  210. package/src/services/index.ts +0 -3
  211. package/src/services/pbkdf2.ts +0 -307
  212. package/src/utils.ts +0 -104
@@ -0,0 +1,166 @@
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 ecies_i18n_factory_1 = require("../../i18n/ecies-i18n-factory");
9
+ const constants_1 = require("../../constants");
10
+ /**
11
+ * Core encryption and decryption functions for ECIES
12
+ * Includes coverage for simple and single modes, does not cover multiple mode which is in a separate module
13
+ */
14
+ class EciesCryptoCore {
15
+ _config;
16
+ _consts;
17
+ get config() {
18
+ return this._config;
19
+ }
20
+ get consts() {
21
+ return this._consts;
22
+ }
23
+ constructor(config, eciesParams = constants_1.Constants.ECIES) {
24
+ this._config = config;
25
+ this._consts = eciesParams;
26
+ }
27
+ /**
28
+ * Validates and normalizes a public key for ECIES operations
29
+ * @param publicKey The public key to normalize
30
+ * @returns Properly formatted public key
31
+ */
32
+ normalizePublicKey(publicKey) {
33
+ if (!publicKey) {
34
+ const engine = (0, ecies_i18n_factory_1.createEciesTranslationEngine)();
35
+ const pluginEngine = (0, ecies_i18n_factory_1.getEciesPluginI18nEngine)();
36
+ throw new ecies_lib_1.ECIESError(ecies_lib_1.ECIESErrorTypeEnum.InvalidEphemeralPublicKey, engine, 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
+ // Already in correct format (65 bytes with 0x04 prefix)
42
+ if (keyLength === this._consts.PUBLIC_KEY_LENGTH &&
43
+ publicKey[0] === this._consts.PUBLIC_KEY_MAGIC) {
44
+ return publicKey;
45
+ }
46
+ // Raw key without prefix (64 bytes) - add the 0x04 prefix
47
+ if (keyLength === this._consts.RAW_PUBLIC_KEY_LENGTH) {
48
+ return Buffer.concat([Buffer.from([this._consts.PUBLIC_KEY_MAGIC]), publicKey]);
49
+ }
50
+ const engine = (0, ecies_i18n_factory_1.createEciesTranslationEngine)();
51
+ const pluginEngine = (0, ecies_i18n_factory_1.getEciesPluginI18nEngine)();
52
+ // Invalid format
53
+ throw new ecies_lib_1.ECIESError(ecies_lib_1.ECIESErrorTypeEnum.InvalidEphemeralPublicKey, engine, undefined, undefined, {
54
+ error: pluginEngine.translate(ecies_i18n_factory_1.NodeEciesComponentId, ecies_i18n_factory_1.NodeEciesStringKey.Error_InvalidPublicKeyFormat),
55
+ keyLength: String(keyLength),
56
+ expectedLength64: String(this._consts.RAW_PUBLIC_KEY_LENGTH),
57
+ expectedLength65: String(this._consts.PUBLIC_KEY_LENGTH),
58
+ keyPrefix: keyLength > 0 ? String(publicKey[0]) : 'N/A',
59
+ expectedPrefix: String(this._consts.PUBLIC_KEY_MAGIC),
60
+ });
61
+ }
62
+ /**
63
+ * Generate a new mnemonic
64
+ * @returns {SecureString} The new mnemonic
65
+ */
66
+ generateNewMnemonic() {
67
+ return new ecies_lib_1.SecureString((0, bip39_1.generateMnemonic)(this._config.mnemonicStrength));
68
+ }
69
+ /**
70
+ * Generate a new wallet from a seed
71
+ * @param seed {Buffer} The seed to generate the wallet from
72
+ * @returns {Wallet} The new wallet
73
+ */
74
+ walletFromSeed(seed) {
75
+ const hdWallet = wallet_1.hdkey.EthereumHDKey.fromMasterSeed(seed);
76
+ return hdWallet
77
+ .derivePath(this._config.primaryKeyDerivationPath)
78
+ .getWallet();
79
+ }
80
+ /**
81
+ * Generate a new wallet and seed from a mnemonic
82
+ * @param mnemonic {SecureString} The mnemonic to generate the wallet and seed from
83
+ * @returns {IWalletSeed} The new wallet and seed
84
+ */
85
+ walletAndSeedFromMnemonic(mnemonic) {
86
+ if (!mnemonic.value || !(0, bip39_1.validateMnemonic)(mnemonic.value)) {
87
+ throw new ecies_lib_1.ECIESError(ecies_lib_1.ECIESErrorTypeEnum.InvalidMnemonic, (0, ecies_i18n_factory_1.createEciesTranslationEngine)());
88
+ }
89
+ const seed = (0, bip39_1.mnemonicToSeedSync)(mnemonic.value);
90
+ const wallet = this.walletFromSeed(seed);
91
+ return {
92
+ seed: new ecies_lib_1.SecureBuffer(seed),
93
+ wallet,
94
+ };
95
+ }
96
+ /**
97
+ * Generate a new wallet and seed from a mnemonic
98
+ * @param wallet {Wallet} The wallet to generate the key pair from
99
+ * @returns {ISimpleKeyPairBuffer} The new key pair
100
+ */
101
+ walletToSimpleKeyPairBuffer(wallet) {
102
+ const privateKey = Buffer.from(wallet.getPrivateKey());
103
+ const buf04 = new Uint8Array(1);
104
+ buf04[0] = this._consts.PUBLIC_KEY_MAGIC;
105
+ const publicKey = Buffer.concat([buf04, wallet.getPublicKey()]);
106
+ return {
107
+ privateKey,
108
+ publicKey,
109
+ };
110
+ }
111
+ /**
112
+ * Create a simple key pair from a seed
113
+ * @param seed {Buffer} The seed to generate the key pair from
114
+ * @returns {ISimpleKeyPairBuffer} The new key pair
115
+ */
116
+ seedToSimpleKeyPairBuffer(seed) {
117
+ const wallet = this.walletFromSeed(seed);
118
+ return this.walletToSimpleKeyPairBuffer(wallet);
119
+ }
120
+ /**
121
+ * Create a simple key pair from a mnemonic
122
+ * @param mnemonic {SecureString} The mnemonic to generate the key pair from
123
+ * @returns {ISimpleKeyPairBuffer} The new key pair
124
+ */
125
+ mnemonicToSimpleKeyPairBuffer(mnemonic) {
126
+ const { seed } = this.walletAndSeedFromMnemonic(mnemonic);
127
+ return this.seedToSimpleKeyPairBuffer(Buffer.from(seed.value));
128
+ }
129
+ /**
130
+ * Generate a random private key
131
+ * @returns {Buffer} The new private key
132
+ */
133
+ generatePrivateKey() {
134
+ return Buffer.from(secp256k1_js_1.secp256k1.utils.randomPrivateKey());
135
+ }
136
+ /**
137
+ * Get public key from private key
138
+ * @param privateKey {Buffer} The private key
139
+ * @returns {Buffer} The public key
140
+ */
141
+ getPublicKey(privateKey) {
142
+ const publicKey = secp256k1_js_1.secp256k1.getPublicKey(privateKey, false);
143
+ return Buffer.from(publicKey);
144
+ }
145
+ /**
146
+ * Generate ephemeral key pair for ECIES
147
+ * @returns {Promise<ISimpleKeyPairBuffer>} The key pair
148
+ */
149
+ async generateEphemeralKeyPair() {
150
+ const privateKey = this.generatePrivateKey();
151
+ const publicKey = this.getPublicKey(privateKey);
152
+ return { privateKey, publicKey };
153
+ }
154
+ /**
155
+ * Compute ECDH shared secret
156
+ * @param privateKey {Buffer} The private key
157
+ * @param publicKey {Buffer} The public key
158
+ * @returns {Buffer} The shared secret
159
+ */
160
+ computeSharedSecret(privateKey, publicKey) {
161
+ const sharedSecret = secp256k1_js_1.secp256k1.getSharedSecret(privateKey, publicKey, true);
162
+ return Buffer.from(sharedSecret.slice(1)); // Remove the 0x02/0x03 prefix
163
+ }
164
+ }
165
+ exports.EciesCryptoCore = EciesCryptoCore;
166
+ //# sourceMappingURL=crypto-core.js.map
@@ -0,0 +1 @@
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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"}
@@ -0,0 +1,30 @@
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
@@ -0,0 +1 @@
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;IA4CzE,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"}
@@ -0,0 +1,112 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-node-ecies-lib/src/services/ecies/file.ts"],"names":[],"mappings":"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"}
@@ -5,3 +5,4 @@ export * from './service';
5
5
  export * from './signature';
6
6
  export * from './single-recipient';
7
7
  export * from './utilities';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,11 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,82 @@
1
+ import { PluginI18nEngine, CoreLanguageCode } from '@digitaldefiance/i18n-lib';
2
+ import { IMultiEncryptedMessage } from '../../interfaces/multi-encrypted-message';
3
+ import { IMultiEncryptedParsedHeader } from '../../interfaces/multi-encrypted-parsed-header';
4
+ import { Member } from '../../member';
5
+ import { EciesCryptoCore } from './crypto-core';
6
+ import { EciesSingleRecipientCore } from './single-recipient';
7
+ /**
8
+ * Multiple recipient encryption/decryption functions for ECIES
9
+ */
10
+ export declare class EciesMultiRecipient {
11
+ protected readonly cryptoCore: EciesCryptoCore;
12
+ protected readonly singleRecipientCore: EciesSingleRecipientCore;
13
+ protected readonly engine: PluginI18nEngine<CoreLanguageCode>;
14
+ constructor(cryptoCore: EciesCryptoCore, engine?: PluginI18nEngine<CoreLanguageCode>);
15
+ /**
16
+ * Get the size of the header for a given encryption type
17
+ * @param encryptionType The encryption type (single, simple, etc.)
18
+ * @param options Optional encryption options
19
+ * @param options.recipientCount The number of recipients
20
+ * @returns
21
+ */
22
+ getHeaderSize(recipientCount: number): number;
23
+ /**
24
+ * Encrypt a message symmetric key with a public key
25
+ * @param receiverPublicKey The public key of the receiver
26
+ * @param messageSymmetricKey The message to encrypt
27
+ * @returns The encrypted message
28
+ */
29
+ encryptKey(receiverPublicKey: Buffer, messageSymmetricKey: Buffer): Buffer;
30
+ /**
31
+ * Decrypts symmetric key encrypted with ECIES using a header
32
+ * @param privateKey The private key to decrypt the data
33
+ * @param encryptedKey The data to decrypt
34
+ * @returns The decrypted data buffer
35
+ */
36
+ decryptKey(privateKey: Buffer, encryptedKey: Buffer): Buffer;
37
+ /**
38
+ * Encrypts a message for multiple recipients.
39
+ * @param recipients The recipients to encrypt the message for.
40
+ * @param message The message to encrypt.
41
+ * @param preamble Optional preamble to include in the encrypted message.
42
+ * @returns The encrypted message.
43
+ * @throws EciesError if the number of recipients is greater than 65535.
44
+ */
45
+ encryptMultiple(recipients: Member[], message: Buffer, preamble?: Buffer): IMultiEncryptedMessage;
46
+ /**
47
+ * Decrypts a message encrypted with multiple ECIE for a recipient.
48
+ * @param encryptedData The encrypted data.
49
+ * @param recipient The recipient.
50
+ * @returns The decrypted message.
51
+ */
52
+ decryptMultipleECIEForRecipient(encryptedData: IMultiEncryptedMessage, recipient: Member): Buffer;
53
+ /**
54
+ * Calculate the overhead for a message encrypted for multiple recipients
55
+ * @param recipientCount number of recipients
56
+ * @param includeMessageOverhead whether to include the overhead for the encrypted message
57
+ * @param encryptedKeys optional array of encrypted keys to calculate actual size
58
+ * @returns the overhead size in bytes
59
+ */
60
+ calculateECIESMultipleRecipientOverhead(recipientCount: number, includeMessageOverhead: boolean, encryptedKeys?: Buffer[]): number;
61
+ /**
62
+ * Builds the header for a message encrypted for multiple recipients
63
+ * @param data The encrypted message data including recipients and encrypted keys
64
+ * @returns The header buffer for the message
65
+ * @throws EciesError if the number of recipients is greater than the maximum allowed
66
+ * @throws EciesError if the number of encrypted keys does not match the number of recipients
67
+ */
68
+ buildECIESMultipleRecipientHeader(data: IMultiEncryptedMessage): Buffer;
69
+ /**
70
+ * Parses a multi-encrypted header.
71
+ * @param data - The data to parse.
72
+ * @returns The parsed header.
73
+ */
74
+ parseMultiEncryptedHeader(data: Buffer): IMultiEncryptedParsedHeader;
75
+ /**
76
+ * Parses a multi-encrypted buffer into its components.
77
+ * @param data - The multi-encrypted buffer to parse.
78
+ * @returns The parsed multi-encrypted buffer.
79
+ */
80
+ parseMultiEncryptedBuffer(data: Buffer): IMultiEncryptedMessage;
81
+ }
82
+ //# sourceMappingURL=multi-recipient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-recipient.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-node-ecies-lib/src/services/ecies/multi-recipient.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAa/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAC7F,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAE9D;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IAC/C,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,wBAAwB,CAAC;IACjE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;gBAG5D,UAAU,EAAE,eAAe,EAC3B,MAAM,CAAC,EAAE,gBAAgB,CAAC,gBAAgB,CAAC;IAU7C;;;;;;OAMG;IACI,aAAa,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM;IAOpD;;;;;OAKG;IACI,UAAU,CACf,iBAAiB,EAAE,MAAM,EACzB,mBAAmB,EAAE,MAAM,GAC1B,MAAM;IAmFT;;;;;OAKG;IACI,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IA2DnE;;;;;;;OAOG;IACI,eAAe,CACpB,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,GAChB,sBAAsB;IAkEzB;;;;;OAKG;IACI,+BAA+B,CACpC,aAAa,EAAE,sBAAsB,EACrC,SAAS,EAAE,MAAM,GAChB,MAAM;IAuDT;;;;;;OAMG;IACI,uCAAuC,CAC5C,cAAc,EAAE,MAAM,EACtB,sBAAsB,EAAE,OAAO,EAC/B,aAAa,CAAC,EAAE,MAAM,EAAE,GACvB,MAAM;IA+BT;;;;;;OAMG;IACI,iCAAiC,CACtC,IAAI,EAAE,sBAAsB,GAC3B,MAAM;IAuET;;;;OAIG;IACI,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,2BAA2B;IAkF3E;;;;OAIG;IACI,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB;CASvE"}