neozipkit 1.0.2 → 1.0.5
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/NEOZIP_APPNOTE.md +527 -0
- package/README.md +8 -5
- package/WHATS_NEW.md +42 -10
- package/dist/browser/ZipkitBrowser.d.ts.map +1 -1
- package/dist/browser/ZipkitBrowser.js +4 -6
- package/dist/browser/ZipkitBrowser.js.map +1 -1
- package/dist/browser-esm/index.js +424 -82
- package/dist/browser-esm/index.js.map +4 -4
- package/dist/browser-umd/index.js +424 -82
- package/dist/browser-umd/index.js.map +4 -4
- package/dist/browser-umd/index.min.js +3 -3
- package/dist/core/ZipCompress.d.ts.map +1 -1
- package/dist/core/ZipCompress.js +12 -11
- package/dist/core/ZipCompress.js.map +1 -1
- package/dist/core/ZipDecompress.d.ts.map +1 -1
- package/dist/core/ZipDecompress.js +13 -8
- package/dist/core/ZipDecompress.js.map +1 -1
- package/dist/core/ZipEntry.d.ts +6 -0
- package/dist/core/ZipEntry.d.ts.map +1 -1
- package/dist/core/ZipEntry.js +7 -1
- package/dist/core/ZipEntry.js.map +1 -1
- package/dist/core/Zipkit.d.ts +43 -11
- package/dist/core/Zipkit.d.ts.map +1 -1
- package/dist/core/Zipkit.js +106 -63
- package/dist/core/Zipkit.js.map +1 -1
- package/dist/core/components/HashCalculator.d.ts +22 -1
- package/dist/core/components/HashCalculator.d.ts.map +1 -1
- package/dist/core/components/HashCalculator.js +49 -6
- package/dist/core/components/HashCalculator.js.map +1 -1
- package/dist/core/components/Util.d.ts +3 -4
- package/dist/core/components/Util.d.ts.map +1 -1
- package/dist/core/components/Util.js +10 -8
- package/dist/core/components/Util.js.map +1 -1
- package/dist/core/constants/Headers.d.ts +1 -3
- package/dist/core/constants/Headers.d.ts.map +1 -1
- package/dist/core/constants/Headers.js +14 -5
- package/dist/core/constants/Headers.js.map +1 -1
- package/dist/core/constants/MetaPaths.d.ts +38 -0
- package/dist/core/constants/MetaPaths.d.ts.map +1 -0
- package/dist/core/constants/MetaPaths.js +79 -0
- package/dist/core/constants/MetaPaths.js.map +1 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +14 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/merkle/MerkleRoot.d.ts +109 -0
- package/dist/core/merkle/MerkleRoot.d.ts.map +1 -0
- package/dist/core/merkle/MerkleRoot.js +275 -0
- package/dist/core/merkle/MerkleRoot.js.map +1 -0
- package/dist/core/version.js +1 -1
- package/dist/node/ZipCompressNode.d.ts.map +1 -1
- package/dist/node/ZipCompressNode.js +40 -49
- package/dist/node/ZipCompressNode.js.map +1 -1
- package/dist/node/ZipDecompressNode.d.ts.map +1 -1
- package/dist/node/ZipDecompressNode.js +17 -1
- package/dist/node/ZipDecompressNode.js.map +1 -1
- package/dist/node/ZipkitNode.d.ts +9 -0
- package/dist/node/ZipkitNode.d.ts.map +1 -1
- package/dist/node/ZipkitNode.js +67 -4
- package/dist/node/ZipkitNode.js.map +1 -1
- package/package.json +3 -2
- package/src/browser/ZipkitBrowser.ts +4 -6
- package/src/core/ZipCompress.ts +14 -13
- package/src/core/ZipDecompress.ts +14 -8
- package/src/core/ZipEntry.ts +8 -1
- package/src/core/Zipkit.ts +149 -76
- package/src/core/components/HashCalculator.ts +58 -6
- package/src/core/components/Util.ts +16 -7
- package/src/core/constants/Headers.ts +14 -4
- package/src/core/constants/MetaPaths.ts +86 -0
- package/src/core/index.ts +14 -0
- package/src/core/merkle/MerkleRoot.ts +312 -0
- package/src/core/version.ts +1 -1
- package/src/node/ZipCompressNode.ts +40 -49
- package/src/node/ZipDecompressNode.ts +13 -1
- package/src/node/ZipkitNode.ts +82 -4
|
@@ -5,16 +5,25 @@
|
|
|
5
5
|
// ======================================
|
|
6
6
|
// Zip File Format Constants
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.DOS_FILE_ATTR = exports.FILE_SYSTEM = exports.HDR_ID = exports.EXTENSIBLE_DATA_FIELDS = exports.GP_FLAG = exports.CMP_METHOD = exports.ZIP64_CENTRAL_END = exports.ZIP64_CENTRAL_DIR = exports.CENTRAL_END = exports.CENTRAL_DIR = exports.DATA_DESC = exports.NEO_CRYPTO_MAGIC_BYTES = exports.NEO_CRYPTO_EXTRA_FIELD_SIZE = exports.NEO_CRYPTO_PAYLOAD_V1 = exports.AES_OVERHEAD = exports.AES_EXTRA_FIELD_SIZE = exports.AES_AUTH_CODE_SIZE = exports.AES256_PWD_VERIFY_SIZE = exports.AES256_KEY_SIZE = exports.AES256_SALT_SIZE = exports.ENCRYPT_HDR_SIZE = exports.LOCAL_HDR = exports.TOKENIZED_METADATA = exports.TIMESTAMP_METADATA = exports.TIMESTAMP_SUBMITTED = exports.DATA_DESCRIPTOR = exports.ZIP64_CENTRAL_DIRECTORY_END = exports.ZIP64_CENTRAL_DIRECTORY_LOCATOR = exports.CENTRAL_DIRECTORY_END = exports.CENTRAL_FILE_HEADER = exports.LOCAL_FILE_HEADER = void 0;
|
|
8
|
+
exports.DOS_FILE_ATTR = exports.FILE_SYSTEM = exports.HDR_ID = exports.EXTENSIBLE_DATA_FIELDS = exports.GP_FLAG = exports.CMP_METHOD = exports.ZIP64_CENTRAL_END = exports.ZIP64_CENTRAL_DIR = exports.CENTRAL_END = exports.CENTRAL_DIR = exports.DATA_DESC = exports.NEO_CRYPTO_MAGIC_BYTES = exports.NEO_CRYPTO_EXTRA_FIELD_SIZE = exports.NEO_CRYPTO_PAYLOAD_V1 = exports.AES_OVERHEAD = exports.AES_EXTRA_FIELD_SIZE = exports.AES_AUTH_CODE_SIZE = exports.AES256_PWD_VERIFY_SIZE = exports.AES256_KEY_SIZE = exports.AES256_SALT_SIZE = exports.ENCRYPT_HDR_SIZE = exports.LOCAL_HDR = exports.TOKENIZED_METADATA = exports.TIMESTAMP_METADATA = exports.TIMESTAMP_SUBMITTED = exports.META_MANIFEST_JSON = exports.META_TIMESTAMP_OTS = exports.META_TS_SUBMIT_OTS = exports.META_TIMESTAMP_NZIP = exports.META_TS_SUBMIT_NZIP = exports.META_TOKEN_NZIP_LEGACY = exports.META_TOKEN_NZIP = exports.DATA_DESCRIPTOR = exports.ZIP64_CENTRAL_DIRECTORY_END = exports.ZIP64_CENTRAL_DIRECTORY_LOCATOR = exports.CENTRAL_DIRECTORY_END = exports.CENTRAL_FILE_HEADER = exports.LOCAL_FILE_HEADER = void 0;
|
|
9
9
|
exports.LOCAL_FILE_HEADER = 'PK\x03\x04';
|
|
10
10
|
exports.CENTRAL_FILE_HEADER = 'PK\x01\x02';
|
|
11
11
|
exports.CENTRAL_DIRECTORY_END = 'PK\x05\x06';
|
|
12
12
|
exports.ZIP64_CENTRAL_DIRECTORY_LOCATOR = 'PK\x06\x07';
|
|
13
13
|
exports.ZIP64_CENTRAL_DIRECTORY_END = 'PK\x06\x06';
|
|
14
14
|
exports.DATA_DESCRIPTOR = 'PK\x07\x08';
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
exports
|
|
15
|
+
// Reserved META-INF paths — see constants/MetaPaths.ts and NEOZIP_APPNOTE.md §2
|
|
16
|
+
var MetaPaths_1 = require("./MetaPaths");
|
|
17
|
+
Object.defineProperty(exports, "META_TOKEN_NZIP", { enumerable: true, get: function () { return MetaPaths_1.META_TOKEN_NZIP; } });
|
|
18
|
+
Object.defineProperty(exports, "META_TOKEN_NZIP_LEGACY", { enumerable: true, get: function () { return MetaPaths_1.META_TOKEN_NZIP_LEGACY; } });
|
|
19
|
+
Object.defineProperty(exports, "META_TS_SUBMIT_NZIP", { enumerable: true, get: function () { return MetaPaths_1.META_TS_SUBMIT_NZIP; } });
|
|
20
|
+
Object.defineProperty(exports, "META_TIMESTAMP_NZIP", { enumerable: true, get: function () { return MetaPaths_1.META_TIMESTAMP_NZIP; } });
|
|
21
|
+
Object.defineProperty(exports, "META_TS_SUBMIT_OTS", { enumerable: true, get: function () { return MetaPaths_1.META_TS_SUBMIT_OTS; } });
|
|
22
|
+
Object.defineProperty(exports, "META_TIMESTAMP_OTS", { enumerable: true, get: function () { return MetaPaths_1.META_TIMESTAMP_OTS; } });
|
|
23
|
+
Object.defineProperty(exports, "META_MANIFEST_JSON", { enumerable: true, get: function () { return MetaPaths_1.META_MANIFEST_JSON; } });
|
|
24
|
+
Object.defineProperty(exports, "TIMESTAMP_SUBMITTED", { enumerable: true, get: function () { return MetaPaths_1.TIMESTAMP_SUBMITTED; } });
|
|
25
|
+
Object.defineProperty(exports, "TIMESTAMP_METADATA", { enumerable: true, get: function () { return MetaPaths_1.TIMESTAMP_METADATA; } });
|
|
26
|
+
Object.defineProperty(exports, "TOKENIZED_METADATA", { enumerable: true, get: function () { return MetaPaths_1.TOKENIZED_METADATA; } });
|
|
18
27
|
// Local file header
|
|
19
28
|
exports.LOCAL_HDR = {
|
|
20
29
|
SIZE: 30, // LOC header size in bytes
|
|
@@ -165,7 +174,7 @@ exports.HDR_ID = {
|
|
|
165
174
|
x509PKCS7RL: 0x0019, // X.509 Certificate Revocation List (PKCS#7)
|
|
166
175
|
IBM1: 0x0065, // IBM S/390 (Z390) - Attribute
|
|
167
176
|
IBM2: 0x0066, // IBM S/390 (Z390) - Attribute
|
|
168
|
-
SHA256: 0x014E, //
|
|
177
|
+
SHA256: 0x014E, // NeoZip Extra Field: 32-byte SHA-256 of uncompressed payload (APPNOTE §5)
|
|
169
178
|
NEO_CRYPTO: 0x024E, // NeoEncrypt metadata (see docs/NEO_CRYPTO_FORMAT.md); LE on wire: 4E 02
|
|
170
179
|
POSZIP: 0x4690, // POSZIP 4690
|
|
171
180
|
UNV_TIME: 0x5455, // Universal Time (UT) (32-bit) 5 data bytes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Headers.js","sourceRoot":"","sources":["../../../src/core/constants/Headers.ts"],"names":[],"mappings":";AAAA,yCAAyC;AACzC,aAAa;AACb,yDAAyD;AACzD,yCAAyC;AACzC,4BAA4B;;;AAEf,QAAA,iBAAiB,GAAG,YAAY,CAAC;AACjC,QAAA,mBAAmB,GAAG,YAAY,CAAC;AACnC,QAAA,qBAAqB,GAAG,YAAY,CAAC;AACrC,QAAA,+BAA+B,GAAG,YAAY,CAAC;AAC/C,QAAA,2BAA2B,GAAG,YAAY,CAAC;AAC3C,QAAA,eAAe,GAAG,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"Headers.js","sourceRoot":"","sources":["../../../src/core/constants/Headers.ts"],"names":[],"mappings":";AAAA,yCAAyC;AACzC,aAAa;AACb,yDAAyD;AACzD,yCAAyC;AACzC,4BAA4B;;;AAEf,QAAA,iBAAiB,GAAG,YAAY,CAAC;AACjC,QAAA,mBAAmB,GAAG,YAAY,CAAC;AACnC,QAAA,qBAAqB,GAAG,YAAY,CAAC;AACrC,QAAA,+BAA+B,GAAG,YAAY,CAAC;AAC/C,QAAA,2BAA2B,GAAG,YAAY,CAAC;AAC3C,QAAA,eAAe,GAAG,YAAY,CAAC;AAE5C,gFAAgF;AAChF,yCAWqB;AAVnB,4GAAA,eAAe,OAAA;AACf,mHAAA,sBAAsB,OAAA;AACtB,gHAAA,mBAAmB,OAAA;AACnB,gHAAA,mBAAmB,OAAA;AACnB,+GAAA,kBAAkB,OAAA;AAClB,+GAAA,kBAAkB,OAAA;AAClB,+GAAA,kBAAkB,OAAA;AAClB,gHAAA,mBAAmB,OAAA;AACnB,+GAAA,kBAAkB,OAAA;AAClB,+GAAA,kBAAkB,OAAA;AAGpB,oBAAoB;AACP,QAAA,SAAS,GAAG;IACvB,IAAI,EAAQ,EAAE,EAAM,2BAA2B;IAC/C,SAAS,EAAG,UAAU,EAAG,eAAe;IACxC,WAAW,EAAE,CAAC,EAAM,4BAA4B;IAChD,KAAK,EAAQ,CAAC,EAAM,2BAA2B;IAC/C,WAAW,EAAE,CAAC,EAAM,qBAAqB;IACzC,YAAY,EAAE,EAAE,EAAI,iDAAiD;IACrE,GAAG,EAAS,EAAE,EAAM,iCAAiC;IACrD,QAAQ,EAAI,EAAE,EAAM,kBAAkB;IACtC,UAAU,EAAE,EAAE,EAAM,oBAAoB;IACxC,SAAS,EAAG,EAAE,EAAM,kBAAkB;IACtC,SAAS,EAAG,EAAE,CAAM,qBAAqB;CAC1C,CAAC;AACW,QAAA,gBAAgB,GAAG,EAAE,CAAC;AAEnC,kCAAkC;AACrB,QAAA,gBAAgB,GAAG,EAAE,CAAC;AACtB,QAAA,eAAe,GAAG,EAAE,CAAC;AACrB,QAAA,sBAAsB,GAAG,CAAC,CAAC;AAC3B,QAAA,kBAAkB,GAAG,EAAE,CAAC;AACxB,QAAA,oBAAoB,GAAG,EAAE,CAAC;AAC1B,QAAA,YAAY,GAAG,wBAAgB,GAAG,8BAAsB,GAAG,0BAAkB,CAAC,CAAC,WAAW;AAEvG,gGAAgG;AACnF,QAAA,qBAAqB,GAAG,EAAE,CAAC;AAC3B,QAAA,2BAA2B,GAAG,CAAC,GAAG,6BAAqB,CAAC,CAAC,+DAA+D;AACrI,wDAAwD;AAC3C,QAAA,sBAAsB,GAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAElF,kBAAkB;AACL,QAAA,SAAS,GAAG;IACvB,SAAS,EAAG,UAAU,EAAG,eAAe;IACxC,IAAI,EAAQ,EAAE,EAAM,2BAA2B;IAC/C,GAAG,EAAS,CAAC,EAAO,0CAA0C;IAC9D,QAAQ,EAAI,CAAC,EAAO,2BAA2B;IAC/C,UAAU,EAAE,EAAE,CAAM,oBAAoB;CACzC,CAAC;AAEF,qCAAqC;AACxB,QAAA,WAAW,GAAG;IACzB,IAAI,EAAQ,EAAE,EAAM,gCAAgC;IACpD,SAAS,EAAG,UAAU,EAAG,eAAe;IACxC,QAAQ,EAAI,CAAC,EAAO,kBAAkB;IACtC,OAAO,EAAK,CAAC,EAAO,4BAA4B;IAChD,KAAK,EAAO,CAAC,EAAO,yBAAyB;IAC7C,UAAU,EAAE,EAAE,EAAK,qBAAqB;IACxC,YAAY,EAAE,EAAE,EAAM,qDAAqD;IAC3E,GAAG,EAAS,EAAE,EAAM,iCAAiC;IACrD,QAAQ,EAAI,EAAE,EAAM,kBAAkB;IACtC,UAAU,EAAE,EAAE,EAAM,oBAAoB;IACxC,SAAS,EAAG,EAAE,EAAM,kBAAkB;IACtC,SAAS,EAAG,EAAE,EAAM,qBAAqB;IACzC,WAAW,EAAE,EAAE,EAAK,sBAAsB;IAC1C,QAAQ,EAAI,EAAE,EAAM,sBAAsB;IAC1C,aAAa,EAAE,EAAE,EAAG,2BAA2B;IAC/C,aAAa,EAAE,EAAE,EAAG,mDAAmD;IACvE,gBAAgB,EAAE,EAAE,CAAC,oBAAoB;CAC1C,CAAC;AAEF,oCAAoC;AACvB,QAAA,WAAW,GAAG;IACzB,IAAI,EAAQ,EAAE,EAAU,kBAAkB;IAC1C,SAAS,EAAG,UAAU,EAAE,eAAe;IACvC,OAAO,EAAS,CAAC,EAAO,sBAAsB;IAC9C,YAAY,EAAI,CAAC,EAAO,gEAAgE;IACxF,WAAW,EAAK,CAAC,EAAO,wCAAwC;IAChE,aAAa,EAAG,EAAE,EAAM,uCAAuC;IAC/D,gBAAgB,EAAE,EAAE,EAAI,kCAAkC;IAC1D,kBAAkB,EAAE,EAAE,EAAE,6BAA6B;IACrD,eAAe,EAAE,EAAE,CAAK,0BAA0B;CACnD,CAAC;AAEF,gCAAgC;AACnB,QAAA,iBAAiB,GAAG;IAC/B,SAAS,EAAG,UAAU,EAAG,gCAAgC;IACzD,IAAI,EAAQ,EAAE,EAAM,4BAA4B;IAChD,IAAI,EAAQ,EAAE,EAAM,yFAAyF;IAC7G,UAAU,EAAG,CAAC,EAAM,6CAA6C;IACjE,UAAU,EAAE,EAAE,EAAM,wBAAwB;IAC5C,UAAU,EAAE,EAAE,EAAM,kCAAkC;IACtD,OAAO,EAAK,EAAE,EAAM,4BAA4B;IAChD,YAAY,EAAE,EAAE,EAAG,4DAA4D;IAC/E,WAAW,EAAG,EAAE,EAAG,iCAAiC;IACpD,aAAa,EAAE,EAAE,EAAG,0BAA0B;IAC9C,gBAAgB,EAAE,EAAE,EAAE,wCAAwC;IAC9D,kBAAkB,EAAE,EAAE,EAAE,gFAAgF;IACxG,WAAW,EAAI,EAAE,CAAG,yBAAyB;CAC9C,CAAC;AAEF,kCAAkC;AACrB,QAAA,iBAAiB,GAAG;IAC/B,IAAI,EAAQ,EAAE,EAAU,wBAAwB;IAChD,SAAS,EAAG,UAAU,EAAE,wCAAwC;IAChE,OAAO,EAAK,CAAC,EAAW,iDAAiD;IACzE,kBAAkB,EAAE,CAAC,EAAG,wDAAwD;IAChF,WAAW,EAAE,EAAE,CAAS,wBAAwB;CACjD,CAAC;AAEF,sBAAsB;AACT,QAAA,UAAU,GAAG;IACxB,MAAM,EAAY,CAAC,EAAG,iBAAiB;IACvC,MAAM,EAAY,CAAC,EAAG,SAAS;IAC/B,QAAQ,EAAU,CAAC,EAAG,oCAAoC;IAC1D,QAAQ,EAAU,CAAC,EAAG,oCAAoC;IAC1D,QAAQ,EAAU,CAAC,EAAG,oCAAoC;IAC1D,QAAQ,EAAU,CAAC,EAAG,oCAAoC;IAC1D,QAAQ,EAAU,CAAC,EAAG,WAAW;IACjC,QAAQ,EAAU,CAAC,EAAG,WAAW;IACjC,gBAAgB,EAAE,CAAC,EAAG,oBAAoB;IAC1C,KAAK,EAAa,EAAE,EAAE,0BAA0B;IAChD,IAAI,EAAc,EAAE,EAAE,OAAO;IAC7B,SAAS,EAAS,EAAE,EAAE,6BAA6B;IACnD,QAAQ,EAAU,EAAE,EAAE,WAAW;IACjC,IAAI,EAAc,EAAE,EAAE,wBAAwB;IAC9C,WAAW,EAAO,EAAE,CAAE,+BAA+B;CACtD,CAAC;AAEF,2BAA2B;AACd,QAAA,OAAO,GAAG;IACrB,SAAS,EAAO,CAAC,EAAK,wBAAwB;IAC9C,YAAY,EAAI,CAAC,EAAK,4BAA4B;IAClD,YAAY,EAAI,CAAC,EAAK,4BAA4B;IAClD,SAAS,EAAO,CAAC,EAAK,0BAA0B;IAChD,gBAAgB,EAAE,EAAE,EAAE,4BAA4B;IAClD,OAAO,EAAS,EAAE,EAAI,6DAA6D;IACnF,cAAc,EAAE,EAAE,EAAI,sCAAsC;IACtC,+BAA+B;IACrD,GAAG,EAAa,IAAI,EAAE,uCAAuC;IACvC,uDAAuD;IACvD,sDAAsD;IACtD,kCAAkC;IACxD,IAAI,EAAY,IAAI,EAAE,qBAAqB;CAC5C,CAAC;AAEF,6BAA6B;AAChB,QAAA,sBAAsB,GAAG;IACpC,EAAE,EAAe,CAAC;IAClB,IAAI,EAAa,CAAC;CACnB,CAAC;AAEF,aAAa;AACA,QAAA,MAAM,GAAG;IACpB,KAAK,EAAY,MAAM,EAAK,yCAAyC;IACrE,MAAM,EAAW,MAAM,EAAK,UAAU;IACtC,GAAG,EAAc,MAAM,EAAK,kBAAkB;IAC9C,GAAG,EAAc,MAAM,EAAK,mBAAmB;IAC/C,IAAI,EAAa,MAAM,EAAK,mBAAmB;IAC/C,OAAO,EAAU,MAAM,EAAK,sBAAsB;IAClD,IAAI,EAAa,MAAM,EAAK,mBAAmB;IAC/C,IAAI,EAAa,MAAM,EAAK,wBAAwB;IACpD,KAAK,EAAY,MAAM,EAAK,+BAA+B;IAC3D,SAAS,EAAQ,MAAM,EAAK,mCAAmC;IAC/D,YAAY,EAAK,MAAM,EAAK,uCAAuC;IACnE,YAAY,EAAK,MAAM,EAAK,uCAAuC;IACnE,UAAU,EAAO,MAAM,EAAK,2BAA2B;IACvD,GAAG,EAAc,MAAM,EAAK,8BAA8B;IAC1D,UAAU,EAAO,MAAM,EAAK,6BAA6B;IACzD,WAAW,EAAM,MAAM,EAAK,6CAA6C;IACzE,IAAI,EAAa,MAAM,EAAK,+BAA+B;IAC3D,IAAI,EAAa,MAAM,EAAK,+BAA+B;IAC3D,MAAM,EAAW,MAAM,EAAK,2EAA2E;IACvG,UAAU,EAAO,MAAM,EAAK,yEAAyE;IACrG,MAAM,EAAW,MAAM,EAAK,cAAc;IAC1C,QAAQ,EAAS,MAAM,EAAK,4CAA4C;IACxE,OAAO,EAAU,MAAM,EAAK,0BAA0B;IACtD,YAAY,EAAK,MAAM,EAAK,oCAAoC;IAChE,OAAO,EAAU,MAAM,EAAK,iCAAiC;IAC7D,QAAQ,EAAS,MAAM,EAAK,6BAA6B;CAC1D,CAAC;AAEF,cAAc;AACD,QAAA,WAAW,GAAG;IACzB,KAAK,EAAY,CAAC,EAAI,oDAAoD;IAC1E,KAAK,EAAY,CAAC,EAAI,QAAQ;IAC9B,OAAO,EAAU,CAAC,EAAI,UAAU;IAChC,IAAI,EAAa,CAAC,EAAI,OAAO;IAC7B,MAAM,EAAW,CAAC,EAAI,SAAS;IAC/B,KAAK,EAAY,CAAC,EAAI,WAAW;IACjC,GAAG,EAAc,CAAC,EAAI,gBAAgB;IACtC,GAAG,EAAc,CAAC,EAAI,YAAY;IAClC,IAAI,EAAa,CAAC,EAAI,OAAO;IAC7B,IAAI,EAAa,EAAE,EAAG,eAAe;IACrC,GAAG,EAAc,EAAE,EAAG,sBAAsB;IAC5C,GAAG,EAAc,EAAE,EAAG,MAAM;IAC5B,KAAK,EAAY,EAAE,EAAG,aAAa;IACnC,IAAI,EAAa,EAAE,EAAG,OAAO;IAC7B,MAAM,EAAW,EAAE,EAAG,gBAAgB;IACtC,IAAI,EAAa,EAAE,EAAG,OAAO;IAC7B,MAAM,EAAW,EAAE,EAAG,SAAS;IAC/B,KAAK,EAAY,EAAE,EAAG,SAAS;IAC/B,MAAM,EAAW,EAAE,CAAG,sBAAsB;CAC7C,CAAC;AAEF,sBAAsB;AACT,QAAA,aAAa,GAAG;IAC3B,QAAQ,EAAS,IAAI;IACrB,MAAM,EAAW,IAAI;IACrB,MAAM,EAAW,IAAI;IACrB,MAAM,EAAW,IAAI;IACrB,SAAS,EAAQ,IAAI;IACrB,OAAO,EAAU,IAAI;CACtB,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NeoZip reserved META-INF paths and ASCII case-insensitive discovery.
|
|
3
|
+
* Matches NEOZIP_APPNOTE.md §2.3: writers emit canonical spellings; readers fold case.
|
|
4
|
+
*/
|
|
5
|
+
/** Canonical writers MUST emit these spellings. */
|
|
6
|
+
export declare const META_TOKEN_NZIP = "META-INF/TOKEN.NZIP";
|
|
7
|
+
export declare const META_TOKEN_NZIP_LEGACY = "META-INF/NZIP.TOKEN";
|
|
8
|
+
export declare const META_TS_SUBMIT_NZIP = "META-INF/TS-SUBMIT.NZIP";
|
|
9
|
+
export declare const META_TIMESTAMP_NZIP = "META-INF/TIMESTAMP.NZIP";
|
|
10
|
+
export declare const META_TS_SUBMIT_OTS = "META-INF/TS-SUBMIT.OTS";
|
|
11
|
+
export declare const META_TIMESTAMP_OTS = "META-INF/TIMESTAMP.OTS";
|
|
12
|
+
export declare const META_MANIFEST_JSON = "META-INF/manifest.json";
|
|
13
|
+
/** @deprecated Prefer META_TS_SUBMIT_OTS — kept for existing imports. */
|
|
14
|
+
export declare const TIMESTAMP_SUBMITTED = "META-INF/TS-SUBMIT.OTS";
|
|
15
|
+
/** @deprecated Prefer META_TIMESTAMP_OTS — kept for existing imports. */
|
|
16
|
+
export declare const TIMESTAMP_METADATA = "META-INF/TIMESTAMP.OTS";
|
|
17
|
+
/** @deprecated Prefer META_TOKEN_NZIP — kept for existing imports (canonical TOKEN.NZIP). */
|
|
18
|
+
export declare const TOKENIZED_METADATA = "META-INF/TOKEN.NZIP";
|
|
19
|
+
export type ZipEntryLikeFilename = {
|
|
20
|
+
filename?: string;
|
|
21
|
+
};
|
|
22
|
+
/** ASCII case-insensitive path compare (APPNOTE §2.3). */
|
|
23
|
+
export declare function asciiPathEqualsIgnoreCase(a: string, b: string): boolean;
|
|
24
|
+
/** True when path is under META-INF/ (ASCII case-insensitive). */
|
|
25
|
+
export declare function isMetaInfPath(filename: string): boolean;
|
|
26
|
+
/** True when filename is a reserved NeoZip meta path (any casing). */
|
|
27
|
+
export declare function isReservedMetaPath(filename: string): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* True for any META-INF/** entry (integrity merkle leaves exclude these per APPNOTE §6.2).
|
|
30
|
+
*/
|
|
31
|
+
export declare function isMetadataFile(filename: string): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Find a reserved meta entry among ZIP directory entries.
|
|
34
|
+
* Prefers an exact canonical match, then ASCII case-insensitive match.
|
|
35
|
+
* When multiple preferred names are given, earlier names win.
|
|
36
|
+
*/
|
|
37
|
+
export declare function findReservedMetaEntry<T extends ZipEntryLikeFilename>(entries: T[], preferredCanonicalNames: string | readonly string[]): T | null;
|
|
38
|
+
//# sourceMappingURL=MetaPaths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetaPaths.d.ts","sourceRoot":"","sources":["../../../src/core/constants/MetaPaths.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,mDAAmD;AACnD,eAAO,MAAM,eAAe,wBAAwB,CAAC;AACrD,eAAO,MAAM,sBAAsB,wBAAwB,CAAC;AAC5D,eAAO,MAAM,mBAAmB,4BAA4B,CAAC;AAC7D,eAAO,MAAM,mBAAmB,4BAA4B,CAAC;AAC7D,eAAO,MAAM,kBAAkB,2BAA2B,CAAC;AAC3D,eAAO,MAAM,kBAAkB,2BAA2B,CAAC;AAC3D,eAAO,MAAM,kBAAkB,2BAA2B,CAAC;AAE3D,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,2BAAqB,CAAC;AACtD,yEAAyE;AACzE,eAAO,MAAM,kBAAkB,2BAAqB,CAAC;AACrD,6FAA6F;AAC7F,eAAO,MAAM,kBAAkB,wBAAkB,CAAC;AAYlD,MAAM,MAAM,oBAAoB,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,0DAA0D;AAC1D,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAKvE;AAED,kEAAkE;AAClE,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,sEAAsE;AACtE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAG5D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,oBAAoB,EAClE,OAAO,EAAE,CAAC,EAAE,EACZ,uBAAuB,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAClD,CAAC,GAAG,IAAI,CAkBV"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* NeoZip reserved META-INF paths and ASCII case-insensitive discovery.
|
|
4
|
+
* Matches NEOZIP_APPNOTE.md §2.3: writers emit canonical spellings; readers fold case.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.TOKENIZED_METADATA = exports.TIMESTAMP_METADATA = exports.TIMESTAMP_SUBMITTED = exports.META_MANIFEST_JSON = exports.META_TIMESTAMP_OTS = exports.META_TS_SUBMIT_OTS = exports.META_TIMESTAMP_NZIP = exports.META_TS_SUBMIT_NZIP = exports.META_TOKEN_NZIP_LEGACY = exports.META_TOKEN_NZIP = void 0;
|
|
8
|
+
exports.asciiPathEqualsIgnoreCase = asciiPathEqualsIgnoreCase;
|
|
9
|
+
exports.isMetaInfPath = isMetaInfPath;
|
|
10
|
+
exports.isReservedMetaPath = isReservedMetaPath;
|
|
11
|
+
exports.isMetadataFile = isMetadataFile;
|
|
12
|
+
exports.findReservedMetaEntry = findReservedMetaEntry;
|
|
13
|
+
/** Canonical writers MUST emit these spellings. */
|
|
14
|
+
exports.META_TOKEN_NZIP = 'META-INF/TOKEN.NZIP';
|
|
15
|
+
exports.META_TOKEN_NZIP_LEGACY = 'META-INF/NZIP.TOKEN';
|
|
16
|
+
exports.META_TS_SUBMIT_NZIP = 'META-INF/TS-SUBMIT.NZIP';
|
|
17
|
+
exports.META_TIMESTAMP_NZIP = 'META-INF/TIMESTAMP.NZIP';
|
|
18
|
+
exports.META_TS_SUBMIT_OTS = 'META-INF/TS-SUBMIT.OTS';
|
|
19
|
+
exports.META_TIMESTAMP_OTS = 'META-INF/TIMESTAMP.OTS';
|
|
20
|
+
exports.META_MANIFEST_JSON = 'META-INF/manifest.json';
|
|
21
|
+
/** @deprecated Prefer META_TS_SUBMIT_OTS — kept for existing imports. */
|
|
22
|
+
exports.TIMESTAMP_SUBMITTED = exports.META_TS_SUBMIT_OTS;
|
|
23
|
+
/** @deprecated Prefer META_TIMESTAMP_OTS — kept for existing imports. */
|
|
24
|
+
exports.TIMESTAMP_METADATA = exports.META_TIMESTAMP_OTS;
|
|
25
|
+
/** @deprecated Prefer META_TOKEN_NZIP — kept for existing imports (canonical TOKEN.NZIP). */
|
|
26
|
+
exports.TOKENIZED_METADATA = exports.META_TOKEN_NZIP;
|
|
27
|
+
const RESERVED_CANONICAL = [
|
|
28
|
+
exports.META_TOKEN_NZIP,
|
|
29
|
+
exports.META_TOKEN_NZIP_LEGACY,
|
|
30
|
+
exports.META_TS_SUBMIT_NZIP,
|
|
31
|
+
exports.META_TIMESTAMP_NZIP,
|
|
32
|
+
exports.META_TS_SUBMIT_OTS,
|
|
33
|
+
exports.META_TIMESTAMP_OTS,
|
|
34
|
+
exports.META_MANIFEST_JSON,
|
|
35
|
+
];
|
|
36
|
+
/** ASCII case-insensitive path compare (APPNOTE §2.3). */
|
|
37
|
+
function asciiPathEqualsIgnoreCase(a, b) {
|
|
38
|
+
if (a.length !== b.length) {
|
|
39
|
+
// Still allow length mismatch only via toLowerCase for UTF-8 safety on ASCII paths
|
|
40
|
+
}
|
|
41
|
+
return a.toLowerCase() === b.toLowerCase();
|
|
42
|
+
}
|
|
43
|
+
/** True when path is under META-INF/ (ASCII case-insensitive). */
|
|
44
|
+
function isMetaInfPath(filename) {
|
|
45
|
+
return filename.toLowerCase().startsWith('meta-inf/');
|
|
46
|
+
}
|
|
47
|
+
/** True when filename is a reserved NeoZip meta path (any casing). */
|
|
48
|
+
function isReservedMetaPath(filename) {
|
|
49
|
+
const lower = filename.toLowerCase();
|
|
50
|
+
return RESERVED_CANONICAL.some((c) => c.toLowerCase() === lower);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* True for any META-INF/** entry (integrity merkle leaves exclude these per APPNOTE §6.2).
|
|
54
|
+
*/
|
|
55
|
+
function isMetadataFile(filename) {
|
|
56
|
+
return isMetaInfPath(filename);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Find a reserved meta entry among ZIP directory entries.
|
|
60
|
+
* Prefers an exact canonical match, then ASCII case-insensitive match.
|
|
61
|
+
* When multiple preferred names are given, earlier names win.
|
|
62
|
+
*/
|
|
63
|
+
function findReservedMetaEntry(entries, preferredCanonicalNames) {
|
|
64
|
+
const preferred = Array.isArray(preferredCanonicalNames)
|
|
65
|
+
? preferredCanonicalNames
|
|
66
|
+
: [preferredCanonicalNames];
|
|
67
|
+
for (const name of preferred) {
|
|
68
|
+
const exact = entries.find((e) => e.filename === name);
|
|
69
|
+
if (exact)
|
|
70
|
+
return exact;
|
|
71
|
+
}
|
|
72
|
+
for (const name of preferred) {
|
|
73
|
+
const folded = entries.find((e) => typeof e.filename === 'string' && asciiPathEqualsIgnoreCase(e.filename, name));
|
|
74
|
+
if (folded)
|
|
75
|
+
return folded;
|
|
76
|
+
}
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=MetaPaths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetaPaths.js","sourceRoot":"","sources":["../../../src/core/constants/MetaPaths.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA+BH,8DAKC;AAGD,sCAEC;AAGD,gDAGC;AAKD,wCAEC;AAOD,sDAqBC;AAhFD,mDAAmD;AACtC,QAAA,eAAe,GAAG,qBAAqB,CAAC;AACxC,QAAA,sBAAsB,GAAG,qBAAqB,CAAC;AAC/C,QAAA,mBAAmB,GAAG,yBAAyB,CAAC;AAChD,QAAA,mBAAmB,GAAG,yBAAyB,CAAC;AAChD,QAAA,kBAAkB,GAAG,wBAAwB,CAAC;AAC9C,QAAA,kBAAkB,GAAG,wBAAwB,CAAC;AAC9C,QAAA,kBAAkB,GAAG,wBAAwB,CAAC;AAE3D,yEAAyE;AAC5D,QAAA,mBAAmB,GAAG,0BAAkB,CAAC;AACtD,yEAAyE;AAC5D,QAAA,kBAAkB,GAAG,0BAAkB,CAAC;AACrD,6FAA6F;AAChF,QAAA,kBAAkB,GAAG,uBAAe,CAAC;AAElD,MAAM,kBAAkB,GAAG;IACzB,uBAAe;IACf,8BAAsB;IACtB,2BAAmB;IACnB,2BAAmB;IACnB,0BAAkB;IAClB,0BAAkB;IAClB,0BAAkB;CACV,CAAC;AAIX,0DAA0D;AAC1D,SAAgB,yBAAyB,CAAC,CAAS,EAAE,CAAS;IAC5D,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAC1B,mFAAmF;IACrF,CAAC;IACD,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAC7C,CAAC;AAED,kEAAkE;AAClE,SAAgB,aAAa,CAAC,QAAgB;IAC5C,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AACxD,CAAC;AAED,sEAAsE;AACtE,SAAgB,kBAAkB,CAAC,QAAgB;IACjD,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACrC,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC;AACnE,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,QAAgB;IAC7C,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,SAAgB,qBAAqB,CACnC,OAAY,EACZ,uBAAmD;IAEnD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,uBAAuB,CAAC;QACtD,CAAC,CAAC,uBAAuB;QACzB,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;IAE9B,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;QACvD,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CACzB,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,yBAAyB,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CACrF,CAAC;QACF,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;IAC5B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/core/index.d.ts
CHANGED
|
@@ -15,11 +15,13 @@ export { default as HashCalculator, HashCalculator as HashCalculatorClass } from
|
|
|
15
15
|
export * from './components/Util';
|
|
16
16
|
export * from './components/Support';
|
|
17
17
|
export { ProgressTracker } from './components/ProgressTracker';
|
|
18
|
+
export * from './merkle/MerkleRoot';
|
|
18
19
|
export { EncryptionManager } from './encryption/Manager';
|
|
19
20
|
export { ZipCrypto, crc32, crc32update, sha256 } from './encryption/ZipCrypto';
|
|
20
21
|
export type { EncryptionMethod, EncryptionOptions, EncryptionResult, DecryptionResult, EncryptionProvider } from './encryption/types';
|
|
21
22
|
export * from '../types';
|
|
22
23
|
export * from './constants/Headers';
|
|
24
|
+
export { META_TOKEN_NZIP, META_TOKEN_NZIP_LEGACY, META_TS_SUBMIT_NZIP, META_TIMESTAMP_NZIP, META_TS_SUBMIT_OTS, META_TIMESTAMP_OTS, META_MANIFEST_JSON, asciiPathEqualsIgnoreCase, isMetaInfPath, isReservedMetaPath, findReservedMetaEntry, } from './constants/MetaPaths';
|
|
23
25
|
export * from './constants/Errors';
|
|
24
26
|
export * from './version';
|
|
25
27
|
export { Logger, configureLoggerFromEnvironment } from './components/Logger';
|
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACvE,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EACV,WAAW,EACX,UAAU,EACV,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,WAAW,CAAC;AACnB,eAAe,MAAM,CAAC;AAGtB,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,cAAc,IAAI,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAC/G,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACvE,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EACV,WAAW,EACX,UAAU,EACV,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,WAAW,CAAC;AACnB,eAAe,MAAM,CAAC;AAGtB,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,cAAc,IAAI,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAC/G,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,cAAc,qBAAqB,CAAC;AAGpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC/E,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGtI,cAAc,UAAU,CAAC;AACzB,cAAc,qBAAqB,CAAC;AACpC,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,aAAa,EACb,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAG1B,OAAO,EAAE,MAAM,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AAC7E,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/core/index.js
CHANGED
|
@@ -21,7 +21,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
21
21
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
22
22
|
};
|
|
23
23
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
-
exports.configureLoggerFromEnvironment = exports.Logger = exports.sha256 = exports.crc32update = exports.crc32 = exports.ZipCrypto = exports.EncryptionManager = exports.ProgressTracker = exports.HashCalculatorClass = exports.HashCalculator = exports.ZipCopy = exports.ZipCompress = void 0;
|
|
24
|
+
exports.configureLoggerFromEnvironment = exports.Logger = exports.findReservedMetaEntry = exports.isReservedMetaPath = exports.isMetaInfPath = exports.asciiPathEqualsIgnoreCase = exports.META_MANIFEST_JSON = exports.META_TIMESTAMP_OTS = exports.META_TS_SUBMIT_OTS = exports.META_TIMESTAMP_NZIP = exports.META_TS_SUBMIT_NZIP = exports.META_TOKEN_NZIP_LEGACY = exports.META_TOKEN_NZIP = exports.sha256 = exports.crc32update = exports.crc32 = exports.ZipCrypto = exports.EncryptionManager = exports.ProgressTracker = exports.HashCalculatorClass = exports.HashCalculator = exports.ZipCopy = exports.ZipCompress = void 0;
|
|
25
25
|
// Core ZIP classes
|
|
26
26
|
const Zipkit_1 = __importDefault(require("./Zipkit"));
|
|
27
27
|
__exportStar(require("./Zipkit"), exports);
|
|
@@ -39,6 +39,7 @@ __exportStar(require("./components/Util"), exports);
|
|
|
39
39
|
__exportStar(require("./components/Support"), exports);
|
|
40
40
|
var ProgressTracker_1 = require("./components/ProgressTracker");
|
|
41
41
|
Object.defineProperty(exports, "ProgressTracker", { enumerable: true, get: function () { return ProgressTracker_1.ProgressTracker; } });
|
|
42
|
+
__exportStar(require("./merkle/MerkleRoot"), exports);
|
|
42
43
|
// Encryption functionality
|
|
43
44
|
var Manager_1 = require("./encryption/Manager");
|
|
44
45
|
Object.defineProperty(exports, "EncryptionManager", { enumerable: true, get: function () { return Manager_1.EncryptionManager; } });
|
|
@@ -50,6 +51,18 @@ Object.defineProperty(exports, "sha256", { enumerable: true, get: function () {
|
|
|
50
51
|
// Types and constants
|
|
51
52
|
__exportStar(require("../types"), exports);
|
|
52
53
|
__exportStar(require("./constants/Headers"), exports);
|
|
54
|
+
var MetaPaths_1 = require("./constants/MetaPaths");
|
|
55
|
+
Object.defineProperty(exports, "META_TOKEN_NZIP", { enumerable: true, get: function () { return MetaPaths_1.META_TOKEN_NZIP; } });
|
|
56
|
+
Object.defineProperty(exports, "META_TOKEN_NZIP_LEGACY", { enumerable: true, get: function () { return MetaPaths_1.META_TOKEN_NZIP_LEGACY; } });
|
|
57
|
+
Object.defineProperty(exports, "META_TS_SUBMIT_NZIP", { enumerable: true, get: function () { return MetaPaths_1.META_TS_SUBMIT_NZIP; } });
|
|
58
|
+
Object.defineProperty(exports, "META_TIMESTAMP_NZIP", { enumerable: true, get: function () { return MetaPaths_1.META_TIMESTAMP_NZIP; } });
|
|
59
|
+
Object.defineProperty(exports, "META_TS_SUBMIT_OTS", { enumerable: true, get: function () { return MetaPaths_1.META_TS_SUBMIT_OTS; } });
|
|
60
|
+
Object.defineProperty(exports, "META_TIMESTAMP_OTS", { enumerable: true, get: function () { return MetaPaths_1.META_TIMESTAMP_OTS; } });
|
|
61
|
+
Object.defineProperty(exports, "META_MANIFEST_JSON", { enumerable: true, get: function () { return MetaPaths_1.META_MANIFEST_JSON; } });
|
|
62
|
+
Object.defineProperty(exports, "asciiPathEqualsIgnoreCase", { enumerable: true, get: function () { return MetaPaths_1.asciiPathEqualsIgnoreCase; } });
|
|
63
|
+
Object.defineProperty(exports, "isMetaInfPath", { enumerable: true, get: function () { return MetaPaths_1.isMetaInfPath; } });
|
|
64
|
+
Object.defineProperty(exports, "isReservedMetaPath", { enumerable: true, get: function () { return MetaPaths_1.isReservedMetaPath; } });
|
|
65
|
+
Object.defineProperty(exports, "findReservedMetaEntry", { enumerable: true, get: function () { return MetaPaths_1.findReservedMetaEntry; } });
|
|
53
66
|
__exportStar(require("./constants/Errors"), exports);
|
|
54
67
|
__exportStar(require("./version"), exports);
|
|
55
68
|
// Logger utility
|
package/dist/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;AAEH,mBAAmB;AACnB,sDAA8B;AAC9B,2CAAyB;AACzB,6CAA2B;AAC3B,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AAGpB,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAOhB,kBAAe,gBAAM,CAAC;AAEtB,oBAAoB;AACpB,8DAA+G;AAAtG,iIAAA,OAAO,OAAkB;AAAE,qHAAA,cAAc,OAAuB;AACzE,oDAAkC;AAClC,uDAAqC;AACrC,gEAA+D;AAAtD,kHAAA,eAAe,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;AAEH,mBAAmB;AACnB,sDAA8B;AAC9B,2CAAyB;AACzB,6CAA2B;AAC3B,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AAGpB,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAOhB,kBAAe,gBAAM,CAAC;AAEtB,oBAAoB;AACpB,8DAA+G;AAAtG,iIAAA,OAAO,OAAkB;AAAE,qHAAA,cAAc,OAAuB;AACzE,oDAAkC;AAClC,uDAAqC;AACrC,gEAA+D;AAAtD,kHAAA,eAAe,OAAA;AACxB,sDAAoC;AAEpC,2BAA2B;AAC3B,gDAAyD;AAAhD,4GAAA,iBAAiB,OAAA;AAC1B,oDAA+E;AAAtE,sGAAA,SAAS,OAAA;AAAE,kGAAA,KAAK,OAAA;AAAE,wGAAA,WAAW,OAAA;AAAE,mGAAA,MAAM,OAAA;AAG9C,sBAAsB;AACtB,2CAAyB;AACzB,sDAAoC;AACpC,mDAY+B;AAX7B,4GAAA,eAAe,OAAA;AACf,mHAAA,sBAAsB,OAAA;AACtB,gHAAA,mBAAmB,OAAA;AACnB,gHAAA,mBAAmB,OAAA;AACnB,+GAAA,kBAAkB,OAAA;AAClB,+GAAA,kBAAkB,OAAA;AAClB,+GAAA,kBAAkB,OAAA;AAClB,sHAAA,yBAAyB,OAAA;AACzB,0GAAA,aAAa,OAAA;AACb,+GAAA,kBAAkB,OAAA;AAClB,kHAAA,qBAAqB,OAAA;AAEvB,qDAAmC;AACnC,4CAA0B;AAE1B,iBAAiB;AACjB,8CAA6E;AAApE,gGAAA,MAAM,OAAA;AAAE,wHAAA,8BAA8B,OAAA"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/** Merkle algorithms defined in NEOZIP_APPNOTE.md §6. */
|
|
2
|
+
export type MerkleAlgorithm = 'v0' | 'v1';
|
|
3
|
+
export interface MerkleContentEntry {
|
|
4
|
+
/** Central-directory path (UTF-8 string as stored or as known to the writer). */
|
|
5
|
+
path: string;
|
|
6
|
+
/**
|
|
7
|
+
* Uncompressed payload bytes (same bytes hashed into Extra Field 0x014E).
|
|
8
|
+
* Required for **v1** leaves when `merkleLeafV1` is absent. Optional for **v0** when `contentSha256` is set.
|
|
9
|
+
*/
|
|
10
|
+
content?: Buffer | Uint8Array;
|
|
11
|
+
/**
|
|
12
|
+
* Bare SHA-256 of uncompressed payload (= Extra Field 0x014E), hex or 32-byte Buffer.
|
|
13
|
+
* Used as v0 leaf; for v1 this alone is **not** a leaf (see APPNOTE §6.3).
|
|
14
|
+
*/
|
|
15
|
+
contentSha256?: string | Buffer;
|
|
16
|
+
/**
|
|
17
|
+
* Precomputed APPNOTE §6.3 v1 leaf: SHA-256(0x00 ‖ uncompressed_bytes), hex or 32-byte Buffer.
|
|
18
|
+
* Produced in the same streaming pass as `contentSha256` (create/extract via HashCalculator).
|
|
19
|
+
* Preferred for v1 when present — no second content read.
|
|
20
|
+
*/
|
|
21
|
+
merkleLeafV1?: string | Buffer;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Normalize a ZIP entry path for v1 leaf ordering (APPNOTE §6.3):
|
|
25
|
+
* POSIX separators, strip leading `./` and `/`, Unicode NFC, UTF-8 byte order when compared.
|
|
26
|
+
*/
|
|
27
|
+
export declare function normalizeMerklePath(path: string): string;
|
|
28
|
+
/** Bare content digest (= 0x014E value). */
|
|
29
|
+
export declare function contentDigest(content: Buffer | Uint8Array): Buffer;
|
|
30
|
+
/**
|
|
31
|
+
* v0 leaf: SHA-256(uncompressed bytes) — same as Extra Field 0x014E.
|
|
32
|
+
*/
|
|
33
|
+
export declare function leafHashV0(contentOrDigest: Buffer | Uint8Array, isDigest?: boolean): Buffer;
|
|
34
|
+
/**
|
|
35
|
+
* v1 leaf: SHA-256(0x00 ‖ uncompressed_bytes).
|
|
36
|
+
* Must not be confused with the bare 0x014E digest (APPNOTE §6.3).
|
|
37
|
+
*/
|
|
38
|
+
export declare function leafHashV1(content: Buffer | Uint8Array): Buffer;
|
|
39
|
+
/**
|
|
40
|
+
* Parent node hashes.
|
|
41
|
+
* v0: SHA-256(H_left ‖ H_right) — order preserved, no pair sorting.
|
|
42
|
+
* v1: SHA-256(0x01 ‖ H_left ‖ H_right).
|
|
43
|
+
*/
|
|
44
|
+
export declare function parentHash(left: Buffer, right: Buffer, algorithm: MerkleAlgorithm): Buffer;
|
|
45
|
+
/**
|
|
46
|
+
* Fold an ordered list of leaf hashes into a single root (hex lowercase).
|
|
47
|
+
* Odd-count rule:
|
|
48
|
+
* - v0: duplicate last leaf (Bitcoin-style)
|
|
49
|
+
* - v1: promote last node unhashed (RFC 6962–style)
|
|
50
|
+
*/
|
|
51
|
+
export declare function merkleRootFromLeaves(leaves: Buffer[], algorithm: MerkleAlgorithm): string | null;
|
|
52
|
+
/**
|
|
53
|
+
* Compute archive Merkle root per APPNOTE §6 from content entries
|
|
54
|
+
* (caller already excluded META-INF/** if desired).
|
|
55
|
+
*
|
|
56
|
+
* @returns lowercase hex root, or null if no usable leaves
|
|
57
|
+
*/
|
|
58
|
+
export declare function computeArchiveMerkleRoot(entries: MerkleContentEntry[], algorithm?: MerkleAlgorithm): string | null;
|
|
59
|
+
/**
|
|
60
|
+
* Build v0 root from path + bare content digests only (0x014E extras).
|
|
61
|
+
* Path order: central-directory bytes as stored (no NFC / strip).
|
|
62
|
+
*/
|
|
63
|
+
export declare function computeMerkleRootV0FromDigests(entries: Array<{
|
|
64
|
+
path: string;
|
|
65
|
+
sha256: string | Buffer;
|
|
66
|
+
}>): string | null;
|
|
67
|
+
/**
|
|
68
|
+
* Build v1 root from path + uncompressed payloads (APPNOTE §6.3).
|
|
69
|
+
* Paths are normalized before sorting.
|
|
70
|
+
*/
|
|
71
|
+
export declare function computeMerkleRootV1FromContents(entries: Array<{
|
|
72
|
+
path: string;
|
|
73
|
+
content: Buffer | Uint8Array;
|
|
74
|
+
}>): string | null;
|
|
75
|
+
/**
|
|
76
|
+
* Build v1 root from path + precomputed domain-separated leaves (APPNOTE §6.3).
|
|
77
|
+
* Prefer this after create/extract when HashCalculator produced merkleLeafV1 in one stream pass.
|
|
78
|
+
*/
|
|
79
|
+
export declare function computeMerkleRootV1FromLeaves(entries: Array<{
|
|
80
|
+
path: string;
|
|
81
|
+
merkleLeafV1: string | Buffer;
|
|
82
|
+
}>): string | null;
|
|
83
|
+
/**
|
|
84
|
+
* Verify a declared root (APPNOTE §6.4): try v1 first (when content or leaves available),
|
|
85
|
+
* then v0 digests. Returns which algorithm matched, or null on failure.
|
|
86
|
+
*
|
|
87
|
+
* When only bare 0x014E digests are available, only v0 can match APPNOTE correctly.
|
|
88
|
+
* Pass `merkleLeafV1` or content for full v1 verification without re-hashing from scratch
|
|
89
|
+
* when leaves were computed in the decompress stream.
|
|
90
|
+
*/
|
|
91
|
+
export declare function matchMerkleRoot(entries: MerkleContentEntry[], declaredRoot: string): {
|
|
92
|
+
algorithm: MerkleAlgorithm;
|
|
93
|
+
security: 'high' | 'legacy';
|
|
94
|
+
} | null;
|
|
95
|
+
declare const _default: {
|
|
96
|
+
normalizeMerklePath: typeof normalizeMerklePath;
|
|
97
|
+
contentDigest: typeof contentDigest;
|
|
98
|
+
leafHashV0: typeof leafHashV0;
|
|
99
|
+
leafHashV1: typeof leafHashV1;
|
|
100
|
+
parentHash: typeof parentHash;
|
|
101
|
+
merkleRootFromLeaves: typeof merkleRootFromLeaves;
|
|
102
|
+
computeArchiveMerkleRoot: typeof computeArchiveMerkleRoot;
|
|
103
|
+
computeMerkleRootV0FromDigests: typeof computeMerkleRootV0FromDigests;
|
|
104
|
+
computeMerkleRootV1FromContents: typeof computeMerkleRootV1FromContents;
|
|
105
|
+
computeMerkleRootV1FromLeaves: typeof computeMerkleRootV1FromLeaves;
|
|
106
|
+
matchMerkleRoot: typeof matchMerkleRoot;
|
|
107
|
+
};
|
|
108
|
+
export default _default;
|
|
109
|
+
//# sourceMappingURL=MerkleRoot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MerkleRoot.d.ts","sourceRoot":"","sources":["../../../src/core/merkle/MerkleRoot.ts"],"names":[],"mappings":"AAQA,yDAAyD;AACzD,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1C,MAAM,WAAW,kBAAkB;IACjC,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC9B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC;AAwBD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYxD;AAQD,4CAA4C;AAC5C,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAElE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,eAAe,EAAE,MAAM,GAAG,UAAU,EAAE,QAAQ,UAAQ,GAAG,MAAM,CAGzF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,MAAM,CAK1F;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CA0BhG;AAsCD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,kBAAkB,EAAE,EAC7B,SAAS,GAAE,eAAsB,GAChC,MAAM,GAAG,IAAI,CA0Bf;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC,GACxD,MAAM,GAAG,IAAI,CAKf;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,CAAC,GAC7D,MAAM,GAAG,IAAI,CAKf;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC,GAC9D,MAAM,GAAG,IAAI,CAKf;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,kBAAkB,EAAE,EAC7B,YAAY,EAAE,MAAM,GACnB;IAAE,SAAS,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,GAAG,IAAI,CA6BpE;;;;;;;;;;;;;;AAED,wBAYE"}
|