From dc58a7878faf1ee567e0f1239d8c8869502fd03d Mon Sep 17 00:00:00 2001 From: Rory& Date: Fri, 5 Dec 2025 13:49:02 +0100 Subject: Federation work --- LibMatrix.Federation/Extensions/Ed25519Extensions.cs | 1 + .../Extensions/XMatrixAuthorizationSchemeExtensions.cs | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) (limited to 'LibMatrix.Federation/Extensions') diff --git a/LibMatrix.Federation/Extensions/Ed25519Extensions.cs b/LibMatrix.Federation/Extensions/Ed25519Extensions.cs index e5a9e5d..ada6a3d 100644 --- a/LibMatrix.Federation/Extensions/Ed25519Extensions.cs +++ b/LibMatrix.Federation/Extensions/Ed25519Extensions.cs @@ -6,5 +6,6 @@ namespace LibMatrix.Federation.Extensions; public static class Ed25519Extensions { public static string ToUnpaddedBase64(this Ed25519PublicKeyParameters key) => UnpaddedBase64.Encode(key.GetEncoded()); + public static string ToUnpaddedBase64(this Ed25519PrivateKeyParameters key) => UnpaddedBase64.Encode(key.GetEncoded()); public static Ed25519PrivateKeyParameters GetPrivateEd25519Key(this VersionedHomeserverPrivateKey key) => new(UnpaddedBase64.Decode(key.PrivateKey), 0); } \ No newline at end of file diff --git a/LibMatrix.Federation/Extensions/XMatrixAuthorizationSchemeExtensions.cs b/LibMatrix.Federation/Extensions/XMatrixAuthorizationSchemeExtensions.cs index 792264a..b520b1c 100644 --- a/LibMatrix.Federation/Extensions/XMatrixAuthorizationSchemeExtensions.cs +++ b/LibMatrix.Federation/Extensions/XMatrixAuthorizationSchemeExtensions.cs @@ -4,13 +4,22 @@ using LibMatrix.Abstractions; namespace LibMatrix.Federation.Extensions; public static class XMatrixAuthorizationSchemeExtensions { - public static HttpRequestMessage ToSignedHttpRequestMessage(this XMatrixAuthorizationScheme.XMatrixRequestSignature requestSignature, VersionedHomeserverPrivateKey privateKey) { + public static HttpRequestMessage ToSignedHttpRequestMessage(this XMatrixAuthorizationScheme.XMatrixRequestSignature requestSignature, + VersionedHomeserverPrivateKey privateKey) { var signature = requestSignature.Sign(privateKey); var requestMessage = new HttpRequestMessage { Method = new HttpMethod(requestSignature.Method), RequestUri = new Uri(requestSignature.Uri, UriKind.Relative) }; + var headerValue = new XMatrixAuthorizationScheme.XMatrixAuthorizationHeader() { + Origin = requestSignature.OriginServerName, + Key = privateKey.KeyId, + Destination = requestSignature.DestinationServerName, + Signature = signature.Signatures[requestSignature.OriginServerName][privateKey.KeyId] + }.ToHeaderValue(); + requestMessage.Headers.Add("Authorization", headerValue); + if (requestSignature.Content != null) { requestMessage.Content = JsonContent.Create(requestSignature.Content); } -- cgit 1.5.1