@digitaldefiance/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 (267) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +237 -0
  3. package/dist/backup-code-string.d.ts +26 -0
  4. package/dist/backup-code-string.d.ts.map +1 -0
  5. package/dist/backup-code-string.js +69 -0
  6. package/dist/backup-code-string.js.map +1 -0
  7. package/dist/constants.d.ts +22 -0
  8. package/dist/constants.d.ts.map +1 -0
  9. package/dist/constants.js +177 -0
  10. package/dist/constants.js.map +1 -0
  11. package/dist/email-string.d.ts +42 -0
  12. package/dist/email-string.d.ts.map +1 -0
  13. package/dist/email-string.js +67 -0
  14. package/dist/email-string.js.map +1 -0
  15. package/dist/enumerations/ecies-encryption-type.d.ts +15 -0
  16. package/dist/enumerations/ecies-encryption-type.d.ts.map +1 -0
  17. package/dist/enumerations/ecies-encryption-type.js +63 -0
  18. package/dist/enumerations/ecies-encryption-type.js.map +1 -0
  19. package/dist/enumerations/ecies-error-type.d.ts +32 -0
  20. package/dist/enumerations/ecies-error-type.d.ts.map +1 -0
  21. package/dist/enumerations/ecies-error-type.js +33 -0
  22. package/dist/enumerations/ecies-error-type.js.map +1 -0
  23. package/dist/enumerations/guid-brand-type.d.ts +27 -0
  24. package/dist/enumerations/guid-brand-type.d.ts.map +1 -0
  25. package/dist/enumerations/guid-brand-type.js +28 -0
  26. package/dist/enumerations/guid-brand-type.js.map +1 -0
  27. package/dist/enumerations/guid-error-type.d.ts +7 -0
  28. package/dist/enumerations/guid-error-type.d.ts.map +1 -0
  29. package/dist/enumerations/guid-error-type.js +8 -0
  30. package/dist/enumerations/guid-error-type.js.map +1 -0
  31. package/dist/enumerations/index.d.ts +13 -0
  32. package/dist/enumerations/index.d.ts.map +1 -0
  33. package/dist/enumerations/index.js +13 -0
  34. package/dist/enumerations/index.js.map +1 -0
  35. package/dist/enumerations/invalid-email-type.d.ts +6 -0
  36. package/dist/enumerations/invalid-email-type.d.ts.map +1 -0
  37. package/dist/enumerations/invalid-email-type.js +7 -0
  38. package/dist/enumerations/invalid-email-type.js.map +1 -0
  39. package/dist/enumerations/length-encoding-type.d.ts +7 -0
  40. package/dist/enumerations/length-encoding-type.d.ts.map +1 -0
  41. package/dist/enumerations/length-encoding-type.js +8 -0
  42. package/dist/enumerations/length-encoding-type.js.map +1 -0
  43. package/dist/enumerations/length-error-type.d.ts +6 -0
  44. package/dist/enumerations/length-error-type.d.ts.map +1 -0
  45. package/dist/enumerations/length-error-type.js +7 -0
  46. package/dist/enumerations/length-error-type.js.map +1 -0
  47. package/dist/enumerations/member-error-type.d.ts +87 -0
  48. package/dist/enumerations/member-error-type.d.ts.map +1 -0
  49. package/dist/enumerations/member-error-type.js +88 -0
  50. package/dist/enumerations/member-error-type.js.map +1 -0
  51. package/dist/enumerations/member-type.d.ts +16 -0
  52. package/dist/enumerations/member-type.d.ts.map +1 -0
  53. package/dist/enumerations/member-type.js +17 -0
  54. package/dist/enumerations/member-type.js.map +1 -0
  55. package/dist/enumerations/pbkdf2-error-type.d.ts +5 -0
  56. package/dist/enumerations/pbkdf2-error-type.d.ts.map +1 -0
  57. package/dist/enumerations/pbkdf2-error-type.js +6 -0
  58. package/dist/enumerations/pbkdf2-error-type.js.map +1 -0
  59. package/dist/enumerations/pbkdf2-profile.d.ts +5 -0
  60. package/dist/enumerations/pbkdf2-profile.d.ts.map +1 -0
  61. package/dist/enumerations/pbkdf2-profile.js +6 -0
  62. package/dist/enumerations/pbkdf2-profile.js.map +1 -0
  63. package/dist/enumerations/secure-storage-error-type.d.ts +6 -0
  64. package/dist/enumerations/secure-storage-error-type.d.ts.map +1 -0
  65. package/dist/enumerations/secure-storage-error-type.js +7 -0
  66. package/dist/enumerations/secure-storage-error-type.js.map +1 -0
  67. package/dist/errors/disposed.d.ts +4 -0
  68. package/dist/errors/disposed.d.ts.map +1 -0
  69. package/dist/errors/disposed.js +8 -0
  70. package/dist/errors/disposed.js.map +1 -0
  71. package/dist/errors/ecies.d.ts +6 -0
  72. package/dist/errors/ecies.d.ts.map +1 -0
  73. package/dist/errors/ecies.js +8 -0
  74. package/dist/errors/ecies.js.map +1 -0
  75. package/dist/errors/guid.d.ts +14 -0
  76. package/dist/errors/guid.d.ts.map +1 -0
  77. package/dist/errors/guid.js +19 -0
  78. package/dist/errors/guid.js.map +1 -0
  79. package/dist/errors/index.d.ts +9 -0
  80. package/dist/errors/index.d.ts.map +1 -0
  81. package/dist/errors/index.js +9 -0
  82. package/dist/errors/index.js.map +1 -0
  83. package/dist/errors/invalid-backup-code.d.ts +4 -0
  84. package/dist/errors/invalid-backup-code.d.ts.map +1 -0
  85. package/dist/errors/invalid-backup-code.js +7 -0
  86. package/dist/errors/invalid-backup-code.js.map +1 -0
  87. package/dist/errors/invalid-email.d.ts +6 -0
  88. package/dist/errors/invalid-email.d.ts.map +1 -0
  89. package/dist/errors/invalid-email.js +9 -0
  90. package/dist/errors/invalid-email.js.map +1 -0
  91. package/dist/errors/length.d.ts +6 -0
  92. package/dist/errors/length.d.ts.map +1 -0
  93. package/dist/errors/length.js +9 -0
  94. package/dist/errors/length.js.map +1 -0
  95. package/dist/errors/member.d.ts +6 -0
  96. package/dist/errors/member.d.ts.map +1 -0
  97. package/dist/errors/member.js +8 -0
  98. package/dist/errors/member.js.map +1 -0
  99. package/dist/errors/pbkdf2.d.ts +6 -0
  100. package/dist/errors/pbkdf2.d.ts.map +1 -0
  101. package/dist/errors/pbkdf2.js +8 -0
  102. package/dist/errors/pbkdf2.js.map +1 -0
  103. package/dist/errors/secure-storage.d.ts +6 -0
  104. package/dist/errors/secure-storage.d.ts.map +1 -0
  105. package/dist/errors/secure-storage.js +8 -0
  106. package/dist/errors/secure-storage.js.map +1 -0
  107. package/dist/errors/typed.d.ts +5 -0
  108. package/dist/errors/typed.d.ts.map +1 -0
  109. package/dist/errors/typed.js +11 -0
  110. package/dist/errors/typed.js.map +1 -0
  111. package/dist/guid.d.ts +153 -0
  112. package/dist/guid.d.ts.map +1 -0
  113. package/dist/guid.js +604 -0
  114. package/dist/guid.js.map +1 -0
  115. package/dist/index.d.ts +13 -0
  116. package/dist/index.d.ts.map +1 -0
  117. package/dist/index.js +13 -0
  118. package/dist/index.js.map +1 -0
  119. package/dist/interfaces/backup-code-consts.d.ts +16 -0
  120. package/dist/interfaces/backup-code-consts.d.ts.map +1 -0
  121. package/dist/interfaces/backup-code-consts.js +2 -0
  122. package/dist/interfaces/backup-code-consts.js.map +1 -0
  123. package/dist/interfaces/backup-code.d.ts +7 -0
  124. package/dist/interfaces/backup-code.d.ts.map +1 -0
  125. package/dist/interfaces/backup-code.js +2 -0
  126. package/dist/interfaces/backup-code.js.map +1 -0
  127. package/dist/interfaces/constants.d.ts +45 -0
  128. package/dist/interfaces/constants.d.ts.map +1 -0
  129. package/dist/interfaces/constants.js +2 -0
  130. package/dist/interfaces/constants.js.map +1 -0
  131. package/dist/interfaces/ecies-config.d.ts +9 -0
  132. package/dist/interfaces/ecies-config.d.ts.map +1 -0
  133. package/dist/interfaces/ecies-config.js +2 -0
  134. package/dist/interfaces/ecies-config.js.map +1 -0
  135. package/dist/interfaces/ecies-consts.d.ts +58 -0
  136. package/dist/interfaces/ecies-consts.d.ts.map +1 -0
  137. package/dist/interfaces/ecies-consts.js +2 -0
  138. package/dist/interfaces/ecies-consts.js.map +1 -0
  139. package/dist/interfaces/ecies-file-service.d.ts +7 -0
  140. package/dist/interfaces/ecies-file-service.d.ts.map +1 -0
  141. package/dist/interfaces/ecies-file-service.js +2 -0
  142. package/dist/interfaces/ecies-file-service.js.map +1 -0
  143. package/dist/interfaces/guid.d.ts +45 -0
  144. package/dist/interfaces/guid.d.ts.map +1 -0
  145. package/dist/interfaces/guid.js +2 -0
  146. package/dist/interfaces/guid.js.map +1 -0
  147. package/dist/interfaces/index.d.ts +14 -0
  148. package/dist/interfaces/index.d.ts.map +1 -0
  149. package/dist/interfaces/index.js +14 -0
  150. package/dist/interfaces/index.js.map +1 -0
  151. package/dist/interfaces/member-operational.d.ts +39 -0
  152. package/dist/interfaces/member-operational.d.ts.map +1 -0
  153. package/dist/interfaces/member-operational.js +2 -0
  154. package/dist/interfaces/member-operational.js.map +1 -0
  155. package/dist/interfaces/member-storage.d.ts +21 -0
  156. package/dist/interfaces/member-storage.d.ts.map +1 -0
  157. package/dist/interfaces/member-storage.js +2 -0
  158. package/dist/interfaces/member-storage.js.map +1 -0
  159. package/dist/interfaces/member-with-mnemonic.d.ts +7 -0
  160. package/dist/interfaces/member-with-mnemonic.d.ts.map +1 -0
  161. package/dist/interfaces/member-with-mnemonic.js +2 -0
  162. package/dist/interfaces/member-with-mnemonic.js.map +1 -0
  163. package/dist/interfaces/pbkdf2-config.d.ts +7 -0
  164. package/dist/interfaces/pbkdf2-config.d.ts.map +1 -0
  165. package/dist/interfaces/pbkdf2-config.js +2 -0
  166. package/dist/interfaces/pbkdf2-config.js.map +1 -0
  167. package/dist/interfaces/pbkdf2-consts.d.ts +9 -0
  168. package/dist/interfaces/pbkdf2-consts.d.ts.map +1 -0
  169. package/dist/interfaces/pbkdf2-consts.js +2 -0
  170. package/dist/interfaces/pbkdf2-consts.js.map +1 -0
  171. package/dist/interfaces/pbkdf2-result.d.ts +6 -0
  172. package/dist/interfaces/pbkdf2-result.d.ts.map +1 -0
  173. package/dist/interfaces/pbkdf2-result.js +2 -0
  174. package/dist/interfaces/pbkdf2-result.js.map +1 -0
  175. package/dist/member.d.ts +68 -0
  176. package/dist/member.d.ts.map +1 -0
  177. package/dist/member.js +256 -0
  178. package/dist/member.js.map +1 -0
  179. package/dist/pbkdf2-profiles.d.ts +6 -0
  180. package/dist/pbkdf2-profiles.d.ts.map +1 -0
  181. package/dist/pbkdf2-profiles.js +2 -0
  182. package/dist/pbkdf2-profiles.js.map +1 -0
  183. package/dist/secure-buffer.d.ts +38 -0
  184. package/dist/secure-buffer.d.ts.map +1 -0
  185. package/dist/secure-buffer.js +161 -0
  186. package/dist/secure-buffer.js.map +1 -0
  187. package/dist/secure-string.d.ts +39 -0
  188. package/dist/secure-string.d.ts.map +1 -0
  189. package/dist/secure-string.js +188 -0
  190. package/dist/secure-string.js.map +1 -0
  191. package/dist/services/aes-gcm.d.ts +56 -0
  192. package/dist/services/aes-gcm.d.ts.map +1 -0
  193. package/dist/services/aes-gcm.js +101 -0
  194. package/dist/services/aes-gcm.js.map +1 -0
  195. package/dist/services/ecies/crypto-core.d.ts +53 -0
  196. package/dist/services/ecies/crypto-core.d.ts.map +1 -0
  197. package/dist/services/ecies/crypto-core.js +158 -0
  198. package/dist/services/ecies/crypto-core.js.map +1 -0
  199. package/dist/services/ecies/example.d.ts +25 -0
  200. package/dist/services/ecies/example.d.ts.map +1 -0
  201. package/dist/services/ecies/example.js +121 -0
  202. package/dist/services/ecies/example.js.map +1 -0
  203. package/dist/services/ecies/file.d.ts +18 -0
  204. package/dist/services/ecies/file.d.ts.map +1 -0
  205. package/dist/services/ecies/file.js +106 -0
  206. package/dist/services/ecies/file.js.map +1 -0
  207. package/dist/services/ecies/index.d.ts +38 -0
  208. package/dist/services/ecies/index.d.ts.map +1 -0
  209. package/dist/services/ecies/index.js +39 -0
  210. package/dist/services/ecies/index.js.map +1 -0
  211. package/dist/services/ecies/integration.d.ts +59 -0
  212. package/dist/services/ecies/integration.d.ts.map +1 -0
  213. package/dist/services/ecies/integration.js +163 -0
  214. package/dist/services/ecies/integration.js.map +1 -0
  215. package/dist/services/ecies/interfaces.d.ts +51 -0
  216. package/dist/services/ecies/interfaces.d.ts.map +1 -0
  217. package/dist/services/ecies/interfaces.js +5 -0
  218. package/dist/services/ecies/interfaces.js.map +1 -0
  219. package/dist/services/ecies/manual-test.d.ts +29 -0
  220. package/dist/services/ecies/manual-test.d.ts.map +1 -0
  221. package/dist/services/ecies/manual-test.js +163 -0
  222. package/dist/services/ecies/manual-test.js.map +1 -0
  223. package/dist/services/ecies/multi-recipient.d.ts +49 -0
  224. package/dist/services/ecies/multi-recipient.d.ts.map +1 -0
  225. package/dist/services/ecies/multi-recipient.js +222 -0
  226. package/dist/services/ecies/multi-recipient.js.map +1 -0
  227. package/dist/services/ecies/service.d.ts +100 -0
  228. package/dist/services/ecies/service.d.ts.map +1 -0
  229. package/dist/services/ecies/service.js +186 -0
  230. package/dist/services/ecies/service.js.map +1 -0
  231. package/dist/services/ecies/signature.d.ts +27 -0
  232. package/dist/services/ecies/signature.d.ts.map +1 -0
  233. package/dist/services/ecies/signature.js +72 -0
  234. package/dist/services/ecies/signature.js.map +1 -0
  235. package/dist/services/ecies/single-recipient.d.ts +43 -0
  236. package/dist/services/ecies/single-recipient.d.ts.map +1 -0
  237. package/dist/services/ecies/single-recipient.js +196 -0
  238. package/dist/services/ecies/single-recipient.js.map +1 -0
  239. package/dist/services/index.d.ts +5 -0
  240. package/dist/services/index.d.ts.map +1 -0
  241. package/dist/services/index.js +5 -0
  242. package/dist/services/index.js.map +1 -0
  243. package/dist/services/password-login.d.ts +41 -0
  244. package/dist/services/password-login.d.ts.map +1 -0
  245. package/dist/services/password-login.js +96 -0
  246. package/dist/services/password-login.js.map +1 -0
  247. package/dist/services/pbkdf2.d.ts +49 -0
  248. package/dist/services/pbkdf2.d.ts.map +1 -0
  249. package/dist/services/pbkdf2.js +97 -0
  250. package/dist/services/pbkdf2.js.map +1 -0
  251. package/dist/services/xor.d.ts +37 -0
  252. package/dist/services/xor.d.ts.map +1 -0
  253. package/dist/services/xor.js +63 -0
  254. package/dist/services/xor.js.map +1 -0
  255. package/dist/types.d.ts +29 -0
  256. package/dist/types.d.ts.map +1 -0
  257. package/dist/types.js +2 -0
  258. package/dist/types.js.map +1 -0
  259. package/dist/utils.d.ts +62 -0
  260. package/dist/utils.d.ts.map +1 -0
  261. package/dist/utils.js +244 -0
  262. package/dist/utils.js.map +1 -0
  263. package/dist/xor.d.ts +37 -0
  264. package/dist/xor.d.ts.map +1 -0
  265. package/dist/xor.js +63 -0
  266. package/dist/xor.js.map +1 -0
  267. package/package.json +60 -0
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Example usage of the browser-compatible ECIES service
3
+ * This file demonstrates how to use the web-based ECIES implementation
4
+ */
5
+ import { SecureString } from '../../secure-string';
6
+ import { stringToUint8Array, uint8ArrayToHex, uint8ArrayToString, } from '../../utils';
7
+ import { ECIESService } from './service';
8
+ // https://docs.rs/bip39/latest/src/bip39/lib.rs.html
9
+ /**
10
+ * Example: Basic encryption and decryption
11
+ */
12
+ export async function basicEncryptionExample() {
13
+ console.log('=== Basic ECIES Encryption Example ===');
14
+ // Create ECIES service instance
15
+ const ecies = new ECIESService();
16
+ // Generate a mnemonic and derive keys
17
+ const mnemonic = ecies.generateNewMnemonic();
18
+ console.log('Generated mnemonic:', mnemonic);
19
+ const { privateKey, publicKey } = ecies.mnemonicToSimpleKeyPair(mnemonic);
20
+ console.log('Private key:', uint8ArrayToHex(privateKey));
21
+ console.log('Public key:', uint8ArrayToHex(publicKey));
22
+ // Message to encrypt
23
+ const message = stringToUint8Array('Hello, Digital Defiance!');
24
+ console.log('Original message:', uint8ArrayToString(message));
25
+ // Encrypt using single mode (with CRC and length)
26
+ const encrypted = await ecies.encryptSimpleOrSingle(false, publicKey, message);
27
+ console.log('Encrypted data length:', encrypted.length);
28
+ console.log('Encrypted data (hex):', uint8ArrayToHex(encrypted));
29
+ // Decrypt the message
30
+ const decrypted = await ecies.decryptSimpleOrSingleWithHeader(false, privateKey, encrypted);
31
+ console.log('Decrypted message:', uint8ArrayToString(decrypted));
32
+ // Verify the message matches
33
+ const matches = uint8ArrayToString(message) === uint8ArrayToString(decrypted);
34
+ console.log('Encryption/Decryption successful:', matches);
35
+ }
36
+ /**
37
+ * Example: Simple mode encryption (without CRC)
38
+ */
39
+ export async function simpleEncryptionExample() {
40
+ console.log('\n=== Simple ECIES Encryption Example ===');
41
+ const ecies = new ECIESService();
42
+ // Generate keys for sender and receiver
43
+ const senderMnemonic = ecies.generateNewMnemonic();
44
+ const receiverMnemonic = ecies.generateNewMnemonic();
45
+ const senderKeys = ecies.mnemonicToSimpleKeyPair(senderMnemonic);
46
+ const receiverKeys = ecies.mnemonicToSimpleKeyPair(receiverMnemonic);
47
+ console.log('Sender public key:', uint8ArrayToHex(senderKeys.publicKey));
48
+ console.log('Receiver public key:', uint8ArrayToHex(receiverKeys.publicKey));
49
+ // Message to encrypt
50
+ const message = stringToUint8Array('This is a simple encrypted message');
51
+ console.log('Original message:', uint8ArrayToString(message));
52
+ // Encrypt using simple mode (no CRC, no length prefix)
53
+ const encrypted = await ecies.encryptSimpleOrSingle(true, receiverKeys.publicKey, message);
54
+ console.log('Encrypted data length:', encrypted.length);
55
+ // Decrypt the message
56
+ const decrypted = await ecies.decryptSimpleOrSingleWithHeader(true, receiverKeys.privateKey, encrypted);
57
+ console.log('Decrypted message:', uint8ArrayToString(decrypted));
58
+ // Verify the message matches
59
+ const matches = uint8ArrayToString(message) === uint8ArrayToString(decrypted);
60
+ console.log('Simple encryption/decryption successful:', matches);
61
+ }
62
+ /**
63
+ * Example: Digital signature
64
+ */
65
+ export async function signatureExample() {
66
+ console.log('\n=== Digital Signature Example ===');
67
+ const ecies = new ECIESService();
68
+ // Generate keys
69
+ const mnemonic = ecies.generateNewMnemonic();
70
+ const { privateKey, publicKey } = ecies.mnemonicToSimpleKeyPair(mnemonic);
71
+ // Message to sign
72
+ const message = stringToUint8Array('This message is digitally signed');
73
+ console.log('Message to sign:', uint8ArrayToString(message));
74
+ // Sign the message
75
+ const signature = ecies.signMessage(privateKey, message);
76
+ console.log('Signature:', uint8ArrayToHex(signature));
77
+ // Verify the signature
78
+ const isValid = ecies.verifyMessage(publicKey, message, signature);
79
+ console.log('Signature valid:', isValid);
80
+ // Test with tampered message
81
+ const tamperedMessage = stringToUint8Array('This message has been tampered with');
82
+ const isTamperedValid = ecies.verifyMessage(publicKey, tamperedMessage, signature);
83
+ console.log('Tampered message signature valid:', isTamperedValid);
84
+ }
85
+ /**
86
+ * Example: Wallet derivation from mnemonic
87
+ */
88
+ export async function walletDerivationExample() {
89
+ console.log('\n=== Wallet Derivation Example ===');
90
+ const ecies = new ECIESService();
91
+ // Use a known mnemonic for reproducible results
92
+ const mnemonic = new SecureString('abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about');
93
+ console.log('Test mnemonic:', mnemonic);
94
+ // Derive wallet
95
+ const { wallet, seed } = ecies.walletAndSeedFromMnemonic(mnemonic);
96
+ console.log('Seed:', uint8ArrayToHex(seed));
97
+ console.log('Private key:', uint8ArrayToHex(wallet.getPrivateKey()));
98
+ console.log('Public key:', uint8ArrayToHex(wallet.getPublicKey()));
99
+ // Derive the same keys using the simple method
100
+ const simpleKeys = ecies.mnemonicToSimpleKeyPair(mnemonic);
101
+ console.log('Simple private key matches:', uint8ArrayToHex(wallet.getPrivateKey()) ===
102
+ uint8ArrayToHex(simpleKeys.privateKey));
103
+ console.log('Simple public key matches:', uint8ArrayToHex(wallet.getPublicKey()) ===
104
+ uint8ArrayToHex(simpleKeys.publicKey));
105
+ }
106
+ /**
107
+ * Run all examples
108
+ */
109
+ export async function runAllExamples() {
110
+ try {
111
+ await basicEncryptionExample();
112
+ await simpleEncryptionExample();
113
+ await signatureExample();
114
+ await walletDerivationExample();
115
+ console.log('\n=== All examples completed successfully! ===');
116
+ }
117
+ catch (error) {
118
+ console.error('Example failed:', error);
119
+ }
120
+ }
121
+ //# sourceMappingURL=example.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example.js","sourceRoot":"","sources":["../../../src/services/ecies/example.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { IEciesFileService } from '../../interfaces/ecies-file-service';
2
+ import { ECIESService } from './service';
3
+ export declare class EciesFileService implements IEciesFileService {
4
+ private eciesService;
5
+ private userPrivateKey;
6
+ private static readonly CHUNK_SIZE;
7
+ private static readonly HEADER_SIZE;
8
+ constructor(eciesService: ECIESService, userPrivateKey: Uint8Array);
9
+ encryptFile(file: File, recipientPublicKey: Uint8Array): Promise<Uint8Array>;
10
+ decryptFile(encryptedData: Uint8Array): Promise<Uint8Array>;
11
+ downloadEncryptedFile(encryptedData: Uint8Array, filename: string): void;
12
+ downloadDecryptedFile(decryptedData: Uint8Array, filename: string): void;
13
+ private serializeHeader;
14
+ private deserializeHeader;
15
+ private parseEncryptedFile;
16
+ private downloadFile;
17
+ }
18
+ //# sourceMappingURL=file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../src/services/ecies/file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AASzC,qBAAa,gBAAiB,YAAW,iBAAiB;IAKtD,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,cAAc;IALxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAe;IACjD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAM;gBAG/B,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,UAAU;IAG9B,WAAW,CACf,IAAI,EAAE,IAAI,EACV,kBAAkB,EAAE,UAAU,GAC7B,OAAO,CAAC,UAAU,CAAC;IAwChB,WAAW,CAAC,aAAa,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAuBjE,qBAAqB,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIxE,qBAAqB,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIxE,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,iBAAiB;YAcX,kBAAkB;IAsChC,OAAO,CAAC,YAAY;CAWrB"}
@@ -0,0 +1,106 @@
1
+ export class EciesFileService {
2
+ eciesService;
3
+ userPrivateKey;
4
+ static CHUNK_SIZE = 1024 * 1024; // 1MB chunks
5
+ static HEADER_SIZE = 20; // 4 bytes each: version, chunkSize, totalChunks, originalSize, padding
6
+ constructor(eciesService, userPrivateKey) {
7
+ this.eciesService = eciesService;
8
+ this.userPrivateKey = userPrivateKey;
9
+ }
10
+ async encryptFile(file, recipientPublicKey) {
11
+ const totalChunks = Math.ceil(file.size / EciesFileService.CHUNK_SIZE);
12
+ const header = {
13
+ version: 1,
14
+ chunkSize: EciesFileService.CHUNK_SIZE,
15
+ totalChunks,
16
+ originalSize: file.size,
17
+ };
18
+ const headerBytes = this.serializeHeader(header);
19
+ const encryptedHeader = await this.eciesService.encryptSimpleOrSingle(false, recipientPublicKey, headerBytes);
20
+ const chunks = [encryptedHeader];
21
+ for (let i = 0; i < totalChunks; i++) {
22
+ const offset = i * EciesFileService.CHUNK_SIZE;
23
+ const chunk = file.slice(offset, offset + EciesFileService.CHUNK_SIZE);
24
+ const chunkData = new Uint8Array(await chunk.arrayBuffer());
25
+ const encryptedChunk = await this.eciesService.encryptSimpleOrSingle(false, recipientPublicKey, chunkData);
26
+ chunks.push(encryptedChunk);
27
+ }
28
+ const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
29
+ const result = new Uint8Array(totalLength);
30
+ let offset = 0;
31
+ for (const chunk of chunks) {
32
+ result.set(chunk, offset);
33
+ offset += chunk.length;
34
+ }
35
+ return result;
36
+ }
37
+ async decryptFile(encryptedData) {
38
+ const { header, chunks } = await this.parseEncryptedFile(encryptedData);
39
+ const decryptedChunks = [];
40
+ for (const chunk of chunks) {
41
+ const decrypted = await this.eciesService.decryptSimpleOrSingleWithHeader(false, this.userPrivateKey, chunk);
42
+ decryptedChunks.push(decrypted);
43
+ }
44
+ const result = new Uint8Array(header.originalSize);
45
+ let offset = 0;
46
+ for (const chunk of decryptedChunks) {
47
+ const copyLength = Math.min(chunk.length, header.originalSize - offset);
48
+ result.set(chunk.subarray(0, copyLength), offset);
49
+ offset += copyLength;
50
+ }
51
+ return result;
52
+ }
53
+ downloadEncryptedFile(encryptedData, filename) {
54
+ this.downloadFile(encryptedData, `${filename}.encrypted`);
55
+ }
56
+ downloadDecryptedFile(decryptedData, filename) {
57
+ this.downloadFile(decryptedData, filename);
58
+ }
59
+ serializeHeader(header) {
60
+ const buffer = new ArrayBuffer(EciesFileService.HEADER_SIZE);
61
+ const view = new DataView(buffer);
62
+ view.setUint32(0, header.version, false);
63
+ view.setUint32(4, header.chunkSize, false);
64
+ view.setUint32(8, header.totalChunks, false);
65
+ view.setUint32(12, header.originalSize, false);
66
+ return new Uint8Array(buffer);
67
+ }
68
+ deserializeHeader(data) {
69
+ const view = new DataView(data.buffer, data.byteOffset, EciesFileService.HEADER_SIZE);
70
+ return {
71
+ version: view.getUint32(0, false),
72
+ chunkSize: view.getUint32(4, false),
73
+ totalChunks: view.getUint32(8, false),
74
+ originalSize: view.getUint32(12, false),
75
+ };
76
+ }
77
+ async parseEncryptedFile(encryptedData) {
78
+ // First, decrypt the header to get metadata
79
+ const headerLength = this.eciesService.computeEncryptedLengthFromDataLength(EciesFileService.HEADER_SIZE, 'single');
80
+ const encryptedHeader = encryptedData.subarray(0, headerLength);
81
+ const decryptedHeaderBytes = await this.eciesService.decryptSimpleOrSingleWithHeader(false, this.userPrivateKey, encryptedHeader);
82
+ const header = this.deserializeHeader(decryptedHeaderBytes);
83
+ const chunks = [];
84
+ let offset = headerLength;
85
+ for (let i = 0; i < header.totalChunks; i++) {
86
+ const chunkLength = this.eciesService.computeEncryptedLengthFromDataLength(i === header.totalChunks - 1
87
+ ? header.originalSize % header.chunkSize || header.chunkSize
88
+ : header.chunkSize, 'single');
89
+ chunks.push(encryptedData.subarray(offset, offset + chunkLength));
90
+ offset += chunkLength;
91
+ }
92
+ return { header, chunks };
93
+ }
94
+ downloadFile(data, filename) {
95
+ const blob = new Blob([data.slice()]);
96
+ const url = URL.createObjectURL(blob);
97
+ const a = document.createElement('a');
98
+ a.href = url;
99
+ a.download = filename;
100
+ document.body.appendChild(a);
101
+ a.click();
102
+ document.body.removeChild(a);
103
+ URL.revokeObjectURL(url);
104
+ }
105
+ }
106
+ //# sourceMappingURL=file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../../src/services/ecies/file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Browser-compatible ECIES service exports
3
+ *
4
+ * This module provides a web-based implementation of the ECIES (Elliptic Curve Integrated Encryption Scheme)
5
+ * service that mirrors the functionality of the server-side implementation but uses browser-compatible libraries.
6
+ *
7
+ * Key features:
8
+ * - Mnemonic generation and wallet derivation using @scure/bip39 and @scure/bip32
9
+ * - ECDH key exchange using @noble/curves/secp256k1
10
+ * - AES-GCM encryption using Web Crypto API
11
+ * - ECDSA signatures using @noble/curves/secp256k1
12
+ * - Single and simple recipient encryption modes
13
+ * - CRC16 validation for data integrity
14
+ *
15
+ * Usage:
16
+ * ```typescript
17
+ * import { ECIESService } from './services/ecies';
18
+ *
19
+ * const ecies = new ECIESService();
20
+ * const mnemonic = ecies.generateNewMnemonic();
21
+ * const { privateKey, publicKey } = ecies.mnemonicToSimpleKeyPair(mnemonic);
22
+ *
23
+ * const message = new TextEncoder().encode('Hello, World!');
24
+ * const encrypted = await ecies.encryptSimpleOrSingle(false, publicKey, message);
25
+ * const decrypted = await ecies.decryptSimpleOrSingleWithHeader(false, privateKey, encrypted);
26
+ * ```
27
+ */
28
+ export * from './crypto-core';
29
+ export * from './example';
30
+ export * from './file';
31
+ export * from './integration';
32
+ export * from './interfaces';
33
+ export * from './multi-recipient';
34
+ export * from './service';
35
+ export * from './signature';
36
+ export * from './single-recipient';
37
+ export { ECIESService as default } from './service';
38
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/ecies/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AAGnC,OAAO,EAAE,YAAY,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Browser-compatible ECIES service exports
3
+ *
4
+ * This module provides a web-based implementation of the ECIES (Elliptic Curve Integrated Encryption Scheme)
5
+ * service that mirrors the functionality of the server-side implementation but uses browser-compatible libraries.
6
+ *
7
+ * Key features:
8
+ * - Mnemonic generation and wallet derivation using @scure/bip39 and @scure/bip32
9
+ * - ECDH key exchange using @noble/curves/secp256k1
10
+ * - AES-GCM encryption using Web Crypto API
11
+ * - ECDSA signatures using @noble/curves/secp256k1
12
+ * - Single and simple recipient encryption modes
13
+ * - CRC16 validation for data integrity
14
+ *
15
+ * Usage:
16
+ * ```typescript
17
+ * import { ECIESService } from './services/ecies';
18
+ *
19
+ * const ecies = new ECIESService();
20
+ * const mnemonic = ecies.generateNewMnemonic();
21
+ * const { privateKey, publicKey } = ecies.mnemonicToSimpleKeyPair(mnemonic);
22
+ *
23
+ * const message = new TextEncoder().encode('Hello, World!');
24
+ * const encrypted = await ecies.encryptSimpleOrSingle(false, publicKey, message);
25
+ * const decrypted = await ecies.decryptSimpleOrSingleWithHeader(false, privateKey, encrypted);
26
+ * ```
27
+ */
28
+ export * from './crypto-core';
29
+ export * from './example';
30
+ export * from './file';
31
+ export * from './integration';
32
+ export * from './interfaces';
33
+ export * from './multi-recipient';
34
+ export * from './service';
35
+ export * from './signature';
36
+ export * from './single-recipient';
37
+ // Main service export
38
+ export { ECIESService as default } from './service';
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/ecies/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AAEnC,sBAAsB;AACtB,OAAO,EAAE,YAAY,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Integration helpers for using the browser ECIES service with existing web-crypto functionality
3
+ */
4
+ import { SecureString } from '../../secure-string';
5
+ import { IWalletSeed } from './interfaces';
6
+ /**
7
+ * Enhanced web crypto service that uses the new ECIES implementation
8
+ */
9
+ export declare class EnhancedWebCryptoService {
10
+ private ecies;
11
+ constructor();
12
+ /**
13
+ * Derive wallet from mnemonic using the new ECIES service
14
+ * This replaces the existing walletFromMnemonic method with better browser compatibility
15
+ */
16
+ walletFromMnemonic(mnemonic: SecureString): Promise<IWalletSeed>;
17
+ /**
18
+ * Decrypt challenge using the new ECIES service
19
+ * This provides better compatibility and error handling than the original implementation
20
+ */
21
+ decryptChallenge(encryptedHex: string, privateKey: Uint8Array): Promise<Uint8Array>;
22
+ /**
23
+ * Encrypt data for a recipient
24
+ */
25
+ encryptForRecipient(recipientPublicKey: Uint8Array, data: Uint8Array, useSimpleMode?: boolean): Promise<string>;
26
+ /**
27
+ * Sign data with private key
28
+ */
29
+ signData(privateKey: Uint8Array, data: Uint8Array): string;
30
+ /**
31
+ * Verify signature
32
+ */
33
+ verifySignature(publicKey: Uint8Array, data: Uint8Array, signatureHex: string): boolean;
34
+ /**
35
+ * Generate new mnemonic
36
+ */
37
+ generateMnemonic(): SecureString;
38
+ /**
39
+ * Complete client-side challenge verification (enhanced version)
40
+ */
41
+ verifyChallengeResponse(encryptedChallenge: string, mnemonic: SecureString, systemPublicKeyHex: string): Promise<string>;
42
+ }
43
+ /**
44
+ * Migration helper to transition from old WebCryptoService to new ECIES service
45
+ */
46
+ export declare class MigrationHelper {
47
+ /**
48
+ * Test compatibility between old and new implementations
49
+ */
50
+ static testCompatibility(mnemonic: SecureString): Promise<{
51
+ compatible: boolean;
52
+ details: {
53
+ mnemonicValid: boolean;
54
+ keysMatch: boolean;
55
+ encryptionWorks: boolean;
56
+ };
57
+ }>;
58
+ }
59
+ //# sourceMappingURL=integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration.d.ts","sourceRoot":"","sources":["../../../src/services/ecies/integration.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAQnD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C;;GAEG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,KAAK,CAAe;;IAM5B;;;OAGG;IACU,kBAAkB,CAC7B,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC,WAAW,CAAC;IAQvB;;;OAGG;IACU,gBAAgB,CAC3B,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,UAAU,CAAC;IAwBtB;;OAEG;IACU,mBAAmB,CAC9B,kBAAkB,EAAE,UAAU,EAC9B,IAAI,EAAE,UAAU,EAChB,aAAa,GAAE,OAAe,GAC7B,OAAO,CAAC,MAAM,CAAC;IASlB;;OAEG;IACI,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM;IAKjE;;OAEG;IACI,eAAe,CACpB,SAAS,EAAE,UAAU,EACrB,IAAI,EAAE,UAAU,EAChB,YAAY,EAAE,MAAM,GACnB,OAAO;IAKV;;OAEG;IACI,gBAAgB,IAAI,YAAY;IAIvC;;OAEG;IACU,uBAAuB,CAClC,kBAAkB,EAAE,MAAM,EAC1B,QAAQ,EAAE,YAAY,EACtB,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC,MAAM,CAAC;CA8BnB;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B;;OAEG;WACiB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC;QACrE,UAAU,EAAE,OAAO,CAAC;QACpB,OAAO,EAAE;YACP,aAAa,EAAE,OAAO,CAAC;YACvB,SAAS,EAAE,OAAO,CAAC;YACnB,eAAe,EAAE,OAAO,CAAC;SAC1B,CAAC;KACH,CAAC;CAsEH"}
@@ -0,0 +1,163 @@
1
+ /**
2
+ * Integration helpers for using the browser ECIES service with existing web-crypto functionality
3
+ */
4
+ import { hexToUint8Array, stringToUint8Array, uint8ArrayToHex, uint8ArrayToString, } from '../../utils';
5
+ import { ECIESService } from './service';
6
+ /**
7
+ * Enhanced web crypto service that uses the new ECIES implementation
8
+ */
9
+ export class EnhancedWebCryptoService {
10
+ ecies;
11
+ constructor() {
12
+ this.ecies = new ECIESService();
13
+ }
14
+ /**
15
+ * Derive wallet from mnemonic using the new ECIES service
16
+ * This replaces the existing walletFromMnemonic method with better browser compatibility
17
+ */
18
+ async walletFromMnemonic(mnemonic) {
19
+ const { wallet, seed } = this.ecies.walletAndSeedFromMnemonic(mnemonic);
20
+ return {
21
+ wallet,
22
+ seed,
23
+ };
24
+ }
25
+ /**
26
+ * Decrypt challenge using the new ECIES service
27
+ * This provides better compatibility and error handling than the original implementation
28
+ */
29
+ async decryptChallenge(encryptedHex, privateKey) {
30
+ try {
31
+ const encryptedData = hexToUint8Array(encryptedHex);
32
+ // Try to decrypt using single mode first (most common)
33
+ try {
34
+ return await this.ecies.decryptSimpleOrSingleWithHeader(false, privateKey, encryptedData);
35
+ }
36
+ catch {
37
+ // Fallback to simple mode
38
+ return await this.ecies.decryptSimpleOrSingleWithHeader(true, privateKey, encryptedData);
39
+ }
40
+ }
41
+ catch (error) {
42
+ throw new Error(`Failed to decrypt challenge: ${error}`);
43
+ }
44
+ }
45
+ /**
46
+ * Encrypt data for a recipient
47
+ */
48
+ async encryptForRecipient(recipientPublicKey, data, useSimpleMode = false) {
49
+ const encrypted = await this.ecies.encryptSimpleOrSingle(!useSimpleMode, recipientPublicKey, data);
50
+ return uint8ArrayToHex(encrypted);
51
+ }
52
+ /**
53
+ * Sign data with private key
54
+ */
55
+ signData(privateKey, data) {
56
+ const signature = this.ecies.signMessage(privateKey, data);
57
+ return uint8ArrayToHex(signature);
58
+ }
59
+ /**
60
+ * Verify signature
61
+ */
62
+ verifySignature(publicKey, data, signatureHex) {
63
+ const signature = hexToUint8Array(signatureHex);
64
+ return this.ecies.verifyMessage(publicKey, data, signature);
65
+ }
66
+ /**
67
+ * Generate new mnemonic
68
+ */
69
+ generateMnemonic() {
70
+ return this.ecies.generateNewMnemonic();
71
+ }
72
+ /**
73
+ * Complete client-side challenge verification (enhanced version)
74
+ */
75
+ async verifyChallengeResponse(encryptedChallenge, mnemonic, systemPublicKeyHex) {
76
+ // Derive keys from mnemonic
77
+ const { wallet } = await this.walletFromMnemonic(mnemonic);
78
+ // Decrypt the challenge
79
+ const decryptedPayload = await this.decryptChallenge(encryptedChallenge, wallet.getPrivateKey());
80
+ // Extract nonce and signature (assuming 48 bytes payload + signature)
81
+ const payload = decryptedPayload.slice(0, 48);
82
+ const signature = decryptedPayload.slice(48);
83
+ // Convert system public key from hex
84
+ const systemPubKey = hexToUint8Array(systemPublicKeyHex);
85
+ // Verify system signature
86
+ const isValid = this.verifySignature(systemPubKey, payload, uint8ArrayToHex(signature));
87
+ if (!isValid) {
88
+ throw new Error('Invalid challenge signature');
89
+ }
90
+ return uint8ArrayToHex(decryptedPayload);
91
+ }
92
+ }
93
+ /**
94
+ * Migration helper to transition from old WebCryptoService to new ECIES service
95
+ */
96
+ export class MigrationHelper {
97
+ /**
98
+ * Test compatibility between old and new implementations
99
+ */
100
+ static async testCompatibility(mnemonic) {
101
+ try {
102
+ const ecies = new ECIESService();
103
+ const enhanced = new EnhancedWebCryptoService();
104
+ // Test mnemonic validation
105
+ let mnemonicValid = false;
106
+ try {
107
+ ecies.walletAndSeedFromMnemonic(mnemonic);
108
+ mnemonicValid = true;
109
+ }
110
+ catch {
111
+ mnemonicValid = false;
112
+ }
113
+ // Test key derivation
114
+ let keysMatch = false;
115
+ if (mnemonicValid) {
116
+ try {
117
+ const { wallet: wallet1 } = ecies.walletAndSeedFromMnemonic(mnemonic);
118
+ const { wallet: wallet2 } = await enhanced.walletFromMnemonic(mnemonic);
119
+ keysMatch =
120
+ uint8ArrayToHex(wallet1.getPrivateKey()) ===
121
+ uint8ArrayToHex(wallet2.getPrivateKey());
122
+ }
123
+ catch {
124
+ keysMatch = false;
125
+ }
126
+ }
127
+ // Test encryption roundtrip
128
+ let encryptionWorks = false;
129
+ if (keysMatch) {
130
+ try {
131
+ const { wallet } = await enhanced.walletFromMnemonic(mnemonic);
132
+ const testMessage = stringToUint8Array('Test message');
133
+ const encrypted = await enhanced.encryptForRecipient(wallet.getPublicKey(), testMessage);
134
+ const decrypted = await enhanced.decryptChallenge(encrypted, wallet.getPrivateKey());
135
+ encryptionWorks =
136
+ uint8ArrayToString(testMessage) === uint8ArrayToString(decrypted);
137
+ }
138
+ catch {
139
+ encryptionWorks = false;
140
+ }
141
+ }
142
+ return {
143
+ compatible: mnemonicValid && keysMatch && encryptionWorks,
144
+ details: {
145
+ mnemonicValid,
146
+ keysMatch,
147
+ encryptionWorks,
148
+ },
149
+ };
150
+ }
151
+ catch {
152
+ return {
153
+ compatible: false,
154
+ details: {
155
+ mnemonicValid: false,
156
+ keysMatch: false,
157
+ encryptionWorks: false,
158
+ },
159
+ };
160
+ }
161
+ }
162
+ }
163
+ //# sourceMappingURL=integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration.js","sourceRoot":"","sources":["../../../src/services/ecies/integration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Browser-compatible ECIES interfaces
3
+ */
4
+ import { Wallet } from '@ethereumjs/wallet';
5
+ import { EciesEncryptionTypeEnum } from '../../enumerations/ecies-encryption-type';
6
+ export interface ISimpleKeyPair {
7
+ privateKey: Uint8Array;
8
+ publicKey: Uint8Array;
9
+ }
10
+ export interface IWalletSeed {
11
+ wallet: Wallet;
12
+ seed: Uint8Array;
13
+ }
14
+ export interface ISingleEncryptedParsedHeader {
15
+ encryptionType: EciesEncryptionTypeEnum;
16
+ ephemeralPublicKey: Uint8Array;
17
+ iv: Uint8Array;
18
+ authTag: Uint8Array;
19
+ dataLength: number;
20
+ headerSize: number;
21
+ }
22
+ export interface IEncryptionResult {
23
+ encryptedData: Uint8Array;
24
+ ephemeralPublicKey: Uint8Array;
25
+ iv: Uint8Array;
26
+ authTag: Uint8Array;
27
+ }
28
+ export interface IDecryptionResult {
29
+ decrypted: Uint8Array;
30
+ consumedBytes: number;
31
+ }
32
+ export interface IMultiRecipient {
33
+ id: Uint8Array;
34
+ publicKey: Uint8Array;
35
+ }
36
+ export interface IMultiEncryptedMessage {
37
+ dataLength: number;
38
+ recipientCount: number;
39
+ recipientIds: Uint8Array[];
40
+ recipientKeys: Uint8Array[];
41
+ encryptedMessage: Uint8Array;
42
+ headerSize: number;
43
+ }
44
+ export interface IMultiEncryptedParsedHeader {
45
+ dataLength: number;
46
+ recipientCount: number;
47
+ recipientIds: Uint8Array[];
48
+ recipientKeys: Uint8Array[];
49
+ headerSize: number;
50
+ }
51
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/services/ecies/interfaces.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AAEnF,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,4BAA4B;IAC3C,cAAc,EAAE,uBAAuB,CAAC;IACxC,kBAAkB,EAAE,UAAU,CAAC;IAC/B,EAAE,EAAE,UAAU,CAAC;IACf,OAAO,EAAE,UAAU,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,UAAU,CAAC;IAC1B,kBAAkB,EAAE,UAAU,CAAC;IAC/B,EAAE,EAAE,UAAU,CAAC;IACf,OAAO,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,UAAU,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,UAAU,CAAC;IACf,SAAS,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,aAAa,EAAE,UAAU,EAAE,CAAC;IAC5B,gBAAgB,EAAE,UAAU,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,2BAA2B;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,aAAa,EAAE,UAAU,EAAE,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB"}