- C# 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .idea/.idea.MatrixSDK/.idea | ||
| src | ||
| tests/MatrixSDK.Tests | ||
| .gitignore | ||
| MatrixSDK.slnx | ||
| README.md | ||
MatrixSDK
Klientská knihovna pro Matrix protokol v C# / .NET 10 — včetně kompletního end-to-end šifrování.
Vznikla jako základ pro MatrixClient, desktopového Matrix klienta, ale je použitelná samostatně.
Struktura
| Projekt | Obsah |
|---|---|
MatrixSDK.Core |
Client-Server API, HTTP vrstva, modely událostí |
MatrixSDK.Crypto |
E2EE — Olm, Megolm, cross-signing, key backup, verifikace |
MatrixSDK.Tests |
Testy (12 sad, hlavně kryptografie a serializace) |
Core nemá žádné závislosti kromě Microsoft.Extensions.Http a Logging.Abstractions.
Krypto je oddělené do vlastního projektu, takže bot nebo integrace, které šifrování
nepotřebují, si ho nemusí táhnout.
Rychlý start
using MatrixSDK.Core;
await using var client = await MatrixClient.LoginAsync(
"https://matrix.org",
"@user:matrix.org",
"heslo");
var room = await client.Rooms.JoinAsync("#místnost:matrix.org");
await client.Rooms.SendTextAsync(room.RoomId, "Ahoj ze SDK");
MatrixClient je vstupní bod, který skládá jednotlivé API dohromady — přístup je
přes vlastnosti (client.Rooms, client.Sync, client.Spaces, …).
Pokrytí API
Autentizace a registrace (včetně UIA flow), místnosti, sync, spaces, vlákna, uživatelé, presence, media, push pravidla, filtry, relace událostí, klíče, room keys, VoIP a informace o serveru.
Z typů obsahu zpráv jsou pokryté i hlasování (MSC3381) a rozšířené MessageContent.
Šifrování
MatrixSDK.Crypto implementuje Olm i Megolm, cross-signing, zálohu klíčů,
SSSS (secret storage) a SAS verifikaci zařízení.
Kryptografie má dvě cesty:
- nativní přes libolm — P/Invoke vazby (
LibOlm), knihovna se hledá vedle aplikace (olm.dll/libolm.so/libolm.dylib) přes vlastní resolver - spravovanou nad libsodium — Ed25519 přes NSec,
X25519 přímým P/Invoke; balíček
libsodiumveze nativní binárky pro win/linux/osx, takže není potřeba nic instalovat systémově
Jestli je libolm na daném stroji dostupný, se dá zjistit předem:
if (!OlmRuntime.TryProbe(out var error))
Console.WriteLine($"E2EE nepojede, chybí: {error}");
Build
dotnet build MatrixSDK.slnx
dotnet test
Potřebuješ .NET 10 SDK. Řešení je ve formátu .slnx.
Vývoj s pomocí AI
Tenhle projekt vzniká ve spolupráci s AI — konkrétně s Claude (Anthropic) přes Claude Code. Píšu to rovnou do README, protože pro někoho je to podstatná informace a nemá ji dolovat z commit historie.
Není to náhoda ani zkratka: projekt je zároveň můj způsob, jak se naučit pracovat s AI a s AI agenty. Ta část je pro mě stejně důležitá jako výsledný kód.
Stav
Osobní projekt ve vývoji. API se ještě může měnit, není publikované na NuGetu. Zatím bez licence — pokud bys to chtěl použít, ozvi se.