Start introducing concept of internal hashes

This commit is contained in:
Matt Nadareski
2025-01-05 21:11:14 -05:00
parent 39f02b3ee1
commit fe78a5532f
6 changed files with 175 additions and 140 deletions

View File

@@ -5,6 +5,20 @@ namespace SabreTools.FileTypes.CHD
{
public class CHDFile : BaseFile
{
#region Fields
/// <summary>
/// Internal MD5 hash of the file
/// </summary>
public byte[]? InternalMD5 { get; set; }
/// <summary>
/// Internal SHA-1 hash of the file
/// </summary>
public byte[]? InternalSHA1 { get; set; }
#endregion
#region Private instance variables
/// <summary>
@@ -37,11 +51,38 @@ namespace SabreTools.FileTypes.CHD
var header = Serialization.Deserializers.CHD.DeserializeStream(stream);
return header switch
{
HeaderV1 v1 => new CHDFile { _header = header, MD5 = v1.MD5 },
HeaderV2 v2 => new CHDFile { _header = header, MD5 = v2.MD5 },
HeaderV3 v3 => new CHDFile { _header = header, MD5 = v3.MD5, SHA1 = v3.SHA1 },
HeaderV4 v4 => new CHDFile { _header = header, SHA1 = v4.SHA1 },
HeaderV5 v5 => new CHDFile { _header = header, SHA1 = v5.SHA1 },
HeaderV1 v1 => new CHDFile
{
_header = header,
MD5 = v1.MD5,
InternalMD5 = v1.MD5,
},
HeaderV2 v2 => new CHDFile
{
_header = header,
MD5 = v2.MD5,
InternalMD5 = v2.MD5,
},
HeaderV3 v3 => new CHDFile
{
_header = header,
MD5 = v3.MD5,
InternalMD5 = v3.MD5,
SHA1 = v3.SHA1,
InternalSHA1 = v3.SHA1,
},
HeaderV4 v4 => new CHDFile
{
_header = header,
SHA1 = v4.SHA1,
InternalSHA1 = v4.SHA1,
},
HeaderV5 v5 => new CHDFile
{
_header = header,
SHA1 = v5.SHA1,
InternalSHA1 = v5.SHA1,
},
_ => null,
};
}