Federation work
1 files changed, 10 insertions, 1 deletions
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);
}
|