Start · Sprachen · PHP · Referenz · rnp_list_keys

rnp_list_keys

Funktion

Listet alle Schlüssel eines RNP-Schlüsselbunds nach dem angegebenen Identifikatortyp auf.

Kategorie: crypto

Signatur

rnp_list_keys(RnpFFI $ffi, string $identifier_type): array|false

Beschreibung

rnp_list_keys gibt eine Liste aller Schlüssel zurück, die im angegebenen RNP-FFI-Schlüsselbund gespeichert sind. Der Identifikatortyp bestimmt, welches Attribut als Kennung für jeden Schlüssel verwendet wird – zum Beispiel der Fingerabdruck, die Key-ID oder der User-ID-String.

Die Funktion ist nützlich, wenn man alle vorhandenen öffentlichen oder privaten Schlüssel aufzählen möchte, etwa um Schlüsselverwaltungsoberflächen zu bauen, Schlüssel zu exportieren oder vor einer Verschlüsselung zu prüfen, welche Empfängerschlüssel verfügbar sind.

Das zurückgegebene Array enthält die Identifikatoren aller gefundenen Schlüssel als Zeichenketten. Falls ein Fehler auftritt (z. B. ein ungültiger Identifikatortyp oder ein nicht initialisiertes FFI-Objekt), gibt die Funktion false zurück.

  • userid – User-ID-Zeichenkette (Name/E-Mail) des Schlüsselinhabers
  • keyid – 16-stellige hexadezimale Key-ID
  • fingerprint – vollständiger Fingerabdruck des Schlüssels
  • grip – interner RNP-Schlüssel-Grip

Parameter

Name Typ Default Beschreibung
$ffi Pflicht RnpFFI Ein initialisiertes RnpFFI-Objekt, das den Schlüsselbund repräsentiert, dessen Schlüssel aufgelistet werden sollen.
$identifier_type Pflicht string Art des Identifikators, nach dem die Schlüssel aufgelistet werden. Gültige Werte sind 'userid', 'keyid', 'fingerprint' und 'grip'.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein Array von Zeichenketten zurück, das die Identifikatoren aller gefundenen Schlüssel enthält. Bei einem Fehler (z. B. ungültiger Identifikatortyp oder Initialisierungsfehler) wird false zurückgegeben.

Beispiele

Alle Schlüssel nach Fingerabdruck auflisten

<?php
// RNP-FFI initialisieren
$ffi = rnp_ffi_create('GPG', 'GPG');

// Öffentlichen Schlüsselbund aus einer Datei laden
rnp_load_keys($ffi, 'GPG', '/home/user/.gnupg/pubring.gpg', RNP_LOAD_SAVE_PUBLIC_KEYS);

// Alle Schlüssel nach Fingerabdruck auflisten
$keys = rnp_list_keys($ffi, 'fingerprint');

if ($keys === false) {
    echo "Fehler beim Auflisten der Schlüssel.\n";
} else {
    echo "Gefundene Schlüssel (" . count($keys) . "):\n";
    foreach ($keys as $fingerprint) {
        echo '  Fingerabdruck: ' . $fingerprint . "\n";
    }
}

rnp_ffi_destroy($ffi);
Gefundene Schlüssel (3): Fingerabdruck: A1B2C3D4E5F6A1B2C3D4E5F6A1B2C3D4E5F6A1B2 Fingerabdruck: B2C3D4E5F6A1B2C3D4E5F6A1B2C3D4E5F6A1B2C3 Fingerabdruck: C3D4E5F6A1B2C3D4E5F6A1B2C3D4E5F6A1B2C3D4

Schlüssel nach User-ID suchen und auflisten

<?php
$ffi = rnp_ffi_create('GPG', 'GPG');

// Schlüssel aus Armored-String laden
$pubkey = file_get_contents('/path/to/pubkeys.asc');
rnp_load_keys($ffi, 'GPG', $pubkey, RNP_LOAD_SAVE_PUBLIC_KEYS);

// Alle User-IDs der vorhandenen Schlüssel ausgeben
$userids = rnp_list_keys($ffi, 'userid');

if ($userids !== false) {
    foreach ($userids as $uid) {
        echo 'Schlüsselinhaber: ' . $uid . "\n";
    }
} else {
    echo "Ungültiger Identifikatortyp oder Fehler.\n";
}

rnp_ffi_destroy($ffi);
Schlüsselinhaber: Alice Muster <alice@example.com> Schlüsselinhaber: Bob Beispiel <bob@example.com>

// Wichtig · Fallstricke

Sicherheitshinweis: Geben Sie die zurückgegebenen Schlüsselidentifikatoren (insbesondere User-IDs) niemals ungefiltert in HTML-Ausgaben aus, da sie beliebige Zeichenketten enthalten können und damit XSS-Angriffe ermöglichen würden. Verwenden Sie stets htmlspecialchars() bei der Ausgabe.

Die Funktion ist Teil der RNP-Erweiterung (PHP-Bindings für die rnp-Bibliothek) und setzt voraus, dass die Erweiterung kompiliert und geladen ist. Nicht alle PHP-Installationen beinhalten diese Erweiterung standardmäßig.

Wenn ein Schlüssel mehrere User-IDs besitzt, kann er bei Verwendung von 'userid' mehrfach im Ergebnis-Array erscheinen.