add a bunch of authentication stuff
This commit is contained in:
parent
996e59f49a
commit
aca83fa1ef
22 changed files with 681 additions and 28 deletions
|
@ -2,7 +2,7 @@ using System.Globalization;
|
|||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using Foxchat.Core.Database;
|
||||
using Microsoft.AspNetCore.WebUtilities;
|
||||
using Foxchat.Core.Utils;
|
||||
using NodaTime;
|
||||
using NodaTime.Text;
|
||||
using Serilog;
|
||||
|
@ -28,7 +28,7 @@ public partial class RequestSigningService(ILogger logger, IClock clock, IDataba
|
|||
var signature = formatter.CreateSignature(hash);
|
||||
|
||||
_logger.Debug("Generated signature for {Host} {RequestPath}", data.Host, data.RequestPath);
|
||||
return WebEncoders.Base64UrlEncode(signature);
|
||||
return Convert.ToBase64String(signature);
|
||||
}
|
||||
|
||||
public bool VerifySignature(
|
||||
|
@ -51,7 +51,11 @@ public partial class RequestSigningService(ILogger logger, IClock clock, IDataba
|
|||
var plaintext = GeneratePlaintext(new SignatureData(time, host, requestPath, contentLength, userId));
|
||||
var plaintextBytes = Encoding.UTF8.GetBytes(plaintext);
|
||||
var hash = SHA256.HashData(plaintextBytes);
|
||||
var signature = WebEncoders.Base64UrlDecode(encodedSignature);
|
||||
|
||||
if (!CryptoUtils.TryFromBase64String(encodedSignature, out var signature))
|
||||
{
|
||||
throw new FoxchatError.IncomingFederationError("Invalid base64 signature");
|
||||
}
|
||||
|
||||
var deformatter = new RSAPKCS1SignatureDeformatter(rsa);
|
||||
deformatter.SetHashAlgorithm(nameof(SHA256));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue