Start · Sprachen · PHP · Referenz · rnp_supported_features

rnp_supported_features

Funktion

Gibt die vom RNP-Kryptographie-Backend unterstützten Funktionen eines bestimmten Typs als JSON-String zurück.

seit PHP 8.0.0 Kategorie: crypto

Signatur

rnp_supported_features(string $type): string|false

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

Typ
string|false
Beschreibung
Gibt bei Erfolg einen JSON-kodierten String zurück, der die unterstützten Funktionen des angegebenen Typs auflistet. Im Fehlerfall (z. B. unbekannter Typ) wird 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";
    }
}
Unterstützte Hash-Algorithmen: - MD5 - SHA1 - SHA256 - SHA384 - SHA512 - SHA224 - SHA3-256 - SHA3-512

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";
}
AES256 wird unterstützt – Verschlüsselung kann beginnen.

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";
}
Verfügbare elliptische Kurven (5 gesamt): NIST P-256, NIST P-384, NIST P-521, brainpoolP256r1, Curve25519

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