Start · Sprachen · PHP · Referenz · gnupg_listsignatures

gnupg_listsignatures

Funktion

Liefert eine Liste aller Signaturen für einen GnuPG-Schlüssel anhand seiner Schlüssel-ID.

Kategorie: crypto

Signatur

gnupg_listsignatures(resource $identifier, string $keyid): array|false

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

Typ
array|false
Beschreibung
Gibt im Erfolgsfall ein verschachteltes assoziatives Array zurück, das alle Signaturen des angegebenen Schlüssels enthält. Jede Signatur enthält Felder wie 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;
        }
    }
}
UID: Alice Beispiel <alice@example.com> Unterzeichner-KeyID : 1234567890ABCDEF Fingerprint : ABCDEF1234567890ABCDEF1234567890ABCDEF12 Zeitstempel : 2023-05-15 10:30:00 Widerrufen : Nein

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;
}
Schlüssel hat insgesamt 3 Signatur(en).

// 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.