Signatur
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
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);
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);
// 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.