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.
- package/LICENSE +22 -0
- package/README.md +410 -186
- package/contracts/ABI.txt +889 -0
- package/contracts/Bytecode.txt +1 -0
- package/contracts/COMPILATION_NOTES.md +59 -0
- package/contracts/QUICK_DEPLOY.md +286 -0
- package/contracts/README.md +235 -131
- package/contracts/VERIFICATION.md +308 -0
- package/contracts/deploy-interactive.js +448 -0
- package/contracts/deployment-arbitrum-sepolia.json +12 -0
- package/contracts/deployment-arbitrum.json +12 -0
- package/contracts/deployment-eth-sepolia.json +12 -0
- package/contracts/hardhat.config.js +114 -0
- package/contracts/package.json +20 -0
- package/contracts/scripts/compile-and-extract.js +119 -0
- package/contracts/scripts/verify-contract.js +223 -0
- package/contracts/src/{NZIP-NFT-Private.sol → NZIP-NFT-v2.0.sol} +66 -151
- package/contracts/src/NZIP-NFT.sol +9 -15
- package/dist/blockchain/browser/TokenVerifierBrowser.d.ts +67 -0
- package/dist/blockchain/browser/TokenVerifierBrowser.d.ts.map +1 -0
- package/dist/blockchain/browser/TokenVerifierBrowser.js +313 -0
- package/dist/blockchain/browser/TokenVerifierBrowser.js.map +1 -0
- package/dist/blockchain/browser/WalletManagerBrowser.d.ts +98 -0
- package/dist/blockchain/browser/WalletManagerBrowser.d.ts.map +1 -0
- package/dist/blockchain/browser/WalletManagerBrowser.js +434 -0
- package/dist/blockchain/browser/WalletManagerBrowser.js.map +1 -0
- package/dist/blockchain/browser/ZipkitMinterBrowser.d.ts +58 -0
- package/dist/blockchain/browser/ZipkitMinterBrowser.d.ts.map +1 -0
- package/dist/blockchain/browser/ZipkitMinterBrowser.js +317 -0
- package/dist/blockchain/browser/ZipkitMinterBrowser.js.map +1 -0
- package/dist/blockchain/browser/index.d.ts +11 -0
- package/dist/blockchain/browser/index.d.ts.map +1 -0
- package/dist/blockchain/browser/index.js +16 -0
- package/dist/blockchain/browser/index.js.map +1 -0
- package/dist/blockchain/core/WalletManager.d.ts +124 -0
- package/dist/blockchain/core/WalletManager.d.ts.map +1 -0
- package/dist/blockchain/{ZipKitWallet.js → core/WalletManager.js} +157 -177
- package/dist/blockchain/core/WalletManager.js.map +1 -0
- package/dist/blockchain/{ZipKitMinter.d.ts → core/ZipkitMinter.d.ts} +46 -11
- package/dist/blockchain/core/ZipkitMinter.d.ts.map +1 -0
- package/dist/blockchain/core/ZipkitMinter.js +548 -0
- package/dist/blockchain/core/ZipkitMinter.js.map +1 -0
- package/dist/blockchain/{ZipKitOTS.d.ts → core/ZipkitOTS.d.ts} +6 -15
- package/dist/blockchain/core/ZipkitOTS.d.ts.map +1 -0
- package/dist/blockchain/{ZipKitOTS.js → core/ZipkitOTS.js} +26 -84
- package/dist/blockchain/core/ZipkitOTS.js.map +1 -0
- package/dist/blockchain/core/ZipkitVerifier.d.ts +177 -0
- package/dist/blockchain/core/ZipkitVerifier.d.ts.map +1 -0
- package/dist/blockchain/core/ZipkitVerifier.js +632 -0
- package/dist/blockchain/core/ZipkitVerifier.js.map +1 -0
- package/dist/blockchain/core/contracts.d.ts +83 -0
- package/dist/blockchain/core/contracts.d.ts.map +1 -0
- package/dist/blockchain/core/contracts.js +341 -0
- package/dist/blockchain/core/contracts.js.map +1 -0
- package/dist/blockchain/core/index.d.ts +12 -0
- package/dist/blockchain/core/index.d.ts.map +1 -0
- package/dist/blockchain/core/index.js +59 -0
- package/dist/blockchain/core/index.js.map +1 -0
- package/dist/blockchain/index.d.ts +11 -7
- package/dist/blockchain/index.d.ts.map +1 -0
- package/dist/blockchain/index.js +18 -34
- package/dist/blockchain/index.js.map +1 -0
- package/dist/blockchain/node/WalletManagerNode.d.ts +47 -0
- package/dist/blockchain/node/WalletManagerNode.d.ts.map +1 -0
- package/dist/blockchain/node/WalletManagerNode.js +203 -0
- package/dist/blockchain/node/WalletManagerNode.js.map +1 -0
- package/dist/blockchain/node/index.d.ts +12 -0
- package/dist/blockchain/node/index.d.ts.map +1 -0
- package/dist/blockchain/node/index.js +24 -0
- package/dist/blockchain/node/index.js.map +1 -0
- package/dist/browser/ZipkitBrowser.d.ts +27 -0
- package/dist/browser/ZipkitBrowser.d.ts.map +1 -0
- package/dist/browser/{ZipKitBrowser.js → ZipkitBrowser.js} +96 -43
- package/dist/browser/ZipkitBrowser.js.map +1 -0
- package/dist/browser/index.d.ts +12 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +42 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser-esm/index.d.ts +12 -0
- package/dist/browser-esm/index.js +59559 -0
- package/dist/browser-esm/index.js.map +7 -0
- package/dist/browser-umd/index.d.ts +12 -0
- package/dist/browser-umd/index.js +59576 -0
- package/dist/browser-umd/index.js.map +7 -0
- package/dist/browser-umd/index.min.js +63 -0
- package/dist/browser.d.ts +8 -14
- package/dist/browser.js +13 -28
- package/dist/core/ZipCompress.d.ts +99 -0
- package/dist/core/ZipCompress.d.ts.map +1 -0
- package/dist/core/ZipCompress.js +309 -0
- package/dist/core/ZipCompress.js.map +1 -0
- package/dist/core/ZipDecompress.d.ts +58 -0
- package/dist/core/ZipDecompress.d.ts.map +1 -0
- package/dist/core/ZipDecompress.js +172 -0
- package/dist/core/ZipDecompress.js.map +1 -0
- package/dist/{shared → core}/ZipEntry.d.ts +8 -1
- package/dist/core/ZipEntry.d.ts.map +1 -0
- package/dist/{shared → core}/ZipEntry.js +225 -82
- package/dist/core/ZipEntry.js.map +1 -0
- package/dist/core/Zipkit.d.ts +315 -0
- package/dist/core/Zipkit.d.ts.map +1 -0
- package/dist/core/Zipkit.js +647 -0
- package/dist/core/Zipkit.js.map +1 -0
- package/dist/core/components/HashCalculator.d.ts +138 -0
- package/dist/core/components/HashCalculator.d.ts.map +1 -0
- package/dist/core/components/HashCalculator.js +360 -0
- package/dist/core/components/HashCalculator.js.map +1 -0
- package/dist/core/components/Logger.d.ts +73 -0
- package/dist/core/components/Logger.d.ts.map +1 -0
- package/dist/core/components/Logger.js +156 -0
- package/dist/core/components/Logger.js.map +1 -0
- package/dist/core/components/ProgressTracker.d.ts +43 -0
- package/dist/core/components/ProgressTracker.d.ts.map +1 -0
- package/dist/core/components/ProgressTracker.js +112 -0
- package/dist/core/components/ProgressTracker.js.map +1 -0
- package/dist/{shared → core}/components/Support.d.ts +1 -0
- package/dist/core/components/Support.d.ts.map +1 -0
- package/dist/{shared → core}/components/Support.js +1 -0
- package/dist/core/components/Support.js.map +1 -0
- package/dist/{shared → core}/components/Util.d.ts +7 -2
- package/dist/core/components/Util.d.ts.map +1 -0
- package/dist/{shared → core}/components/Util.js +14 -34
- package/dist/core/components/Util.js.map +1 -0
- package/dist/{shared → core}/constants/Errors.d.ts +1 -2
- package/dist/core/constants/Errors.d.ts.map +1 -0
- package/dist/{shared → core}/constants/Errors.js +1 -3
- package/dist/core/constants/Errors.js.map +1 -0
- package/dist/{shared → core}/constants/Headers.d.ts +3 -0
- package/dist/core/constants/Headers.d.ts.map +1 -0
- package/dist/{shared → core}/constants/Headers.js +20 -17
- package/dist/core/constants/Headers.js.map +1 -0
- package/dist/core/encryption/Manager.d.ts +58 -0
- package/dist/core/encryption/Manager.d.ts.map +1 -0
- package/dist/core/encryption/Manager.js +121 -0
- package/dist/core/encryption/Manager.js.map +1 -0
- package/dist/core/encryption/ZipCrypto.d.ts +172 -0
- package/dist/core/encryption/ZipCrypto.d.ts.map +1 -0
- package/dist/core/encryption/ZipCrypto.js +554 -0
- package/dist/core/encryption/ZipCrypto.js.map +1 -0
- package/dist/core/encryption/index.d.ts +9 -0
- package/dist/core/encryption/index.d.ts.map +1 -0
- package/dist/core/encryption/index.js +17 -0
- package/dist/core/encryption/index.js.map +1 -0
- package/dist/core/encryption/types.d.ts +29 -0
- package/dist/core/encryption/types.d.ts.map +1 -0
- package/dist/core/encryption/types.js +12 -0
- package/dist/core/encryption/types.js.map +1 -0
- package/dist/core/index.d.ts +24 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +57 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/version.d.ts +5 -0
- package/dist/core/version.d.ts.map +1 -0
- package/dist/core/version.js +31 -0
- package/dist/core/version.js.map +1 -0
- package/dist/index.d.ts +8 -18
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -35
- package/dist/index.js.map +1 -0
- package/dist/node/ZipCompressNode.d.ts +123 -0
- package/dist/node/ZipCompressNode.d.ts.map +1 -0
- package/dist/node/ZipCompressNode.js +576 -0
- package/dist/node/ZipCompressNode.js.map +1 -0
- package/dist/node/ZipDecompressNode.d.ts +120 -0
- package/dist/node/ZipDecompressNode.d.ts.map +1 -0
- package/dist/node/ZipDecompressNode.js +461 -0
- package/dist/node/ZipDecompressNode.js.map +1 -0
- package/dist/node/ZipkitNode.d.ts +406 -0
- package/dist/node/ZipkitNode.d.ts.map +1 -0
- package/dist/node/ZipkitNode.js +1305 -0
- package/dist/node/ZipkitNode.js.map +1 -0
- package/dist/node/index.d.ts +26 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +65 -0
- package/dist/node/index.js.map +1 -0
- package/dist/types/index.d.ts +59 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +36 -1
- package/dist/types/index.js.map +1 -0
- package/examples/README.md +269 -0
- package/examples/blockchain-tokenize.ts +354 -0
- package/examples/create-zip.ts +172 -0
- package/examples/extract-zip.ts +158 -0
- package/examples/list-zip.ts +161 -0
- package/examples/test-files/data.json +116 -0
- package/examples/test-files/document.md +80 -0
- package/examples/test-files/document.txt +2 -0
- package/examples/test-files/file1.txt +48 -0
- package/examples/test-files/file2.txt +80 -0
- package/examples/tsconfig.json +44 -0
- package/examples/unzip-token.ts +491 -0
- package/examples/verify-tokenized-zip.ts +305 -0
- package/examples/zip-token.ts +604 -0
- package/package.json +108 -24
- package/src/blockchain/README.md +59 -66
- package/src/{browser/TokenVerifierBrowser.ts-remove → blockchain/browser/TokenVerifierBrowser.ts} +125 -79
- package/src/blockchain/browser/WalletManagerBrowser.ts +486 -0
- package/src/blockchain/browser/ZipkitMinterBrowser.ts +400 -0
- package/src/blockchain/browser/index.ts +13 -0
- package/src/blockchain/{ZipKitWallet.ts → core/WalletManager.ts} +241 -143
- package/src/blockchain/core/ZipkitMinter.ts +716 -0
- package/src/blockchain/{ZipKitOTS.ts → core/ZipkitOTS.ts} +28 -62
- package/src/blockchain/core/ZipkitVerifier.ts +853 -0
- package/src/blockchain/core/contracts.ts +370 -0
- package/src/blockchain/core/index.ts +71 -0
- package/src/blockchain/index.ts +21 -55
- package/src/blockchain/node/WalletManagerNode.ts +171 -0
- package/src/blockchain/node/index.ts +40 -0
- package/src/browser/{ZipKitBrowser.ts → ZipkitBrowser.ts} +104 -41
- package/src/browser/index.esm.ts +37 -0
- package/src/browser/index.ts +25 -0
- package/src/core/ZipCompress.ts +398 -0
- package/src/core/ZipDecompress.ts +212 -0
- package/src/{shared → core}/ZipEntry.ts +240 -90
- package/src/core/Zipkit.ts +794 -0
- package/src/core/components/HashCalculator.ts +384 -0
- package/src/core/components/Logger.ts +180 -0
- package/src/core/components/ProgressTracker.ts +134 -0
- package/src/{shared → core}/components/Util.ts +12 -34
- package/src/{shared → core}/constants/Errors.ts +0 -4
- package/src/{shared → core}/constants/Headers.ts +19 -17
- package/src/core/encryption/Manager.ts +137 -0
- package/src/core/encryption/ZipCrypto.ts +650 -0
- package/src/core/encryption/index.ts +15 -0
- package/src/core/encryption/types.ts +33 -0
- package/src/core/index.ts +34 -0
- package/src/core/version.ts +33 -0
- package/src/index.ts +54 -25
- package/src/node/ZipCompressNode.ts +632 -0
- package/src/node/ZipDecompressNode.ts +508 -0
- package/src/node/ZipkitNode.ts +1559 -0
- package/src/node/index.ts +69 -0
- package/src/types/index.ts +131 -1
- package/src/types/modules.d.ts +1 -11
- package/src/types/opentimestamps.d.ts +1 -23
- package/contracts/INTEGRATION.md +0 -338
- package/contracts/NETWORKS.md +0 -156
- package/contracts/NZIP-NFT-bytecode.txt +0 -1
- package/contracts/constants.ts +0 -952
- package/contracts/deploy-bytecode.mjs +0 -94
- package/dist/blockchain/CertificateToken.d.ts +0 -48
- package/dist/blockchain/CertificateToken.js +0 -386
- package/dist/blockchain/ZipKitMinter.js +0 -347
- package/dist/blockchain/ZipKitNFT.d.ts +0 -3
- package/dist/blockchain/ZipKitNFT.js +0 -7
- package/dist/blockchain/ZipKitVerifier.d.ts +0 -69
- package/dist/blockchain/ZipKitVerifier.js +0 -289
- package/dist/blockchain/ZipKitWallet.d.ts +0 -69
- package/dist/blockchain/contracts.d.ts +0 -14
- package/dist/blockchain/contracts.js +0 -77
- package/dist/blockchain/types.d.ts +0 -47
- package/dist/blockchain/types.js +0 -30
- package/dist/browser/ZipKitBrowser.d.ts +0 -18
- package/dist/browser/ZipKitStampBrowser.d.ts +0 -2
- package/dist/browser/ZipKitStampBrowser.js +0 -12
- package/dist/browser-index.d.ts +0 -18
- package/dist/browser-index.js +0 -57
- package/dist/server/ZipKitServer.d.ts +0 -74
- package/dist/server/ZipKitServer.js +0 -310
- package/dist/shared/ZipKit.d.ts +0 -243
- package/dist/shared/ZipKit.js +0 -772
- package/dist/shared/components/CertificateOTS.d.ts +0 -15
- package/dist/shared/components/CertificateOTS.js +0 -116
- package/dist/shared/components/FileSys.d.ts +0 -2
- package/dist/shared/components/FileSys.js +0 -113
- package/dist/shared/components/HashAccumulator.d.ts +0 -55
- package/dist/shared/components/HashAccumulator.js +0 -100
- package/dist/shared/components/ZipCrypto.d.ts +0 -3
- package/dist/shared/components/ZipCrypto.js +0 -78
- package/dist/shared/components/merkleTree.d.ts +0 -66
- package/dist/shared/components/merkleTree.js +0 -136
- package/dist/shared/types/index.d.ts +0 -21
- package/dist/shared/types/index.js +0 -3
- package/dist/shared/types.d.ts +0 -33
- package/dist/shared/types.js +0 -8
- package/dist/shared/version.d.ts +0 -2
- package/dist/shared/version.js +0 -6
- package/src/blockchain/CertificateToken.ts +0 -444
- package/src/blockchain/ZipKitMinter.ts +0 -470
- package/src/blockchain/ZipKitNFT.ts +0 -12
- package/src/blockchain/ZipKitVerifier.ts +0 -382
- package/src/blockchain/contracts.ts +0 -88
- package/src/blockchain/types.ts +0 -91
- package/src/browser/CertificateGeneratorBrowser.ts-remove +0 -498
- package/src/browser/ZipKitStampBrowser.ts +0 -9
- package/src/browser-index.ts +0 -36
- package/src/server/README.md +0 -25
- package/src/server/ZipKitServer.ts +0 -305
- package/src/shared/ZipKit.ts +0 -881
- package/src/shared/components/CertificateOTS.ts +0 -132
- package/src/shared/components/FileSys.ts +0 -87
- package/src/shared/components/HashAccumulator.ts +0 -113
- package/src/shared/components/ZipCrypto.ts +0 -91
- package/src/shared/components/merkleTree.ts +0 -162
- package/src/shared/types/index.ts +0 -25
- package/src/shared/types/modules.d.ts +0 -22
- package/src/shared/types/opentimestamps.d.ts +0 -23
- package/src/shared/types.d.ts +0 -8
- package/src/shared/types.ts +0 -43
- package/src/shared/version.ts +0 -3
- /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
|
+
}
|