Sanity check D1/D2/PIC lengths, check getkey log D2/PIC

This commit is contained in:
Deterous
2023-10-31 16:57:58 +13:00
parent 50fc41e03e
commit 14df0affc6
2 changed files with 46 additions and 12 deletions
+8 -2
View File
@@ -209,11 +209,17 @@ namespace LibIRD
// Parse .getkey.log for the Disc Key (Data1Key)
ParseGetKeyLog(getKeyLog);
// Generate Data 2 using Disc ID, discarding ID from getKeyLog
// Generate Data 2 using Disc ID
GenerateD2(GenerateID(size));
byte[] d2 = Data2Key;
if (!((ReadOnlySpan<byte>)Data2Key).SequenceEqual(d2))
throw new InvalidDataException("Unexpected Disc ID in .getkey.log");
// Generate Disc PIC, discarding PIC from getKeyLog
// Generate Disc PIC
byte[] pic = PIC;
GeneratePIC(size);
if (!((ReadOnlySpan<byte>) PIC).SequenceEqual(pic))
throw new InvalidDataException("Unexpected PIC in .getkey.log");
// Generate Unique Identifier using ISO CRC32
GenerateUID(isoPath);