public async Task <ActionResult> Get( string keyId = default ) { byte[] serverCertHash = await GetCertificateSha256HashAsync(Program.ServerName) .ConfigureAwait(false); var keys = new { old_verify_keys = new { }, server_name = Program.ServerName, tls_fingerprints = new[] { new { sha256 = MxCrypto.EncodeToUnpaddedBase64(serverCertHash) } }, valid_until_ts = 1746810709, // Friday, May 9, 2025 5:11:49 PM verify_keys = new Dictionary <string, object> { { "ed25519:foo", new { key = Program.PublicKeyUnpaddedBase64 } } }, }; var jObject = MxCrypto.GetSignedJson(keys); return(Json(jObject, new JsonSerializerSettings { Formatting = Formatting.None })); }
public async Task <IActionResult> Get() { const string server = "matrix.org"; const string uri = "/_matrix/federation/v1/publicRooms"; var httpClient = new HttpClient { BaseAddress = new Uri($"https://{server}", UriKind.Absolute) }; var request = new HttpRequestMessage(HttpMethod.Get, uri); request.Headers.Add( "Authorization", MxCrypto.GetAuthorizationHeaderValue("GET", server, uri) ); var response = await httpClient.SendAsync(request, HttpContext.RequestAborted); string responseContent = await response.Content.ReadAsStringAsync(); JObject responseJson; try { responseJson = JsonConvert.DeserializeObject <JObject>(responseContent); } catch (JsonSerializationException) { responseJson = null; } return(Json(new { request, response, responseContent, responseJson, })); }