From b3d9bd3d6b259a301140f89ec9cb0ac32c7a4f4a Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Fri, 19 Sep 2025 08:29:49 -0400 Subject: [PATCH] Add some more hashes for fun --- SabreTools.Models/ClrMamePro/Rom.cs | 12 ++++++++++++ SabreTools.Models/Hashfile/Hashfile.cs | 4 ++++ SabreTools.Models/Hashfile/RIPEMD128.cs | 14 ++++++++++++++ SabreTools.Models/Hashfile/RIPEMD160.cs | 14 ++++++++++++++ SabreTools.Models/Logiqx/Rom.cs | 16 ++++++++++++++++ SabreTools.Models/Metadata/Rom.cs | 6 ++++++ 6 files changed, 66 insertions(+) create mode 100644 SabreTools.Models/Hashfile/RIPEMD128.cs create mode 100644 SabreTools.Models/Hashfile/RIPEMD160.cs diff --git a/SabreTools.Models/ClrMamePro/Rom.cs b/SabreTools.Models/ClrMamePro/Rom.cs index 9251951..e6def48 100644 --- a/SabreTools.Models/ClrMamePro/Rom.cs +++ b/SabreTools.Models/ClrMamePro/Rom.cs @@ -34,6 +34,18 @@ namespace SabreTools.Models.ClrMamePro #region Hash Extensions + /// md2; Appears after CRC + public string? MD2 { get; set; } + + /// md4; Appears after MD2 + public string? MD4 { get; set; } + + /// ripemd128; Appears after MD5 + public string? RIPEMD128 { get; set; } + + /// ripemd160; Appears after RIPEMD128 + public string? RIPEMD160 { get; set; } + /// sha256; Also in No-Intro spec; Appears after SHA1 public string? SHA256 { get; set; } diff --git a/SabreTools.Models/Hashfile/Hashfile.cs b/SabreTools.Models/Hashfile/Hashfile.cs index e1d1ae8..d3c99e1 100644 --- a/SabreTools.Models/Hashfile/Hashfile.cs +++ b/SabreTools.Models/Hashfile/Hashfile.cs @@ -11,6 +11,10 @@ namespace SabreTools.Models.Hashfile public MD5[]? MD5 { get; set; } + public RIPEMD128[]? RIPEMD128 { get; set; } + + public RIPEMD160[]? RIPEMD160 { get; set; } + public SHA1[]? SHA1 { get; set; } public SHA256[]? SHA256 { get; set; } diff --git a/SabreTools.Models/Hashfile/RIPEMD128.cs b/SabreTools.Models/Hashfile/RIPEMD128.cs new file mode 100644 index 0000000..9e32f4c --- /dev/null +++ b/SabreTools.Models/Hashfile/RIPEMD128.cs @@ -0,0 +1,14 @@ +namespace SabreTools.Models.Hashfile +{ + /// + /// RIPEMD128 File + /// + public class RIPEMD128 + { + [Required] + public string? Hash { get; set; } + + [Required] + public string? File { get; set; } + } +} \ No newline at end of file diff --git a/SabreTools.Models/Hashfile/RIPEMD160.cs b/SabreTools.Models/Hashfile/RIPEMD160.cs new file mode 100644 index 0000000..7043144 --- /dev/null +++ b/SabreTools.Models/Hashfile/RIPEMD160.cs @@ -0,0 +1,14 @@ +namespace SabreTools.Models.Hashfile +{ + /// + /// RIPEMD160 File + /// + public class RIPEMD160 + { + [Required] + public string? Hash { get; set; } + + [Required] + public string? File { get; set; } + } +} \ No newline at end of file diff --git a/SabreTools.Models/Logiqx/Rom.cs b/SabreTools.Models/Logiqx/Rom.cs index 7d87935..63d7ebd 100644 --- a/SabreTools.Models/Logiqx/Rom.cs +++ b/SabreTools.Models/Logiqx/Rom.cs @@ -17,9 +17,25 @@ namespace SabreTools.Models.Logiqx [XmlAttribute("crc")] public string? CRC { get; set; } + /// Hash extension + [XmlAttribute("md2")] + public string? MD2 { get; set; } + + /// Hash extension + [XmlAttribute("md4")] + public string? MD4 { get; set; } + [XmlAttribute("md5")] public string? MD5 { get; set; } + /// Hash extension + [XmlAttribute("ripemd128")] + public string? RIPEMD128 { get; set; } + + /// Hash extension + [XmlAttribute("ripemd160")] + public string? RIPEMD160 { get; set; } + [XmlAttribute("sha1")] public string? SHA1 { get; set; } diff --git a/SabreTools.Models/Metadata/Rom.cs b/SabreTools.Models/Metadata/Rom.cs index d33599d..dee62d9 100644 --- a/SabreTools.Models/Metadata/Rom.cs +++ b/SabreTools.Models/Metadata/Rom.cs @@ -182,6 +182,12 @@ namespace SabreTools.Models.Metadata /// string; OpenMSX.RomBase public const string RemarkKey = "remark"; + /// string + public const string RIPEMD128Key = "ripemd128"; + + /// string + public const string RIPEMD160Key = "ripemd160"; + /// string, possibly long; ArchiveDotOrg.File public const string RotationKey = "rotation";