Start · Sprachen · PHP · Referenz · rnp_import_signatures

rnp_import_signatures

Funktion

Importiert eigenständige Signaturen in einen RNP-Schlüsselbund und gibt ein JSON-Dokument mit Informationen über die aktualisierten Schlüssel zurück.

Kategorie: crypto

Signatur

rnp_import_signatures(RnpFFI $ffi, string $input, int $flags): string|false

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

Typ
string|false
Beschreibung
Bei Erfolg ein JSON-kodierter String mit Informationen über die aktualisierten Schlüssel (z. B. Fingerabdrücke, betroffene UIDs). Im Fehlerfall wird 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";
    }
}
Aktualisierte Schlüssel: 1 Fingerabdruck: AABBCCDDEEFF00112233445566778899AABBCCDD

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";
}
Schlüssel aktualisiert: 1122334455667788990011223344556677889900

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