Signatur
Beschreibung
rnp_import_signatures liest eigenständige OpenPGP-Signaturen (z. B. Zertifizierungssignaturen oder Widerrufssignaturen) aus einem binären oder ASCII-armierten Eingabepuffer und importiert diese in den über das RnpFFI-Objekt verwalteten Schlüsselbund. Die Funktion ist Teil der PHP-Erweiterung für die RNP-Bibliothek (eine RFC-4880-konforme OpenPGP-Implementierung).
Nach dem Import liefert die Funktion einen JSON-String zurück, der detaillierte Informationen über alle Schlüssel enthält, deren Signaturdaten sich durch den Import verändert haben. So lässt sich nachvollziehen, welche UIDs oder Schlüssel neue Zertifizierungen erhalten haben oder zurückgerufen wurden.
Typische Einsatzgebiete sind das Synchronisieren von Schlüsselbundinformationen aus einem Schlüsselserver oder das Einpflegen von Widerrufszertifikaten, die separat verbreitet werden. Der Parameter flags erlaubt es, das Verhalten des Imports zu steuern, z. B. ob nur öffentliche oder auch private Signaturen berücksichtigt werden sollen.
Im Fehlerfall – etwa wenn der Eingabepuffer keine gültige OpenPGP-Struktur enthält – gibt die Funktion false zurück.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $ffi Pflicht | RnpFFI | Ein initialisiertes RnpFFI-Objekt, das den Schlüsselbund repräsentiert, in den die Signaturen importiert werden sollen. |
|
| $input Pflicht | string | Der Eingabepuffer mit den zu importierenden eigenständigen OpenPGP-Signaturen. Kann sowohl Binärdaten als auch ASCII-armierten Text (Armor) enthalten. | |
| $flags Pflicht | int | 0 | Steuert das Importverhalten. Übergeben Sie 0 für Standardverhalten oder kombinieren Sie die RNP-Importkonstanten (z. B. RNP_LOAD_SAVE_PUBLIC_KEYS, RNP_LOAD_SAVE_SECRET_KEYS) per bitweisem ODER. |
Rückgabewert
false zurückgegeben.Beispiele
Eigenständige Widerrufssignatur importieren und Ergebnis auswerten
<?php
// RNP FFI-Instanz erstellen
$ffi = rnp_op_generate_create('GPG');
// Öffentlichen Schlüsselbund laden
rnp_load_keys($ffi, 'GPG', file_get_contents('/pfad/zum/pubring.pgp'), RNP_LOAD_SAVE_PUBLIC_KEYS);
// Eigenständige Signatur aus einer Datei einlesen
$sigData = file_get_contents('/pfad/zur/signatur.asc');
// Signatur in den Schlüsselbund importieren
$result = rnp_import_signatures($ffi, $sigData, 0);
if ($result === false) {
echo "Fehler beim Importieren der Signaturen.\n";
} else {
$info = json_decode($result, true);
echo "Aktualisierte Schlüssel: " . count($info['keys'] ?? []) . "\n";
foreach ($info['keys'] ?? [] as $key) {
echo "Fingerabdruck: " . $key['fingerprint'] . "\n";
}
}
Mehrere ASCII-armorierte Signaturen aus einem Schlüsselserver importieren
<?php
$ffi = rnp_op_generate_create('GPG');
rnp_load_keys($ffi, 'GPG', file_get_contents('pubring.pgp'), RNP_LOAD_SAVE_PUBLIC_KEYS);
// Signaturdaten von einem Schlüsselserver abrufen (vereinfacht)
$sigData = file_get_contents('https://keyserver.example.com/sigs/0xDEADBEEF');
if ($sigData !== false) {
$json = rnp_import_signatures($ffi, $sigData, RNP_LOAD_SAVE_PUBLIC_KEYS);
if ($json !== false) {
$decoded = json_decode($json, true);
foreach ($decoded['keys'] ?? [] as $updatedKey) {
echo "Schlüssel aktualisiert: " . $updatedKey['fingerprint'] . "\n";
}
} else {
echo "Import fehlgeschlagen – ungültige Signaturdaten?\n";
}
} else {
echo "Signaturdaten konnten nicht abgerufen werden.\n";
}
// Wichtig · Fallstricke
Sicherheitshinweis: Importieren Sie niemals ungeprüfte Signaturen aus nicht vertrauenswürdigen Quellen automatisch in einen produktiven Schlüsselbund, da manipulierte Signaturdaten das Vertrauensmodell des Schlüsselbunds beeinflussen können (z. B. durch gefälschte Zertifizierungen).
Der zurückgegebene JSON-String sollte stets mit json_decode und Fehlerprüfung verarbeitet werden, da das genaue Format von der verwendeten RNP-Version abhängen kann.
Diese Funktion ist Teil der rnp-PECL-Erweiterung und erfordert, dass die RNP-Bibliothek auf dem System installiert ist. Die Verfügbarkeit der Konstantennamen wie RNP_LOAD_SAVE_PUBLIC_KEYS hängt von der installierten Erweiterungsversion ab.