Signatur
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
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";
}
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";
// 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.