neozipkit 0.1.1 → 0.3.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 (330) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +371 -200
  3. package/contracts/ABI.txt +889 -0
  4. package/contracts/Bytecode.txt +1 -0
  5. package/contracts/COMPILATION_NOTES.md +59 -0
  6. package/contracts/QUICK_DEPLOY.md +286 -0
  7. package/contracts/README.md +256 -0
  8. package/contracts/VERIFICATION.md +308 -0
  9. package/contracts/deploy-interactive.js +448 -0
  10. package/contracts/deployment-arbitrum-sepolia.json +12 -0
  11. package/contracts/deployment-arbitrum.json +12 -0
  12. package/contracts/deployment-eth-sepolia.json +12 -0
  13. package/contracts/hardhat.config.js +114 -0
  14. package/contracts/package.json +20 -0
  15. package/contracts/scripts/compile-and-extract.js +119 -0
  16. package/contracts/scripts/verify-contract.js +223 -0
  17. package/contracts/src/{NZIP-NFT-Private.sol → NZIP-NFT-v2.0.sol} +66 -151
  18. package/contracts/src/NZIP-NFT.sol +9 -15
  19. package/dist/{browser → blockchain/browser}/TokenVerifierBrowser.d.ts +11 -20
  20. package/dist/blockchain/browser/TokenVerifierBrowser.d.ts.map +1 -0
  21. package/dist/{browser → blockchain/browser}/TokenVerifierBrowser.js +106 -92
  22. package/dist/blockchain/browser/TokenVerifierBrowser.js.map +1 -0
  23. package/dist/blockchain/browser/WalletManagerBrowser.d.ts +98 -0
  24. package/dist/blockchain/browser/WalletManagerBrowser.d.ts.map +1 -0
  25. package/dist/blockchain/browser/WalletManagerBrowser.js +434 -0
  26. package/dist/blockchain/browser/WalletManagerBrowser.js.map +1 -0
  27. package/dist/blockchain/browser/ZipkitMinterBrowser.d.ts +58 -0
  28. package/dist/blockchain/browser/ZipkitMinterBrowser.d.ts.map +1 -0
  29. package/dist/blockchain/browser/ZipkitMinterBrowser.js +317 -0
  30. package/dist/blockchain/browser/ZipkitMinterBrowser.js.map +1 -0
  31. package/dist/blockchain/browser/index.d.ts +11 -0
  32. package/dist/blockchain/browser/index.d.ts.map +1 -0
  33. package/dist/blockchain/browser/index.js +16 -0
  34. package/dist/blockchain/browser/index.js.map +1 -0
  35. package/dist/{server/blockchain/WalletAnalyzer.d.ts → blockchain/core/WalletManager.d.ts} +69 -26
  36. package/dist/blockchain/core/WalletManager.d.ts.map +1 -0
  37. package/dist/{server/blockchain/WalletAnalyzer.js → blockchain/core/WalletManager.js} +172 -160
  38. package/dist/blockchain/core/WalletManager.js.map +1 -0
  39. package/dist/blockchain/core/ZipkitMinter.d.ts +141 -0
  40. package/dist/blockchain/core/ZipkitMinter.d.ts.map +1 -0
  41. package/dist/blockchain/core/ZipkitMinter.js +548 -0
  42. package/dist/blockchain/core/ZipkitMinter.js.map +1 -0
  43. package/dist/blockchain/core/ZipkitOTS.d.ts +126 -0
  44. package/dist/blockchain/core/ZipkitOTS.d.ts.map +1 -0
  45. package/dist/blockchain/core/ZipkitOTS.js +506 -0
  46. package/dist/blockchain/core/ZipkitOTS.js.map +1 -0
  47. package/dist/blockchain/core/ZipkitVerifier.d.ts +177 -0
  48. package/dist/blockchain/core/ZipkitVerifier.d.ts.map +1 -0
  49. package/dist/blockchain/core/ZipkitVerifier.js +632 -0
  50. package/dist/blockchain/core/ZipkitVerifier.js.map +1 -0
  51. package/dist/blockchain/core/contracts.d.ts +83 -0
  52. package/dist/blockchain/core/contracts.d.ts.map +1 -0
  53. package/dist/blockchain/core/contracts.js +341 -0
  54. package/dist/blockchain/core/contracts.js.map +1 -0
  55. package/dist/blockchain/core/index.d.ts +12 -0
  56. package/dist/blockchain/core/index.d.ts.map +1 -0
  57. package/dist/blockchain/core/index.js +59 -0
  58. package/dist/blockchain/core/index.js.map +1 -0
  59. package/dist/blockchain/index.d.ts +11 -0
  60. package/dist/blockchain/index.d.ts.map +1 -0
  61. package/dist/blockchain/index.js +34 -0
  62. package/dist/blockchain/index.js.map +1 -0
  63. package/dist/blockchain/node/WalletManagerNode.d.ts +47 -0
  64. package/dist/blockchain/node/WalletManagerNode.d.ts.map +1 -0
  65. package/dist/blockchain/node/WalletManagerNode.js +203 -0
  66. package/dist/blockchain/node/WalletManagerNode.js.map +1 -0
  67. package/dist/blockchain/node/index.d.ts +12 -0
  68. package/dist/blockchain/node/index.d.ts.map +1 -0
  69. package/dist/blockchain/node/index.js +24 -0
  70. package/dist/blockchain/node/index.js.map +1 -0
  71. package/dist/browser/ZipkitBrowser.d.ts +27 -0
  72. package/dist/browser/ZipkitBrowser.d.ts.map +1 -0
  73. package/dist/browser/{ZipKitBrowser.js → ZipkitBrowser.js} +96 -43
  74. package/dist/browser/ZipkitBrowser.js.map +1 -0
  75. package/dist/browser/index.d.ts +12 -0
  76. package/dist/browser/index.d.ts.map +1 -0
  77. package/dist/browser/index.js +42 -0
  78. package/dist/browser/index.js.map +1 -0
  79. package/dist/browser-esm/index.d.ts +12 -0
  80. package/dist/browser-esm/index.js +59559 -0
  81. package/dist/browser-esm/index.js.map +7 -0
  82. package/dist/browser-umd/index.d.ts +12 -0
  83. package/dist/browser-umd/index.js +59576 -0
  84. package/dist/browser-umd/index.js.map +7 -0
  85. package/dist/browser-umd/index.min.js +63 -0
  86. package/dist/browser.d.ts +8 -17
  87. package/dist/browser.js +13 -29
  88. package/dist/core/ZipCompress.d.ts +99 -0
  89. package/dist/core/ZipCompress.d.ts.map +1 -0
  90. package/dist/core/ZipCompress.js +309 -0
  91. package/dist/core/ZipCompress.js.map +1 -0
  92. package/dist/core/ZipDecompress.d.ts +58 -0
  93. package/dist/core/ZipDecompress.d.ts.map +1 -0
  94. package/dist/core/ZipDecompress.js +172 -0
  95. package/dist/core/ZipDecompress.js.map +1 -0
  96. package/dist/{shared → core}/ZipEntry.d.ts +8 -1
  97. package/dist/core/ZipEntry.d.ts.map +1 -0
  98. package/dist/{shared → core}/ZipEntry.js +224 -81
  99. package/dist/core/ZipEntry.js.map +1 -0
  100. package/dist/core/Zipkit.d.ts +315 -0
  101. package/dist/core/Zipkit.d.ts.map +1 -0
  102. package/dist/core/Zipkit.js +647 -0
  103. package/dist/core/Zipkit.js.map +1 -0
  104. package/dist/core/components/HashCalculator.d.ts +138 -0
  105. package/dist/core/components/HashCalculator.d.ts.map +1 -0
  106. package/dist/core/components/HashCalculator.js +360 -0
  107. package/dist/core/components/HashCalculator.js.map +1 -0
  108. package/dist/core/components/Logger.d.ts +73 -0
  109. package/dist/core/components/Logger.d.ts.map +1 -0
  110. package/dist/core/components/Logger.js +156 -0
  111. package/dist/core/components/Logger.js.map +1 -0
  112. package/dist/core/components/ProgressTracker.d.ts +43 -0
  113. package/dist/core/components/ProgressTracker.d.ts.map +1 -0
  114. package/dist/core/components/ProgressTracker.js +112 -0
  115. package/dist/core/components/ProgressTracker.js.map +1 -0
  116. package/dist/{shared → core}/components/Support.d.ts +1 -0
  117. package/dist/core/components/Support.d.ts.map +1 -0
  118. package/dist/{shared → core}/components/Support.js +1 -0
  119. package/dist/core/components/Support.js.map +1 -0
  120. package/dist/{shared → core}/components/Util.d.ts +7 -2
  121. package/dist/core/components/Util.d.ts.map +1 -0
  122. package/dist/{shared → core}/components/Util.js +14 -34
  123. package/dist/core/components/Util.js.map +1 -0
  124. package/dist/{shared → core}/constants/Errors.d.ts +1 -2
  125. package/dist/core/constants/Errors.d.ts.map +1 -0
  126. package/dist/{shared → core}/constants/Errors.js +1 -3
  127. package/dist/core/constants/Errors.js.map +1 -0
  128. package/dist/{shared → core}/constants/Headers.d.ts +3 -0
  129. package/dist/core/constants/Headers.d.ts.map +1 -0
  130. package/dist/{shared → core}/constants/Headers.js +20 -17
  131. package/dist/core/constants/Headers.js.map +1 -0
  132. package/dist/core/encryption/Manager.d.ts +58 -0
  133. package/dist/core/encryption/Manager.d.ts.map +1 -0
  134. package/dist/core/encryption/Manager.js +121 -0
  135. package/dist/core/encryption/Manager.js.map +1 -0
  136. package/dist/core/encryption/ZipCrypto.d.ts +172 -0
  137. package/dist/core/encryption/ZipCrypto.d.ts.map +1 -0
  138. package/dist/core/encryption/ZipCrypto.js +554 -0
  139. package/dist/core/encryption/ZipCrypto.js.map +1 -0
  140. package/dist/core/encryption/index.d.ts +9 -0
  141. package/dist/core/encryption/index.d.ts.map +1 -0
  142. package/dist/core/encryption/index.js +17 -0
  143. package/dist/core/encryption/index.js.map +1 -0
  144. package/dist/core/encryption/types.d.ts +29 -0
  145. package/dist/core/encryption/types.d.ts.map +1 -0
  146. package/dist/core/encryption/types.js +12 -0
  147. package/dist/core/encryption/types.js.map +1 -0
  148. package/dist/core/index.d.ts +24 -0
  149. package/dist/core/index.d.ts.map +1 -0
  150. package/dist/core/index.js +57 -0
  151. package/dist/core/index.js.map +1 -0
  152. package/dist/{shared → core}/version.d.ts +1 -0
  153. package/dist/core/version.d.ts.map +1 -0
  154. package/dist/core/version.js +31 -0
  155. package/dist/core/version.js.map +1 -0
  156. package/dist/index.d.ts +8 -25
  157. package/dist/index.d.ts.map +1 -0
  158. package/dist/index.js +29 -47
  159. package/dist/index.js.map +1 -0
  160. package/dist/node/ZipCompressNode.d.ts +123 -0
  161. package/dist/node/ZipCompressNode.d.ts.map +1 -0
  162. package/dist/node/ZipCompressNode.js +576 -0
  163. package/dist/node/ZipCompressNode.js.map +1 -0
  164. package/dist/node/ZipDecompressNode.d.ts +120 -0
  165. package/dist/node/ZipDecompressNode.d.ts.map +1 -0
  166. package/dist/node/ZipDecompressNode.js +461 -0
  167. package/dist/node/ZipDecompressNode.js.map +1 -0
  168. package/dist/node/ZipkitNode.d.ts +406 -0
  169. package/dist/node/ZipkitNode.d.ts.map +1 -0
  170. package/dist/node/ZipkitNode.js +1305 -0
  171. package/dist/node/ZipkitNode.js.map +1 -0
  172. package/dist/node/index.d.ts +26 -0
  173. package/dist/node/index.d.ts.map +1 -0
  174. package/dist/node/index.js +65 -0
  175. package/dist/node/index.js.map +1 -0
  176. package/dist/types/index.d.ts +59 -0
  177. package/dist/types/index.d.ts.map +1 -0
  178. package/dist/types/index.js +36 -1
  179. package/dist/types/index.js.map +1 -0
  180. package/examples/README.md +269 -0
  181. package/examples/blockchain-tokenize.ts +354 -0
  182. package/examples/create-zip.ts +172 -0
  183. package/examples/extract-zip.ts +158 -0
  184. package/examples/list-zip.ts +161 -0
  185. package/examples/test-files/data.json +116 -0
  186. package/examples/test-files/document.md +80 -0
  187. package/examples/test-files/document.txt +2 -0
  188. package/examples/test-files/file1.txt +48 -0
  189. package/examples/test-files/file2.txt +80 -0
  190. package/examples/tsconfig.json +44 -0
  191. package/examples/unzip-token.ts +6 -3
  192. package/examples/verify-tokenized-zip.ts +305 -0
  193. package/package.json +117 -23
  194. package/src/blockchain/README.md +222 -0
  195. package/src/{browser → blockchain/browser}/TokenVerifierBrowser.ts +125 -79
  196. package/src/blockchain/browser/WalletManagerBrowser.ts +486 -0
  197. package/src/blockchain/browser/ZipkitMinterBrowser.ts +400 -0
  198. package/src/blockchain/browser/index.ts +13 -0
  199. package/src/blockchain/core/WalletManager.ts +436 -0
  200. package/src/blockchain/core/ZipkitMinter.ts +716 -0
  201. package/src/blockchain/core/ZipkitOTS.ts +588 -0
  202. package/src/blockchain/core/ZipkitVerifier.ts +853 -0
  203. package/src/blockchain/core/contracts.ts +370 -0
  204. package/src/blockchain/core/index.ts +71 -0
  205. package/src/blockchain/index.ts +27 -0
  206. package/src/blockchain/node/WalletManagerNode.ts +171 -0
  207. package/src/blockchain/node/index.ts +40 -0
  208. package/src/browser/{ZipKitBrowser.ts → ZipkitBrowser.ts} +104 -41
  209. package/src/browser/index.esm.ts +37 -0
  210. package/src/browser/index.ts +25 -0
  211. package/src/core/ZipCompress.ts +398 -0
  212. package/src/core/ZipDecompress.ts +212 -0
  213. package/src/{shared → core}/ZipEntry.ts +239 -89
  214. package/src/core/Zipkit.ts +794 -0
  215. package/src/core/components/HashCalculator.ts +384 -0
  216. package/src/core/components/Logger.ts +180 -0
  217. package/src/core/components/ProgressTracker.ts +134 -0
  218. package/src/{shared → core}/components/Util.ts +12 -34
  219. package/src/{shared → core}/constants/Errors.ts +0 -4
  220. package/src/{shared → core}/constants/Headers.ts +19 -17
  221. package/src/core/encryption/Manager.ts +137 -0
  222. package/src/core/encryption/ZipCrypto.ts +650 -0
  223. package/src/core/encryption/index.ts +15 -0
  224. package/src/core/encryption/types.ts +33 -0
  225. package/src/core/index.ts +34 -0
  226. package/src/core/version.ts +33 -0
  227. package/src/index.ts +54 -32
  228. package/src/node/ZipCompressNode.ts +632 -0
  229. package/src/node/ZipDecompressNode.ts +508 -0
  230. package/src/node/ZipkitNode.ts +1559 -0
  231. package/src/node/index.ts +69 -0
  232. package/src/types/index.ts +131 -1
  233. package/src/types/opentimestamps.d.ts +1 -23
  234. package/contracts/Lock.sol +0 -34
  235. package/contracts/bytecode.txt +0 -1
  236. package/contracts/compile-contract.js +0 -168
  237. package/contracts/deploy/deploy-both-contracts.js +0 -286
  238. package/contracts/deploy/deploy-enhanced-contract.js +0 -197
  239. package/contracts/deploy/deploy-private-contract.js +0 -190
  240. package/contracts/deploy/deploy-public-clean.js +0 -1063
  241. package/contracts/deploy/deploy-public-contract.js +0 -1107
  242. package/contracts/deployment.config.example.js +0 -25
  243. package/contracts/remix-compile.js +0 -222
  244. package/contracts/setup-deployment.js +0 -51
  245. package/contracts/src/ZipFileNFT-DEPRECATED-6field.sol +0 -260
  246. package/contracts/src/ZipFileNFT-DEPRECATED-Enhanced.sol +0 -289
  247. package/dist/browser/CertificateGeneratorBrowser.d.ts +0 -75
  248. package/dist/browser/CertificateGeneratorBrowser.js +0 -433
  249. package/dist/browser/ZipKitBrowser.d.ts +0 -18
  250. package/dist/browser/ZipKitStampBrowser.d.ts +0 -2
  251. package/dist/browser/ZipKitStampBrowser.js +0 -12
  252. package/dist/browser-index.d.ts +0 -21
  253. package/dist/browser-index.js +0 -58
  254. package/dist/server/blockchain/CertificateToken.d.ts +0 -48
  255. package/dist/server/blockchain/CertificateToken.js +0 -386
  256. package/dist/server/blockchain/NFTMinter.d.ts +0 -41
  257. package/dist/server/blockchain/NFTMinter.js +0 -323
  258. package/dist/server/blockchain/TokenQuerier.d.ts +0 -31
  259. package/dist/server/blockchain/TokenQuerier.js +0 -259
  260. package/dist/server/blockchain/TokenVerifier.d.ts +0 -20
  261. package/dist/server/blockchain/TokenVerifier.js +0 -395
  262. package/dist/server/blockchain/WalletFormatter.d.ts +0 -39
  263. package/dist/server/blockchain/WalletFormatter.js +0 -196
  264. package/dist/server/blockchain/WalletManager.d.ts +0 -46
  265. package/dist/server/blockchain/WalletManager.js +0 -294
  266. package/dist/server/blockchain/ZipMetadata.d.ts +0 -27
  267. package/dist/server/blockchain/ZipMetadata.js +0 -131
  268. package/dist/server/blockchain/ZipTokenProcessor.d.ts +0 -44
  269. package/dist/server/blockchain/ZipTokenProcessor.js +0 -204
  270. package/dist/server/blockchain/constants.d.ts +0 -102
  271. package/dist/server/blockchain/constants.js +0 -968
  272. package/dist/server/blockchain/index.d.ts +0 -9
  273. package/dist/server/blockchain/index.js +0 -44
  274. package/dist/server/blockchain/test-certificate.d.ts +0 -8
  275. package/dist/server/blockchain/test-certificate.js +0 -100
  276. package/dist/server/blockchain/types.d.ts +0 -69
  277. package/dist/server/blockchain/types.js +0 -51
  278. package/dist/server/platform/server/ZipKitServer.d.ts +0 -105
  279. package/dist/server/platform/server/ZipKitServer.js +0 -437
  280. package/dist/server/platform/servercomponents/ZipKitOTS.d.ts +0 -91
  281. package/dist/server/platform/servercomponents/ZipKitOTS.js +0 -271
  282. package/dist/shared/ZipKit.d.ts +0 -249
  283. package/dist/shared/ZipKit.js +0 -789
  284. package/dist/shared/components/CertificateOTS.d.ts +0 -15
  285. package/dist/shared/components/CertificateOTS.js +0 -116
  286. package/dist/shared/components/FileSys.d.ts +0 -2
  287. package/dist/shared/components/FileSys.js +0 -113
  288. package/dist/shared/components/HashAccumulator.d.ts +0 -55
  289. package/dist/shared/components/HashAccumulator.js +0 -100
  290. package/dist/shared/components/ZipCrypto.d.ts +0 -3
  291. package/dist/shared/components/ZipCrypto.js +0 -78
  292. package/dist/shared/components/merkleTree.d.ts +0 -66
  293. package/dist/shared/components/merkleTree.js +0 -136
  294. package/dist/shared/types/index.d.ts +0 -21
  295. package/dist/shared/types/index.js +0 -3
  296. package/dist/shared/types.d.ts +0 -33
  297. package/dist/shared/types.js +0 -8
  298. package/dist/shared/version.js +0 -7
  299. package/src/browser/CertificateGeneratorBrowser.ts +0 -498
  300. package/src/browser/ZipKitStampBrowser.ts +0 -9
  301. package/src/browser-index.ts +0 -36
  302. package/src/server/blockchain/CertificateToken.ts +0 -444
  303. package/src/server/blockchain/NFTMinter.ts +0 -357
  304. package/src/server/blockchain/TokenQuerier.ts +0 -287
  305. package/src/server/blockchain/TokenVerifier.ts +0 -453
  306. package/src/server/blockchain/WalletAnalyzer.ts +0 -397
  307. package/src/server/blockchain/WalletFormatter.ts +0 -206
  308. package/src/server/blockchain/WalletManager.ts +0 -294
  309. package/src/server/blockchain/ZipMetadata.ts +0 -117
  310. package/src/server/blockchain/ZipTokenProcessor.ts +0 -234
  311. package/src/server/blockchain/constants.ts +0 -969
  312. package/src/server/blockchain/index.ts +0 -42
  313. package/src/server/blockchain/test-certificate.ts +0 -137
  314. package/src/server/blockchain/types.ts +0 -134
  315. package/src/server/platform/server/ZipKitServer.ts +0 -459
  316. package/src/server/platform/servercomponents/ZipKitOTS.ts +0 -313
  317. package/src/server/platform/servercomponents/opentimestamps.d.ts +0 -23
  318. package/src/shared/ZipKit.ts +0 -899
  319. package/src/shared/components/CertificateOTS.ts +0 -132
  320. package/src/shared/components/FileSys.ts +0 -87
  321. package/src/shared/components/HashAccumulator.ts +0 -113
  322. package/src/shared/components/ZipCrypto.ts +0 -91
  323. package/src/shared/components/merkleTree.ts +0 -162
  324. package/src/shared/types/index.ts +0 -25
  325. package/src/shared/types/modules.d.ts +0 -22
  326. package/src/shared/types/opentimestamps.d.ts +0 -23
  327. package/src/shared/types.d.ts +0 -8
  328. package/src/shared/types.ts +0 -43
  329. package/src/shared/version.ts +0 -4
  330. /package/src/{shared → core}/components/Support.ts +0 -0
