Bernd Wurst commited on 2019-03-13 10:44:42
Zeige 4 geänderte Dateien mit 50 Einfügungen und 11 Löschungen.
... | ... |
@@ -32,9 +32,13 @@ function receive_pgpidcheck(result) { |
32 | 32 |
if (result.status == 'found') { |
33 | 33 |
$('#pgpid').val(result.id); |
34 | 34 |
$("#pgpid_feedback").html('<img src="../../images/ok.png" style="height: 16px; width: 16px;" />'); |
35 |
+ } else if (result.status == 'unusable') { |
|
36 |
+ $('#pgpid').val(result.id); |
|
37 |
+ $('#pgpkey').closest('tr').show(); |
|
38 |
+ $("#pgpid_feedback").html('<img src="../../images/error.png" style="height: 16px; width: 16px;" /><br>Es wurde ein Key gefunden, allerdings scheint dieser kaputt oder veraltet zu sein. Bitte geben Sie unten den kompletten aktuellen Key ein.'); |
|
35 | 39 |
} else { |
36 | 40 |
$('#pgpkey').closest('tr').show(); |
37 |
- $("#pgpid_feedback").html('<img src="../../images/error.png" style="height: 16px; width: 16px;" /><br>Es wurde kein PGP-Key zu dieser ID gefunden. Bitte geben Sie unten den kompletten Key ein.'); |
|
41 |
+ $("#pgpid_feedback").html('<img src="../../images/error.png" style="height: 16px; width: 16px;" /><br>Es konnte kein PGP-Key zu dieser ID vom Keyserver-Netzwerk bezogen werden. Bitte geben Sie unten den kompletten Key ein.'); |
|
38 | 42 |
} |
39 | 43 |
} |
40 | 44 |
|
... | ... |
@@ -42,7 +46,8 @@ function receive_pgpidcheck(result) { |
42 | 46 |
function receive_pgpid(result) { |
43 | 47 |
if (result.status == 'found' && ! $('#pgpid').val()) { |
44 | 48 |
$('#pgpid').val(result.id); |
45 |
- $("#pgpid_feedback").html('<img src="../../images/ok.png" style="height: 16px; width: 16px;" /><br>Es wurde ein PGP-Key auf einem Keyserver gefunden.'); |
|
49 |
+ $("#pgpid_feedback").html('<img src="../../images/ok.png" style="height: 16px; width: 16px;" /><br>Es wurde ein PGP-Key auf einem Keyserver gefunden. Bitte prüfen Sie, ob die ID korrekt ist und Sie auch den dazu passenden privaten Schlüssel besitzen.'); |
|
50 |
+ pgpid_change(); |
|
46 | 51 |
} |
47 | 52 |
} |
48 | 53 |
|
... | ... |
@@ -329,7 +329,9 @@ function search_pgp_key($search) |
329 | 329 |
return null; |
330 | 330 |
} |
331 | 331 |
$output = array(); |
332 |
- exec('LC_ALL=C /usr/bin/gpg --batch --with-colons --keyserver hkp://pool.sks-keyservers.net --search-key '.escapeshellarg($search), $output); |
|
332 |
+ $command = 'LC_ALL=C /usr/bin/gpg --batch --with-colons --keyserver hkps://hkps.pool.sks-keyservers.net --search-key '.escapeshellarg($search); |
|
333 |
+ DEBUG($command); |
|
334 |
+ exec($command, $output); |
|
333 | 335 |
DEBUG($output); |
334 | 336 |
$keys = array(); |
335 | 337 |
foreach ($output as $row) { |
... | ... |
@@ -358,12 +360,15 @@ function fetch_pgp_key($pgp_id) |
358 | 360 |
{ |
359 | 361 |
$output = array(); |
360 | 362 |
$ret = null; |
361 |
- DEBUG('/usr/bin/gpg --batch --keyserver hkp://pool.sks-keyservers.net --recv-key '.escapeshellarg($pgp_id)); |
|
362 |
- exec('/usr/bin/gpg --batch --keyserver hkp://pool.sks-keyservers.net --recv-key '.escapeshellarg($pgp_id), $output, $ret); |
|
363 |
+ $command = '/usr/bin/gpg --batch --keyserver hkps://hkps.pool.sks-keyservers.net --no-auto-check-trustdb --trust-model=always --recv-key '.escapeshellarg($pgp_id); |
|
364 |
+ DEBUG($command); |
|
365 |
+ exec($command, $output, $ret); |
|
363 | 366 |
DEBUG($output); |
364 | 367 |
DEBUG($ret); |
365 | 368 |
if ($ret == 0) { |
366 |
- exec('/usr/bin/gpg --batch --with-colons --list-keys '.escapeshellarg($pgp_id), $output); |
|
369 |
+ $command = '/usr/bin/gpg --batch --with-colons --list-keys '.escapeshellarg($pgp_id); |
|
370 |
+ DEBUG($command); |
|
371 |
+ exec($command, $output); |
|
367 | 372 |
DEBUG($output); |
368 | 373 |
foreach ($output as $row) { |
369 | 374 |
if (substr($row, 0, 4) === 'fpr:') { |
... | ... |
@@ -376,6 +381,26 @@ function fetch_pgp_key($pgp_id) |
376 | 381 |
return null; |
377 | 382 |
} |
378 | 383 |
|
384 |
+function import_pgp_key($pgp_key) |
|
385 |
+{ |
|
386 |
+ $command = 'LC_ALL=C /usr/bin/gpg --batch --no-auto-check-trustdb --trust-model=always --import'; |
|
387 |
+ DEBUG($command); |
|
388 |
+ $proc = popen($command, 'w'); |
|
389 |
+ fwrite($proc, $pgp_key); |
|
390 |
+ $ret = pclose($proc); |
|
391 |
+ DEBUG('Import des PGP-Keys: '.$ret); |
|
392 |
+ return $ret === 0; |
|
393 |
+} |
|
394 |
+ |
|
395 |
+function test_pgp_key($pgp_id) |
|
396 |
+{ |
|
397 |
+ $command = 'LC_ALL=C /usr/bin/gpg --batch --trust-model=always --encrypt --recipient '.escapeshellarg($pgp_id); |
|
398 |
+ DEBUG($command); |
|
399 |
+ $proc = popen($command, 'w'); |
|
400 |
+ $ret = pclose($proc); |
|
401 |
+ DEBUG('Test des PGP-Key: '.$ret); |
|
402 |
+ return $ret === 0; |
|
403 |
+} |
|
379 | 404 |
|
380 | 405 |
function domainlist_by_contact($c) |
381 | 406 |
{ |
... | ... |
@@ -140,14 +140,20 @@ if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'delete') { |
140 | 140 |
|
141 | 141 |
if (isset($_REQUEST['usepgp']) && $_REQUEST['usepgp'] == 'yes' && isset($_REQUEST['pgpid'])) { |
142 | 142 |
$pgpid = preg_replace('/[^0-9a-fA-F]/', '', $_REQUEST['pgpid']); |
143 |
- DEBUG('PGP-ID: '.$pgpid.' / Länge: '.strlen($pgpid)); |
|
144 |
- if (strlen($pgpid) == 8 || strlen($pgpid) == 16 || strlen($pgpid) == 40) { |
|
145 |
- $c['pgp_id'] = $_REQUEST['pgpid']; |
|
143 |
+ DEBUG('PGP-ID: '.$pgpid); |
|
146 | 144 |
if (isset($_REQUEST['pgpkey']) && $_REQUEST['pgpkey']) { |
145 |
+ DEBUG('Key angegeben, wird importiert'); |
|
146 |
+ $c['pgp_id'] = $pgpid; |
|
147 |
+ import_pgp_key($_REQUEST['pgpkey']); |
|
147 | 148 |
$c['pgp_key'] = $_REQUEST['pgpkey']; |
148 |
- } |
|
149 | 149 |
} else { |
150 |
- warning('Ihre PGP-ID wurde nicht übernommen, da sie syntaktisch falsch erscheint'); |
|
150 |
+ DEBUG('Kein Key, wird vom Keyserver geholt!'); |
|
151 |
+ $c['pgp_id'] = fetch_pgp_key($pgpid); |
|
152 |
+ } |
|
153 |
+ if (!test_pgp_key($c['pgp_id'])) { |
|
154 |
+ $c['pgp_id'] = null; |
|
155 |
+ $c['pgp_key'] = null; |
|
156 |
+ warning('Ihr PGP-Key wurde nicht übernommen, da er nicht gültig zu sein scheint. Bitte geben Sie im Zweifel die vollständige Key-ID (Fingerprint) und einen Key in der ASCII-Form ein.'); |
|
151 | 157 |
} |
152 | 158 |
} else { |
153 | 159 |
$c['pgp_id'] = null; |
154 | 160 |