diff --git a/Projects/Argon2/Argon2.cs b/Projects/Argon2/Argon2.cs index dba748953..c1e546b4c 100644 --- a/Projects/Argon2/Argon2.cs +++ b/Projects/Argon2/Argon2.cs @@ -19,23 +19,13 @@ namespace System.Security.Cryptography internal static class Argon2 { - internal static readonly bool IsDarwin = RuntimeInformation.IsOSPlatform(OSPlatform.OSX); - internal static readonly bool IsFreeBSD = RuntimeInformation.IsOSPlatform(OSPlatform.FreeBSD); - internal static readonly bool IsLinux = RuntimeInformation.IsOSPlatform(OSPlatform.Linux); - - internal static readonly IArgon2 Library = - IsLinux || IsFreeBSD || IsDarwin ? (IArgon2)new UnixArgon2() : new WindowsArgon2(); - } - - internal class WindowsArgon2 : IArgon2 - { - public Argon2Error Hash(uint t_cost, uint m_cost, uint parallelism, + internal static Argon2Error Hash(uint t_cost, uint m_cost, uint parallelism, ReadOnlySpan pwd, ReadOnlySpan salt, Span hash, Span encoded, int type, int version) => - SafeNativeMethods.crypto_argon2_hash(t_cost, m_cost, parallelism, + SafeNativeMethods.argon2_hash(t_cost, m_cost, parallelism, in pwd.GetPinnableReference(), pwd.Length, in salt.GetPinnableReference(), salt.Length, ref hash.GetPinnableReference(), hash.Length, @@ -43,57 +33,16 @@ namespace System.Security.Cryptography type, version ); - public Argon2Error Verify(ReadOnlySpan encoded, ReadOnlySpan pwd, int pwdlen, int type) => - SafeNativeMethods.crypto_argon2_verify(in encoded.GetPinnableReference(), in pwd.GetPinnableReference(), pwdlen, type); + internal static Argon2Error Verify(ReadOnlySpan encoded, ReadOnlySpan pwd, int pwdlen, int type) => + SafeNativeMethods.argon2_verify(in encoded.GetPinnableReference(), in pwd.GetPinnableReference(), pwdlen, type); - public Argon2Error Decode(Argon2Context ctx, ReadOnlySpan str, int type) => - SafeNativeMethods.crypto_decode_string(ctx, in str.GetPinnableReference(), type); - - internal static class SafeNativeMethods - { - [DllImport("argon2.dll", EntryPoint = "crypto_argon2_hash", CallingConvention = CallingConvention.Cdecl)] - internal static extern Argon2Error crypto_argon2_hash(uint t_cost, uint m_cost, uint parallelism, - in byte pwd, int pwdlen, - in byte salt, int saltlen, - ref byte hash, int hashlen, - ref byte encoded, int encodedlen, - int type, int version - ); - - [DllImport("argon2.dll", EntryPoint = "crypto_argon2_verify", CallingConvention = CallingConvention.Cdecl)] - internal static extern Argon2Error crypto_argon2_verify(in byte encoded, in byte pwd, int pwdlen, int type); - - [DllImport("argon2.dll", EntryPoint = "crypto_decode_string", CallingConvention = CallingConvention.Cdecl)] - internal static extern Argon2Error crypto_decode_string(Argon2Context ctx, in byte str, int type); - } - } - - internal class UnixArgon2 : IArgon2 - { - public Argon2Error Hash(uint t_cost, uint m_cost, uint parallelism, - ReadOnlySpan pwd, - ReadOnlySpan salt, - Span hash, - Span encoded, - int type, int version) => - SafeNativeMethods.crypto_argon2_hash(t_cost, m_cost, parallelism, - in pwd.GetPinnableReference(), pwd.Length, - in salt.GetPinnableReference(), salt.Length, - ref hash.GetPinnableReference(), hash.Length, - ref encoded.GetPinnableReference(), encoded.Length, - type, version - ); - - public Argon2Error Verify(ReadOnlySpan encoded, ReadOnlySpan pwd, int pwdlen, int type) => - SafeNativeMethods.crypto_argon2_verify(in encoded.GetPinnableReference(), in pwd.GetPinnableReference(), pwdlen, type); - - public Argon2Error Decode(Argon2Context ctx, ReadOnlySpan str, int type) => - SafeNativeMethods.crypto_decode_string(ctx, in str.GetPinnableReference(), type); + internal static Argon2Error Decode(Argon2Context ctx, ReadOnlySpan str, int type) => + SafeNativeMethods.decode_string(ctx, in str.GetPinnableReference(), type); internal static class SafeNativeMethods { [DllImport("libargon2", EntryPoint = "argon2_hash")] - internal static extern Argon2Error crypto_argon2_hash(uint t_cost, uint m_cost, uint parallelism, + internal static extern Argon2Error argon2_hash(uint t_cost, uint m_cost, uint parallelism, in byte pwd, int pwdlen, in byte salt, int saltlen, ref byte hash, int hashlen, @@ -102,10 +51,10 @@ namespace System.Security.Cryptography ); [DllImport("libargon2", EntryPoint = "argon2_verify")] - internal static extern Argon2Error crypto_argon2_verify(in byte encoded, in byte pwd, int pwdlen, int type); + internal static extern Argon2Error argon2_verify(in byte encoded, in byte pwd, int pwdlen, int type); [DllImport("libargon2", EntryPoint = "decode_string")] - internal static extern Argon2Error crypto_decode_string(Argon2Context ctx, in byte str, int type); + internal static extern Argon2Error decode_string(Argon2Context ctx, in byte str, int type); } } } diff --git a/Projects/Argon2/Argon2.csproj b/Projects/Argon2/Argon2.csproj index 383c40594..706954214 100644 --- a/Projects/Argon2/Argon2.csproj +++ b/Projects/Argon2/Argon2.csproj @@ -1,7 +1,7 @@  win-x64;linux-x64;osx-x64 - 1.1.8 + 1.2.0 System.Security.Cryptography Argon2.Bindings x64 @@ -11,11 +11,11 @@ false true Debug;Release;Analyze - 1.1.8 + 1.2.0 x64 - + true runtimes/win-x64/native PreserveNewest diff --git a/Projects/Argon2/Argon2PasswordHasher.cs b/Projects/Argon2/Argon2PasswordHasher.cs index 6f72e482f..65ac501be 100644 --- a/Projects/Argon2/Argon2PasswordHasher.cs +++ b/Projects/Argon2/Argon2PasswordHasher.cs @@ -94,7 +94,7 @@ namespace System.Security.Cryptography Span passwordBytes = stackalloc byte[StringEncoding.GetByteCount(password)]; StringEncoding.GetBytes(password, passwordBytes); - var result = Argon2.Library.Hash( + var result = Argon2.Hash( TimeCost, MemoryCost, Parallelism, @@ -128,7 +128,7 @@ namespace System.Security.Cryptography Span passwordBytes = stackalloc byte[StringEncoding.GetByteCount(password)]; StringEncoding.GetBytes(password, passwordBytes); - var result = Argon2.Library.Hash( + var result = Argon2.Hash( TimeCost, MemoryCost, Parallelism, @@ -172,7 +172,7 @@ namespace System.Security.Cryptography /// public bool Verify(ReadOnlySpan expectedHash, ReadOnlySpan password) { - var result = Argon2.Library.Verify(expectedHash, password, password.Length, (int)ArgonType); + var result = Argon2.Verify(expectedHash, password, password.Length, (int)ArgonType); if (result == Argon2Error.OK || result == Argon2Error.VERIFY_MISMATCH || result == Argon2Error.DECODING_FAIL) return result == Argon2Error.OK; @@ -246,7 +246,7 @@ namespace System.Security.Cryptography Span bytes = stackalloc byte[formattedHash.Length]; Encoding.ASCII.GetBytes(formattedHash, bytes); - var result = Argon2.Library.Decode(context, bytes, (int)type); + var result = Argon2.Decode(context, bytes, (int)type); if (result != Argon2Error.OK) return null; diff --git a/Projects/Argon2/runtimes/win-x64/native/argon2.dll b/Projects/Argon2/runtimes/win-x64/native/libargon2.dll similarity index 100% rename from Projects/Argon2/runtimes/win-x64/native/argon2.dll rename to Projects/Argon2/runtimes/win-x64/native/libargon2.dll diff --git a/Projects/UOContent/UOContent.csproj b/Projects/UOContent/UOContent.csproj index 3469a23dd..974b49649 100644 --- a/Projects/UOContent/UOContent.csproj +++ b/Projects/UOContent/UOContent.csproj @@ -80,7 +80,7 @@ - +