@@ -6,6 +6,7 @@
6
6
 
7
7
  import Support from "./Support";
8
8
  import Errors from "../constants/Errors";
9
+ import { TIMESTAMP_SUBMITTED, TIMESTAMP_METADATA, TOKENIZED_METADATA } from "../constants/Headers";
9
10
 
10
11
  export const DATATYPE = {
11
12
  STRING: "string",
@@ -17,40 +18,6 @@ export const DATATYPE = {
17
18
  STREAM: "stream",
18
19
  };
19
20
 
20
- // Generate the CRC32 table
21
- const crcTable = new Uint32Array(256).map((t, crc) => {
22
- for (let j = 0; j < 8; j++) {
23
- if (0 !== (crc & 1)) {
24
- crc = (crc >>> 1) ^ 0xedb88320;
25
- } else {
26
- crc >>>= 1;
27
- }
28
- }
29
- return crc >>> 0;
30
- });
31
-
32
- // crc32 byte single update (actually same function is part of utils.crc32 function :) )
33
- export const crc32update = (pCrc32: number, bval: number) => {
34
- return crcTable[(pCrc32 ^ bval) & 0xff] ^ (pCrc32 >>> 8);
35
- };
36
-
37
- // Return the CRC32 of a buffer
38
- export function crc32(buf: Buffer): number {
39
- if (typeof buf === "string") {
40
- buf = Buffer.from(buf, "utf8");
41
- }
42
- // Generate crcTable
43
- // if (!crcTable.length) genCRCTable();
44
-
45
- let len = buf.length;
46
- let crc = ~0;
47
- for (let off = 0; off < len; )
48
- crc = crcTable[(crc ^ buf[off++]) & 0xff] ^ (crc >>> 8);
49
-
50
- // xor and cast as uint32 number
51
- return ~crc >>> 0;
52
- };
53
-
54
21
  // Parse a 64-bit unsigned integer from a buffer
55
22
  export function readBigUInt64LE(buffer: Buffer, index: number): number {
56
23
  var buf = Buffer.from(buffer.subarray(index, index + 8));
@@ -111,3 +78,14 @@ export function getTypeOf(input: string|Buffer|Blob|Array<any>|ArrayBuffer|Uint8
111
78
  throw new Error(Errors.DATATYPE_UNSUPPORTED);
112
79
  }
113
80
  };
81
+
82
+ /**
83
+ * Check if a filename is a metadata file
84
+ * @param filename The filename to check
85
+ * @returns True if the file is a metadata file (timestamp or tokenized metadata)
86
+ */
87
+ export const isMetadataFile = (filename: string): boolean => {
88
+ return filename === TIMESTAMP_SUBMITTED ||
89
+ filename === TIMESTAMP_METADATA ||
90
+ filename === TOKENIZED_METADATA;
91
+ };
@@ -73,10 +73,6 @@ export default {
73
73
  DECOMPRESSION_ERROR: 'Error occurred during decompression',
74
74
 
75
75
  ENCRYPT_FAILED: 'Encryption failed',
76
-
77
- // Certificate error messages
78
- CERTIFICATE_OTS_BAD: 'Unable to create OTS certificate, bad OTS timestamp',
79
- CERTIFICATE_OTS_FAILED: 'Failed to create OTS certificate',
80
76
  };
81
77
 
82
78
 
@@ -144,28 +144,30 @@ export const EXTENSIBLE_DATA_FIELDS = {
144
144
 
145
145
  // Header IDs
146
146
  export const HDR_ID = {
147
- ZIP64: 0x0001,
148
- AVINFO: 0x0007,
149
- PFS: 0x0008,
150
- OS2: 0x0009,
151
- NTFS: 0x000a,
152
- OPENVMS: 0x000c,
153
- UNIX: 0x000d,
154
- FORK: 0x000e,
155
- PATCH: 0x000f,
156
- x509PKCS7: 0x0014,
157
- x509CERT_IDF: 0x0015,
158
- x509CERT_IDC: 0x0016,
159
- STRONG_ENC: 0x0017,
160
- RECORD_MGT: 0x0018,
161
- x509PKCS7RL: 0x0019,
162
- IBM1: 0x0065,
163
- IBM2: 0x0066,
147
+ ZIP64: 0x0001, // ZIP64 Extended Information Extra Field
148
+ AVINFO: 0x0007, // AV Info
149
+ PFS: 0x0008, // PFS Extra Field
150
+ OS2: 0x0009, // OS/2 Extra Field
151
+ NTFS: 0x000a, // NTFS Extra Field
152
+ OPENVMS: 0x000c, // OpenVMS Extra Field
153
+ UNIX: 0x000d, // Unix Extra Field
154
+ FORK: 0x000e, // Fork Data Extra Field
155
+ PATCH: 0x000f, // Patch Descriptor Extra Field
156
+ x509PKCS7: 0x0014, // X.509 Certificate Store (PKCS#7)
157
+ x509CERT_IDF: 0x0015, // X.509 Certificate ID and Fingerprint
158
+ x509CERT_IDC: 0x0016, // X.509 Certificate ID and Certificate
159
+ STRONG_ENC: 0x0017, // Strong Encryption Header
160
+ RECORD_MGT: 0x0018, // Record Management Controls
161
+ x509PKCS7RL: 0x0019, // X.509 Certificate Revocation List (PKCS#7)
162
+ IBM1: 0x0065, // IBM S/390 (Z390) - Attribute
163
+ IBM2: 0x0066, // IBM S/390 (Z390) - Attribute
164
164
  SHA256: 0x014E, // SHA256 "N\01" with 64 bytes (256 bit) of SHA256 hash data
165
165
  POSZIP: 0x4690, // POSZIP 4690
166
166
  UNV_TIME: 0x5455, // Universal Time (UT) (32-bit) 5 data bytes
167
167
  UID_GID: 0x7875, // Unix UID/GID (any size)
168
168
  UNICODE_PATH: 0x7075, // Info-ZIP Unicode Path Extra Field
169
+ SYMLINK: 0x7855, // Unix Symbolic Link Extra Field
170
+ HARDLINK: 0x7865, // Unix Hard Link Extra Field
169
171
  };
170
172
 
171
173
  // File System
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Encryption Manager for NeoZipKit
3
+ * Manages different encryption providers and provides a unified interface
4
+ */
5
+
6
+ import { EncryptionProvider, EncryptionOptions, EncryptionResult, DecryptionResult, EncryptionMethod } from './types';
7
+ import { ZipCrypto } from './ZipCrypto';
8
+
9
+ export class EncryptionManager {
10
+ private providers: Map<EncryptionMethod, EncryptionProvider> = new Map();
11
+
12
+ constructor() {
13
+ // Register default encryption providers
14
+ this.registerProvider(new ZipCrypto());
15
+ }
16
+
17
+ /**
18
+ * Register a new encryption provider
19
+ */
20
+ registerProvider(provider: EncryptionProvider): void {
21
+ if (provider.canHandle(EncryptionMethod.ZIP_CRYPTO)) {
22
+ this.providers.set(EncryptionMethod.ZIP_CRYPTO, provider);
23
+ }
24
+ }
25
+
26
+ /**
27
+ * Get available encryption methods
28
+ */
29
+ getAvailableMethods(): EncryptionMethod[] {
30
+ return Array.from(this.providers.keys());
31
+ }
32
+
33
+ /**
34
+ * Get encryption provider for a specific method
35
+ */
36
+ getProvider(method: EncryptionMethod): EncryptionProvider | null {
37
+ return this.providers.get(method) || null;
38
+ }
39
+
40
+ /**
41
+ * Encrypt data using specified method
42
+ */
43
+ async encrypt(data: Buffer, options: EncryptionOptions): Promise<EncryptionResult> {
44
+ const provider = this.getProvider(options.method);
45
+ if (!provider) {
46
+ return {
47
+ success: false,
48
+ error: `No encryption provider available for method ${options.method}`
49
+ };
50
+ }
51
+
52
+ return await provider.encrypt(data, options);
53
+ }
54
+
55
+ /**
56
+ * Decrypt data using specified method
57
+ */
58
+ async decrypt(data: Buffer, options: EncryptionOptions): Promise<DecryptionResult> {
59
+ const provider = this.getProvider(options.method);
60
+ if (!provider) {
61
+ return {
62
+ success: false,
63
+ error: `No decryption provider available for method ${options.method}`
64
+ };
65
+ }
66
+
67
+ return await provider.decrypt(data, options);
68
+ }
69
+
70
+ /**
71
+ * Get recommended encryption method (ZIP_CRYPTO)
72
+ */
73
+ getRecommendedMethod(): EncryptionMethod {
74
+ return EncryptionMethod.ZIP_CRYPTO;
75
+ }
76
+
77
+ /**
78
+ * Validate encryption options
79
+ */
80
+ validateOptions(options: EncryptionOptions): { isValid: boolean; errors: string[] } {
81
+ const errors: string[] = [];
82
+
83
+ if (!options.method) {
84
+ errors.push('Encryption method is required');
85
+ }
86
+
87
+ if (!options.password || options.password.length === 0) {
88
+ errors.push('Password is required');
89
+ }
90
+
91
+ if (options.password && options.password.length < 4) {
92
+ errors.push('Password must be at least 4 characters long');
93
+ }
94
+
95
+ return {
96
+ isValid: errors.length === 0,
97
+ errors: errors
98
+ };
99
+ }
100
+
101
+ /**
102
+ * Get encryption method info
103
+ */
104
+ getMethodInfo(method: EncryptionMethod): { name: string; keyLength: number; secure: boolean } | null {
105
+ const provider = this.getProvider(method);
106
+ if (!provider) {
107
+ return null;
108
+ }
109
+
110
+ return {
111
+ name: provider.getMethodName(),
112
+ keyLength: provider.getKeyLength(),
113
+ secure: false
114
+ };
115
+ }
116
+
117
+ /**
118
+ * List all available encryption methods with their details
119
+ */
120
+ listMethods(): Array<{ method: EncryptionMethod; name: string; keyLength: number; secure: boolean }> {
121
+ const methods: Array<{ method: EncryptionMethod; name: string; keyLength: number; secure: boolean }> = [];
122
+
123
+ for (const [method, provider] of this.providers) {
124
+ methods.push({
125
+ method: method,
126
+ name: provider.getMethodName(),
127
+ keyLength: provider.getKeyLength(),
128
+ secure: false
129
+ });
130
+ }
131
+
132
+ return methods.sort((a, b) => {
133
+ // Sort by name
134
+ return a.name.localeCompare(b.name);
135
+ });
136
+ }
137
+ }