Signatur
Beschreibung
gnupg_listsignatures() gibt ein assoziatives Array mit allen Signaturen zurück, die einem bestimmten OpenPGP-Schlüssel zugeordnet sind. Die Signaturen enthalten Informationen darüber, welche anderen Schlüssel den angegebenen Schlüssel zertifiziert haben – ein zentrales Konzept des Web of Trust in PGP/GPG.
Die Funktion gehört zur prozeduralen Schnittstelle der gnupg-Erweiterung. Als erstes Argument erwartet sie ein GnuPG-Ressource-Handle, das mit gnupg_init() erzeugt wurde. Das zweite Argument ist die Fingerprint- oder Schlüssel-ID des zu untersuchenden Schlüssels, der sich im Schlüsselbund des aktuellen GPG-Heimatverzeichnisses befinden muss.
Typische Einsatzgebiete sind die Überprüfung des Vertrauensstatus eines Schlüssels sowie die Anzeige von Zertifizierungsinformationen in PGP-Verwaltungsoberflächen. Das zurückgegebene Array enthält für jede Signatur Felder wie fingerprint, keyid, timestamp, expires, uid und revoked.
Die Funktion steht nur zur Verfügung, wenn die PECL-Erweiterung gnupg installiert und geladen ist. Das GnuPG-Heimatverzeichnis kann über die Umgebungsvariable GNUPGHOME oder beim Initialisieren des Handlers gesteuert werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $identifier Pflicht | resource | Ein GnuPG-Ressource-Handle, das zuvor mit gnupg_init() erstellt wurde. |
|
| $keyid Pflicht | string | Die Fingerprint- oder Schlüssel-ID des Schlüssels, dessen Signaturen abgefragt werden sollen. Der Schlüssel muss im lokalen GPG-Schlüsselbund vorhanden sein. |
Rückgabewert
fingerprint, keyid, timestamp, expires, uid und revoked. Bei einem Fehler (z. B. ungültige Schlüssel-ID oder Ressource) wird false zurückgegeben.Beispiele
Signaturen eines Schlüssels auflisten
<?php
// GnuPG-Handler initialisieren
$gpg = gnupg_init();
// Fingerprint des zu untersuchenden Schlüssels
$keyid = 'ABCDEF1234567890ABCDEF1234567890ABCDEF12';
// Signaturen abrufen
$signatures = gnupg_listsignatures($gpg, $keyid);
if ($signatures === false) {
echo 'Fehler beim Abrufen der Signaturen.' . PHP_EOL;
} else {
foreach ($signatures as $uid => $sigs) {
echo 'UID: ' . $uid . PHP_EOL;
foreach ($sigs as $sig) {
echo ' Unterzeichner-KeyID : ' . $sig['keyid'] . PHP_EOL;
echo ' Fingerprint : ' . $sig['fingerprint'] . PHP_EOL;
echo ' Zeitstempel : ' . date('Y-m-d H:i:s', $sig['timestamp']) . PHP_EOL;
echo ' Widerrufen : ' . ($sig['revoked'] ? 'Ja' : 'Nein') . PHP_EOL;
echo PHP_EOL;
}
}
}
Anzahl der Signaturen für einen Schlüssel ermitteln
<?php
$gpg = gnupg_init();
$keyid = 'ABCDEF1234567890ABCDEF1234567890ABCDEF12';
$signatures = gnupg_listsignatures($gpg, $keyid);
if ($signatures !== false) {
$total = 0;
foreach ($signatures as $uid => $sigs) {
$total += count($sigs);
}
echo 'Schlüssel hat insgesamt ' . $total . ' Signatur(en).' . PHP_EOL;
} else {
echo 'Schlüssel nicht gefunden oder Fehler aufgetreten.' . PHP_EOL;
}
// Wichtig · Fallstricke
Voraussetzungen: Die PECL-Erweiterung gnupg muss installiert und in der php.ini aktiviert sein (extension=gnupg). Außerdem muss GnuPG auf dem System verfügbar sein.
Schlüsselbund: Der Schlüssel muss im lokalen GPG-Schlüsselbund importiert sein. Das Heimatverzeichnis kann über putenv('GNUPGHOME=/pfad/zum/gnupg-verzeichnis') angepasst werden, bevor gnupg_init() aufgerufen wird.
Vertrauen: Beachte, dass Signaturen im Web of Trust nur dann vertrauenswürdig sind, wenn die unterzeichnenden Schlüssel selbst als vertrauenswürdig eingestuft wurden. Eine vorhandene Signatur allein garantiert keine Authentizität des Schlüssels.
Objektorientierte Alternative: Die OO-Schnittstelle bietet dieselbe Funktionalität über $gpg->listsignatures($keyid) des gnupg-Objekts.