Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
527c698
working zipcrypto, hardcoded password
alinpahontu2912 Oct 20, 2025
255642b
add tests with multiple entries with same password and entries with p…
alinpahontu2912 Oct 21, 2025
968bb60
reading/extracting experimentation and tests
alinpahontu2912 Oct 21, 2025
19cbc8e
add enum for encryption and write methods for zipcrypto stream
alinpahontu2912 Oct 22, 2025
0dec737
allow encryption of entries
alinpahontu2912 Oct 27, 2025
f30fbfb
add more read/write tests for update mode and small refactors
alinpahontu2912 Oct 29, 2025
aac140b
add default password and encryption method to ziparchive
alinpahontu2912 Oct 29, 2025
eb1a460
avoid ambigous calls
alinpahontu2912 Oct 29, 2025
0a7c885
avoid ambigous calls and fi some nitpicks
alinpahontu2912 Oct 29, 2025
817165c
recognize aes encrypted files + build fais due to circular dependency…
alinpahontu2912 Nov 5, 2025
797921d
fixed some comments
alinpahontu2912 Nov 11, 2025
623f238
remove storing password fields
alinpahontu2912 Nov 13, 2025
b61b37c
initial reading of winzip encrypted files
alinpahontu2912 Nov 20, 2025
122f85a
address zipcrypto comments
alinpahontu2912 Nov 20, 2025
55c0613
initial writing test works
alinpahontu2912 Nov 24, 2025
cc6d30d
add more tests for winzipaesstream and work on async methods
alinpahontu2912 Nov 26, 2025
b056780
Merge remote-tracking branch 'upstream/main' into zip_password
alinpahontu2912 Nov 26, 2025
6732696
async methods done, fix ae-1 validation and add more tests
alinpahontu2912 Nov 27, 2025
8efa772
Solve some comments
alinpahontu2912 Dec 1, 2025
d5bb294
refactor tests and ci disable local ones
alinpahontu2912 Dec 1, 2025
0c659fc
improve winzipaesstream writing by generating larger keystream
alinpahontu2912 Dec 1, 2025
e2b21ff
update tests, fixed async opening and updated stream positioning
alinpahontu2912 Dec 2, 2025
dbcee70
Merge branch 'main' into zip_password
alinpahontu2912 Dec 11, 2025
ff9160b
Merge branch 'main' into zip_password
alinpahontu2912 Dec 11, 2025
3a0e963
fix comments, proper conflict resolution and break circular dependency
alinpahontu2912 Dec 12, 2025
703a6ec
replace error strings
alinpahontu2912 Dec 15, 2025
b4deb71
nitpicks and update hashing
alinpahontu2912 Dec 22, 2025
5410a04
save key derivation material and replace old ctors + update tests not…
alinpahontu2912 Jan 6, 2026
97a4a2b
working update mode for winzip & zipcrypto
alinpahontu2912 Jan 13, 2026
6f34476
add more tests related to update mode
alinpahontu2912 Jan 13, 2026
138dcbe
Merge branch 'main' into zip_password
alinpahontu2912 Jan 14, 2026
3019322
correctly resolve conflicts
alinpahontu2912 Jan 14, 2026
af36c2a
initial parsing of aes extra metadata
alinpahontu2912 Jan 15, 2026
38dc088
address comments
alinpahontu2912 Jan 16, 2026
16d8a27
fix refs and remove crc validation
alinpahontu2912 Jan 19, 2026
3e5dd79
update open overloads and extracttofile/directory calls
alinpahontu2912 Jan 21, 2026
ba2f614
replace encryptions tream ctors with factory for comepletely sync/asy…
alinpahontu2912 Jan 21, 2026
aded452
add open file access overloads and tests
alinpahontu2912 Jan 22, 2026
315c24c
small refactoring and nitpicks
alinpahontu2912 Jan 22, 2026
43cad10
add stream conformance tests for zipcrypto and winzipaes streams
alinpahontu2912 Jan 26, 2026
8cad7fd
add stream conformance tests
alinpahontu2912 Jan 26, 2026
49c4a51
nitpicks: fix extra spaces
alinpahontu2912 Jan 26, 2026
c612d50
fix reflection failures and disable winzip wrapped conformance tests
alinpahontu2912 Jan 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,10 @@ internal sealed class SafeX509Handle : SafeHandle
private static readonly bool s_captureTrace =
Environment.GetEnvironmentVariable("DEBUG_SAFEX509HANDLE_FINALIZATION") != null;

private readonly StackTrace? _stacktrace =
s_captureTrace ? new StackTrace(fNeedFileInfo: true) : null;
// Using reflection to avoid a hard dependency on System.Diagnostics.StackTrace, which prevents
// System.IO.Compression from referencing this assembly.
private readonly object? _stacktrace =
s_captureTrace ? Activator.CreateInstance(Type.GetType("System.Diagnostics.StackTrace")!, true) : null;

