Wire through MD2/MD4

This commit is contained in:
Matt Nadareski
2025-01-09 05:26:36 -05:00
parent 45a5611d20
commit 1dcd457fca
23 changed files with 836 additions and 20 deletions

View File

@@ -675,6 +675,8 @@ namespace SabreTools.DatItems.Test
datItem.SetFieldValue(DatItem.SourceKey, new Source(0));
datItem.SetFieldValue(DatItem.MachineKey, machine);
datItem.SetFieldValue(Models.Metadata.Rom.CRCKey, "DEADBEEF");
datItem.SetFieldValue(Models.Metadata.Rom.MD2Key, "DEADBEEF");
datItem.SetFieldValue(Models.Metadata.Rom.MD4Key, "DEADBEEF");
datItem.SetFieldValue(Models.Metadata.Rom.MD5Key, "DEADBEEF");
datItem.SetFieldValue(Models.Metadata.Rom.SHA1Key, "DEADBEEF");
datItem.SetFieldValue(Models.Metadata.Rom.SHA256Key, "DEADBEEF");
@@ -789,6 +791,8 @@ namespace SabreTools.DatItems.Test
DatItem datItem = new Rom();
datItem.SetFieldValue(DatItem.MachineKey, machine);
datItem.SetFieldValue(Models.Metadata.Rom.CRCKey, "DEADBEEF");
datItem.SetFieldValue(Models.Metadata.Rom.MD2Key, "DEADBEEF");
datItem.SetFieldValue(Models.Metadata.Rom.MD4Key, "DEADBEEF");
datItem.SetFieldValue(Models.Metadata.Rom.MD5Key, "DEADBEEF");
datItem.SetFieldValue(Models.Metadata.Rom.SHA1Key, "DEADBEEF");
datItem.SetFieldValue(Models.Metadata.Rom.SHA256Key, "DEADBEEF");

View File

@@ -198,6 +198,8 @@ namespace SabreTools.DatItems.Test
string filename = "XXXXXX";
string date = "XXXXXX";
string crc = TextHelper.NormalizeCRC32("1234abcd")!;
string md2 = TextHelper.NormalizeMD2("1234abcd")!;
string md4 = TextHelper.NormalizeMD4("1234abcd")!;
string md5 = TextHelper.NormalizeMD5("1234abcd")!;
string sha1 = TextHelper.NormalizeSHA1("1234abcd")!;
string sha256 = TextHelper.NormalizeSHA256("1234abcd")!;
@@ -210,6 +212,8 @@ namespace SabreTools.DatItems.Test
Filename = filename,
Date = date,
CRC = crc.FromHexString(),
MD2 = md2.FromHexString(),
MD4 = md4.FromHexString(),
MD5 = md5.FromHexString(),
SHA1 = sha1.FromHexString(),
SHA256 = sha256.FromHexString(),
@@ -224,6 +228,8 @@ namespace SabreTools.DatItems.Test
Assert.Equal(filename, actual.GetStringFieldValue(Models.Metadata.Rom.NameKey));
Assert.Equal(date, actual.GetStringFieldValue(Models.Metadata.Rom.DateKey));
Assert.Equal(crc, actual.GetStringFieldValue(Models.Metadata.Rom.CRCKey));
Assert.Equal(md2, actual.GetStringFieldValue(Models.Metadata.Rom.MD2Key));
Assert.Equal(md4, actual.GetStringFieldValue(Models.Metadata.Rom.MD4Key));
Assert.Equal(md5, actual.GetStringFieldValue(Models.Metadata.Rom.MD5Key));
Assert.Equal(sha1, actual.GetStringFieldValue(Models.Metadata.Rom.SHA1Key));
Assert.Equal(sha256, actual.GetStringFieldValue(Models.Metadata.Rom.SHA256Key));
@@ -324,6 +330,8 @@ namespace SabreTools.DatItems.Test
string filename = "XXXXXX";
string date = "XXXXXX";
string crc = TextHelper.NormalizeCRC32("1234abcd")!;
string md2 = TextHelper.NormalizeMD2("1234abcd")!;
string md4 = TextHelper.NormalizeMD4("1234abcd")!;
string md5 = TextHelper.NormalizeMD5("1234abcd")!;
string sha1 = TextHelper.NormalizeSHA1("1234abcd")!;
string sha256 = TextHelper.NormalizeSHA256("1234abcd")!;
@@ -336,6 +344,8 @@ namespace SabreTools.DatItems.Test
rom.SetFieldValue<string?>(Models.Metadata.Rom.NameKey, filename);
rom.SetFieldValue<string?>(Models.Metadata.Rom.DateKey, date);
rom.SetFieldValue<string?>(Models.Metadata.Rom.CRCKey, crc);
rom.SetFieldValue<string?>(Models.Metadata.Rom.MD2Key, md2);
rom.SetFieldValue<string?>(Models.Metadata.Rom.MD4Key, md4);
rom.SetFieldValue<string?>(Models.Metadata.Rom.MD5Key, md5);
rom.SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key, sha1);
rom.SetFieldValue<string?>(Models.Metadata.Rom.SHA256Key, sha256);
@@ -349,6 +359,8 @@ namespace SabreTools.DatItems.Test
Assert.Equal(filename, actual.Filename);
Assert.Equal(date, actual.Date);
Assert.Equal(crc, actual.CRC.ToHexString());
Assert.Equal(md2, actual.MD2.ToHexString());
Assert.Equal(md4, actual.MD4.ToHexString());
Assert.Equal(md5, actual.MD5.ToHexString());
Assert.Equal(sha1, actual.SHA1.ToHexString());
Assert.Equal(sha256, actual.SHA256.ToHexString());

