Start · Sprachen · PHP · Referenz · gnupg_clearsignkeys

gnupg_clearsignkeys

Funktion

Entfernt alle Schlüssel, die zuvor zur Signierung über <code>gnupg_addsignkey()</code> hinterlegt wurden.

seit PHP 1.3.0 Kategorie: crypto

Signatur

gnupg_clearsignkeys(resource $identifier): bool

Beschreibung

gnupg_clearsignkeys() leert die interne Liste der Schlüssel, die für Signieroperationen vorgemerkt wurden. Dies ist nützlich, wenn man nach einer Signieroperation den GnuPG-Kontext zurücksetzen möchte, etwa um mit einem anderen Schlüssel zu signieren, ohne einen neuen Kontext erstellen zu müssen.

In typischen Anwendungsfällen fügt man zunächst mit gnupg_addsignkey() einen oder mehrere Schlüssel hinzu, führt die Signierung durch und ruft anschließend gnupg_clearsignkeys() auf, um den Zustand zu bereinigen. Dies sorgt dafür, dass keine unbeabsichtigten Schlüssel bei zukünftigen Operationen verwendet werden.

Die Funktion beeinflusst ausschließlich die hinterlegten Signaturschlüssel. Verschlüsselungs- oder Entschlüsselungsschlüssel bleiben davon unberührt und müssen separat über die entsprechenden Funktionen verwaltet werden.

Parameter

Name Typ Default Beschreibung
$identifier Pflicht resource Eine gültige GnuPG-Ressource, die zuvor mit gnupg_init() erstellt wurde.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die Signaturschlüsselliste erfolgreich geleert wurde, andernfalls false.

Beispiele

Schlüssel hinzufügen, signieren und anschließend zurücksetzen

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

// Signaturschlüssel hinzufügen (Fingerabdruck und optionale Passphrase)
$fingerprint = 'ABCDEF1234567890ABCDEF1234567890ABCDEF12';
gnupg_addsignkey($gnupg, $fingerprint, 'meine-passphrase');

// Nachricht signieren
$signatur = gnupg_sign($gnupg, 'Zu signierende Nachricht');
if ($signatur !== false) {
    echo "Signatur erstellt.\n";
} else {
    echo "Fehler beim Signieren.\n";
}

// Alle Signaturschlüssel entfernen, um den Kontext zurückzusetzen
$result = gnupg_clearsignkeys($gnupg);
if ($result) {
    echo "Signaturschlüssel erfolgreich entfernt.\n";
}
Signatur erstellt. Signaturschlüssel erfolgreich entfernt.

Kontextwechsel: verschiedene Schlüssel für unterschiedliche Signaturen

<?php
$gnupg = gnupg_init();

$schluessel1 = 'AAAA1111BBBB2222CCCC3333DDDD4444EEEE5555';
$schluessel2 = 'FFFF6666GGGG7777HHHH8888IIII9999JJJJ0000';

// Ersten Schlüssel verwenden
gnupg_addsignkey($gnupg, $schluessel1);
$sig1 = gnupg_sign($gnupg, 'Nachricht von Absender A');
echo "Signatur 1 erstellt: " . (($sig1 !== false) ? 'Ja' : 'Nein') . "\n";

// Schlüssel zurücksetzen und zweiten Schlüssel verwenden
gnupg_clearsignkeys($gnupg);
gnupg_addsignkey($gnupg, $schluessel2);
$sig2 = gnupg_sign($gnupg, 'Nachricht von Absender B');
echo "Signatur 2 erstellt: " . (($sig2 !== false) ? 'Ja' : 'Nein') . "\n";
Signatur 1 erstellt: Ja Signatur 2 erstellt: Ja

// Wichtig · Fallstricke

Stellen Sie sicher, dass nach dem Aufruf von gnupg_clearsignkeys() kein weiterer Aufruf von gnupg_sign() ohne vorheriges gnupg_addsignkey() erfolgt, da sonst kein Schlüssel für die Signierung verfügbar ist und die Signierung fehlschlägt.

Diese Funktion steht nur zur Verfügung, wenn die PECL-Erweiterung gnupg installiert und aktiviert ist. Prüfen Sie mit extension_loaded('gnupg'), ob die Erweiterung verfügbar ist.