@poe-platform/safe-bash 0.1.655 → 0.1.657

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/dist/safe-bash/chunks/{xz-U4QDTPZL.js → xz-4V5FXSPG.js} +555 -514
  2. package/dist/safe-bash/chunks/xz-4V5FXSPG.js.map +7 -0
  3. package/dist/safe-bash/commands/archive/index.d.ts +1 -1
  4. package/dist/safe-bash/commands/archive/index.d.ts.map +1 -1
  5. package/dist/safe-bash/commands/archive/internal.d.ts +32 -0
  6. package/dist/safe-bash/commands/archive/internal.d.ts.map +1 -1
  7. package/dist/safe-bash/commands/archive/internal.js.map +1 -1
  8. package/dist/safe-bash/commands/archive/unzip/arguments.d.ts +3 -0
  9. package/dist/safe-bash/commands/archive/unzip/arguments.d.ts.map +1 -1
  10. package/dist/safe-bash/commands/archive/unzip/arguments.js +31 -5
  11. package/dist/safe-bash/commands/archive/unzip/arguments.js.map +1 -1
  12. package/dist/safe-bash/commands/archive/unzip/safety.d.ts +4 -0
  13. package/dist/safe-bash/commands/archive/unzip/safety.d.ts.map +1 -1
  14. package/dist/safe-bash/commands/archive/unzip/safety.js +3 -0
  15. package/dist/safe-bash/commands/archive/unzip/safety.js.map +1 -1
  16. package/dist/safe-bash/commands/archive/unzip.d.ts.map +1 -1
  17. package/dist/safe-bash/commands/archive/unzip.js +159 -112
  18. package/dist/safe-bash/commands/archive/unzip.js.map +1 -1
  19. package/dist/safe-bash/commands/archive/zip/aes-primitives-unavailable.d.ts +2 -0
  20. package/dist/safe-bash/commands/archive/zip/aes-primitives-unavailable.d.ts.map +1 -0
  21. package/dist/safe-bash/commands/archive/zip/aes-primitives-unavailable.js +3 -0
  22. package/dist/safe-bash/commands/archive/zip/aes-primitives-unavailable.js.map +1 -0
  23. package/dist/safe-bash/commands/archive/zip/aes-primitives.d.ts +2 -0
  24. package/dist/safe-bash/commands/archive/zip/aes-primitives.d.ts.map +1 -0
  25. package/dist/safe-bash/commands/archive/zip/aes-primitives.js +3 -0
  26. package/dist/safe-bash/commands/archive/zip/aes-primitives.js.map +1 -0
  27. package/dist/safe-bash/commands/archive/zip/aes.d.ts +18 -0
  28. package/dist/safe-bash/commands/archive/zip/aes.d.ts.map +1 -0
  29. package/dist/safe-bash/commands/archive/zip/aes.js +157 -0
  30. package/dist/safe-bash/commands/archive/zip/aes.js.map +1 -0
  31. package/dist/safe-bash/commands/archive/zip/crypto.d.ts +16 -0
  32. package/dist/safe-bash/commands/archive/zip/crypto.d.ts.map +1 -1
  33. package/dist/safe-bash/commands/archive/zip/crypto.js +85 -0
  34. package/dist/safe-bash/commands/archive/zip/crypto.js.map +1 -1
  35. package/dist/safe-bash/commands/archive/zip/grow.d.ts +4 -0
  36. package/dist/safe-bash/commands/archive/zip/grow.d.ts.map +1 -0
  37. package/dist/safe-bash/commands/archive/zip/grow.js +3 -0
  38. package/dist/safe-bash/commands/archive/zip/grow.js.map +1 -0
  39. package/dist/safe-bash/commands/archive/zip/help.d.ts +4 -2
  40. package/dist/safe-bash/commands/archive/zip/help.d.ts.map +1 -1
  41. package/dist/safe-bash/commands/archive/zip/help.js +98 -3
  42. package/dist/safe-bash/commands/archive/zip/help.js.map +1 -1
  43. package/dist/safe-bash/commands/archive/zip/line-endings.d.ts +1 -0
  44. package/dist/safe-bash/commands/archive/zip/line-endings.d.ts.map +1 -1
  45. package/dist/safe-bash/commands/archive/zip/line-endings.js +158 -0
  46. package/dist/safe-bash/commands/archive/zip/line-endings.js.map +1 -1
  47. package/dist/safe-bash/commands/archive/zip/log.d.ts +23 -0
  48. package/dist/safe-bash/commands/archive/zip/log.d.ts.map +1 -0
  49. package/dist/safe-bash/commands/archive/zip/log.js +159 -0
  50. package/dist/safe-bash/commands/archive/zip/log.js.map +1 -0
  51. package/dist/safe-bash/commands/archive/zip/lzma.d.ts +10 -0
  52. package/dist/safe-bash/commands/archive/zip/lzma.d.ts.map +1 -0
  53. package/dist/safe-bash/commands/archive/zip/lzma.js +41 -0
  54. package/dist/safe-bash/commands/archive/zip/lzma.js.map +1 -0
  55. package/dist/safe-bash/commands/archive/zip/names.d.ts +3 -0
  56. package/dist/safe-bash/commands/archive/zip/names.d.ts.map +1 -0
  57. package/dist/safe-bash/commands/archive/zip/names.js +34 -0
  58. package/dist/safe-bash/commands/archive/zip/names.js.map +1 -0
  59. package/dist/safe-bash/commands/archive/zip/options.d.ts +7 -0
  60. package/dist/safe-bash/commands/archive/zip/options.d.ts.map +1 -1
  61. package/dist/safe-bash/commands/archive/zip/options.js +88 -17
  62. package/dist/safe-bash/commands/archive/zip/options.js.map +1 -1
  63. package/dist/safe-bash/commands/archive/zip/repair.d.ts +11 -0
  64. package/dist/safe-bash/commands/archive/zip/repair.d.ts.map +1 -0
  65. package/dist/safe-bash/commands/archive/zip/repair.js +392 -0
  66. package/dist/safe-bash/commands/archive/zip/repair.js.map +1 -0
  67. package/dist/safe-bash/commands/archive/zip/safety.d.ts +23 -4
  68. package/dist/safe-bash/commands/archive/zip/safety.d.ts.map +1 -1
  69. package/dist/safe-bash/commands/archive/zip/safety.js +73 -23
  70. package/dist/safe-bash/commands/archive/zip/safety.js.map +1 -1
  71. package/dist/safe-bash/commands/archive/zip/sfx.d.ts +5 -0
  72. package/dist/safe-bash/commands/archive/zip/sfx.d.ts.map +1 -0
  73. package/dist/safe-bash/commands/archive/zip/sfx.js +56 -0
  74. package/dist/safe-bash/commands/archive/zip/sfx.js.map +1 -0
  75. package/dist/safe-bash/commands/archive/zip/test-command.d.ts +6 -0
  76. package/dist/safe-bash/commands/archive/zip/test-command.d.ts.map +1 -0
  77. package/dist/safe-bash/commands/archive/zip/test-command.js +101 -0
  78. package/dist/safe-bash/commands/archive/zip/test-command.js.map +1 -0
  79. package/dist/safe-bash/commands/archive/zip/volumes.d.ts +22 -0
  80. package/dist/safe-bash/commands/archive/zip/volumes.d.ts.map +1 -0
  81. package/dist/safe-bash/commands/archive/zip/volumes.js +265 -0
  82. package/dist/safe-bash/commands/archive/zip/volumes.js.map +1 -0
  83. package/dist/safe-bash/commands/archive/zip/zip64.d.ts +20 -1
  84. package/dist/safe-bash/commands/archive/zip/zip64.d.ts.map +1 -1
  85. package/dist/safe-bash/commands/archive/zip/zip64.js +127 -17
  86. package/dist/safe-bash/commands/archive/zip/zip64.js.map +1 -1
  87. package/dist/safe-bash/commands/archive/zip-format.d.ts +30 -5
  88. package/dist/safe-bash/commands/archive/zip-format.d.ts.map +1 -1
  89. package/dist/safe-bash/commands/archive/zip-format.js +489 -91
  90. package/dist/safe-bash/commands/archive/zip-format.js.map +1 -1
  91. package/dist/safe-bash/commands/archive/zip.d.ts.map +1 -1
  92. package/dist/safe-bash/commands/archive/zip.js +729 -128
  93. package/dist/safe-bash/commands/archive/zip.js.map +1 -1
  94. package/dist/safe-bash/commands/bytes/compression/bounded-codec.d.ts +7 -0
  95. package/dist/safe-bash/commands/bytes/compression/bounded-codec.d.ts.map +1 -1
  96. package/dist/safe-bash/commands/bytes/compression/bounded-codec.js.map +1 -1
  97. package/dist/safe-bash/commands/bytes/compression/codec-loader.d.ts.map +1 -1
  98. package/dist/safe-bash/commands/bytes/compression/codec-loader.js +8 -1
  99. package/dist/safe-bash/commands/bytes/compression/codec-loader.js.map +1 -1
  100. package/dist/safe-bash/commands/bytes/compression/native/generated/xz.mjs +1 -1
  101. package/dist/safe-bash/commands/bytes/compression/native/sources.json +2 -2
  102. package/dist/safe-bash/commands/bytes/compression/native/types.d.ts +1 -0
  103. package/dist/safe-bash/commands/bytes/compression/native/types.d.ts.map +1 -1
  104. package/dist/safe-bash/commands/text.js +1 -1
  105. package/dist/safe-bash/commands/text.js.map +1 -1
  106. package/dist/safe-bash/core.browser.js +3106 -717
  107. package/dist/safe-bash/core.browser.js.map +4 -4
  108. package/package.json +11 -3
  109. 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 zip = await readZipArchive(bytes, limits, context.signal);
