feat(xmpp): natieve calls F2 — eigen XMPP-verbindingslaag + test-verbinding #1125
No reviewers
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck!1125
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/native-calls-f2-xmpp"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fase F2 van de natieve-calls-functie (
docs/design/NATIVE_CALLS.md§5): OciDecks eigen (from-scratch) XMPP-over-WebSocket-client — de enkelvoudige spine die straks de Jitsi-calls én de samenwerkings-data-plane draagt — plus één werkende consument: een test-verbinding vanuit de (standaard-uit) Videovergaderingen-modulekaart. Nog géén join/call en géén media (dat is F3+); wat hier werkt is dat OciDeck een XMPP-server bereikt en met een account inlogt (SASL), en dat eerlijk terugmeldt.Lagen
lib/xmpp/xmpp_stanza.dart— stanza-wire-model viapackage:xml(al een dependency), DTD's geweigerd (XXE-veilig).lib/xmpp/xmpp_sasl.dart— PLAIN/ANONYMOUS +ScramClient(SCRAM-SHA-1/256,Hi/PBKDF2 op HMAC), bewezen tegen de RFC 5802 §5-vector, constant-time server-signature-vergelijking. Clientnonce uitRandom.secure().lib/xmpp/xmpp_frame_transport*.dart— injecteerbare frame-naad; de io-helft opent de enige uitgaande socket met een ruweWebSocket.connect(zichtbaar voor de egress-scan), NetGuard-geresolved + gepind (DNS-rebind), fail-closed op een schema-downgrade; web faalt gesloten.lib/xmpp/xmpp_connection.dart— auth-state-machine. Mechanismekeuze SCRAM > PLAIN (alleen alsmaySendReusableSecretklaart) > ANONYMOUS, weigert een<see-other-host>-redirect (fail-closed), geeft een getypeerdeXmppAuthFailureterug (code, geen proza — l10n hoort in de UI).lib/models/xmpp_settings.dart+SecretStore.xmppPasswordKey— spiegelenMatrixServer/matrixTokenKey; wachtwoord alleen in de keychain.lib/widgets/dialogs/xmpp_test_connection_dialog.dart— de consument (sluit de dode-code-poort). Server/JID/wachtwoord + testknop → gelukt (met mechanisme) of een vertaalde fout. Injecteerbare connect → widget-test zonder socket. Bewaart niets.Waarborgen
network_sink_guard_test.dart, incl. een onderbouwde redirect-ratchet-uitzondering (WS-upgrade kanfollowRedirectsniet zetten; de connectionFactory pint elke hop).trustedInternal-opt-in). Bewaker vereist want F2 raakt uitgaand verkeer + een publieke belofte.package:xmlwas al een dependency → geen ketenkeuring.lib/xmpp/-sectie + model + dialoog; ARCHITECTURE tweede-netwerkstack-belofte (desktop-only, web fail-closed, gebruiker-geconfigureerd, NetGuard-bewaakt; "phones home" blijft onwaar).Poortstand (eerlijk)
make checkis groen op alle statische poorten (format, analyze, toolchain, conventies, privacy-projectie, methodelengte, dode-code, hardcoded-text, commentaartaal) én op alle F2-eigen tests. In de volledige testsuite staan 2 tests rood:chrome_no_fixed_white_surface_testenui_text_scale_test, beide oplib/widgets/shell/welcome_screen.dart:147/159. Dat is geërfde #1124-drift (het onboarding-redesign), byte-identiek aan main, niet door deze PR geraakt — precies de main-drift waarvan de volledige suite niet per-PR gepoort is. Die wordt apart opgepakt (codex/fix-welcome-screen-gates); F2 verandert die rode stand niet.