🐛 Fix verify signature generating wrongly

This commit is contained in:
2025-12-30 19:27:16 +08:00
parent f42fc1da1c
commit 1d95d637dd

View File

@@ -23,13 +23,13 @@ public class ActivityPubSignatureService(
{ {
actorUri = null; actorUri = null;
if (!context.Request.Headers.ContainsKey("Signature")) if (!context.Request.Headers.TryGetValue("Signature", out var value))
{ {
logger.LogWarning("Request missing Signature header. Path: {Path}", context.Request.Path); logger.LogWarning("Request missing Signature header. Path: {Path}", context.Request.Path);
return false; return false;
} }
var signatureHeader = context.Request.Headers["Signature"].ToString(); var signatureHeader = value.ToString();
logger.LogInformation("Incoming request with signature. Path: {Path}, SignatureHeader: {Signature}", logger.LogInformation("Incoming request with signature. Path: {Path}, SignatureHeader: {Signature}",
context.Request.Path, signatureHeader); context.Request.Path, signatureHeader);
@@ -259,31 +259,35 @@ public class ActivityPubSignatureService(
foreach (var header in headers) foreach (var header in headers)
{ {
if (header == "content-type")
continue;
if (sb.Length > 0) if (sb.Length > 0)
sb.Append('\n'); sb.Append('\n');
sb.Append(header.ToLower()); sb.Append(header.ToLower());
sb.Append(": "); sb.Append(": ");
if (header == RequestTarget) switch (header)
{ {
var method = context.Request.Method.ToLower(); case RequestTarget:
var path = context.Request.Path.Value ?? "";
sb.Append($"{method} {path}");
}
else if (header == "host")
{
sb.Append(Domain);
}
else if (header == "content-type")
{
continue;
}
else
{
if (context.Request.Headers.TryGetValue(header, out var values))
{ {
sb.Append(values.ToString()); var method = context.Request.Method.ToLower();
var path = context.Request.Path.Value ?? "";
sb.Append($"{method} {path}");
break;
}
case "host":
sb.Append(Domain);
break;
default:
{
if (context.Request.Headers.TryGetValue(header, out var values))
{
sb.Append(values.ToString());
}
break;
} }
} }
} }