@digitaldefiance/ecies-lib 1.1.23 → 1.1.24

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 (347) hide show
  1. package/README.md +4 -0
  2. package/package.json +13 -33
  3. package/src/constants.ts +474 -0
  4. package/src/email-string.ts +83 -0
  5. package/src/enumerations/ecies-encryption-type.ts +102 -0
  6. package/src/enumerations/ecies-error-type.ts +31 -0
  7. package/src/enumerations/ecies-string-key.ts +108 -0
  8. package/src/enumerations/guid-brand-type.ts +26 -0
  9. package/src/enumerations/guid-error-type.ts +6 -0
  10. package/{dist/enumerations/index.d.ts → src/enumerations/index.ts} +0 -1
  11. package/src/enumerations/invalid-email-type.ts +5 -0
  12. package/src/enumerations/length-encoding-type.ts +6 -0
  13. package/src/enumerations/length-error-type.ts +5 -0
  14. package/src/enumerations/member-error-type.ts +106 -0
  15. package/{dist/enumerations/member-type.d.ts → src/enumerations/member-type.ts} +7 -6
  16. package/src/enumerations/password-login-error-type.ts +4 -0
  17. package/src/enumerations/pbkdf2-error-type.ts +5 -0
  18. package/src/enumerations/pbkdf2-profile.ts +5 -0
  19. package/src/enumerations/secure-storage-error-type.ts +5 -0
  20. package/src/errors/disposed.ts +15 -0
  21. package/src/errors/ecies.ts +34 -0
  22. package/src/errors/guid.ts +34 -0
  23. package/{dist/errors/index.d.ts → src/errors/index.ts} +0 -1
  24. package/src/errors/invalid-email.ts +11 -0
  25. package/src/errors/length.ts +11 -0
  26. package/src/errors/member.ts +12 -0
  27. package/src/errors/pbkdf2.ts +12 -0
  28. package/src/errors/secure-storage.ts +13 -0
  29. package/src/errors/simple-ecies.ts +18 -0
  30. package/src/errors/simple-test-error.ts +6 -0
  31. package/src/guid.ts +800 -0
  32. package/src/i18n-setup.ts +1312 -0
  33. package/{dist/index.d.ts → src/index.ts} +0 -1
  34. package/src/interfaces/checksum-config.ts +4 -0
  35. package/src/interfaces/checksum-consts.ts +13 -0
  36. package/src/interfaces/constants.ts +48 -0
  37. package/src/interfaces/ecies-config.ts +8 -0
  38. package/src/interfaces/ecies-consts.ts +70 -0
  39. package/src/interfaces/ecies-file-service.ts +6 -0
  40. package/src/interfaces/guid.ts +53 -0
  41. package/{dist/interfaces/index.d.ts → src/interfaces/index.ts} +0 -1
  42. package/src/interfaces/library-error.ts +23 -0
  43. package/src/interfaces/member-operational.ts +54 -0
  44. package/{dist/interfaces/member-storage.d.ts → src/interfaces/member-storage.ts} +11 -10
  45. package/{dist/interfaces/member-with-mnemonic.d.ts → src/interfaces/member-with-mnemonic.ts} +3 -3
  46. package/src/interfaces/pbkdf2-config.ts +6 -0
  47. package/src/interfaces/pbkdf2-consts.ts +10 -0
  48. package/src/interfaces/pbkdf2-result.ts +5 -0
  49. package/src/member.ts +429 -0
  50. package/{dist/pbkdf2-profiles.d.ts → src/pbkdf2-profiles.ts} +2 -2
  51. package/src/phone-number.ts +18 -0
  52. package/src/regexes.ts +10 -0
  53. package/src/secure-buffer.ts +183 -0
  54. package/src/secure-string.ts +229 -0
  55. package/src/services/aes-gcm.ts +177 -0
  56. package/src/services/ecies/README.md +147 -0
  57. package/src/services/ecies/crypto-core.ts +180 -0
  58. package/src/services/ecies/example.ts +185 -0
  59. package/src/services/ecies/file.ts +167 -0
  60. package/{dist/services/ecies/index.d.ts → src/services/ecies/index.ts} +3 -1
  61. package/src/services/ecies/integration.ts +241 -0
  62. package/src/services/ecies/interfaces.ts +59 -0
  63. package/src/services/ecies/manual-test.ts +219 -0
  64. package/src/services/ecies/multi-recipient.ts +394 -0
  65. package/src/services/ecies/service.ts +317 -0
  66. package/src/services/ecies/signature.ts +93 -0
  67. package/src/services/ecies/single-recipient.ts +340 -0
  68. package/{dist/services/index.d.ts → src/services/index.ts} +0 -1
  69. package/src/services/password-login.ts +228 -0
  70. package/src/services/pbkdf2.ts +172 -0
  71. package/src/services/xor.ts +65 -0
  72. package/src/types/deep-partial.ts +11 -0
  73. package/{dist/types.d.ts → src/types.ts} +10 -4
  74. package/src/utils.ts +331 -0
  75. package/dist/constants.d.ts +0 -46
  76. package/dist/constants.d.ts.map +0 -1
  77. package/dist/constants.js +0 -358
  78. package/dist/constants.js.map +0 -1
  79. package/dist/email-string.d.ts +0 -42
  80. package/dist/email-string.d.ts.map +0 -1
  81. package/dist/email-string.js +0 -75
  82. package/dist/email-string.js.map +0 -1
  83. package/dist/enumerations/ecies-encryption-type.d.ts +0 -15
  84. package/dist/enumerations/ecies-encryption-type.d.ts.map +0 -1
  85. package/dist/enumerations/ecies-encryption-type.js +0 -71
  86. package/dist/enumerations/ecies-encryption-type.js.map +0 -1
  87. package/dist/enumerations/ecies-error-type.d.ts +0 -32
  88. package/dist/enumerations/ecies-error-type.d.ts.map +0 -1
  89. package/dist/enumerations/ecies-error-type.js +0 -36
  90. package/dist/enumerations/ecies-error-type.js.map +0 -1
  91. package/dist/enumerations/ecies-string-key.d.ts +0 -96
  92. package/dist/enumerations/ecies-string-key.d.ts.map +0 -1
  93. package/dist/enumerations/ecies-string-key.js +0 -105
  94. package/dist/enumerations/ecies-string-key.js.map +0 -1
  95. package/dist/enumerations/guid-brand-type.d.ts +0 -27
  96. package/dist/enumerations/guid-brand-type.d.ts.map +0 -1
  97. package/dist/enumerations/guid-brand-type.js +0 -31
  98. package/dist/enumerations/guid-brand-type.js.map +0 -1
  99. package/dist/enumerations/guid-error-type.d.ts +0 -7
  100. package/dist/enumerations/guid-error-type.d.ts.map +0 -1
  101. package/dist/enumerations/guid-error-type.js +0 -11
  102. package/dist/enumerations/guid-error-type.js.map +0 -1
  103. package/dist/enumerations/index.d.ts.map +0 -1
  104. package/dist/enumerations/index.js +0 -31
  105. package/dist/enumerations/index.js.map +0 -1
  106. package/dist/enumerations/invalid-email-type.d.ts +0 -6
  107. package/dist/enumerations/invalid-email-type.d.ts.map +0 -1
  108. package/dist/enumerations/invalid-email-type.js +0 -10
  109. package/dist/enumerations/invalid-email-type.js.map +0 -1
  110. package/dist/enumerations/length-encoding-type.d.ts +0 -7
  111. package/dist/enumerations/length-encoding-type.d.ts.map +0 -1
  112. package/dist/enumerations/length-encoding-type.js +0 -11
  113. package/dist/enumerations/length-encoding-type.js.map +0 -1
  114. package/dist/enumerations/length-error-type.d.ts +0 -6
  115. package/dist/enumerations/length-error-type.d.ts.map +0 -1
  116. package/dist/enumerations/length-error-type.js +0 -10
  117. package/dist/enumerations/length-error-type.js.map +0 -1
  118. package/dist/enumerations/member-error-type.d.ts +0 -87
  119. package/dist/enumerations/member-error-type.d.ts.map +0 -1
  120. package/dist/enumerations/member-error-type.js +0 -91
  121. package/dist/enumerations/member-error-type.js.map +0 -1
  122. package/dist/enumerations/member-type.d.ts.map +0 -1
  123. package/dist/enumerations/member-type.js +0 -19
  124. package/dist/enumerations/member-type.js.map +0 -1
  125. package/dist/enumerations/password-login-error-type.d.ts +0 -5
  126. package/dist/enumerations/password-login-error-type.d.ts.map +0 -1
  127. package/dist/enumerations/password-login-error-type.js +0 -9
  128. package/dist/enumerations/password-login-error-type.js.map +0 -1
  129. package/dist/enumerations/pbkdf2-error-type.d.ts +0 -6
  130. package/dist/enumerations/pbkdf2-error-type.d.ts.map +0 -1
  131. package/dist/enumerations/pbkdf2-error-type.js +0 -10
  132. package/dist/enumerations/pbkdf2-error-type.js.map +0 -1
  133. package/dist/enumerations/pbkdf2-profile.d.ts +0 -6
  134. package/dist/enumerations/pbkdf2-profile.d.ts.map +0 -1
  135. package/dist/enumerations/pbkdf2-profile.js +0 -10
  136. package/dist/enumerations/pbkdf2-profile.js.map +0 -1
  137. package/dist/enumerations/secure-storage-error-type.d.ts +0 -6
  138. package/dist/enumerations/secure-storage-error-type.d.ts.map +0 -1
  139. package/dist/enumerations/secure-storage-error-type.js +0 -10
  140. package/dist/enumerations/secure-storage-error-type.js.map +0 -1
  141. package/dist/errors/disposed.d.ts +0 -4
  142. package/dist/errors/disposed.d.ts.map +0 -1
  143. package/dist/errors/disposed.js +0 -20
  144. package/dist/errors/disposed.js.map +0 -1
  145. package/dist/errors/ecies.d.ts +0 -7
  146. package/dist/errors/ecies.d.ts.map +0 -1
  147. package/dist/errors/ecies.js +0 -15
  148. package/dist/errors/ecies.js.map +0 -1
  149. package/dist/errors/guid.d.ts +0 -15
  150. package/dist/errors/guid.d.ts.map +0 -1
  151. package/dist/errors/guid.js +0 -26
  152. package/dist/errors/guid.js.map +0 -1
  153. package/dist/errors/index.d.ts.map +0 -1
  154. package/dist/errors/index.js +0 -25
  155. package/dist/errors/index.js.map +0 -1
  156. package/dist/errors/invalid-email.d.ts +0 -7
  157. package/dist/errors/invalid-email.d.ts.map +0 -1
  158. package/dist/errors/invalid-email.js +0 -14
  159. package/dist/errors/invalid-email.js.map +0 -1
  160. package/dist/errors/length.d.ts +0 -7
  161. package/dist/errors/length.d.ts.map +0 -1
  162. package/dist/errors/length.js +0 -14
  163. package/dist/errors/length.js.map +0 -1
  164. package/dist/errors/member.d.ts +0 -7
  165. package/dist/errors/member.d.ts.map +0 -1
  166. package/dist/errors/member.js +0 -14
  167. package/dist/errors/member.js.map +0 -1
  168. package/dist/errors/pbkdf2.d.ts +0 -7
  169. package/dist/errors/pbkdf2.d.ts.map +0 -1
  170. package/dist/errors/pbkdf2.js +0 -14
  171. package/dist/errors/pbkdf2.js.map +0 -1
  172. package/dist/errors/secure-storage.d.ts +0 -7
  173. package/dist/errors/secure-storage.d.ts.map +0 -1
  174. package/dist/errors/secure-storage.js +0 -15
  175. package/dist/errors/secure-storage.js.map +0 -1
  176. package/dist/errors/simple-ecies.d.ts +0 -6
  177. package/dist/errors/simple-ecies.d.ts.map +0 -1
  178. package/dist/errors/simple-ecies.js +0 -15
  179. package/dist/errors/simple-ecies.js.map +0 -1
  180. package/dist/errors/simple-test-error.d.ts +0 -4
  181. package/dist/errors/simple-test-error.d.ts.map +0 -1
  182. package/dist/errors/simple-test-error.js +0 -11
  183. package/dist/errors/simple-test-error.js.map +0 -1
  184. package/dist/guid.d.ts +0 -153
  185. package/dist/guid.d.ts.map +0 -1
  186. package/dist/guid.js +0 -647
  187. package/dist/guid.js.map +0 -1
  188. package/dist/i18n-setup.d.ts +0 -24
  189. package/dist/i18n-setup.d.ts.map +0 -1
  190. package/dist/i18n-setup.js +0 -837
  191. package/dist/i18n-setup.js.map +0 -1
  192. package/dist/index.d.ts.map +0 -1
  193. package/dist/index.js +0 -32
  194. package/dist/index.js.map +0 -1
  195. package/dist/interfaces/checksum-config.d.ts +0 -5
  196. package/dist/interfaces/checksum-config.d.ts.map +0 -1
  197. package/dist/interfaces/checksum-config.js +0 -3
  198. package/dist/interfaces/checksum-config.js.map +0 -1
  199. package/dist/interfaces/checksum-consts.d.ts +0 -11
  200. package/dist/interfaces/checksum-consts.d.ts.map +0 -1
  201. package/dist/interfaces/checksum-consts.js +0 -3
  202. package/dist/interfaces/checksum-consts.js.map +0 -1
  203. package/dist/interfaces/constants.d.ts +0 -45
  204. package/dist/interfaces/constants.d.ts.map +0 -1
  205. package/dist/interfaces/constants.js +0 -3
  206. package/dist/interfaces/constants.js.map +0 -1
  207. package/dist/interfaces/ecies-config.d.ts +0 -9
  208. package/dist/interfaces/ecies-config.d.ts.map +0 -1
  209. package/dist/interfaces/ecies-config.js +0 -3
  210. package/dist/interfaces/ecies-config.js.map +0 -1
  211. package/dist/interfaces/ecies-consts.d.ts +0 -58
  212. package/dist/interfaces/ecies-consts.d.ts.map +0 -1
  213. package/dist/interfaces/ecies-consts.js +0 -3
  214. package/dist/interfaces/ecies-consts.js.map +0 -1
  215. package/dist/interfaces/ecies-file-service.d.ts +0 -7
  216. package/dist/interfaces/ecies-file-service.d.ts.map +0 -1
  217. package/dist/interfaces/ecies-file-service.js +0 -3
  218. package/dist/interfaces/ecies-file-service.js.map +0 -1
  219. package/dist/interfaces/guid.d.ts +0 -45
  220. package/dist/interfaces/guid.d.ts.map +0 -1
  221. package/dist/interfaces/guid.js +0 -3
  222. package/dist/interfaces/guid.js.map +0 -1
  223. package/dist/interfaces/index.d.ts.map +0 -1
  224. package/dist/interfaces/index.js +0 -30
  225. package/dist/interfaces/index.js.map +0 -1
  226. package/dist/interfaces/library-error.d.ts +0 -23
  227. package/dist/interfaces/library-error.d.ts.map +0 -1
  228. package/dist/interfaces/library-error.js +0 -3
  229. package/dist/interfaces/library-error.js.map +0 -1
  230. package/dist/interfaces/member-operational.d.ts +0 -40
  231. package/dist/interfaces/member-operational.d.ts.map +0 -1
  232. package/dist/interfaces/member-operational.js +0 -3
  233. package/dist/interfaces/member-operational.js.map +0 -1
  234. package/dist/interfaces/member-storage.d.ts.map +0 -1
  235. package/dist/interfaces/member-storage.js +0 -3
  236. package/dist/interfaces/member-storage.js.map +0 -1
  237. package/dist/interfaces/member-with-mnemonic.d.ts.map +0 -1
  238. package/dist/interfaces/member-with-mnemonic.js +0 -3
  239. package/dist/interfaces/member-with-mnemonic.js.map +0 -1
  240. package/dist/interfaces/pbkdf2-config.d.ts +0 -7
  241. package/dist/interfaces/pbkdf2-config.d.ts.map +0 -1
  242. package/dist/interfaces/pbkdf2-config.js +0 -3
  243. package/dist/interfaces/pbkdf2-config.js.map +0 -1
  244. package/dist/interfaces/pbkdf2-consts.d.ts +0 -9
  245. package/dist/interfaces/pbkdf2-consts.d.ts.map +0 -1
  246. package/dist/interfaces/pbkdf2-consts.js +0 -3
  247. package/dist/interfaces/pbkdf2-consts.js.map +0 -1
  248. package/dist/interfaces/pbkdf2-result.d.ts +0 -6
  249. package/dist/interfaces/pbkdf2-result.d.ts.map +0 -1
  250. package/dist/interfaces/pbkdf2-result.js +0 -3
  251. package/dist/interfaces/pbkdf2-result.js.map +0 -1
  252. package/dist/member.d.ts +0 -66
  253. package/dist/member.d.ts.map +0 -1
  254. package/dist/member.js +0 -271
  255. package/dist/member.js.map +0 -1
  256. package/dist/pbkdf2-profiles.d.ts.map +0 -1
  257. package/dist/pbkdf2-profiles.js +0 -3
  258. package/dist/pbkdf2-profiles.js.map +0 -1
  259. package/dist/phone-number.d.ts +0 -6
  260. package/dist/phone-number.d.ts.map +0 -1
  261. package/dist/phone-number.js +0 -22
  262. package/dist/phone-number.js.map +0 -1
  263. package/dist/regexes.d.ts +0 -7
  264. package/dist/regexes.d.ts.map +0 -1
  265. package/dist/regexes.js +0 -10
  266. package/dist/regexes.js.map +0 -1
  267. package/dist/secure-buffer.d.ts +0 -38
  268. package/dist/secure-buffer.d.ts.map +0 -1
  269. package/dist/secure-buffer.js +0 -168
  270. package/dist/secure-buffer.js.map +0 -1
  271. package/dist/secure-string.d.ts +0 -39
  272. package/dist/secure-string.d.ts.map +0 -1
  273. package/dist/secure-string.js +0 -195
  274. package/dist/secure-string.js.map +0 -1
  275. package/dist/services/aes-gcm.d.ts +0 -57
  276. package/dist/services/aes-gcm.d.ts.map +0 -1
  277. package/dist/services/aes-gcm.js +0 -111
  278. package/dist/services/aes-gcm.js.map +0 -1
  279. package/dist/services/ecies/crypto-core.d.ts +0 -51
  280. package/dist/services/ecies/crypto-core.d.ts.map +0 -1
  281. package/dist/services/ecies/crypto-core.js +0 -139
  282. package/dist/services/ecies/crypto-core.js.map +0 -1
  283. package/dist/services/ecies/example.d.ts +0 -25
  284. package/dist/services/ecies/example.d.ts.map +0 -1
  285. package/dist/services/ecies/example.js +0 -128
  286. package/dist/services/ecies/example.js.map +0 -1
  287. package/dist/services/ecies/file.d.ts +0 -18
  288. package/dist/services/ecies/file.d.ts.map +0 -1
  289. package/dist/services/ecies/file.js +0 -110
  290. package/dist/services/ecies/file.js.map +0 -1
  291. package/dist/services/ecies/index.d.ts.map +0 -1
  292. package/dist/services/ecies/index.js +0 -57
  293. package/dist/services/ecies/index.js.map +0 -1
  294. package/dist/services/ecies/integration.d.ts +0 -59
  295. package/dist/services/ecies/integration.d.ts.map +0 -1
  296. package/dist/services/ecies/integration.js +0 -172
  297. package/dist/services/ecies/integration.js.map +0 -1
  298. package/dist/services/ecies/interfaces.d.ts +0 -51
  299. package/dist/services/ecies/interfaces.d.ts.map +0 -1
  300. package/dist/services/ecies/interfaces.js +0 -6
  301. package/dist/services/ecies/interfaces.js.map +0 -1
  302. package/dist/services/ecies/manual-test.d.ts +0 -29
  303. package/dist/services/ecies/manual-test.d.ts.map +0 -1
  304. package/dist/services/ecies/manual-test.js +0 -171
  305. package/dist/services/ecies/manual-test.js.map +0 -1
  306. package/dist/services/ecies/multi-recipient.d.ts +0 -52
  307. package/dist/services/ecies/multi-recipient.d.ts.map +0 -1
  308. package/dist/services/ecies/multi-recipient.js +0 -243
  309. package/dist/services/ecies/multi-recipient.js.map +0 -1
  310. package/dist/services/ecies/service.d.ts +0 -104
  311. package/dist/services/ecies/service.d.ts.map +0 -1
  312. package/dist/services/ecies/service.js +0 -192
  313. package/dist/services/ecies/service.js.map +0 -1
  314. package/dist/services/ecies/signature.d.ts +0 -27
  315. package/dist/services/ecies/signature.d.ts.map +0 -1
  316. package/dist/services/ecies/signature.js +0 -76
  317. package/dist/services/ecies/signature.js.map +0 -1
  318. package/dist/services/ecies/single-recipient.d.ts +0 -46
  319. package/dist/services/ecies/single-recipient.d.ts.map +0 -1
  320. package/dist/services/ecies/single-recipient.js +0 -212
  321. package/dist/services/ecies/single-recipient.js.map +0 -1
  322. package/dist/services/index.d.ts.map +0 -1
  323. package/dist/services/index.js +0 -22
  324. package/dist/services/index.js.map +0 -1
  325. package/dist/services/password-login.d.ts +0 -49
  326. package/dist/services/password-login.d.ts.map +0 -1
  327. package/dist/services/password-login.js +0 -121
  328. package/dist/services/password-login.js.map +0 -1
  329. package/dist/services/pbkdf2.d.ts +0 -56
  330. package/dist/services/pbkdf2.d.ts.map +0 -1
  331. package/dist/services/pbkdf2.js +0 -114
  332. package/dist/services/pbkdf2.js.map +0 -1
  333. package/dist/services/xor.d.ts +0 -37
  334. package/dist/services/xor.d.ts.map +0 -1
  335. package/dist/services/xor.js +0 -67
  336. package/dist/services/xor.js.map +0 -1
  337. package/dist/types/deep-partial.d.ts +0 -4
  338. package/dist/types/deep-partial.d.ts.map +0 -1
  339. package/dist/types/deep-partial.js +0 -3
  340. package/dist/types/deep-partial.js.map +0 -1
  341. package/dist/types.d.ts.map +0 -1
  342. package/dist/types.js +0 -3
  343. package/dist/types.js.map +0 -1
  344. package/dist/utils.d.ts +0 -68
  345. package/dist/utils.d.ts.map +0 -1
  346. package/dist/utils.js +0 -288
  347. package/dist/utils.js.map +0 -1
