Start · Sprachen · PHP · Referenz · gnupg_cleardecryptkeys

gnupg_cleardecryptkeys

Funktion

Entfernt alle zuvor für die Entschlüsselung hinterlegten Schlüssel aus dem GnuPG-Ressourcen-Kontext.

Kategorie: crypto

Signatur

gnupg_cleardecryptkeys(resource $identifier): bool

Beschreibung

gnupg_cleardecryptkeys() löscht sämtliche Schlüssel, die mit gnupg_adddecryptkey() zum angegebenen GnuPG-Ressourcen-Kontext hinzugefügt wurden. Nach dem Aufruf enthält der Kontext keine Entschlüsselungsschlüssel mehr, sodass nachfolgende Entschlüsselungsoperationen fehlschlagen, bis wieder mindestens ein Schlüssel hinterlegt wird.

Diese Funktion ist nützlich, wenn ein GnuPG-Kontext für mehrere, voneinander unabhängige Entschlüsselungsvorgänge mit unterschiedlichen Schlüsseln wiederverwendet wird. Anstatt jeweils eine neue Ressource zu erzeugen, kann der bestehende Kontext zurückgesetzt und neu konfiguriert werden.

Typischerweise wird gnupg_cleardecryptkeys() in Kombination mit gnupg_adddecryptkey() genutzt: Zuerst werden die alten Schlüssel geleert, dann werden die neuen Schlüssel für den nächsten Vorgang gesetzt. So bleibt der Code übersichtlich und es werden unbeabsichtigte Entschlüsselungen mit falschen Schlüsseln vermieden.

Parameter

Name Typ Default Beschreibung
$identifier Pflicht resource Eine GnuPG-Ressource, die zuvor mit gnupg_init() erzeugt wurde und den Arbeitskontext für GnuPG-Operationen repräsentiert.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück. Bei einem ungültigen Ressourcen-Handle wird false zurückgegeben.

Beispiele

Entschlüsselungsschlüssel zurücksetzen und neu setzen

<?php
// GnuPG-Kontext initialisieren
$res = gnupg_init();

// Ersten Schlüssel hinzufügen
gnupg_adddecryptkey($res, 'ABCDEF1234567890ABCDEF1234567890ABCDEF12', 'passwort1');

// Entschlüsselung mit dem ersten Schlüssel durchführen
$verschluesselt1 = file_get_contents('/pfad/zu/nachricht1.gpg');
$klartext1 = gnupg_decrypt($res, $verschluesselt1);
echo "Entschlüsselt: " . $klartext1 . "\n";

// Alle Entschlüsselungsschlüssel entfernen
gnupg_cleardecryptkeys($res);

// Neuen Schlüssel für einen anderen Vorgang hinzufügen
gnupg_adddecryptkey($res, 'FEDCBA0987654321FEDCBA0987654321FEDCBA09', 'passwort2');

// Entschlüsselung mit dem zweiten Schlüssel
$verschluesselt2 = file_get_contents('/pfad/zu/nachricht2.gpg');
$klartext2 = gnupg_decrypt($res, $verschluesselt2);
echo "Entschlüsselt: " . $klartext2 . "\n";
?>

Sicherheitshalber Schlüssel nach Verwendung leeren

<?php
$res = gnupg_init();

$fingerprint = 'ABCDEF1234567890ABCDEF1234567890ABCDEF12';
gnupg_adddecryptkey($res, $fingerprint, 'geheimesPasswort');

$verschluesselteDaten = file_get_contents('/sicherer/pfad/datei.gpg');
$klartext = gnupg_decrypt($res, $verschluesselteDaten);

if ($klartext !== false) {
    echo "Erfolgreich entschlüsselt.\n";
} else {
    echo "Entschlüsselung fehlgeschlagen: " . gnupg_geterror($res) . "\n";
}

// Schlüssel nach Verwendung entfernen, um versehentliche Wiederverwendung zu verhindern
gnupg_cleardecryptkeys($res);
?>
Erfolgreich entschlüsselt.

// Wichtig · Fallstricke

Sicherheitshinweis: Es empfiehlt sich, gnupg_cleardecryptkeys() nach jedem Entschlüsselungsvorgang aufzurufen, um zu verhindern, dass Schlüssel versehentlich für nachfolgende, nicht autorisierte Operationen verwendet werden – insbesondere wenn der GnuPG-Kontext langlebig ist oder in einer Umgebung mit mehreren Benutzern eingesetzt wird.

Die Funktion gehört zur prozeduralen GnuPG-Erweiterung. Wer die objektorientierte Schnittstelle nutzt (gnupg-Klasse), sollte die Methode gnupg::cleardecryptkeys() verwenden.