コード例 #1
0
ファイル: ServerKeysController.cs プロジェクト: poulad/PeykOn
        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
            }));
        }
コード例 #2
0
        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,
            }));
        }