From f3be89f2129859d41a93ca68bfe9e78fd4806c1f Mon Sep 17 00:00:00 2001 From: Ugochukwu Mmaduekwe Date: Sun, 4 Dec 2022 16:58:04 +0100 Subject: [PATCH 1/2] initial commit --- src/HashLib4CSharp/HashLib4CSharp.csproj | 8 ++++++-- src/HashLib4CSharp/src/Base/Hash.cs | 7 +++++-- .../src/Base/MultipleTransformNonBlock.cs | 18 +++++++++--------- src/HashLib4CSharp/src/Interfaces/IHash.cs | 2 +- 4 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/HashLib4CSharp/HashLib4CSharp.csproj b/src/HashLib4CSharp/HashLib4CSharp.csproj index ed4d4d939..67edc202d 100644 --- a/src/HashLib4CSharp/HashLib4CSharp.csproj +++ b/src/HashLib4CSharp/HashLib4CSharp.csproj @@ -2,8 +2,8 @@ true - 7.3 - netstandard2.1 + 11 + net7.0 HashLib4CSharp Ugochukwu Mmaduekwe HashLib4CSharp is a C# library that provides an easy to use interface for computing hashes and checksums of strings (with a specified encoding), files, streams, byte arrays and untyped data. @@ -29,4 +29,8 @@ + + + + diff --git a/src/HashLib4CSharp/src/Base/Hash.cs b/src/HashLib4CSharp/src/Base/Hash.cs index b498e1ef8..f2ea54809 100644 --- a/src/HashLib4CSharp/src/Base/Hash.cs +++ b/src/HashLib4CSharp/src/Base/Hash.cs @@ -14,10 +14,11 @@ This library was sponsored by Sphere 10 Software (https://www.sphere10.com) using System; using System.Diagnostics; using HashLib4CSharp.Interfaces; +using Hydrogen; namespace HashLib4CSharp.Base { - internal abstract class Hash : IHash + internal abstract class Hash : SyncDisposable, IHash { private const string CloneNotYetImplemented = "Clone not yet implemented for '{0}'"; private const string InvalidBufferSize = "'BufferSize' must be greater than zero"; @@ -55,5 +56,7 @@ public virtual IHash Clone() => public abstract void Initialize(); public abstract IHashResult TransformFinal(); - } + + protected override void FreeManagedResources() {} + } } \ No newline at end of file diff --git a/src/HashLib4CSharp/src/Base/MultipleTransformNonBlock.cs b/src/HashLib4CSharp/src/Base/MultipleTransformNonBlock.cs index 6d27bcd26..3097247ba 100644 --- a/src/HashLib4CSharp/src/Base/MultipleTransformNonBlock.cs +++ b/src/HashLib4CSharp/src/Base/MultipleTransformNonBlock.cs @@ -30,12 +30,6 @@ protected MultipleTransformNonBlock(int hashSize, int blockSize) : base(hashSize private MemoryStream Buffer { get; } - ~MultipleTransformNonBlock() - { - Buffer?.Flush(); - Buffer?.Close(); - } - private byte[] Aggregate() { var aggregate = new byte[0]; @@ -58,10 +52,10 @@ public override IHash Clone() !c.IsStatic); - dynamic hashInstance = + var hashInstance = constructorInfo.Invoke(BindingFlags.CreateInstance, null, constructorInfo.GetParameters().Length == 0 ? null - : Enumerable.Repeat(Type.Missing, constructorInfo.GetParameters().Length).ToArray(), null); + : Enumerable.Repeat(Type.Missing, constructorInfo.GetParameters().Length).ToArray(), null) as MultipleTransformNonBlock; if (hashInstance == null) throw new NullReferenceException(UnExpectedError); @@ -95,5 +89,11 @@ public override IHashResult TransformFinal() return result; } protected abstract IHashResult ComputeAggregatedBytes(byte[] data); - } + + protected override void FreeManagedResources() + { + Buffer?.Flush(); + Buffer?.Close(); + } + } } \ No newline at end of file diff --git a/src/HashLib4CSharp/src/Interfaces/IHash.cs b/src/HashLib4CSharp/src/Interfaces/IHash.cs index 1abe29776..185cc7df8 100644 --- a/src/HashLib4CSharp/src/Interfaces/IHash.cs +++ b/src/HashLib4CSharp/src/Interfaces/IHash.cs @@ -22,7 +22,7 @@ This library was sponsored by Sphere 10 Software (https://www.sphere10.com) namespace HashLib4CSharp.Interfaces { - public interface IHash + public interface IHash : IDisposable { string Name { get; } int BlockSize { get; } From 4490469564eeb6372dcbcffa801ee766934d84ee Mon Sep 17 00:00:00 2001 From: Ugochukwu Mmaduekwe Date: Sun, 4 Dec 2022 17:08:31 +0100 Subject: [PATCH 2/2] change language/framework version --- src/HashLib4CSharp/HashLib4CSharp.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/HashLib4CSharp/HashLib4CSharp.csproj b/src/HashLib4CSharp/HashLib4CSharp.csproj index 67edc202d..cd3375673 100644 --- a/src/HashLib4CSharp/HashLib4CSharp.csproj +++ b/src/HashLib4CSharp/HashLib4CSharp.csproj @@ -2,8 +2,8 @@ true - 11 - net7.0 + 7.3 + netstandard2.1 HashLib4CSharp Ugochukwu Mmaduekwe HashLib4CSharp is a C# library that provides an easy to use interface for computing hashes and checksums of strings (with a specified encoding), files, streams, byte arrays and untyped data.