From d02edbd38d5a13e3180c3663538aefc01f616be8 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Tue, 30 Dec 2025 12:48:53 +0800 Subject: [PATCH] :bug: Fix verify signing string failed due to gateway changed the host --- .../ActivityPub/ActivityPubSignatureService.cs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/DysonNetwork.Sphere/ActivityPub/ActivityPubSignatureService.cs b/DysonNetwork.Sphere/ActivityPub/ActivityPubSignatureService.cs index ba27070..db8c722 100644 --- a/DysonNetwork.Sphere/ActivityPub/ActivityPubSignatureService.cs +++ b/DysonNetwork.Sphere/ActivityPub/ActivityPubSignatureService.cs @@ -60,7 +60,7 @@ public class ActivityPubSignatureService( return false; } - var signingString = BuildSigningString(context, signatureParts); + var signingString = BuildIncomingSigningString(context, signatureParts); var signature = signatureParts.GetValueOrDefault("signature"); logger.LogInformation("Built signing string for verification. SigningString: {SigningString}, Signature: {Signature}", @@ -103,7 +103,7 @@ public class ActivityPubSignatureService( actorUri, publisher.Id); var headersToSign = new[] { RequestTarget, "host", "date", "digest" }; - var signingString = BuildSigningStringForRequest(request, headersToSign); + var signingString = BuildOutgoingSigningString(request, headersToSign); logger.LogInformation("Signing string for outgoing request: {SigningString}", signingString); @@ -182,7 +182,7 @@ public class ActivityPubSignatureService( } } - private Dictionary? ParseSignatureHeader(string signatureHeader) + private static Dictionary? ParseSignatureHeader(string signatureHeader) { var parts = new Dictionary(); @@ -200,7 +200,7 @@ public class ActivityPubSignatureService( return parts; } - private string BuildSigningString(HttpContext context, Dictionary signatureParts) + private string BuildIncomingSigningString(HttpContext context, Dictionary signatureParts) { var headers = signatureParts.GetValueOrDefault("headers")?.Split(' '); if (headers == null || headers.Length == 0) @@ -211,7 +211,7 @@ public class ActivityPubSignatureService( foreach (var header in headers) { if (sb.Length > 0) - sb.Append("\n"); + sb.Append('\n'); sb.Append(header.ToLower()); sb.Append(": "); @@ -222,6 +222,10 @@ public class ActivityPubSignatureService( var path = context.Request.Path.Value ?? ""; sb.Append($"{method} {path}"); } + else if (header == "host") + { + sb.Append(Domain); + } else { if (context.Request.Headers.TryGetValue(header, out var values)) @@ -234,7 +238,7 @@ public class ActivityPubSignatureService( return sb.ToString(); } - private string BuildSigningStringForRequest(HttpRequestMessage request, string[] headers) + private string BuildOutgoingSigningString(HttpRequestMessage request, string[] headers) { var sb = new StringBuilder(); logger.LogInformation("Building signing string for request. Headers to sign: {Headers}",