Start · Sprachen · PHP · Referenz · gnupg_getprotocol

gnupg_getprotocol

Funktion

Gibt das aktuell aktive Protokoll der GnuPG-Ressource zurück (z. B. OpenPGP oder CMS/S/MIME).

seit PHP 1.3.0 Kategorie: crypto

Signatur

gnupg_getprotocol(resource $identifier): int

Beschreibung

gnupg_getprotocol() liefert das Protokoll zurück, das für alle kryptographischen Operationen der angegebenen GnuPG-Ressource aktuell verwendet wird. Das Protokoll wird beim Erstellen der Ressource über gnupg_init() bzw. durch gnupg_setprotocol() festgelegt.

Die Rückgabe ist eine ganzzahlige Konstante: GNUPG_PROTOCOL_OpenPGP (Wert 0) steht für das weit verbreitete OpenPGP-Protokoll (RFC 4880), GNUPG_PROTOCOL_CMS (Wert 1) für das CMS/S/MIME-Protokoll (RFC 3852). Die Funktion ist nützlich, um das derzeit aktive Protokoll einer GnuPG-Instanz zur Laufzeit zu prüfen – beispielsweise bevor signiert, verschlüsselt oder entschlüsselt wird.

Diese Funktion ist rein lesend und verändert den Zustand der GnuPG-Ressource nicht. Sie eignet sich besonders für Diagnosezwecke oder zur Absicherung, dass die richtige Protokoll-Konfiguration vor einer kritischen Operation vorliegt.

Parameter

Name Typ Default Beschreibung
$identifier Pflicht resource Eine gültige GnuPG-Ressource, wie sie von gnupg_init() zurückgegeben wird.

Rückgabewert

Typ
int
Beschreibung
Gibt eine Ganzzahl zurück, die das aktive Protokoll repräsentiert: GNUPG_PROTOCOL_OpenPGP (0) für OpenPGP oder GNUPG_PROTOCOL_CMS (1) für CMS/S/MIME.

Beispiele

Aktives Protokoll einer GnuPG-Ressource abfragen

<?php
$gpg = gnupg_init();

$protocol = gnupg_getprotocol($gpg);

if ($protocol === GNUPG_PROTOCOL_OpenPGP) {
    echo 'Aktives Protokoll: OpenPGP';
} elseif ($protocol === GNUPG_PROTOCOL_CMS) {
    echo 'Aktives Protokoll: CMS (S/MIME)';
} else {
    echo 'Unbekanntes Protokoll: ' . $protocol;
}
Aktives Protokoll: OpenPGP

Protokoll nach explizitem Setzen prüfen

<?php
$gpg = gnupg_init();

// Protokoll auf CMS/S/MIME umstellen
gnupg_setprotocol($gpg, GNUPG_PROTOCOL_CMS);

$protocol = gnupg_getprotocol($gpg);

echo 'Protokoll-ID: ' . $protocol . PHP_EOL;

if ($protocol === GNUPG_PROTOCOL_CMS) {
    echo 'CMS-Protokoll ist aktiv – bereit für S/MIME-Operationen.';
}
Protokoll-ID: 1 CMS-Protokoll ist aktiv – bereit für S/MIME-Operationen.

// Wichtig · Fallstricke

Die Konstanten GNUPG_PROTOCOL_OpenPGP und GNUPG_PROTOCOL_CMS sind nur verfügbar, wenn die PECL-Erweiterung gnupg korrekt installiert und geladen ist. Ohne diese Erweiterung führt die Verwendung der Funktion zu einem fatalen Fehler.

Das Standard-Protokoll nach gnupg_init() ist GNUPG_PROTOCOL_OpenPGP. Es sollte vor sensiblen Operationen geprüft werden, ob das gewünschte Protokoll tatsächlich aktiv ist, da ein falsches Protokoll zu Fehlschlägen oder unerwarteten Ergebnissen führen kann.