Start · Sprachen · PHP · Referenz · gnupg_export

gnupg_export

Funktion

Exportiert einen öffentlichen GnuPG-Schlüssel als ASCII-Armor-String anhand eines Suchmusters.

seit PHP 1.3.0 Kategorie: crypto

Signatur

gnupg_export(resource $identifier, string $pattern): string|false

Beschreibung

gnupg_export() durchsucht den GPG-Schlüsselbund der aktuellen GnuPG-Ressource nach einem Schlüssel, der dem angegebenen Muster ($pattern) entspricht, und gibt ihn als ASCII-Armor-formatierten String zurück. Das Muster kann eine E-Mail-Adresse, ein Name, eine Schlüssel-ID oder ein Fingerprint sein.

Die Funktion ist nützlich, wenn öffentliche Schlüssel programmatisch exportiert und z. B. per API an andere Systeme übermittelt, in Datenbanken gespeichert oder in Dateien geschrieben werden sollen. Nur öffentliche Schlüssel werden exportiert – private Schlüssel lassen sich mit dieser Funktion nicht extrahieren.

Voraussetzung ist, dass der gesuchte Schlüssel bereits im Schlüsselbund des konfigurierten GPG-Heimverzeichnisses vorhanden ist. Die GnuPG-Ressource muss zuvor mit gnupg_init() erzeugt worden sein.

Gibt die Funktion false zurück, konnte kein passender Schlüssel gefunden werden oder ist ein interner GnuPG-Fehler aufgetreten. Die genaue Fehlerursache kann mit gnupg_geterror() abgefragt werden.

Parameter

Name Typ Default Beschreibung
$identifier Pflicht resource Eine gültige GnuPG-Ressource, die zuvor mit gnupg_init() erzeugt wurde.
$pattern Pflicht string Suchmuster zur Identifikation des Schlüssels. Kann eine E-Mail-Adresse, ein Name, eine Schlüssel-ID (z. B. 0xABCDEF12) oder ein vollständiger Fingerprint sein.

Rückgabewert

Typ
string|false
Beschreibung
Gibt den exportierten öffentlichen Schlüssel als ASCII-Armor-String zurück. Im Fehlerfall (kein Schlüssel gefunden oder GnuPG-Fehler) wird false zurückgegeben.

Beispiele

Öffentlichen Schlüssel exportieren und ausgeben

<?php
$gpg = gnupg_init();

// Suche nach Schlüssel über E-Mail-Adresse
$exportedKey = gnupg_export($gpg, 'alice@example.com');

if ($exportedKey === false) {
    echo 'Fehler beim Exportieren: ' . gnupg_geterror($gpg);
} else {
    echo $exportedKey;
}
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBF.... -----END PGP PUBLIC KEY BLOCK-----

Exportierten Schlüssel in Datei speichern

<?php
$gpg = gnupg_init();

$fingerprint = 'D1EB5B6B5B5F9B9B5B5B5B5B5B5B5B5B5B5B5B5B';
$exportedKey = gnupg_export($gpg, $fingerprint);

if ($exportedKey !== false) {
    $filename = '/var/keys/alice_public.asc';
    file_put_contents($filename, $exportedKey);
    echo 'Schlüssel erfolgreich exportiert nach: ' . $filename;
} else {
    echo 'Schlüssel nicht gefunden oder Fehler: ' . gnupg_geterror($gpg);
}
Schlüssel erfolgreich exportiert nach: /var/keys/alice_public.asc

// Wichtig · Fallstricke

Sicherheitshinweis: gnupg_export() exportiert ausschließlich öffentliche Schlüssel. Private Schlüssel werden niemals über diese Funktion preisgegeben. Stellen Sie dennoch sicher, dass exportierte Schlüssel nur an autorisierte Empfänger weitergegeben werden, um Missbrauch (z. B. gefälschte Verschlüsselung) zu verhindern.

Das GPG-Heimverzeichnis wird standardmäßig über die Umgebungsvariable GNUPGHOME oder das Standardverzeichnis ~/.gnupg des Webserver-Benutzers bestimmt. Achten Sie darauf, dass der PHP-Prozess Leserechte auf dieses Verzeichnis besitzt.

Wenn das Suchmuster auf mehrere Schlüssel zutrifft, werden in der Regel alle übereinstimmenden öffentlichen Schlüssel zusammen im Rückgabe-String enthalten sein (aneinandergehängte ASCII-Armor-Blöcke). Verwenden Sie daher möglichst den vollständigen Fingerprint für eine eindeutige Auswahl.