No description
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-07-22 22:56:40 +02:00
.idea/.idea.MatrixSDK/.idea feat: EncryptedAttachment decrypt + E2EE key forwarding 2026-07-02 07:49:00 +02:00
src fix: audit batch — SAS secret logging, RoomStateCache race, Megolm send race, retry safety, thread receipts 2026-07-19 12:00:56 +02:00
tests/MatrixSDK.Tests fix: E2EE inbound — persistence Olm sessions, unwedging, import forwardovaných klíčů 2026-07-11 23:50:27 +02:00
.gitignore feat: initial Matrix SDK - core, E2EE (Megolm/Olm), Spaces, Threads 2026-06-30 17:58:08 +02:00
MatrixSDK.slnx feat: initial Matrix SDK - core, E2EE (Megolm/Olm), Spaces, Threads 2026-06-30 17:58:08 +02:00
README.md docs: zminka o vyvoji s pomoci AI 2026-07-22 22:56:40 +02:00

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 libsodium veze 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.