🐛 Activitypub request didn't sign

This commit is contained in:
2025-12-29 19:47:16 +08:00
parent bb71c558b1
commit ce20c5980b
2 changed files with 15 additions and 1 deletions

View File

@@ -1,5 +1,6 @@
using DysonNetwork.Shared.Models;
using Microsoft.EntityFrameworkCore;
using System.Security.Cryptography;
using System.Text;
using System.Text.Json;
@@ -235,6 +236,12 @@ public class ActivityPubDeliveryService(
request.Content = new StringContent(json, Encoding.UTF8, "application/activity+json");
request.Headers.Date = DateTimeOffset.UtcNow;
var bodyBytes = Encoding.UTF8.GetBytes(json);
using var sha256 = SHA256.Create();
var hash = sha256.ComputeHash(bodyBytes);
var digest = $"SHA-256={Convert.ToBase64String(hash)}";
request.Headers.Add("Digest", digest);
var signatureHeaders = await signatureService.SignOutgoingRequest(request, actorUri);
var signature = signatureHeaders;

View File

@@ -82,7 +82,7 @@ public class ActivityPubSignatureService(
var keyPair = GetOrGenerateKeyPair(publisher);
var keyId = $"{actorUri}#main-key";
var headersToSign = new[] { "(request-target)", "host", "date" };
var headersToSign = new[] { "(request-target)", "host", "date", "digest" };
var signingString = BuildSigningStringForRequest(request, headersToSign);
var signature = keyService.Sign(keyPair.privateKeyPem, signingString);
@@ -223,6 +223,13 @@ public class ActivityPubSignatureService(
sb.Append(request.Headers.GetValues("Date").First());
}
}
else if (header == "digest")
{
if (request.Headers.Contains("Digest"))
{
sb.Append(request.Headers.GetValues("Digest").First());
}
}
}
return sb.ToString();