@digitaldefiance/node-ecies-lib 1.0.0

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 (182) hide show
  1. package/LICENSE +21 -0
  2. package/dist/constants.d.ts +29 -0
  3. package/dist/constants.d.ts.map +1 -0
  4. package/dist/constants.js +129 -0
  5. package/dist/constants.js.map +1 -0
  6. package/dist/enumerations/index.d.ts +2 -0
  7. package/dist/enumerations/index.d.ts.map +1 -0
  8. package/dist/enumerations/index.js +2 -0
  9. package/dist/enumerations/index.js.map +1 -0
  10. package/dist/enumerations/pbkdf2-profile.d.ts +8 -0
  11. package/dist/enumerations/pbkdf2-profile.d.ts.map +1 -0
  12. package/dist/enumerations/pbkdf2-profile.js +9 -0
  13. package/dist/enumerations/pbkdf2-profile.js.map +1 -0
  14. package/dist/index.d.ts +6 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +6 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/interfaces/authenticated-cipher.d.ts +10 -0
  19. package/dist/interfaces/authenticated-cipher.d.ts.map +1 -0
  20. package/dist/interfaces/authenticated-cipher.js +2 -0
  21. package/dist/interfaces/authenticated-cipher.js.map +1 -0
  22. package/dist/interfaces/authenticated-decipher.d.ts +9 -0
  23. package/dist/interfaces/authenticated-decipher.d.ts.map +1 -0
  24. package/dist/interfaces/authenticated-decipher.js +2 -0
  25. package/dist/interfaces/authenticated-decipher.js.map +1 -0
  26. package/dist/interfaces/checksum-config.d.ts +5 -0
  27. package/dist/interfaces/checksum-config.d.ts.map +1 -0
  28. package/dist/interfaces/checksum-config.js +2 -0
  29. package/dist/interfaces/checksum-config.js.map +1 -0
  30. package/dist/interfaces/checksum-consts.d.ts +11 -0
  31. package/dist/interfaces/checksum-consts.d.ts.map +1 -0
  32. package/dist/interfaces/checksum-consts.js +2 -0
  33. package/dist/interfaces/checksum-consts.js.map +1 -0
  34. package/dist/interfaces/constants.d.ts +42 -0
  35. package/dist/interfaces/constants.d.ts.map +1 -0
  36. package/dist/interfaces/constants.js +2 -0
  37. package/dist/interfaces/constants.js.map +1 -0
  38. package/dist/interfaces/ecies-consts.d.ts +88 -0
  39. package/dist/interfaces/ecies-consts.d.ts.map +1 -0
  40. package/dist/interfaces/ecies-consts.js +2 -0
  41. package/dist/interfaces/ecies-consts.js.map +1 -0
  42. package/dist/interfaces/encryption-consts.d.ts +11 -0
  43. package/dist/interfaces/encryption-consts.d.ts.map +1 -0
  44. package/dist/interfaces/encryption-consts.js +2 -0
  45. package/dist/interfaces/encryption-consts.js.map +1 -0
  46. package/dist/interfaces/fec-consts.d.ts +5 -0
  47. package/dist/interfaces/fec-consts.d.ts.map +1 -0
  48. package/dist/interfaces/fec-consts.js +2 -0
  49. package/dist/interfaces/fec-consts.js.map +1 -0
  50. package/dist/interfaces/index.d.ts +18 -0
  51. package/dist/interfaces/index.d.ts.map +1 -0
  52. package/dist/interfaces/index.js +18 -0
  53. package/dist/interfaces/index.js.map +1 -0
  54. package/dist/interfaces/keypair-buffer-with-un-encrypted-private-key.d.ts +6 -0
  55. package/dist/interfaces/keypair-buffer-with-un-encrypted-private-key.d.ts.map +1 -0
  56. package/dist/interfaces/keypair-buffer-with-un-encrypted-private-key.js +2 -0
  57. package/dist/interfaces/keypair-buffer-with-un-encrypted-private-key.js.map +1 -0
  58. package/dist/interfaces/keyring-consts.d.ts +6 -0
  59. package/dist/interfaces/keyring-consts.d.ts.map +1 -0
  60. package/dist/interfaces/keyring-consts.js +2 -0
  61. package/dist/interfaces/keyring-consts.js.map +1 -0
  62. package/dist/interfaces/member-operational.d.ts +36 -0
  63. package/dist/interfaces/member-operational.d.ts.map +1 -0
  64. package/dist/interfaces/member-operational.js +2 -0
  65. package/dist/interfaces/member-operational.js.map +1 -0
  66. package/dist/interfaces/member-with-mnemonic.d.ts +7 -0
  67. package/dist/interfaces/member-with-mnemonic.d.ts.map +1 -0
  68. package/dist/interfaces/member-with-mnemonic.js +2 -0
  69. package/dist/interfaces/member-with-mnemonic.js.map +1 -0
  70. package/dist/interfaces/multi-encrypted-message.d.ts +8 -0
  71. package/dist/interfaces/multi-encrypted-message.d.ts.map +1 -0
  72. package/dist/interfaces/multi-encrypted-message.js +2 -0
  73. package/dist/interfaces/multi-encrypted-message.js.map +1 -0
  74. package/dist/interfaces/multi-encrypted-parsed-header.d.ts +24 -0
  75. package/dist/interfaces/multi-encrypted-parsed-header.d.ts.map +1 -0
  76. package/dist/interfaces/multi-encrypted-parsed-header.js +2 -0
  77. package/dist/interfaces/multi-encrypted-parsed-header.js.map +1 -0
  78. package/dist/interfaces/pbkdf-profiles.d.ts +6 -0
  79. package/dist/interfaces/pbkdf-profiles.d.ts.map +1 -0
  80. package/dist/interfaces/pbkdf-profiles.js +2 -0
  81. package/dist/interfaces/pbkdf-profiles.js.map +1 -0
  82. package/dist/interfaces/signing-key-private-key-info.d.ts +11 -0
  83. package/dist/interfaces/signing-key-private-key-info.d.ts.map +1 -0
  84. package/dist/interfaces/signing-key-private-key-info.js +2 -0
  85. package/dist/interfaces/signing-key-private-key-info.js.map +1 -0
  86. package/dist/interfaces/simple-keypair-buffer.d.ts +6 -0
  87. package/dist/interfaces/simple-keypair-buffer.d.ts.map +1 -0
  88. package/dist/interfaces/simple-keypair-buffer.js +2 -0
  89. package/dist/interfaces/simple-keypair-buffer.js.map +1 -0
  90. package/dist/interfaces/simple-keypair.d.ts +6 -0
  91. package/dist/interfaces/simple-keypair.d.ts.map +1 -0
  92. package/dist/interfaces/simple-keypair.js +2 -0
  93. package/dist/interfaces/simple-keypair.js.map +1 -0
  94. package/dist/interfaces/simple-public-key-only-buffer.d.ts +4 -0
  95. package/dist/interfaces/simple-public-key-only-buffer.d.ts.map +1 -0
  96. package/dist/interfaces/simple-public-key-only-buffer.js +2 -0
  97. package/dist/interfaces/simple-public-key-only-buffer.js.map +1 -0
  98. package/dist/interfaces/simple-public-key-only.d.ts +4 -0
  99. package/dist/interfaces/simple-public-key-only.d.ts.map +1 -0
  100. package/dist/interfaces/simple-public-key-only.js +2 -0
  101. package/dist/interfaces/simple-public-key-only.js.map +1 -0
  102. package/dist/interfaces/single-encrypted-parsed-header.d.ts +35 -0
  103. package/dist/interfaces/single-encrypted-parsed-header.d.ts.map +1 -0
  104. package/dist/interfaces/single-encrypted-parsed-header.js +2 -0
  105. package/dist/interfaces/single-encrypted-parsed-header.js.map +1 -0
  106. package/dist/interfaces/wallet-seed.d.ts +7 -0
  107. package/dist/interfaces/wallet-seed.d.ts.map +1 -0
  108. package/dist/interfaces/wallet-seed.js +2 -0
  109. package/dist/interfaces/wallet-seed.js.map +1 -0
  110. package/dist/interfaces/wrapped-key-consts.d.ts +7 -0
  111. package/dist/interfaces/wrapped-key-consts.d.ts.map +1 -0
  112. package/dist/interfaces/wrapped-key-consts.js +2 -0
  113. package/dist/interfaces/wrapped-key-consts.js.map +1 -0
  114. package/dist/member.d.ts +67 -0
  115. package/dist/member.d.ts.map +1 -0
  116. package/dist/member.js +256 -0
  117. package/dist/member.js.map +1 -0
  118. package/dist/services/ecies/crypto-core.d.ts +55 -0
  119. package/dist/services/ecies/crypto-core.d.ts.map +1 -0
  120. package/dist/services/ecies/crypto-core.debug.d.ts +13 -0
  121. package/dist/services/ecies/crypto-core.debug.d.ts.map +1 -0
  122. package/dist/services/ecies/crypto-core.debug.js +91 -0
  123. package/dist/services/ecies/crypto-core.debug.js.map +1 -0
  124. package/dist/services/ecies/crypto-core.js +115 -0
  125. package/dist/services/ecies/crypto-core.js.map +1 -0
  126. package/dist/services/ecies/debug-aes-gcm.d.ts +2 -0
  127. package/dist/services/ecies/debug-aes-gcm.d.ts.map +1 -0
  128. package/dist/services/ecies/debug-aes-gcm.js +106 -0
  129. package/dist/services/ecies/debug-aes-gcm.js.map +1 -0
  130. package/dist/services/ecies/debug-ecdh.d.ts +2 -0
  131. package/dist/services/ecies/debug-ecdh.d.ts.map +1 -0
  132. package/dist/services/ecies/debug-ecdh.js +123 -0
  133. package/dist/services/ecies/debug-ecdh.js.map +1 -0
  134. package/dist/services/ecies/debug-ecies-burnbag.d.ts +2 -0
  135. package/dist/services/ecies/debug-ecies-burnbag.d.ts.map +1 -0
  136. package/dist/services/ecies/debug-ecies-burnbag.js +134 -0
  137. package/dist/services/ecies/debug-ecies-burnbag.js.map +1 -0
  138. package/dist/services/ecies/debug-ecies.d.ts +2 -0
  139. package/dist/services/ecies/debug-ecies.d.ts.map +1 -0
  140. package/dist/services/ecies/debug-ecies.js +110 -0
  141. package/dist/services/ecies/debug-ecies.js.map +1 -0
  142. package/dist/services/ecies/debug-test.d.ts +2 -0
  143. package/dist/services/ecies/debug-test.d.ts.map +1 -0
  144. package/dist/services/ecies/debug-test.js +57 -0
  145. package/dist/services/ecies/debug-test.js.map +1 -0
  146. package/dist/services/ecies/file.d.ts +15 -0
  147. package/dist/services/ecies/file.d.ts.map +1 -0
  148. package/dist/services/ecies/file.js +104 -0
  149. package/dist/services/ecies/file.js.map +1 -0
  150. package/dist/services/ecies/index.d.ts +8 -0
  151. package/dist/services/ecies/index.d.ts.map +1 -0
  152. package/dist/services/ecies/index.js +8 -0
  153. package/dist/services/ecies/index.js.map +1 -0
  154. package/dist/services/ecies/multi-recipient.d.ts +83 -0
  155. package/dist/services/ecies/multi-recipient.d.ts.map +1 -0
  156. package/dist/services/ecies/multi-recipient.js +355 -0
  157. package/dist/services/ecies/multi-recipient.js.map +1 -0
  158. package/dist/services/ecies/service.d.ts +70 -0
  159. package/dist/services/ecies/service.d.ts.map +1 -0
  160. package/dist/services/ecies/service.js +145 -0
  161. package/dist/services/ecies/service.js.map +1 -0
  162. package/dist/services/ecies/signature.d.ts +38 -0
  163. package/dist/services/ecies/signature.d.ts.map +1 -0
  164. package/dist/services/ecies/signature.js +64 -0
  165. package/dist/services/ecies/signature.js.map +1 -0
  166. package/dist/services/ecies/single-recipient.d.ts +85 -0
  167. package/dist/services/ecies/single-recipient.d.ts.map +1 -0
  168. package/dist/services/ecies/single-recipient.js +390 -0
  169. package/dist/services/ecies/single-recipient.js.map +1 -0
  170. package/dist/services/ecies/utilities.d.ts +22 -0
  171. package/dist/services/ecies/utilities.d.ts.map +1 -0
  172. package/dist/services/ecies/utilities.js +65 -0
  173. package/dist/services/ecies/utilities.js.map +1 -0
  174. package/dist/services/index.d.ts +2 -0
  175. package/dist/services/index.d.ts.map +1 -0
  176. package/dist/services/index.js +2 -0
  177. package/dist/services/index.js.map +1 -0
  178. package/dist/types.d.ts +25 -0
  179. package/dist/types.d.ts.map +1 -0
  180. package/dist/types.js +2 -0
  181. package/dist/types.js.map +1 -0
  182. package/package.json +64 -0
@@ -0,0 +1,70 @@
1
+ import { EciesEncryptionType, EciesEncryptionTypeEnum, EciesStringKey, HexString, IECIESConfig, SecureString } from '@digitaldefiance/ecies-lib';
2
+ import { Wallet } from '@ethereumjs/wallet';
3
+ import { Member } from '../../member';
4
+ import { I18nEngine, Language } from '@digitaldefiance/i18n-lib';
5
+ import { IWalletSeed } from 'src/interfaces';
6
+ import { IMultiEncryptedMessage } from '../../interfaces/multi-encrypted-message';
7
+ import { IMultiEncryptedParsedHeader } from '../../interfaces/multi-encrypted-parsed-header';
8
+ import { ISingleEncryptedParsedHeader } from '../../interfaces/single-encrypted-parsed-header';
9
+ import { SignatureBuffer, SignatureString } from '../../types';
10
+ import { EciesCryptoCore } from './crypto-core';
11
+ import { EciesMultiRecipient } from './multi-recipient';
12
+ import { EciesSignature } from './signature';
13
+ import { EciesSingleRecipientCore } from './single-recipient';
14
+ import { EciesUtilities } from './utilities';
15
+ /**
16
+ * Unified ECIES service that integrates all the modular components
17
+ */
18
+ export declare class ECIESService {
19
+ protected readonly _config: IECIESConfig;
20
+ protected readonly cryptoCore: EciesCryptoCore;
21
+ protected readonly signature: EciesSignature;
22
+ protected readonly singleRecipient: EciesSingleRecipientCore;
23
+ protected readonly multiRecipient: EciesMultiRecipient;
24
+ protected readonly utilities: EciesUtilities;
25
+ protected readonly engine: I18nEngine<EciesStringKey, Language, any, any>;
26
+ constructor(engine: I18nEngine<EciesStringKey, Language, any, any>, config?: Partial<IECIESConfig>);
27
+ get core(): EciesCryptoCore;
28
+ get config(): IECIESConfig;
29
+ /**
30
+ * The name of the elliptic curve used for ECIES encryption/decryption
31
+ */
32
+ get curveName(): string;
33
+ generateNewMnemonic(): SecureString;
34
+ walletFromSeed(seed: Buffer): Wallet;
35
+ walletAndSeedFromMnemonic(mnemonic: SecureString): IWalletSeed;
36
+ walletToSimpleKeyPairBuffer(wallet: Wallet): import("src/interfaces").ISimpleKeyPairBuffer;
37
+ seedToSimpleKeyPairBuffer(seed: Buffer): import("src/interfaces").ISimpleKeyPairBuffer;
38
+ mnemonicToSimpleKeyPairBuffer(mnemonic: SecureString): import("src/interfaces").ISimpleKeyPairBuffer;
39
+ encryptSimpleOrSingle(encryptSimple: boolean, receiverPublicKey: Buffer, message: Buffer, preamble?: Buffer): Buffer;
40
+ parseSingleEncryptedHeader(encryptionType: EciesEncryptionTypeEnum, data: Buffer, preambleSize?: number, options?: {
41
+ dataLength?: number;
42
+ }): ISingleEncryptedParsedHeader;
43
+ decryptSimpleOrSingleWithHeader(decryptSimple: boolean, privateKey: Buffer, encryptedData: Buffer, preambleSize?: number, options?: {
44
+ dataLength?: number;
45
+ }): Buffer;
46
+ decryptSimpleOrSingleWithHeaderEx(encryptionType: EciesEncryptionTypeEnum, privateKey: Buffer, encryptedData: Buffer, preambleSize?: number, options?: {
47
+ dataLength?: number;
48
+ }): {
49
+ decrypted: Buffer;
50
+ consumedBytes: number;
51
+ };
52
+ decryptSingleWithComponents(privateKey: Buffer, ephemeralPublicKey: Buffer, iv: Buffer, authTag: Buffer, encrypted: Buffer): {
53
+ decrypted: Buffer;
54
+ ciphertextLength?: number;
55
+ };
56
+ signMessage(privateKey: Buffer, data: Buffer): SignatureBuffer;
57
+ verifyMessage(publicKey: Buffer, data: Buffer, signature: SignatureBuffer): boolean;
58
+ signatureStringToSignatureBuffer(signatureString: HexString): SignatureBuffer;
59
+ signatureBufferToSignatureString(signatureBuffer: SignatureBuffer): SignatureString;
60
+ encryptMultiple(recipients: Member[], message: Buffer): IMultiEncryptedMessage;
61
+ decryptMultipleECIEForRecipient(encryptedData: IMultiEncryptedMessage, recipient: Member): Buffer;
62
+ calculateECIESMultipleRecipientOverhead(recipientCount: number, includeMessageOverhead: boolean): number;
63
+ buildECIESMultipleRecipientHeader(data: IMultiEncryptedMessage): Buffer;
64
+ parseMultiEncryptedHeader(data: Buffer): IMultiEncryptedParsedHeader;
65
+ parseMultiEncryptedBuffer(data: Buffer): IMultiEncryptedMessage;
66
+ computeEncryptedLengthFromDataLength(dataLength: number, encryptionMode: EciesEncryptionType, recipientCount?: number): number;
67
+ computeDecryptedLengthFromEncryptedDataLength(encryptedDataLength: number, padding?: number): number;
68
+ encrypt(encryptionType: EciesEncryptionType, recipients: Member[], message: Buffer, preamble?: Buffer): Buffer;
69
+ }
70
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/services/ecies/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,145 @@
1
+ import { ECIES, EciesEncryptionTypeEnum, ECIESError, ECIESErrorTypeEnum, } from '@digitaldefiance/ecies-lib';
2
+ import { EciesCryptoCore } from './crypto-core';
3
+ import { EciesMultiRecipient } from './multi-recipient';
4
+ import { EciesSignature } from './signature';
5
+ import { EciesSingleRecipientCore } from './single-recipient';
6
+ import { EciesUtilities } from './utilities';
7
+ /**
8
+ * Unified ECIES service that integrates all the modular components
9
+ */
10
+ export class ECIESService {
11
+ _config;
12
+ cryptoCore;
13
+ signature;
14
+ singleRecipient;
15
+ multiRecipient;
16
+ utilities;
17
+ engine;
18
+ constructor(engine, config) {
19
+ this._config = {
20
+ curveName: ECIES.CURVE_NAME,
21
+ primaryKeyDerivationPath: ECIES.PRIMARY_KEY_DERIVATION_PATH,
22
+ mnemonicStrength: ECIES.MNEMONIC_STRENGTH,
23
+ symmetricAlgorithm: ECIES.SYMMETRIC.ALGORITHM,
24
+ symmetricKeyBits: ECIES.SYMMETRIC.KEY_BITS,
25
+ symmetricKeyMode: ECIES.SYMMETRIC.MODE,
26
+ ...config,
27
+ };
28
+ // Initialize all components
29
+ this.engine = engine;
30
+ this.cryptoCore = new EciesCryptoCore(this._config);
31
+ this.signature = new EciesSignature(this.cryptoCore);
32
+ this.singleRecipient = new EciesSingleRecipientCore(this._config, engine);
33
+ this.multiRecipient = new EciesMultiRecipient(this.cryptoCore, engine);
34
+ this.utilities = new EciesUtilities();
35
+ }
36
+ get core() {
37
+ return this.cryptoCore;
38
+ }
39
+ get config() {
40
+ return this._config;
41
+ }
42
+ /**
43
+ * The name of the elliptic curve used for ECIES encryption/decryption
44
+ */
45
+ get curveName() {
46
+ return this._config.curveName;
47
+ }
48
+ // === Key Management Methods ===
49
+ generateNewMnemonic() {
50
+ return this.cryptoCore.generateNewMnemonic();
51
+ }
52
+ walletFromSeed(seed) {
53
+ return this.cryptoCore.walletFromSeed(seed);
54
+ }
55
+ walletAndSeedFromMnemonic(mnemonic) {
56
+ return this.cryptoCore.walletAndSeedFromMnemonic(mnemonic);
57
+ }
58
+ walletToSimpleKeyPairBuffer(wallet) {
59
+ return this.cryptoCore.walletToSimpleKeyPairBuffer(wallet);
60
+ }
61
+ seedToSimpleKeyPairBuffer(seed) {
62
+ return this.cryptoCore.seedToSimpleKeyPairBuffer(seed);
63
+ }
64
+ mnemonicToSimpleKeyPairBuffer(mnemonic) {
65
+ return this.cryptoCore.mnemonicToSimpleKeyPairBuffer(mnemonic);
66
+ }
67
+ // === Core Encryption/Decryption Methods ===
68
+ encryptSimpleOrSingle(encryptSimple, receiverPublicKey, message, preamble = Buffer.alloc(0)) {
69
+ return this.singleRecipient.encrypt(encryptSimple, receiverPublicKey, message, preamble);
70
+ }
71
+ parseSingleEncryptedHeader(encryptionType, data, preambleSize = 0, options) {
72
+ const { header } = this.singleRecipient.parseEncryptedMessage(encryptionType, data, preambleSize, options);
73
+ return header;
74
+ }
75
+ decryptSimpleOrSingleWithHeader(decryptSimple, privateKey, encryptedData, preambleSize = 0, options) {
76
+ return this.singleRecipient.decryptWithHeader(decryptSimple
77
+ ? EciesEncryptionTypeEnum.Simple
78
+ : EciesEncryptionTypeEnum.Single, privateKey, encryptedData, preambleSize, options);
79
+ }
80
+ decryptSimpleOrSingleWithHeaderEx(encryptionType, privateKey, encryptedData, preambleSize = 0, options) {
81
+ return this.singleRecipient.decryptWithHeaderEx(encryptionType, privateKey, encryptedData, preambleSize, options);
82
+ }
83
+ decryptSingleWithComponents(privateKey, ephemeralPublicKey, iv, authTag, encrypted) {
84
+ const decrypted = this.singleRecipient.decryptWithComponents(privateKey, ephemeralPublicKey, iv, authTag, encrypted);
85
+ // Return an object with a 'decrypted' property for compatibility with existing code
86
+ return { decrypted, ciphertextLength: encrypted.length };
87
+ }
88
+ // === Signature Methods ===
89
+ signMessage(privateKey, data) {
90
+ return this.signature.signMessage(privateKey, data);
91
+ }
92
+ verifyMessage(publicKey, data, signature) {
93
+ return this.signature.verifyMessage(publicKey, data, signature);
94
+ }
95
+ signatureStringToSignatureBuffer(signatureString) {
96
+ return this.signature.signatureStringToSignatureBuffer(signatureString);
97
+ }
98
+ signatureBufferToSignatureString(signatureBuffer) {
99
+ return this.signature.signatureBufferToSignatureString(signatureBuffer);
100
+ }
101
+ // === Multi-Recipient Methods ===
102
+ encryptMultiple(recipients, message) {
103
+ return this.multiRecipient.encryptMultiple(recipients, message);
104
+ }
105
+ decryptMultipleECIEForRecipient(encryptedData, recipient) {
106
+ return this.multiRecipient.decryptMultipleECIEForRecipient(encryptedData, recipient);
107
+ }
108
+ calculateECIESMultipleRecipientOverhead(recipientCount, includeMessageOverhead) {
109
+ return this.multiRecipient.calculateECIESMultipleRecipientOverhead(recipientCount, includeMessageOverhead);
110
+ }
111
+ buildECIESMultipleRecipientHeader(data) {
112
+ return this.multiRecipient.buildECIESMultipleRecipientHeader(data);
113
+ }
114
+ parseMultiEncryptedHeader(data) {
115
+ return this.multiRecipient.parseMultiEncryptedHeader(data);
116
+ }
117
+ parseMultiEncryptedBuffer(data) {
118
+ return this.multiRecipient.parseMultiEncryptedBuffer(data);
119
+ }
120
+ // === Utility Methods ===
121
+ computeEncryptedLengthFromDataLength(dataLength, encryptionMode, recipientCount) {
122
+ return this.utilities.computeEncryptedLengthFromDataLength(dataLength, encryptionMode, recipientCount);
123
+ }
124
+ computeDecryptedLengthFromEncryptedDataLength(encryptedDataLength, padding) {
125
+ return this.utilities.computeDecryptedLengthFromEncryptedDataLength(encryptedDataLength, padding);
126
+ }
127
+ encrypt(encryptionType, recipients, message, preamble) {
128
+ if ((encryptionType === 'simple' || encryptionType === 'single') &&
129
+ recipients.length === 1) {
130
+ return this.singleRecipient.encrypt(encryptionType === 'simple', recipients[0].publicKey, message, preamble);
131
+ }
132
+ else if (encryptionType === 'multiple' && recipients.length > 1) {
133
+ const result = this.multiRecipient.encryptMultiple(recipients, message, preamble);
134
+ return result.encryptedMessage;
135
+ }
136
+ else {
137
+ throw new ECIESError(ECIESErrorTypeEnum.InvalidEncryptionType, this.engine, undefined, undefined, {
138
+ error: 'Invalid encryption type or number of recipients',
139
+ encryptionType,
140
+ recipients: String(recipients.length),
141
+ });
142
+ }
143
+ }
144
+ }
145
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/services/ecies/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { HexString } from '@digitaldefiance/ecies-lib';
2
+ import { SignatureBuffer, SignatureString } from '../../types';
3
+ import { EciesCryptoCore } from './crypto-core';
4
+ /**
5
+ * Signature-related functions for ECIES
6
+ */
7
+ export declare class EciesSignature {
8
+ private readonly cryptoCore;
9
+ constructor(cryptoCore: EciesCryptoCore);
10
+ /**
11
+ * Signs arbitrary binary data with the given private key.
12
+ * @param privateKey The private key to sign the message with.
13
+ * @param data The data to sign.
14
+ * @returns The signature (64 bytes: r + s).
15
+ */
16
+ signMessage(privateKey: Buffer, data: Buffer): SignatureBuffer;
17
+ /**
18
+ * Verifies arbitrary binary data with the given public key.
19
+ * @param publicKey The public key to verify the message with.
20
+ * @param data The data to verify.
21
+ * @param signature The signature to verify (64 bytes: r + s).
22
+ * @returns True if the signature is valid, false otherwise.
23
+ */
24
+ verifyMessage(publicKey: Buffer, data: Buffer, signature: SignatureBuffer): boolean;
25
+ /**
26
+ * Converts a signature string to a signature buffer.
27
+ * @param signatureString - The signature string to convert.
28
+ * @returns The signature buffer.
29
+ */
30
+ signatureStringToSignatureBuffer(signatureString: HexString): SignatureBuffer;
31
+ /**
32
+ * Converts a signature buffer to a signature string.
33
+ * @param signatureBuffer - The signature buffer to convert.
34
+ * @returns The signature string.
35
+ */
36
+ signatureBufferToSignatureString(signatureBuffer: SignatureBuffer): SignatureString;
37
+ }
38
+ //# sourceMappingURL=signature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../../../src/services/ecies/signature.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,SAAS,EACV,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;gBAEjC,UAAU,EAAE,eAAe;IAIvC;;;;;OAKG;IACI,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe;IASrE;;;;;;OAMG;IACI,aAAa,CAClB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,eAAe,GACzB,OAAO;IAsBV;;;;OAIG;IACI,gCAAgC,CACrC,eAAe,EAAE,SAAS,GACzB,eAAe;IAIlB;;;;OAIG;IACI,gCAAgC,CACrC,eAAe,EAAE,eAAe,GAC/B,eAAe;CAGnB"}
@@ -0,0 +1,64 @@
1
+ import { ECIESError, ECIESErrorTypeEnum, getEciesI18nEngine, } from '@digitaldefiance/ecies-lib';
2
+ import { secp256k1 } from '@noble/curves/secp256k1.js';
3
+ import { sha256 } from '@noble/hashes/sha2.js';
4
+ /**
5
+ * Signature-related functions for ECIES
6
+ */
7
+ export class EciesSignature {
8
+ cryptoCore;
9
+ constructor(cryptoCore) {
10
+ this.cryptoCore = cryptoCore;
11
+ }
12
+ /**
13
+ * Signs arbitrary binary data with the given private key.
14
+ * @param privateKey The private key to sign the message with.
15
+ * @param data The data to sign.
16
+ * @returns The signature (64 bytes: r + s).
17
+ */
18
+ signMessage(privateKey, data) {
19
+ const hash = sha256(data);
20
+ const signature = secp256k1.sign(hash, privateKey, {
21
+ format: 'compact',
22
+ extraEntropy: false,
23
+ });
24
+ return Buffer.from(signature);
25
+ }
26
+ /**
27
+ * Verifies arbitrary binary data with the given public key.
28
+ * @param publicKey The public key to verify the message with.
29
+ * @param data The data to verify.
30
+ * @param signature The signature to verify (64 bytes: r + s).
31
+ * @returns True if the signature is valid, false otherwise.
32
+ */
33
+ verifyMessage(publicKey, data, signature) {
34
+ if (signature.length !== 64) {
35
+ throw new ECIESError(ECIESErrorTypeEnum.InvalidSignature, getEciesI18nEngine());
36
+ }
37
+ // Normalize and validate the public key
38
+ try {
39
+ publicKey = this.cryptoCore.normalizePublicKey(publicKey);
40
+ }
41
+ catch {
42
+ throw new ECIESError(ECIESErrorTypeEnum.InvalidSenderPublicKey, getEciesI18nEngine());
43
+ }
44
+ const hash = sha256(data);
45
+ return secp256k1.verify(signature, hash, publicKey);
46
+ }
47
+ /**
48
+ * Converts a signature string to a signature buffer.
49
+ * @param signatureString - The signature string to convert.
50
+ * @returns The signature buffer.
51
+ */
52
+ signatureStringToSignatureBuffer(signatureString) {
53
+ return Buffer.from(signatureString, 'hex');
54
+ }
55
+ /**
56
+ * Converts a signature buffer to a signature string.
57
+ * @param signatureBuffer - The signature buffer to convert.
58
+ * @returns The signature string.
59
+ */
60
+ signatureBufferToSignatureString(signatureBuffer) {
61
+ return signatureBuffer.toString('hex');
62
+ }
63
+ }
64
+ //# sourceMappingURL=signature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature.js","sourceRoot":"","sources":["../../../src/services/ecies/signature.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,kBAAkB,GAEnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAI/C;;GAEG;AACH,MAAM,OAAO,cAAc;IACR,UAAU,CAAkB;IAE7C,YAAY,UAA2B;QACrC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;;;;OAKG;IACI,WAAW,CAAC,UAAkB,EAAE,IAAY;QACjD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE;YACjD,MAAM,EAAE,SAAS;YACjB,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAoB,CAAC;IACnD,CAAC;IAED;;;;;;OAMG;IACI,aAAa,CAClB,SAAiB,EACjB,IAAY,EACZ,SAA0B;QAE1B,IAAI,SAAS,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,UAAU,CAClB,kBAAkB,CAAC,gBAAgB,EACnC,kBAAkB,EAAE,CACrB,CAAC;QACJ,CAAC;QAED,wCAAwC;QACxC,IAAI,CAAC;YACH,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC5D,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,UAAU,CAClB,kBAAkB,CAAC,sBAAsB,EACzC,kBAAkB,EAAE,CACrB,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1B,OAAO,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IACtD,CAAC;IAED;;;;OAIG;IACI,gCAAgC,CACrC,eAA0B;QAE1B,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAoB,CAAC;IAChE,CAAC;IAED;;;;OAIG;IACI,gCAAgC,CACrC,eAAgC;QAEhC,OAAO,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAoB,CAAC;IAC5D,CAAC;CACF"}
@@ -0,0 +1,85 @@
1
+ import { EciesEncryptionType, EciesEncryptionTypeEnum, EciesStringKey, IECIESConfig } from '@digitaldefiance/ecies-lib';
2
+ import { I18nEngine, Language } from '@digitaldefiance/i18n-lib';
3
+ import { ISingleEncryptedParsedHeader } from '../../interfaces/single-encrypted-parsed-header';
4
+ import { EciesCryptoCore } from './crypto-core';
5
+ export declare class EciesSingleRecipientCore {
6
+ protected readonly cryptoCore: EciesCryptoCore;
7
+ protected readonly config: IECIESConfig;
8
+ protected readonly engine: I18nEngine<EciesStringKey, Language, any, any>;
9
+ constructor(config: IECIESConfig, engine: I18nEngine<EciesStringKey, Language, any, any>);
10
+ /**
11
+ * Get the size of the header for a given encryption type
12
+ * @param encryptionType The encryption type (single, simple, etc.)
13
+ * @returns
14
+ */
15
+ getHeaderSize(encryptionType: EciesEncryptionType): number;
16
+ /**
17
+ * Encrypt a message with a public key
18
+ * @param encryptSimple Whether to simple encrypt (without crc, length)
19
+ * @param receiverPublicKey The public key of the receiver
20
+ * @param message The message to encrypt
21
+ * @param preamble Optional preamble to prepend to the encrypted message
22
+ * @param options Optional encryption options
23
+ * @param options.recipientCount The number of recipients for multiple encryption mode
24
+ * @returns The encrypted message
25
+ */
26
+ encrypt(encryptSimple: boolean, receiverPublicKey: Buffer, message: Buffer, preamble?: Buffer): Buffer;
27
+ /**
28
+ * Parse the header from encrypted data
29
+ * @param encryptionType The type of encryption (single, simple, etc.) or undefined if not known
30
+ * @param data The encrypted data
31
+ * @param preambleSize The size of the preamble, if any
32
+ * @param options Optional parsing options
33
+ * @param options.dataLength The expected length of the data
34
+ * @returns The parsed header components
35
+ */
36
+ parseEncryptedMessage(encryptionType: EciesEncryptionTypeEnum | undefined, data: Buffer, preambleSize?: number, options?: {
37
+ dataLength?: number;
38
+ }): {
39
+ header: ISingleEncryptedParsedHeader;
40
+ data: Buffer;
41
+ remainder: Buffer;
42
+ };
43
+ /**
44
+ * Decrypts data encrypted with ECIES using a header
45
+ * This method maintains backward compatibility with the original implementation
46
+ * by returning just the Buffer. For detailed information, use decryptSingleWithHeaderEx
47
+ * @param encryptionType The type of encryption (single, simple, etc.)
48
+ * @param privateKey The private key to decrypt the data
49
+ * @param encryptedData The data to decrypt
50
+ * @param preambleSize The size of the preamble, if any
51
+ * @param options Optional decryption options
52
+ * @param options.dataLength The expected length of the data
53
+ * @returns The decrypted data buffer
54
+ */
55
+ decryptWithHeader(encryptionType: EciesEncryptionTypeEnum | undefined, privateKey: Buffer, encryptedData: Buffer, preambleSize?: number, options?: {
56
+ dataLength?: number;
57
+ }): Buffer;
58
+ /**
59
+ * Extended version of decryptSingleWithHeader that provides more detailed information
60
+ * @param encryptionType The type of encryption (single, simple, etc.)
61
+ * @param privateKey The private key to decrypt the data
62
+ * @param encryptedData The data to decrypt
63
+ * @param preambleSize The size of the preamble, if any
64
+ * @param options Optional decryption options
65
+ * @param options.dataLength The expected length of the data
66
+ * @returns The decrypted data and the number of bytes consumed from the input buffer
67
+ */
68
+ decryptWithHeaderEx(encryptionType: EciesEncryptionTypeEnum | undefined, privateKey: Buffer, encryptedData: Buffer, preambleSize?: number, options?: {
69
+ dataLength?: number;
70
+ }): {
71
+ decrypted: Buffer;
72
+ consumedBytes: number;
73
+ };
74
+ /**
75
+ * Decrypts data encrypted with ECIES using components
76
+ * @param privateKey The private key to decrypt the data
77
+ * @param ephemeralPublicKey The ephemeral public key used to encrypt the data
78
+ * @param iv The initialization vector used to encrypt the data
79
+ * @param authTag The authentication tag used to encrypt the data
80
+ * @param encrypted The encrypted data
81
+ * @returns The decrypted data
82
+ */
83
+ decryptWithComponents(privateKey: Buffer, ephemeralPublicKey: Buffer, iv: Buffer, authTag: Buffer, encrypted: Buffer): Buffer;
84
+ }
85
+ //# sourceMappingURL=single-recipient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"single-recipient.d.ts","sourceRoot":"","sources":["../../../src/services/ecies/single-recipient.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,mBAAmB,EACnB,uBAAuB,EAIvB,cAAc,EAId,YAAY,EAGb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AASjE,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AAC/F,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,qBAAa,wBAAwB;IACnC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IAC/C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IACxC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,cAAc,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBAGxE,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,UAAU,CAAC,cAAc,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC;IAOxD;;;;OAIG;IACI,aAAa,CAAC,cAAc,EAAE,mBAAmB,GAAG,MAAM;IAcjE;;;;;;;;;OASG;IACI,OAAO,CACZ,aAAa,EAAE,OAAO,EACtB,iBAAiB,EAAE,MAAM,EACzB,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAwB,GACjC,MAAM;IAyHT;;;;;;;;OAQG;IACI,qBAAqB,CAC1B,cAAc,EAAE,uBAAuB,GAAG,SAAS,EACnD,IAAI,EAAE,MAAM,EACZ,YAAY,GAAE,MAAU,EACxB,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GACA;QAAE,MAAM,EAAE,4BAA4B,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IAqM5E;;;;;;;;;;;OAWG;IACI,iBAAiB,CACtB,cAAc,EAAE,uBAAuB,GAAG,SAAS,EACnD,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,YAAY,GAAE,MAAU,EACxB,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GACA,MAAM;IAmDT;;;;;;;;;OASG;IACI,mBAAmB,CACxB,cAAc,EAAE,uBAAuB,GAAG,SAAS,EACnD,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,YAAY,GAAE,MAAU,EACxB,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GACA;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE;IA2C/C;;;;;;;;OAQG;IACI,qBAAqB,CAC1B,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,MAAM,EAC1B,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,MAAM;CAqHV"}