Chatlog: M7 SSH-Hostkey-TOFU-Session ergänzt (Session-Ende)

Kompletter Verlauf von Werksreset-Meldung über SSH-Hostkey-TOFU-Bau
(API-Verifikation im swift-nio-ssh-Quellcode, Fingerprint-Kreuzcheck
per ssh-keygen, Test-Isolationsbug gefunden+gefixt) bis zum fehlenden
Trennen-Button und der finalen Live-Bestätigung.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HReLXMbmPvtQ23p1iWiJNW
This commit is contained in:
Kay
2026-09-13 00:47:11 +02:00
co-authored by Claude Sonnet 5
parent 570fe4999d
commit c1e6ec73b5
+36 -3
View File
@@ -193,8 +193,41 @@ Fix → erneuter Test:
- "speichere alles weg, damit wir eventuell später weiter machen können"
`HANDOFF.md` und dieses Chatlog auf den aktuellen Stand gebracht.
## Fortsetzung: M7-Härtung (SSH-Hostkey-TOFU)
- Neuer Tag. Nutzer: "die Ferwall regeln hab ich aufgeräumt (Werksreset
durchgeführt). lass uns mit dem Härten weitermachen." → M7 gestartet
mit dem größten offenen Punkt: SSH-Hostkey-TOFU (`SSHTransport` nutzte
bisher `.acceptAnything()`).
- API vor der Umsetzung im swift-nio-ssh-Quellcode verifiziert statt
geraten (`NIOSSHPublicKey.write(to:)` für die Wire-Format-Bytes,
`NIOSSHClientServerAuthenticationDelegate`-Protokoll,
`EventLoopPromise` aus `NIOCore`). `SSHHostKeyFingerprint` +
`SSHHostKeyTrustStore` gebaut, `SSHTransport` conformt jetzt selbst
zum Delegate-Protokoll (wie `RestTransport` zu `URLSessionDelegate`),
`ConnectionService` bekam einen zweiten Bestätigungs-Flow analog zum
REST-Zertifikat.
- Für den Unit-Test wurden zwei echte Wegwerf-SSH-Schlüssel per
`ssh-keygen` erzeugt und der Fingerabdruck gegen `ssh-keygen -lf`
kreuzgeprüft (`SHA256:Hllxv6LLoHl2XTIXGGjUYJHbPFoH2F7iMrR74C5J95g`) —
stimmte exakt überein. Ein Test-Isolationsbug (geteilte echte
`UserDefaults` zwischen zwei Tests ohne `tearDown`) wurde dabei
gefunden und gefixt. Alle 26 Tests grün, `xcodebuild test` lief diesmal
ohne den bekannten Gatekeeper-Hänger durch.
- Nutzer testete live, meldete danach: "der 'Trennen-Button' fehlt noch"
`ConnectionService.disconnect()` gab es schon (bisher nur intern
nach Werksreset genutzt), aber keinen UI-Zugang im Verbinden-Tab.
Button ergänzt.
- Nutzer bestätigte danach: "funktioniert sauber" — SSH-Hostkey-TOFU
live verifiziert (Dialog bei erster Verbindung, kein Dialog nach
Trennen+Neuverbinden).
- "erstmal alles speichern, dann schluß für heute" → `HANDOFF.md` und
dieses Chatlog aktualisiert, Session beendet.
## Stand am Ende dieser Session
Siehe `HANDOFF.md` für den vollständigen technischen Stand, offene
Punkte (Firewall-Regel-Nachtest, WLAN-Hardware-Test, M7-Härtung) und
bekannte Einschränkungen.
Siehe `HANDOFF.md` für den vollständigen technischen Stand. SSH-Hostkey-
TOFU (M7) ist fertig und live bestätigt. Offene Punkte: Firewall-Regeln
mit korrektem WAN-Port nach dem Werksreset noch nicht erneut kontrolliert,
WLAN-`.set`-Pfad weiterhin ohne Testgerät mit echtem WLAN-Chip, Rest von
M7 (Fehlerzustände/Politur, REST-Schreibtest mit aktivem `www-ssl`).