update sharpcifs

This commit is contained in:
Luke Pulverenti
2017-07-08 03:25:24 -04:00
parent a7187180bf
commit 71eb9f143f
220 changed files with 23703 additions and 25613 deletions

View File

@@ -6,58 +6,55 @@ using System.Security.Cryptography;
namespace SharpCifs.Util.Sharpen
{
public abstract class MessageDigest
{
public void Digest(byte[] buffer, int o, int len)
{
byte[] d = Digest();
d.CopyTo(buffer, o);
}
{
public void Digest (byte[] buffer, int o, int len)
{
byte[] d = Digest ();
d.CopyTo (buffer, o);
}
public byte[] Digest(byte[] buffer)
{
Update(buffer);
return Digest();
}
public byte[] Digest (byte[] buffer)
{
Update (buffer);
return Digest ();
}
public abstract byte[] Digest();
public abstract int GetDigestLength();
public static MessageDigest GetInstance(string algorithm)
{
switch (algorithm.ToLower())
{
case "sha-1":
//System.Security.CryptographySHA1Managed not found
//return new MessageDigest<SHA1Managed> ();
return new MessageDigest<System.Security.Cryptography.SHA1>();
case "md5":
return new MessageDigest<Md5Managed>();
public abstract byte[] Digest ();
public abstract int GetDigestLength ();
public static MessageDigest GetInstance (string algorithm)
{
switch (algorithm.ToLower ()) {
case "sha-1":
//System.Security.CryptographySHA1Managed not found
//return new MessageDigest<SHA1Managed> ();
return new MessageDigest<System.Security.Cryptography.SHA1>();
case "md5":
return new MessageDigest<Md5Managed> ();
}
throw new NotSupportedException(
string.Format("The requested algorithm \"{0}\" is not supported.", algorithm));
}
throw new NotSupportedException (string.Format ("The requested algorithm \"{0}\" is not supported.", algorithm));
}
public abstract void Reset();
public abstract void Update(byte[] b);
public abstract void Update(byte b);
public abstract void Update(byte[] b, int offset, int len);
}
public abstract void Reset ();
public abstract void Update (byte[] b);
public abstract void Update (byte b);
public abstract void Update (byte[] b, int offset, int len);
}
public class MessageDigest<TAlgorithm>
: MessageDigest where TAlgorithm : HashAlgorithm //, new() //use static `Create` method
{
private TAlgorithm _hash;
public class MessageDigest<TAlgorithm> : MessageDigest where TAlgorithm : HashAlgorithm //, new() //use static `Create` method
{
private TAlgorithm _hash;
//private CryptoStream _stream; //don't work .NET Core
private MemoryStream _stream;
public MessageDigest()
{
Init();
}
public MessageDigest ()
{
Init ();
}
public override byte[] Digest()
{
public override byte[] Digest ()
{
//CryptoStream -> MemoryStream, needless method
//_stream.FlushFinalBlock ();
@@ -65,30 +62,29 @@ namespace SharpCifs.Util.Sharpen
//byte[] hash = _hash.Hash;
byte[] hash = _hash.ComputeHash(_stream.ToArray());
Reset();
return hash;
Reset ();
return hash;
}
public void Dispose ()
{
if (_stream != null) {
_stream.Dispose ();
}
_stream = null;
}
public void Dispose()
{
if (_stream != null)
{
_stream.Dispose();
}
_stream = null;
}
public override int GetDigestLength ()
{
return (_hash.HashSize / 8);
}
public override int GetDigestLength()
{
return (_hash.HashSize / 8);
}
private void Init()
{
private void Init ()
{
//use static `Create` method
//_hash = Activator.CreateInstance<TAlgorithm> ();
var createMethod = typeof(TAlgorithm).GetRuntimeMethod("Create", new Type[0]);
_hash = (TAlgorithm)createMethod.Invoke(null, new object[] { });
_hash = (TAlgorithm)createMethod.Invoke(null, new object[] {});
//HashAlgorithm cannot cast `ICryptoTransform` on .NET Core, gave up using CryptoStream.
//_stream = new CryptoStream(Stream.Null, _hash, CryptoStreamMode.Write);
@@ -96,27 +92,27 @@ namespace SharpCifs.Util.Sharpen
_stream = new MemoryStream();
}
public override void Reset()
{
Dispose();
Init();
}
public override void Reset ()
{
Dispose ();
Init ();
}
public override void Update(byte[] input)
{
_stream.Write(input, 0, input.Length);
}
public override void Update (byte[] input)
{
_stream.Write (input, 0, input.Length);
}
public override void Update(byte input)
{
_stream.WriteByte(input);
}
public override void Update (byte input)
{
_stream.WriteByte (input);
}
public override void Update(byte[] input, int index, int count)
{
if (count < 0)
Console.WriteLine("Argh!");
_stream.Write(input, index, count);
}
}
public override void Update (byte[] input, int index, int count)
{
if (count < 0)
Console.WriteLine ("Argh!");
_stream.Write (input, index, count);
}
}
}