diff --git a/src/SharpCompress/Archives/SevenZip/SevenZipArchive.cs b/src/SharpCompress/Archives/SevenZip/SevenZipArchive.cs index b3120b1b..3f419541 100644 --- a/src/SharpCompress/Archives/SevenZip/SevenZipArchive.cs +++ b/src/SharpCompress/Archives/SevenZip/SevenZipArchive.cs @@ -130,12 +130,12 @@ public class SevenZipArchive : AbstractArchive volumes ) { + var stream = volumes.Single().Stream; + LoadFactory(stream); if (database is null) { return Enumerable.Empty(); } - var stream = volumes.Single().Stream; - LoadFactory(stream); var entries = new SevenZipArchiveEntry[database._files.Count]; for (var i = 0; i < database._files.Count; i++) { @@ -260,6 +260,6 @@ public class SevenZipArchive : AbstractArchive _password = password; - public string CryptoGetTextPassword() => _password.NotNull(); + public string? CryptoGetTextPassword() => _password; } } diff --git a/src/SharpCompress/Compressors/LZMA/AesDecoderStream.cs b/src/SharpCompress/Compressors/LZMA/AesDecoderStream.cs index 8e884c97..ecec4f29 100644 --- a/src/SharpCompress/Compressors/LZMA/AesDecoderStream.cs +++ b/src/SharpCompress/Compressors/LZMA/AesDecoderStream.cs @@ -20,7 +20,8 @@ internal sealed class AesDecoderStream : DecoderStream2 public AesDecoderStream(Stream input, byte[] info, IPasswordProvider pass, long limit) { - if (pass.CryptoGetTextPassword() == null) + var password = pass.CryptoGetTextPassword(); + if (password == null) { throw new SharpCompress.Common.CryptographicException( "Encrypted 7Zip archive has no password specified." @@ -37,8 +38,8 @@ internal sealed class AesDecoderStream : DecoderStream2 Init(info, out var numCyclesPower, out var salt, out var seed); - var password = Encoding.Unicode.GetBytes(pass.CryptoGetTextPassword()); - var key = InitKey(numCyclesPower, salt, password); + var passwordBytes = Encoding.Unicode.GetBytes(password); + var key = InitKey(numCyclesPower, salt, passwordBytes); if (key == null) { throw new InvalidOperationException("Initialized with null key"); diff --git a/src/SharpCompress/Compressors/LZMA/Utilites/IPasswordProvider.cs b/src/SharpCompress/Compressors/LZMA/Utilites/IPasswordProvider.cs index 2f0eb904..d7d787d2 100644 --- a/src/SharpCompress/Compressors/LZMA/Utilites/IPasswordProvider.cs +++ b/src/SharpCompress/Compressors/LZMA/Utilites/IPasswordProvider.cs @@ -2,5 +2,5 @@ namespace SharpCompress.Compressors.LZMA.Utilites; internal interface IPasswordProvider { - string CryptoGetTextPassword(); + string? CryptoGetTextPassword(); }