Reine Funktionen fuer Dry-Run und Ausrollen. Alles ausserhalb des Blocks bleibt bytegenau stehen, auch CRLF, BOM und kaputte Zeilen; der Block entsteht deterministisch aus dem Soll. Ein beschaedigter Block wird nie automatisch ueberschrieben, weil genau dort fremde Zeilen verschwinden koennten. Verwaltete Keys erkennt sshkv am Fingerprint, nicht am Kommentar. Der Deployment-Key kann nicht aus dem Block fallen (Aussperrschutz). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1.5 KiB
1.5 KiB
#015 authorized_keys: Parser und Merge
Status: erledigt Meilenstein: v0.2.0 Labels: backend, test Geschätzt: 3 h Tatsächlich: 0 h 15 min
Ziel
Reine Funktionen zum Lesen und Schreiben von authorized_keys mit verwaltetem Block.
Aufgaben
- Optionen mit Anführungszeichen
- CRLF, BOM, Kommentare, Duplikate
- Block erzeugen/ersetzen, Rest bytegenau
- Aussperrschutz Deployment-Key
Akzeptanzkriterien
- Umfangreiche Unit-Tests der Randfälle
Abhängigkeiten
#001
Notizen / Entscheidungen
- Bytegenau: Zeilen werden an
\ngetrennt, ein\rbleibt Teil der Zeile; BOM und fehlende letzte Zeilenschaltung bleiben erhalten. Einzige Änderung außerhalb des Blocks: Fehlt der Block und der letzten Zeile die Zeilenschaltung, bekommt sie eine – sonst stünde der Block-Anfang in derselben Zeile. - CRLF-Dateien (überwiegend
\r\n) bekommen auch im Block CRLF. - Beschädigter Block (Anfang ohne Ende, mehrere Blöcke, Ende vor Anfang): nie automatisch schreiben,
BlockFehlermit Bitte um Handarbeit. - Erkennung am Fingerprint, nicht am Kommentar; der Typ im Blob muss zum Zeilentyp passen.
- Optionen: Parser wie sshd (Kommas in Anführungszeichen,
\"). Für Benutzereingaben strenger: nur bekannte Optionen, keine Steuerzeichen. - Aussperrschutz: Ein
pflicht-Fingerprint (Deployment-Key), der im Block stand, darf nicht verschwinden. - Diff per LCS, für die Anzeige verdichtet (je 2 Zeilen Kontext).