Hanno Böck commited on 2025-04-29 13:43:46
Zeige 1 geänderte Dateien mit 9 Einfügungen und 1 Löschungen.
... | ... |
@@ -258,7 +258,7 @@ function verify_shell($input) |
258 | 258 |
} |
259 | 259 |
|
260 | 260 |
|
261 |
-function filter_ssh_key($key) |
|
261 |
+function filter_ssh_key($key, &$fphash = "") |
|
262 | 262 |
{ |
263 | 263 |
$filtered = trim(str_replace(["\r", "\n"], ' ', $key)); |
264 | 264 |
$keyparts = explode(" ", $filtered); |
... | ... |
@@ -296,10 +296,18 @@ function filter_ssh_key($key) |
296 | 296 |
]; |
297 | 297 |
$sshcmd = proc_open("ssh-keygen -l -f -", $descr, $pipes, null, null); |
298 | 298 |
fwrite($pipes[0], $fkey); |
299 |
+ fclose($pipes[0]); |
|
300 |
+ $fphash = fread($pipes[1], 1024); |
|
299 | 301 |
if (proc_close($sshcmd) !== 0) { |
300 | 302 |
system_failure("Ungültiger SSH-Key laut ssh-keygen!"); |
301 | 303 |
} |
302 | 304 |
|
305 |
+ $fphash = explode(" ", $fphash)[1]; |
|
306 |
+ if ((strlen($fphash) != 50) || (substr($fphash, 0, 7) != "SHA256:")) { |
|
307 |
+ system_failure("Interner Fehler: Fingerprint im falschen Format"); |
|
308 |
+ } |
|
309 |
+ $fphash = substr($fphash, 7); |
|
310 |
+ |
|
303 | 311 |
return $fkey; |
304 | 312 |
} |
305 | 313 |
|
306 | 314 |