Signatur
Beschreibung
gnupg_import() nimmt einen PGP-Schlüssel im ASCII-Armor- oder Binärformat entgegen und importiert ihn in den Schlüsselbund, der mit der übergebenen GnuPG-Ressource verknüpft ist. Typischerweise wird diese Funktion verwendet, um öffentliche Schlüssel von Kommunikationspartnern zu hinterlegen, damit anschließend Nachrichten verschlüsselt oder Signaturen verifiziert werden können.
Im Erfolgsfall liefert die Funktion ein assoziatives Array mit Statistiken über den Import, z. B. wie viele Schlüssel neu importiert oder bereits vorhanden waren. Bei einem Fehler wird false zurückgegeben. Die Schlüsseldaten können direkt aus einer Datei, einer Datenbank oder aus einem Schlüsselserver stammen, solange sie als String vorliegen.
Es ist wichtig, den Vertrauensstatus (trust level) importierter Schlüssel im Blick zu behalten: Ein importierter Schlüssel wird standardmäßig als nicht vertrauenswürdig eingestuft. Für eine vollständige Verschlüsselungs-Pipeline sollte nach dem Import das Vertrauen explizit gesetzt werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $identifier Pflicht | resource | Eine gültige GnuPG-Ressource, die zuvor mit gnupg_init() erzeugt wurde und den Kontext (Schlüsselbund, Heimatverzeichnis) definiert. |
|
| $keydata Pflicht | string | Der zu importierende Schlüssel als String, typischerweise im ASCII-Armor-Format (beginnt mit -----BEGIN PGP PUBLIC KEY BLOCK-----). Binäre Schlüsseldaten sind ebenfalls möglich. |
Rückgabewert
imported– Anzahl der neu importierten Schlüsselunchanged– Anzahl der bereits vorhandenen, unveränderten Schlüsselimportedkeys– Array mit den Fingerabdrücken der importierten Schlüsselconsidered– Gesamtzahl der verarbeiteten Schlüssel
false zurückgegeben.Beispiele
Öffentlichen Schlüssel aus Datei importieren
<?php
// GnuPG-Ressource initialisieren
$gpg = gnupg_init();
// Schlüsseldaten aus einer Datei laden (ASCII-Armor-Format)
$keydata = file_get_contents('/path/to/public_key.asc');
if ($keydata === false) {
die('Schlüsseldatei konnte nicht gelesen werden.');
}
// Schlüssel importieren
$result = gnupg_import($gpg, $keydata);
if ($result === false) {
echo 'Import fehlgeschlagen: ' . gnupg_geterror($gpg);
} else {
echo 'Importierte Schlüssel: ' . $result['imported'] . PHP_EOL;
echo 'Unveränderte Schlüssel: ' . $result['unchanged'] . PHP_EOL;
if (!empty($result['importedkeys'])) {
foreach ($result['importedkeys'] as $fingerprint) {
echo 'Fingerabdruck: ' . $fingerprint . PHP_EOL;
}
}
}
Schlüssel von einem Schlüsselserver importieren
<?php
// Schlüsseldaten von einem Keyserver abrufen (Beispiel mit cURL)
$fingerprint = '0xABCDEF1234567890';
$url = 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=' . urlencode($fingerprint);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$keydata = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($keydata === false || $httpCode !== 200) {
die('Schlüssel konnte nicht vom Keyserver abgerufen werden.');
}
// GnuPG initialisieren und Schlüssel importieren
$gpg = gnupg_init();
$result = gnupg_import($gpg, $keydata);
if ($result === false) {
echo 'Import fehlgeschlagen: ' . gnupg_geterror($gpg);
} else {
echo 'Ergebnis: ' . $result['imported'] . ' Schlüssel importiert, '
. $result['unchanged'] . ' unverändert.' . PHP_EOL;
}
// Wichtig · Fallstricke
Sicherheitshinweis: Importierte Schlüssel sollten stets auf ihre Authentizität geprüft werden, bevor ihnen vertraut wird. Ein importierter Schlüssel allein garantiert nicht, dass er wirklich zur erwarteten Person gehört — der Fingerabdruck sollte auf einem sicheren Weg verifiziert werden (z. B. persönlicher Austausch oder Web of Trust).
Die Funktion gehört zur prozeduralen GnuPG-API. Für eine objektorientierte Nutzung steht die Klasse gnupg mit der Methode gnupg::import() zur Verfügung, die identisch funktioniert.
Werden Schlüsseldaten aus nicht vertrauenswürdigen Quellen (z. B. Benutzereingaben, externe APIs) importiert, sollte die Eingabe auf Plausibilität geprüft werden, um unerwartetes Verhalten zu vermeiden.