mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Add and use SpamSum for Media and Rom types
SpamSum implementation courtesy of https://github.com/aaru-dps/Aaru
This commit is contained in:
@@ -34,6 +34,8 @@ namespace SabreTools.Library.Tools
|
||||
return Field.DatItem_SHA384;
|
||||
case Hash.SHA512:
|
||||
return Field.DatItem_SHA512;
|
||||
case Hash.SpamSum:
|
||||
return Field.DatItem_SpamSum;
|
||||
|
||||
default:
|
||||
return Field.NULL;
|
||||
@@ -160,6 +162,8 @@ namespace SabreTools.Library.Tools
|
||||
case "smdb":
|
||||
case "everdrive":
|
||||
return DatFormat.EverdriveSMDB;
|
||||
case "spamsum":
|
||||
return DatFormat.RedumpSpamSum;
|
||||
case "ssv":
|
||||
return DatFormat.SSV;
|
||||
case "tsv":
|
||||
@@ -788,6 +792,10 @@ namespace SabreTools.Library.Tools
|
||||
case "sha_512hash":
|
||||
case "sha_512_hash":
|
||||
return Field.DatItem_SHA512;
|
||||
|
||||
case "spamsum":
|
||||
case "spam_sum":
|
||||
return Field.DatItem_SpamSum;
|
||||
|
||||
case "merge":
|
||||
case "mergetag":
|
||||
@@ -1478,6 +1486,10 @@ namespace SabreTools.Library.Tools
|
||||
case "sha_512_hash":
|
||||
return Field.DatItem_SHA512;
|
||||
|
||||
case "spamsum":
|
||||
case "spam_sum":
|
||||
return Field.DatItem_SpamSum;
|
||||
|
||||
case "merge":
|
||||
case "mergetag":
|
||||
case "merge_tag":
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using Aaru.Checksums;
|
||||
using SabreTools.Library.DatFiles;
|
||||
using SabreTools.Library.External;
|
||||
|
||||
@@ -58,6 +58,10 @@ namespace SabreTools.Library.Tools
|
||||
case Hash.SHA512:
|
||||
_hasher = SHA512.Create();
|
||||
break;
|
||||
|
||||
case Hash.SpamSum:
|
||||
_hasher = new SpamSumContext();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,6 +91,10 @@ namespace SabreTools.Library.Tools
|
||||
case Hash.SHA512:
|
||||
await Task.Run(() => (_hasher as HashAlgorithm).TransformBlock(buffer, 0, size, null, 0));
|
||||
break;
|
||||
|
||||
case Hash.SpamSum:
|
||||
await Task.Run(() => (_hasher as SpamSumContext).Update(buffer));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -112,6 +120,10 @@ namespace SabreTools.Library.Tools
|
||||
case Hash.SHA512:
|
||||
await Task.Run(() => (_hasher as HashAlgorithm).TransformFinalBlock(emptyBuffer, 0, 0));
|
||||
break;
|
||||
|
||||
case Hash.SpamSum:
|
||||
// No finalization step needed
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -134,6 +146,9 @@ namespace SabreTools.Library.Tools
|
||||
case Hash.SHA384:
|
||||
case Hash.SHA512:
|
||||
return (_hasher as HashAlgorithm).Hash;
|
||||
|
||||
case Hash.SpamSum:
|
||||
return (_hasher as SpamSumContext).Final();
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
@@ -145,7 +145,7 @@ namespace SabreTools.Library.Tools
|
||||
/// <param name="hash">Hash string to sanitize</param>
|
||||
/// <param name="padding">Amount of characters to pad to</param>
|
||||
/// <returns>Cleaned string</returns>
|
||||
private static string CleanHashData(string hash, int padding)
|
||||
public static string CleanHashData(string hash, int padding)
|
||||
{
|
||||
// If we have a known blank hash, return blank
|
||||
if (string.IsNullOrWhiteSpace(hash) || hash == "-" || hash == "_")
|
||||
|
||||
Reference in New Issue
Block a user