# #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 - [x] Optionen mit Anführungszeichen - [x] CRLF, BOM, Kommentare, Duplikate - [x] Block erzeugen/ersetzen, Rest bytegenau - [x] Aussperrschutz Deployment-Key ## Akzeptanzkriterien - [x] Umfangreiche Unit-Tests der Randfälle ## Abhängigkeiten #001 ## Notizen / Entscheidungen - **Bytegenau:** Zeilen werden an `\n` getrennt, ein `\r` bleibt 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, `BlockFehler` mit 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).