public void Dispose() { if (TigerHasher != null) { TigerHasher.Dispose(); TigerHasher = null; } }
private void ValidateHashes(EraFileEntryChunk fileEntry, IO.EndianStream blockStream) { fileEntry.ComputeHash(blockStream, TigerHasher); if (!fileEntry.CompressedDataTiger128.EqualsArray(TigerHasher.Hash)) { string chunk_name = !string.IsNullOrEmpty(fileEntry.FileName) ? fileEntry.FileName : "FileNames";//fileEntry.EntryId.ToString("X16"); throw new System.IO.InvalidDataException(string.Format( "Invalid chunk hash for '{0}' offset={1} size={2} " + "expected {3} but got {4}", chunk_name, fileEntry.DataOffset, fileEntry.DataSize.ToString("X8"), Text.Util.ByteArrayToString(fileEntry.CompressedDataTiger128), Text.Util.ByteArrayToString(TigerHasher.Hash, 0, EraFileEntryChunk.kCompresssedDataTigerHashSize) )); } if (fileEntry.CompressionType == ECF.EcfCompressionType.Stored) { ulong tiger64; TigerHasher.TryGetAsTiger64(out tiger64); if (fileEntry.DecompressedDataTiger64 != tiger64) { string chunk_name = !string.IsNullOrEmpty(fileEntry.FileName) ? fileEntry.FileName : "FileNames";//fileEntry.EntryId.ToString("X16"); throw new System.IO.InvalidDataException(string.Format( "Chunk id mismatch for '{0}' offset={1} size={2} " + "expected {3} but got {4}", chunk_name, fileEntry.DataOffset, fileEntry.DataSize.ToString("X8"), fileEntry.DecompressedDataTiger64.ToString("X16"), Text.Util.ByteArrayToString(TigerHasher.Hash, 0, sizeof(ulong)) )); } } }