@poe-platform/safe-bash 0.1.656 → 0.1.658
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/dist/safe-bash/chunks/{chunk-43HWIHXB.js → chunk-Z4UKD5FF.js} +192 -61
- package/dist/safe-bash/chunks/chunk-Z4UKD5FF.js.map +7 -0
- package/dist/safe-bash/chunks/{xz-U4QDTPZL.js → xz-4V5FXSPG.js} +555 -514
- package/dist/safe-bash/chunks/xz-4V5FXSPG.js.map +7 -0
- package/dist/safe-bash/commands/archive/index.d.ts +1 -1
- package/dist/safe-bash/commands/archive/index.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/internal.d.ts +32 -0
- package/dist/safe-bash/commands/archive/internal.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/internal.js.map +1 -1
- package/dist/safe-bash/commands/archive/unzip/arguments.d.ts +3 -0
- package/dist/safe-bash/commands/archive/unzip/arguments.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/unzip/arguments.js +31 -5
- package/dist/safe-bash/commands/archive/unzip/arguments.js.map +1 -1
- package/dist/safe-bash/commands/archive/unzip/safety.d.ts +4 -0
- package/dist/safe-bash/commands/archive/unzip/safety.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/unzip/safety.js +3 -0
- package/dist/safe-bash/commands/archive/unzip/safety.js.map +1 -1
- package/dist/safe-bash/commands/archive/unzip.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/unzip.js +159 -112
- package/dist/safe-bash/commands/archive/unzip.js.map +1 -1
- package/dist/safe-bash/commands/archive/zip/aes-primitives-unavailable.d.ts +2 -0
- package/dist/safe-bash/commands/archive/zip/aes-primitives-unavailable.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip/aes-primitives-unavailable.js +3 -0
- package/dist/safe-bash/commands/archive/zip/aes-primitives-unavailable.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip/aes-primitives.d.ts +2 -0
- package/dist/safe-bash/commands/archive/zip/aes-primitives.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip/aes-primitives.js +3 -0
- package/dist/safe-bash/commands/archive/zip/aes-primitives.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip/aes.d.ts +18 -0
- package/dist/safe-bash/commands/archive/zip/aes.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip/aes.js +157 -0
- package/dist/safe-bash/commands/archive/zip/aes.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip/crypto.d.ts +16 -0
- package/dist/safe-bash/commands/archive/zip/crypto.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/zip/crypto.js +85 -0
- package/dist/safe-bash/commands/archive/zip/crypto.js.map +1 -1
- package/dist/safe-bash/commands/archive/zip/grow.d.ts +4 -0
- package/dist/safe-bash/commands/archive/zip/grow.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip/grow.js +3 -0
- package/dist/safe-bash/commands/archive/zip/grow.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip/help.d.ts +4 -2
- package/dist/safe-bash/commands/archive/zip/help.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/zip/help.js +98 -3
- package/dist/safe-bash/commands/archive/zip/help.js.map +1 -1
- package/dist/safe-bash/commands/archive/zip/line-endings.d.ts +1 -0
- package/dist/safe-bash/commands/archive/zip/line-endings.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/zip/line-endings.js +158 -0
- package/dist/safe-bash/commands/archive/zip/line-endings.js.map +1 -1
- package/dist/safe-bash/commands/archive/zip/log.d.ts +23 -0
- package/dist/safe-bash/commands/archive/zip/log.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip/log.js +159 -0
- package/dist/safe-bash/commands/archive/zip/log.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip/lzma.d.ts +10 -0
- package/dist/safe-bash/commands/archive/zip/lzma.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip/lzma.js +41 -0
- package/dist/safe-bash/commands/archive/zip/lzma.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip/names.d.ts +3 -0
- package/dist/safe-bash/commands/archive/zip/names.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip/names.js +34 -0
- package/dist/safe-bash/commands/archive/zip/names.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip/options.d.ts +7 -0
- package/dist/safe-bash/commands/archive/zip/options.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/zip/options.js +88 -17
- package/dist/safe-bash/commands/archive/zip/options.js.map +1 -1
- package/dist/safe-bash/commands/archive/zip/repair.d.ts +11 -0
- package/dist/safe-bash/commands/archive/zip/repair.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip/repair.js +392 -0
- package/dist/safe-bash/commands/archive/zip/repair.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip/safety.d.ts +23 -4
- package/dist/safe-bash/commands/archive/zip/safety.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/zip/safety.js +73 -23
- package/dist/safe-bash/commands/archive/zip/safety.js.map +1 -1
- package/dist/safe-bash/commands/archive/zip/sfx.d.ts +5 -0
- package/dist/safe-bash/commands/archive/zip/sfx.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip/sfx.js +56 -0
- package/dist/safe-bash/commands/archive/zip/sfx.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip/test-command.d.ts +6 -0
- package/dist/safe-bash/commands/archive/zip/test-command.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip/test-command.js +101 -0
- package/dist/safe-bash/commands/archive/zip/test-command.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip/volumes.d.ts +22 -0
- package/dist/safe-bash/commands/archive/zip/volumes.d.ts.map +1 -0
- package/dist/safe-bash/commands/archive/zip/volumes.js +265 -0
- package/dist/safe-bash/commands/archive/zip/volumes.js.map +1 -0
- package/dist/safe-bash/commands/archive/zip/zip64.d.ts +20 -1
- package/dist/safe-bash/commands/archive/zip/zip64.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/zip/zip64.js +127 -17
- package/dist/safe-bash/commands/archive/zip/zip64.js.map +1 -1
- package/dist/safe-bash/commands/archive/zip-format.d.ts +30 -5
- package/dist/safe-bash/commands/archive/zip-format.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/zip-format.js +489 -91
- package/dist/safe-bash/commands/archive/zip-format.js.map +1 -1
- package/dist/safe-bash/commands/archive/zip.d.ts.map +1 -1
- package/dist/safe-bash/commands/archive/zip.js +729 -128
- package/dist/safe-bash/commands/archive/zip.js.map +1 -1
- package/dist/safe-bash/commands/bytes/compression/bounded-codec.d.ts +7 -0
- package/dist/safe-bash/commands/bytes/compression/bounded-codec.d.ts.map +1 -1
- package/dist/safe-bash/commands/bytes/compression/bounded-codec.js.map +1 -1
- package/dist/safe-bash/commands/bytes/compression/codec-loader.d.ts.map +1 -1
- package/dist/safe-bash/commands/bytes/compression/codec-loader.js +8 -1
- package/dist/safe-bash/commands/bytes/compression/codec-loader.js.map +1 -1
- package/dist/safe-bash/commands/bytes/compression/native/generated/xz.mjs +1 -1
- package/dist/safe-bash/commands/bytes/compression/native/sources.json +2 -2
- package/dist/safe-bash/commands/bytes/compression/native/types.d.ts +1 -0
- package/dist/safe-bash/commands/bytes/compression/native/types.d.ts.map +1 -1
- package/dist/safe-bash/commands/python/cache.d.ts +11 -0
- package/dist/safe-bash/commands/python/cache.d.ts.map +1 -0
- package/dist/safe-bash/commands/python/cache.js +41 -0
- package/dist/safe-bash/commands/python/cache.js.map +1 -0
- package/dist/safe-bash/commands/python/index.browser.js +7 -1
- package/dist/safe-bash/commands/python/index.d.ts +6 -2
- package/dist/safe-bash/commands/python/index.d.ts.map +1 -1
- package/dist/safe-bash/commands/python/index.js +16 -10
- package/dist/safe-bash/commands/python/index.js.map +1 -1
- package/dist/safe-bash/commands/python/manifest.d.ts +23 -0
- package/dist/safe-bash/commands/python/manifest.d.ts.map +1 -0
- package/dist/safe-bash/commands/python/manifest.js +48 -0
- package/dist/safe-bash/commands/python/manifest.js.map +1 -0
- package/dist/safe-bash/commands/python/provisioning.d.ts +17 -13
- package/dist/safe-bash/commands/python/provisioning.d.ts.map +1 -1
- package/dist/safe-bash/commands/python/provisioning.js +88 -46
- package/dist/safe-bash/commands/python/provisioning.js.map +1 -1
- package/dist/safe-bash/commands/text.js +1 -1
- package/dist/safe-bash/commands/text.js.map +1 -1
- package/dist/safe-bash/core.browser.js +3113 -718
- package/dist/safe-bash/core.browser.js.map +4 -4
- package/package.json +11 -3
- package/dist/safe-bash/chunks/chunk-43HWIHXB.js.map +0 -7
- package/dist/safe-bash/chunks/xz-U4QDTPZL.js.map +0 -7
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { dirname, collectBytes, readBytes, resolvePath, writeBytes } from "../../contracts/index.js";
|
|
2
2
|
import { writeFileOutput } from "../../contracts/filesystem-output.js";
|
|
3
3
|
import { createOutputOperation } from "../../contracts/output.js";
|
|
4
|
-
import { publicDiagnosticMessage } from "../../diagnostics.js";
|
|
4
|
+
import { PublicDiagnostic, publicDiagnosticMessage } from "../../diagnostics.js";
|
|
5
5
|
import { Budget, bounded, checkPath, display, fail, settings, text, vfsPath } from "./internal.js";
|
|
6
6
|
import { decodeZipEntry, readZipArchive } from "./zip-format.js";
|
|
7
7
|
import { Answers, parseArguments, Selection } from "./unzip/arguments.js";
|
|
8
8
|
import { Extraction } from "./unzip/safety.js";
|
|
9
|
+
import { readZipPassword } from "./zip/crypto.js";
|
|
10
|
+
import { resolveZipVolumes } from "./zip/volumes.js";
|
|
9
11
|
function filtered(name) {
|
|
10
12
|
let output = "";
|
|
11
13
|
for (const character of name) {
|
|
@@ -98,10 +100,12 @@ export function createUnzipCommand(options = {}) {
|
|
|
98
100
|
if (archiveStat.type !== "file")
|
|
99
101
|
fail("input archive is not a regular file");
|
|
100
102
|
const bytes = await collectBytes(bounded(extraction.input(archivePath), limits.maxArchiveBytes, context.signal, limits.chunkSize), { signal: context.signal, maxBytes: limits.maxArchiveBytes });
|
|
101
|
-
if (!parsed.pipe)
|
|
103
|
+
if (!parsed.pipe && !parsed.quiet)
|
|
102
104
|
await budget.output(`Archive: ${filtered(archive)}\n`);
|
|
103
|
-
const
|
|
104
|
-
|
|
105
|
+
const resolved = await resolveZipVolumes({ context, limits, operation: action => extraction.operation(async () => action()), stat: path => extraction.stat(path), input: path => extraction.input(path) }, archivePath, bytes, options.zipHost);
|
|
106
|
+
extraction.inputVolumes = resolved.volumes ?? [];
|
|
107
|
+
const zip = await readZipArchive(resolved.bytes, limits, context.signal, resolved.disks ? { disks: resolved.disks } : { prefix: true });
|
|
108
|
+
if (!parsed.pipe && !parsed.quiet)
|
|
105
109
|
await comment(zip.comment, budget);
|
|
106
110
|
if (!zip.entries.length) {
|
|
107
111
|
await budget.output(`warning [${filtered(archive)}]: zipfile is empty\n`, true);
|
|
@@ -110,18 +114,41 @@ export function createUnzipCommand(options = {}) {
|
|
|
110
114
|
if (parsed.list)
|
|
111
115
|
await budget.output(" Length Date Time Name\n--------- ---------- ----- ----\n");
|
|
112
116
|
const rootRaw = parsed.destination === undefined ? context.cwd : vfsPath(context.cwd, parsed.destination);
|
|
113
|
-
const root = parsed.list || parsed.pipe ? resolvePath(rootRaw) : await extraction.directory(rootRaw, true);
|
|
114
|
-
if (!parsed.list && !parsed.pipe)
|
|
117
|
+
const root = parsed.list || parsed.pipe || parsed.test ? resolvePath(rootRaw) : await extraction.directory(rootRaw, true);
|
|
118
|
+
if (!parsed.list && !parsed.pipe && !parsed.test)
|
|
115
119
|
answers = new Answers(extraction.source(context.stdin), limits, context.signal);
|
|
116
120
|
let overwrite = parsed.overwrite ? "all" : "ask";
|
|
117
121
|
let exitCode = 0;
|
|
118
122
|
let selected = 0;
|
|
123
|
+
let badPasswords = 0;
|
|
119
124
|
let total = 0;
|
|
120
125
|
let actualTotal = 0;
|
|
126
|
+
let password = parsed.password;
|
|
121
127
|
const payload = async function* (entry) {
|
|
122
128
|
let actual = 0;
|
|
123
129
|
const signal = output?.signal ?? context.signal;
|
|
124
|
-
|
|
130
|
+
if (entry.flags & 1) {
|
|
131
|
+
// A matching header byte does not authenticate the member. Verify
|
|
132
|
+
// each candidate completely before retaining a password or output.
|
|
133
|
+
for (let attempt = password !== undefined && parsed.password === undefined ? -1 : 0; attempt < 3; attempt++) {
|
|
134
|
+
if (password === undefined)
|
|
135
|
+
password = await extraction.operation(() => readZipPassword(options.zipHost, limits.maxArgumentBytes, signal, false));
|
|
136
|
+
try {
|
|
137
|
+
const verified = await collectBytes(decodeZipEntry(entry, limits, signal, password), { maxBytes: Math.min(limits.maxEntryBytes, limits.maxTotalBytes - actualTotal), signal });
|
|
138
|
+
actualTotal += verified.length;
|
|
139
|
+
yield verified;
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
signal.throwIfAborted();
|
|
144
|
+
if (parsed.password !== undefined || !(error instanceof PublicDiagnostic) || error.message !== "ZIP incorrect password")
|
|
145
|
+
throw error;
|
|
146
|
+
password = undefined;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
fail("ZIP incorrect password");
|
|
150
|
+
}
|
|
151
|
+
for await (const chunk of readBytes(decodeZipEntry(entry, limits, signal, password), signal)) {
|
|
125
152
|
if (chunk.length > limits.maxEntryBytes - actual || chunk.length > limits.maxTotalBytes - actualTotal)
|
|
126
153
|
fail("actual decompressed byte limit exceeded");
|
|
127
154
|
actual += chunk.length;
|
|
@@ -138,119 +165,137 @@ export function createUnzipCommand(options = {}) {
|
|
|
138
165
|
continue;
|
|
139
166
|
selected++;
|
|
140
167
|
total += entry.size;
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
await
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
continue;
|
|
151
|
-
}
|
|
152
|
-
let path = extraction.member(root, entry.name);
|
|
153
|
-
const fileType = entry.mode & 0o170000;
|
|
154
|
-
if (fileType && fileType !== 0o100000 && fileType !== 0o040000 && fileType !== 0o120000 && fileType !== 0o010000)
|
|
155
|
-
fail("unsupported special ZIP entry");
|
|
156
|
-
if (path === root && !entry.directory)
|
|
157
|
-
fail("entry would replace extraction root");
|
|
158
|
-
let shown = parsed.destination === undefined ? entry.name : `${parsed.destination.endsWith("/") ? parsed.destination : `${parsed.destination}/`}${entry.name}`;
|
|
159
|
-
await extraction.parents(root, path, true);
|
|
160
|
-
if (entry.directory) {
|
|
161
|
-
if (entry.size)
|
|
162
|
-
fail("directory has nonempty payload");
|
|
163
|
-
for await (const chunk of payload(entry)) {
|
|
164
|
-
await writeFileOutput(context, chunk, async () => { if (chunk.length)
|
|
165
|
-
fail("directory has nonempty payload"); });
|
|
166
|
-
}
|
|
167
|
-
const parent = await extraction.operation(() => context.fs.lstat(dirname(path), { signal: context.signal }));
|
|
168
|
-
const existing = await extraction.stat(path);
|
|
169
|
-
let identity = existing;
|
|
170
|
-
if (existing && existing.type !== "directory")
|
|
171
|
-
fail("directory destination is not a directory");
|
|
172
|
-
if (!existing) {
|
|
173
|
-
identity = await extraction.createDirectory(path, parent);
|
|
174
|
-
await budget.output(` creating: ${filtered(shown)}\n`);
|
|
168
|
+
try {
|
|
169
|
+
if (parsed.test) {
|
|
170
|
+
for await (const chunk of payload(entry)) {
|
|
171
|
+
if (chunk.length)
|
|
172
|
+
context.signal.throwIfAborted();
|
|
173
|
+
}
|
|
174
|
+
if (!parsed.quiet)
|
|
175
|
+
await budget.output(` testing: ${padded(filtered(entry.name))} OK\n`);
|
|
176
|
+
continue;
|
|
175
177
|
}
|
|
176
|
-
if (
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
}
|
|
181
|
-
let parent = await extraction.operation(() => context.fs.lstat(dirname(path), { signal: context.signal }));
|
|
182
|
-
let existing = await extraction.destination(path, archivePath, archiveStat);
|
|
183
|
-
let skip = false;
|
|
184
|
-
let prompting = 0;
|
|
185
|
-
while (existing && overwrite !== "all") {
|
|
186
|
-
if (overwrite === "none") {
|
|
187
|
-
skip = true;
|
|
188
|
-
break;
|
|
178
|
+
if (parsed.pipe) {
|
|
179
|
+
for await (const chunk of payload(entry))
|
|
180
|
+
await output.output.write(chunk);
|
|
181
|
+
continue;
|
|
189
182
|
}
|
|
190
|
-
if (
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
await budget.output(' NULL\n(EOF or read error, treating as "[N]one" ...)\n', true);
|
|
196
|
-
overwrite = "none";
|
|
197
|
-
exitCode = 1;
|
|
198
|
-
skip = true;
|
|
199
|
-
break;
|
|
183
|
+
if (parsed.list) {
|
|
184
|
+
await budget.output(`${String(entry.size).padStart(9)} ${date(entry)} ${filtered(entry.name)}\n`);
|
|
185
|
+
if (entry.comment)
|
|
186
|
+
await comment(entry.comment, budget);
|
|
187
|
+
continue;
|
|
200
188
|
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
189
|
+
let path = extraction.member(root, entry.name);
|
|
190
|
+
const fileType = entry.mode & 0o170000;
|
|
191
|
+
if (fileType && fileType !== 0o100000 && fileType !== 0o040000 && fileType !== 0o120000 && fileType !== 0o010000)
|
|
192
|
+
fail("unsupported special ZIP entry");
|
|
193
|
+
if (path === root && !entry.directory)
|
|
194
|
+
fail("entry would replace extraction root");
|
|
195
|
+
let shown = parsed.destination === undefined ? entry.name : `${parsed.destination.endsWith("/") ? parsed.destination : `${parsed.destination}/`}${entry.name}`;
|
|
196
|
+
await extraction.parents(root, path, true);
|
|
197
|
+
if (entry.directory) {
|
|
198
|
+
if (entry.size)
|
|
199
|
+
fail("directory has nonempty payload");
|
|
200
|
+
for await (const chunk of payload(entry)) {
|
|
201
|
+
await writeFileOutput(context, chunk, async () => { if (chunk.length)
|
|
202
|
+
fail("directory has nonempty payload"); });
|
|
203
|
+
}
|
|
204
|
+
const parent = await extraction.operation(() => context.fs.lstat(dirname(path), { signal: context.signal }));
|
|
205
|
+
const existing = await extraction.stat(path);
|
|
206
|
+
let identity = existing;
|
|
207
|
+
if (existing && existing.type !== "directory")
|
|
208
|
+
fail("directory destination is not a directory");
|
|
209
|
+
if (!existing) {
|
|
210
|
+
identity = await extraction.createDirectory(path, parent);
|
|
211
|
+
await budget.output(` creating: ${filtered(shown)}\n`);
|
|
212
|
+
}
|
|
213
|
+
if (!identity || identity.type !== "directory")
|
|
214
|
+
fail("directory changed during creation");
|
|
215
|
+
directories.push({ path, entry, identity, parent });
|
|
216
|
+
continue;
|
|
205
217
|
}
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
218
|
+
let parent = await extraction.operation(() => context.fs.lstat(dirname(path), { signal: context.signal }));
|
|
219
|
+
let existing = await extraction.destination(path, archivePath, archiveStat);
|
|
220
|
+
let skip = false;
|
|
221
|
+
let prompting = 0;
|
|
222
|
+
while (existing && overwrite !== "all") {
|
|
223
|
+
if (overwrite === "none") {
|
|
224
|
+
skip = true;
|
|
225
|
+
break;
|
|
226
|
+
}
|
|
227
|
+
if (++prompting > limits.maxMembers)
|
|
228
|
+
fail("overwrite prompt work limit exceeded");
|
|
229
|
+
await budget.output(`replace ${filtered(shown)}? [y]es, [n]o, [A]ll, [N]one, [r]ename: `, true);
|
|
230
|
+
const answer = await answers.read();
|
|
231
|
+
if (answer === undefined) {
|
|
232
|
+
await budget.output(' NULL\n(EOF or read error, treating as "[N]one" ...)\n', true);
|
|
210
233
|
overwrite = "none";
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
if (choice === "r" || choice === "R") {
|
|
215
|
-
let renamed = "";
|
|
216
|
-
while (!renamed) {
|
|
217
|
-
await budget.output("new name: ", true);
|
|
218
|
-
const value = await answers.read(limits.maxPathBytes);
|
|
219
|
-
if (value === undefined)
|
|
220
|
-
fail("EOF while reading replacement name");
|
|
221
|
-
renamed = value.endsWith("\n") ? value.slice(0, -1) : value;
|
|
234
|
+
exitCode = 1;
|
|
235
|
+
skip = true;
|
|
236
|
+
break;
|
|
222
237
|
}
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
238
|
+
const choice = answer[0];
|
|
239
|
+
if (choice === "A") {
|
|
240
|
+
overwrite = "all";
|
|
241
|
+
break;
|
|
242
|
+
}
|
|
243
|
+
if (choice === "y" || choice === "Y")
|
|
244
|
+
break;
|
|
245
|
+
if (choice === "n" || choice === "N") {
|
|
246
|
+
if (choice === "N")
|
|
247
|
+
overwrite = "none";
|
|
248
|
+
skip = true;
|
|
249
|
+
break;
|
|
250
|
+
}
|
|
251
|
+
if (choice === "r" || choice === "R") {
|
|
252
|
+
let renamed = "";
|
|
253
|
+
while (!renamed) {
|
|
254
|
+
await budget.output("new name: ", true);
|
|
255
|
+
const value = await answers.read(limits.maxPathBytes);
|
|
256
|
+
if (value === undefined)
|
|
257
|
+
fail("EOF while reading replacement name");
|
|
258
|
+
renamed = value.endsWith("\n") ? value.slice(0, -1) : value;
|
|
259
|
+
}
|
|
260
|
+
path = extraction.member(root, renamed);
|
|
261
|
+
shown = parsed.destination === undefined ? renamed : `${parsed.destination.endsWith("/") ? parsed.destination : `${parsed.destination}/`}${renamed}`;
|
|
262
|
+
await extraction.parents(root, path, true);
|
|
263
|
+
parent = await extraction.operation(() => context.fs.lstat(dirname(path), { signal: context.signal }));
|
|
264
|
+
existing = await extraction.destination(path, archivePath, archiveStat);
|
|
265
|
+
continue;
|
|
266
|
+
}
|
|
267
|
+
const response = choice === "\n" || choice === "\r" ? "{ENTER}" : answer.endsWith("\n") ? answer.slice(0, -1) : answer;
|
|
268
|
+
await budget.output(`error: invalid response [${response}]\n`, true);
|
|
269
|
+
}
|
|
270
|
+
if (skip)
|
|
228
271
|
continue;
|
|
272
|
+
const chunks = [];
|
|
273
|
+
let actual = 0;
|
|
274
|
+
for await (const chunk of payload(entry)) {
|
|
275
|
+
actual += chunk.length;
|
|
276
|
+
await writeFileOutput(context, chunk, async (bytes) => { chunks.push(Uint8Array.from(bytes)); });
|
|
277
|
+
}
|
|
278
|
+
if (entry.symlink) {
|
|
279
|
+
if (actual > limits.maxPathBytes)
|
|
280
|
+
fail("symlink target byte limit exceeded");
|
|
281
|
+
const target = text(Buffer.concat(chunks));
|
|
282
|
+
await extraction.target(root, path, target);
|
|
283
|
+
if (!context.fs.symlink || context.fs.capabilities.symlinks === false)
|
|
284
|
+
fail("filesystem does not support symlinks");
|
|
285
|
+
links.push({ path, shown, target, existing, parent, entry });
|
|
286
|
+
await budget.output(` linking: ${padded(filtered(shown))} -> ${filtered(target)} \n`);
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
await extraction.publish(root, path, chunks, existing, parent, entry.mode, entry.modified);
|
|
290
|
+
await budget.output(`${entry.method === 0 ? " extracting" : " inflating"}: ${padded(filtered(shown))} \n`);
|
|
229
291
|
}
|
|
230
|
-
const response = choice === "\n" || choice === "\r" ? "{ENTER}" : answer.endsWith("\n") ? answer.slice(0, -1) : answer;
|
|
231
|
-
await budget.output(`error: invalid response [${response}]\n`, true);
|
|
232
|
-
}
|
|
233
|
-
if (skip)
|
|
234
|
-
continue;
|
|
235
|
-
const chunks = [];
|
|
236
|
-
let actual = 0;
|
|
237
|
-
for await (const chunk of payload(entry)) {
|
|
238
|
-
actual += chunk.length;
|
|
239
|
-
await writeFileOutput(context, chunk, async (bytes) => { chunks.push(Uint8Array.from(bytes)); });
|
|
240
|
-
}
|
|
241
|
-
if (entry.symlink) {
|
|
242
|
-
if (actual > limits.maxPathBytes)
|
|
243
|
-
fail("symlink target byte limit exceeded");
|
|
244
|
-
const target = text(Buffer.concat(chunks));
|
|
245
|
-
await extraction.target(root, path, target);
|
|
246
|
-
if (!context.fs.symlink || context.fs.capabilities.symlinks === false)
|
|
247
|
-
fail("filesystem does not support symlinks");
|
|
248
|
-
links.push({ path, shown, target, existing, parent, entry });
|
|
249
|
-
await budget.output(` linking: ${padded(filtered(shown))} -> ${filtered(target)} \n`);
|
|
250
292
|
}
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
293
|
+
catch (error) {
|
|
294
|
+
context.signal.throwIfAborted();
|
|
295
|
+
if (!(error instanceof PublicDiagnostic) || error.message !== "ZIP incorrect password")
|
|
296
|
+
throw error;
|
|
297
|
+
badPasswords++;
|
|
298
|
+
await budget.output(`skipping: ${filtered(entry.name)} incorrect password\n`, true);
|
|
254
299
|
}
|
|
255
300
|
}
|
|
256
301
|
if (parsed.list)
|
|
@@ -274,7 +319,9 @@ export function createUnzipCommand(options = {}) {
|
|
|
274
319
|
exitCode = 11;
|
|
275
320
|
}
|
|
276
321
|
}
|
|
277
|
-
|
|
322
|
+
if (parsed.test && parsed.quiet < 2 && selected && !badPasswords && !exitCode)
|
|
323
|
+
await budget.output(`No errors detected in compressed data of ${filtered(archive)}.\n`);
|
|
324
|
+
return { exitCode: badPasswords ? badPasswords === selected ? 82 : 1 : selected ? exitCode : 11 };
|
|
278
325
|
}
|
|
279
326
|
catch (error) {
|
|
280
327
|
original.signal.throwIfAborted();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unzip.js","sourceRoot":"","sources":["../../../src/commands/archive/unzip.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"unzip.js","sourceRoot":"","sources":["../../../src/commands/archive/unzip.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aes-primitives-unavailable.d.ts","sourceRoot":"","sources":["../../../../src/commands/archive/zip/aes-primitives-unavailable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aes-primitives-unavailable.js","sourceRoot":"","sources":["../../../../src/commands/archive/zip/aes-primitives-unavailable.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aes-primitives.d.ts","sourceRoot":"","sources":["../../../../src/commands/archive/zip/aes-primitives.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aes-primitives.js","sourceRoot":"","sources":["../../../../src/commands/archive/zip/aes-primitives.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type ByteSource } from "../../../contracts/index.js";
|
|
2
|
+
import type { ZipEncryption } from "./crypto.js";
|
|
3
|
+
/** WinZip AES encryption specification 1.04, AE-1 and AE-2. */
|
|
4
|
+
export interface ZipAes {
|
|
5
|
+
readonly strength: 128 | 192 | 256;
|
|
6
|
+
readonly version: 1 | 2;
|
|
7
|
+
}
|
|
8
|
+
export declare function zipEncryptionProfile(profile: string): ZipAes | undefined;
|
|
9
|
+
export declare function aesParameters(aes: ZipAes): {
|
|
10
|
+
keyBytes: number;
|
|
11
|
+
saltBytes: number;
|
|
12
|
+
};
|
|
13
|
+
export declare function encryptAesPayload(source: ByteSource, encryption: ZipEncryption & {
|
|
14
|
+
aes: ZipAes;
|
|
15
|
+
}, maxBytes: number, signal: AbortSignal): Promise<Uint8Array>;
|
|
16
|
+
export declare function decryptAesPayload(wire: Uint8Array, password: Uint8Array, aes: ZipAes, maxBytes: number, signal: AbortSignal): Promise<Uint8Array>;
|
|
17
|
+
export declare function aesExtra(aes: ZipAes, method: number): Uint8Array;
|
|
18
|
+
//# sourceMappingURL=aes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aes.d.ts","sourceRoot":"","sources":["../../../../src/commands/archive/zip/aes.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAG5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,+DAA+D;AAC/D,MAAM,WAAW,MAAM;IAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAA;CAAE;AAWvF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKxE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAIlF;AAoCD,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA4BnK;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAuBvJ;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAUhE"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import * as crypto from "#safe-bash-zip-aes-crypto";
|
|
2
|
+
import { collectBytes } from "../../../contracts/index.js";
|
|
3
|
+
import { yieldTurn } from "../../../contracts/yield.js";
|
|
4
|
+
import { fail } from "../internal.js";
|
|
5
|
+
function aesPrimitives() {
|
|
6
|
+
// Some legitimate non-Node hosts expose only hashes/randomness. Reflective
|
|
7
|
+
// admission keeps plain ZIP loadable there without requiring absent exports.
|
|
8
|
+
const names = ["createCipheriv", "createHmac", "pbkdf2Sync", "timingSafeEqual"];
|
|
9
|
+
const entries = names.map(name => [name, Reflect.get(crypto, name)]);
|
|
10
|
+
if (entries.some(([, value]) => typeof value !== "function"))
|
|
11
|
+
fail("ZIP AES vetted crypto primitives are unavailable");
|
|
12
|
+
return Object.fromEntries(entries);
|
|
13
|
+
}
|
|
14
|
+
export function zipEncryptionProfile(profile) {
|
|
15
|
+
if (profile === "zipcrypto")
|
|
16
|
+
return undefined;
|
|
17
|
+
const [prefix, strength, version, extra] = profile.split("-");
|
|
18
|
+
if (prefix !== "aes" || extra !== undefined || !["128", "192", "256"].includes(strength) || !["ae1", "ae2"].includes(version))
|
|
19
|
+
fail("ZIP unsupported encryption profile");
|
|
20
|
+
return { strength: Number(strength), version: version === "ae1" ? 1 : 2 };
|
|
21
|
+
}
|
|
22
|
+
export function aesParameters(aes) {
|
|
23
|
+
if (aes.version !== 1 && aes.version !== 2)
|
|
24
|
+
fail("ZIP unsupported AES version");
|
|
25
|
+
if (aes.strength !== 128 && aes.strength !== 192 && aes.strength !== 256)
|
|
26
|
+
fail("ZIP unsupported AES strength");
|
|
27
|
+
return { keyBytes: aes.strength / 8, saltBytes: aes.strength / 16 };
|
|
28
|
+
}
|
|
29
|
+
function keys(password, salt, aes, signal) {
|
|
30
|
+
signal.throwIfAborted();
|
|
31
|
+
const { keyBytes } = aesParameters(aes);
|
|
32
|
+
// A fixed 1000-iteration native call introduces no asynchronous resource to
|
|
33
|
+
// outlive invocation cleanup. Cancellation is checked at native boundaries.
|
|
34
|
+
const derived = aesPrimitives().pbkdf2Sync(password, salt, 1000, keyBytes * 2 + 2, "sha1");
|
|
35
|
+
if (signal.aborted) {
|
|
36
|
+
derived.fill(0);
|
|
37
|
+
signal.throwIfAborted();
|
|
38
|
+
}
|
|
39
|
+
return derived;
|
|
40
|
+
}
|
|
41
|
+
async function transform(input, key, aes, signal) {
|
|
42
|
+
const cipher = aesPrimitives().createCipheriv(`aes-${aes.strength}-ecb`, key, null);
|
|
43
|
+
cipher.setAutoPadding(false);
|
|
44
|
+
const output = new Uint8Array(input.length);
|
|
45
|
+
try {
|
|
46
|
+
// The extension uses AES(counter), with a 128-bit little-endian counter
|
|
47
|
+
// starting at one. OpenSSL CTR's big-endian increment is incompatible.
|
|
48
|
+
for (let offset = 0; offset < input.length; offset += 65536) {
|
|
49
|
+
signal.throwIfAborted();
|
|
50
|
+
const length = Math.min(65536, input.length - offset);
|
|
51
|
+
const counters = new Uint8Array(Math.ceil(length / 16) * 16);
|
|
52
|
+
const view = new DataView(counters.buffer);
|
|
53
|
+
for (let block = 0; block < counters.length; block += 16)
|
|
54
|
+
view.setBigUint64(block, BigInt((offset + block) / 16 + 1), true);
|
|
55
|
+
const stream = cipher.update(counters);
|
|
56
|
+
for (let i = 0; i < length; i++)
|
|
57
|
+
output[offset + i] = input[offset + i] ^ stream[i];
|
|
58
|
+
stream.fill(0);
|
|
59
|
+
await yieldTurn(signal);
|
|
60
|
+
}
|
|
61
|
+
cipher.final();
|
|
62
|
+
return output;
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
output.fill(0);
|
|
66
|
+
throw error;
|
|
67
|
+
}
|
|
68
|
+
finally {
|
|
69
|
+
cipher.destroy();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
export async function encryptAesPayload(source, encryption, maxBytes, signal) {
|
|
73
|
+
signal.throwIfAborted();
|
|
74
|
+
const primitives = aesPrimitives();
|
|
75
|
+
const { keyBytes, saltBytes } = aesParameters(encryption.aes);
|
|
76
|
+
const aes = { ...encryption.aes };
|
|
77
|
+
const password = new Uint8Array(encryption.password);
|
|
78
|
+
let plaintext;
|
|
79
|
+
let derived;
|
|
80
|
+
try {
|
|
81
|
+
plaintext = await collectBytes(source, { maxBytes, signal });
|
|
82
|
+
let supplied;
|
|
83
|
+
try {
|
|
84
|
+
supplied = await encryption.entropy(saltBytes, signal);
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
signal.throwIfAborted();
|
|
88
|
+
fail("ZIP AES entropy capability failed");
|
|
89
|
+
}
|
|
90
|
+
signal.throwIfAborted();
|
|
91
|
+
if (!(supplied instanceof Uint8Array) || supplied.length !== saltBytes)
|
|
92
|
+
fail("ZIP invalid AES entropy bytes");
|
|
93
|
+
const salt = new Uint8Array(supplied);
|
|
94
|
+
derived = keys(password, salt, aes, signal);
|
|
95
|
+
const encrypted = await transform(plaintext, derived.subarray(0, keyBytes), aes, signal);
|
|
96
|
+
const tag = primitives.createHmac("sha1", derived.subarray(keyBytes, keyBytes * 2)).update(encrypted).digest();
|
|
97
|
+
const wire = new Uint8Array(saltBytes + 2 + encrypted.length + 10);
|
|
98
|
+
wire.set(salt);
|
|
99
|
+
wire.set(derived.subarray(keyBytes * 2), saltBytes);
|
|
100
|
+
wire.set(encrypted, saltBytes + 2);
|
|
101
|
+
wire.set(tag.subarray(0, 10), wire.length - 10);
|
|
102
|
+
encrypted.fill(0);
|
|
103
|
+
tag.fill(0);
|
|
104
|
+
return wire;
|
|
105
|
+
}
|
|
106
|
+
finally {
|
|
107
|
+
plaintext?.fill(0);
|
|
108
|
+
derived?.fill(0);
|
|
109
|
+
password.fill(0);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
export async function decryptAesPayload(wire, password, aes, maxBytes, signal) {
|
|
113
|
+
signal.throwIfAborted();
|
|
114
|
+
const primitives = aesPrimitives();
|
|
115
|
+
const { keyBytes, saltBytes } = aesParameters(aes);
|
|
116
|
+
aes = { ...aes };
|
|
117
|
+
if (!Number.isSafeInteger(maxBytes) || maxBytes < 0)
|
|
118
|
+
throw new RangeError("maxBytes must be a nonnegative safe integer");
|
|
119
|
+
if (wire.length < saltBytes + 12)
|
|
120
|
+
fail("ZIP truncated AES payload");
|
|
121
|
+
const size = wire.length - saltBytes - 12;
|
|
122
|
+
if (size > maxBytes)
|
|
123
|
+
fail("ZIP AES authenticated staging limit exceeded");
|
|
124
|
+
// Copy before asynchronous KDF work; callers cannot mutate authenticated bytes.
|
|
125
|
+
const owned = new Uint8Array(wire);
|
|
126
|
+
const secret = new Uint8Array(password);
|
|
127
|
+
let derived;
|
|
128
|
+
try {
|
|
129
|
+
derived = keys(secret, owned.subarray(0, saltBytes), aes, signal);
|
|
130
|
+
if (!primitives.timingSafeEqual(derived.subarray(keyBytes * 2), owned.subarray(saltBytes, saltBytes + 2)))
|
|
131
|
+
fail("ZIP incorrect password");
|
|
132
|
+
const encrypted = owned.subarray(saltBytes + 2, owned.length - 10);
|
|
133
|
+
const tag = primitives.createHmac("sha1", derived.subarray(keyBytes, keyBytes * 2)).update(encrypted).digest();
|
|
134
|
+
const authentic = primitives.timingSafeEqual(tag.subarray(0, 10), owned.subarray(owned.length - 10));
|
|
135
|
+
tag.fill(0);
|
|
136
|
+
if (!authentic)
|
|
137
|
+
fail("ZIP AES authentication failed");
|
|
138
|
+
return await transform(encrypted, derived.subarray(0, keyBytes), aes, signal);
|
|
139
|
+
}
|
|
140
|
+
finally {
|
|
141
|
+
derived?.fill(0);
|
|
142
|
+
secret.fill(0);
|
|
143
|
+
owned.fill(0);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
export function aesExtra(aes, method) {
|
|
147
|
+
aesParameters(aes);
|
|
148
|
+
const bytes = new Uint8Array(11);
|
|
149
|
+
const view = new DataView(bytes.buffer);
|
|
150
|
+
view.setUint16(0, 0x9901, true);
|
|
151
|
+
view.setUint16(2, 7, true);
|
|
152
|
+
view.setUint16(4, aes.version, true);
|
|
153
|
+
bytes.set([65, 69, aes.strength / 64 - 1], 6);
|
|
154
|
+
view.setUint16(9, method, true);
|
|
155
|
+
return bytes;
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=aes.js.map
|