Signatur
Beschreibung
gnupg_init() öffnet eine neue Verbindung zur GnuPG-Bibliothek (GPGME) und gibt eine Ressource zurück, die als Handle für alle nachfolgenden gnupg_*-Funktionen dient. Ohne dieses Handle können keine kryptografischen Operationen (Verschlüsseln, Entschlüsseln, Signieren, Verifizieren) durchgeführt werden.
Die Funktion gehört zur prozeduralen API der gnupg-PHP-Erweiterung. Es gibt auch eine objektorientierte Alternative (new gnupg()), die intern dasselbe Handle erzeugt, aber als Objekt-Methoden-Aufrufe funktioniert.
Das zurückgegebene Handle bezieht sich auf den Standard-GnuPG-Schlüsselbund des Benutzers, unter dem der PHP-Prozess läuft (üblicherweise ~/.gnupg/). Es ist wichtig, sicherzustellen, dass der Webserver-Benutzer Zugriff auf einen gültigen GnuPG-Schlüsselbund hat.
Schlägt die Initialisierung fehl, gibt die Funktion false zurück. Mit gnupg_geterror() kann der Fehlertext abgefragt werden, sofern ein Handle vorhanden ist. Eine Fehlerbehandlung ist daher unbedingt empfohlen.
Rückgabewert
gnupg_*-Funktionen verwendet wird. Im Fehlerfall wird false zurückgegeben.Beispiele
Einfache Initialisierung mit Fehlerprüfung
<?php
$gpg = gnupg_init();
if ($gpg === false) {
die('GnuPG-Verbindung konnte nicht initialisiert werden.');
}
echo 'GnuPG-Verbindung erfolgreich geöffnet.' . PHP_EOL;
// Schlüssel importieren oder verschlüsseln etc.
// gnupg_import($gpg, $keyData);
Text mit GnuPG verschlüsseln nach Initialisierung
<?php
$gpg = gnupg_init();
if ($gpg === false) {
die('GnuPG konnte nicht initialisiert werden.');
}
// Fingerabdruck des gewünschten Empfänger-Schlüssels
$fingerprint = 'ABCDEF1234567890ABCDEF1234567890ABCDEF12';
// Verschlüsselungsschlüssel hinzufügen
gnupg_addencryptkey($gpg, $fingerprint);
$plaintext = 'Geheime Nachricht';
$encrypted = gnupg_encrypt($gpg, $plaintext);
if ($encrypted === false) {
echo 'Fehler: ' . gnupg_geterror($gpg) . PHP_EOL;
} else {
echo 'Verschlüsselte Nachricht:' . PHP_EOL;
echo $encrypted . PHP_EOL;
}
// Wichtig · Fallstricke
Schlüsselbund-Pfad: Der GnuPG-Schlüsselbund wird standardmäßig im Home-Verzeichnis des PHP-Prozessbenutzers gesucht (~/.gnupg/). Bei Webservern (z. B. www-data) muss dieser Pfad existieren und korrekte Rechte besitzen. Andernfalls schlägt gnupg_init() fehl oder der Zugriff auf Schlüssel ist nicht möglich.
Sicherheitshinweis: Privater Schlüssel und Passphrase sollten niemals im Quellcode hinterlegt werden. Nutzen Sie sichere Umgebungsvariablen oder verschlüsselte Konfigurationsdateien.
OOP-Alternative: Statt der prozeduralen Funktion kann auch $gpg = new gnupg(); verwendet werden, was in modernen Codebasen bevorzugt wird. Beide Ansätze sind funktional gleichwertig.
Erweiterung: Die gnupg-PHP-Erweiterung muss installiert und in der php.ini aktiviert sein (extension=gnupg). GnuPG selbst sowie GPGME müssen auf dem System vorhanden sein.