diff --git a/Streetwriters.Identity/Helpers/PasswordHelper.cs b/Streetwriters.Identity/Helpers/PasswordHelper.cs
index 1ff0725..c4446c0 100644
--- a/Streetwriters.Identity/Helpers/PasswordHelper.cs
+++ b/Streetwriters.Identity/Helpers/PasswordHelper.cs
@@ -1,38 +1,40 @@
-/*
-This file is part of the Notesnook Sync Server project (https://notesnook.com/)
-
-Copyright (C) 2023 Streetwriters (Private) Limited
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the Affero GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-Affero GNU General Public License for more details.
-
-You should have received a copy of the Affero GNU General Public License
-along with this program. If not, see .
-*/
-
-using System;
-using System.Text;
-using Sodium;
-
-namespace Streetwriters.Identity.Helpers
-{
- internal class PasswordHelper
- {
- public static bool VerifyPassword(string password, string hash)
- {
- return PasswordHash.ArgonHashStringVerify(hash, password);
- }
-
- public static string CreatePasswordHash(string password)
- {
- return PasswordHash.ArgonHashString(password, 3, 65536);
- }
- }
+/*
+This file is part of the Notesnook Sync Server project (https://notesnook.com/)
+
+Copyright (C) 2023 Streetwriters (Private) Limited
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the Affero GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+Affero GNU General Public License for more details.
+
+You should have received a copy of the Affero GNU General Public License
+along with this program. If not, see .
+*/
+
+using System;
+using System.Text;
+using Geralt;
+
+namespace Streetwriters.Identity.Helpers
+{
+ internal class PasswordHelper
+ {
+ public static bool VerifyPassword(string password, string hash)
+ {
+ return Argon2id.VerifyHash(Encoding.UTF8.GetBytes(hash), Encoding.UTF8.GetBytes(password));
+ }
+
+ public static string CreatePasswordHash(string password)
+ {
+ Span hash = new(new byte[128]);
+ Argon2id.ComputeHash(hash, Encoding.UTF8.GetBytes(password), 3, 65536);
+ return Encoding.UTF8.GetString(hash);
+ }
+ }
}
\ No newline at end of file
diff --git a/Streetwriters.Identity/Services/PasswordHasher.cs b/Streetwriters.Identity/Services/PasswordHasher.cs
index f1f268e..83d44e6 100644
--- a/Streetwriters.Identity/Services/PasswordHasher.cs
+++ b/Streetwriters.Identity/Services/PasswordHasher.cs
@@ -1,47 +1,43 @@
-/*
-This file is part of the Notesnook Sync Server project (https://notesnook.com/)
-
-Copyright (C) 2023 Streetwriters (Private) Limited
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the Affero GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-Affero GNU General Public License for more details.
-
-You should have received a copy of the Affero GNU General Public License
-along with this program. If not, see .
-*/
-
-using System;
-using Microsoft.AspNetCore.Identity;
-using Streetwriters.Common.Models;
-using Streetwriters.Identity.Helpers;
-
-namespace Streetwriters.Identity.Services
-{
- public class Argon2PasswordHasher : IPasswordHasher where TUser : User
- {
- public string HashPassword(TUser user, string password)
- {
- if (password == null)
- throw new ArgumentNullException(nameof(password));
-
- return PasswordHelper.CreatePasswordHash(password);
- }
-
- public PasswordVerificationResult VerifyHashedPassword(TUser user, string hashedPassword, string providedPassword)
- {
- if (hashedPassword == null)
- throw new ArgumentNullException(nameof(hashedPassword));
- if (providedPassword == null)
- throw new ArgumentNullException(nameof(providedPassword));
-
- return PasswordHelper.VerifyPassword(providedPassword, hashedPassword) ? PasswordVerificationResult.Success : PasswordVerificationResult.Failed;
- }
- }
+/*
+This file is part of the Notesnook Sync Server project (https://notesnook.com/)
+
+Copyright (C) 2023 Streetwriters (Private) Limited
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the Affero GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+Affero GNU General Public License for more details.
+
+You should have received a copy of the Affero GNU General Public License
+along with this program. If not, see .
+*/
+
+using System;
+using Microsoft.AspNetCore.Identity;
+using Streetwriters.Common.Models;
+using Streetwriters.Identity.Helpers;
+
+namespace Streetwriters.Identity.Services
+{
+ public class Argon2PasswordHasher : IPasswordHasher where TUser : User
+ {
+ public string HashPassword(TUser user, string password)
+ {
+ ArgumentNullException.ThrowIfNullOrEmpty(password, nameof(password));
+ return PasswordHelper.CreatePasswordHash(password);
+ }
+
+ public PasswordVerificationResult VerifyHashedPassword(TUser user, string hashedPassword, string providedPassword)
+ {
+ ArgumentNullException.ThrowIfNullOrEmpty(hashedPassword, nameof(hashedPassword));
+ ArgumentNullException.ThrowIfNullOrEmpty(providedPassword, nameof(providedPassword));
+
+ return PasswordHelper.VerifyPassword(providedPassword, hashedPassword) ? PasswordVerificationResult.Success : PasswordVerificationResult.Failed;
+ }
+ }
}
\ No newline at end of file
diff --git a/Streetwriters.Identity/Streetwriters.Identity.csproj b/Streetwriters.Identity/Streetwriters.Identity.csproj
index 86bc6d9..5261bf7 100644
--- a/Streetwriters.Identity/Streetwriters.Identity.csproj
+++ b/Streetwriters.Identity/Streetwriters.Identity.csproj
@@ -1,43 +1,43 @@
-
-
-
- net8.0
- Streetwriters.Identity.Program
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PreserveNewest
-
-
-
-
-
-
+
+
+
+ net8.0
+ Streetwriters.Identity.Program
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PreserveNewest
+
+
+
+
+
+
\ No newline at end of file