diff --git a/.idea/.idea.DiscImageChef/.idea/contentModel.xml b/.idea/.idea.DiscImageChef/.idea/contentModel.xml
index 7aaee6b6..9725543a 100644
--- a/.idea/.idea.DiscImageChef/.idea/contentModel.xml
+++ b/.idea/.idea.DiscImageChef/.idea/contentModel.xml
@@ -58,6 +58,7 @@
+
diff --git a/DiscImageChef.Checksums/Adler32Context.cs b/DiscImageChef.Checksums/Adler32Context.cs
index f6fa9db6..083ae310 100644
--- a/DiscImageChef.Checksums/Adler32Context.cs
+++ b/DiscImageChef.Checksums/Adler32Context.cs
@@ -39,7 +39,7 @@ namespace DiscImageChef.Checksums
///
/// Implements the Adler-32 algorithm
///
- public class Adler32Context
+ public class Adler32Context : IChecksum
{
const ushort ADLER_MODULE = 65521;
ushort sum1, sum2;
diff --git a/DiscImageChef.Checksums/CRC16Context.cs b/DiscImageChef.Checksums/CRC16Context.cs
index 7bcb2155..ec65593b 100644
--- a/DiscImageChef.Checksums/CRC16Context.cs
+++ b/DiscImageChef.Checksums/CRC16Context.cs
@@ -39,7 +39,7 @@ namespace DiscImageChef.Checksums
///
/// Implements a CRC16-CCITT algorithm
///
- public class Crc16Context
+ public class Crc16Context : IChecksum
{
const ushort CRC16_POLY = 0xA001;
const ushort CRC16_SEED = 0x0000;
diff --git a/DiscImageChef.Checksums/CRC32Context.cs b/DiscImageChef.Checksums/CRC32Context.cs
index 97680b60..e2319969 100644
--- a/DiscImageChef.Checksums/CRC32Context.cs
+++ b/DiscImageChef.Checksums/CRC32Context.cs
@@ -39,7 +39,7 @@ namespace DiscImageChef.Checksums
///
/// Implements a CRC32 algorithm
///
- public class Crc32Context
+ public class Crc32Context : IChecksum
{
const uint CRC32_POLY = 0xEDB88320;
const uint CRC32_SEED = 0xFFFFFFFF;
diff --git a/DiscImageChef.Checksums/CRC64Context.cs b/DiscImageChef.Checksums/CRC64Context.cs
index 35f3be4c..b1bc62bd 100644
--- a/DiscImageChef.Checksums/CRC64Context.cs
+++ b/DiscImageChef.Checksums/CRC64Context.cs
@@ -39,7 +39,7 @@ namespace DiscImageChef.Checksums
///
/// Implements a CRC64 (ECMA) algorithm
///
- public class Crc64Context
+ public class Crc64Context : IChecksum
{
const ulong CRC64_POLY = 0xC96C5795D7870F42;
const ulong CRC64_SEED = 0xFFFFFFFFFFFFFFFF;
diff --git a/DiscImageChef.Checksums/DiscImageChef.Checksums.csproj b/DiscImageChef.Checksums/DiscImageChef.Checksums.csproj
index 9a5bfdda..bc35cb3f 100644
--- a/DiscImageChef.Checksums/DiscImageChef.Checksums.csproj
+++ b/DiscImageChef.Checksums/DiscImageChef.Checksums.csproj
@@ -1,4 +1,4 @@
-
+
Debug
@@ -34,6 +34,7 @@
+
diff --git a/DiscImageChef.Checksums/FletcherContext.cs b/DiscImageChef.Checksums/FletcherContext.cs
index da63771f..a79c7395 100644
--- a/DiscImageChef.Checksums/FletcherContext.cs
+++ b/DiscImageChef.Checksums/FletcherContext.cs
@@ -31,14 +31,14 @@
// ****************************************************************************/
// Disabled because the speed is abnormally slow
-/*
+
using System;
using System.IO;
using System.Text;
namespace DiscImageChef.Checksums
{
- public class Fletcher32Context
+ public class Fletcher32Context : IChecksum
{
bool inodd;
byte oddValue;
@@ -423,4 +423,4 @@ namespace DiscImageChef.Checksums
return Data(data, (uint)data.Length, out hash);
}
}
-}*/
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/DiscImageChef.Checksums/IChecksum.cs b/DiscImageChef.Checksums/IChecksum.cs
new file mode 100644
index 00000000..a29a96b1
--- /dev/null
+++ b/DiscImageChef.Checksums/IChecksum.cs
@@ -0,0 +1,65 @@
+// /***************************************************************************
+// The Disc Image Chef
+// ----------------------------------------------------------------------------
+//
+// Filename : IChecksum.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Checksums.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Provides an interface for implementing checksums and hashes.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// This library is free software; you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation; either version 2.1 of the
+// License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, see .
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2018 Natalia Portillo
+// ****************************************************************************/
+
+namespace DiscImageChef.Checksums
+{
+ public interface IChecksum
+ {
+ ///
+ /// Initializes the algorithm
+ ///
+ void Init();
+
+ ///
+ /// Updates the hash with data.
+ ///
+ /// Data buffer.
+ /// Length of buffer to hash.
+ void Update(byte[] data, uint len);
+
+ ///
+ /// Updates the hash with data.
+ ///
+ /// Data buffer.
+ void Update(byte[] data);
+
+ ///
+ /// Returns a byte array of the hash value.
+ ///
+ byte[] Final();
+
+ ///
+ /// Returns a hexadecimal representation of the hash value.
+ ///
+ string End();
+ }
+}
\ No newline at end of file
diff --git a/DiscImageChef.Checksums/MD5Context.cs b/DiscImageChef.Checksums/MD5Context.cs
index 8e3bc3f5..6fd0dc2e 100644
--- a/DiscImageChef.Checksums/MD5Context.cs
+++ b/DiscImageChef.Checksums/MD5Context.cs
@@ -39,7 +39,7 @@ namespace DiscImageChef.Checksums
///
/// Wraps up .NET MD5 implementation to a Init(), Update(), Final() context.
///
- public class Md5Context
+ public class Md5Context : IChecksum
{
MD5 md5Provider;
diff --git a/DiscImageChef.Checksums/RIPEMD160Context.cs b/DiscImageChef.Checksums/RIPEMD160Context.cs
index c9bca191..120f2cbd 100644
--- a/DiscImageChef.Checksums/RIPEMD160Context.cs
+++ b/DiscImageChef.Checksums/RIPEMD160Context.cs
@@ -39,7 +39,7 @@ namespace DiscImageChef.Checksums
///
/// Wraps up .NET RIPEMD160 implementation to a Init(), Update(), Final() context.
///
- public class Ripemd160Context
+ public class Ripemd160Context : IChecksum
{
RIPEMD160 ripemd160Provider;
diff --git a/DiscImageChef.Checksums/SHA1Context.cs b/DiscImageChef.Checksums/SHA1Context.cs
index 8de3a5d7..f62887a5 100644
--- a/DiscImageChef.Checksums/SHA1Context.cs
+++ b/DiscImageChef.Checksums/SHA1Context.cs
@@ -39,7 +39,7 @@ namespace DiscImageChef.Checksums
///
/// Wraps up .NET SHA1 implementation to a Init(), Update(), Final() context.
///
- public class Sha1Context
+ public class Sha1Context : IChecksum
{
SHA1 sha1Provider;
diff --git a/DiscImageChef.Checksums/SHA256Context.cs b/DiscImageChef.Checksums/SHA256Context.cs
index 3a062e32..43e10734 100644
--- a/DiscImageChef.Checksums/SHA256Context.cs
+++ b/DiscImageChef.Checksums/SHA256Context.cs
@@ -39,7 +39,7 @@ namespace DiscImageChef.Checksums
///
/// Wraps up .NET SHA256 implementation to a Init(), Update(), Final() context.
///
- public class Sha256Context
+ public class Sha256Context : IChecksum
{
SHA256 sha256Provider;
diff --git a/DiscImageChef.Checksums/SHA384Context.cs b/DiscImageChef.Checksums/SHA384Context.cs
index 225ac75a..1fd534cb 100644
--- a/DiscImageChef.Checksums/SHA384Context.cs
+++ b/DiscImageChef.Checksums/SHA384Context.cs
@@ -39,7 +39,7 @@ namespace DiscImageChef.Checksums
///
/// Wraps up .NET SHA384 implementation to a Init(), Update(), Final() context.
///
- public class Sha384Context
+ public class Sha384Context : IChecksum
{
SHA384 sha384Provider;
diff --git a/DiscImageChef.Checksums/SHA512Context.cs b/DiscImageChef.Checksums/SHA512Context.cs
index 94b3bca3..5beb4cce 100644
--- a/DiscImageChef.Checksums/SHA512Context.cs
+++ b/DiscImageChef.Checksums/SHA512Context.cs
@@ -39,7 +39,7 @@ namespace DiscImageChef.Checksums
///
/// Wraps up .NET SHA512 implementation to a Init(), Update(), Final() context.
///
- public class Sha512Context
+ public class Sha512Context : IChecksum
{
SHA512 sha512Provider;
diff --git a/DiscImageChef.Checksums/SpamSumContext.cs b/DiscImageChef.Checksums/SpamSumContext.cs
index 30a1c1f5..14878322 100644
--- a/DiscImageChef.Checksums/SpamSumContext.cs
+++ b/DiscImageChef.Checksums/SpamSumContext.cs
@@ -47,7 +47,7 @@ namespace DiscImageChef.Checksums
///
/// Implements the SpamSum fuzzy hashing algorithm.
///
- public class SpamSumContext
+ public class SpamSumContext : IChecksum
{
const uint ROLLING_WINDOW = 7;
const uint MIN_BLOCKSIZE = 3;
diff --git a/DiscImageChef.Core/Benchmark.cs b/DiscImageChef.Core/Benchmark.cs
index dba83502..05ea105c 100644
--- a/DiscImageChef.Core/Benchmark.cs
+++ b/DiscImageChef.Core/Benchmark.cs
@@ -139,8 +139,8 @@ namespace DiscImageChef.Core
results.ReadSpeed = bufferSize / 1048576.0 / (end - start).TotalSeconds;
#region Adler32
- object ctx = new Adler32Context();
- ((Adler32Context)ctx).Init();
+ IChecksum ctx = new Adler32Context();
+ ctx.Init();
ms.Seek(0, SeekOrigin.Begin);
mem = GC.GetTotalMemory(false);
if(mem > results.MaxMemory) results.MaxMemory = mem;
@@ -152,11 +152,11 @@ namespace DiscImageChef.Core
UpdateProgress("Checksumming block {0} of {1} with Adler32.", i + 1, bufferSize / blockSize);
byte[] tmp = new byte[blockSize];
ms.Read(tmp, 0, blockSize);
- ((Adler32Context)ctx).Update(tmp);
+ ctx.Update(tmp);
}
EndProgress();
- ((Adler32Context)ctx).End();
+ ctx.End();
end = DateTime.Now;
mem = GC.GetTotalMemory(false);
if(mem > results.MaxMemory) results.MaxMemory = mem;
@@ -173,7 +173,7 @@ namespace DiscImageChef.Core
#region CRC16
ctx = new Crc16Context();
- ((Crc16Context)ctx).Init();
+ ctx.Init();
ms.Seek(0, SeekOrigin.Begin);
mem = GC.GetTotalMemory(false);
if(mem > results.MaxMemory) results.MaxMemory = mem;
@@ -185,11 +185,11 @@ namespace DiscImageChef.Core
UpdateProgress("Checksumming block {0} of {1} with CRC16.", i + 1, bufferSize / blockSize);
byte[] tmp = new byte[blockSize];
ms.Read(tmp, 0, blockSize);
- ((Crc16Context)ctx).Update(tmp);
+ ctx.Update(tmp);
}
EndProgress();
- ((Crc16Context)ctx).End();
+ ctx.End();
end = DateTime.Now;
mem = GC.GetTotalMemory(false);
if(mem > results.MaxMemory) results.MaxMemory = mem;
@@ -206,7 +206,7 @@ namespace DiscImageChef.Core
#region CRC32
ctx = new Crc32Context();
- ((Crc32Context)ctx).Init();
+ ctx.Init();
ms.Seek(0, SeekOrigin.Begin);
mem = GC.GetTotalMemory(false);
if(mem > results.MaxMemory) results.MaxMemory = mem;
@@ -218,11 +218,11 @@ namespace DiscImageChef.Core
UpdateProgress("Checksumming block {0} of {1} with CRC32.", i + 1, bufferSize / blockSize);
byte[] tmp = new byte[blockSize];
ms.Read(tmp, 0, blockSize);
- ((Crc32Context)ctx).Update(tmp);
+ ctx.Update(tmp);
}
EndProgress();
- ((Crc32Context)ctx).End();
+ ctx.End();
end = DateTime.Now;
mem = GC.GetTotalMemory(false);
if(mem > results.MaxMemory) results.MaxMemory = mem;
@@ -239,7 +239,7 @@ namespace DiscImageChef.Core
#region CRC64
ctx = new Crc64Context();
- ((Crc64Context)ctx).Init();
+ ctx.Init();
ms.Seek(0, SeekOrigin.Begin);
mem = GC.GetTotalMemory(false);
if(mem > results.MaxMemory) results.MaxMemory = mem;
@@ -251,11 +251,11 @@ namespace DiscImageChef.Core
UpdateProgress("Checksumming block {0} of {1} with CRC64.", i + 1, bufferSize / blockSize);
byte[] tmp = new byte[blockSize];
ms.Read(tmp, 0, blockSize);
- ((Crc64Context)ctx).Update(tmp);
+ ctx.Update(tmp);
}
EndProgress();
- ((Crc64Context)ctx).End();
+ ctx.End();
end = DateTime.Now;
mem = GC.GetTotalMemory(false);
if(mem > results.MaxMemory) results.MaxMemory = mem;
@@ -272,7 +272,7 @@ namespace DiscImageChef.Core
#region MD5
ctx = new Md5Context();
- ((Md5Context)ctx).Init();
+ ctx.Init();
ms.Seek(0, SeekOrigin.Begin);
mem = GC.GetTotalMemory(false);
if(mem > results.MaxMemory) results.MaxMemory = mem;
@@ -284,11 +284,11 @@ namespace DiscImageChef.Core
UpdateProgress("Checksumming block {0} of {1} with MD5.", i + 1, bufferSize / blockSize);
byte[] tmp = new byte[blockSize];
ms.Read(tmp, 0, blockSize);
- ((Md5Context)ctx).Update(tmp);
+ ctx.Update(tmp);
}
EndProgress();
- ((Md5Context)ctx).End();
+ ctx.End();
end = DateTime.Now;
mem = GC.GetTotalMemory(false);
if(mem > results.MaxMemory) results.MaxMemory = mem;
@@ -305,7 +305,7 @@ namespace DiscImageChef.Core
#region RIPEMD160
ctx = new Ripemd160Context();
- ((Ripemd160Context)ctx).Init();
+ ctx.Init();
ms.Seek(0, SeekOrigin.Begin);
mem = GC.GetTotalMemory(false);
if(mem > results.MaxMemory) results.MaxMemory = mem;
@@ -317,11 +317,11 @@ namespace DiscImageChef.Core
UpdateProgress("Checksumming block {0} of {1} with RIPEMD160.", i + 1, bufferSize / blockSize);
byte[] tmp = new byte[blockSize];
ms.Read(tmp, 0, blockSize);
- ((Ripemd160Context)ctx).Update(tmp);
+ ctx.Update(tmp);
}
EndProgress();
- ((Ripemd160Context)ctx).End();
+ ctx.End();
end = DateTime.Now;
mem = GC.GetTotalMemory(false);
if(mem > results.MaxMemory) results.MaxMemory = mem;
@@ -338,7 +338,7 @@ namespace DiscImageChef.Core
#region SHA1
ctx = new Sha1Context();
- ((Sha1Context)ctx).Init();
+ ctx.Init();
ms.Seek(0, SeekOrigin.Begin);
mem = GC.GetTotalMemory(false);
if(mem > results.MaxMemory) results.MaxMemory = mem;
@@ -350,11 +350,11 @@ namespace DiscImageChef.Core
UpdateProgress("Checksumming block {0} of {1} with SHA1.", i + 1, bufferSize / blockSize);
byte[] tmp = new byte[blockSize];
ms.Read(tmp, 0, blockSize);
- ((Sha1Context)ctx).Update(tmp);
+ ctx.Update(tmp);
}
EndProgress();
- ((Sha1Context)ctx).End();
+ ctx.End();
end = DateTime.Now;
mem = GC.GetTotalMemory(false);
if(mem > results.MaxMemory) results.MaxMemory = mem;
@@ -371,7 +371,7 @@ namespace DiscImageChef.Core
#region SHA256
ctx = new Sha256Context();
- ((Sha256Context)ctx).Init();
+ ctx.Init();
ms.Seek(0, SeekOrigin.Begin);
mem = GC.GetTotalMemory(false);
if(mem > results.MaxMemory) results.MaxMemory = mem;
@@ -383,11 +383,11 @@ namespace DiscImageChef.Core
UpdateProgress("Checksumming block {0} of {1} with SHA256.", i + 1, bufferSize / blockSize);
byte[] tmp = new byte[blockSize];
ms.Read(tmp, 0, blockSize);
- ((Sha256Context)ctx).Update(tmp);
+ ctx.Update(tmp);
}
EndProgress();
- ((Sha256Context)ctx).End();
+ ctx.End();
end = DateTime.Now;
mem = GC.GetTotalMemory(false);
if(mem > results.MaxMemory) results.MaxMemory = mem;
@@ -404,7 +404,7 @@ namespace DiscImageChef.Core
#region SHA384
ctx = new Sha384Context();
- ((Sha384Context)ctx).Init();
+ ctx.Init();
ms.Seek(0, SeekOrigin.Begin);
mem = GC.GetTotalMemory(false);
if(mem > results.MaxMemory) results.MaxMemory = mem;
@@ -416,11 +416,11 @@ namespace DiscImageChef.Core
UpdateProgress("Checksumming block {0} of {1} with SHA384.", i + 1, bufferSize / blockSize);
byte[] tmp = new byte[blockSize];
ms.Read(tmp, 0, blockSize);
- ((Sha384Context)ctx).Update(tmp);
+ ctx.Update(tmp);
}
EndProgress();
- ((Sha384Context)ctx).End();
+ ctx.End();
end = DateTime.Now;
mem = GC.GetTotalMemory(false);
if(mem > results.MaxMemory) results.MaxMemory = mem;
@@ -437,7 +437,7 @@ namespace DiscImageChef.Core
#region SHA512
ctx = new Sha512Context();
- ((Sha512Context)ctx).Init();
+ ctx.Init();
ms.Seek(0, SeekOrigin.Begin);
mem = GC.GetTotalMemory(false);
if(mem > results.MaxMemory) results.MaxMemory = mem;
@@ -449,11 +449,11 @@ namespace DiscImageChef.Core
UpdateProgress("Checksumming block {0} of {1} with SHA512.", i + 1, bufferSize / blockSize);
byte[] tmp = new byte[blockSize];
ms.Read(tmp, 0, blockSize);
- ((Sha512Context)ctx).Update(tmp);
+ ctx.Update(tmp);
}
EndProgress();
- ((Sha512Context)ctx).End();
+ ctx.End();
end = DateTime.Now;
mem = GC.GetTotalMemory(false);
if(mem > results.MaxMemory) results.MaxMemory = mem;
@@ -470,7 +470,7 @@ namespace DiscImageChef.Core
#region SpamSum
ctx = new SpamSumContext();
- ((SpamSumContext)ctx).Init();
+ ctx.Init();
ms.Seek(0, SeekOrigin.Begin);
mem = GC.GetTotalMemory(false);
if(mem > results.MaxMemory) results.MaxMemory = mem;
@@ -482,11 +482,11 @@ namespace DiscImageChef.Core
UpdateProgress("Checksumming block {0} of {1} with SpamSum.", i + 1, bufferSize / blockSize);
byte[] tmp = new byte[blockSize];
ms.Read(tmp, 0, blockSize);
- ((SpamSumContext)ctx).Update(tmp);
+ ctx.Update(tmp);
}
EndProgress();
- ((SpamSumContext)ctx).End();
+ ctx.End();
end = DateTime.Now;
mem = GC.GetTotalMemory(false);
if(mem > results.MaxMemory) results.MaxMemory = mem;
diff --git a/DiscImageChef.Core/Checksum.cs b/DiscImageChef.Core/Checksum.cs
index 2654e3cc..8a91c012 100644
--- a/DiscImageChef.Core/Checksum.cs
+++ b/DiscImageChef.Core/Checksum.cs
@@ -60,40 +60,40 @@ namespace DiscImageChef.Core
///
public class Checksum
{
- Adler32Context adler32Ctx;
- AdlerPacket adlerPkt;
+ IChecksum adler32Ctx;
+ HashPacket adlerPkt;
Thread adlerThread;
- Crc16Context crc16Ctx;
- Crc16Packet crc16Pkt;
+ IChecksum crc16Ctx;
+ HashPacket crc16Pkt;
Thread crc16Thread;
- Crc32Context crc32Ctx;
- Crc32Packet crc32Pkt;
+ IChecksum crc32Ctx;
+ HashPacket crc32Pkt;
Thread crc32Thread;
- Crc64Context crc64Ctx;
- Crc64Packet crc64Pkt;
+ IChecksum crc64Ctx;
+ HashPacket crc64Pkt;
Thread crc64Thread;
EnableChecksum enabled;
- Md5Context md5Ctx;
- Md5Packet md5Pkt;
+ IChecksum md5Ctx;
+ HashPacket md5Pkt;
Thread md5Thread;
- Ripemd160Context ripemd160Ctx;
- Ripemd160Packet ripemd160Pkt;
+ IChecksum ripemd160Ctx;
+ HashPacket ripemd160Pkt;
Thread ripemd160Thread;
- Sha1Context sha1Ctx;
- Sha1Packet sha1Pkt;
+ IChecksum sha1Ctx;
+ HashPacket sha1Pkt;
Thread sha1Thread;
- Sha256Context sha256Ctx;
- Sha256Packet sha256Pkt;
+ IChecksum sha256Ctx;
+ HashPacket sha256Pkt;
Thread sha256Thread;
- Sha384Context sha384Ctx;
- Sha384Packet sha384Pkt;
+ IChecksum sha384Ctx;
+ HashPacket sha384Pkt;
Thread sha384Thread;
- Sha512Context sha512Ctx;
- Sha512Packet sha512Pkt;
+ IChecksum sha512Ctx;
+ HashPacket sha512Pkt;
Thread sha512Thread;
- SpamsumPacket spamsumPkt;
+ HashPacket spamsumPkt;
Thread spamsumThread;
- SpamSumContext ssctx;
+ IChecksum ssctx;
public Checksum(EnableChecksum enabled = EnableChecksum.All)
{
@@ -102,7 +102,7 @@ namespace DiscImageChef.Core
if(enabled.HasFlag(EnableChecksum.Adler32))
{
adler32Ctx = new Adler32Context();
- adlerPkt = new AdlerPacket();
+ adlerPkt = new HashPacket();
adler32Ctx.Init();
adlerPkt.Context = adler32Ctx;
}
@@ -110,7 +110,7 @@ namespace DiscImageChef.Core
if(enabled.HasFlag(EnableChecksum.Crc16))
{
crc16Ctx = new Crc16Context();
- crc16Pkt = new Crc16Packet();
+ crc16Pkt = new HashPacket();
crc16Ctx.Init();
crc16Pkt.Context = crc16Ctx;
}
@@ -118,7 +118,7 @@ namespace DiscImageChef.Core
if(enabled.HasFlag(EnableChecksum.Crc32))
{
crc32Ctx = new Crc32Context();
- crc32Pkt = new Crc32Packet();
+ crc32Pkt = new HashPacket();
crc32Ctx.Init();
crc32Pkt.Context = crc32Ctx;
}
@@ -126,7 +126,7 @@ namespace DiscImageChef.Core
if(enabled.HasFlag(EnableChecksum.Crc64))
{
crc64Ctx = new Crc64Context();
- crc64Pkt = new Crc64Packet();
+ crc64Pkt = new HashPacket();
crc64Ctx.Init();
crc64Pkt.Context = crc64Ctx;
}
@@ -134,7 +134,7 @@ namespace DiscImageChef.Core
if(enabled.HasFlag(EnableChecksum.Md5))
{
md5Ctx = new Md5Context();
- md5Pkt = new Md5Packet();
+ md5Pkt = new HashPacket();
md5Ctx.Init();
md5Pkt.Context = md5Ctx;
}
@@ -142,7 +142,7 @@ namespace DiscImageChef.Core
if(enabled.HasFlag(EnableChecksum.Ripemd160))
{
ripemd160Ctx = new Ripemd160Context();
- ripemd160Pkt = new Ripemd160Packet();
+ ripemd160Pkt = new HashPacket();
ripemd160Ctx.Init();
ripemd160Pkt.Context = ripemd160Ctx;
}
@@ -150,7 +150,7 @@ namespace DiscImageChef.Core
if(enabled.HasFlag(EnableChecksum.Sha1))
{
sha1Ctx = new Sha1Context();
- sha1Pkt = new Sha1Packet();
+ sha1Pkt = new HashPacket();
sha1Ctx.Init();
sha1Pkt.Context = sha1Ctx;
}
@@ -158,7 +158,7 @@ namespace DiscImageChef.Core
if(enabled.HasFlag(EnableChecksum.Sha256))
{
sha256Ctx = new Sha256Context();
- sha256Pkt = new Sha256Packet();
+ sha256Pkt = new HashPacket();
sha256Ctx.Init();
sha256Pkt.Context = sha256Ctx;
}
@@ -166,7 +166,7 @@ namespace DiscImageChef.Core
if(enabled.HasFlag(EnableChecksum.Sha384))
{
sha384Ctx = new Sha384Context();
- sha384Pkt = new Sha384Packet();
+ sha384Pkt = new HashPacket();
sha384Ctx.Init();
sha384Pkt.Context = sha384Ctx;
}
@@ -174,7 +174,7 @@ namespace DiscImageChef.Core
if(enabled.HasFlag(EnableChecksum.Sha512))
{
sha512Ctx = new Sha512Context();
- sha512Pkt = new Sha512Packet();
+ sha512Pkt = new HashPacket();
sha512Ctx.Init();
sha512Pkt.Context = sha512Ctx;
}
@@ -182,22 +182,22 @@ namespace DiscImageChef.Core
if(enabled.HasFlag(EnableChecksum.SpamSum))
{
ssctx = new SpamSumContext();
- spamsumPkt = new SpamsumPacket();
+ spamsumPkt = new HashPacket();
ssctx.Init();
spamsumPkt.Context = ssctx;
}
- adlerThread = new Thread(UpdateAdler);
- crc16Thread = new Thread(UpdateCrc16);
- crc32Thread = new Thread(UpdateCrc32);
- crc64Thread = new Thread(UpdateCrc64);
- md5Thread = new Thread(UpdateMd5);
- ripemd160Thread = new Thread(UpdateRipemd160);
- sha1Thread = new Thread(UpdateSha1);
- sha256Thread = new Thread(UpdateSha256);
- sha384Thread = new Thread(UpdateSha384);
- sha512Thread = new Thread(UpdateSha512);
- spamsumThread = new Thread(UpdateSpamSum);
+ adlerThread = new Thread(UpdateHash);
+ crc16Thread = new Thread(UpdateHash);
+ crc32Thread = new Thread(UpdateHash);
+ crc64Thread = new Thread(UpdateHash);
+ md5Thread = new Thread(UpdateHash);
+ ripemd160Thread = new Thread(UpdateHash);
+ sha1Thread = new Thread(UpdateHash);
+ sha256Thread = new Thread(UpdateHash);
+ sha384Thread = new Thread(UpdateHash);
+ sha512Thread = new Thread(UpdateHash);
+ spamsumThread = new Thread(UpdateHash);
}
public void Update(byte[] data)
@@ -271,17 +271,17 @@ namespace DiscImageChef.Core
md5Thread.IsAlive || ripemd160Thread.IsAlive || sha1Thread.IsAlive || sha256Thread.IsAlive ||
sha384Thread.IsAlive || sha512Thread.IsAlive || spamsumThread.IsAlive) { }
- if(enabled.HasFlag(EnableChecksum.SpamSum)) adlerThread = new Thread(UpdateAdler);
- if(enabled.HasFlag(EnableChecksum.SpamSum)) crc16Thread = new Thread(UpdateCrc16);
- if(enabled.HasFlag(EnableChecksum.SpamSum)) crc32Thread = new Thread(UpdateCrc32);
- if(enabled.HasFlag(EnableChecksum.SpamSum)) crc64Thread = new Thread(UpdateCrc64);
- if(enabled.HasFlag(EnableChecksum.SpamSum)) md5Thread = new Thread(UpdateMd5);
- if(enabled.HasFlag(EnableChecksum.SpamSum)) ripemd160Thread = new Thread(UpdateRipemd160);
- if(enabled.HasFlag(EnableChecksum.SpamSum)) sha1Thread = new Thread(UpdateSha1);
- if(enabled.HasFlag(EnableChecksum.SpamSum)) sha256Thread = new Thread(UpdateSha256);
- if(enabled.HasFlag(EnableChecksum.SpamSum)) sha384Thread = new Thread(UpdateSha384);
- if(enabled.HasFlag(EnableChecksum.SpamSum)) sha512Thread = new Thread(UpdateSha512);
- if(enabled.HasFlag(EnableChecksum.SpamSum)) spamsumThread = new Thread(UpdateSpamSum);
+ if(enabled.HasFlag(EnableChecksum.SpamSum)) adlerThread = new Thread(UpdateHash);
+ if(enabled.HasFlag(EnableChecksum.SpamSum)) crc16Thread = new Thread(UpdateHash);
+ if(enabled.HasFlag(EnableChecksum.SpamSum)) crc32Thread = new Thread(UpdateHash);
+ if(enabled.HasFlag(EnableChecksum.SpamSum)) crc64Thread = new Thread(UpdateHash);
+ if(enabled.HasFlag(EnableChecksum.SpamSum)) md5Thread = new Thread(UpdateHash);
+ if(enabled.HasFlag(EnableChecksum.SpamSum)) ripemd160Thread = new Thread(UpdateHash);
+ if(enabled.HasFlag(EnableChecksum.SpamSum)) sha1Thread = new Thread(UpdateHash);
+ if(enabled.HasFlag(EnableChecksum.SpamSum)) sha256Thread = new Thread(UpdateHash);
+ if(enabled.HasFlag(EnableChecksum.SpamSum)) sha384Thread = new Thread(UpdateHash);
+ if(enabled.HasFlag(EnableChecksum.SpamSum)) sha512Thread = new Thread(UpdateHash);
+ if(enabled.HasFlag(EnableChecksum.SpamSum)) spamsumThread = new Thread(UpdateHash);
}
public List End()
@@ -360,34 +360,34 @@ namespace DiscImageChef.Core
internal static List GetChecksums(byte[] data, EnableChecksum enabled = EnableChecksum.All)
{
- Adler32Context adler32CtxData = null;
- Crc16Context crc16CtxData = null;
- Crc32Context crc32CtxData = null;
- Crc64Context crc64CtxData = null;
- Md5Context md5CtxData = null;
- Ripemd160Context ripemd160CtxData = null;
- Sha1Context sha1CtxData = null;
- Sha256Context sha256CtxData = null;
- Sha384Context sha384CtxData = null;
- Sha512Context sha512CtxData = null;
- SpamSumContext ssctxData = null;
+ IChecksum adler32CtxData = null;
+ IChecksum crc16CtxData = null;
+ IChecksum crc32CtxData = null;
+ IChecksum crc64CtxData = null;
+ IChecksum md5CtxData = null;
+ IChecksum ripemd160CtxData = null;
+ IChecksum sha1CtxData = null;
+ IChecksum sha256CtxData = null;
+ IChecksum sha384CtxData = null;
+ IChecksum sha512CtxData = null;
+ IChecksum ssctxData = null;
- Thread adlerThreadData = new Thread(UpdateAdler);
- Thread crc16ThreadData = new Thread(UpdateCrc16);
- Thread crc32ThreadData = new Thread(UpdateCrc32);
- Thread crc64ThreadData = new Thread(UpdateCrc64);
- Thread md5ThreadData = new Thread(UpdateMd5);
- Thread ripemd160ThreadData = new Thread(UpdateRipemd160);
- Thread sha1ThreadData = new Thread(UpdateSha1);
- Thread sha256ThreadData = new Thread(UpdateSha256);
- Thread sha384ThreadData = new Thread(UpdateSha384);
- Thread sha512ThreadData = new Thread(UpdateSha512);
- Thread spamsumThreadData = new Thread(UpdateSpamSum);
+ Thread adlerThreadData = new Thread(UpdateHash);
+ Thread crc16ThreadData = new Thread(UpdateHash);
+ Thread crc32ThreadData = new Thread(UpdateHash);
+ Thread crc64ThreadData = new Thread(UpdateHash);
+ Thread md5ThreadData = new Thread(UpdateHash);
+ Thread ripemd160ThreadData = new Thread(UpdateHash);
+ Thread sha1ThreadData = new Thread(UpdateHash);
+ Thread sha256ThreadData = new Thread(UpdateHash);
+ Thread sha384ThreadData = new Thread(UpdateHash);
+ Thread sha512ThreadData = new Thread(UpdateHash);
+ Thread spamsumThreadData = new Thread(UpdateHash);
if(enabled.HasFlag(EnableChecksum.SpamSum))
{
adler32CtxData = new Adler32Context();
- AdlerPacket adlerPktData = new AdlerPacket();
+ HashPacket adlerPktData = new HashPacket();
adler32CtxData.Init();
adlerPktData.Context = adler32CtxData;
adlerPktData.Data = data;
@@ -396,7 +396,7 @@ namespace DiscImageChef.Core
if(enabled.HasFlag(EnableChecksum.SpamSum))
{
- Crc16Packet crc16PktData = new Crc16Packet();
+ HashPacket crc16PktData = new HashPacket();
crc16CtxData = new Crc16Context();
crc16CtxData.Init();
crc16PktData.Context = crc16CtxData;
@@ -406,7 +406,7 @@ namespace DiscImageChef.Core
if(enabled.HasFlag(EnableChecksum.SpamSum))
{
- Crc32Packet crc32PktData = new Crc32Packet();
+ HashPacket crc32PktData = new HashPacket();
crc32CtxData = new Crc32Context();
crc32CtxData.Init();
crc32PktData.Context = crc32CtxData;
@@ -416,7 +416,7 @@ namespace DiscImageChef.Core
if(enabled.HasFlag(EnableChecksum.SpamSum))
{
- Crc64Packet crc64PktData = new Crc64Packet();
+ HashPacket crc64PktData = new HashPacket();
crc64CtxData = new Crc64Context();
crc64CtxData.Init();
crc64PktData.Context = crc64CtxData;
@@ -426,7 +426,7 @@ namespace DiscImageChef.Core
if(enabled.HasFlag(EnableChecksum.SpamSum))
{
- Md5Packet md5PktData = new Md5Packet();
+ HashPacket md5PktData = new HashPacket();
md5CtxData = new Md5Context();
md5CtxData.Init();
md5PktData.Context = md5CtxData;
@@ -436,7 +436,7 @@ namespace DiscImageChef.Core
if(enabled.HasFlag(EnableChecksum.SpamSum))
{
- Ripemd160Packet ripemd160PktData = new Ripemd160Packet();
+ HashPacket ripemd160PktData = new HashPacket();
ripemd160CtxData = new Ripemd160Context();
ripemd160CtxData.Init();
ripemd160PktData.Context = ripemd160CtxData;
@@ -446,7 +446,7 @@ namespace DiscImageChef.Core
if(enabled.HasFlag(EnableChecksum.SpamSum))
{
- Sha1Packet sha1PktData = new Sha1Packet();
+ HashPacket sha1PktData = new HashPacket();
sha1CtxData = new Sha1Context();
sha1CtxData.Init();
sha1PktData.Context = sha1CtxData;
@@ -456,7 +456,7 @@ namespace DiscImageChef.Core
if(enabled.HasFlag(EnableChecksum.SpamSum))
{
- Sha256Packet sha256PktData = new Sha256Packet();
+ HashPacket sha256PktData = new HashPacket();
sha256CtxData = new Sha256Context();
sha256CtxData.Init();
sha256PktData.Context = sha256CtxData;
@@ -466,7 +466,7 @@ namespace DiscImageChef.Core
if(enabled.HasFlag(EnableChecksum.SpamSum))
{
- Sha384Packet sha384PktData = new Sha384Packet();
+ HashPacket sha384PktData = new HashPacket();
sha384CtxData = new Sha384Context();
sha384CtxData.Init();
sha384PktData.Context = sha384CtxData;
@@ -476,7 +476,7 @@ namespace DiscImageChef.Core
if(enabled.HasFlag(EnableChecksum.SpamSum))
{
- Sha512Packet sha512PktData = new Sha512Packet();
+ HashPacket sha512PktData = new HashPacket();
sha512CtxData = new Sha512Context();
sha512CtxData.Init();
sha512PktData.Context = sha512CtxData;
@@ -486,7 +486,7 @@ namespace DiscImageChef.Core
if(enabled.HasFlag(EnableChecksum.SpamSum))
{
- SpamsumPacket spamsumPktData = new SpamsumPacket();
+ HashPacket spamsumPktData = new HashPacket();
ssctxData = new SpamSumContext();
ssctxData.Init();
spamsumPktData.Context = ssctxData;
@@ -571,125 +571,15 @@ namespace DiscImageChef.Core
}
#region Threading helpers
- struct AdlerPacket
+ struct HashPacket
{
- public Adler32Context Context;
+ public IChecksum Context;
public byte[] Data;
}
- struct Crc16Packet
+ static void UpdateHash(object packet)
{
- public Crc16Context Context;
- public byte[] Data;
- }
-
- struct Crc32Packet
- {
- public Crc32Context Context;
- public byte[] Data;
- }
-
- struct Crc64Packet
- {
- public Crc64Context Context;
- public byte[] Data;
- }
-
- struct Md5Packet
- {
- public Md5Context Context;
- public byte[] Data;
- }
-
- struct Ripemd160Packet
- {
- public Ripemd160Context Context;
- public byte[] Data;
- }
-
- struct Sha1Packet
- {
- public Sha1Context Context;
- public byte[] Data;
- }
-
- struct Sha256Packet
- {
- public Sha256Context Context;
- public byte[] Data;
- }
-
- struct Sha384Packet
- {
- public Sha384Context Context;
- public byte[] Data;
- }
-
- struct Sha512Packet
- {
- public Sha512Context Context;
- public byte[] Data;
- }
-
- struct SpamsumPacket
- {
- public SpamSumContext Context;
- public byte[] Data;
- }
-
- static void UpdateAdler(object packet)
- {
- ((AdlerPacket)packet).Context.Update(((AdlerPacket)packet).Data);
- }
-
- static void UpdateCrc16(object packet)
- {
- ((Crc16Packet)packet).Context.Update(((Crc16Packet)packet).Data);
- }
-
- static void UpdateCrc32(object packet)
- {
- ((Crc32Packet)packet).Context.Update(((Crc32Packet)packet).Data);
- }
-
- static void UpdateCrc64(object packet)
- {
- ((Crc64Packet)packet).Context.Update(((Crc64Packet)packet).Data);
- }
-
- static void UpdateMd5(object packet)
- {
- ((Md5Packet)packet).Context.Update(((Md5Packet)packet).Data);
- }
-
- static void UpdateRipemd160(object packet)
- {
- ((Ripemd160Packet)packet).Context.Update(((Ripemd160Packet)packet).Data);
- }
-
- static void UpdateSha1(object packet)
- {
- ((Sha1Packet)packet).Context.Update(((Sha1Packet)packet).Data);
- }
-
- static void UpdateSha256(object packet)
- {
- ((Sha256Packet)packet).Context.Update(((Sha256Packet)packet).Data);
- }
-
- static void UpdateSha384(object packet)
- {
- ((Sha384Packet)packet).Context.Update(((Sha384Packet)packet).Data);
- }
-
- static void UpdateSha512(object packet)
- {
- ((Sha512Packet)packet).Context.Update(((Sha512Packet)packet).Data);
- }
-
- static void UpdateSpamSum(object packet)
- {
- ((SpamsumPacket)packet).Context.Update(((SpamsumPacket)packet).Data);
+ ((HashPacket)packet).Context.Update(((HashPacket)packet).Data);
}
#endregion Threading helpers
}
diff --git a/DiscImageChef.Tests/Checksums/Adler32.cs b/DiscImageChef.Tests/Checksums/Adler32.cs
index 9fa85ffe..88101d15 100644
--- a/DiscImageChef.Tests/Checksums/Adler32.cs
+++ b/DiscImageChef.Tests/Checksums/Adler32.cs
@@ -67,7 +67,7 @@ namespace DiscImageChef.Tests.Checksums
fs.Read(data, 0, 1048576);
fs.Close();
fs.Dispose();
- Adler32Context ctx = new Adler32Context();
+ IChecksum ctx = new Adler32Context();
ctx.Init();
ctx.Update(data);
byte[] result = ctx.Final();
@@ -103,7 +103,7 @@ namespace DiscImageChef.Tests.Checksums
fs.Read(data, 0, 1048576);
fs.Close();
fs.Dispose();
- Adler32Context ctx = new Adler32Context();
+ IChecksum ctx = new Adler32Context();
ctx.Init();
ctx.Update(data);
byte[] result = ctx.Final();
diff --git a/DiscImageChef.Tests/Checksums/CRC16.cs b/DiscImageChef.Tests/Checksums/CRC16.cs
index 9a535a7f..a7a1bda2 100644
--- a/DiscImageChef.Tests/Checksums/CRC16.cs
+++ b/DiscImageChef.Tests/Checksums/CRC16.cs
@@ -67,7 +67,7 @@ namespace DiscImageChef.Tests.Checksums
fs.Read(data, 0, 1048576);
fs.Close();
fs.Dispose();
- Crc16Context ctx = new Crc16Context();
+ IChecksum ctx = new Crc16Context();
ctx.Init();
ctx.Update(data);
byte[] result = ctx.Final();
@@ -103,7 +103,7 @@ namespace DiscImageChef.Tests.Checksums
fs.Read(data, 0, 1048576);
fs.Close();
fs.Dispose();
- Crc16Context ctx = new Crc16Context();
+ IChecksum ctx = new Crc16Context();
ctx.Init();
ctx.Update(data);
byte[] result = ctx.Final();
diff --git a/DiscImageChef.Tests/Checksums/CRC32.cs b/DiscImageChef.Tests/Checksums/CRC32.cs
index 9c590de6..6c11746c 100644
--- a/DiscImageChef.Tests/Checksums/CRC32.cs
+++ b/DiscImageChef.Tests/Checksums/CRC32.cs
@@ -67,7 +67,7 @@ namespace DiscImageChef.Tests.Checksums
fs.Read(data, 0, 1048576);
fs.Close();
fs.Dispose();
- Crc32Context ctx = new Crc32Context();
+ IChecksum ctx = new Crc32Context();
ctx.Init();
ctx.Update(data);
byte[] result = ctx.Final();
@@ -103,7 +103,7 @@ namespace DiscImageChef.Tests.Checksums
fs.Read(data, 0, 1048576);
fs.Close();
fs.Dispose();
- Crc32Context ctx = new Crc32Context();
+ IChecksum ctx = new Crc32Context();
ctx.Init();
ctx.Update(data);
byte[] result = ctx.Final();
diff --git a/DiscImageChef.Tests/Checksums/CRC64.cs b/DiscImageChef.Tests/Checksums/CRC64.cs
index 925da823..4c4aab1d 100644
--- a/DiscImageChef.Tests/Checksums/CRC64.cs
+++ b/DiscImageChef.Tests/Checksums/CRC64.cs
@@ -67,7 +67,7 @@ namespace DiscImageChef.Tests.Checksums
fs.Read(data, 0, 1048576);
fs.Close();
fs.Dispose();
- Crc64Context ctx = new Crc64Context();
+ IChecksum ctx = new Crc64Context();
ctx.Init();
ctx.Update(data);
byte[] result = ctx.Final();
@@ -103,7 +103,7 @@ namespace DiscImageChef.Tests.Checksums
fs.Read(data, 0, 1048576);
fs.Close();
fs.Dispose();
- Crc64Context ctx = new Crc64Context();
+ IChecksum ctx = new Crc64Context();
ctx.Init();
ctx.Update(data);
byte[] result = ctx.Final();
diff --git a/DiscImageChef.Tests/Checksums/MD5.cs b/DiscImageChef.Tests/Checksums/MD5.cs
index 97065b9d..ba9bd6f0 100644
--- a/DiscImageChef.Tests/Checksums/MD5.cs
+++ b/DiscImageChef.Tests/Checksums/MD5.cs
@@ -73,7 +73,7 @@ namespace DiscImageChef.Tests.Checksums
fs.Read(data, 0, 1048576);
fs.Close();
fs.Dispose();
- Md5Context ctx = new Md5Context();
+ IChecksum ctx = new Md5Context();
ctx.Init();
ctx.Update(data);
byte[] result = ctx.Final();
@@ -113,7 +113,7 @@ namespace DiscImageChef.Tests.Checksums
fs.Read(data, 0, 1048576);
fs.Close();
fs.Dispose();
- Md5Context ctx = new Md5Context();
+ IChecksum ctx = new Md5Context();
ctx.Init();
ctx.Update(data);
byte[] result = ctx.Final();
diff --git a/DiscImageChef.Tests/Checksums/RIPEMD160.cs b/DiscImageChef.Tests/Checksums/RIPEMD160.cs
index e93f7b00..018d645a 100644
--- a/DiscImageChef.Tests/Checksums/RIPEMD160.cs
+++ b/DiscImageChef.Tests/Checksums/RIPEMD160.cs
@@ -79,7 +79,7 @@ namespace DiscImageChef.Tests.Checksums
fs.Read(data, 0, 1048576);
fs.Close();
fs.Dispose();
- Ripemd160Context ctx = new Ripemd160Context();
+ IChecksum ctx = new Ripemd160Context();
ctx.Init();
ctx.Update(data);
byte[] result = ctx.Final();
@@ -119,7 +119,7 @@ namespace DiscImageChef.Tests.Checksums
fs.Read(data, 0, 1048576);
fs.Close();
fs.Dispose();
- Ripemd160Context ctx = new Ripemd160Context();
+ IChecksum ctx = new Ripemd160Context();
ctx.Init();
ctx.Update(data);
byte[] result = ctx.Final();
diff --git a/DiscImageChef.Tests/Checksums/SHA1.cs b/DiscImageChef.Tests/Checksums/SHA1.cs
index 1bd103d1..8f984261 100644
--- a/DiscImageChef.Tests/Checksums/SHA1.cs
+++ b/DiscImageChef.Tests/Checksums/SHA1.cs
@@ -79,7 +79,7 @@ namespace DiscImageChef.Tests.Checksums
fs.Read(data, 0, 1048576);
fs.Close();
fs.Dispose();
- Sha1Context ctx = new Sha1Context();
+ IChecksum ctx = new Sha1Context();
ctx.Init();
ctx.Update(data);
byte[] result = ctx.Final();
@@ -119,7 +119,7 @@ namespace DiscImageChef.Tests.Checksums
fs.Read(data, 0, 1048576);
fs.Close();
fs.Dispose();
- Sha1Context ctx = new Sha1Context();
+ IChecksum ctx = new Sha1Context();
ctx.Init();
ctx.Update(data);
byte[] result = ctx.Final();
diff --git a/DiscImageChef.Tests/Checksums/SHA256.cs b/DiscImageChef.Tests/Checksums/SHA256.cs
index 6c75ff53..648e5203 100644
--- a/DiscImageChef.Tests/Checksums/SHA256.cs
+++ b/DiscImageChef.Tests/Checksums/SHA256.cs
@@ -79,7 +79,7 @@ namespace DiscImageChef.Tests.Checksums
fs.Read(data, 0, 1048576);
fs.Close();
fs.Dispose();
- Sha256Context ctx = new Sha256Context();
+ IChecksum ctx = new Sha256Context();
ctx.Init();
ctx.Update(data);
byte[] result = ctx.Final();
@@ -119,7 +119,7 @@ namespace DiscImageChef.Tests.Checksums
fs.Read(data, 0, 1048576);
fs.Close();
fs.Dispose();
- Sha256Context ctx = new Sha256Context();
+ IChecksum ctx = new Sha256Context();
ctx.Init();
ctx.Update(data);
byte[] result = ctx.Final();
diff --git a/DiscImageChef.Tests/Checksums/SHA384.cs b/DiscImageChef.Tests/Checksums/SHA384.cs
index 35d4c360..c2fbda41 100644
--- a/DiscImageChef.Tests/Checksums/SHA384.cs
+++ b/DiscImageChef.Tests/Checksums/SHA384.cs
@@ -81,7 +81,7 @@ namespace DiscImageChef.Tests.Checksums
fs.Read(data, 0, 1048576);
fs.Close();
fs.Dispose();
- Sha384Context ctx = new Sha384Context();
+ IChecksum ctx = new Sha384Context();
ctx.Init();
ctx.Update(data);
byte[] result = ctx.Final();
@@ -121,7 +121,7 @@ namespace DiscImageChef.Tests.Checksums
fs.Read(data, 0, 1048576);
fs.Close();
fs.Dispose();
- Sha384Context ctx = new Sha384Context();
+ IChecksum ctx = new Sha384Context();
ctx.Init();
ctx.Update(data);
byte[] result = ctx.Final();
diff --git a/DiscImageChef.Tests/Checksums/SHA512.cs b/DiscImageChef.Tests/Checksums/SHA512.cs
index a6c3839f..835c5501 100644
--- a/DiscImageChef.Tests/Checksums/SHA512.cs
+++ b/DiscImageChef.Tests/Checksums/SHA512.cs
@@ -83,7 +83,7 @@ namespace DiscImageChef.Tests.Checksums
fs.Read(data, 0, 1048576);
fs.Close();
fs.Dispose();
- Sha512Context ctx = new Sha512Context();
+ IChecksum ctx = new Sha512Context();
ctx.Init();
ctx.Update(data);
byte[] result = ctx.Final();
@@ -123,7 +123,7 @@ namespace DiscImageChef.Tests.Checksums
fs.Read(data, 0, 1048576);
fs.Close();
fs.Dispose();
- Sha512Context ctx = new Sha512Context();
+ IChecksum ctx = new Sha512Context();
ctx.Init();
ctx.Update(data);
byte[] result = ctx.Final();
diff --git a/DiscImageChef.Tests/Checksums/SpamSum.cs b/DiscImageChef.Tests/Checksums/SpamSum.cs
index bc8097bf..eb8ec9bd 100644
--- a/DiscImageChef.Tests/Checksums/SpamSum.cs
+++ b/DiscImageChef.Tests/Checksums/SpamSum.cs
@@ -60,7 +60,7 @@ namespace DiscImageChef.Tests.Checksums
fs.Read(data, 0, 1048576);
fs.Close();
fs.Dispose();
- SpamSumContext ctx = new SpamSumContext();
+ IChecksum ctx = new SpamSumContext();
ctx.Init();
ctx.Update(data);
string result = ctx.End();
@@ -89,7 +89,7 @@ namespace DiscImageChef.Tests.Checksums
fs.Read(data, 0, 1048576);
fs.Close();
fs.Dispose();
- SpamSumContext ctx = new SpamSumContext();
+ IChecksum ctx = new SpamSumContext();
ctx.Init();
ctx.Update(data);
string result = ctx.End();