Signatur
Beschreibung
rnp_supported_features() gehört zur PHP-RNP-Erweiterung und ermöglicht es, zur Laufzeit zu ermitteln, welche kryptographischen Algorithmen, Schlüsseltypen oder sonstige Features die installierte RNP-Bibliothek unterstützt. Das Ergebnis wird als JSON-kodierter String geliefert, der direkt mit json_decode() weiterverarbeitet werden kann.
Typische Werte für den Parameter type sind beispielsweise "symmetric algorithms", "asymmetric algorithms", "hash algorithms", "compression algorithms" oder "elliptic curves". Die genaue Liste der akzeptierten Typen hängt von der verwendeten RNP-Bibliotheksversion ab.
Diese Funktion ist besonders nützlich, wenn eine Anwendung vor der Schlüsselerzeugung oder Verschlüsselung sicherstellen muss, dass ein bestimmter Algorithmus auf dem Zielsystem verfügbar ist. So können Kompatibilitätsprobleme zwischen verschiedenen RNP-Installationen frühzeitig erkannt werden.
Im Fehlerfall – etwa bei einem unbekannten type – gibt die Funktion false zurück, sodass eine Prüfung des Rückgabewerts vor der Weiterverarbeitung empfohlen wird.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $type Pflicht | string | Der Funktionstyp, dessen unterstützte Einträge abgefragt werden sollen. Gültige Werte sind z. B. "symmetric algorithms", "asymmetric algorithms", "hash algorithms", "compression algorithms" oder "elliptic curves". |
Rückgabewert
false zurückgegeben.Beispiele
Unterstützte Hash-Algorithmen abfragen
<?php
$json = rnp_supported_features('hash algorithms');
if ($json === false) {
echo "Abfrage fehlgeschlagen.\n";
} else {
$features = json_decode($json, true);
echo "Unterstützte Hash-Algorithmen:\n";
foreach ($features as $algo) {
echo ' - ' . $algo . "\n";
}
}
Verfügbarkeit eines bestimmten Algorithmus prüfen
<?php
function isAlgorithmSupported(string $type, string $algorithm): bool {
$json = rnp_supported_features($type);
if ($json === false) {
return false;
}
$features = json_decode($json, true);
return in_array($algorithm, $features, true);
}
if (isAlgorithmSupported('symmetric algorithms', 'AES256')) {
echo "AES256 wird unterstützt – Verschlüsselung kann beginnen.\n";
} else {
echo "AES256 wird NICHT unterstützt.\n";
}
Alle unterstützten elliptischen Kurven ausgeben
<?php
$json = rnp_supported_features('elliptic curves');
if ($json !== false) {
$curves = json_decode($json, true);
echo "Verfügbare elliptische Kurven (" . count($curves) . " gesamt):\n";
echo implode(', ', $curves) . "\n";
} else {
echo "Fehler: Typ nicht erkannt.\n";
}
// Wichtig · Fallstricke
Versionsabhängigkeit: Die tatsächlich zurückgegebenen Funktionen und die akzeptierten Typbezeichnungen hängen von der auf dem Server installierten Version der RNP-Bibliothek ab. Testen Sie die Ausgabe auf Ihrem Zielsystem, bevor Sie sich auf bestimmte Algorithmen verlassen.
Fehlerbehandlung: Überprüfen Sie den Rückgabewert stets auf false, bevor Sie json_decode() aufrufen. Ein nicht erkannter type-Wert führt zu false statt zu einem leeren Array.
Die Funktion ist nur verfügbar, wenn die rnp-PHP-Erweiterung installiert und aktiviert ist. Diese ist standardmäßig nicht Bestandteil von PHP und muss separat installiert werden.