blob: b520b1c7f38fa2af8c29e4c3f7a28c0fdddf45fe (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
using System.Net.Http.Json;
using LibMatrix.Abstractions;
namespace LibMatrix.Federation.Extensions;
public static class XMatrixAuthorizationSchemeExtensions {
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);
}
return requestMessage;
}
}
|