Reduced iteration count on encryption

Moved long running code to task
main
Thomas Woischnig 2023-12-04 21:48:36 +01:00
parent 9a25ee86e8
commit b7f44b5215
3 changed files with 49 additions and 46 deletions

View File

@ -79,7 +79,7 @@ namespace Lobbies
public void HostLobby(Guid gameId, string name, int gameMode, int maxPlayerCount, string? password, int port)
{
udpEchoServer.Start(0);
_ = Task.Run(async () => {
byte[]? hash = null, salt = null;
if (!string.IsNullOrEmpty(password))
@ -103,11 +103,13 @@ namespace Lobbies
byte[] messageData = bufferRental.Rent();
var len = lobbyCreate.Serialize(messageData);
_ = Task.Run(async () => { await tcpClient.Send(messageData, 0, len); bufferRental.Return(messageData); });
await tcpClient.Send(messageData, 0, len); bufferRental.Return(messageData);
});
}
public void RequestLobbyHostInfo(Guid lobbyId, string? password)
{
_ = Task.Run(async () => {
byte[]? passwordHash = null;
if (!string.IsNullOrEmpty(password) && lobbyInformation.ContainsKey(lobbyId) && lobbyInformation[lobbyId].PasswordSalt != null)
passwordHash = PasswordHash.Hash(password, lobbyInformation[lobbyId].PasswordSalt!);
@ -120,7 +122,8 @@ namespace Lobbies
byte[] messageData = bufferRental.Rent();
var len = lobbyCreate.Serialize(messageData);
_ = Task.Run(async () => { await tcpClient.Send(messageData, 0, len); bufferRental.Return(messageData); });
await tcpClient.Send(messageData, 0, len); bufferRental.Return(messageData);
});
}
/// <summary>
@ -142,13 +145,13 @@ namespace Lobbies
/// <param name="password">Optional password of lobby</param>
/// <param name="sendUdpToGetExternalPortMappingCallback">A callback to send udp data if you have a udp game client ready and bound</param>
public void RequestLobbyNatPunch(Guid lobbyId, string? password, SendUdpMessageCallback sendUdpToGetExternalPortMappingCallback)
{
Task.Run(() =>
{
byte[]? passwordHash = null;
if (!string.IsNullOrEmpty(password) && lobbyInformation.ContainsKey(lobbyId) && lobbyInformation[lobbyId].PasswordSalt != null)
passwordHash = PasswordHash.Hash(password, lobbyInformation[lobbyId].PasswordSalt!);
Task.Run(() =>
{
QueryExternalIpAndPort(sendUdpToGetExternalPortMappingCallback);
var lobbyRequestNatPunch = new LobbyRequestNatPunch()
{
@ -179,15 +182,15 @@ namespace Lobbies
if(port < 0 && port > 65535)
throw new ArgumentOutOfRangeException(nameof(port));
byte[]? passwordHash = null;
if (!string.IsNullOrEmpty(password) && lobbyInformation.ContainsKey(lobbyId) && lobbyInformation[lobbyId].PasswordSalt != null)
passwordHash = PasswordHash.Hash(password, lobbyInformation[lobbyId].PasswordSalt!);
var udpEchoServer = new UdpEchoServer();
udpEchoServer.Start(port);
Task.Run(() =>
{
byte[]? passwordHash = null;
if (!string.IsNullOrEmpty(password) && lobbyInformation.ContainsKey(lobbyId) && lobbyInformation[lobbyId].PasswordSalt != null)
passwordHash = PasswordHash.Hash(password, lobbyInformation[lobbyId].PasswordSalt!);
QueryExternalIpAndPort(udpEchoServer.Send);
udpEchoServer.Dispose();
var lobbyRequestNatPunch = new LobbyRequestNatPunch()

View File

@ -7,7 +7,7 @@ namespace Lobbies
{
const int keySize = 64;
const int saltSize = 16;
const int iterations = 350000;
const int iterations = 100000;
static HashAlgorithmName hashAlgorithm = HashAlgorithmName.SHA512;
static internal (byte[] hash, byte[] salt) Hash(string text)