import ssh2 from "ssh2"; /** * Ein ed25519-Schlüsselpaar im OpenSSH-Format, das ssh2 auch selbst wieder lesen kann. * * `ssh2.utils.generateKeyPairSync("ed25519")` liefert in etwa 4 von 1000 Fällen einen privaten * Schlüssel, an dem der eigene Parser mit „Malformed OpenSSH private key“ scheitert (gemessen mit * ssh2 1.17.0). Gespeichert wäre so ein Server-Schlüssel dauerhaft unbrauchbar – deshalb wird * geprüft und notfalls neu erzeugt. */ export function ed25519Erzeugen(kommentar?: string): { privat: string; oeffentlich: string } { for (let versuch = 0; versuch < 20; versuch += 1) { const paar = ssh2.utils.generateKeyPairSync("ed25519", kommentar ? { comment: kommentar } : {}); if (!(ssh2.utils.parseKey(paar.private) instanceof Error)) { return { privat: paar.private, oeffentlich: paar.public.trim() }; } } throw new Error("Kein lesbarer ed25519-Schlüssel erzeugt."); }