DOCUMENTATION: Added XML documentation to DiscImageChef.Core.

This commit is contained in:
2017-12-23 01:46:08 +00:00
parent 18ddb2b575
commit 2201d99d39
14 changed files with 83 additions and 104 deletions

View File

@@ -36,6 +36,9 @@ using System.Text;
namespace DiscImageChef.Checksums
{
/// <summary>
/// Implements the Adler-32 algorithm
/// </summary>
public class Adler32Context
{
ushort sum1, sum2;

View File

@@ -37,6 +37,9 @@ using DiscImageChef.Console;
namespace DiscImageChef.Checksums
{
/// <summary>
/// Implements ReedSolomon and CRC32 algorithms as used by CD-ROM
/// </summary>
public static class CdChecksums
{
static byte[] eccFTable;

View File

@@ -37,7 +37,7 @@ using System.Text;
namespace DiscImageChef.Checksums
{
/// <summary>
/// Provides a UNIX similar API to calculate CRC16.
/// Implements a CRC16-CCITT algorithm
/// </summary>
public class Crc16Context
{

View File

@@ -37,7 +37,7 @@ using System.Text;
namespace DiscImageChef.Checksums
{
/// <summary>
/// Provides a UNIX similar API to calculate CRC32.
/// Implements a CRC32 algorithm
/// </summary>
public class Crc32Context
{

View File

@@ -36,7 +36,7 @@ using System.Text;
namespace DiscImageChef.Checksums
{
/// <summary>
/// Provides a UNIX similar API to calculate CRC64 (ECMA).
/// Implements a CRC64 (ECMA) algorithm
/// </summary>
public class Crc64Context
{

View File

@@ -40,9 +40,9 @@ namespace DiscImageChef.Checksums
{
public class Fletcher32Context
{
UInt16 sum1, sum2;
byte oddValue;
bool inodd;
byte oddValue;
ushort sum1, sum2;
/// <summary>
/// Initializes the Fletcher32 sums
@@ -62,10 +62,8 @@ namespace DiscImageChef.Checksums
/// <param name="len">Length of buffer to hash.</param>
public void Update(byte[] data, uint len)
{
UInt16 block;
ushort block;
if(!inodd)
{
// Odd size
if(len % 2 != 0)
{
oddValue = data[len - 1];
@@ -74,8 +72,8 @@ namespace DiscImageChef.Checksums
for(int i = 0; i < len - 1; i += 2)
{
block = BigEndianBitConverter.ToUInt16(data, i);
sum1 = (UInt16)((sum1 + block) % 0xFFFF);
sum2 = (UInt16)((sum2 + sum1) % 0xFFFF);
sum1 = (ushort)((sum1 + block) % 0xFFFF);
sum2 = (ushort)((sum2 + sum1) % 0xFFFF);
}
}
else
@@ -84,9 +82,8 @@ namespace DiscImageChef.Checksums
for(int i = 0; i < len; i += 2)
{
block = BigEndianBitConverter.ToUInt16(data, i);
sum1 = (UInt16)((sum1 + block) % 0xFFFF);
sum2 = (UInt16)((sum2 + sum1) % 0xFFFF);
}
sum1 = (ushort)((sum1 + block) % 0xFFFF);
sum2 = (ushort)((sum2 + sum1) % 0xFFFF);
}
}
// Carrying odd
@@ -97,8 +94,8 @@ namespace DiscImageChef.Checksums
oddData[1] = data[0];
block = BigEndianBitConverter.ToUInt16(oddData, 0);
sum1 = (UInt16)((sum1 + block) % 0xFFFF);
sum2 = (UInt16)((sum2 + sum1) % 0xFFFF);
sum1 = (ushort)((sum1 + block) % 0xFFFF);
sum2 = (ushort)((sum2 + sum1) % 0xFFFF);
// Even size, carrying odd
if(len % 2 == 0)
@@ -109,8 +106,8 @@ namespace DiscImageChef.Checksums
for(int i = 1; i < len - 1; i += 2)
{
block = BigEndianBitConverter.ToUInt16(data, i);
sum1 = (UInt16)((sum1 + block) % 0xFFFF);
sum2 = (UInt16)((sum2 + sum1) % 0xFFFF);
sum1 = (ushort)((sum1 + block) % 0xFFFF);
sum2 = (ushort)((sum2 + sum1) % 0xFFFF);
}
}
else
@@ -119,8 +116,8 @@ namespace DiscImageChef.Checksums
for(int i = 1; i < len; i += 2)
{
block = BigEndianBitConverter.ToUInt16(data, i);
sum1 = (UInt16)((sum1 + block) % 0xFFFF);
sum2 = (UInt16)((sum2 + sum1) % 0xFFFF);
sum1 = (ushort)((sum1 + block) % 0xFFFF);
sum2 = (ushort)((sum2 + sum1) % 0xFFFF);
}
}
}
@@ -140,7 +137,7 @@ namespace DiscImageChef.Checksums
/// </summary>
public byte[] Final()
{
UInt32 finalSum = (UInt32)(sum1 + (sum2 << 16));
uint finalSum = (uint)(sum1 + (sum2 << 16));
return BigEndianBitConverter.GetBytes(finalSum);
}
@@ -149,13 +146,11 @@ namespace DiscImageChef.Checksums
/// </summary>
public string End()
{
UInt32 finalSum = (UInt32)(sum1 + (sum2 << 16));
uint finalSum = (uint)(sum1 + (sum2 << 16));
StringBuilder fletcherOutput = new StringBuilder();
for(int i = 0; i < BigEndianBitConverter.GetBytes(finalSum).Length; i++)
{
fletcherOutput.Append(BigEndianBitConverter.GetBytes(finalSum)[i].ToString("x2"));
}
return fletcherOutput.ToString();
}
@@ -166,8 +161,7 @@ namespace DiscImageChef.Checksums
/// <param name="filename">File path.</param>
public static byte[] File(string filename)
{
byte[] hash;
File(filename, out hash);
File(filename, out byte[] hash);
return hash;
}
@@ -179,24 +173,21 @@ namespace DiscImageChef.Checksums
public static string File(string filename, out byte[] hash)
{
FileStream fileStream = new FileStream(filename, FileMode.Open);
UInt16 localSum1, localSum2, block;
UInt32 finalSum;
ushort localSum1, localSum2, block;
uint finalSum;
byte[] blockBytes;
localSum1 = 0xFFFF;
localSum2 = 0xFFFF;
block = 0;
if(fileStream.Length % 2 == 0)
{
for(int i = 0; i < fileStream.Length; i += 2)
{
blockBytes = new byte[2];
fileStream.Read(blockBytes, 0, 2);
block = BigEndianBitConverter.ToUInt16(blockBytes, 0);
localSum1 = (UInt16)((localSum1 + block) % 0xFFFF);
localSum2 = (UInt16)((localSum2 + localSum1) % 0xFFFF);
}
localSum1 = (ushort)((localSum1 + block) % 0xFFFF);
localSum2 = (ushort)((localSum2 + localSum1) % 0xFFFF);
}
else
{
@@ -205,8 +196,8 @@ namespace DiscImageChef.Checksums
blockBytes = new byte[2];
fileStream.Read(blockBytes, 0, 2);
block = BigEndianBitConverter.ToUInt16(blockBytes, 0);
localSum1 = (UInt16)((localSum1 + block) % 0xFFFF);
localSum2 = (UInt16)((localSum2 + localSum1) % 0xFFFF);
localSum1 = (ushort)((localSum1 + block) % 0xFFFF);
localSum2 = (ushort)((localSum2 + localSum1) % 0xFFFF);
}
byte[] oddData = new byte[2];
@@ -214,20 +205,17 @@ namespace DiscImageChef.Checksums
oddData[1] = 0;
block = BigEndianBitConverter.ToUInt16(oddData, 0);
localSum1 = (UInt16)((localSum1 + block) % 0xFFFF);
localSum2 = (UInt16)((localSum2 + localSum1) % 0xFFFF);
localSum1 = (ushort)((localSum1 + block) % 0xFFFF);
localSum2 = (ushort)((localSum2 + localSum1) % 0xFFFF);
}
finalSum = (UInt32)(localSum1 + (localSum2 << 16));
finalSum = (uint)(localSum1 + (localSum2 << 16));
hash = BitConverter.GetBytes(finalSum);
StringBuilder fletcherOutput = new StringBuilder();
for(int i = 0; i < hash.Length; i++)
{
fletcherOutput.Append(hash[i].ToString("x2"));
}
foreach(byte h in hash) fletcherOutput.Append(h.ToString("x2"));
return fletcherOutput.ToString();
}
@@ -240,29 +228,26 @@ 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, block;
UInt32 finalSum;
ushort localSum1, localSum2, block;
uint finalSum;
localSum1 = 0xFFFF;
localSum2 = 0xFFFF;
block = 0;
if(len % 2 == 0)
{
for(int i = 0; i < len; i += 2)
{
block = BigEndianBitConverter.ToUInt16(data, i);
localSum1 = (UInt16)((localSum1 + block) % 0xFFFF);
localSum2 = (UInt16)((localSum2 + localSum1) % 0xFFFF);
}
localSum1 = (ushort)((localSum1 + block) % 0xFFFF);
localSum2 = (ushort)((localSum2 + localSum1) % 0xFFFF);
}
else
{
for(int i = 0; i < len - 1; i += 2)
{
block = BigEndianBitConverter.ToUInt16(data, i);
localSum1 = (UInt16)((localSum1 + block) % 0xFFFF);
localSum2 = (UInt16)((localSum2 + localSum1) % 0xFFFF);
localSum1 = (ushort)((localSum1 + block) % 0xFFFF);
localSum2 = (ushort)((localSum2 + localSum1) % 0xFFFF);
}
byte[] oddData = new byte[2];
@@ -270,20 +255,17 @@ namespace DiscImageChef.Checksums
oddData[1] = 0;
block = BigEndianBitConverter.ToUInt16(oddData, 0);
localSum1 = (UInt16)((localSum1 + block) % 0xFFFF);
localSum2 = (UInt16)((localSum2 + localSum1) % 0xFFFF);
localSum1 = (ushort)((localSum1 + block) % 0xFFFF);
localSum2 = (ushort)((localSum2 + localSum1) % 0xFFFF);
}
finalSum = (UInt32)(localSum1 + (localSum2 << 16));
finalSum = (uint)(localSum1 + (localSum2 << 16));
hash = BitConverter.GetBytes(finalSum);
StringBuilder fletcherOutput = new StringBuilder();
for(int i = 0; i < hash.Length; i++)
{
fletcherOutput.Append(hash[i].ToString("x2"));
}
foreach(byte h in hash) fletcherOutput.Append(h.ToString("x2"));
return fletcherOutput.ToString();
}
@@ -340,7 +322,7 @@ namespace DiscImageChef.Checksums
/// </summary>
public byte[] Final()
{
UInt16 finalSum = (UInt16)(sum1 + (sum2 << 8));
ushort finalSum = (ushort)(sum1 + (sum2 << 8));
return BigEndianBitConverter.GetBytes(finalSum);
}
@@ -349,13 +331,11 @@ namespace DiscImageChef.Checksums
/// </summary>
public string End()
{
UInt16 finalSum = (UInt16)(sum1 + (sum2 << 8));
ushort finalSum = (ushort)(sum1 + (sum2 << 8));
StringBuilder fletcherOutput = new StringBuilder();
for(int i = 0; i < BigEndianBitConverter.GetBytes(finalSum).Length; i++)
{
fletcherOutput.Append(BigEndianBitConverter.GetBytes(finalSum)[i].ToString("x2"));
}
return fletcherOutput.ToString();
}
@@ -366,8 +346,7 @@ namespace DiscImageChef.Checksums
/// <param name="filename">File path.</param>
public static byte[] File(string filename)
{
byte[] hash;
File(filename, out hash);
File(filename, out byte[] hash);
return hash;
}
@@ -380,11 +359,10 @@ namespace DiscImageChef.Checksums
{
FileStream fileStream = new FileStream(filename, FileMode.Open);
byte localSum1, localSum2, block;
UInt16 finalSum;
ushort finalSum;
localSum1 = 0xFF;
localSum2 = 0xFF;
block = 0;
for(int i = 0; i < fileStream.Length; i += 2)
{
@@ -393,16 +371,13 @@ namespace DiscImageChef.Checksums
localSum2 = (byte)((localSum2 + localSum1) % 0xFF);
}
finalSum = (UInt16)(localSum1 + (localSum2 << 8));
finalSum = (ushort)(localSum1 + (localSum2 << 8));
hash = BitConverter.GetBytes(finalSum);
StringBuilder fletcherOutput = new StringBuilder();
for(int i = 0; i < hash.Length; i++)
{
fletcherOutput.Append(hash[i].ToString("x2"));
}
foreach(byte h in hash) fletcherOutput.Append(h.ToString("x2"));
return fletcherOutput.ToString();
}
@@ -416,7 +391,7 @@ namespace DiscImageChef.Checksums
public static string Data(byte[] data, uint len, out byte[] hash)
{
byte localSum1, localSum2;
UInt16 finalSum;
ushort finalSum;
localSum1 = 0xFF;
localSum2 = 0xFF;
@@ -427,16 +402,13 @@ namespace DiscImageChef.Checksums
localSum2 = (byte)((localSum2 + localSum1) % 0xFF);
}
finalSum = (UInt16)(localSum1 + (localSum2 << 8));
finalSum = (ushort)(localSum1 + (localSum2 << 8));
hash = BitConverter.GetBytes(finalSum);
StringBuilder fletcherOutput = new StringBuilder();
for(int i = 0; i < hash.Length; i++)
{
fletcherOutput.Append(hash[i].ToString("x2"));
}
foreach(byte h in hash) fletcherOutput.Append(h.ToString("x2"));
return fletcherOutput.ToString();
}
@@ -451,6 +423,4 @@ namespace DiscImageChef.Checksums
return Data(data, (uint)data.Length, out hash);
}
}
}
*/
}*/

View File

@@ -37,7 +37,7 @@ using System.Text;
namespace DiscImageChef.Checksums
{
/// <summary>
/// Provides a UNIX similar API to .NET MD5.
/// Wraps up .NET MD5 implementation to a Init(), Update(), Final() context.
/// </summary>
public class Md5Context
{

View File

@@ -37,7 +37,7 @@ using System.Text;
namespace DiscImageChef.Checksums
{
/// <summary>
/// Provides a UNIX similar API to .NET RIPEMD160.
/// Wraps up .NET RIPEMD160 implementation to a Init(), Update(), Final() context.
/// </summary>
public class Ripemd160Context
{

View File

@@ -62,6 +62,9 @@ using DiscImageChef.Console;
namespace DiscImageChef.Checksums
{
/// <summary>
/// Implements the Reed-Solomon algorithm
/// </summary>
public class ReedSolomon
{
/* Primitive polynomials - see Lin & Costello, Error Control Coding Appendix A,

View File

@@ -37,7 +37,7 @@ using System.Text;
namespace DiscImageChef.Checksums
{
/// <summary>
/// Provides a UNIX similar API to .NET SHA1.
/// Wraps up .NET SHA1 implementation to a Init(), Update(), Final() context.
/// </summary>
public class Sha1Context
{

View File

@@ -37,7 +37,7 @@ using System.Text;
namespace DiscImageChef.Checksums
{
/// <summary>
/// Provides a UNIX similar API to .NET SHA256.
/// Wraps up .NET SHA256 implementation to a Init(), Update(), Final() context.
/// </summary>
public class Sha256Context
{

View File

@@ -37,7 +37,7 @@ using System.Text;
namespace DiscImageChef.Checksums
{
/// <summary>
/// Provides a UNIX similar API to .NET SHA384.
/// Wraps up .NET SHA384 implementation to a Init(), Update(), Final() context.
/// </summary>
public class Sha384Context
{

View File

@@ -37,7 +37,7 @@ using System.Text;
namespace DiscImageChef.Checksums
{
/// <summary>
/// Provides a UNIX similar API to .NET SHA512.
/// Wraps up .NET SHA512 implementation to a Init(), Update(), Final() context.
/// </summary>
public class Sha512Context
{

View File

@@ -45,7 +45,7 @@ using System.Text;
namespace DiscImageChef.Checksums
{
/// <summary>
/// Provides a UNIX similar API to calculate Fuzzy Hash (SpamSum).
/// Implements the SpamSum fuzzy hashing algorithm.
/// </summary>
public class SpamSumContext
{