View File

@@ -17,6 +17,8 @@ namespace SabreTools.DatItems.Test.Formats
self.FillMissingInformation(other);
Assert.Null(self.GetStringFieldValue(Models.Metadata.Rom.CRCKey));
Assert.Null(self.GetStringFieldValue(Models.Metadata.Rom.MD2Key));
Assert.Null(self.GetStringFieldValue(Models.Metadata.Rom.MD4Key));
Assert.Null(self.GetStringFieldValue(Models.Metadata.Rom.MD5Key));
Assert.Null(self.GetStringFieldValue(Models.Metadata.Rom.SHA1Key));
Assert.Null(self.GetStringFieldValue(Models.Metadata.Rom.SHA256Key));
@@ -32,6 +34,8 @@ namespace SabreTools.DatItems.Test.Formats
Rom other = new Rom();
other.SetFieldValue(Models.Metadata.Rom.CRCKey, "XXXXXX");
other.SetFieldValue(Models.Metadata.Rom.MD2Key, "XXXXXX");
other.SetFieldValue(Models.Metadata.Rom.MD4Key, "XXXXXX");
other.SetFieldValue(Models.Metadata.Rom.MD5Key, "XXXXXX");
other.SetFieldValue(Models.Metadata.Rom.SHA1Key, "XXXXXX");
other.SetFieldValue(Models.Metadata.Rom.SHA256Key, "XXXXXX");
@@ -42,6 +46,8 @@ namespace SabreTools.DatItems.Test.Formats
self.FillMissingInformation(other);
Assert.Equal("XXXXXX", self.GetStringFieldValue(Models.Metadata.Rom.CRCKey));
Assert.Equal("XXXXXX", self.GetStringFieldValue(Models.Metadata.Rom.MD2Key));
Assert.Equal("XXXXXX", self.GetStringFieldValue(Models.Metadata.Rom.MD4Key));
Assert.Equal("XXXXXX", self.GetStringFieldValue(Models.Metadata.Rom.MD5Key));
Assert.Equal("XXXXXX", self.GetStringFieldValue(Models.Metadata.Rom.SHA1Key));
Assert.Equal("XXXXXX", self.GetStringFieldValue(Models.Metadata.Rom.SHA256Key));
@@ -73,6 +79,28 @@ namespace SabreTools.DatItems.Test.Formats
Assert.Equal($"_{hash}", actual);
}
[Fact]
public void GetDuplicateSuffix_MD2()
{
string hash = "XXXXXX";
Rom self = new Rom();
self.SetFieldValue(Models.Metadata.Rom.MD2Key, hash);
string actual = self.GetDuplicateSuffix();
Assert.Equal($"_{hash}", actual);
}
[Fact]
public void GetDuplicateSuffix_MD4()
{
string hash = "XXXXXX";
Rom self = new Rom();
self.SetFieldValue(Models.Metadata.Rom.MD4Key, hash);
string actual = self.GetDuplicateSuffix();
Assert.Equal($"_{hash}", actual);
}
[Fact]
public void GetDuplicateSuffix_MD5()
{
@@ -156,6 +184,44 @@ namespace SabreTools.DatItems.Test.Formats
{
Rom self = new Rom();
self.SetFieldValue(Models.Metadata.Rom.CRCKey, "XXXXXX");
self.SetFieldValue(Models.Metadata.Rom.MD2Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD4Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD5Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA1Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA256Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA384Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA512Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SpamSumKey, string.Empty);
bool actual = self.HasHashes();
Assert.True(actual);
}
[Fact]
public void HasHashes_MD2_True()
{
Rom self = new Rom();
self.SetFieldValue(Models.Metadata.Rom.CRCKey, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD2Key, "XXXXXX");
self.SetFieldValue(Models.Metadata.Rom.MD4Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD5Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA1Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA256Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA384Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA512Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SpamSumKey, string.Empty);
bool actual = self.HasHashes();
Assert.True(actual);
}
[Fact]
public void HasHashes_MD4_True()
{
Rom self = new Rom();
self.SetFieldValue(Models.Metadata.Rom.CRCKey, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD2Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD4Key, "XXXXXX");
self.SetFieldValue(Models.Metadata.Rom.MD5Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA1Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA256Key, string.Empty);
@@ -172,6 +238,8 @@ namespace SabreTools.DatItems.Test.Formats
{
Rom self = new Rom();
self.SetFieldValue(Models.Metadata.Rom.CRCKey, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD2Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD4Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD5Key, "XXXXXX");
self.SetFieldValue(Models.Metadata.Rom.SHA1Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA256Key, string.Empty);
@@ -188,6 +256,8 @@ namespace SabreTools.DatItems.Test.Formats
{
Rom self = new Rom();
self.SetFieldValue(Models.Metadata.Rom.CRCKey, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD2Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD4Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD5Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA1Key, "XXXXXX");
self.SetFieldValue(Models.Metadata.Rom.SHA256Key, string.Empty);
@@ -204,6 +274,8 @@ namespace SabreTools.DatItems.Test.Formats
{
Rom self = new Rom();
self.SetFieldValue(Models.Metadata.Rom.CRCKey, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD2Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD4Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD5Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA1Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA256Key, "XXXXXX");
@@ -220,6 +292,8 @@ namespace SabreTools.DatItems.Test.Formats
{
Rom self = new Rom();
self.SetFieldValue(Models.Metadata.Rom.CRCKey, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD2Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD4Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD5Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA1Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA256Key, string.Empty);
@@ -236,6 +310,8 @@ namespace SabreTools.DatItems.Test.Formats
{
Rom self = new Rom();
self.SetFieldValue(Models.Metadata.Rom.CRCKey, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD2Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD4Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD5Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA1Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA256Key, string.Empty);
@@ -252,6 +328,8 @@ namespace SabreTools.DatItems.Test.Formats
{
Rom self = new Rom();
self.SetFieldValue(Models.Metadata.Rom.CRCKey, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD2Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD4Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD5Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA1Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA256Key, string.Empty);
@@ -268,6 +346,8 @@ namespace SabreTools.DatItems.Test.Formats
{
Rom self = new Rom();
self.SetFieldValue(Models.Metadata.Rom.CRCKey, "XXXXXX");
self.SetFieldValue(Models.Metadata.Rom.MD2Key, "XXXXXX");
self.SetFieldValue(Models.Metadata.Rom.MD4Key, "XXXXXX");
self.SetFieldValue(Models.Metadata.Rom.MD5Key, "XXXXXX");
self.SetFieldValue(Models.Metadata.Rom.SHA1Key, "XXXXXX");
self.SetFieldValue(Models.Metadata.Rom.SHA256Key, "XXXXXX");
@@ -323,11 +403,49 @@ namespace SabreTools.DatItems.Test.Formats
Assert.True(actual);
}
[Fact]
public void HasZeroHash_ZeroMD2_True()
{
Rom self = new Rom();
self.SetFieldValue(Models.Metadata.Rom.CRCKey, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD2Key, ZeroHash.GetString(HashType.MD2));
self.SetFieldValue(Models.Metadata.Rom.MD4Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD5Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA1Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA256Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA384Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA512Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SpamSumKey, string.Empty);
bool actual = self.HasZeroHash();
Assert.True(actual);
}
[Fact]
public void HasZeroHash_ZeroMD4_True()
{
Rom self = new Rom();
self.SetFieldValue(Models.Metadata.Rom.CRCKey, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD2Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD4Key, ZeroHash.GetString(HashType.MD4));
self.SetFieldValue(Models.Metadata.Rom.MD5Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA1Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA256Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA384Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA512Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SpamSumKey, string.Empty);
bool actual = self.HasZeroHash();
Assert.True(actual);
}
[Fact]
public void HasZeroHash_ZeroMD5_True()
{
Rom self = new Rom();
self.SetFieldValue(Models.Metadata.Rom.CRCKey, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD2Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD4Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD5Key, ZeroHash.MD5Str);
self.SetFieldValue(Models.Metadata.Rom.SHA1Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA256Key, string.Empty);
@@ -344,6 +462,8 @@ namespace SabreTools.DatItems.Test.Formats
{
Rom self = new Rom();
self.SetFieldValue(Models.Metadata.Rom.CRCKey, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD2Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD4Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD5Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA1Key, ZeroHash.SHA1Str);
self.SetFieldValue(Models.Metadata.Rom.SHA256Key, string.Empty);
@@ -360,6 +480,8 @@ namespace SabreTools.DatItems.Test.Formats
{
Rom self = new Rom();
self.SetFieldValue(Models.Metadata.Rom.CRCKey, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD2Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD4Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD5Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA1Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA256Key, ZeroHash.SHA256Str);
@@ -376,6 +498,8 @@ namespace SabreTools.DatItems.Test.Formats
{
Rom self = new Rom();
self.SetFieldValue(Models.Metadata.Rom.CRCKey, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD2Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD4Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD5Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA1Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA256Key, string.Empty);
@@ -392,6 +516,8 @@ namespace SabreTools.DatItems.Test.Formats
{
Rom self = new Rom();
self.SetFieldValue(Models.Metadata.Rom.CRCKey, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD2Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD4Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD5Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA1Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA256Key, string.Empty);
@@ -408,6 +534,8 @@ namespace SabreTools.DatItems.Test.Formats
{
Rom self = new Rom();
self.SetFieldValue(Models.Metadata.Rom.CRCKey, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD2Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD4Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.MD5Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA1Key, string.Empty);
self.SetFieldValue(Models.Metadata.Rom.SHA256Key, string.Empty);
@@ -424,6 +552,8 @@ namespace SabreTools.DatItems.Test.Formats
{
Rom self = new Rom();
self.SetFieldValue(Models.Metadata.Rom.CRCKey, ZeroHash.CRC32Str);
self.SetFieldValue(Models.Metadata.Rom.MD2Key, ZeroHash.GetString(HashType.MD2));
self.SetFieldValue(Models.Metadata.Rom.MD4Key, ZeroHash.GetString(HashType.MD4));
self.SetFieldValue(Models.Metadata.Rom.MD5Key, ZeroHash.MD5Str);
self.SetFieldValue(Models.Metadata.Rom.SHA1Key, ZeroHash.SHA1Str);
self.SetFieldValue(Models.Metadata.Rom.SHA256Key, ZeroHash.SHA256Str);
@@ -483,6 +613,8 @@ namespace SabreTools.DatItems.Test.Formats
DatItem datItem = new Rom();
datItem.SetFieldValue(Models.Metadata.Rom.CRCKey, "DEADBEEF");
datItem.SetFieldValue(Models.Metadata.Rom.MD2Key, "DEADBEEF");
datItem.SetFieldValue(Models.Metadata.Rom.MD4Key, "DEADBEEF");
datItem.SetFieldValue(Models.Metadata.Rom.MD5Key, "DEADBEEF");
datItem.SetFieldValue(Models.Metadata.Rom.SHA1Key, "DEADBEEF");
datItem.SetFieldValue(Models.Metadata.Rom.SHA256Key, "DEADBEEF");
@@ -547,6 +679,8 @@ namespace SabreTools.DatItems.Test.Formats
DatItem datItem = new Rom();
datItem.SetFieldValue(Models.Metadata.Rom.CRCKey, "DEADBEEF");
datItem.SetFieldValue(Models.Metadata.Rom.MD2Key, "DEADBEEF");
datItem.SetFieldValue(Models.Metadata.Rom.MD4Key, "DEADBEEF");
datItem.SetFieldValue(Models.Metadata.Rom.MD5Key, "DEADBEEF");
datItem.SetFieldValue(Models.Metadata.Rom.SHA1Key, "DEADBEEF");
datItem.SetFieldValue(Models.Metadata.Rom.SHA256Key, "DEADBEEF");