Fix Base64 parse

This commit is contained in:
2021-06-05 11:44:58 +02:00
parent 2af811873b
commit 3b1755b793
5 changed files with 11 additions and 6 deletions

View File

@@ -33,10 +33,10 @@ namespace Akari.Prototype.Server.Services
_keys = new ConcurrentDictionary<string, TimedEntry<AesGcm>>();
}
public void Auth(string name, string token)
public void Auth(string name, byte[] token)
{
// Derive key and store it
using var key = Security.Argon2idDeriveBytes(token, name, AuthKeysLength, clear: true);
using var key = Security.Argon2idDeriveBytes(token, Encoding.UTF8.GetBytes(name), AuthKeysLength, clear: true);
SetKey(name, new AesGcm(key.Buffer));
}

View File

@@ -107,7 +107,7 @@ namespace Akari.Prototype.Server.Services
return GetEnumerator();
}
public void VerifyFingerprint(string name, string token)
public void VerifyFingerprint(string name, byte[] token)
{
_logger.LogDebug($"Verifying hash for {name}");

View File

@@ -11,7 +11,7 @@ namespace Akari.Prototype.Server.Services
{
IEnumerable<KeyValuePair<string, TimedEntry<AesGcm>>> Pairs { get; }
void Auth(string name, string token);
void Auth(string name, byte[] token);
bool Remove(string name);
}

View File

@@ -13,6 +13,6 @@ namespace Akari.Prototype.Server.Services
bool Remove(string name);
void Set(string name, string hash);
void VerifyFingerprint(string name, string token);
void VerifyFingerprint(string name, byte[] token);
}
}

View File

@@ -9,6 +9,7 @@ using System.IO;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
@@ -135,7 +136,11 @@ namespace Akari.Prototype.Server.Services
return;
}
_fingerprintManager.VerifyFingerprint(text[..splitIndex], text[(splitIndex + 1)..]);
var handle = GCHandle.Alloc(text, GCHandleType.Pinned);
_fingerprintManager.VerifyFingerprint(text[..splitIndex], Convert.FromBase64String(text[(splitIndex + 1)..]));
handle.Free();
}
public override void Dispose()