private void CalculateVolumeChecksum(byte[] Image, UInt32 Offset) { UInt16 VolumeHeaderSize = ByteOperations.ReadUInt16(Image, Offset + 0x30); ByteOperations.WriteUInt16(Image, Offset + 0x32, 0); // Clear checksum UInt16 NewChecksum = ByteOperations.CalculateChecksum16(Image, Offset, VolumeHeaderSize); ByteOperations.WriteUInt16(Image, Offset + 0x32, NewChecksum); }
private bool VerifyVolumeChecksum(byte[] Image, UInt32 Offset) { UInt16 VolumeHeaderSize = ByteOperations.ReadUInt16(Image, Offset + 0x30); byte[] Header = new byte[VolumeHeaderSize]; System.Buffer.BlockCopy(Image, (int)Offset, Header, 0, VolumeHeaderSize); ByteOperations.WriteUInt16(Header, 0x32, 0); // Clear checksum UInt16 CurrentChecksum = ByteOperations.ReadUInt16(Image, Offset + 0x32); UInt16 NewChecksum = ByteOperations.CalculateChecksum16(Header, 0, VolumeHeaderSize); return(CurrentChecksum == NewChecksum); }