🐛 Activitypub request didn't sign
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
using DysonNetwork.Shared.Models;
|
using DysonNetwork.Shared.Models;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using System.Security.Cryptography;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
|
|
||||||
@@ -235,6 +236,12 @@ public class ActivityPubDeliveryService(
|
|||||||
request.Content = new StringContent(json, Encoding.UTF8, "application/activity+json");
|
request.Content = new StringContent(json, Encoding.UTF8, "application/activity+json");
|
||||||
request.Headers.Date = DateTimeOffset.UtcNow;
|
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 signatureHeaders = await signatureService.SignOutgoingRequest(request, actorUri);
|
||||||
var signature = signatureHeaders;
|
var signature = signatureHeaders;
|
||||||
|
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ public class ActivityPubSignatureService(
|
|||||||
var keyPair = GetOrGenerateKeyPair(publisher);
|
var keyPair = GetOrGenerateKeyPair(publisher);
|
||||||
var keyId = $"{actorUri}#main-key";
|
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 signingString = BuildSigningStringForRequest(request, headersToSign);
|
||||||
var signature = keyService.Sign(keyPair.privateKeyPem, signingString);
|
var signature = keyService.Sign(keyPair.privateKeyPem, signingString);
|
||||||
|
|
||||||
@@ -223,6 +223,13 @@ public class ActivityPubSignatureService(
|
|||||||
sb.Append(request.Headers.GetValues("Date").First());
|
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();
|
return sb.ToString();
|
||||||
|
|||||||
Reference in New Issue
Block a user