~SafeX509Handle()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,20 @@ public static void CreateFromDirectory(string sourceDirectoryName, string destin
public static System.Threading.Tasks.Task CreateFromDirectoryAsync(string sourceDirectoryName, string destinationArchiveFileName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public static void ExtractToDirectory(System.IO.Stream source, string destinationDirectoryName) { }
public static void ExtractToDirectory(System.IO.Stream source, string destinationDirectoryName, bool overwriteFiles) { }
public static void ExtractToDirectory(System.IO.Stream source, string destinationDirectoryName, bool overwriteFiles, string password) { }
public static void ExtractToDirectory(System.IO.Stream source, string destinationDirectoryName, string password) { }
public static void ExtractToDirectory(System.IO.Stream source, string destinationDirectoryName, System.Text.Encoding? entryNameEncoding) { }
public static void ExtractToDirectory(System.IO.Stream source, string destinationDirectoryName, System.Text.Encoding? entryNameEncoding, bool overwriteFiles) { }
public static void ExtractToDirectory(System.IO.Stream source, string destinationDirectoryName, System.Text.Encoding? entryNameEncoding, bool overwriteFiles, string password) { }
public static void ExtractToDirectory(System.IO.Stream source, string destinationDirectoryName, System.Text.Encoding? entryNameEncoding, string password) { }
public static void ExtractToDirectory(string sourceArchiveFileName, string destinationDirectoryName) { }
public static void ExtractToDirectory(string sourceArchiveFileName, string destinationDirectoryName, bool overwriteFiles) { }
public static void ExtractToDirectory(string sourceArchiveFileName, string destinationDirectoryName, bool overwriteFiles, string password) { }
public static void ExtractToDirectory(string sourceArchiveFileName, string destinationDirectoryName, string password) { }
public static void ExtractToDirectory(string sourceArchiveFileName, string destinationDirectoryName, System.Text.Encoding? entryNameEncoding) { }
public static void ExtractToDirectory(string sourceArchiveFileName, string destinationDirectoryName, System.Text.Encoding? entryNameEncoding, bool overwriteFiles) { }
public static void ExtractToDirectory(string sourceArchiveFileName, string destinationDirectoryName, System.Text.Encoding? entryNameEncoding, bool overwriteFiles, string password) { }
public static void ExtractToDirectory(string sourceArchiveFileName, string destinationDirectoryName, System.Text.Encoding? entryNameEncoding, string password) { }
public static System.Threading.Tasks.Task ExtractToDirectoryAsync(System.IO.Stream source, string destinationDirectoryName, bool overwriteFiles, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public static System.Threading.Tasks.Task ExtractToDirectoryAsync(System.IO.Stream source, string destinationDirectoryName, System.Text.Encoding? entryNameEncoding, bool overwriteFiles, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public static System.Threading.Tasks.Task ExtractToDirectoryAsync(System.IO.Stream source, string destinationDirectoryName, System.Text.Encoding? entryNameEncoding, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
Expand All @@ -48,15 +56,23 @@ public static partial class ZipFileExtensions
{
public static System.IO.Compression.ZipArchiveEntry CreateEntryFromFile(this System.IO.Compression.ZipArchive destination, string sourceFileName, string entryName) { throw null; }
public static System.IO.Compression.ZipArchiveEntry CreateEntryFromFile(this System.IO.Compression.ZipArchive destination, string sourceFileName, string entryName, System.IO.Compression.CompressionLevel compressionLevel) { throw null; }
public static System.IO.Compression.ZipArchiveEntry CreateEntryFromFile(this System.IO.Compression.ZipArchive destination, string sourceFileName, string entryName, System.IO.Compression.CompressionLevel compressionLevel, string password, System.IO.Compression.ZipArchiveEntry.EncryptionMethod encryption) { throw null; }
public static System.Threading.Tasks.Task<System.IO.Compression.ZipArchiveEntry> CreateEntryFromFileAsync(this System.IO.Compression.ZipArchive destination, string sourceFileName, string entryName, System.IO.Compression.CompressionLevel compressionLevel, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public static System.Threading.Tasks.Task<System.IO.Compression.ZipArchiveEntry> CreateEntryFromFileAsync(this System.IO.Compression.ZipArchive destination, string sourceFileName, string entryName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public static void ExtractToDirectory(this System.IO.Compression.ZipArchive source, string destinationDirectoryName) { }
public static void ExtractToDirectory(this System.IO.Compression.ZipArchive source, string destinationDirectoryName, bool overwriteFiles) { }
public static void ExtractToDirectory(this System.IO.Compression.ZipArchive source, string destinationDirectoryName, bool overwriteFiles, string password) { }
public static System.Threading.Tasks.Task ExtractToDirectoryAsync(this System.IO.Compression.ZipArchive source, string destinationDirectoryName, bool overwriteFiles, string password, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public static System.Threading.Tasks.Task ExtractToDirectoryAsync(this System.IO.Compression.ZipArchive source, string destinationDirectoryName, bool overwriteFiles, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public static System.Threading.Tasks.Task ExtractToDirectoryAsync(this System.IO.Compression.ZipArchive source, string destinationDirectoryName, string password, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public static System.Threading.Tasks.Task ExtractToDirectoryAsync(this System.IO.Compression.ZipArchive source, string destinationDirectoryName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public static void ExtractToFile(this System.IO.Compression.ZipArchiveEntry source, string destinationFileName) { }
public static void ExtractToFile(this System.IO.Compression.ZipArchiveEntry source, string destinationFileName, bool overwrite) { }
public static void ExtractToFile(this System.IO.Compression.ZipArchiveEntry source, string destinationFileName, bool overwrite, string password) { }
public static void ExtractToFile(this System.IO.Compression.ZipArchiveEntry source, string destinationFileName, string password) { }
public static System.Threading.Tasks.Task ExtractToFileAsync(this System.IO.Compression.ZipArchiveEntry source, string destinationFileName, bool overwrite, string password, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public static System.Threading.Tasks.Task ExtractToFileAsync(this System.IO.Compression.ZipArchiveEntry source, string destinationFileName, bool overwrite, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public static System.Threading.Tasks.Task ExtractToFileAsync(this System.IO.Compression.ZipArchiveEntry source, string destinationFileName, string password, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public static System.Threading.Tasks.Task ExtractToFileAsync(this System.IO.Compression.ZipArchiveEntry source, string destinationFileName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,14 @@
<Compile Include="System\IO\Compression\ZipFileExtensions.ZipArchive.Extract.Async.cs" />
<Compile Include="System\IO\Compression\ZipFileExtensions.ZipArchiveEntry.Extract.cs" />
<Compile Include="System\IO\Compression\ZipFileExtensions.ZipArchiveEntry.Extract.Async.cs" />
<Compile Include="$(CommonPath)DisableRuntimeMarshalling.cs"
Link="Common\DisableRuntimeMarshalling.cs" />
<Compile Include="$(CommonPath)System\IO\Archiving.Utils.cs"
Link="Common\System\IO\Archiving.Utils.cs" />
<Compile Include="$(CommonPath)System\IO\PathInternal.CaseSensitivity.cs"
Link="Common\System\IO\PathInternal.CaseSensitivity.cs" />
<Compile Include="$(CommonPath)DisableRuntimeMarshalling.cs" Link="Common\DisableRuntimeMarshalling.cs" />
<Compile Include="$(CommonPath)System\IO\Archiving.Utils.cs" Link="Common\System\IO\Archiving.Utils.cs" />
<Compile Include="$(CommonPath)System\IO\PathInternal.CaseSensitivity.cs" Link="Common\System\IO\PathInternal.CaseSensitivity.cs" />
</ItemGroup>

<!-- Windows specific files -->
<ItemGroup Condition="'$(TargetPlatformIdentifier)' == 'windows'">
<Compile Include="$(CommonPath)System\IO\Archiving.Utils.Windows.cs"
Link="Common\System\IO\Archiving.Utils.Windows.cs" />
<Compile Include="$(CommonPath)System\IO\Archiving.Utils.Windows.cs" Link="Common\System\IO\Archiving.Utils.Windows.cs" />
<Compile Include="System\IO\Compression\ZipFile.Create.Windows.cs" />
</ItemGroup>

Expand All @@ -37,16 +33,11 @@
<Compile Include="System\IO\Compression\ZipFile.Create.Unix.cs" />
<Compile Include="System\IO\Compression\ZipFileExtensions.ZipArchive.Create.Unix.cs" />
<Compile Include="$(CommonPath)System\IO\Compression\ZipArchiveEntryConstants.Unix.cs" />
<Compile Include="$(CommonPath)Interop\Unix\Interop.IOErrors.cs"
Link="Common\Interop\Unix\Interop.IOErrors.cs" />
<Compile Include="$(CommonPath)Interop\Unix\Interop.Libraries.cs"
Link="Common\Interop\Unix\Interop.Libraries.cs" />
<Compile Include="$(CommonPath)Interop\Unix\Interop.Errors.cs"
Link="Common\Interop\Unix\System.Native\Interop.Errors.cs" />
<Compile Include="$(CommonPath)Interop\Unix\System.Native\Interop.Stat.cs"
Link="Common\Interop\Unix\System.Native\Interop.Stat.cs" />
<Compile Include="$(CommonPath)System\IO\Archiving.Utils.Unix.cs"
Link="Common\System\IO\Archiving.Utils.Unix.cs" />
<Compile Include="$(CommonPath)Interop\Unix\Interop.IOErrors.cs" Link="Common\Interop\Unix\Interop.IOErrors.cs" />
<Compile Include="$(CommonPath)Interop\Unix\Interop.Libraries.cs" Link="Common\Interop\Unix\Interop.Libraries.cs" />
<Compile Include="$(CommonPath)Interop\Unix\Interop.Errors.cs" Link="Common\Interop\Unix\System.Native\Interop.Errors.cs" />
<Compile Include="$(CommonPath)Interop\Unix\System.Native\Interop.Stat.cs" Link="Common\Interop\Unix\System.Native\Interop.Stat.cs" />
<Compile Include="$(CommonPath)System\IO\Archiving.Utils.Unix.cs" Link="Common\System\IO\Archiving.Utils.Unix.cs" />
</ItemGroup>

<ItemGroup>
Expand Down
Loading
Loading