Refactor and code cleanup.

This commit is contained in:
2016-07-28 22:25:26 +01:00
parent c93d469da9
commit a63ba13b6b
199 changed files with 3614 additions and 3744 deletions

View File

@@ -38,8 +38,8 @@ namespace DiscImageChef.Checksums
{
public class Adler32Context
{
UInt16 sum1, sum2;
const UInt16 AdlerModule = 65521;
ushort sum1, sum2;
const ushort AdlerModule = 65521;
/// <summary>
/// Initializes the Adler-32 sums
@@ -78,7 +78,7 @@ namespace DiscImageChef.Checksums
/// </summary>
public byte[] Final()
{
UInt32 finalSum = (uint)((sum2 << 16) | sum1);
uint finalSum = (uint)((sum2 << 16) | sum1);
return BigEndianBitConverter.GetBytes(finalSum);
}
@@ -87,7 +87,7 @@ namespace DiscImageChef.Checksums
/// </summary>
public string End()
{
UInt32 finalSum = (uint)((sum2 << 16) | sum1);
uint finalSum = (uint)((sum2 << 16) | sum1);
StringBuilder adlerOutput = new StringBuilder();
for(int i = 0; i < BigEndianBitConverter.GetBytes(finalSum).Length; i++)
@@ -117,8 +117,8 @@ namespace DiscImageChef.Checksums
public static string File(string filename, out byte[] hash)
{
FileStream fileStream = new FileStream(filename, FileMode.Open);
UInt16 localSum1, localSum2;
UInt32 finalSum;
ushort localSum1, localSum2;
uint finalSum;
localSum1 = 1;
localSum2 = 0;
@@ -148,8 +148,8 @@ namespace DiscImageChef.Checksums
/// <param name="hash">Byte array of the hash value.</param>
public static string Data(byte[] data, uint len, out byte[] hash)
{
UInt16 localSum1, localSum2;
UInt32 finalSum;
ushort localSum1, localSum2;
uint finalSum;
localSum1 = 1;
localSum2 = 0;

View File

@@ -40,8 +40,8 @@ namespace DiscImageChef.Checksums
{
static byte[] ECC_F_Table;
static byte[] ECC_B_Table;
const UInt32 CDCRC32Poly = 0xD8018001;
const UInt32 CDCRC32Seed = 0x00000000;
const uint CDCRC32Poly = 0xD8018001;
const uint CDCRC32Seed = 0x00000000;
public static bool? CheckCDSector(byte[] buffer)
{
@@ -84,9 +84,9 @@ namespace DiscImageChef.Checksums
ECC_F_Table = new byte[256];
ECC_B_Table = new byte[256];
for(UInt32 i = 0; i < 256; i++)
for(uint i = 0; i < 256; i++)
{
UInt32 j = (uint)((i << 1) ^ ((i & 0x80) == 0x80 ? 0x11D : 0));
uint j = (uint)((i << 1) ^ ((i & 0x80) == 0x80 ? 0x11D : 0));
ECC_F_Table[i] = (byte)j;
ECC_B_Table[i ^ j] = (byte)i;
}
@@ -95,21 +95,21 @@ namespace DiscImageChef.Checksums
static bool CheckECC(
byte[] address,
byte[] data,
UInt32 major_count,
UInt32 minor_count,
UInt32 major_mult,
UInt32 minor_inc,
uint major_count,
uint minor_count,
uint major_mult,
uint minor_inc,
byte[] ecc
)
{
UInt32 size = major_count * minor_count;
UInt32 major;
uint size = major_count * minor_count;
uint major;
for(major = 0; major < major_count; major++)
{
UInt32 index = (major >> 1) * major_mult + (major & 1);
uint index = (major >> 1) * major_mult + (major & 1);
byte ecc_a = 0;
byte ecc_b = 0;
UInt32 minor;
uint minor;
for(minor = 0; minor < minor_count; minor++)
{
byte temp;
@@ -215,11 +215,11 @@ namespace DiscImageChef.Checksums
return false;
byte[] SectorForCheck = new byte[0x810];
UInt32 StoredEDC = BitConverter.ToUInt32(channel, 0x810);
uint StoredEDC = BitConverter.ToUInt32(channel, 0x810);
byte[] CalculatedEDCBytes;
Array.Copy(channel, 0, SectorForCheck, 0, 0x810);
CRC32Context.Data(SectorForCheck, 0x810, out CalculatedEDCBytes, CDCRC32Poly, CDCRC32Seed);
UInt32 CalculatedEDC = BitConverter.ToUInt32(CalculatedEDCBytes, 0);
uint CalculatedEDC = BitConverter.ToUInt32(CalculatedEDCBytes, 0);
if(CalculatedEDC != StoredEDC)
{
@@ -241,11 +241,11 @@ namespace DiscImageChef.Checksums
}
byte[] SectorForCheck = new byte[0x91C];
UInt32 StoredEDC = BitConverter.ToUInt32(channel, 0x92C);
uint StoredEDC = BitConverter.ToUInt32(channel, 0x92C);
byte[] CalculatedEDCBytes;
Array.Copy(channel, 0x10, SectorForCheck, 0, 0x91C);
CRC32Context.Data(SectorForCheck, 0x91C, out CalculatedEDCBytes, CDCRC32Poly, CDCRC32Seed);
UInt32 CalculatedEDC = BitConverter.ToUInt32(CalculatedEDCBytes, 0);
uint CalculatedEDC = BitConverter.ToUInt32(CalculatedEDCBytes, 0);
if(CalculatedEDC != StoredEDC && StoredEDC != 0x00000000)
{
@@ -287,11 +287,11 @@ namespace DiscImageChef.Checksums
return false;
byte[] SectorForCheck = new byte[0x808];
UInt32 StoredEDC = BitConverter.ToUInt32(channel, 0x818);
uint StoredEDC = BitConverter.ToUInt32(channel, 0x818);
byte[] CalculatedEDCBytes;
Array.Copy(channel, 0x10, SectorForCheck, 0, 0x808);
CRC32Context.Data(SectorForCheck, 0x808, out CalculatedEDCBytes, CDCRC32Poly, CDCRC32Seed);
UInt32 CalculatedEDC = BitConverter.ToUInt32(CalculatedEDCBytes, 0);
uint CalculatedEDC = BitConverter.ToUInt32(CalculatedEDCBytes, 0);
if(CalculatedEDC != StoredEDC)
{
@@ -464,10 +464,10 @@ namespace DiscImageChef.Checksums
BigEndianBitConverter.IsLittleEndian = true;
UInt16 QSubChannelCRC = BigEndianBitConverter.ToUInt16(QSubChannel, 10);
ushort QSubChannelCRC = BigEndianBitConverter.ToUInt16(QSubChannel, 10);
byte[] QSubChannelForCRC = new byte[10];
Array.Copy(QSubChannel, 0, QSubChannelForCRC, 0, 10);
UInt16 CalculatedQCRC = CalculateCCITT_CRC16(QSubChannelForCRC);
ushort CalculatedQCRC = CalculateCCITT_CRC16(QSubChannelForCRC);
if(QSubChannelCRC != CalculatedQCRC)
{
@@ -477,10 +477,10 @@ namespace DiscImageChef.Checksums
if((CDTextPack1[0] & 0x80) == 0x80)
{
UInt16 CDTextPack1CRC = BigEndianBitConverter.ToUInt16(CDTextPack1, 16);
ushort CDTextPack1CRC = BigEndianBitConverter.ToUInt16(CDTextPack1, 16);
byte[] CDTextPack1ForCRC = new byte[16];
Array.Copy(CDTextPack1, 0, CDTextPack1ForCRC, 0, 16);
UInt16 CalculatedCDTP1CRC = CalculateCCITT_CRC16(CDTextPack1ForCRC);
ushort CalculatedCDTP1CRC = CalculateCCITT_CRC16(CDTextPack1ForCRC);
if(CDTextPack1CRC != CalculatedCDTP1CRC && CDTextPack1CRC != 0)
{
@@ -491,10 +491,10 @@ namespace DiscImageChef.Checksums
if((CDTextPack2[0] & 0x80) == 0x80)
{
UInt16 CDTextPack2CRC = BigEndianBitConverter.ToUInt16(CDTextPack2, 16);
ushort CDTextPack2CRC = BigEndianBitConverter.ToUInt16(CDTextPack2, 16);
byte[] CDTextPack2ForCRC = new byte[16];
Array.Copy(CDTextPack2, 0, CDTextPack2ForCRC, 0, 16);
UInt16 CalculatedCDTP2CRC = CalculateCCITT_CRC16(CDTextPack2ForCRC);
ushort CalculatedCDTP2CRC = CalculateCCITT_CRC16(CDTextPack2ForCRC);
DicConsole.DebugWriteLine("CD checksums", "Cyclic CDTP2 0x{0:X4}, Calc CDTP2 0x{1:X4}", CDTextPack2CRC, CalculatedCDTP2CRC);
if(CDTextPack2CRC != CalculatedCDTP2CRC && CDTextPack2CRC != 0)
@@ -506,10 +506,10 @@ namespace DiscImageChef.Checksums
if((CDTextPack3[0] & 0x80) == 0x80)
{
UInt16 CDTextPack3CRC = BigEndianBitConverter.ToUInt16(CDTextPack3, 16);
ushort CDTextPack3CRC = BigEndianBitConverter.ToUInt16(CDTextPack3, 16);
byte[] CDTextPack3ForCRC = new byte[16];
Array.Copy(CDTextPack3, 0, CDTextPack3ForCRC, 0, 16);
UInt16 CalculatedCDTP3CRC = CalculateCCITT_CRC16(CDTextPack3ForCRC);
ushort CalculatedCDTP3CRC = CalculateCCITT_CRC16(CDTextPack3ForCRC);
DicConsole.DebugWriteLine("CD checksums", "Cyclic CDTP3 0x{0:X4}, Calc CDTP3 0x{1:X4}", CDTextPack3CRC, CalculatedCDTP3CRC);
if(CDTextPack3CRC != CalculatedCDTP3CRC && CDTextPack3CRC != 0)
@@ -521,10 +521,10 @@ namespace DiscImageChef.Checksums
if((CDTextPack4[0] & 0x80) == 0x80)
{
UInt16 CDTextPack4CRC = BigEndianBitConverter.ToUInt16(CDTextPack4, 16);
ushort CDTextPack4CRC = BigEndianBitConverter.ToUInt16(CDTextPack4, 16);
byte[] CDTextPack4ForCRC = new byte[16];
Array.Copy(CDTextPack4, 0, CDTextPack4ForCRC, 0, 16);
UInt16 CalculatedCDTP4CRC = CalculateCCITT_CRC16(CDTextPack4ForCRC);
ushort CalculatedCDTP4CRC = CalculateCCITT_CRC16(CDTextPack4ForCRC);
DicConsole.DebugWriteLine("CD checksums", "Cyclic CDTP4 0x{0:X4}, Calc CDTP4 0x{1:X4}", CDTextPack4CRC, CalculatedCDTP4CRC);
if(CDTextPack4CRC != CalculatedCDTP4CRC && CDTextPack4CRC != 0)
@@ -570,12 +570,12 @@ namespace DiscImageChef.Checksums
0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9,
0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1,
0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,
0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0,
0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0
};
static ushort CalculateCCITT_CRC16(byte[] buffer)
{
UInt16 CRC16 = 0;
ushort CRC16 = 0;
for(int i = 0; i < buffer.Length; i++)
{
CRC16 = (ushort)(CCITT_CRC16Table[(CRC16 >> 8) ^ buffer[i]] ^ (CRC16 << 8));

View File

@@ -41,11 +41,11 @@ namespace DiscImageChef.Checksums
/// </summary>
public class CRC16Context
{
const UInt16 crc16Poly = 0xA001;
const UInt16 crc16Seed = 0x0000;
const ushort crc16Poly = 0xA001;
const ushort crc16Seed = 0x0000;
UInt16[] table;
UInt16 hashInt;
ushort[] table;
ushort hashInt;
/// <summary>
/// Initializes the CRC16 table and seed
@@ -54,10 +54,10 @@ namespace DiscImageChef.Checksums
{
hashInt = crc16Seed;
table = new UInt16[256];
table = new ushort[256];
for(int i = 0; i < 256; i++)
{
UInt16 entry = (UInt16)i;
ushort entry = (ushort)i;
for(int j = 0; j < 8; j++)
if((entry & 1) == 1)
entry = (ushort)((entry >> 1) ^ crc16Poly);
@@ -133,15 +133,15 @@ namespace DiscImageChef.Checksums
public static string File(string filename, out byte[] hash)
{
FileStream fileStream = new FileStream(filename, FileMode.Open);
UInt16[] localTable;
UInt16 localhashInt;
ushort[] localTable;
ushort localhashInt;
localhashInt = crc16Seed;
localTable = new UInt16[256];
localTable = new ushort[256];
for(int i = 0; i < 256; i++)
{
UInt16 entry = (UInt16)i;
ushort entry = (ushort)i;
for(int j = 0; j < 8; j++)
if((entry & 1) == 1)
entry = (ushort)((entry >> 1) ^ crc16Poly);
@@ -185,17 +185,17 @@ namespace DiscImageChef.Checksums
/// <param name="hash">Byte array of the hash value.</param>
/// <param name="polynomial">CRC polynomial</param>
/// <param name="seed">CRC seed</param>
public static string Data(byte[] data, uint len, out byte[] hash, UInt16 polynomial, UInt16 seed)
public static string Data(byte[] data, uint len, out byte[] hash, ushort polynomial, ushort seed)
{
UInt16[] localTable;
UInt16 localhashInt;
ushort[] localTable;
ushort localhashInt;
localhashInt = seed;
localTable = new UInt16[256];
localTable = new ushort[256];
for(int i = 0; i < 256; i++)
{
UInt16 entry = (UInt16)i;
ushort entry = (ushort)i;
for(int j = 0; j < 8; j++)
if((entry & 1) == 1)
entry = (ushort)((entry >> 1) ^ polynomial);

View File

@@ -41,11 +41,11 @@ namespace DiscImageChef.Checksums
/// </summary>
public class CRC32Context
{
const UInt32 crc32Poly = 0xEDB88320;
const UInt32 crc32Seed = 0xFFFFFFFF;
const uint crc32Poly = 0xEDB88320;
const uint crc32Seed = 0xFFFFFFFF;
UInt32[] table;
UInt32 hashInt;
uint[] table;
uint hashInt;
/// <summary>
/// Initializes the CRC32 table and seed
@@ -54,10 +54,10 @@ namespace DiscImageChef.Checksums
{
hashInt = crc32Seed;
table = new UInt32[256];
table = new uint[256];
for(int i = 0; i < 256; i++)
{
UInt32 entry = (UInt32)i;
uint entry = (uint)i;
for(int j = 0; j < 8; j++)
if((entry & 1) == 1)
entry = (entry >> 1) ^ crc32Poly;
@@ -133,15 +133,15 @@ namespace DiscImageChef.Checksums
public static string File(string filename, out byte[] hash)
{
FileStream fileStream = new FileStream(filename, FileMode.Open);
UInt32[] localTable;
UInt32 localhashInt;
uint[] localTable;
uint localhashInt;
localhashInt = crc32Seed;
localTable = new UInt32[256];
localTable = new uint[256];
for(int i = 0; i < 256; i++)
{
UInt32 entry = (UInt32)i;
uint entry = (uint)i;
for(int j = 0; j < 8; j++)
if((entry & 1) == 1)
entry = (entry >> 1) ^ crc32Poly;
@@ -185,17 +185,17 @@ namespace DiscImageChef.Checksums
/// <param name="hash">Byte array of the hash value.</param>
/// <param name="polynomial">CRC polynomial</param>
/// <param name="seed">CRC seed</param>
public static string Data(byte[] data, uint len, out byte[] hash, UInt32 polynomial, UInt32 seed)
public static string Data(byte[] data, uint len, out byte[] hash, uint polynomial, uint seed)
{
UInt32[] localTable;
UInt32 localhashInt;
uint[] localTable;
uint localhashInt;
localhashInt = seed;
localTable = new UInt32[256];
localTable = new uint[256];
for(int i = 0; i < 256; i++)
{
UInt32 entry = (UInt32)i;
uint entry = (uint)i;
for(int j = 0; j < 8; j++)
if((entry & 1) == 1)
entry = (entry >> 1) ^ polynomial;

View File

@@ -41,11 +41,11 @@ namespace DiscImageChef.Checksums
/// </summary>
public class CRC64Context
{
const UInt64 crc64Poly = 0xC96C5795D7870F42;
const UInt64 crc64Seed = 0xFFFFFFFFFFFFFFFF;
const ulong crc64Poly = 0xC96C5795D7870F42;
const ulong crc64Seed = 0xFFFFFFFFFFFFFFFF;
UInt64[] table;
UInt64 hashInt;
ulong[] table;
ulong hashInt;
/// <summary>
/// Initializes the CRC64 table and seed
@@ -54,10 +54,10 @@ namespace DiscImageChef.Checksums
{
hashInt = crc64Seed;
table = new UInt64[256];
table = new ulong[256];
for(int i = 0; i < 256; i++)
{
UInt64 entry = (UInt64)i;
ulong entry = (ulong)i;
for(int j = 0; j < 8; j++)
if((entry & 1) == 1)
entry = (entry >> 1) ^ crc64Poly;
@@ -133,15 +133,15 @@ namespace DiscImageChef.Checksums
public static string File(string filename, out byte[] hash)
{
FileStream fileStream = new FileStream(filename, FileMode.Open);
UInt64[] localTable;
UInt64 localhashInt;
ulong[] localTable;
ulong localhashInt;
localhashInt = crc64Seed;
localTable = new UInt64[256];
localTable = new ulong[256];
for(int i = 0; i < 256; i++)
{
UInt64 entry = (UInt64)i;
ulong entry = (ulong)i;
for(int j = 0; j < 8; j++)
if((entry & 1) == 1)
entry = (entry >> 1) ^ crc64Poly;
@@ -151,7 +151,7 @@ namespace DiscImageChef.Checksums
}
for(int i = 0; i < fileStream.Length; i++)
localhashInt = (localhashInt >> 8) ^ localTable[(ulong)fileStream.ReadByte() ^ localhashInt & (ulong)0xff];
localhashInt = (localhashInt >> 8) ^ localTable[(ulong)fileStream.ReadByte() ^ localhashInt & 0xffL];
BigEndianBitConverter.IsLittleEndian = BigEndianBitConverter.IsLittleEndian;
hash = BitConverter.GetBytes(localhashInt);
@@ -185,17 +185,17 @@ namespace DiscImageChef.Checksums
/// <param name="hash">Byte array of the hash value.</param>
/// <param name="polynomial">CRC polynomial</param>
/// <param name="seed">CRC seed</param>
public static string Data(byte[] data, uint len, out byte[] hash, UInt64 polynomial, UInt64 seed)
public static string Data(byte[] data, uint len, out byte[] hash, ulong polynomial, ulong seed)
{
UInt64[] localTable;
UInt64 localhashInt;
ulong[] localTable;
ulong localhashInt;
localhashInt = seed;
localTable = new UInt64[256];
localTable = new ulong[256];
for(int i = 0; i < 256; i++)
{
UInt64 entry = (UInt64)i;
ulong entry = (ulong)i;
for(int j = 0; j < 8; j++)
if((entry & 1) == 1)
entry = (entry >> 1) ^ polynomial;

View File

@@ -1,3 +1,13 @@
2016-07-28 Natalia Portillo <claunia@claunia.com>
* CDChecksums.cs:
* ReedSolomon.cs:
* CRC16Context.cs:
* CRC32Context.cs:
* CRC64Context.cs:
* Adler32Context.cs:
* SpamSumContext.cs: Refactor and code cleanup.
2015-11-30 Natalia Portillo <claunia@claunia.com>
* FletcherContext.cs:

View File

@@ -139,7 +139,7 @@ namespace DiscImageChef.Checksums
Pp = new[] { 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1 };
break;
default:
throw new ArgumentOutOfRangeException("m", "m must be between 2 and 16 inclusive");
throw new ArgumentOutOfRangeException(nameof(m), "m must be between 2 and 16 inclusive");
}
MM = m;

View File

@@ -49,13 +49,13 @@ namespace DiscImageChef.Checksums
/// </summary>
public class SpamSumContext
{
const UInt32 ROLLING_WINDOW = 7;
const UInt32 MIN_BLOCKSIZE = 3;
const UInt32 HASH_PRIME = 0x01000193;
const UInt32 HASH_INIT = 0x28021967;
const UInt32 NUM_BLOCKHASHES = 31;
const UInt32 SPAMSUM_LENGTH = 64;
const UInt32 FUZZY_MAX_RESULT = (2 * SPAMSUM_LENGTH + 20);
const uint ROLLING_WINDOW = 7;
const uint MIN_BLOCKSIZE = 3;
const uint HASH_PRIME = 0x01000193;
const uint HASH_INIT = 0x28021967;
const uint NUM_BLOCKHASHES = 31;
const uint SPAMSUM_LENGTH = 64;
const uint FUZZY_MAX_RESULT = (2 * SPAMSUM_LENGTH + 20);
//"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
readonly byte[] b64 =
{0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
@@ -72,10 +72,10 @@ namespace DiscImageChef.Checksums
{
public byte[] window;
// ROLLING_WINDOW
public UInt32 h1;
public UInt32 h2;
public UInt32 h3;
public UInt32 n;
public uint h1;
public uint h2;
public uint h3;
public uint n;
}
/* A blockhash contains a signature state for a specific (implicit) blocksize.
@@ -85,21 +85,21 @@ namespace DiscImageChef.Checksums
* output hash to stay compatible with ssdeep output. */
struct blockhash_context
{
public UInt32 h;
public UInt32 halfh;
public uint h;
public uint halfh;
public byte[] digest;
// SPAMSUM_LENGTH
public byte halfdigest;
public UInt32 dlen;
public uint dlen;
}
struct fuzzy_state
{
public UInt32 bhstart;
public UInt32 bhend;
public uint bhstart;
public uint bhend;
public blockhash_context[] bh;
//NUM_BLOCKHASHES
public UInt64 total_size;
public ulong total_size;
public roll_state roll;
}
@@ -145,10 +145,10 @@ namespace DiscImageChef.Checksums
void roll_hash(byte c)
{
self.roll.h2 -= self.roll.h1;
self.roll.h2 += ROLLING_WINDOW * (UInt32)c;
self.roll.h2 += ROLLING_WINDOW * c;
self.roll.h1 += (UInt32)c;
self.roll.h1 -= (UInt32)self.roll.window[self.roll.n % ROLLING_WINDOW];
self.roll.h1 += c;
self.roll.h1 -= self.roll.window[self.roll.n % ROLLING_WINDOW];
self.roll.window[self.roll.n % ROLLING_WINDOW] = c;
self.roll.n++;
@@ -160,18 +160,18 @@ namespace DiscImageChef.Checksums
self.roll.h3 ^= c;
}
UInt32 roll_sum()
uint roll_sum()
{
return self.roll.h1 + self.roll.h2 + self.roll.h3;
}
/* A simple non-rolling hash, based on the FNV hash. */
static UInt32 sum_hash(byte c, UInt32 h)
static uint sum_hash(byte c, uint h)
{
return (h * HASH_PRIME) ^ c;
}
static UInt32 SSDEEP_BS(UInt32 index)
static uint SSDEEP_BS(uint index)
{
return (MIN_BLOCKSIZE << (int)index);
}
@@ -204,7 +204,7 @@ namespace DiscImageChef.Checksums
if(self.bhend - self.bhstart < 2)
/* Need at least two working hashes. */
return;
if((UInt64)SSDEEP_BS(self.bhstart) * SPAMSUM_LENGTH >=
if((ulong)SSDEEP_BS(self.bhstart) * SPAMSUM_LENGTH >=
self.total_size)
/* Initial blocksize estimate would select this or a smaller
* blocksize. */
@@ -219,8 +219,8 @@ namespace DiscImageChef.Checksums
void fuzzy_engine_step(byte c)
{
UInt64 h;
UInt32 i;
ulong h;
uint i;
/* At each character we update the rolling hash and the normal hashes.
* When the rolling hash hits a reset value then we emit a normal hash
* as a element of the signature and reset the normal hash. */
@@ -295,22 +295,22 @@ namespace DiscImageChef.Checksums
}
// CLAUNIA: Flags seems to never be used in ssdeep, so I just removed it for code simplicity
UInt32 fuzzy_digest(out byte[] result)
uint fuzzy_digest(out byte[] result)
{
StringBuilder sb = new StringBuilder();
UInt32 bi = self.bhstart;
UInt32 h = roll_sum();
uint bi = self.bhstart;
uint h = roll_sum();
int i, result_off;
int remain = (int)(FUZZY_MAX_RESULT - 1); /* Exclude terminating '\0'. */
result = new byte[FUZZY_MAX_RESULT];
/* Verify that our elimination was not overeager. */
if(!(bi == 0 || (UInt64)SSDEEP_BS(bi) / 2 * SPAMSUM_LENGTH < self.total_size))
if(!(bi == 0 || (ulong)SSDEEP_BS(bi) / 2 * SPAMSUM_LENGTH < self.total_size))
throw new Exception("Assertion failed");
result_off = 0;
/* Initial blocksize guess. */
while((UInt64)SSDEEP_BS(bi) * SPAMSUM_LENGTH < self.total_size)
while((ulong)SSDEEP_BS(bi) * SPAMSUM_LENGTH < self.total_size)
{
++bi;
if(bi >= NUM_BLOCKHASHES)