104
- if (!parsed.pipe)
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
- for await (const chunk of readBytes(decodeZipEntry(entry, limits, signal), signal)) {
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
- if (parsed.pipe) {
142
- for await (const chunk of payload(entry))
143
- await output.output.write(chunk);
144
- continue;
145
- }
146
- if (parsed.list) {
147
- await budget.output(`${String(entry.size).padStart(9)} ${date(entry)} ${filtered(entry.name)}\n`);
148
- if (entry.comment)
149
- await comment(entry.comment, budget);
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 (!identity || identity.type !== "directory")
177
- fail("directory changed during creation");
178
- directories.push({ path, entry, identity, parent });
179
- continue;
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 (++prompting > limits.maxMembers)
191
- fail("overwrite prompt work limit exceeded");
192
- await budget.output(`replace ${filtered(shown)}? [y]es, [n]o, [A]ll, [N]one, [r]ename: `, true);
193
- const answer = await answers.read();
194
- if (answer === undefined) {
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
- const choice = answer[0];
202
- if (choice === "A") {
203
- overwrite = "all";
204
- break;
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
- if (choice === "y" || choice === "Y")
207
- break;
208
- if (choice === "n" || choice === "N") {
209
- if (choice === "N")
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
- skip = true;
212
- break;
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
- path = extraction.member(root, renamed);
224
- shown = parsed.destination === undefined ? renamed : `${parsed.destination.endsWith("/") ? parsed.destination : `${parsed.destination}/`}${renamed}`;
225
- await extraction.parents(root, path, true);
226
- parent = await extraction.operation(() => context.fs.lstat(dirname(path), { signal: context.signal }));
227
- existing = await extraction.destination(path, archivePath, archiveStat);
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
- else {
252
- await extraction.publish(root, path, chunks, existing, parent, entry.mode, entry.modified);
253
- await budget.output(`${entry.method === 0 ? " extracting" : " inflating"}: ${padded(filtered(shown))} \n`);
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
- return { exitCode: selected ? exitCode : 11 };
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=aes-primitives-unavailable.d.ts.map
@@ -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,3 @@
1
+ // No portable vetted AES block primitive is currently approved in this package.
2
+ export {};
3
+ //# sourceMappingURL=aes-primitives-unavailable.js.map
@@ -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,2 @@
1
+ export { createCipheriv, createHmac, pbkdf2Sync, timingSafeEqual } from "node:crypto";
2
+ //# sourceMappingURL=aes-primitives.d.ts.map
@@ -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,3 @@
1
+ // Vetted Node primitives; portable hosts select the empty capability module.
2
+ export { createCipheriv, createHmac, pbkdf2Sync, timingSafeEqual } from "node:crypto";
3
+ //# sourceMappingURL=aes-primitives.js.map
@@ -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