Start · Sprachen · PHP · Referenz · rnp_dump_packets

rnp_dump_packets

Funktion

Analysiert einen OpenPGP-Paketstrom und gibt dessen Struktur in menschenlesbarer Textform zurück.

Kategorie: crypto

Signatur

rnp_dump_packets(string $input, int $flags = 0): string|false

Beschreibung

rnp_dump_packets ist Teil der RNP-Erweiterung für PHP und ermöglicht es, den Inhalt eines OpenPGP-Paketstroms (gemäß RFC 4880) zu inspizieren und in lesbarer Form darzustellen. Die Funktion ist besonders nützlich für Debugging-Zwecke, wenn man verstehen möchte, welche OpenPGP-Pakete in einer verschlüsselten Nachricht, einem Schlüsselbund oder einer Signatur enthalten sind.

Die Ausgabe listet alle im Binärstrom enthaltenen Pakete auf – zum Beispiel Public-Key-Pakete, Signaturpakete, verschlüsselte Datenpakete oder User-ID-Pakete – zusammen mit ihren jeweiligen Feldern und Werten. Damit lässt sich schnell nachvollziehen, wie ein OpenPGP-Datenpaket aufgebaut ist, ohne externe Werkzeuge wie gpg --list-packets einsetzen zu müssen.

Der Parameter flags erlaubt es, das Ausgabeverhalten zu steuern, etwa ob rohes Material (Mpi-Werte, Schlüsselbytes) mit ausgegeben werden soll. Verfügbare Flag-Konstanten beginnen typischerweise mit RNP_DUMP_.

Diese Funktion eignet sich ausschließlich für Diagnose- und Analysezwecke. Für die eigentliche Ver- oder Entschlüsselung sowie für die Schlüsselverwaltung stehen spezialisierte RNP-Funktionen zur Verfügung.

Parameter

Name Typ Default Beschreibung
$input Pflicht string Der binäre OpenPGP-Paketstrom, dessen Inhalt analysiert werden soll. Kann z. B. der Inhalt einer .asc- oder .gpg-Datei sein (auch Base64-armored oder roh-binär).
$flags int 0 Optionale Flags zur Steuerung der Ausgabe. Mögliche Werte sind Konstanten wie RNP_DUMP_MPI (gibt MPI-Werte aus), RNP_DUMP_RAW (gibt Rohdaten aus) oder RNP_DUMP_GRIP (gibt Key-Grips aus). Mehrere Flags können per bitweisem ODER kombiniert werden.

Rückgabewert

Typ
string|false
Beschreibung
Gibt einen String mit der menschenlesbaren Darstellung aller enthaltenen OpenPGP-Pakete zurück. Im Fehlerfall (z. B. ungültiger Eingabestrom oder RNP-Fehler) wird false zurückgegeben.

Beispiele

OpenPGP-Paketstrom einer Signaturdatei analysieren

<?php
// Signaturdatei einlesen (ASCII-armored)
$signatureData = file_get_contents('signature.asc');

if ($signatureData === false) {
    die('Datei konnte nicht gelesen werden.');
}

// Paketstrom ohne zusätzliche Flags ausgeben
$dump = rnp_dump_packets($signatureData, 0);

if ($dump === false) {
    die('Fehler beim Analysieren des Paketstroms.');
}

echo $dump;
:signature packet: version: 4 type: 0 (binary document) hash algorithm: SHA256 ...

Paketstrom mit MPI- und Grip-Ausgabe analysieren

<?php
// Öffentlichen Schlüssel als Binärdaten laden
$pubkeyData = file_get_contents('publickey.gpg');

if ($pubkeyData === false) {
    die('Schlüsseldatei konnte nicht gelesen werden.');
}

// MPI-Werte und Key-Grips mit ausgeben
$flags = RNP_DUMP_MPI | RNP_DUMP_GRIP;
$dump = rnp_dump_packets($pubkeyData, $flags);

if ($dump === false) {
    die('Fehler beim Analysieren des Paketstroms.');
}

// Ausgabe in HTML-sicher einbetten
echo '<pre>' . htmlspecialchars($dump, ENT_QUOTES, 'UTF-8') . '</pre>';
:public key packet: version: 4 creation time: 2023-01-15 algorithm: RSA (Encrypt or Sign) grip: ABCDEF1234... mpis: n: 0x00BF4A... e: 0x010001 ...

// Wichtig · Fallstricke

Sicherheitshinweis: Die Ausgabe von rnp_dump_packets kann sensible kryptografische Informationen wie MPI-Werte oder Schlüsselbytes enthalten, wenn entsprechende Flags gesetzt sind. Geben Sie die Ausgabe niemals ungefiltert an Endnutzer weiter und speichern Sie sie nicht in öffentlich zugänglichen Logs.

Die Funktion ist ausschließlich für Diagnosezwecke gedacht und sollte nicht in produktivem Code zur Datenverarbeitung eingesetzt werden. Die RNP-Erweiterung muss installiert und aktiviert sein (pecl install rnp). Fehler liefern false; zur näheren Fehlerdiagnose können RNP-interne Fehlermeldungen über die entsprechenden RNP-Fehlerfunktionen abgerufen werden.