Start · Sprachen · PHP · Referenz · gnupg_init

gnupg_init

Funktion

Initialisiert eine GnuPG-Verbindung und gibt eine Ressource zurück, die für alle weiteren <code>gnupg_*</code>-Funktionen benötigt wird.

seit PHP 1.3.0 Kategorie: crypto

Signatur

gnupg_init(): resource|false

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

Typ
resource|false
Beschreibung
Gibt eine GnuPG-Ressource zurück, die als Handle für alle weiteren 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);
GnuPG-Verbindung erfolgreich geöffnet.

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.