This commit is contained in:
HueByte
2026-02-20 16:34:26 +00:00
parent 4c105b6c68
commit fca77ea92f
33 changed files with 3362 additions and 71 deletions
+1 -1
View File
@@ -11,7 +11,7 @@
<link rel="stylesheet" href="../../public/docfx.min.css">
<link rel="stylesheet" href="../../public/main.css">
<meta name="docfx:navrel" content="../../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:tocrel" content="../toc.html">
<meta name="docfx:rel" content="../../">
+1 -1
View File
@@ -1,2 +1,2 @@
{"items":[{"name":"Overview","href":"index.html","topicHref":"index.html"}]}
{"order":100,"items":[{"name":"Overview","href":"index.html","topicHref":"index.html"}]}
@@ -532,6 +532,37 @@ Class ApiClient <a class="header-action link-secondary" title="View source" hre
<a id="EchoHub_Client_Services_ApiClient_GetEncryptionKeyAsync_" data-uid="EchoHub.Client.Services.ApiClient.GetEncryptionKeyAsync*"></a>
<h3 id="EchoHub_Client_Services_ApiClient_GetEncryptionKeyAsync" data-uid="EchoHub.Client.Services.ApiClient.GetEncryptionKeyAsync">
GetEncryptionKeyAsync()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Services/ApiClient.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Task&lt;string&gt; GetEncryptionKeyAsync()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><span class="xref">Task</span>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>&gt;</dt>
<dd></dd>
</dl>
<a id="EchoHub_Client_Services_ApiClient_GetServerInfoAsync_" data-uid="EchoHub.Client.Services.ApiClient.GetServerInfoAsync*"></a>
<h3 id="EchoHub_Client_Services_ApiClient_GetServerInfoAsync" data-uid="EchoHub.Client.Services.ApiClient.GetServerInfoAsync">
@@ -0,0 +1,458 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class ClientEncryptionService | EchoHub Documentation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class ClientEncryptionService | EchoHub Documentation ">
<meta name="description" content="Client-side encryption service. Uses the same AES-256-GCM format as the server so messages are encrypted end-to-end between client and server.">
<link rel="icon" href="../../images/hue_icon.svg">
<link rel="stylesheet" href="../../public/docfx.min.css">
<link rel="stylesheet" href="../../public/main.css">
<meta name="docfx:navrel" content="../../toc.html">
<meta name="docfx:tocrel" content="../toc.html">
<meta name="docfx:rel" content="../../">
<meta name="docfx:docurl" content="https://github.com/HueByte/EchoHub/new/master/apiSpec/new?filename=EchoHub_Client_Services_ClientEncryptionService.md&amp;value=---%0Auid%3A%20EchoHub.Client.Services.ClientEncryptionService%0Asummary%3A%20&#39;*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax&#39;%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../../index.html">
<img id="logo" class="svg" src="../../images/hue_icon.svg" alt="EchoHub">
EchoHub
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="EchoHub.Client.Services.ClientEncryptionService">
<h1 id="EchoHub_Client_Services_ClientEncryptionService" data-uid="EchoHub.Client.Services.ClientEncryptionService" class="text-break">
Class ClientEncryptionService <a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Services/ClientEncryptionService.cs"><i class="bi bi-code-slash"></i></a>
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="EchoHub.html">EchoHub</a>.<a class="xref" href="EchoHub.Client.html">Client</a>.<a class="xref" href="EchoHub.Client.Services.html">Services</a></dd></dl>
<dl><dt>Assembly</dt><dd>EchoHub.Client.dll</dd></dl>
</div>
<div class="markdown summary"><p>Client-side encryption service. Uses the same AES-256-GCM format as the server
so messages are encrypted end-to-end between client and server.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public sealed class ClientEncryptionService : IMessageEncryptionService</code></pre>
</div>
<dl class="typelist inheritance">
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">ClientEncryptionService</span></div>
</dd>
</dl>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><a class="xref" href="../core/EchoHub.Core.Contracts.IMessageEncryptionService.html">IMessageEncryptionService</a></div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a>
</div>
</dd></dl>
<h2 class="section" id="constructors">Constructors
</h2>
<a id="EchoHub_Client_Services_ClientEncryptionService__ctor_" data-uid="EchoHub.Client.Services.ClientEncryptionService.#ctor*"></a>
<h3 id="EchoHub_Client_Services_ClientEncryptionService__ctor" data-uid="EchoHub.Client.Services.ClientEncryptionService.#ctor">
ClientEncryptionService()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Services/ClientEncryptionService.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ClientEncryptionService()</code></pre>
</div>
<h2 class="section" id="properties">Properties
</h2>
<a id="EchoHub_Client_Services_ClientEncryptionService_EncryptDatabaseEnabled_" data-uid="EchoHub.Client.Services.ClientEncryptionService.EncryptDatabaseEnabled*"></a>
<h3 id="EchoHub_Client_Services_ClientEncryptionService_EncryptDatabaseEnabled" data-uid="EchoHub.Client.Services.ClientEncryptionService.EncryptDatabaseEnabled">
EncryptDatabaseEnabled
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Services/ClientEncryptionService.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Whether database content should be encrypted at rest (server setting).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool EncryptDatabaseEnabled { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Client_Services_ClientEncryptionService_IsInitialized_" data-uid="EchoHub.Client.Services.ClientEncryptionService.IsInitialized*"></a>
<h3 id="EchoHub_Client_Services_ClientEncryptionService_IsInitialized" data-uid="EchoHub.Client.Services.ClientEncryptionService.IsInitialized">
IsInitialized
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Services/ClientEncryptionService.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool IsInitialized { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="EchoHub_Client_Services_ClientEncryptionService_Decrypt_" data-uid="EchoHub.Client.Services.ClientEncryptionService.Decrypt*"></a>
<h3 id="EchoHub_Client_Services_ClientEncryptionService_Decrypt_System_String_" data-uid="EchoHub.Client.Services.ClientEncryptionService.Decrypt(System.String)">
Decrypt(string)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Services/ClientEncryptionService.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string Decrypt(string content)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>content</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Client_Services_ClientEncryptionService_DecryptNullable_" data-uid="EchoHub.Client.Services.ClientEncryptionService.DecryptNullable*"></a>
<h3 id="EchoHub_Client_Services_ClientEncryptionService_DecryptNullable_System_String_" data-uid="EchoHub.Client.Services.ClientEncryptionService.DecryptNullable(System.String)">
DecryptNullable(string?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Services/ClientEncryptionService.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string? DecryptNullable(string? value)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>value</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Client_Services_ClientEncryptionService_Encrypt_" data-uid="EchoHub.Client.Services.ClientEncryptionService.Encrypt*"></a>
<h3 id="EchoHub_Client_Services_ClientEncryptionService_Encrypt_System_String_" data-uid="EchoHub.Client.Services.ClientEncryptionService.Encrypt(System.String)">
Encrypt(string)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Services/ClientEncryptionService.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string Encrypt(string plaintext)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>plaintext</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Client_Services_ClientEncryptionService_EncryptNullable_" data-uid="EchoHub.Client.Services.ClientEncryptionService.EncryptNullable*"></a>
<h3 id="EchoHub_Client_Services_ClientEncryptionService_EncryptNullable_System_String_" data-uid="EchoHub.Client.Services.ClientEncryptionService.EncryptNullable(System.String)">
EncryptNullable(string?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Services/ClientEncryptionService.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string? EncryptNullable(string? value)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>value</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Client_Services_ClientEncryptionService_SetKey_" data-uid="EchoHub.Client.Services.ClientEncryptionService.SetKey*"></a>
<h3 id="EchoHub_Client_Services_ClientEncryptionService_SetKey_System_String_" data-uid="EchoHub.Client.Services.ClientEncryptionService.SetKey(System.String)">
SetKey(string)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Services/ClientEncryptionService.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Initialize with the server's encryption key (fetched after login).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void SetKey(string base64Key)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>base64Key</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Services/ClientEncryptionService.cs" class="edit-link">Edit this page</a>
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<div class='footer-custom'><div class='footer-inner'><span class='footer-brand'>EchoHub</span><span class='footer-sep'>&middot;</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>&middot;</span><a href='https://echohub.voidcube.cloud'>Website</a><span class='footer-sep'>&middot;</span><span class='footer-credit'>Built with <a href='https://dotnet.github.io/docfx'>DocFX</a></span></div></div>
</div>
</div>
</footer>
</body>
</html>
@@ -157,8 +157,8 @@ Class EchoHubConnection <a class="header-action link-secondary" title="View sou
<a id="EchoHub_Client_Services_EchoHubConnection__ctor_" data-uid="EchoHub.Client.Services.EchoHubConnection.#ctor*"></a>
<h3 id="EchoHub_Client_Services_EchoHubConnection__ctor_System_String_EchoHub_Client_Services_ApiClient_" data-uid="EchoHub.Client.Services.EchoHubConnection.#ctor(System.String,EchoHub.Client.Services.ApiClient)">
EchoHubConnection(string, ApiClient)
<h3 id="EchoHub_Client_Services_EchoHubConnection__ctor_System_String_EchoHub_Client_Services_ApiClient_EchoHub_Client_Services_ClientEncryptionService_" data-uid="EchoHub.Client.Services.EchoHubConnection.#ctor(System.String,EchoHub.Client.Services.ApiClient,EchoHub.Client.Services.ClientEncryptionService)">
EchoHubConnection(string, ApiClient, ClientEncryptionService)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Services/EchoHubConnection.cs"><i class="bi bi-code-slash"></i></a>
</h3>
@@ -166,7 +166,7 @@ Class EchoHubConnection <a class="header-action link-secondary" title="View sou
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public EchoHubConnection(string serverUrl, ApiClient apiClient)</code></pre>
<pre><code class="lang-csharp hljs">public EchoHubConnection(string serverUrl, ApiClient apiClient, ClientEncryptionService encryption)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -175,6 +175,8 @@ Class EchoHubConnection <a class="header-action link-secondary" title="View sou
<dd></dd>
<dt><code>apiClient</code> <a class="xref" href="EchoHub.Client.Services.ApiClient.html">ApiClient</a></dt>
<dd></dd>
<dt><code>encryption</code> <a class="xref" href="EchoHub.Client.Services.ClientEncryptionService.html">ClientEncryptionService</a></dt>
<dd></dd>
</dl>
+6
View File
@@ -98,6 +98,12 @@ Classes
<dt><a class="xref" href="EchoHub.Client.Services.ApiClient.html">ApiClient</a></dt>
<dd></dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Client.Services.ClientEncryptionService.html">ClientEncryptionService</a></dt>
<dd><p>Client-side encryption service. Uses the same AES-256-GCM format as the server
so messages are encrypted end-to-end between client and server.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Client.Services.EchoHubConnection.html">EchoHubConnection</a></dt>
<dd></dd>
+1 -1
View File
@@ -11,7 +11,7 @@
<link rel="stylesheet" href="../../public/docfx.min.css">
<link rel="stylesheet" href="../../public/main.css">
<meta name="docfx:navrel" content="../../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:tocrel" content="../toc.html">
<meta name="docfx:rel" content="../../">
+1 -1
View File
@@ -1,2 +1,2 @@
{"items":[{"name":"Overview","href":"index.html","topicHref":"index.html"}]}
{"order":100,"items":[{"name":"Overview","href":"index.html","topicHref":"index.html"}]}
@@ -0,0 +1,328 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Interface IMessageEncryptionService | EchoHub Documentation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Interface IMessageEncryptionService | EchoHub Documentation ">
<link rel="icon" href="../../images/hue_icon.svg">
<link rel="stylesheet" href="../../public/docfx.min.css">
<link rel="stylesheet" href="../../public/main.css">
<meta name="docfx:navrel" content="../../toc.html">
<meta name="docfx:tocrel" content="../toc.html">
<meta name="docfx:rel" content="../../">
<meta name="docfx:docurl" content="https://github.com/HueByte/EchoHub/new/master/apiSpec/new?filename=EchoHub_Core_Contracts_IMessageEncryptionService.md&amp;value=---%0Auid%3A%20EchoHub.Core.Contracts.IMessageEncryptionService%0Asummary%3A%20&#39;*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax&#39;%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../../index.html">
<img id="logo" class="svg" src="../../images/hue_icon.svg" alt="EchoHub">
EchoHub
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="EchoHub.Core.Contracts.IMessageEncryptionService">
<h1 id="EchoHub_Core_Contracts_IMessageEncryptionService" data-uid="EchoHub.Core.Contracts.IMessageEncryptionService" class="text-break">
Interface IMessageEncryptionService <a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IMessageEncryptionService.cs"><i class="bi bi-code-slash"></i></a>
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="EchoHub.html">EchoHub</a>.<a class="xref" href="EchoHub.Core.html">Core</a>.<a class="xref" href="EchoHub.Core.Contracts.html">Contracts</a></dd></dl>
<dl><dt>Assembly</dt><dd>EchoHub.Core.dll</dd></dl>
</div>
<div class="markdown summary"></div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public interface IMessageEncryptionService</code></pre>
</div>
<h2 class="section" id="properties">Properties
</h2>
<a id="EchoHub_Core_Contracts_IMessageEncryptionService_EncryptDatabaseEnabled_" data-uid="EchoHub.Core.Contracts.IMessageEncryptionService.EncryptDatabaseEnabled*"></a>
<h3 id="EchoHub_Core_Contracts_IMessageEncryptionService_EncryptDatabaseEnabled" data-uid="EchoHub.Core.Contracts.IMessageEncryptionService.EncryptDatabaseEnabled">
EncryptDatabaseEnabled
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IMessageEncryptionService.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Whether database content should be encrypted at rest (server setting).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">bool EncryptDatabaseEnabled { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="EchoHub_Core_Contracts_IMessageEncryptionService_Decrypt_" data-uid="EchoHub.Core.Contracts.IMessageEncryptionService.Decrypt*"></a>
<h3 id="EchoHub_Core_Contracts_IMessageEncryptionService_Decrypt_System_String_" data-uid="EchoHub.Core.Contracts.IMessageEncryptionService.Decrypt(System.String)">
Decrypt(string)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IMessageEncryptionService.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">string Decrypt(string content)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>content</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_Contracts_IMessageEncryptionService_DecryptNullable_" data-uid="EchoHub.Core.Contracts.IMessageEncryptionService.DecryptNullable*"></a>
<h3 id="EchoHub_Core_Contracts_IMessageEncryptionService_DecryptNullable_System_String_" data-uid="EchoHub.Core.Contracts.IMessageEncryptionService.DecryptNullable(System.String)">
DecryptNullable(string?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IMessageEncryptionService.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">string? DecryptNullable(string? value)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>value</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_Contracts_IMessageEncryptionService_Encrypt_" data-uid="EchoHub.Core.Contracts.IMessageEncryptionService.Encrypt*"></a>
<h3 id="EchoHub_Core_Contracts_IMessageEncryptionService_Encrypt_System_String_" data-uid="EchoHub.Core.Contracts.IMessageEncryptionService.Encrypt(System.String)">
Encrypt(string)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IMessageEncryptionService.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">string Encrypt(string plaintext)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>plaintext</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_Contracts_IMessageEncryptionService_EncryptNullable_" data-uid="EchoHub.Core.Contracts.IMessageEncryptionService.EncryptNullable*"></a>
<h3 id="EchoHub_Core_Contracts_IMessageEncryptionService_EncryptNullable_System_String_" data-uid="EchoHub.Core.Contracts.IMessageEncryptionService.EncryptNullable(System.String)">
EncryptNullable(string?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IMessageEncryptionService.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">string? EncryptNullable(string? value)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>value</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IMessageEncryptionService.cs" class="edit-link">Edit this page</a>
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<div class='footer-custom'><div class='footer-inner'><span class='footer-brand'>EchoHub</span><span class='footer-sep'>&middot;</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>&middot;</span><a href='https://echohub.voidcube.cloud'>Website</a><span class='footer-sep'>&middot;</span><span class='footer-credit'>Built with <a href='https://dotnet.github.io/docfx'>DocFX</a></span></div></div>
</div>
</div>
</footer>
</body>
</html>
+4
View File
@@ -114,6 +114,10 @@ Interfaces
<dd><p>Methods the server can invoke on connected clients.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Core.Contracts.IMessageEncryptionService.html">IMessageEncryptionService</a></dt>
<dd></dd>
</dl>
</article>
@@ -0,0 +1,590 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class EncryptionKeyResponse | EchoHub Documentation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class EncryptionKeyResponse | EchoHub Documentation ">
<link rel="icon" href="../../images/hue_icon.svg">
<link rel="stylesheet" href="../../public/docfx.min.css">
<link rel="stylesheet" href="../../public/main.css">
<meta name="docfx:navrel" content="../../toc.html">
<meta name="docfx:tocrel" content="../toc.html">
<meta name="docfx:rel" content="../../">
<meta name="docfx:docurl" content="https://github.com/HueByte/EchoHub/new/master/apiSpec/new?filename=EchoHub_Core_DTOs_EncryptionKeyResponse.md&amp;value=---%0Auid%3A%20EchoHub.Core.DTOs.EncryptionKeyResponse%0Asummary%3A%20&#39;*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax&#39;%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../../index.html">
<img id="logo" class="svg" src="../../images/hue_icon.svg" alt="EchoHub">
EchoHub
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="EchoHub.Core.DTOs.EncryptionKeyResponse">
<h1 id="EchoHub_Core_DTOs_EncryptionKeyResponse" data-uid="EchoHub.Core.DTOs.EncryptionKeyResponse" class="text-break">
Class EncryptionKeyResponse <a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ServerDtos.cs"><i class="bi bi-code-slash"></i></a>
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="EchoHub.html">EchoHub</a>.<a class="xref" href="EchoHub.Core.html">Core</a>.<a class="xref" href="EchoHub.Core.DTOs.html">DTOs</a></dd></dl>
<dl><dt>Assembly</dt><dd>EchoHub.Core.dll</dd></dl>
</div>
<div class="markdown summary"></div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public record EncryptionKeyResponse : IEquatable&lt;EncryptionKeyResponse&gt;</code></pre>
</div>
<dl class="typelist inheritance">
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">EncryptionKeyResponse</span></div>
</dd>
</dl>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iequatable-1">IEquatable</a>&lt;<a class="xref" href="EchoHub.Core.DTOs.EncryptionKeyResponse.html">EncryptionKeyResponse</a>&gt;</div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone">object.MemberwiseClone()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
</dd></dl>
<h2 class="section" id="constructors">Constructors
</h2>
<a id="EchoHub_Core_DTOs_EncryptionKeyResponse__ctor_" data-uid="EchoHub.Core.DTOs.EncryptionKeyResponse.#ctor*"></a>
<h3 id="EchoHub_Core_DTOs_EncryptionKeyResponse__ctor_EchoHub_Core_DTOs_EncryptionKeyResponse_" data-uid="EchoHub.Core.DTOs.EncryptionKeyResponse.#ctor(EchoHub.Core.DTOs.EncryptionKeyResponse)">
EncryptionKeyResponse(EncryptionKeyResponse)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ServerDtos.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">protected EncryptionKeyResponse(EncryptionKeyResponse original)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>original</code> <a class="xref" href="EchoHub.Core.DTOs.EncryptionKeyResponse.html">EncryptionKeyResponse</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_DTOs_EncryptionKeyResponse__ctor_" data-uid="EchoHub.Core.DTOs.EncryptionKeyResponse.#ctor*"></a>
<h3 id="EchoHub_Core_DTOs_EncryptionKeyResponse__ctor_System_String_" data-uid="EchoHub.Core.DTOs.EncryptionKeyResponse.#ctor(System.String)">
EncryptionKeyResponse(string)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ServerDtos.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public EncryptionKeyResponse(string Key)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>Key</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="properties">Properties
</h2>
<a id="EchoHub_Core_DTOs_EncryptionKeyResponse_EqualityContract_" data-uid="EchoHub.Core.DTOs.EncryptionKeyResponse.EqualityContract*"></a>
<h3 id="EchoHub_Core_DTOs_EncryptionKeyResponse_EqualityContract" data-uid="EchoHub.Core.DTOs.EncryptionKeyResponse.EqualityContract">
EqualityContract
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ServerDtos.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">protected virtual Type EqualityContract { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.type">Type</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_DTOs_EncryptionKeyResponse_Key_" data-uid="EchoHub.Core.DTOs.EncryptionKeyResponse.Key*"></a>
<h3 id="EchoHub_Core_DTOs_EncryptionKeyResponse_Key" data-uid="EchoHub.Core.DTOs.EncryptionKeyResponse.Key">
Key
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ServerDtos.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string Key { get; init; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="EchoHub_Core_DTOs_EncryptionKeyResponse_Deconstruct_" data-uid="EchoHub.Core.DTOs.EncryptionKeyResponse.Deconstruct*"></a>
<h3 id="EchoHub_Core_DTOs_EncryptionKeyResponse_Deconstruct_System_String__" data-uid="EchoHub.Core.DTOs.EncryptionKeyResponse.Deconstruct(System.String@)">
Deconstruct(out string)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ServerDtos.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void Deconstruct(out string Key)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>Key</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_DTOs_EncryptionKeyResponse_Equals_" data-uid="EchoHub.Core.DTOs.EncryptionKeyResponse.Equals*"></a>
<h3 id="EchoHub_Core_DTOs_EncryptionKeyResponse_Equals_EchoHub_Core_DTOs_EncryptionKeyResponse_" data-uid="EchoHub.Core.DTOs.EncryptionKeyResponse.Equals(EchoHub.Core.DTOs.EncryptionKeyResponse)">
Equals(EncryptionKeyResponse?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ServerDtos.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public virtual bool Equals(EncryptionKeyResponse? other)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>other</code> <a class="xref" href="EchoHub.Core.DTOs.EncryptionKeyResponse.html">EncryptionKeyResponse</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_DTOs_EncryptionKeyResponse_Equals_" data-uid="EchoHub.Core.DTOs.EncryptionKeyResponse.Equals*"></a>
<h3 id="EchoHub_Core_DTOs_EncryptionKeyResponse_Equals_System_Object_" data-uid="EchoHub.Core.DTOs.EncryptionKeyResponse.Equals(System.Object)">
Equals(object?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ServerDtos.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public override bool Equals(object? obj)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>obj</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_DTOs_EncryptionKeyResponse_GetHashCode_" data-uid="EchoHub.Core.DTOs.EncryptionKeyResponse.GetHashCode*"></a>
<h3 id="EchoHub_Core_DTOs_EncryptionKeyResponse_GetHashCode" data-uid="EchoHub.Core.DTOs.EncryptionKeyResponse.GetHashCode">
GetHashCode()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ServerDtos.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public override int GetHashCode()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_DTOs_EncryptionKeyResponse_PrintMembers_" data-uid="EchoHub.Core.DTOs.EncryptionKeyResponse.PrintMembers*"></a>
<h3 id="EchoHub_Core_DTOs_EncryptionKeyResponse_PrintMembers_System_Text_StringBuilder_" data-uid="EchoHub.Core.DTOs.EncryptionKeyResponse.PrintMembers(System.Text.StringBuilder)">
PrintMembers(StringBuilder)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ServerDtos.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">protected virtual bool PrintMembers(StringBuilder builder)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>builder</code> <span class="xref">StringBuilder</span></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_DTOs_EncryptionKeyResponse_ToString_" data-uid="EchoHub.Core.DTOs.EncryptionKeyResponse.ToString*"></a>
<h3 id="EchoHub_Core_DTOs_EncryptionKeyResponse_ToString" data-uid="EchoHub.Core.DTOs.EncryptionKeyResponse.ToString">
ToString()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ServerDtos.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public override string ToString()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="operators">Operators
</h2>
<a id="EchoHub_Core_DTOs_EncryptionKeyResponse_op_Equality_" data-uid="EchoHub.Core.DTOs.EncryptionKeyResponse.op_Equality*"></a>
<h3 id="EchoHub_Core_DTOs_EncryptionKeyResponse_op_Equality_EchoHub_Core_DTOs_EncryptionKeyResponse_EchoHub_Core_DTOs_EncryptionKeyResponse_" data-uid="EchoHub.Core.DTOs.EncryptionKeyResponse.op_Equality(EchoHub.Core.DTOs.EncryptionKeyResponse,EchoHub.Core.DTOs.EncryptionKeyResponse)">
operator ==(EncryptionKeyResponse?, EncryptionKeyResponse?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ServerDtos.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static bool operator ==(EncryptionKeyResponse? left, EncryptionKeyResponse? right)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>left</code> <a class="xref" href="EchoHub.Core.DTOs.EncryptionKeyResponse.html">EncryptionKeyResponse</a></dt>
<dd></dd>
<dt><code>right</code> <a class="xref" href="EchoHub.Core.DTOs.EncryptionKeyResponse.html">EncryptionKeyResponse</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_DTOs_EncryptionKeyResponse_op_Inequality_" data-uid="EchoHub.Core.DTOs.EncryptionKeyResponse.op_Inequality*"></a>
<h3 id="EchoHub_Core_DTOs_EncryptionKeyResponse_op_Inequality_EchoHub_Core_DTOs_EncryptionKeyResponse_EchoHub_Core_DTOs_EncryptionKeyResponse_" data-uid="EchoHub.Core.DTOs.EncryptionKeyResponse.op_Inequality(EchoHub.Core.DTOs.EncryptionKeyResponse,EchoHub.Core.DTOs.EncryptionKeyResponse)">
operator !=(EncryptionKeyResponse?, EncryptionKeyResponse?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ServerDtos.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static bool operator !=(EncryptionKeyResponse? left, EncryptionKeyResponse? right)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>left</code> <a class="xref" href="EchoHub.Core.DTOs.EncryptionKeyResponse.html">EncryptionKeyResponse</a></dt>
<dd></dd>
<dt><code>right</code> <a class="xref" href="EchoHub.Core.DTOs.EncryptionKeyResponse.html">EncryptionKeyResponse</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ServerDtos.cs" class="edit-link">Edit this page</a>
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<div class='footer-custom'><div class='footer-inner'><span class='footer-brand'>EchoHub</span><span class='footer-sep'>&middot;</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>&middot;</span><a href='https://echohub.voidcube.cloud'>Website</a><span class='footer-sep'>&middot;</span><span class='footer-credit'>Built with <a href='https://dotnet.github.io/docfx'>DocFX</a></span></div></div>
</div>
</div>
</footer>
</body>
</html>
+4
View File
@@ -118,6 +118,10 @@ Classes
<dt><a class="xref" href="EchoHub.Core.DTOs.EmbedDto.html">EmbedDto</a></dt>
<dd></dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Core.DTOs.EncryptionKeyResponse.html">EncryptionKeyResponse</a></dt>
<dd></dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Core.DTOs.ErrorResponse.html">ErrorResponse</a></dt>
<dd></dd>
+1 -1
View File
@@ -11,7 +11,7 @@
<link rel="stylesheet" href="../../public/docfx.min.css">
<link rel="stylesheet" href="../../public/main.css">
<meta name="docfx:navrel" content="../../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:tocrel" content="../toc.html">
<meta name="docfx:rel" content="../../">
+1 -1
View File
@@ -1,2 +1,2 @@
{"items":[{"name":"Overview","href":"index.html","topicHref":"index.html"}]}
{"order":100,"items":[{"name":"Overview","href":"index.html","topicHref":"index.html"}]}
@@ -160,8 +160,8 @@ Class IrcBroadcaster <a class="header-action link-secondary" title="View source
<a id="EchoHub_Server_Irc_IrcBroadcaster__ctor_" data-uid="EchoHub.Server.Irc.IrcBroadcaster.#ctor*"></a>
<h3 id="EchoHub_Server_Irc_IrcBroadcaster__ctor_EchoHub_Server_Irc_IrcGatewayService_" data-uid="EchoHub.Server.Irc.IrcBroadcaster.#ctor(EchoHub.Server.Irc.IrcGatewayService)">
IrcBroadcaster(IrcGatewayService)
<h3 id="EchoHub_Server_Irc_IrcBroadcaster__ctor_EchoHub_Server_Irc_IrcGatewayService_EchoHub_Core_Contracts_IMessageEncryptionService_" data-uid="EchoHub.Server.Irc.IrcBroadcaster.#ctor(EchoHub.Server.Irc.IrcGatewayService,EchoHub.Core.Contracts.IMessageEncryptionService)">
IrcBroadcaster(IrcGatewayService, IMessageEncryptionService)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server.Irc/IrcBroadcaster.cs"><i class="bi bi-code-slash"></i></a>
</h3>
@@ -169,13 +169,15 @@ Class IrcBroadcaster <a class="header-action link-secondary" title="View source
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public IrcBroadcaster(IrcGatewayService gateway)</code></pre>
<pre><code class="lang-csharp hljs">public IrcBroadcaster(IrcGatewayService gateway, IMessageEncryptionService encryption)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>gateway</code> <a class="xref" href="EchoHub.Server.Irc.IrcGatewayService.html">IrcGatewayService</a></dt>
<dd></dd>
<dt><code>encryption</code> <a class="xref" href="../core/EchoHub.Core.Contracts.IMessageEncryptionService.html">IMessageEncryptionService</a></dt>
<dd></dd>
</dl>
@@ -159,8 +159,8 @@ public class ChannelsController : ControllerBase</code></pre>
<a id="EchoHub_Server_Controllers_ChannelsController__ctor_" data-uid="EchoHub.Server.Controllers.ChannelsController.#ctor*"></a>
<h3 id="EchoHub_Server_Controllers_ChannelsController__ctor_EchoHub_Server_Data_EchoHubDbContext_EchoHub_Server_Services_FileStorageService_EchoHub_Server_Services_ImageToAsciiService_System_Net_Http_IHttpClientFactory_EchoHub_Core_Contracts_IChatService_" data-uid="EchoHub.Server.Controllers.ChannelsController.#ctor(EchoHub.Server.Data.EchoHubDbContext,EchoHub.Server.Services.FileStorageService,EchoHub.Server.Services.ImageToAsciiService,System.Net.Http.IHttpClientFactory,EchoHub.Core.Contracts.IChatService)">
ChannelsController(EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService)
<h3 id="EchoHub_Server_Controllers_ChannelsController__ctor_EchoHub_Server_Data_EchoHubDbContext_EchoHub_Server_Services_FileStorageService_EchoHub_Server_Services_ImageToAsciiService_System_Net_Http_IHttpClientFactory_EchoHub_Core_Contracts_IChatService_EchoHub_Core_Contracts_IMessageEncryptionService_" data-uid="EchoHub.Server.Controllers.ChannelsController.#ctor(EchoHub.Server.Data.EchoHubDbContext,EchoHub.Server.Services.FileStorageService,EchoHub.Server.Services.ImageToAsciiService,System.Net.Http.IHttpClientFactory,EchoHub.Core.Contracts.IChatService,EchoHub.Core.Contracts.IMessageEncryptionService)">
ChannelsController(EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService, IMessageEncryptionService)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Controllers/ChannelsController.cs"><i class="bi bi-code-slash"></i></a>
</h3>
@@ -168,7 +168,7 @@ public class ChannelsController : ControllerBase</code></pre>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ChannelsController(EchoHubDbContext db, FileStorageService fileStorage, ImageToAsciiService asciiService, IHttpClientFactory httpClientFactory, IChatService chatService)</code></pre>
<pre><code class="lang-csharp hljs">public ChannelsController(EchoHubDbContext db, FileStorageService fileStorage, ImageToAsciiService asciiService, IHttpClientFactory httpClientFactory, IChatService chatService, IMessageEncryptionService encryption)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -183,6 +183,8 @@ public class ChannelsController : ControllerBase</code></pre>
<dd></dd>
<dt><code>chatService</code> <a class="xref" href="../core/EchoHub.Core.Contracts.IChatService.html">IChatService</a></dt>
<dd></dd>
<dt><code>encryption</code> <a class="xref" href="../core/EchoHub.Core.Contracts.IMessageEncryptionService.html">IMessageEncryptionService</a></dt>
<dd></dd>
</dl>
@@ -192,6 +192,40 @@ public class ServerController : ControllerBase</code></pre>
</h2>
<a id="EchoHub_Server_Controllers_ServerController_GetEncryptionKey_" data-uid="EchoHub.Server.Controllers.ServerController.GetEncryptionKey*"></a>
<h3 id="EchoHub_Server_Controllers_ServerController_GetEncryptionKey" data-uid="EchoHub.Server.Controllers.ServerController.GetEncryptionKey">
GetEncryptionKey()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Controllers/ServerController.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">[HttpGet(&quot;encryption-key&quot;)]
[Authorize]
[EnableRateLimiting(&quot;auth&quot;)]
public IActionResult GetEncryptionKey()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><span class="xref">IActionResult</span></dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Controllers_ServerController_GetInfo_" data-uid="EchoHub.Server.Controllers.ServerController.GetInfo*"></a>
<h3 id="EchoHub_Server_Controllers_ServerController_GetInfo" data-uid="EchoHub.Server.Controllers.ServerController.GetInfo">
@@ -0,0 +1,306 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class AddEncryptionSupport | EchoHub Documentation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class AddEncryptionSupport | EchoHub Documentation ">
<link rel="icon" href="../../images/hue_icon.svg">
<link rel="stylesheet" href="../../public/docfx.min.css">
<link rel="stylesheet" href="../../public/main.css">
<meta name="docfx:navrel" content="../../toc.html">
<meta name="docfx:tocrel" content="../toc.html">
<meta name="docfx:rel" content="../../">
<meta name="docfx:docurl" content="https://github.com/HueByte/EchoHub/new/master/apiSpec/new?filename=EchoHub_Server_Data_Migrations_AddEncryptionSupport.md&amp;value=---%0Auid%3A%20EchoHub.Server.Data.Migrations.AddEncryptionSupport%0Asummary%3A%20&#39;*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax&#39;%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../../index.html">
<img id="logo" class="svg" src="../../images/hue_icon.svg" alt="EchoHub">
EchoHub
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="EchoHub.Server.Data.Migrations.AddEncryptionSupport">
<h1 id="EchoHub_Server_Data_Migrations_AddEncryptionSupport" data-uid="EchoHub.Server.Data.Migrations.AddEncryptionSupport" class="text-break">
Class AddEncryptionSupport <a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Data/Migrations/20260220133627_AddEncryptionSupport.Designer.cs"><i class="bi bi-code-slash"></i></a>
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="EchoHub.html">EchoHub</a>.<a class="xref" href="EchoHub.Server.html">Server</a>.<a class="xref" href="EchoHub.Server.Data.html">Data</a>.<a class="xref" href="EchoHub.Server.Data.Migrations.html">Migrations</a></dd></dl>
<dl><dt>Assembly</dt><dd>EchoHub.Server.dll</dd></dl>
</div>
<div class="markdown summary"></div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">[DbContext(typeof(EchoHubDbContext))]
[Migration(&quot;20260220133627_AddEncryptionSupport&quot;)]
public class AddEncryptionSupport : Migration</code></pre>
</div>
<dl class="typelist inheritance">
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">Migration</span></div>
<div><span class="xref">AddEncryptionSupport</span></div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone">object.MemberwiseClone()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a>
</div>
</dd></dl>
<h2 class="section" id="constructors">Constructors
</h2>
<a id="EchoHub_Server_Data_Migrations_AddEncryptionSupport__ctor_" data-uid="EchoHub.Server.Data.Migrations.AddEncryptionSupport.#ctor*"></a>
<h3 id="EchoHub_Server_Data_Migrations_AddEncryptionSupport__ctor" data-uid="EchoHub.Server.Data.Migrations.AddEncryptionSupport.#ctor">
AddEncryptionSupport()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Data/Migrations/20260220133627_AddEncryptionSupport.Designer.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public AddEncryptionSupport()</code></pre>
</div>
<h2 class="section" id="methods">Methods
</h2>
<a id="EchoHub_Server_Data_Migrations_AddEncryptionSupport_BuildTargetModel_" data-uid="EchoHub.Server.Data.Migrations.AddEncryptionSupport.BuildTargetModel*"></a>
<h3 id="EchoHub_Server_Data_Migrations_AddEncryptionSupport_BuildTargetModel_Microsoft_EntityFrameworkCore_ModelBuilder_" data-uid="EchoHub.Server.Data.Migrations.AddEncryptionSupport.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
BuildTargetModel(ModelBuilder)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Data/Migrations/20260220133627_AddEncryptionSupport.Designer.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">protected override void BuildTargetModel(ModelBuilder modelBuilder)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>modelBuilder</code> <span class="xref">ModelBuilder</span></dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Data_Migrations_AddEncryptionSupport_Down_" data-uid="EchoHub.Server.Data.Migrations.AddEncryptionSupport.Down*"></a>
<h3 id="EchoHub_Server_Data_Migrations_AddEncryptionSupport_Down_Microsoft_EntityFrameworkCore_Migrations_MigrationBuilder_" data-uid="EchoHub.Server.Data.Migrations.AddEncryptionSupport.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
Down(MigrationBuilder)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Data/Migrations/20260220133627_AddEncryptionSupport.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">protected override void Down(MigrationBuilder migrationBuilder)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>migrationBuilder</code> <span class="xref">MigrationBuilder</span></dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Data_Migrations_AddEncryptionSupport_Up_" data-uid="EchoHub.Server.Data.Migrations.AddEncryptionSupport.Up*"></a>
<h3 id="EchoHub_Server_Data_Migrations_AddEncryptionSupport_Up_Microsoft_EntityFrameworkCore_Migrations_MigrationBuilder_" data-uid="EchoHub.Server.Data.Migrations.AddEncryptionSupport.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
Up(MigrationBuilder)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Data/Migrations/20260220133627_AddEncryptionSupport.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">protected override void Up(MigrationBuilder migrationBuilder)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>migrationBuilder</code> <span class="xref">MigrationBuilder</span></dt>
<dd></dd>
</dl>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Data/Migrations/20260220133627_AddEncryptionSupport.Designer.cs" class="edit-link">Edit this page</a>
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<div class='footer-custom'><div class='footer-inner'><span class='footer-brand'>EchoHub</span><span class='footer-sep'>&middot;</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>&middot;</span><a href='https://echohub.voidcube.cloud'>Website</a><span class='footer-sep'>&middot;</span><span class='footer-credit'>Built with <a href='https://dotnet.github.io/docfx'>DocFX</a></span></div></div>
</div>
</div>
</footer>
</body>
</html>
@@ -102,6 +102,10 @@ Classes
<dt><a class="xref" href="EchoHub.Server.Data.Migrations.AddChannelMembership.html">AddChannelMembership</a></dt>
<dd></dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Server.Data.Migrations.AddEncryptionSupport.html">AddEncryptionSupport</a></dt>
<dd></dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Server.Data.Migrations.AddMessageEmbed.html">AddMessageEmbed</a></dt>
<dd></dd>
@@ -160,8 +160,8 @@ Class ChatService <a class="header-action link-secondary" title="View source" h
<a id="EchoHub_Server_Services_ChatService__ctor_" data-uid="EchoHub.Server.Services.ChatService.#ctor*"></a>
<h3 id="EchoHub_Server_Services_ChatService__ctor_Microsoft_Extensions_DependencyInjection_IServiceScopeFactory_EchoHub_Server_Services_PresenceTracker_System_Collections_Generic_IEnumerable_EchoHub_Core_Contracts_IChatBroadcaster__EchoHub_Server_Services_LinkEmbedService_Microsoft_Extensions_Logging_ILogger_EchoHub_Server_Services_ChatService__" data-uid="EchoHub.Server.Services.ChatService.#ctor(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory,EchoHub.Server.Services.PresenceTracker,System.Collections.Generic.IEnumerable{EchoHub.Core.Contracts.IChatBroadcaster},EchoHub.Server.Services.LinkEmbedService,Microsoft.Extensions.Logging.ILogger{EchoHub.Server.Services.ChatService})">
ChatService(IServiceScopeFactory, PresenceTracker, IEnumerable&lt;IChatBroadcaster&gt;, LinkEmbedService, ILogger&lt;ChatService&gt;)
<h3 id="EchoHub_Server_Services_ChatService__ctor_Microsoft_Extensions_DependencyInjection_IServiceScopeFactory_EchoHub_Server_Services_PresenceTracker_System_Collections_Generic_IEnumerable_EchoHub_Core_Contracts_IChatBroadcaster__EchoHub_Server_Services_LinkEmbedService_EchoHub_Core_Contracts_IMessageEncryptionService_Microsoft_Extensions_Logging_ILogger_EchoHub_Server_Services_ChatService__" data-uid="EchoHub.Server.Services.ChatService.#ctor(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory,EchoHub.Server.Services.PresenceTracker,System.Collections.Generic.IEnumerable{EchoHub.Core.Contracts.IChatBroadcaster},EchoHub.Server.Services.LinkEmbedService,EchoHub.Core.Contracts.IMessageEncryptionService,Microsoft.Extensions.Logging.ILogger{EchoHub.Server.Services.ChatService})">
ChatService(IServiceScopeFactory, PresenceTracker, IEnumerable&lt;IChatBroadcaster&gt;, LinkEmbedService, IMessageEncryptionService, ILogger&lt;ChatService&gt;)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/ChatService.cs"><i class="bi bi-code-slash"></i></a>
</h3>
@@ -169,7 +169,7 @@ Class ChatService <a class="header-action link-secondary" title="View source" h
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ChatService(IServiceScopeFactory scopeFactory, PresenceTracker presenceTracker, IEnumerable&lt;IChatBroadcaster&gt; broadcasters, LinkEmbedService embedService, ILogger&lt;ChatService&gt; logger)</code></pre>
<pre><code class="lang-csharp hljs">public ChatService(IServiceScopeFactory scopeFactory, PresenceTracker presenceTracker, IEnumerable&lt;IChatBroadcaster&gt; broadcasters, LinkEmbedService embedService, IMessageEncryptionService encryption, ILogger&lt;ChatService&gt; logger)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -182,6 +182,8 @@ Class ChatService <a class="header-action link-secondary" title="View source" h
<dd></dd>
<dt><code>embedService</code> <a class="xref" href="EchoHub.Server.Services.LinkEmbedService.html">LinkEmbedService</a></dt>
<dd></dd>
<dt><code>encryption</code> <a class="xref" href="../core/EchoHub.Core.Contracts.IMessageEncryptionService.html">IMessageEncryptionService</a></dt>
<dd></dd>
<dt><code>logger</code> <span class="xref">ILogger</span>&lt;<a class="xref" href="EchoHub.Server.Services.ChatService.html">ChatService</a>&gt;</dt>
<dd></dd>
</dl>
@@ -0,0 +1,403 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class MessageEncryptionService | EchoHub Documentation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class MessageEncryptionService | EchoHub Documentation ">
<link rel="icon" href="../../images/hue_icon.svg">
<link rel="stylesheet" href="../../public/docfx.min.css">
<link rel="stylesheet" href="../../public/main.css">
<meta name="docfx:navrel" content="../../toc.html">
<meta name="docfx:tocrel" content="../toc.html">
<meta name="docfx:rel" content="../../">
<meta name="docfx:docurl" content="https://github.com/HueByte/EchoHub/new/master/apiSpec/new?filename=EchoHub_Server_Services_MessageEncryptionService.md&amp;value=---%0Auid%3A%20EchoHub.Server.Services.MessageEncryptionService%0Asummary%3A%20&#39;*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax&#39;%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../../index.html">
<img id="logo" class="svg" src="../../images/hue_icon.svg" alt="EchoHub">
EchoHub
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="EchoHub.Server.Services.MessageEncryptionService">
<h1 id="EchoHub_Server_Services_MessageEncryptionService" data-uid="EchoHub.Server.Services.MessageEncryptionService" class="text-break">
Class MessageEncryptionService <a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/MessageEncryptionService.cs"><i class="bi bi-code-slash"></i></a>
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="EchoHub.html">EchoHub</a>.<a class="xref" href="EchoHub.Server.html">Server</a>.<a class="xref" href="EchoHub.Server.Services.html">Services</a></dd></dl>
<dl><dt>Assembly</dt><dd>EchoHub.Server.dll</dd></dl>
</div>
<div class="markdown summary"></div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class MessageEncryptionService : IMessageEncryptionService</code></pre>
</div>
<dl class="typelist inheritance">
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">MessageEncryptionService</span></div>
</dd>
</dl>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><a class="xref" href="../core/EchoHub.Core.Contracts.IMessageEncryptionService.html">IMessageEncryptionService</a></div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone">object.MemberwiseClone()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a>
</div>
</dd></dl>
<h2 class="section" id="constructors">Constructors
</h2>
<a id="EchoHub_Server_Services_MessageEncryptionService__ctor_" data-uid="EchoHub.Server.Services.MessageEncryptionService.#ctor*"></a>
<h3 id="EchoHub_Server_Services_MessageEncryptionService__ctor_Microsoft_Extensions_Configuration_IConfiguration_Microsoft_Extensions_Logging_ILogger_EchoHub_Server_Services_MessageEncryptionService__" data-uid="EchoHub.Server.Services.MessageEncryptionService.#ctor(Microsoft.Extensions.Configuration.IConfiguration,Microsoft.Extensions.Logging.ILogger{EchoHub.Server.Services.MessageEncryptionService})">
MessageEncryptionService(IConfiguration, ILogger&lt;MessageEncryptionService&gt;)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/MessageEncryptionService.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public MessageEncryptionService(IConfiguration configuration, ILogger&lt;MessageEncryptionService&gt; logger)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>configuration</code> <span class="xref">IConfiguration</span></dt>
<dd></dd>
<dt><code>logger</code> <span class="xref">ILogger</span>&lt;<a class="xref" href="EchoHub.Server.Services.MessageEncryptionService.html">MessageEncryptionService</a>&gt;</dt>
<dd></dd>
</dl>
<h2 class="section" id="properties">Properties
</h2>
<a id="EchoHub_Server_Services_MessageEncryptionService_EncryptDatabaseEnabled_" data-uid="EchoHub.Server.Services.MessageEncryptionService.EncryptDatabaseEnabled*"></a>
<h3 id="EchoHub_Server_Services_MessageEncryptionService_EncryptDatabaseEnabled" data-uid="EchoHub.Server.Services.MessageEncryptionService.EncryptDatabaseEnabled">
EncryptDatabaseEnabled
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/MessageEncryptionService.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Whether database content should be encrypted at rest (server setting).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool EncryptDatabaseEnabled { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="EchoHub_Server_Services_MessageEncryptionService_Decrypt_" data-uid="EchoHub.Server.Services.MessageEncryptionService.Decrypt*"></a>
<h3 id="EchoHub_Server_Services_MessageEncryptionService_Decrypt_System_String_" data-uid="EchoHub.Server.Services.MessageEncryptionService.Decrypt(System.String)">
Decrypt(string)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/MessageEncryptionService.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string Decrypt(string content)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>content</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Services_MessageEncryptionService_DecryptNullable_" data-uid="EchoHub.Server.Services.MessageEncryptionService.DecryptNullable*"></a>
<h3 id="EchoHub_Server_Services_MessageEncryptionService_DecryptNullable_System_String_" data-uid="EchoHub.Server.Services.MessageEncryptionService.DecryptNullable(System.String)">
DecryptNullable(string?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/MessageEncryptionService.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string? DecryptNullable(string? value)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>value</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Services_MessageEncryptionService_Encrypt_" data-uid="EchoHub.Server.Services.MessageEncryptionService.Encrypt*"></a>
<h3 id="EchoHub_Server_Services_MessageEncryptionService_Encrypt_System_String_" data-uid="EchoHub.Server.Services.MessageEncryptionService.Encrypt(System.String)">
Encrypt(string)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/MessageEncryptionService.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string Encrypt(string plaintext)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>plaintext</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Services_MessageEncryptionService_EncryptNullable_" data-uid="EchoHub.Server.Services.MessageEncryptionService.EncryptNullable*"></a>
<h3 id="EchoHub_Server_Services_MessageEncryptionService_EncryptNullable_System_String_" data-uid="EchoHub.Server.Services.MessageEncryptionService.EncryptNullable(System.String)">
EncryptNullable(string?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/MessageEncryptionService.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string? EncryptNullable(string? value)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>value</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/MessageEncryptionService.cs" class="edit-link">Edit this page</a>
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<div class='footer-custom'><div class='footer-inner'><span class='footer-brand'>EchoHub</span><span class='footer-sep'>&middot;</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>&middot;</span><a href='https://echohub.voidcube.cloud'>Website</a><span class='footer-sep'>&middot;</span><span class='footer-credit'>Built with <a href='https://dotnet.github.io/docfx'>DocFX</a></span></div></div>
</div>
</div>
</footer>
</body>
</html>
+4
View File
@@ -114,6 +114,10 @@ Classes
<dt><a class="xref" href="EchoHub.Server.Services.LinkEmbedService.html">LinkEmbedService</a></dt>
<dd></dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Server.Services.MessageEncryptionService.html">MessageEncryptionService</a></dt>
<dd></dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Server.Services.PresenceTracker.html">PresenceTracker</a></dt>
<dd></dd>
+39 -3
View File
@@ -78,6 +78,9 @@
<li>
<a href="client/EchoHub.Client.Services.ApiClient.html" name="" title="ApiClient">ApiClient</a>
</li>
<li>
<a href="client/EchoHub.Client.Services.ClientEncryptionService.html" name="" title="ClientEncryptionService">ClientEncryptionService</a>
</li>
<li>
<a href="client/EchoHub.Client.Services.EchoHubConnection.html" name="" title="EchoHubConnection">EchoHubConnection</a>
</li>
@@ -172,7 +175,14 @@
</ul>
</li>
<li>
<a href="client-articles/index.html" name="client-articles/toc.html" title="Articles">Articles</a>
<span class="expand-stub"></span>
<a>Articles</a>
<ul class="nav level3">
<li>
<a href="client-articles/index.html" name="" title="Overview">Overview</a>
</li>
</ul>
</li>
</ul>
</li>
@@ -216,6 +226,9 @@
<li>
<a href="core/EchoHub.Core.Contracts.IEchoHubClient.html" name="" title="IEchoHubClient">IEchoHubClient</a>
</li>
<li>
<a href="core/EchoHub.Core.Contracts.IMessageEncryptionService.html" name="" title="IMessageEncryptionService">IMessageEncryptionService</a>
</li>
</ul>
</li>
<li>
@@ -241,6 +254,9 @@
<li>
<a href="core/EchoHub.Core.DTOs.EmbedDto.html" name="" title="EmbedDto">EmbedDto</a>
</li>
<li>
<a href="core/EchoHub.Core.DTOs.EncryptionKeyResponse.html" name="" title="EncryptionKeyResponse">EncryptionKeyResponse</a>
</li>
<li>
<a href="core/EchoHub.Core.DTOs.ErrorResponse.html" name="" title="ErrorResponse">ErrorResponse</a>
</li>
@@ -331,7 +347,14 @@
</ul>
</li>
<li>
<a href="core-articles/index.html" name="core-articles/toc.html" title="Articles">Articles</a>
<span class="expand-stub"></span>
<a>Articles</a>
<ul class="nav level3">
<li>
<a href="core-articles/index.html" name="" title="Overview">Overview</a>
</li>
</ul>
</li>
</ul>
</li>
@@ -401,6 +424,9 @@
<li>
<a href="server/EchoHub.Server.Data.Migrations.AddChannelMembership.html" name="" title="AddChannelMembership">AddChannelMembership</a>
</li>
<li>
<a href="server/EchoHub.Server.Data.Migrations.AddEncryptionSupport.html" name="" title="AddEncryptionSupport">AddEncryptionSupport</a>
</li>
<li>
<a href="server/EchoHub.Server.Data.Migrations.AddMessageEmbed.html" name="" title="AddMessageEmbed">AddMessageEmbed</a>
</li>
@@ -442,6 +468,9 @@
<li>
<a href="server/EchoHub.Server.Services.LinkEmbedService.html" name="" title="LinkEmbedService">LinkEmbedService</a>
</li>
<li>
<a href="server/EchoHub.Server.Services.MessageEncryptionService.html" name="" title="MessageEncryptionService">MessageEncryptionService</a>
</li>
<li>
<a href="server/EchoHub.Server.Services.PresenceTracker.html" name="" title="PresenceTracker">PresenceTracker</a>
</li>
@@ -472,7 +501,14 @@
</ul>
</li>
<li>
<a href="server-articles/index.html" name="server-articles/toc.html" title="Articles">Articles</a>
<span class="expand-stub"></span>
<a>Articles</a>
<ul class="nav level3">
<li>
<a href="server-articles/index.html" name="" title="Overview">Overview</a>
</li>
</ul>
</li>
</ul>
</li>
+1 -1
View File
File diff suppressed because one or more lines are too long
+243
View File
@@ -0,0 +1,243 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Message Encryption | EchoHub Documentation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Message Encryption | EchoHub Documentation ">
<link rel="icon" href="../images/hue_icon.svg">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="docfx:docurl" content="https://github.com/HueByte/EchoHub/blob/master/docs/#L1">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../images/hue_icon.svg" alt="EchoHub">
EchoHub
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="">
<h1 id="message-encryption">Message Encryption</h1>
<p>EchoHub uses application-layer AES-256-GCM encryption to protect message content in transit between clients and the server. This is an additional layer on top of TLS, protecting against ISPs, proxies, and any middleman that can inspect HTTPS traffic (e.g. corporate proxies with trusted root CA certificates).</p>
<h2 id="how-it-works">How It Works</h2>
<pre><code class="lang-mermaid">sequenceDiagram
participant Sender as TUI Client (Sender)
participant Server
participant Receiver as TUI Client (Receiver)
participant IRC as IRC Client
Sender-&gt;&gt;Sender: encrypt(plaintext)
Sender-&gt;&gt;Server: $ENC$v1$... (SignalR)
Server-&gt;&gt;Server: decrypt → validate/sanitize
Server-&gt;&gt;Server: fetch embeds on plaintext
Server-&gt;&gt;Server: (optional) encrypt for DB storage
Server-&gt;&gt;Server: encrypt(plaintext) with fresh nonce
Server-&gt;&gt;Receiver: $ENC$v1$... (SignalR broadcast)
Receiver-&gt;&gt;Receiver: decrypt → display
Server-&gt;&gt;Server: decrypt for IRC
Server-&gt;&gt;IRC: plaintext (IRC PRIVMSG)
</code></pre>
<ol>
<li><strong>Client encrypts</strong> the message before sending it over SignalR</li>
<li><strong>Server decrypts</strong> to validate content, sanitize newlines, and fetch link embeds</li>
<li><strong>Server re-encrypts</strong> with a fresh nonce and broadcasts to all connected SignalR clients</li>
<li><strong>Clients decrypt</strong> the broadcast and display the plaintext</li>
<li><strong>IRC clients</strong> receive plaintext automatically (the IRC broadcaster decrypts before forwarding)</li>
</ol>
<p>Each encryption uses a random 12-byte nonce, so the same message produces different ciphertext every time.</p>
<h2 id="encryption-key">Encryption Key</h2>
<p>A 256-bit AES key is auto-generated on first server startup and saved to <code>appsettings.json</code>:</p>
<pre><code class="lang-json">{
&quot;Encryption&quot;: {
&quot;Key&quot;: &quot;base64-encoded-32-byte-key&quot;,
&quot;EncryptDatabase&quot;: false
}
}
</code></pre>
<p>The key is generated by <code>FirstRunSetup</code> using <code>RandomNumberGenerator.GetBytes(32)</code>. If the key is missing or empty when the server starts, a new one is created automatically.</p>
<p>Clients fetch the key after login via an authenticated endpoint (<code>GET /api/server/encryption-key</code>). No manual configuration is needed on the client side.</p>
<h2 id="encrypted-content-format">Encrypted Content Format</h2>
<p>Encrypted content uses a self-describing format:</p>
<pre><code class="lang-text">$ENC$v1${nonce_base64}${ciphertext+tag_base64}
</code></pre>
<ul>
<li><strong><code>$ENC$v1$</code></strong> — version prefix (allows future algorithm changes)</li>
<li><strong>Nonce</strong> — 12 bytes, Base64-encoded, randomly generated per message</li>
<li><strong>Ciphertext + Tag</strong> — AES-256-GCM output with 16-byte authentication tag appended</li>
</ul>
<p>The authentication tag ensures both confidentiality and integrity — any tampering with the ciphertext is detected during decryption.</p>
<h2 id="database-encryption-optional">Database Encryption (Optional)</h2>
<p>By default, messages are stored as <strong>plaintext</strong> in the database. Transport encryption still protects everything on the wire, but the SQLite file itself contains readable messages.</p>
<p>To encrypt messages at rest, enable the setting:</p>
<pre><code class="lang-json">{
&quot;Encryption&quot;: {
&quot;Key&quot;: &quot;...&quot;,
&quot;EncryptDatabase&quot;: true
}
}
</code></pre>
<h3 id="behavior-by-setting">Behavior by Setting</h3>
<table>
<thead>
<tr>
<th>Setting</th>
<th>DB Storage</th>
<th>Transport</th>
<th>Key Rotation Risk</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>false</code> (default)</td>
<td>Plaintext</td>
<td>Encrypted</td>
<td>None - stored data is unaffected</td>
</tr>
<tr>
<td><code>true</code></td>
<td>Encrypted</td>
<td>Encrypted</td>
<td>Changing the key makes old messages unreadable</td>
</tr>
</tbody>
</table>
<h3 id="mixed-content">Mixed Content</h3>
<p>The server handles mixed encrypted/plaintext content in the database gracefully. When reading messages:</p>
<ul>
<li>Content starting with <code>$ENC$v1$</code> is decrypted</li>
<li>Everything else is treated as plaintext</li>
</ul>
<p>This means you can safely toggle <code>EncryptDatabase</code> at any time. Old messages remain readable regardless of the current setting.</p>
<h3 id="enabling-encryption-at-rest">Enabling Encryption at Rest</h3>
<p>When you set <code>EncryptDatabase: true</code>, only <strong>new messages</strong> are encrypted going forward. Existing plaintext messages in the database are not retroactively encrypted. This is intentional — it keeps key rotation safe and avoids irreversible bulk changes.</p>
<h3 id="key-rotation">Key Rotation</h3>
<p>Changing the encryption key is safe:</p>
<ul>
<li><strong>Plaintext messages</strong> — always readable regardless of key</li>
<li><strong>Messages encrypted with the old key</strong> — will show <code>[encrypted message — decryption failed]</code></li>
<li><strong>New messages</strong> — encrypted with the new key going forward</li>
</ul>
<p>If you need to recover old encrypted messages, restore the original key from a backup of <code>appsettings.json</code>. Since plaintext messages are never retroactively encrypted, you'll never lose access to your entire history from a key change.</p>
<h2 id="security-considerations">Security Considerations</h2>
<h3 id="what-this-protects-against">What This Protects Against</h3>
<ul>
<li><strong>Passive network sniffing</strong> — messages are encrypted even if captured off the wire</li>
<li><strong>ISP/proxy inspection</strong> — content is encrypted at the application layer, independent of TLS</li>
<li><strong>Database theft</strong> (when <code>EncryptDatabase: true</code>) — SQLite file contains only ciphertext</li>
</ul>
<h3 id="limitations">Limitations</h3>
<ul>
<li><strong>TLS-inspecting proxies</strong> — if a corporate proxy terminates TLS with a trusted root CA, it can intercept the key exchange (<code>GET /api/server/encryption-key</code>) and read all traffic. A future upgrade to ECDH key exchange would address this.</li>
<li><strong>Server has full access</strong> — the server decrypts all messages for processing. This is not end-to-end encryption between users; it's transport encryption between client and server.</li>
<li><strong>IRC clients receive plaintext</strong> — IRC is an open protocol and third-party clients cannot participate in the encryption scheme.</li>
</ul>
<h2 id="troubleshooting">Troubleshooting</h2>
<h3 id="messages-show-encrypted-message--decryption-failed-try-re-logging-to-fetch-the-latest-key">Messages show <code>[encrypted message — decryption failed, try re-logging to fetch the latest key]</code></h3>
<p>The client's encryption key doesn't match the server's. This happens when:</p>
<ul>
<li>The server's encryption key was rotated while the client was connected</li>
<li>The client cached a stale key</li>
</ul>
<p><strong>Fix</strong>: Disconnect and reconnect (re-login). The client fetches the current key on each login.</p>
<h3 id="messages-show-encrypted-message--decryption-failed-in-channel-history">Messages show <code>[encrypted message — decryption failed]</code> in channel history</h3>
<p>The server cannot decrypt messages stored in the database. This happens when:</p>
<ul>
<li><code>EncryptDatabase</code> was enabled, and the key was changed afterwards</li>
</ul>
<p><strong>Fix</strong>: Restore the original key from a backup. There is no way to recover messages encrypted with a lost key.</p>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/HueByte/EchoHub/blob/master/docs/#L1" class="edit-link">Edit this page</a>
</div>
<div class="next-article d-print-none border-top" id="nextArticle"></div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<div class='footer-custom'><div class='footer-inner'><span class='footer-brand'>EchoHub</span><span class='footer-sep'>&middot;</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>&middot;</span><a href='https://echohub.voidcube.cloud'>Website</a><span class='footer-sep'>&middot;</span><span class='footer-credit'>Built with <a href='https://dotnet.github.io/docfx'>DocFX</a></span></div></div>
</div>
</div>
</footer>
</body>
</html>
+6
View File
@@ -18,6 +18,12 @@
<li>
<a href="architecture.html" name="" title="Architecture">Architecture</a>
</li>
<li>
<a href="encryption.html" name="" title="Encryption">Encryption</a>
</li>
<li>
<a href="notification-sounds.html" name="" title="Notification Sounds">Notification Sounds</a>
</li>
</ul>
</div>
</div>
+1 -1
View File
@@ -1,2 +1,2 @@
{"items":[{"name":"Getting Started","href":"getting-started.html","topicHref":"getting-started.html"},{"name":"Architecture","href":"architecture.html","topicHref":"architecture.html"}]}
{"items":[{"name":"Getting Started","href":"getting-started.html","topicHref":"getting-started.html"},{"name":"Architecture","href":"architecture.html","topicHref":"architecture.html"},{"name":"Encryption","href":"encryption.html","topicHref":"encryption.html"},{"name":"Notification Sounds","href":"notification-sounds.html","topicHref":"notification-sounds.html"}]}
+3
View File
@@ -15,6 +15,9 @@
<li>
<a href="index.html" name="" title="Overview">Overview</a>
</li>
<li>
<a href="v0.2.4.html" name="" title="v0.2.4">v0.2.4</a>
</li>
<li>
<a href="v0.2.3.html" name="" title="v0.2.3">v0.2.3</a>
</li>
+1 -1
View File
@@ -1,2 +1,2 @@
{"items":[{"name":"Overview","href":"index.html","topicHref":"index.html"},{"name":"v0.2.3","href":"v0.2.3.html","topicHref":"v0.2.3.html"},{"name":"v0.2.2","href":"v0.2.2.html","topicHref":"v0.2.2.html"},{"name":"v0.2.1","href":"v0.2.1.html","topicHref":"v0.2.1.html"},{"name":"v0.2.0","href":"v0.2.0.html","topicHref":"v0.2.0.html"},{"name":"v0.1.1","href":"v0.1.1.html","topicHref":"v0.1.1.html"},{"name":"v0.1.0","href":"v0.1.0.html","topicHref":"v0.1.0.html"}]}
{"items":[{"name":"Overview","href":"index.html","topicHref":"index.html"},{"name":"v0.2.4","href":"v0.2.4.html","topicHref":"v0.2.4.html"},{"name":"v0.2.3","href":"v0.2.3.html","topicHref":"v0.2.3.html"},{"name":"v0.2.2","href":"v0.2.2.html","topicHref":"v0.2.2.html"},{"name":"v0.2.1","href":"v0.2.1.html","topicHref":"v0.2.1.html"},{"name":"v0.2.0","href":"v0.2.0.html","topicHref":"v0.2.0.html"},{"name":"v0.1.1","href":"v0.1.1.html","topicHref":"v0.1.1.html"},{"name":"v0.1.0","href":"v0.1.0.html","topicHref":"v0.1.0.html"}]}
+149
View File
@@ -0,0 +1,149 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>v0.2.4 - E2E Message Encryption | EchoHub Documentation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="v0.2.4 - E2E Message Encryption | EchoHub Documentation ">
<link rel="icon" href="../images/hue_icon.svg">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="docfx:docurl" content="https://github.com/HueByte/EchoHub/blob/master/docs/#L1">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../images/hue_icon.svg" alt="EchoHub">
EchoHub
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="">
<h1 id="v024---e2e-message-encryption">v0.2.4 - E2E Message Encryption</h1>
<h2 id="features">Features</h2>
<h3 id="e2e-message-encryption">E2E Message Encryption</h3>
<ul>
<li>Application-layer AES-256-GCM encryption for all message content between client and server</li>
<li>Protects against ISPs, proxies, and any middleman reading chat messages — even if TLS is compromised</li>
<li>256-bit encryption key auto-generated on first server startup and saved to <code>appsettings.json</code></li>
<li>Client fetches the encryption key automatically after login via <code>GET /api/server/encryption-key</code></li>
<li>Client encrypts messages before sending via SignalR; server decrypts for validation and processing</li>
<li>Server broadcasts encrypted content to SignalR clients; client decrypts transparently — no user action required</li>
<li>Optional database encryption at rest via <code>Encryption:EncryptDatabase</code> setting (disabled by default)
<ul>
<li>When enabled: new messages encrypted before DB storage (existing plaintext messages are not retroactively encrypted)</li>
<li>When disabled: messages stored as plaintext, no risk of data loss from key rotation</li>
<li>Reads handle mixed content (encrypted + plaintext) regardless of setting — safe to toggle at any time</li>
<li>Key rotation is safe: old plaintext stays readable, new messages use the new key</li>
</ul>
</li>
<li>IRC gateway automatically decrypts messages before forwarding to IRC clients (plaintext over IRC)</li>
<li>Encrypted content format: <code>$ENC$v1${nonce}${ciphertext+tag}</code> (Base64, 12-byte nonce, 16-byte auth tag)</li>
<li>Server strips <code>$ENC$</code> prefix from user-typed messages to prevent format spoofing</li>
<li>Graceful fallback: if decryption fails, shows <code>[encrypted message — decryption failed, try re-logging to fetch the latest key]</code></li>
</ul>
<h2 id="infrastructure">Infrastructure</h2>
<ul>
<li><code>IMessageEncryptionService</code> interface in Core; <code>MessageEncryptionService</code> server implementation and <code>ClientEncryptionService</code> client implementation</li>
<li><code>EncryptionKeyResponse</code> DTO and <code>GET /api/server/encryption-key</code> endpoint (authenticated, rate-limited)</li>
<li><code>FirstRunSetup.EnsureEncryptionKey()</code> auto-generates AES-256 key on first server run</li>
<li><code>Encryption:EncryptDatabase</code> server setting (default <code>false</code>) controls whether messages are encrypted at rest</li>
<li>DB column max lengths increased for encrypted content: <code>Message.Content</code> 2000 → 16000, <code>Message.EmbedJson</code> 8000 → 32000</li>
<li>EF Core migration: <code>AddEncryptionSupport</code></li>
<li>Encryption test suite: server-side, client-side, and cross-compatibility tests (87 total)</li>
<li>Documentation article: <code>docs/articles/encryption.md</code></li>
</ul>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/HueByte/EchoHub/blob/master/docs/#L1" class="edit-link">Edit this page</a>
</div>
<div class="next-article d-print-none border-top" id="nextArticle"></div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<div class='footer-custom'><div class='footer-inner'><span class='footer-brand'>EchoHub</span><span class='footer-sep'>&middot;</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>&middot;</span><a href='https://echohub.voidcube.cloud'>Website</a><span class='footer-sep'>&middot;</span><span class='footer-credit'>Built with <a href='https://dotnet.github.io/docfx'>DocFX</a></span></div></div>
</div>
</div>
</footer>
</body>
</html>
+46 -11
View File
File diff suppressed because one or more lines are too long
+90
View File
@@ -178,6 +178,20 @@
"Title": "EchoHub.Client.Services.ApiClient",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/client/EchoHub.Client.Services.ClientEncryptionService.yml",
"output": {
".html": {
"relative_path": "api/client/EchoHub.Client.Services.ClientEncryptionService.html"
}
},
"version": "",
"Uid": null,
"IsMRef": true,
"Title": "EchoHub.Client.Services.ClientEncryptionService",
"Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.Services.ClientEncryptionService.yml\" sourcestartlinenumber=\"1\">Client-side encryption service. Uses the same AES-256-GCM format as the server\nso messages are encrypted end-to-end between client and server.</p>\n"
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/client/EchoHub.Client.Services.EchoHubConnection.yml",
@@ -682,6 +696,20 @@
"Title": "EchoHub.Core.Contracts.IEchoHubClient",
"Summary": "<p sourcefile=\"_api_meta/core/EchoHub.Core.Contracts.IEchoHubClient.yml\" sourcestartlinenumber=\"1\">Methods the server can invoke on connected clients.</p>\n"
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/core/EchoHub.Core.Contracts.IMessageEncryptionService.yml",
"output": {
".html": {
"relative_path": "api/core/EchoHub.Core.Contracts.IMessageEncryptionService.html"
}
},
"version": "",
"Uid": null,
"IsMRef": true,
"Title": "EchoHub.Core.Contracts.IMessageEncryptionService",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/core/EchoHub.Core.Contracts.yml",
@@ -780,6 +808,20 @@
"Title": "EchoHub.Core.DTOs.EmbedDto",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.EncryptionKeyResponse.yml",
"output": {
".html": {
"relative_path": "api/core/EchoHub.Core.DTOs.EncryptionKeyResponse.html"
}
},
"version": "",
"Uid": null,
"IsMRef": true,
"Title": "EchoHub.Core.DTOs.EncryptionKeyResponse",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.ErrorResponse.yml",
@@ -1480,6 +1522,20 @@
"Title": "EchoHub.Server.Data.Migrations.AddChannelMembership",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/server/EchoHub.Server.Data.Migrations.AddEncryptionSupport.yml",
"output": {
".html": {
"relative_path": "api/server/EchoHub.Server.Data.Migrations.AddEncryptionSupport.html"
}
},
"version": "",
"Uid": null,
"IsMRef": true,
"Title": "EchoHub.Server.Data.Migrations.AddEncryptionSupport",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/server/EchoHub.Server.Data.Migrations.AddMessageEmbed.yml",
@@ -1648,6 +1704,20 @@
"Title": "EchoHub.Server.Services.LinkEmbedService",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/server/EchoHub.Server.Services.MessageEncryptionService.yml",
"output": {
".html": {
"relative_path": "api/server/EchoHub.Server.Services.MessageEncryptionService.html"
}
},
"version": "",
"Uid": null,
"IsMRef": true,
"Title": "EchoHub.Server.Services.MessageEncryptionService",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/server/EchoHub.Server.Services.PresenceTracker.yml",
@@ -1862,6 +1932,16 @@
},
"version": ""
},
{
"type": "Conceptual",
"source_relative_path": "articles/encryption.md",
"output": {
".html": {
"relative_path": "articles/encryption.html"
}
},
"version": ""
},
{
"type": "Conceptual",
"source_relative_path": "articles/getting-started.md",
@@ -1978,6 +2058,16 @@
},
"version": ""
},
{
"type": "Conceptual",
"source_relative_path": "changelog/v0.2.4.md",
"output": {
".html": {
"relative_path": "changelog/v0.2.4.html"
}
},
"version": ""
},
{
"type": "Resource",
"source_relative_path": "images/hue_icon.svg",
+585 -36
View File
@@ -937,6 +937,18 @@ references:
commentId: Overload:EchoHub.Client.Services.ApiClient.GetChannelsAsync
fullName: EchoHub.Client.Services.ApiClient.GetChannelsAsync
nameWithType: ApiClient.GetChannelsAsync
- uid: EchoHub.Client.Services.ApiClient.GetEncryptionKeyAsync
name: GetEncryptionKeyAsync()
href: api/client/EchoHub.Client.Services.ApiClient.html#EchoHub_Client_Services_ApiClient_GetEncryptionKeyAsync
commentId: M:EchoHub.Client.Services.ApiClient.GetEncryptionKeyAsync
fullName: EchoHub.Client.Services.ApiClient.GetEncryptionKeyAsync()
nameWithType: ApiClient.GetEncryptionKeyAsync()
- uid: EchoHub.Client.Services.ApiClient.GetEncryptionKeyAsync*
name: GetEncryptionKeyAsync
href: api/client/EchoHub.Client.Services.ApiClient.html#EchoHub_Client_Services_ApiClient_GetEncryptionKeyAsync_
commentId: Overload:EchoHub.Client.Services.ApiClient.GetEncryptionKeyAsync
fullName: EchoHub.Client.Services.ApiClient.GetEncryptionKeyAsync
nameWithType: ApiClient.GetEncryptionKeyAsync
- uid: EchoHub.Client.Services.ApiClient.GetServerInfoAsync
name: GetServerInfoAsync()
href: api/client/EchoHub.Client.Services.ApiClient.html#EchoHub_Client_Services_ApiClient_GetServerInfoAsync
@@ -1201,21 +1213,144 @@ references:
commentId: Overload:EchoHub.Client.Services.ApiClient.UploadFileAsync
fullName: EchoHub.Client.Services.ApiClient.UploadFileAsync
nameWithType: ApiClient.UploadFileAsync
- uid: EchoHub.Client.Services.ClientEncryptionService
name: ClientEncryptionService
href: api/client/EchoHub.Client.Services.ClientEncryptionService.html
commentId: T:EchoHub.Client.Services.ClientEncryptionService
fullName: EchoHub.Client.Services.ClientEncryptionService
nameWithType: ClientEncryptionService
- uid: EchoHub.Client.Services.ClientEncryptionService.#ctor
name: ClientEncryptionService()
href: api/client/EchoHub.Client.Services.ClientEncryptionService.html#EchoHub_Client_Services_ClientEncryptionService__ctor
commentId: M:EchoHub.Client.Services.ClientEncryptionService.#ctor
name.vb: New()
fullName: EchoHub.Client.Services.ClientEncryptionService.ClientEncryptionService()
fullName.vb: EchoHub.Client.Services.ClientEncryptionService.New()
nameWithType: ClientEncryptionService.ClientEncryptionService()
nameWithType.vb: ClientEncryptionService.New()
- uid: EchoHub.Client.Services.ClientEncryptionService.#ctor*
name: ClientEncryptionService
href: api/client/EchoHub.Client.Services.ClientEncryptionService.html#EchoHub_Client_Services_ClientEncryptionService__ctor_
commentId: Overload:EchoHub.Client.Services.ClientEncryptionService.#ctor
name.vb: New
fullName: EchoHub.Client.Services.ClientEncryptionService.ClientEncryptionService
fullName.vb: EchoHub.Client.Services.ClientEncryptionService.New
nameWithType: ClientEncryptionService.ClientEncryptionService
nameWithType.vb: ClientEncryptionService.New
- uid: EchoHub.Client.Services.ClientEncryptionService.Decrypt(System.String)
name: Decrypt(string)
href: api/client/EchoHub.Client.Services.ClientEncryptionService.html#EchoHub_Client_Services_ClientEncryptionService_Decrypt_System_String_
commentId: M:EchoHub.Client.Services.ClientEncryptionService.Decrypt(System.String)
name.vb: Decrypt(String)
fullName: EchoHub.Client.Services.ClientEncryptionService.Decrypt(string)
fullName.vb: EchoHub.Client.Services.ClientEncryptionService.Decrypt(String)
nameWithType: ClientEncryptionService.Decrypt(string)
nameWithType.vb: ClientEncryptionService.Decrypt(String)
- uid: EchoHub.Client.Services.ClientEncryptionService.Decrypt*
name: Decrypt
href: api/client/EchoHub.Client.Services.ClientEncryptionService.html#EchoHub_Client_Services_ClientEncryptionService_Decrypt_
commentId: Overload:EchoHub.Client.Services.ClientEncryptionService.Decrypt
fullName: EchoHub.Client.Services.ClientEncryptionService.Decrypt
nameWithType: ClientEncryptionService.Decrypt
- uid: EchoHub.Client.Services.ClientEncryptionService.DecryptNullable(System.String)
name: DecryptNullable(string?)
href: api/client/EchoHub.Client.Services.ClientEncryptionService.html#EchoHub_Client_Services_ClientEncryptionService_DecryptNullable_System_String_
commentId: M:EchoHub.Client.Services.ClientEncryptionService.DecryptNullable(System.String)
name.vb: DecryptNullable(String)
fullName: EchoHub.Client.Services.ClientEncryptionService.DecryptNullable(string?)
fullName.vb: EchoHub.Client.Services.ClientEncryptionService.DecryptNullable(String)
nameWithType: ClientEncryptionService.DecryptNullable(string?)
nameWithType.vb: ClientEncryptionService.DecryptNullable(String)
- uid: EchoHub.Client.Services.ClientEncryptionService.DecryptNullable*
name: DecryptNullable
href: api/client/EchoHub.Client.Services.ClientEncryptionService.html#EchoHub_Client_Services_ClientEncryptionService_DecryptNullable_
commentId: Overload:EchoHub.Client.Services.ClientEncryptionService.DecryptNullable
fullName: EchoHub.Client.Services.ClientEncryptionService.DecryptNullable
nameWithType: ClientEncryptionService.DecryptNullable
- uid: EchoHub.Client.Services.ClientEncryptionService.Encrypt(System.String)
name: Encrypt(string)
href: api/client/EchoHub.Client.Services.ClientEncryptionService.html#EchoHub_Client_Services_ClientEncryptionService_Encrypt_System_String_
commentId: M:EchoHub.Client.Services.ClientEncryptionService.Encrypt(System.String)
name.vb: Encrypt(String)
fullName: EchoHub.Client.Services.ClientEncryptionService.Encrypt(string)
fullName.vb: EchoHub.Client.Services.ClientEncryptionService.Encrypt(String)
nameWithType: ClientEncryptionService.Encrypt(string)
nameWithType.vb: ClientEncryptionService.Encrypt(String)
- uid: EchoHub.Client.Services.ClientEncryptionService.Encrypt*
name: Encrypt
href: api/client/EchoHub.Client.Services.ClientEncryptionService.html#EchoHub_Client_Services_ClientEncryptionService_Encrypt_
commentId: Overload:EchoHub.Client.Services.ClientEncryptionService.Encrypt
fullName: EchoHub.Client.Services.ClientEncryptionService.Encrypt
nameWithType: ClientEncryptionService.Encrypt
- uid: EchoHub.Client.Services.ClientEncryptionService.EncryptDatabaseEnabled
name: EncryptDatabaseEnabled
href: api/client/EchoHub.Client.Services.ClientEncryptionService.html#EchoHub_Client_Services_ClientEncryptionService_EncryptDatabaseEnabled
commentId: P:EchoHub.Client.Services.ClientEncryptionService.EncryptDatabaseEnabled
fullName: EchoHub.Client.Services.ClientEncryptionService.EncryptDatabaseEnabled
nameWithType: ClientEncryptionService.EncryptDatabaseEnabled
- uid: EchoHub.Client.Services.ClientEncryptionService.EncryptDatabaseEnabled*
name: EncryptDatabaseEnabled
href: api/client/EchoHub.Client.Services.ClientEncryptionService.html#EchoHub_Client_Services_ClientEncryptionService_EncryptDatabaseEnabled_
commentId: Overload:EchoHub.Client.Services.ClientEncryptionService.EncryptDatabaseEnabled
fullName: EchoHub.Client.Services.ClientEncryptionService.EncryptDatabaseEnabled
nameWithType: ClientEncryptionService.EncryptDatabaseEnabled
- uid: EchoHub.Client.Services.ClientEncryptionService.EncryptNullable(System.String)
name: EncryptNullable(string?)
href: api/client/EchoHub.Client.Services.ClientEncryptionService.html#EchoHub_Client_Services_ClientEncryptionService_EncryptNullable_System_String_
commentId: M:EchoHub.Client.Services.ClientEncryptionService.EncryptNullable(System.String)
name.vb: EncryptNullable(String)
fullName: EchoHub.Client.Services.ClientEncryptionService.EncryptNullable(string?)
fullName.vb: EchoHub.Client.Services.ClientEncryptionService.EncryptNullable(String)
nameWithType: ClientEncryptionService.EncryptNullable(string?)
nameWithType.vb: ClientEncryptionService.EncryptNullable(String)
- uid: EchoHub.Client.Services.ClientEncryptionService.EncryptNullable*
name: EncryptNullable
href: api/client/EchoHub.Client.Services.ClientEncryptionService.html#EchoHub_Client_Services_ClientEncryptionService_EncryptNullable_
commentId: Overload:EchoHub.Client.Services.ClientEncryptionService.EncryptNullable
fullName: EchoHub.Client.Services.ClientEncryptionService.EncryptNullable
nameWithType: ClientEncryptionService.EncryptNullable
- uid: EchoHub.Client.Services.ClientEncryptionService.IsInitialized
name: IsInitialized
href: api/client/EchoHub.Client.Services.ClientEncryptionService.html#EchoHub_Client_Services_ClientEncryptionService_IsInitialized
commentId: P:EchoHub.Client.Services.ClientEncryptionService.IsInitialized
fullName: EchoHub.Client.Services.ClientEncryptionService.IsInitialized
nameWithType: ClientEncryptionService.IsInitialized
- uid: EchoHub.Client.Services.ClientEncryptionService.IsInitialized*
name: IsInitialized
href: api/client/EchoHub.Client.Services.ClientEncryptionService.html#EchoHub_Client_Services_ClientEncryptionService_IsInitialized_
commentId: Overload:EchoHub.Client.Services.ClientEncryptionService.IsInitialized
fullName: EchoHub.Client.Services.ClientEncryptionService.IsInitialized
nameWithType: ClientEncryptionService.IsInitialized
- uid: EchoHub.Client.Services.ClientEncryptionService.SetKey(System.String)
name: SetKey(string)
href: api/client/EchoHub.Client.Services.ClientEncryptionService.html#EchoHub_Client_Services_ClientEncryptionService_SetKey_System_String_
commentId: M:EchoHub.Client.Services.ClientEncryptionService.SetKey(System.String)
name.vb: SetKey(String)
fullName: EchoHub.Client.Services.ClientEncryptionService.SetKey(string)
fullName.vb: EchoHub.Client.Services.ClientEncryptionService.SetKey(String)
nameWithType: ClientEncryptionService.SetKey(string)
nameWithType.vb: ClientEncryptionService.SetKey(String)
- uid: EchoHub.Client.Services.ClientEncryptionService.SetKey*
name: SetKey
href: api/client/EchoHub.Client.Services.ClientEncryptionService.html#EchoHub_Client_Services_ClientEncryptionService_SetKey_
commentId: Overload:EchoHub.Client.Services.ClientEncryptionService.SetKey
fullName: EchoHub.Client.Services.ClientEncryptionService.SetKey
nameWithType: ClientEncryptionService.SetKey
- uid: EchoHub.Client.Services.EchoHubConnection
name: EchoHubConnection
href: api/client/EchoHub.Client.Services.EchoHubConnection.html
commentId: T:EchoHub.Client.Services.EchoHubConnection
fullName: EchoHub.Client.Services.EchoHubConnection
nameWithType: EchoHubConnection
- uid: EchoHub.Client.Services.EchoHubConnection.#ctor(System.String,EchoHub.Client.Services.ApiClient)
name: EchoHubConnection(string, ApiClient)
href: api/client/EchoHub.Client.Services.EchoHubConnection.html#EchoHub_Client_Services_EchoHubConnection__ctor_System_String_EchoHub_Client_Services_ApiClient_
commentId: M:EchoHub.Client.Services.EchoHubConnection.#ctor(System.String,EchoHub.Client.Services.ApiClient)
name.vb: New(String, ApiClient)
fullName: EchoHub.Client.Services.EchoHubConnection.EchoHubConnection(string, EchoHub.Client.Services.ApiClient)
fullName.vb: EchoHub.Client.Services.EchoHubConnection.New(String, EchoHub.Client.Services.ApiClient)
nameWithType: EchoHubConnection.EchoHubConnection(string, ApiClient)
nameWithType.vb: EchoHubConnection.New(String, ApiClient)
- uid: EchoHub.Client.Services.EchoHubConnection.#ctor(System.String,EchoHub.Client.Services.ApiClient,EchoHub.Client.Services.ClientEncryptionService)
name: EchoHubConnection(string, ApiClient, ClientEncryptionService)
href: api/client/EchoHub.Client.Services.EchoHubConnection.html#EchoHub_Client_Services_EchoHubConnection__ctor_System_String_EchoHub_Client_Services_ApiClient_EchoHub_Client_Services_ClientEncryptionService_
commentId: M:EchoHub.Client.Services.EchoHubConnection.#ctor(System.String,EchoHub.Client.Services.ApiClient,EchoHub.Client.Services.ClientEncryptionService)
name.vb: New(String, ApiClient, ClientEncryptionService)
fullName: EchoHub.Client.Services.EchoHubConnection.EchoHubConnection(string, EchoHub.Client.Services.ApiClient, EchoHub.Client.Services.ClientEncryptionService)
fullName.vb: EchoHub.Client.Services.EchoHubConnection.New(String, EchoHub.Client.Services.ApiClient, EchoHub.Client.Services.ClientEncryptionService)
nameWithType: EchoHubConnection.EchoHubConnection(string, ApiClient, ClientEncryptionService)
nameWithType.vb: EchoHubConnection.New(String, ApiClient, ClientEncryptionService)
- uid: EchoHub.Client.Services.EchoHubConnection.#ctor*
name: EchoHubConnection
href: api/client/EchoHub.Client.Services.EchoHubConnection.html#EchoHub_Client_Services_EchoHubConnection__ctor_
@@ -5077,6 +5212,84 @@ references:
commentId: Overload:EchoHub.Core.Contracts.IEchoHubClient.UserStatusChanged
fullName: EchoHub.Core.Contracts.IEchoHubClient.UserStatusChanged
nameWithType: IEchoHubClient.UserStatusChanged
- uid: EchoHub.Core.Contracts.IMessageEncryptionService
name: IMessageEncryptionService
href: api/core/EchoHub.Core.Contracts.IMessageEncryptionService.html
commentId: T:EchoHub.Core.Contracts.IMessageEncryptionService
fullName: EchoHub.Core.Contracts.IMessageEncryptionService
nameWithType: IMessageEncryptionService
- uid: EchoHub.Core.Contracts.IMessageEncryptionService.Decrypt(System.String)
name: Decrypt(string)
href: api/core/EchoHub.Core.Contracts.IMessageEncryptionService.html#EchoHub_Core_Contracts_IMessageEncryptionService_Decrypt_System_String_
commentId: M:EchoHub.Core.Contracts.IMessageEncryptionService.Decrypt(System.String)
name.vb: Decrypt(String)
fullName: EchoHub.Core.Contracts.IMessageEncryptionService.Decrypt(string)
fullName.vb: EchoHub.Core.Contracts.IMessageEncryptionService.Decrypt(String)
nameWithType: IMessageEncryptionService.Decrypt(string)
nameWithType.vb: IMessageEncryptionService.Decrypt(String)
- uid: EchoHub.Core.Contracts.IMessageEncryptionService.Decrypt*
name: Decrypt
href: api/core/EchoHub.Core.Contracts.IMessageEncryptionService.html#EchoHub_Core_Contracts_IMessageEncryptionService_Decrypt_
commentId: Overload:EchoHub.Core.Contracts.IMessageEncryptionService.Decrypt
fullName: EchoHub.Core.Contracts.IMessageEncryptionService.Decrypt
nameWithType: IMessageEncryptionService.Decrypt
- uid: EchoHub.Core.Contracts.IMessageEncryptionService.DecryptNullable(System.String)
name: DecryptNullable(string?)
href: api/core/EchoHub.Core.Contracts.IMessageEncryptionService.html#EchoHub_Core_Contracts_IMessageEncryptionService_DecryptNullable_System_String_
commentId: M:EchoHub.Core.Contracts.IMessageEncryptionService.DecryptNullable(System.String)
name.vb: DecryptNullable(String)
fullName: EchoHub.Core.Contracts.IMessageEncryptionService.DecryptNullable(string?)
fullName.vb: EchoHub.Core.Contracts.IMessageEncryptionService.DecryptNullable(String)
nameWithType: IMessageEncryptionService.DecryptNullable(string?)
nameWithType.vb: IMessageEncryptionService.DecryptNullable(String)
- uid: EchoHub.Core.Contracts.IMessageEncryptionService.DecryptNullable*
name: DecryptNullable
href: api/core/EchoHub.Core.Contracts.IMessageEncryptionService.html#EchoHub_Core_Contracts_IMessageEncryptionService_DecryptNullable_
commentId: Overload:EchoHub.Core.Contracts.IMessageEncryptionService.DecryptNullable
fullName: EchoHub.Core.Contracts.IMessageEncryptionService.DecryptNullable
nameWithType: IMessageEncryptionService.DecryptNullable
- uid: EchoHub.Core.Contracts.IMessageEncryptionService.Encrypt(System.String)
name: Encrypt(string)
href: api/core/EchoHub.Core.Contracts.IMessageEncryptionService.html#EchoHub_Core_Contracts_IMessageEncryptionService_Encrypt_System_String_
commentId: M:EchoHub.Core.Contracts.IMessageEncryptionService.Encrypt(System.String)
name.vb: Encrypt(String)
fullName: EchoHub.Core.Contracts.IMessageEncryptionService.Encrypt(string)
fullName.vb: EchoHub.Core.Contracts.IMessageEncryptionService.Encrypt(String)
nameWithType: IMessageEncryptionService.Encrypt(string)
nameWithType.vb: IMessageEncryptionService.Encrypt(String)
- uid: EchoHub.Core.Contracts.IMessageEncryptionService.Encrypt*
name: Encrypt
href: api/core/EchoHub.Core.Contracts.IMessageEncryptionService.html#EchoHub_Core_Contracts_IMessageEncryptionService_Encrypt_
commentId: Overload:EchoHub.Core.Contracts.IMessageEncryptionService.Encrypt
fullName: EchoHub.Core.Contracts.IMessageEncryptionService.Encrypt
nameWithType: IMessageEncryptionService.Encrypt
- uid: EchoHub.Core.Contracts.IMessageEncryptionService.EncryptDatabaseEnabled
name: EncryptDatabaseEnabled
href: api/core/EchoHub.Core.Contracts.IMessageEncryptionService.html#EchoHub_Core_Contracts_IMessageEncryptionService_EncryptDatabaseEnabled
commentId: P:EchoHub.Core.Contracts.IMessageEncryptionService.EncryptDatabaseEnabled
fullName: EchoHub.Core.Contracts.IMessageEncryptionService.EncryptDatabaseEnabled
nameWithType: IMessageEncryptionService.EncryptDatabaseEnabled
- uid: EchoHub.Core.Contracts.IMessageEncryptionService.EncryptDatabaseEnabled*
name: EncryptDatabaseEnabled
href: api/core/EchoHub.Core.Contracts.IMessageEncryptionService.html#EchoHub_Core_Contracts_IMessageEncryptionService_EncryptDatabaseEnabled_
commentId: Overload:EchoHub.Core.Contracts.IMessageEncryptionService.EncryptDatabaseEnabled
fullName: EchoHub.Core.Contracts.IMessageEncryptionService.EncryptDatabaseEnabled
nameWithType: IMessageEncryptionService.EncryptDatabaseEnabled
- uid: EchoHub.Core.Contracts.IMessageEncryptionService.EncryptNullable(System.String)
name: EncryptNullable(string?)
href: api/core/EchoHub.Core.Contracts.IMessageEncryptionService.html#EchoHub_Core_Contracts_IMessageEncryptionService_EncryptNullable_System_String_
commentId: M:EchoHub.Core.Contracts.IMessageEncryptionService.EncryptNullable(System.String)
name.vb: EncryptNullable(String)
fullName: EchoHub.Core.Contracts.IMessageEncryptionService.EncryptNullable(string?)
fullName.vb: EchoHub.Core.Contracts.IMessageEncryptionService.EncryptNullable(String)
nameWithType: IMessageEncryptionService.EncryptNullable(string?)
nameWithType.vb: IMessageEncryptionService.EncryptNullable(String)
- uid: EchoHub.Core.Contracts.IMessageEncryptionService.EncryptNullable*
name: EncryptNullable
href: api/core/EchoHub.Core.Contracts.IMessageEncryptionService.html#EchoHub_Core_Contracts_IMessageEncryptionService_EncryptNullable_
commentId: Overload:EchoHub.Core.Contracts.IMessageEncryptionService.EncryptNullable
fullName: EchoHub.Core.Contracts.IMessageEncryptionService.EncryptNullable
nameWithType: IMessageEncryptionService.EncryptNullable
- uid: EchoHub.Core.DTOs
name: EchoHub.Core.DTOs
href: api/core/EchoHub.Core.DTOs.html
@@ -6235,6 +6448,174 @@ references:
fullName.vb: EchoHub.Core.DTOs.EmbedDto.<>
nameWithType: EmbedDto.operator !=
nameWithType.vb: EmbedDto.<>
- uid: EchoHub.Core.DTOs.EncryptionKeyResponse
name: EncryptionKeyResponse
href: api/core/EchoHub.Core.DTOs.EncryptionKeyResponse.html
commentId: T:EchoHub.Core.DTOs.EncryptionKeyResponse
fullName: EchoHub.Core.DTOs.EncryptionKeyResponse
nameWithType: EncryptionKeyResponse
- uid: EchoHub.Core.DTOs.EncryptionKeyResponse.#ctor(EchoHub.Core.DTOs.EncryptionKeyResponse)
name: EncryptionKeyResponse(EncryptionKeyResponse)
href: api/core/EchoHub.Core.DTOs.EncryptionKeyResponse.html#EchoHub_Core_DTOs_EncryptionKeyResponse__ctor_EchoHub_Core_DTOs_EncryptionKeyResponse_
commentId: M:EchoHub.Core.DTOs.EncryptionKeyResponse.#ctor(EchoHub.Core.DTOs.EncryptionKeyResponse)
name.vb: New(EncryptionKeyResponse)
fullName: EchoHub.Core.DTOs.EncryptionKeyResponse.EncryptionKeyResponse(EchoHub.Core.DTOs.EncryptionKeyResponse)
fullName.vb: EchoHub.Core.DTOs.EncryptionKeyResponse.New(EchoHub.Core.DTOs.EncryptionKeyResponse)
nameWithType: EncryptionKeyResponse.EncryptionKeyResponse(EncryptionKeyResponse)
nameWithType.vb: EncryptionKeyResponse.New(EncryptionKeyResponse)
- uid: EchoHub.Core.DTOs.EncryptionKeyResponse.#ctor(System.String)
name: EncryptionKeyResponse(string)
href: api/core/EchoHub.Core.DTOs.EncryptionKeyResponse.html#EchoHub_Core_DTOs_EncryptionKeyResponse__ctor_System_String_
commentId: M:EchoHub.Core.DTOs.EncryptionKeyResponse.#ctor(System.String)
name.vb: New(String)
fullName: EchoHub.Core.DTOs.EncryptionKeyResponse.EncryptionKeyResponse(string)
fullName.vb: EchoHub.Core.DTOs.EncryptionKeyResponse.New(String)
nameWithType: EncryptionKeyResponse.EncryptionKeyResponse(string)
nameWithType.vb: EncryptionKeyResponse.New(String)
- uid: EchoHub.Core.DTOs.EncryptionKeyResponse.#ctor*
name: EncryptionKeyResponse
href: api/core/EchoHub.Core.DTOs.EncryptionKeyResponse.html#EchoHub_Core_DTOs_EncryptionKeyResponse__ctor_
commentId: Overload:EchoHub.Core.DTOs.EncryptionKeyResponse.#ctor
name.vb: New
fullName: EchoHub.Core.DTOs.EncryptionKeyResponse.EncryptionKeyResponse
fullName.vb: EchoHub.Core.DTOs.EncryptionKeyResponse.New
nameWithType: EncryptionKeyResponse.EncryptionKeyResponse
nameWithType.vb: EncryptionKeyResponse.New
- uid: EchoHub.Core.DTOs.EncryptionKeyResponse.Deconstruct(System.String@)
name: Deconstruct(out string)
href: api/core/EchoHub.Core.DTOs.EncryptionKeyResponse.html#EchoHub_Core_DTOs_EncryptionKeyResponse_Deconstruct_System_String__
commentId: M:EchoHub.Core.DTOs.EncryptionKeyResponse.Deconstruct(System.String@)
name.vb: Deconstruct(String)
fullName: EchoHub.Core.DTOs.EncryptionKeyResponse.Deconstruct(out string)
fullName.vb: EchoHub.Core.DTOs.EncryptionKeyResponse.Deconstruct(String)
nameWithType: EncryptionKeyResponse.Deconstruct(out string)
nameWithType.vb: EncryptionKeyResponse.Deconstruct(String)
- uid: EchoHub.Core.DTOs.EncryptionKeyResponse.Deconstruct*
name: Deconstruct
href: api/core/EchoHub.Core.DTOs.EncryptionKeyResponse.html#EchoHub_Core_DTOs_EncryptionKeyResponse_Deconstruct_
commentId: Overload:EchoHub.Core.DTOs.EncryptionKeyResponse.Deconstruct
fullName: EchoHub.Core.DTOs.EncryptionKeyResponse.Deconstruct
nameWithType: EncryptionKeyResponse.Deconstruct
- uid: EchoHub.Core.DTOs.EncryptionKeyResponse.EqualityContract
name: EqualityContract
href: api/core/EchoHub.Core.DTOs.EncryptionKeyResponse.html#EchoHub_Core_DTOs_EncryptionKeyResponse_EqualityContract
commentId: P:EchoHub.Core.DTOs.EncryptionKeyResponse.EqualityContract
fullName: EchoHub.Core.DTOs.EncryptionKeyResponse.EqualityContract
nameWithType: EncryptionKeyResponse.EqualityContract
- uid: EchoHub.Core.DTOs.EncryptionKeyResponse.EqualityContract*
name: EqualityContract
href: api/core/EchoHub.Core.DTOs.EncryptionKeyResponse.html#EchoHub_Core_DTOs_EncryptionKeyResponse_EqualityContract_
commentId: Overload:EchoHub.Core.DTOs.EncryptionKeyResponse.EqualityContract
fullName: EchoHub.Core.DTOs.EncryptionKeyResponse.EqualityContract
nameWithType: EncryptionKeyResponse.EqualityContract
- uid: EchoHub.Core.DTOs.EncryptionKeyResponse.Equals(EchoHub.Core.DTOs.EncryptionKeyResponse)
name: Equals(EncryptionKeyResponse?)
href: api/core/EchoHub.Core.DTOs.EncryptionKeyResponse.html#EchoHub_Core_DTOs_EncryptionKeyResponse_Equals_EchoHub_Core_DTOs_EncryptionKeyResponse_
commentId: M:EchoHub.Core.DTOs.EncryptionKeyResponse.Equals(EchoHub.Core.DTOs.EncryptionKeyResponse)
name.vb: Equals(EncryptionKeyResponse)
fullName: EchoHub.Core.DTOs.EncryptionKeyResponse.Equals(EchoHub.Core.DTOs.EncryptionKeyResponse?)
fullName.vb: EchoHub.Core.DTOs.EncryptionKeyResponse.Equals(EchoHub.Core.DTOs.EncryptionKeyResponse)
nameWithType: EncryptionKeyResponse.Equals(EncryptionKeyResponse?)
nameWithType.vb: EncryptionKeyResponse.Equals(EncryptionKeyResponse)
- uid: EchoHub.Core.DTOs.EncryptionKeyResponse.Equals(System.Object)
name: Equals(object?)
href: api/core/EchoHub.Core.DTOs.EncryptionKeyResponse.html#EchoHub_Core_DTOs_EncryptionKeyResponse_Equals_System_Object_
commentId: M:EchoHub.Core.DTOs.EncryptionKeyResponse.Equals(System.Object)
name.vb: Equals(Object)
fullName: EchoHub.Core.DTOs.EncryptionKeyResponse.Equals(object?)
fullName.vb: EchoHub.Core.DTOs.EncryptionKeyResponse.Equals(Object)
nameWithType: EncryptionKeyResponse.Equals(object?)
nameWithType.vb: EncryptionKeyResponse.Equals(Object)
- uid: EchoHub.Core.DTOs.EncryptionKeyResponse.Equals*
name: Equals
href: api/core/EchoHub.Core.DTOs.EncryptionKeyResponse.html#EchoHub_Core_DTOs_EncryptionKeyResponse_Equals_
commentId: Overload:EchoHub.Core.DTOs.EncryptionKeyResponse.Equals
fullName: EchoHub.Core.DTOs.EncryptionKeyResponse.Equals
nameWithType: EncryptionKeyResponse.Equals
- uid: EchoHub.Core.DTOs.EncryptionKeyResponse.GetHashCode
name: GetHashCode()
href: api/core/EchoHub.Core.DTOs.EncryptionKeyResponse.html#EchoHub_Core_DTOs_EncryptionKeyResponse_GetHashCode
commentId: M:EchoHub.Core.DTOs.EncryptionKeyResponse.GetHashCode
fullName: EchoHub.Core.DTOs.EncryptionKeyResponse.GetHashCode()
nameWithType: EncryptionKeyResponse.GetHashCode()
- uid: EchoHub.Core.DTOs.EncryptionKeyResponse.GetHashCode*
name: GetHashCode
href: api/core/EchoHub.Core.DTOs.EncryptionKeyResponse.html#EchoHub_Core_DTOs_EncryptionKeyResponse_GetHashCode_
commentId: Overload:EchoHub.Core.DTOs.EncryptionKeyResponse.GetHashCode
fullName: EchoHub.Core.DTOs.EncryptionKeyResponse.GetHashCode
nameWithType: EncryptionKeyResponse.GetHashCode
- uid: EchoHub.Core.DTOs.EncryptionKeyResponse.Key
name: Key
href: api/core/EchoHub.Core.DTOs.EncryptionKeyResponse.html#EchoHub_Core_DTOs_EncryptionKeyResponse_Key
commentId: P:EchoHub.Core.DTOs.EncryptionKeyResponse.Key
fullName: EchoHub.Core.DTOs.EncryptionKeyResponse.Key
nameWithType: EncryptionKeyResponse.Key
- uid: EchoHub.Core.DTOs.EncryptionKeyResponse.Key*
name: Key
href: api/core/EchoHub.Core.DTOs.EncryptionKeyResponse.html#EchoHub_Core_DTOs_EncryptionKeyResponse_Key_
commentId: Overload:EchoHub.Core.DTOs.EncryptionKeyResponse.Key
fullName: EchoHub.Core.DTOs.EncryptionKeyResponse.Key
nameWithType: EncryptionKeyResponse.Key
- uid: EchoHub.Core.DTOs.EncryptionKeyResponse.PrintMembers(System.Text.StringBuilder)
name: PrintMembers(StringBuilder)
href: api/core/EchoHub.Core.DTOs.EncryptionKeyResponse.html#EchoHub_Core_DTOs_EncryptionKeyResponse_PrintMembers_System_Text_StringBuilder_
commentId: M:EchoHub.Core.DTOs.EncryptionKeyResponse.PrintMembers(System.Text.StringBuilder)
fullName: EchoHub.Core.DTOs.EncryptionKeyResponse.PrintMembers(System.Text.StringBuilder)
nameWithType: EncryptionKeyResponse.PrintMembers(StringBuilder)
- uid: EchoHub.Core.DTOs.EncryptionKeyResponse.PrintMembers*
name: PrintMembers
href: api/core/EchoHub.Core.DTOs.EncryptionKeyResponse.html#EchoHub_Core_DTOs_EncryptionKeyResponse_PrintMembers_
commentId: Overload:EchoHub.Core.DTOs.EncryptionKeyResponse.PrintMembers
fullName: EchoHub.Core.DTOs.EncryptionKeyResponse.PrintMembers
nameWithType: EncryptionKeyResponse.PrintMembers
- uid: EchoHub.Core.DTOs.EncryptionKeyResponse.ToString
name: ToString()
href: api/core/EchoHub.Core.DTOs.EncryptionKeyResponse.html#EchoHub_Core_DTOs_EncryptionKeyResponse_ToString
commentId: M:EchoHub.Core.DTOs.EncryptionKeyResponse.ToString
fullName: EchoHub.Core.DTOs.EncryptionKeyResponse.ToString()
nameWithType: EncryptionKeyResponse.ToString()
- uid: EchoHub.Core.DTOs.EncryptionKeyResponse.ToString*
name: ToString
href: api/core/EchoHub.Core.DTOs.EncryptionKeyResponse.html#EchoHub_Core_DTOs_EncryptionKeyResponse_ToString_
commentId: Overload:EchoHub.Core.DTOs.EncryptionKeyResponse.ToString
fullName: EchoHub.Core.DTOs.EncryptionKeyResponse.ToString
nameWithType: EncryptionKeyResponse.ToString
- uid: EchoHub.Core.DTOs.EncryptionKeyResponse.op_Equality(EchoHub.Core.DTOs.EncryptionKeyResponse,EchoHub.Core.DTOs.EncryptionKeyResponse)
name: operator ==(EncryptionKeyResponse?, EncryptionKeyResponse?)
href: api/core/EchoHub.Core.DTOs.EncryptionKeyResponse.html#EchoHub_Core_DTOs_EncryptionKeyResponse_op_Equality_EchoHub_Core_DTOs_EncryptionKeyResponse_EchoHub_Core_DTOs_EncryptionKeyResponse_
commentId: M:EchoHub.Core.DTOs.EncryptionKeyResponse.op_Equality(EchoHub.Core.DTOs.EncryptionKeyResponse,EchoHub.Core.DTOs.EncryptionKeyResponse)
name.vb: =(EncryptionKeyResponse, EncryptionKeyResponse)
fullName: EchoHub.Core.DTOs.EncryptionKeyResponse.operator ==(EchoHub.Core.DTOs.EncryptionKeyResponse?, EchoHub.Core.DTOs.EncryptionKeyResponse?)
fullName.vb: EchoHub.Core.DTOs.EncryptionKeyResponse.=(EchoHub.Core.DTOs.EncryptionKeyResponse, EchoHub.Core.DTOs.EncryptionKeyResponse)
nameWithType: EncryptionKeyResponse.operator ==(EncryptionKeyResponse?, EncryptionKeyResponse?)
nameWithType.vb: EncryptionKeyResponse.=(EncryptionKeyResponse, EncryptionKeyResponse)
- uid: EchoHub.Core.DTOs.EncryptionKeyResponse.op_Equality*
name: operator ==
href: api/core/EchoHub.Core.DTOs.EncryptionKeyResponse.html#EchoHub_Core_DTOs_EncryptionKeyResponse_op_Equality_
commentId: Overload:EchoHub.Core.DTOs.EncryptionKeyResponse.op_Equality
name.vb: =
fullName: EchoHub.Core.DTOs.EncryptionKeyResponse.operator ==
fullName.vb: EchoHub.Core.DTOs.EncryptionKeyResponse.=
nameWithType: EncryptionKeyResponse.operator ==
nameWithType.vb: EncryptionKeyResponse.=
- uid: EchoHub.Core.DTOs.EncryptionKeyResponse.op_Inequality(EchoHub.Core.DTOs.EncryptionKeyResponse,EchoHub.Core.DTOs.EncryptionKeyResponse)
name: operator !=(EncryptionKeyResponse?, EncryptionKeyResponse?)
href: api/core/EchoHub.Core.DTOs.EncryptionKeyResponse.html#EchoHub_Core_DTOs_EncryptionKeyResponse_op_Inequality_EchoHub_Core_DTOs_EncryptionKeyResponse_EchoHub_Core_DTOs_EncryptionKeyResponse_
commentId: M:EchoHub.Core.DTOs.EncryptionKeyResponse.op_Inequality(EchoHub.Core.DTOs.EncryptionKeyResponse,EchoHub.Core.DTOs.EncryptionKeyResponse)
name.vb: <>(EncryptionKeyResponse, EncryptionKeyResponse)
fullName: EchoHub.Core.DTOs.EncryptionKeyResponse.operator !=(EchoHub.Core.DTOs.EncryptionKeyResponse?, EchoHub.Core.DTOs.EncryptionKeyResponse?)
fullName.vb: EchoHub.Core.DTOs.EncryptionKeyResponse.<>(EchoHub.Core.DTOs.EncryptionKeyResponse, EchoHub.Core.DTOs.EncryptionKeyResponse)
nameWithType: EncryptionKeyResponse.operator !=(EncryptionKeyResponse?, EncryptionKeyResponse?)
nameWithType.vb: EncryptionKeyResponse.<>(EncryptionKeyResponse, EncryptionKeyResponse)
- uid: EchoHub.Core.DTOs.EncryptionKeyResponse.op_Inequality*
name: operator !=
href: api/core/EchoHub.Core.DTOs.EncryptionKeyResponse.html#EchoHub_Core_DTOs_EncryptionKeyResponse_op_Inequality_
commentId: Overload:EchoHub.Core.DTOs.EncryptionKeyResponse.op_Inequality
name.vb: <>
fullName: EchoHub.Core.DTOs.EncryptionKeyResponse.operator !=
fullName.vb: EchoHub.Core.DTOs.EncryptionKeyResponse.<>
nameWithType: EncryptionKeyResponse.operator !=
nameWithType.vb: EncryptionKeyResponse.<>
- uid: EchoHub.Core.DTOs.ErrorResponse
name: ErrorResponse
href: api/core/EchoHub.Core.DTOs.ErrorResponse.html
@@ -10807,15 +11188,15 @@ references:
commentId: T:EchoHub.Server.Controllers.ChannelsController
fullName: EchoHub.Server.Controllers.ChannelsController
nameWithType: ChannelsController
- uid: EchoHub.Server.Controllers.ChannelsController.#ctor(EchoHub.Server.Data.EchoHubDbContext,EchoHub.Server.Services.FileStorageService,EchoHub.Server.Services.ImageToAsciiService,System.Net.Http.IHttpClientFactory,EchoHub.Core.Contracts.IChatService)
name: ChannelsController(EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService)
href: api/server/EchoHub.Server.Controllers.ChannelsController.html#EchoHub_Server_Controllers_ChannelsController__ctor_EchoHub_Server_Data_EchoHubDbContext_EchoHub_Server_Services_FileStorageService_EchoHub_Server_Services_ImageToAsciiService_System_Net_Http_IHttpClientFactory_EchoHub_Core_Contracts_IChatService_
commentId: M:EchoHub.Server.Controllers.ChannelsController.#ctor(EchoHub.Server.Data.EchoHubDbContext,EchoHub.Server.Services.FileStorageService,EchoHub.Server.Services.ImageToAsciiService,System.Net.Http.IHttpClientFactory,EchoHub.Core.Contracts.IChatService)
name.vb: New(EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService)
fullName: EchoHub.Server.Controllers.ChannelsController.ChannelsController(EchoHub.Server.Data.EchoHubDbContext, EchoHub.Server.Services.FileStorageService, EchoHub.Server.Services.ImageToAsciiService, System.Net.Http.IHttpClientFactory, EchoHub.Core.Contracts.IChatService)
fullName.vb: EchoHub.Server.Controllers.ChannelsController.New(EchoHub.Server.Data.EchoHubDbContext, EchoHub.Server.Services.FileStorageService, EchoHub.Server.Services.ImageToAsciiService, System.Net.Http.IHttpClientFactory, EchoHub.Core.Contracts.IChatService)
nameWithType: ChannelsController.ChannelsController(EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService)
nameWithType.vb: ChannelsController.New(EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService)
- uid: EchoHub.Server.Controllers.ChannelsController.#ctor(EchoHub.Server.Data.EchoHubDbContext,EchoHub.Server.Services.FileStorageService,EchoHub.Server.Services.ImageToAsciiService,System.Net.Http.IHttpClientFactory,EchoHub.Core.Contracts.IChatService,EchoHub.Core.Contracts.IMessageEncryptionService)
name: ChannelsController(EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService, IMessageEncryptionService)
href: api/server/EchoHub.Server.Controllers.ChannelsController.html#EchoHub_Server_Controllers_ChannelsController__ctor_EchoHub_Server_Data_EchoHubDbContext_EchoHub_Server_Services_FileStorageService_EchoHub_Server_Services_ImageToAsciiService_System_Net_Http_IHttpClientFactory_EchoHub_Core_Contracts_IChatService_EchoHub_Core_Contracts_IMessageEncryptionService_
commentId: M:EchoHub.Server.Controllers.ChannelsController.#ctor(EchoHub.Server.Data.EchoHubDbContext,EchoHub.Server.Services.FileStorageService,EchoHub.Server.Services.ImageToAsciiService,System.Net.Http.IHttpClientFactory,EchoHub.Core.Contracts.IChatService,EchoHub.Core.Contracts.IMessageEncryptionService)
name.vb: New(EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService, IMessageEncryptionService)
fullName: EchoHub.Server.Controllers.ChannelsController.ChannelsController(EchoHub.Server.Data.EchoHubDbContext, EchoHub.Server.Services.FileStorageService, EchoHub.Server.Services.ImageToAsciiService, System.Net.Http.IHttpClientFactory, EchoHub.Core.Contracts.IChatService, EchoHub.Core.Contracts.IMessageEncryptionService)
fullName.vb: EchoHub.Server.Controllers.ChannelsController.New(EchoHub.Server.Data.EchoHubDbContext, EchoHub.Server.Services.FileStorageService, EchoHub.Server.Services.ImageToAsciiService, System.Net.Http.IHttpClientFactory, EchoHub.Core.Contracts.IChatService, EchoHub.Core.Contracts.IMessageEncryptionService)
nameWithType: ChannelsController.ChannelsController(EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService, IMessageEncryptionService)
nameWithType.vb: ChannelsController.New(EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService, IMessageEncryptionService)
- uid: EchoHub.Server.Controllers.ChannelsController.#ctor*
name: ChannelsController
href: api/server/EchoHub.Server.Controllers.ChannelsController.html#EchoHub_Server_Controllers_ChannelsController__ctor_
@@ -11113,6 +11494,18 @@ references:
fullName.vb: EchoHub.Server.Controllers.ServerController.New
nameWithType: ServerController.ServerController
nameWithType.vb: ServerController.New
- uid: EchoHub.Server.Controllers.ServerController.GetEncryptionKey
name: GetEncryptionKey()
href: api/server/EchoHub.Server.Controllers.ServerController.html#EchoHub_Server_Controllers_ServerController_GetEncryptionKey
commentId: M:EchoHub.Server.Controllers.ServerController.GetEncryptionKey
fullName: EchoHub.Server.Controllers.ServerController.GetEncryptionKey()
nameWithType: ServerController.GetEncryptionKey()
- uid: EchoHub.Server.Controllers.ServerController.GetEncryptionKey*
name: GetEncryptionKey
href: api/server/EchoHub.Server.Controllers.ServerController.html#EchoHub_Server_Controllers_ServerController_GetEncryptionKey_
commentId: Overload:EchoHub.Server.Controllers.ServerController.GetEncryptionKey
fullName: EchoHub.Server.Controllers.ServerController.GetEncryptionKey
nameWithType: ServerController.GetEncryptionKey
- uid: EchoHub.Server.Controllers.ServerController.GetInfo
name: GetInfo()
href: api/server/EchoHub.Server.Controllers.ServerController.html#EchoHub_Server_Controllers_ServerController_GetInfo
@@ -11428,6 +11821,66 @@ references:
commentId: Overload:EchoHub.Server.Data.Migrations.AddChannelMembership.Up
fullName: EchoHub.Server.Data.Migrations.AddChannelMembership.Up
nameWithType: AddChannelMembership.Up
- uid: EchoHub.Server.Data.Migrations.AddEncryptionSupport
name: AddEncryptionSupport
href: api/server/EchoHub.Server.Data.Migrations.AddEncryptionSupport.html
commentId: T:EchoHub.Server.Data.Migrations.AddEncryptionSupport
fullName: EchoHub.Server.Data.Migrations.AddEncryptionSupport
nameWithType: AddEncryptionSupport
- uid: EchoHub.Server.Data.Migrations.AddEncryptionSupport.#ctor
name: AddEncryptionSupport()
href: api/server/EchoHub.Server.Data.Migrations.AddEncryptionSupport.html#EchoHub_Server_Data_Migrations_AddEncryptionSupport__ctor
commentId: M:EchoHub.Server.Data.Migrations.AddEncryptionSupport.#ctor
name.vb: New()
fullName: EchoHub.Server.Data.Migrations.AddEncryptionSupport.AddEncryptionSupport()
fullName.vb: EchoHub.Server.Data.Migrations.AddEncryptionSupport.New()
nameWithType: AddEncryptionSupport.AddEncryptionSupport()
nameWithType.vb: AddEncryptionSupport.New()
- uid: EchoHub.Server.Data.Migrations.AddEncryptionSupport.#ctor*
name: AddEncryptionSupport
href: api/server/EchoHub.Server.Data.Migrations.AddEncryptionSupport.html#EchoHub_Server_Data_Migrations_AddEncryptionSupport__ctor_
commentId: Overload:EchoHub.Server.Data.Migrations.AddEncryptionSupport.#ctor
name.vb: New
fullName: EchoHub.Server.Data.Migrations.AddEncryptionSupport.AddEncryptionSupport
fullName.vb: EchoHub.Server.Data.Migrations.AddEncryptionSupport.New
nameWithType: AddEncryptionSupport.AddEncryptionSupport
nameWithType.vb: AddEncryptionSupport.New
- uid: EchoHub.Server.Data.Migrations.AddEncryptionSupport.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)
name: BuildTargetModel(ModelBuilder)
href: api/server/EchoHub.Server.Data.Migrations.AddEncryptionSupport.html#EchoHub_Server_Data_Migrations_AddEncryptionSupport_BuildTargetModel_Microsoft_EntityFrameworkCore_ModelBuilder_
commentId: M:EchoHub.Server.Data.Migrations.AddEncryptionSupport.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)
fullName: EchoHub.Server.Data.Migrations.AddEncryptionSupport.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)
nameWithType: AddEncryptionSupport.BuildTargetModel(ModelBuilder)
- uid: EchoHub.Server.Data.Migrations.AddEncryptionSupport.BuildTargetModel*
name: BuildTargetModel
href: api/server/EchoHub.Server.Data.Migrations.AddEncryptionSupport.html#EchoHub_Server_Data_Migrations_AddEncryptionSupport_BuildTargetModel_
commentId: Overload:EchoHub.Server.Data.Migrations.AddEncryptionSupport.BuildTargetModel
fullName: EchoHub.Server.Data.Migrations.AddEncryptionSupport.BuildTargetModel
nameWithType: AddEncryptionSupport.BuildTargetModel
- uid: EchoHub.Server.Data.Migrations.AddEncryptionSupport.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)
name: Down(MigrationBuilder)
href: api/server/EchoHub.Server.Data.Migrations.AddEncryptionSupport.html#EchoHub_Server_Data_Migrations_AddEncryptionSupport_Down_Microsoft_EntityFrameworkCore_Migrations_MigrationBuilder_
commentId: M:EchoHub.Server.Data.Migrations.AddEncryptionSupport.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)
fullName: EchoHub.Server.Data.Migrations.AddEncryptionSupport.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)
nameWithType: AddEncryptionSupport.Down(MigrationBuilder)
- uid: EchoHub.Server.Data.Migrations.AddEncryptionSupport.Down*
name: Down
href: api/server/EchoHub.Server.Data.Migrations.AddEncryptionSupport.html#EchoHub_Server_Data_Migrations_AddEncryptionSupport_Down_
commentId: Overload:EchoHub.Server.Data.Migrations.AddEncryptionSupport.Down
fullName: EchoHub.Server.Data.Migrations.AddEncryptionSupport.Down
nameWithType: AddEncryptionSupport.Down
- uid: EchoHub.Server.Data.Migrations.AddEncryptionSupport.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)
name: Up(MigrationBuilder)
href: api/server/EchoHub.Server.Data.Migrations.AddEncryptionSupport.html#EchoHub_Server_Data_Migrations_AddEncryptionSupport_Up_Microsoft_EntityFrameworkCore_Migrations_MigrationBuilder_
commentId: M:EchoHub.Server.Data.Migrations.AddEncryptionSupport.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)
fullName: EchoHub.Server.Data.Migrations.AddEncryptionSupport.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)
nameWithType: AddEncryptionSupport.Up(MigrationBuilder)
- uid: EchoHub.Server.Data.Migrations.AddEncryptionSupport.Up*
name: Up
href: api/server/EchoHub.Server.Data.Migrations.AddEncryptionSupport.html#EchoHub_Server_Data_Migrations_AddEncryptionSupport_Up_
commentId: Overload:EchoHub.Server.Data.Migrations.AddEncryptionSupport.Up
fullName: EchoHub.Server.Data.Migrations.AddEncryptionSupport.Up
nameWithType: AddEncryptionSupport.Up
- uid: EchoHub.Server.Data.Migrations.AddMessageEmbed
name: AddMessageEmbed
href: api/server/EchoHub.Server.Data.Migrations.AddMessageEmbed.html
@@ -11767,15 +12220,15 @@ references:
commentId: T:EchoHub.Server.Irc.IrcBroadcaster
fullName: EchoHub.Server.Irc.IrcBroadcaster
nameWithType: IrcBroadcaster
- uid: EchoHub.Server.Irc.IrcBroadcaster.#ctor(EchoHub.Server.Irc.IrcGatewayService)
name: IrcBroadcaster(IrcGatewayService)
href: api/server-irc/EchoHub.Server.Irc.IrcBroadcaster.html#EchoHub_Server_Irc_IrcBroadcaster__ctor_EchoHub_Server_Irc_IrcGatewayService_
commentId: M:EchoHub.Server.Irc.IrcBroadcaster.#ctor(EchoHub.Server.Irc.IrcGatewayService)
name.vb: New(IrcGatewayService)
fullName: EchoHub.Server.Irc.IrcBroadcaster.IrcBroadcaster(EchoHub.Server.Irc.IrcGatewayService)
fullName.vb: EchoHub.Server.Irc.IrcBroadcaster.New(EchoHub.Server.Irc.IrcGatewayService)
nameWithType: IrcBroadcaster.IrcBroadcaster(IrcGatewayService)
nameWithType.vb: IrcBroadcaster.New(IrcGatewayService)
- uid: EchoHub.Server.Irc.IrcBroadcaster.#ctor(EchoHub.Server.Irc.IrcGatewayService,EchoHub.Core.Contracts.IMessageEncryptionService)
name: IrcBroadcaster(IrcGatewayService, IMessageEncryptionService)
href: api/server-irc/EchoHub.Server.Irc.IrcBroadcaster.html#EchoHub_Server_Irc_IrcBroadcaster__ctor_EchoHub_Server_Irc_IrcGatewayService_EchoHub_Core_Contracts_IMessageEncryptionService_
commentId: M:EchoHub.Server.Irc.IrcBroadcaster.#ctor(EchoHub.Server.Irc.IrcGatewayService,EchoHub.Core.Contracts.IMessageEncryptionService)
name.vb: New(IrcGatewayService, IMessageEncryptionService)
fullName: EchoHub.Server.Irc.IrcBroadcaster.IrcBroadcaster(EchoHub.Server.Irc.IrcGatewayService, EchoHub.Core.Contracts.IMessageEncryptionService)
fullName.vb: EchoHub.Server.Irc.IrcBroadcaster.New(EchoHub.Server.Irc.IrcGatewayService, EchoHub.Core.Contracts.IMessageEncryptionService)
nameWithType: IrcBroadcaster.IrcBroadcaster(IrcGatewayService, IMessageEncryptionService)
nameWithType.vb: IrcBroadcaster.New(IrcGatewayService, IMessageEncryptionService)
- uid: EchoHub.Server.Irc.IrcBroadcaster.#ctor*
name: IrcBroadcaster
href: api/server-irc/EchoHub.Server.Irc.IrcBroadcaster.html#EchoHub_Server_Irc_IrcBroadcaster__ctor_
@@ -12883,15 +13336,15 @@ references:
commentId: T:EchoHub.Server.Services.ChatService
fullName: EchoHub.Server.Services.ChatService
nameWithType: ChatService
- uid: EchoHub.Server.Services.ChatService.#ctor(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory,EchoHub.Server.Services.PresenceTracker,System.Collections.Generic.IEnumerable{EchoHub.Core.Contracts.IChatBroadcaster},EchoHub.Server.Services.LinkEmbedService,Microsoft.Extensions.Logging.ILogger{EchoHub.Server.Services.ChatService})
name: ChatService(IServiceScopeFactory, PresenceTracker, IEnumerable<IChatBroadcaster>, LinkEmbedService, ILogger<ChatService>)
href: api/server/EchoHub.Server.Services.ChatService.html#EchoHub_Server_Services_ChatService__ctor_Microsoft_Extensions_DependencyInjection_IServiceScopeFactory_EchoHub_Server_Services_PresenceTracker_System_Collections_Generic_IEnumerable_EchoHub_Core_Contracts_IChatBroadcaster__EchoHub_Server_Services_LinkEmbedService_Microsoft_Extensions_Logging_ILogger_EchoHub_Server_Services_ChatService__
commentId: M:EchoHub.Server.Services.ChatService.#ctor(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory,EchoHub.Server.Services.PresenceTracker,System.Collections.Generic.IEnumerable{EchoHub.Core.Contracts.IChatBroadcaster},EchoHub.Server.Services.LinkEmbedService,Microsoft.Extensions.Logging.ILogger{EchoHub.Server.Services.ChatService})
name.vb: New(IServiceScopeFactory, PresenceTracker, IEnumerable(Of IChatBroadcaster), LinkEmbedService, ILogger(Of ChatService))
fullName: EchoHub.Server.Services.ChatService.ChatService(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory, EchoHub.Server.Services.PresenceTracker, System.Collections.Generic.IEnumerable<EchoHub.Core.Contracts.IChatBroadcaster>, EchoHub.Server.Services.LinkEmbedService, Microsoft.Extensions.Logging.ILogger<EchoHub.Server.Services.ChatService>)
fullName.vb: EchoHub.Server.Services.ChatService.New(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory, EchoHub.Server.Services.PresenceTracker, System.Collections.Generic.IEnumerable(Of EchoHub.Core.Contracts.IChatBroadcaster), EchoHub.Server.Services.LinkEmbedService, Microsoft.Extensions.Logging.ILogger(Of EchoHub.Server.Services.ChatService))
nameWithType: ChatService.ChatService(IServiceScopeFactory, PresenceTracker, IEnumerable<IChatBroadcaster>, LinkEmbedService, ILogger<ChatService>)
nameWithType.vb: ChatService.New(IServiceScopeFactory, PresenceTracker, IEnumerable(Of IChatBroadcaster), LinkEmbedService, ILogger(Of ChatService))
- uid: EchoHub.Server.Services.ChatService.#ctor(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory,EchoHub.Server.Services.PresenceTracker,System.Collections.Generic.IEnumerable{EchoHub.Core.Contracts.IChatBroadcaster},EchoHub.Server.Services.LinkEmbedService,EchoHub.Core.Contracts.IMessageEncryptionService,Microsoft.Extensions.Logging.ILogger{EchoHub.Server.Services.ChatService})
name: ChatService(IServiceScopeFactory, PresenceTracker, IEnumerable<IChatBroadcaster>, LinkEmbedService, IMessageEncryptionService, ILogger<ChatService>)
href: api/server/EchoHub.Server.Services.ChatService.html#EchoHub_Server_Services_ChatService__ctor_Microsoft_Extensions_DependencyInjection_IServiceScopeFactory_EchoHub_Server_Services_PresenceTracker_System_Collections_Generic_IEnumerable_EchoHub_Core_Contracts_IChatBroadcaster__EchoHub_Server_Services_LinkEmbedService_EchoHub_Core_Contracts_IMessageEncryptionService_Microsoft_Extensions_Logging_ILogger_EchoHub_Server_Services_ChatService__
commentId: M:EchoHub.Server.Services.ChatService.#ctor(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory,EchoHub.Server.Services.PresenceTracker,System.Collections.Generic.IEnumerable{EchoHub.Core.Contracts.IChatBroadcaster},EchoHub.Server.Services.LinkEmbedService,EchoHub.Core.Contracts.IMessageEncryptionService,Microsoft.Extensions.Logging.ILogger{EchoHub.Server.Services.ChatService})
name.vb: New(IServiceScopeFactory, PresenceTracker, IEnumerable(Of IChatBroadcaster), LinkEmbedService, IMessageEncryptionService, ILogger(Of ChatService))
fullName: EchoHub.Server.Services.ChatService.ChatService(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory, EchoHub.Server.Services.PresenceTracker, System.Collections.Generic.IEnumerable<EchoHub.Core.Contracts.IChatBroadcaster>, EchoHub.Server.Services.LinkEmbedService, EchoHub.Core.Contracts.IMessageEncryptionService, Microsoft.Extensions.Logging.ILogger<EchoHub.Server.Services.ChatService>)
fullName.vb: EchoHub.Server.Services.ChatService.New(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory, EchoHub.Server.Services.PresenceTracker, System.Collections.Generic.IEnumerable(Of EchoHub.Core.Contracts.IChatBroadcaster), EchoHub.Server.Services.LinkEmbedService, EchoHub.Core.Contracts.IMessageEncryptionService, Microsoft.Extensions.Logging.ILogger(Of EchoHub.Server.Services.ChatService))
nameWithType: ChatService.ChatService(IServiceScopeFactory, PresenceTracker, IEnumerable<IChatBroadcaster>, LinkEmbedService, IMessageEncryptionService, ILogger<ChatService>)
nameWithType.vb: ChatService.New(IServiceScopeFactory, PresenceTracker, IEnumerable(Of IChatBroadcaster), LinkEmbedService, IMessageEncryptionService, ILogger(Of ChatService))
- uid: EchoHub.Server.Services.ChatService.#ctor*
name: ChatService
href: api/server/EchoHub.Server.Services.ChatService.html#EchoHub_Server_Services_ChatService__ctor_
@@ -13303,6 +13756,102 @@ references:
commentId: Overload:EchoHub.Server.Services.LinkEmbedService.TryGetEmbedsAsync
fullName: EchoHub.Server.Services.LinkEmbedService.TryGetEmbedsAsync
nameWithType: LinkEmbedService.TryGetEmbedsAsync
- uid: EchoHub.Server.Services.MessageEncryptionService
name: MessageEncryptionService
href: api/server/EchoHub.Server.Services.MessageEncryptionService.html
commentId: T:EchoHub.Server.Services.MessageEncryptionService
fullName: EchoHub.Server.Services.MessageEncryptionService
nameWithType: MessageEncryptionService
- uid: EchoHub.Server.Services.MessageEncryptionService.#ctor(Microsoft.Extensions.Configuration.IConfiguration,Microsoft.Extensions.Logging.ILogger{EchoHub.Server.Services.MessageEncryptionService})
name: MessageEncryptionService(IConfiguration, ILogger<MessageEncryptionService>)
href: api/server/EchoHub.Server.Services.MessageEncryptionService.html#EchoHub_Server_Services_MessageEncryptionService__ctor_Microsoft_Extensions_Configuration_IConfiguration_Microsoft_Extensions_Logging_ILogger_EchoHub_Server_Services_MessageEncryptionService__
commentId: M:EchoHub.Server.Services.MessageEncryptionService.#ctor(Microsoft.Extensions.Configuration.IConfiguration,Microsoft.Extensions.Logging.ILogger{EchoHub.Server.Services.MessageEncryptionService})
name.vb: New(IConfiguration, ILogger(Of MessageEncryptionService))
fullName: EchoHub.Server.Services.MessageEncryptionService.MessageEncryptionService(Microsoft.Extensions.Configuration.IConfiguration, Microsoft.Extensions.Logging.ILogger<EchoHub.Server.Services.MessageEncryptionService>)
fullName.vb: EchoHub.Server.Services.MessageEncryptionService.New(Microsoft.Extensions.Configuration.IConfiguration, Microsoft.Extensions.Logging.ILogger(Of EchoHub.Server.Services.MessageEncryptionService))
nameWithType: MessageEncryptionService.MessageEncryptionService(IConfiguration, ILogger<MessageEncryptionService>)
nameWithType.vb: MessageEncryptionService.New(IConfiguration, ILogger(Of MessageEncryptionService))
- uid: EchoHub.Server.Services.MessageEncryptionService.#ctor*
name: MessageEncryptionService
href: api/server/EchoHub.Server.Services.MessageEncryptionService.html#EchoHub_Server_Services_MessageEncryptionService__ctor_
commentId: Overload:EchoHub.Server.Services.MessageEncryptionService.#ctor
name.vb: New
fullName: EchoHub.Server.Services.MessageEncryptionService.MessageEncryptionService
fullName.vb: EchoHub.Server.Services.MessageEncryptionService.New
nameWithType: MessageEncryptionService.MessageEncryptionService
nameWithType.vb: MessageEncryptionService.New
- uid: EchoHub.Server.Services.MessageEncryptionService.Decrypt(System.String)
name: Decrypt(string)
href: api/server/EchoHub.Server.Services.MessageEncryptionService.html#EchoHub_Server_Services_MessageEncryptionService_Decrypt_System_String_
commentId: M:EchoHub.Server.Services.MessageEncryptionService.Decrypt(System.String)
name.vb: Decrypt(String)
fullName: EchoHub.Server.Services.MessageEncryptionService.Decrypt(string)
fullName.vb: EchoHub.Server.Services.MessageEncryptionService.Decrypt(String)
nameWithType: MessageEncryptionService.Decrypt(string)
nameWithType.vb: MessageEncryptionService.Decrypt(String)
- uid: EchoHub.Server.Services.MessageEncryptionService.Decrypt*
name: Decrypt
href: api/server/EchoHub.Server.Services.MessageEncryptionService.html#EchoHub_Server_Services_MessageEncryptionService_Decrypt_
commentId: Overload:EchoHub.Server.Services.MessageEncryptionService.Decrypt
fullName: EchoHub.Server.Services.MessageEncryptionService.Decrypt
nameWithType: MessageEncryptionService.Decrypt
- uid: EchoHub.Server.Services.MessageEncryptionService.DecryptNullable(System.String)
name: DecryptNullable(string?)
href: api/server/EchoHub.Server.Services.MessageEncryptionService.html#EchoHub_Server_Services_MessageEncryptionService_DecryptNullable_System_String_
commentId: M:EchoHub.Server.Services.MessageEncryptionService.DecryptNullable(System.String)
name.vb: DecryptNullable(String)
fullName: EchoHub.Server.Services.MessageEncryptionService.DecryptNullable(string?)
fullName.vb: EchoHub.Server.Services.MessageEncryptionService.DecryptNullable(String)
nameWithType: MessageEncryptionService.DecryptNullable(string?)
nameWithType.vb: MessageEncryptionService.DecryptNullable(String)
- uid: EchoHub.Server.Services.MessageEncryptionService.DecryptNullable*
name: DecryptNullable
href: api/server/EchoHub.Server.Services.MessageEncryptionService.html#EchoHub_Server_Services_MessageEncryptionService_DecryptNullable_
commentId: Overload:EchoHub.Server.Services.MessageEncryptionService.DecryptNullable
fullName: EchoHub.Server.Services.MessageEncryptionService.DecryptNullable
nameWithType: MessageEncryptionService.DecryptNullable
- uid: EchoHub.Server.Services.MessageEncryptionService.Encrypt(System.String)
name: Encrypt(string)
href: api/server/EchoHub.Server.Services.MessageEncryptionService.html#EchoHub_Server_Services_MessageEncryptionService_Encrypt_System_String_
commentId: M:EchoHub.Server.Services.MessageEncryptionService.Encrypt(System.String)
name.vb: Encrypt(String)
fullName: EchoHub.Server.Services.MessageEncryptionService.Encrypt(string)
fullName.vb: EchoHub.Server.Services.MessageEncryptionService.Encrypt(String)
nameWithType: MessageEncryptionService.Encrypt(string)
nameWithType.vb: MessageEncryptionService.Encrypt(String)
- uid: EchoHub.Server.Services.MessageEncryptionService.Encrypt*
name: Encrypt
href: api/server/EchoHub.Server.Services.MessageEncryptionService.html#EchoHub_Server_Services_MessageEncryptionService_Encrypt_
commentId: Overload:EchoHub.Server.Services.MessageEncryptionService.Encrypt
fullName: EchoHub.Server.Services.MessageEncryptionService.Encrypt
nameWithType: MessageEncryptionService.Encrypt
- uid: EchoHub.Server.Services.MessageEncryptionService.EncryptDatabaseEnabled
name: EncryptDatabaseEnabled
href: api/server/EchoHub.Server.Services.MessageEncryptionService.html#EchoHub_Server_Services_MessageEncryptionService_EncryptDatabaseEnabled
commentId: P:EchoHub.Server.Services.MessageEncryptionService.EncryptDatabaseEnabled
fullName: EchoHub.Server.Services.MessageEncryptionService.EncryptDatabaseEnabled
nameWithType: MessageEncryptionService.EncryptDatabaseEnabled
- uid: EchoHub.Server.Services.MessageEncryptionService.EncryptDatabaseEnabled*
name: EncryptDatabaseEnabled
href: api/server/EchoHub.Server.Services.MessageEncryptionService.html#EchoHub_Server_Services_MessageEncryptionService_EncryptDatabaseEnabled_
commentId: Overload:EchoHub.Server.Services.MessageEncryptionService.EncryptDatabaseEnabled
fullName: EchoHub.Server.Services.MessageEncryptionService.EncryptDatabaseEnabled
nameWithType: MessageEncryptionService.EncryptDatabaseEnabled
- uid: EchoHub.Server.Services.MessageEncryptionService.EncryptNullable(System.String)
name: EncryptNullable(string?)
href: api/server/EchoHub.Server.Services.MessageEncryptionService.html#EchoHub_Server_Services_MessageEncryptionService_EncryptNullable_System_String_
commentId: M:EchoHub.Server.Services.MessageEncryptionService.EncryptNullable(System.String)
name.vb: EncryptNullable(String)
fullName: EchoHub.Server.Services.MessageEncryptionService.EncryptNullable(string?)
fullName.vb: EchoHub.Server.Services.MessageEncryptionService.EncryptNullable(String)
nameWithType: MessageEncryptionService.EncryptNullable(string?)
nameWithType.vb: MessageEncryptionService.EncryptNullable(String)
- uid: EchoHub.Server.Services.MessageEncryptionService.EncryptNullable*
name: EncryptNullable
href: api/server/EchoHub.Server.Services.MessageEncryptionService.html#EchoHub_Server_Services_MessageEncryptionService_EncryptNullable_
commentId: Overload:EchoHub.Server.Services.MessageEncryptionService.EncryptNullable
fullName: EchoHub.Server.Services.MessageEncryptionService.EncryptNullable
nameWithType: MessageEncryptionService.EncryptNullable
- uid: EchoHub.Server.Services.PresenceTracker
name: PresenceTracker
href: api/server/EchoHub.Server.Services.PresenceTracker.html