neozipkit 0.2.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 (301) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +410 -186
  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 +235 -131
  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/blockchain/browser/TokenVerifierBrowser.d.ts +67 -0
  20. package/dist/blockchain/browser/TokenVerifierBrowser.d.ts.map +1 -0
  21. package/dist/blockchain/browser/TokenVerifierBrowser.js +313 -0
  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/blockchain/core/WalletManager.d.ts +124 -0
  36. package/dist/blockchain/core/WalletManager.d.ts.map +1 -0
  37. package/dist/blockchain/{ZipKitWallet.js → core/WalletManager.js} +157 -177
  38. package/dist/blockchain/core/WalletManager.js.map +1 -0
  39. package/dist/blockchain/{ZipKitMinter.d.ts → core/ZipkitMinter.d.ts} +46 -11
  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/{ZipKitOTS.d.ts → core/ZipkitOTS.d.ts} +6 -15
  44. package/dist/blockchain/core/ZipkitOTS.d.ts.map +1 -0
  45. package/dist/blockchain/{ZipKitOTS.js → core/ZipkitOTS.js} +26 -84
  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 -7
  60. package/dist/blockchain/index.d.ts.map +1 -0
  61. package/dist/blockchain/index.js +18 -34
  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 -14
  87. package/dist/browser.js +13 -28
  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 +225 -82
  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/core/version.d.ts +5 -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 -18
  157. package/dist/index.d.ts.map +1 -0
  158. package/dist/index.js +29 -35
  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 +491 -0
  192. package/examples/verify-tokenized-zip.ts +305 -0
  193. package/examples/zip-token.ts +604 -0
  194. package/package.json +108 -24
  195. package/src/blockchain/README.md +59 -66
  196. package/src/{browser/TokenVerifierBrowser.ts-remove → blockchain/browser/TokenVerifierBrowser.ts} +125 -79
  197. package/src/blockchain/browser/WalletManagerBrowser.ts +486 -0
  198. package/src/blockchain/browser/ZipkitMinterBrowser.ts +400 -0
  199. package/src/blockchain/browser/index.ts +13 -0
  200. package/src/blockchain/{ZipKitWallet.ts → core/WalletManager.ts} +241 -143
  201. package/src/blockchain/core/ZipkitMinter.ts +716 -0
  202. package/src/blockchain/{ZipKitOTS.ts → core/ZipkitOTS.ts} +28 -62
  203. package/src/blockchain/core/ZipkitVerifier.ts +853 -0
  204. package/src/blockchain/core/contracts.ts +370 -0
  205. package/src/blockchain/core/index.ts +71 -0
  206. package/src/blockchain/index.ts +21 -55
  207. package/src/blockchain/node/WalletManagerNode.ts +171 -0
  208. package/src/blockchain/node/index.ts +40 -0
  209. package/src/browser/{ZipKitBrowser.ts → ZipkitBrowser.ts} +104 -41
  210. package/src/browser/index.esm.ts +37 -0
  211. package/src/browser/index.ts +25 -0
  212. package/src/core/ZipCompress.ts +398 -0
  213. package/src/core/ZipDecompress.ts +212 -0
  214. package/src/{shared → core}/ZipEntry.ts +240 -90
  215. package/src/core/Zipkit.ts +794 -0
  216. package/src/core/components/HashCalculator.ts +384 -0
  217. package/src/core/components/Logger.ts +180 -0
  218. package/src/core/components/ProgressTracker.ts +134 -0
  219. package/src/{shared → core}/components/Util.ts +12 -34
  220. package/src/{shared → core}/constants/Errors.ts +0 -4
  221. package/src/{shared → core}/constants/Headers.ts +19 -17
  222. package/src/core/encryption/Manager.ts +137 -0
  223. package/src/core/encryption/ZipCrypto.ts +650 -0
  224. package/src/core/encryption/index.ts +15 -0
  225. package/src/core/encryption/types.ts +33 -0
  226. package/src/core/index.ts +34 -0
  227. package/src/core/version.ts +33 -0
  228. package/src/index.ts +54 -25
  229. package/src/node/ZipCompressNode.ts +632 -0
  230. package/src/node/ZipDecompressNode.ts +508 -0
  231. package/src/node/ZipkitNode.ts +1559 -0
  232. package/src/node/index.ts +69 -0
  233. package/src/types/index.ts +131 -1
  234. package/src/types/modules.d.ts +1 -11
  235. package/src/types/opentimestamps.d.ts +1 -23
  236. package/contracts/INTEGRATION.md +0 -338
  237. package/contracts/NETWORKS.md +0 -156
  238. package/contracts/NZIP-NFT-bytecode.txt +0 -1
  239. package/contracts/constants.ts +0 -952
  240. package/contracts/deploy-bytecode.mjs +0 -94
  241. package/dist/blockchain/CertificateToken.d.ts +0 -48
  242. package/dist/blockchain/CertificateToken.js +0 -386
  243. package/dist/blockchain/ZipKitMinter.js +0 -347
  244. package/dist/blockchain/ZipKitNFT.d.ts +0 -3
  245. package/dist/blockchain/ZipKitNFT.js +0 -7
  246. package/dist/blockchain/ZipKitVerifier.d.ts +0 -69
  247. package/dist/blockchain/ZipKitVerifier.js +0 -289
  248. package/dist/blockchain/ZipKitWallet.d.ts +0 -69
  249. package/dist/blockchain/contracts.d.ts +0 -14
  250. package/dist/blockchain/contracts.js +0 -77
  251. package/dist/blockchain/types.d.ts +0 -47
  252. package/dist/blockchain/types.js +0 -30
  253. package/dist/browser/ZipKitBrowser.d.ts +0 -18
  254. package/dist/browser/ZipKitStampBrowser.d.ts +0 -2
  255. package/dist/browser/ZipKitStampBrowser.js +0 -12
  256. package/dist/browser-index.d.ts +0 -18
  257. package/dist/browser-index.js +0 -57
  258. package/dist/server/ZipKitServer.d.ts +0 -74
  259. package/dist/server/ZipKitServer.js +0 -310
  260. package/dist/shared/ZipKit.d.ts +0 -243
  261. package/dist/shared/ZipKit.js +0 -772
  262. package/dist/shared/components/CertificateOTS.d.ts +0 -15
  263. package/dist/shared/components/CertificateOTS.js +0 -116
  264. package/dist/shared/components/FileSys.d.ts +0 -2
  265. package/dist/shared/components/FileSys.js +0 -113
  266. package/dist/shared/components/HashAccumulator.d.ts +0 -55
  267. package/dist/shared/components/HashAccumulator.js +0 -100
  268. package/dist/shared/components/ZipCrypto.d.ts +0 -3
  269. package/dist/shared/components/ZipCrypto.js +0 -78
  270. package/dist/shared/components/merkleTree.d.ts +0 -66
  271. package/dist/shared/components/merkleTree.js +0 -136
  272. package/dist/shared/types/index.d.ts +0 -21
  273. package/dist/shared/types/index.js +0 -3
  274. package/dist/shared/types.d.ts +0 -33
  275. package/dist/shared/types.js +0 -8
  276. package/dist/shared/version.d.ts +0 -2
  277. package/dist/shared/version.js +0 -6
  278. package/src/blockchain/CertificateToken.ts +0 -444
  279. package/src/blockchain/ZipKitMinter.ts +0 -470
  280. package/src/blockchain/ZipKitNFT.ts +0 -12
  281. package/src/blockchain/ZipKitVerifier.ts +0 -382
  282. package/src/blockchain/contracts.ts +0 -88
  283. package/src/blockchain/types.ts +0 -91
  284. package/src/browser/CertificateGeneratorBrowser.ts-remove +0 -498
  285. package/src/browser/ZipKitStampBrowser.ts +0 -9
  286. package/src/browser-index.ts +0 -36
  287. package/src/server/README.md +0 -25
  288. package/src/server/ZipKitServer.ts +0 -305
  289. package/src/shared/ZipKit.ts +0 -881
  290. package/src/shared/components/CertificateOTS.ts +0 -132
  291. package/src/shared/components/FileSys.ts +0 -87
  292. package/src/shared/components/HashAccumulator.ts +0 -113
  293. package/src/shared/components/ZipCrypto.ts +0 -91
  294. package/src/shared/components/merkleTree.ts +0 -162
  295. package/src/shared/types/index.ts +0 -25
  296. package/src/shared/types/modules.d.ts +0 -22
  297. package/src/shared/types/opentimestamps.d.ts +0 -23
  298. package/src/shared/types.d.ts +0 -8
  299. package/src/shared/types.ts +0 -43
  300. package/src/shared/version.ts +0 -3
  301. /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
+ }