From bf18e4886df39b728466c8d9e94014a55f0db870 Mon Sep 17 00:00:00 2001 From: Michael Green <84688932+michael-j-green@users.noreply.github.com> Date: Sat, 18 Feb 2023 23:11:07 +1100 Subject: [PATCH] feat: added hashes of data source files --- gaseous-identifier/Classes/TosecParser.cs | 14 ++++++++++++++ gaseous-identifier/Objects/RomSignatureObject.cs | 2 ++ 2 files changed, 16 insertions(+) diff --git a/gaseous-identifier/Classes/TosecParser.cs b/gaseous-identifier/Classes/TosecParser.cs index 451b0ed..7c54aaa 100644 --- a/gaseous-identifier/Classes/TosecParser.cs +++ b/gaseous-identifier/Classes/TosecParser.cs @@ -2,6 +2,7 @@ using System.Xml; using System.IO; using System.Reflection; +using System.Security.Cryptography; namespace gaseous_identifier.classes { @@ -76,6 +77,17 @@ namespace gaseous_identifier.classes } while (reader.EndOfStream == false); } + // get hashes of TOSEC file + var xmlStream = File.OpenRead(XMLFile); + + var md5 = MD5.Create(); + byte[] md5HashByte = md5.ComputeHash(xmlStream); + string md5Hash = BitConverter.ToString(md5HashByte).Replace("-", "").ToLowerInvariant(); + + var sha1 = SHA1.Create(); + byte[] sha1HashByte = sha1.ComputeHash(xmlStream); + string sha1Hash = BitConverter.ToString(md5HashByte).Replace("-", "").ToLowerInvariant(); + // load TOSEC file XmlDocument tosecXmlDoc = new XmlDocument(); tosecXmlDoc.Load(XMLFile); @@ -85,6 +97,8 @@ namespace gaseous_identifier.classes // get header XmlNode xmlHeader = tosecXmlDoc.DocumentElement.SelectSingleNode("/datafile/header"); tosecObject.SourceType = "TOSEC"; + tosecObject.SourceMd5 = md5Hash; + tosecObject.SourceSHA1 = sha1Hash; foreach (XmlNode childNode in xmlHeader.ChildNodes) { switch (childNode.Name.ToLower()) diff --git a/gaseous-identifier/Objects/RomSignatureObject.cs b/gaseous-identifier/Objects/RomSignatureObject.cs index d6ff210..5bd39ee 100644 --- a/gaseous-identifier/Objects/RomSignatureObject.cs +++ b/gaseous-identifier/Objects/RomSignatureObject.cs @@ -19,6 +19,8 @@ namespace gaseous_identifier.objects public string? Homepage { get; set; } public Uri? Url { get; set; } public string? SourceType { get; set; } + public string SourceMd5 { get; set; } = ""; + public string SourceSHA1 { get; set; } = ""; public List Games { get; set; } = new List();