@@ -1,168 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SecureBuffer = void 0;
4
- const secure_storage_error_type_1 = require("./enumerations/secure-storage-error-type");
5
- const disposed_1 = require("./errors/disposed");
6
- const secure_storage_1 = require("./errors/secure-storage");
7
- const guid_1 = require("./guid");
8
- const i18n_setup_1 = require("./i18n-setup");
9
- const xor_1 = require("./services/xor");
10
- const utils_1 = require("./utils");
11
- /**
12
- * A secure string buffer is a buffer whose intent is to prevent the raw password from being stored in memory.
13
- * The buffer is encrypted with a key derived from a GUID.
14
- * The GUID is stored in the clear, but the buffer is encrypted with a key derived from the GUID.
15
- * This allows the buffer to be decrypted, but only if the GUID and salt are known.
16
- */
17
- class SecureBuffer {
18
- _disposed = false;
19
- _id;
20
- _length;
21
- _obfuscatedValue;
22
- _key;
23
- _obfuscatedChecksum;
24
- _disposedAt;
25
- constructor(data) {
26
- this._id = guid_1.GuidV4.new();
27
- // don't bother encrypting an empty buffer
28
- if (data === undefined || data.length === 0) {
29
- this._length = 0;
30
- this._obfuscatedValue = new Uint8Array(0);
31
- this._key = new Uint8Array(0);
32
- this._obfuscatedChecksum = new Uint8Array(0);
33
- return;
34
- }
35
- this._length = data.length;
36
- this._key = this.idUint8Array;
37
- this._obfuscatedValue = this.obfuscateData(data);
38
- // Create a simple checksum without crypto for synchronous operation
39
- this._obfuscatedChecksum = this.createSimpleObfuscatedChecksum(data);
40
- }
41
- dispose() {
42
- const err = new disposed_1.DisposedError();
43
- if (typeof Error.captureStackTrace === 'function') {
44
- Error.captureStackTrace(err, this.dispose);
45
- }
46
- this._disposedAt = err.stack ?? 'stack unavailable';
47
- this._obfuscatedValue.fill(0);
48
- this._key.fill(0);
49
- this._obfuscatedChecksum.fill(0);
50
- this._disposed = true;
51
- }
52
- assertNotDisposed() {
53
- if (this._disposed) {
54
- const e = new disposed_1.DisposedError();
55
- try {
56
- e.disposedAt = this._disposedAt;
57
- }
58
- catch {
59
- // ignore if Error object is sealed/frozen
60
- }
61
- throw e;
62
- }
63
- }
64
- static fromString(data) {
65
- return new SecureBuffer(new TextEncoder().encode(data));
66
- }
67
- get disposedAtStack() {
68
- return this._disposedAt;
69
- }
70
- get id() {
71
- this.assertNotDisposed();
72
- return this._id.asFullHexGuid;
73
- }
74
- get idUint8Array() {
75
- this.assertNotDisposed();
76
- return this._id.asRawGuidUint8Array;
77
- }
78
- get originalLength() {
79
- this.assertNotDisposed();
80
- return this._length;
81
- }
82
- get value() {
83
- this.assertNotDisposed();
84
- if (this._length === 0) {
85
- return new Uint8Array(0);
86
- }
87
- try {
88
- const deobfuscatedResult = this.deobfuscateData(this._obfuscatedValue);
89
- if (deobfuscatedResult.length !== this._length) {
90
- throw new secure_storage_1.SecureStorageError(secure_storage_error_type_1.SecureStorageErrorType.DecryptedValueLengthMismatch, (0, i18n_setup_1.getEciesI18nEngine)());
91
- }
92
- if (!this.validateObfuscatedChecksum(deobfuscatedResult)) {
93
- throw new secure_storage_1.SecureStorageError(secure_storage_error_type_1.SecureStorageErrorType.DecryptedValueChecksumMismatch, (0, i18n_setup_1.getEciesI18nEngine)());
94
- }
95
- return deobfuscatedResult;
96
- }
97
- catch (error) {
98
- // If it's already a SecureStorageError, re-throw it
99
- if (error instanceof secure_storage_1.SecureStorageError) {
100
- throw error;
101
- }
102
- // Convert any other error (including AES-GCM authentication errors) to SecureStorageError
103
- throw new secure_storage_1.SecureStorageError(secure_storage_error_type_1.SecureStorageErrorType.DecryptedValueChecksumMismatch, (0, i18n_setup_1.getEciesI18nEngine)());
104
- }
105
- }
106
- get valueAsString() {
107
- this.assertNotDisposed();
108
- return new TextDecoder().decode(this.value);
109
- }
110
- get valueAsHexString() {
111
- this.assertNotDisposed();
112
- return (0, utils_1.uint8ArrayToHex)(this.value);
113
- }
114
- get valueAsBase64String() {
115
- this.assertNotDisposed();
116
- return btoa(String.fromCharCode(...this.value));
117
- }
118
- get checksum() {
119
- this.assertNotDisposed();
120
- const deobfuscatedChecksum = new TextDecoder().decode(this.deobfuscateData(this._obfuscatedChecksum));
121
- return deobfuscatedChecksum;
122
- }
123
- generateSimpleChecksum(data) {
124
- const dataBytes = typeof data === 'string' ? new TextEncoder().encode(data) : data;
125
- let hash = 0;
126
- for (let i = 0; i < dataBytes.length; i++) {
127
- hash = ((hash << 5) - hash + dataBytes[i]) & 0xffffffff;
128
- }
129
- return hash.toString(16);
130
- }
131
- createSimpleObfuscatedChecksum(data) {
132
- const checksum = this.generateSimpleChecksum(data);
133
- const result = this.obfuscateData(new TextEncoder().encode(checksum));
134
- return result;
135
- }
136
- validateSimpleChecksum(data, checksum) {
137
- const generatedChecksum = this.generateSimpleChecksum(data);
138
- const a = new TextEncoder().encode(generatedChecksum);
139
- const b = new TextEncoder().encode(checksum);
140
- return this.timingSafeEqual(a, b);
141
- }
142
- timingSafeEqual(a, b) {
143
- if (a.length !== b.length) {
144
- return false;
145
- }
146
- let result = 0;
147
- for (let i = 0; i < a.length; i++) {
148
- result |= a[i] ^ b[i];
149
- }
150
- return result === 0;
151
- }
152
- validateObfuscatedChecksum(data) {
153
- const deobfuscatedChecksum = new TextDecoder().decode(this.deobfuscateData(this._obfuscatedChecksum));
154
- return this.validateSimpleChecksum(data, deobfuscatedChecksum);
155
- }
156
- obfuscateData(data) {
157
- return xor_1.XorService.xor(data, this._key);
158
- }
159
- deobfuscateData(data) {
160
- return xor_1.XorService.xor(data, this._key);
161
- }
162
- get length() {
163
- this.assertNotDisposed();
164
- return this._length;
165
- }
166
- }
167
- exports.SecureBuffer = SecureBuffer;
168
- //# sourceMappingURL=secure-buffer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"secure-buffer.js","sourceRoot":"","sources":["../src/secure-buffer.ts"],"names":[],"mappings":"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"}
@@ -1,39 +0,0 @@
1
- import { FullHexGuid, RawGuidUint8Array } from './types';
2
- /**
3
- * A secure string buffer is a buffer whose intent is to prevent the raw password from being stored in memory.
4
- */
5
- export declare class SecureString {
6
- private _disposed;
7
- private readonly _isNull;
8
- private readonly _id;
9
- private readonly _length;
10
- private readonly _obfuscatedValue;
11
- private readonly _key;
12
- private readonly _obfuscatedChecksum;
13
- private _disposedAt?;
14
- constructor(data?: string | Uint8Array | null);
15
- private assertNotDisposed;
16
- dispose(): void;
17
- get disposedAtStack(): string | undefined;
18
- get id(): FullHexGuid;
19
- get idUint8Array(): RawGuidUint8Array;
20
- get originalLength(): number;
21
- get valueAsUint8Array(): Uint8Array;
22
- get value(): string | null;
23
- get notNullValue(): string;
24
- get valueAsHexString(): string;
25
- get valueAsBase64String(): string;
26
- get hasValue(): boolean;
27
- get checksum(): string;
28
- get length(): number;
29
- private generateChecksum;
30
- private createSimpleChecksum;
31
- private createSimpleObfuscatedChecksum;
32
- private createObfuscatedChecksum;
33
- private validateChecksum;
34
- private timingSafeEqual;
35
- private validateObfuscatedChecksum;
36
- private obfuscateData;
37
- private deobfuscateData;
38
- }
39
- //# sourceMappingURL=secure-string.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"secure-string.d.ts","sourceRoot":"","sources":["../src/secure-string.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAGzD;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAa;IAC9C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAa;IACjD,OAAO,CAAC,WAAW,CAAC,CAAS;gBACjB,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAuB7C,OAAO,CAAC,iBAAiB;IAWlB,OAAO,IAAI,IAAI;IAWtB,IAAW,eAAe,IAAI,MAAM,GAAG,SAAS,CAE/C;IACD,IAAW,EAAE,IAAI,WAAW,CAG3B;IACD,IAAW,YAAY,IAAI,iBAAiB,CAG3C;IACD,IAAW,cAAc,IAAI,MAAM,CAGlC;IACD,IAAW,iBAAiB,IAAI,UAAU,CAyCzC;IACD,IAAW,KAAK,IAAI,MAAM,GAAG,IAAI,CAMhC;IACD,IAAW,YAAY,IAAI,MAAM,CAShC;IACD,IAAW,gBAAgB,IAAI,MAAM,CAGpC;IACD,IAAW,mBAAmB,IAAI,MAAM,CAGvC;IACD,IAAW,QAAQ,IAAI,OAAO,CAG7B;IACD,IAAW,QAAQ,IAAI,MAAM,CAM5B;IACD,IAAW,MAAM,IAAI,MAAM,CAG1B;YACa,gBAAgB;IAS9B,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,8BAA8B;YASxB,wBAAwB;YAOxB,gBAAgB;IAQ9B,OAAO,CAAC,eAAe;YAUT,0BAA0B;IAQxC,OAAO,CAAC,aAAa;IAGrB,OAAO,CAAC,eAAe;CAGxB"}
@@ -1,195 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SecureString = void 0;
4
- const secure_storage_error_type_1 = require("./enumerations/secure-storage-error-type");
5
- const disposed_1 = require("./errors/disposed");
6
- const secure_storage_1 = require("./errors/secure-storage");
7
- const guid_1 = require("./guid");
8
- const i18n_setup_1 = require("./i18n-setup");
9
- const xor_1 = require("./services/xor");
10
- const utils_1 = require("./utils");
11
- /**
12
- * A secure string buffer is a buffer whose intent is to prevent the raw password from being stored in memory.
13
- */
14
- class SecureString {
15
- _disposed = false;
16
- _isNull;
17
- _id;
18
- _length;
19
- _obfuscatedValue;
20
- _key;
21
- _obfuscatedChecksum;
22
- _disposedAt;
23
- constructor(data) {
24
- this._id = guid_1.GuidV4.new();
25
- // only treat null/undefined as null, empty strings/arrays are valid empty data
26
- if (data === null || data === undefined) {
27
- this._isNull = true;
28
- this._length = 0;
29
- this._obfuscatedValue = new Uint8Array(0);
30
- this._key = new Uint8Array(0);
31
- this._obfuscatedChecksum = new Uint8Array(0);
32
- return;
33
- }
34
- this._isNull = false;
35
- this._key = this.idUint8Array;
36
- const dataAsUint8Array = typeof data === 'string'
37
- ? new TextEncoder().encode(data)
38
- : data;
39
- // Store the byte length, not the character length
40
- this._length = dataAsUint8Array.length;
41
- this._obfuscatedValue = this.obfuscateData(dataAsUint8Array);
42
- this._obfuscatedChecksum =
43
- this.createSimpleObfuscatedChecksum(dataAsUint8Array);
44
- }
45
- assertNotDisposed() {
46
- if (this._disposed) {
47
- const e = new disposed_1.DisposedError();
48
- try {
49
- e.disposedAt = this._disposedAt;
50
- }
51
- catch {
52
- // ignore if Error object is sealed/frozen
53
- }
54
- throw e;
55
- }
56
- }
57
- dispose() {
58
- const err = new disposed_1.DisposedError();
59
- if (typeof Error.captureStackTrace === 'function') {
60
- Error.captureStackTrace(err, this.dispose);
61
- }
62
- this._disposedAt = err.stack ?? 'stack unavailable';
63
- this._obfuscatedValue.fill(0);
64
- this._key.fill(0);
65
- this._obfuscatedChecksum.fill(0);
66
- this._disposed = true;
67
- }
68
- get disposedAtStack() {
69
- return this._disposedAt;
70
- }
71
- get id() {
72
- this.assertNotDisposed();
73
- return this._id.asFullHexGuid;
74
- }
75
- get idUint8Array() {
76
- this.assertNotDisposed();
77
- return this._id.asRawGuidUint8Array;
78
- }
79
- get originalLength() {
80
- this.assertNotDisposed();
81
- return this._length;
82
- }
83
- get valueAsUint8Array() {
84
- this.assertNotDisposed();
85
- if (this._isNull) {
86
- return new Uint8Array(0);
87
- }
88
- try {
89
- const deobfuscatedResult = this.deobfuscateData(this._obfuscatedValue);
90
- if (deobfuscatedResult.length !== this._length) {
91
- throw new secure_storage_1.SecureStorageError(secure_storage_error_type_1.SecureStorageErrorType.DecryptedValueLengthMismatch, (0, i18n_setup_1.getEciesI18nEngine)());
92
- }
93
- // Validate checksum
94
- const expectedChecksum = this.createSimpleChecksum(deobfuscatedResult);
95
- const storedChecksum = new TextDecoder().decode(this.deobfuscateData(this._obfuscatedChecksum));
96
- const expectedBytes = new TextEncoder().encode(expectedChecksum);
97
- const storedBytes = new TextEncoder().encode(storedChecksum);
98
- if (!this.timingSafeEqual(expectedBytes, storedBytes)) {
99
- throw new secure_storage_1.SecureStorageError(secure_storage_error_type_1.SecureStorageErrorType.DecryptedValueChecksumMismatch, (0, i18n_setup_1.getEciesI18nEngine)());
100
- }
101
- return deobfuscatedResult;
102
- }
103
- catch (error) {
104
- // If it's already a SecureStorageError, re-throw it
105
- if (error instanceof secure_storage_1.SecureStorageError) {
106
- throw error;
107
- }
108
- // Convert any other error to SecureStorageError
109
- throw new secure_storage_1.SecureStorageError(secure_storage_error_type_1.SecureStorageErrorType.DecryptedValueChecksumMismatch, (0, i18n_setup_1.getEciesI18nEngine)());
110
- }
111
- }
112
- get value() {
113
- this.assertNotDisposed();
114
- if (this._isNull) {
115
- return null;
116
- }
117
- return new TextDecoder().decode(this.valueAsUint8Array);
118
- }
119
- get notNullValue() {
120
- this.assertNotDisposed();
121
- if (this._isNull) {
122
- throw new secure_storage_1.SecureStorageError(secure_storage_error_type_1.SecureStorageErrorType.ValueIsNull, (0, i18n_setup_1.getEciesI18nEngine)());
123
- }
124
- return new TextDecoder().decode(this.valueAsUint8Array);
125
- }
126
- get valueAsHexString() {
127
- this.assertNotDisposed();
128
- return (0, utils_1.uint8ArrayToHex)(this.valueAsUint8Array);
129
- }
130
- get valueAsBase64String() {
131
- this.assertNotDisposed();
132
- return btoa(String.fromCharCode(...this.valueAsUint8Array));
133
- }
134
- get hasValue() {
135
- this.assertNotDisposed();
136
- return !this._isNull && this._length > 0;
137
- }
138
- get checksum() {
139
- this.assertNotDisposed();
140
- const deobfuscatedChecksum = new TextDecoder().decode(this.deobfuscateData(this._obfuscatedChecksum));
141
- return deobfuscatedChecksum;
142
- }
143
- get length() {
144
- this.assertNotDisposed();
145
- return this._length;
146
- }
147
- async generateChecksum(data) {
148
- const dataBytes = typeof data === 'string' ? new TextEncoder().encode(data) : data;
149
- const hashArray = await crypto.subtle.digest('SHA-256', new Uint8Array(dataBytes));
150
- return (0, utils_1.uint8ArrayToHex)(new Uint8Array(hashArray));
151
- }
152
- createSimpleChecksum(data) {
153
- let hash = 0;
154
- for (let i = 0; i < data.length; i++) {
155
- hash = ((hash << 5) - hash + data[i]) & 0xffffffff;
156
- }
157
- return hash.toString(16);
158
- }
159
- createSimpleObfuscatedChecksum(data) {
160
- const dataBytes = typeof data === 'string' ? new TextEncoder().encode(data) : data;
161
- const checksum = this.createSimpleChecksum(dataBytes);
162
- return this.obfuscateData(new TextEncoder().encode(checksum));
163
- }
164
- async createObfuscatedChecksum(data) {
165
- const checksum = await this.generateChecksum(data);
166
- const result = this.obfuscateData(new TextEncoder().encode(checksum));
167
- return result;
168
- }
169
- async validateChecksum(data, checksum) {
170
- const generatedChecksum = await this.generateChecksum(data);
171
- return generatedChecksum === checksum;
172
- }
173
- timingSafeEqual(a, b) {
174
- if (a.length !== b.length) {
175
- return false;
176
- }
177
- let result = 0;
178
- for (let i = 0; i < a.length; i++) {
179
- result |= a[i] ^ b[i];
180
- }
181
- return result === 0;
182
- }
183
- async validateObfuscatedChecksum(data) {
184
- const deobfuscatedChecksum = new TextDecoder().decode(this.deobfuscateData(this._obfuscatedChecksum));
185
- return this.validateChecksum(data, deobfuscatedChecksum);
186
- }
187
- obfuscateData(data) {
188
- return xor_1.XorService.xor(data, this._key);
189
- }
190
- deobfuscateData(data) {
191
- return xor_1.XorService.xor(data, this._key);
192
- }
193
- }
194
- exports.SecureString = SecureString;
195
- //# sourceMappingURL=secure-string.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"secure-string.js","sourceRoot":"","sources":["../src/secure-string.ts"],"names":[],"mappings":"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"}
@@ -1,57 +0,0 @@
1
- import { IECIESConstants } from '../interfaces/ecies-consts';
2
- export declare abstract class AESGCMService {
3
- static readonly ALGORITHM_NAME = "AES-GCM";
4
- /**
5
- * Encrypt data using AES-GCM
6
- * @param data Data to encrypt
7
- * @param key Key to use for encryption (must be 16, 24 or 32 bytes for AES)
8
- * @returns Encrypted data
9
- */
10
- static encrypt(data: Uint8Array, key: Uint8Array, authTag?: boolean, eciesParams?: IECIESConstants): Promise<{
11
- encrypted: Uint8Array;
12
- iv: Uint8Array;
13
- tag?: Uint8Array;
14
- }>;
15
- /**
16
- * Combine encrypted data and auth tag into a single Uint8Array
17
- * @param encryptedData The encrypted data
18
- * @param authTag The authentication tag
19
- * @returns The combined Uint8Array
20
- */
21
- static combineEncryptedDataAndTag(encryptedData: Uint8Array, authTag: Uint8Array): Uint8Array;
22
- /**
23
- * Combine IV and encrypted data (with optional auth tag) into a single Uint8Array
24
- * @param iv The initialization vector
25
- * @param encryptedDataWithTag The encrypted data with auth tag already appended (if applicable)
26
- * @returns The combined Uint8Array
27
- */
28
- static combineIvAndEncryptedData(iv: Uint8Array, encryptedDataWithTag: Uint8Array): Uint8Array;
29
- /**
30
- * Combine IV, encrypted data and auth tag into a single Uint8Array
31
- * @param iv The initialization vector
32
- * @param encryptedData The encrypted data
33
- * @param authTag The authentication tag
34
- * @returns The combined Uint8Array
35
- */
36
- static combineIvTagAndEncryptedData(iv: Uint8Array, encryptedData: Uint8Array, authTag: Uint8Array): Uint8Array;
37
- /**
38
- * Split combined encrypted data back into its components
39
- * @param combinedData The combined data containing IV, encrypted data, and optionally auth tag
40
- * @param hasAuthTag Whether the combined data includes an authentication tag
41
- * @returns Object containing the split components
42
- */
43
- static splitEncryptedData(combinedData: Uint8Array, hasAuthTag?: boolean, eciesParams?: IECIESConstants): {
44
- iv: Uint8Array;
45
- encryptedDataWithTag: Uint8Array;
46
- };
47
- /**
48
- * Decrypt data using AES-GCM
49
- * @param iv The initialization vector
50
- * @param encryptedData Data to decrypt (with auth tag appended if authTag is true)
51
- * @param key Key to use for decryption (must be 16, 24 or 32 bytes for AES)
52
- * @param authTag Whether the encrypted data includes an authentication tag
53
- * @returns Decrypted data
54
- */
55
- static decrypt(iv: Uint8Array, encryptedData: Uint8Array, key: Uint8Array, authTag?: boolean, eciesParams?: IECIESConstants): Promise<Uint8Array>;
56
- }
57
- //# sourceMappingURL=aes-gcm.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"aes-gcm.d.ts","sourceRoot":"","sources":["../../src/services/aes-gcm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAK7D,8BAAsB,aAAa;IACjC,gBAAuB,cAAc,aAAa;IAClD;;;;;OAKG;WACiB,OAAO,CACzB,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,UAAU,EACf,OAAO,GAAE,OAAe,EACxB,WAAW,GAAE,eAAiC,GAC7C,OAAO,CAAC;QAAE,SAAS,EAAE,UAAU,CAAC;QAAC,EAAE,EAAE,UAAU,CAAC;QAAC,GAAG,CAAC,EAAE,UAAU,CAAA;KAAE,CAAC;IAgCvE;;;;;OAKG;WACW,0BAA0B,CACtC,aAAa,EAAE,UAAU,EACzB,OAAO,EAAE,UAAU,GAClB,UAAU;IAOb;;;;;OAKG;WACW,yBAAyB,CACrC,EAAE,EAAE,UAAU,EACd,oBAAoB,EAAE,UAAU,GAC/B,UAAU;IAOb;;;;;;OAMG;WACW,4BAA4B,CACxC,EAAE,EAAE,UAAU,EACd,aAAa,EAAE,UAAU,EACzB,OAAO,EAAE,UAAU,GAClB,UAAU;IAQb;;;;;OAKG;WACW,kBAAkB,CAC9B,YAAY,EAAE,UAAU,EACxB,UAAU,GAAE,OAAc,EAC1B,WAAW,GAAE,eAAiC,GAC7C;QAAE,EAAE,EAAE,UAAU,CAAC;QAAC,oBAAoB,EAAE,UAAU,CAAA;KAAE;IAkBvD;;;;;;;OAOG;WACiB,OAAO,CACzB,EAAE,EAAE,UAAU,EACd,aAAa,EAAE,UAAU,EACzB,GAAG,EAAE,UAAU,EACf,OAAO,GAAE,OAAe,EACxB,WAAW,GAAE,eAAiC,GAC7C,OAAO,CAAC,UAAU,CAAC;CAiCvB"}
@@ -1,111 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AESGCMService = void 0;
4
- const constants_1 = require("../constants");
5
- const i18n_setup_1 = require("../i18n-setup");
6
- const enumerations_1 = require("../enumerations");
7
- class AESGCMService {
8
- static ALGORITHM_NAME = 'AES-GCM';
9
- /**
10
- * Encrypt data using AES-GCM
11
- * @param data Data to encrypt
12
- * @param key Key to use for encryption (must be 16, 24 or 32 bytes for AES)
13
- * @returns Encrypted data
14
- */
15
- static async encrypt(data, key, authTag = false, eciesParams = constants_1.Constants.ECIES) {
16
- const cryptoKey = await crypto.subtle.importKey('raw', new Uint8Array(key), { name: AESGCMService.ALGORITHM_NAME }, false, ['encrypt']);
17
- const eciesConsts = eciesParams;
18
- const iv = crypto.getRandomValues(new Uint8Array(eciesConsts.IV_SIZE));
19
- const encryptedResult = await crypto.subtle.encrypt({
20
- name: AESGCMService.ALGORITHM_NAME,
21
- iv,
22
- ...(authTag && { tagLength: eciesConsts.AUTH_TAG_SIZE * 8 }),
23
- }, cryptoKey, new Uint8Array(data));
24
- const encryptedArray = new Uint8Array(encryptedResult);
25
- if (!authTag) {
26
- return { encrypted: encryptedArray, iv };
27
- }
28
- const authTagLengthBytes = eciesConsts.AUTH_TAG_SIZE;
29
- const encryptedBytes = encryptedArray.slice(0, -authTagLengthBytes); // Remove auth tag
30
- const authTagBytes = encryptedArray.slice(-authTagLengthBytes); // Last 16 bytes are auth tag
31
- return { encrypted: encryptedBytes, iv, tag: authTagBytes };
32
- }
33
- /**
34
- * Combine encrypted data and auth tag into a single Uint8Array
35
- * @param encryptedData The encrypted data
36
- * @param authTag The authentication tag
37
- * @returns The combined Uint8Array
38
- */
39
- static combineEncryptedDataAndTag(encryptedData, authTag) {
40
- const combined = new Uint8Array(encryptedData.length + authTag.length);
41
- combined.set(encryptedData);
42
- combined.set(authTag, encryptedData.length);
43
- return combined;
44
- }
45
- /**
46
- * Combine IV and encrypted data (with optional auth tag) into a single Uint8Array
47
- * @param iv The initialization vector
48
- * @param encryptedDataWithTag The encrypted data with auth tag already appended (if applicable)
49
- * @returns The combined Uint8Array
50
- */
51
- static combineIvAndEncryptedData(iv, encryptedDataWithTag) {
52
- const combined = new Uint8Array(iv.length + encryptedDataWithTag.length);
53
- combined.set(iv);
54
- combined.set(encryptedDataWithTag, iv.length);
55
- return combined;
56
- }
57
- /**
58
- * Combine IV, encrypted data and auth tag into a single Uint8Array
59
- * @param iv The initialization vector
60
- * @param encryptedData The encrypted data
61
- * @param authTag The authentication tag
62
- * @returns The combined Uint8Array
63
- */
64
- static combineIvTagAndEncryptedData(iv, encryptedData, authTag) {
65
- const encryptedWithTag = AESGCMService.combineEncryptedDataAndTag(encryptedData, authTag);
66
- return AESGCMService.combineIvAndEncryptedData(iv, encryptedWithTag);
67
- }
68
- /**
69
- * Split combined encrypted data back into its components
70
- * @param combinedData The combined data containing IV, encrypted data, and optionally auth tag
71
- * @param hasAuthTag Whether the combined data includes an authentication tag
72
- * @returns Object containing the split components
73
- */
74
- static splitEncryptedData(combinedData, hasAuthTag = true, eciesParams = constants_1.Constants.ECIES) {
75
- const eciesConsts = eciesParams;
76
- const ivLength = eciesConsts.IV_SIZE;
77
- const tagLength = hasAuthTag ? eciesConsts.AUTH_TAG_SIZE : 0;
78
- if (combinedData.length < ivLength + tagLength) {
79
- const engine = (0, i18n_setup_1.getEciesI18nEngine)();
80
- throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_ECIESError_CombinedDataTooShortForComponents));
81
- }
82
- const iv = combinedData.slice(0, ivLength);
83
- const encryptedDataWithTag = combinedData.slice(ivLength);
84
- return { iv, encryptedDataWithTag };
85
- }
86
- /**
87
- * Decrypt data using AES-GCM
88
- * @param iv The initialization vector
89
- * @param encryptedData Data to decrypt (with auth tag appended if authTag is true)
90
- * @param key Key to use for decryption (must be 16, 24 or 32 bytes for AES)
91
- * @param authTag Whether the encrypted data includes an authentication tag
92
- * @returns Decrypted data
93
- */
94
- static async decrypt(iv, encryptedData, key, authTag = false, eciesParams = constants_1.Constants.ECIES) {
95
- const eciesConsts = eciesParams;
96
- const cryptoKey = await crypto.subtle.importKey('raw', new Uint8Array(key), { name: AESGCMService.ALGORITHM_NAME }, false, ['decrypt']);
97
- if (!authTag) {
98
- const decrypted = await crypto.subtle.decrypt({ name: AESGCMService.ALGORITHM_NAME, iv: new Uint8Array(iv) }, cryptoKey, new Uint8Array(encryptedData));
99
- return new Uint8Array(decrypted);
100
- }
101
- // Decrypt with auth tag (already appended to encryptedData)
102
- const decryptedResult = await crypto.subtle.decrypt({
103
- name: AESGCMService.ALGORITHM_NAME,
104
- iv: new Uint8Array(iv),
105
- tagLength: eciesConsts.AUTH_TAG_SIZE * 8,
106
- }, cryptoKey, new Uint8Array(encryptedData));
107
- return new Uint8Array(decryptedResult);
108
- }
109
- }
110
- exports.AESGCMService = AESGCMService;
111
- //# sourceMappingURL=aes-gcm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"aes-gcm.js","sourceRoot":"","sources":["../../src/services/aes-gcm.ts"],"names":[],"mappings":"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"}
@@ -1,51 +0,0 @@
1
- import { IECIESConfig } from '../../interfaces/ecies-config';
2
- import { SecureString } from '../../secure-string';
3
- import { ISimpleKeyPair, IWalletSeed } from './interfaces';
4
- import { IECIESConstants } from '../../interfaces/ecies-consts';
5
- /**
6
- * Browser-compatible crypto core for ECIES operations
7
- * Uses @scure libraries for browser compatibility
8
- */
9
- export declare class EciesCryptoCore {
10
- protected readonly _config: IECIESConfig;
11
- protected readonly _eciesConsts: IECIESConstants;
12
- constructor(config: IECIESConfig, eciesParams?: IECIESConstants);
13
- get config(): IECIESConfig;
14
- /**
15
- * Validates and normalizes a public key for ECIES operations
16
- */
17
- normalizePublicKey(publicKey: Uint8Array): Uint8Array;
18
- /**
19
- * Generate a new mnemonic
20
- */
21
- generateNewMnemonic(): SecureString;
22
- /**
23
- * Generate wallet and seed from mnemonic
24
- */
25
- walletAndSeedFromMnemonic(mnemonic: SecureString): IWalletSeed;
26
- /**
27
- * Create a simple key pair from a seed
28
- */
29
- seedToSimpleKeyPair(seed: Uint8Array): ISimpleKeyPair;
30
- /**
31
- * Create a simple key pair from a mnemonic
32
- */
33
- mnemonicToSimpleKeyPair(mnemonic: SecureString): ISimpleKeyPair;
34
- /**
35
- * Generate a random private key
36
- */
37
- generatePrivateKey(): Uint8Array;
38
- /**
39
- * Get public key from private key
40
- */
41
- getPublicKey(privateKey: Uint8Array): Uint8Array;
42
- /**
43
- * Generate ephemeral key pair for ECIES
44
- */
45
- generateEphemeralKeyPair(): Promise<ISimpleKeyPair>;
46
- /**
47
- * Compute ECDH shared secret
48
- */
49
- computeSharedSecret(privateKey: Uint8Array, publicKey: Uint8Array): Uint8Array;
50
- }
51
- //# sourceMappingURL=crypto-core.d.ts.map