Start · Sprachen · PHP · Referenz · gnupg_setarmor

gnupg_setarmor

Funktion

Schaltet die ASCII-Armor-Ausgabe (gepanzerte Ausgabe) für GnuPG-Operationen ein oder aus.

seit PHP 1.0.0 Kategorie: crypto

Signatur

gnupg_setarmor(resource $identifier, int $armor): bool

Beschreibung

Die Funktion gnupg_setarmor() steuert, ob die Ausgabe von GnuPG-Operationen (wie Verschlüsselung oder Signierung) im ASCII-Armor-Format (auch als «gepanzerte Ausgabe» bezeichnet) erfolgt oder als binäre Rohdaten ausgegeben wird.

Das ASCII-Armor-Format kodiert die binären GnuPG-Daten als druckbare ASCII-Zeichen und umschließt sie mit charakteristischen Kopf- und Fußzeilen wie -----BEGIN PGP MESSAGE-----. Dies erleichtert die Übertragung per E-Mail oder in Textdateien erheblich, da keine binären Zeichen auftreten, die in Textkontexten problematisch sein könnten.

Standardmäßig ist ASCII-Armor aktiviert. Für Anwendungen, die direkt mit binären Daten arbeiten oder eine maximale Effizienz benötigen (z. B. Datenbankfelder oder Binärdateien), kann es sinnvoll sein, die gepanzerte Ausgabe zu deaktivieren ($armor = 0).

Die Funktion muss vor dem eigentlichen Verschlüsselungs- oder Signierungsvorgang aufgerufen werden, da sie den internen Zustand des GnuPG-Ressource-Handles setzt.

Parameter

Name Typ Default Beschreibung
$identifier Pflicht resource Eine gültige GnuPG-Ressource, die zuvor mit gnupg_init() erzeugt wurde.
$armor Pflicht int Gibt an, ob ASCII-Armor aktiviert (1) oder deaktiviert (0) werden soll. Ein Wert von 1 erzeugt eine druckbare ASCII-Ausgabe; 0 gibt binäre Rohdaten zurück.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die Einstellung erfolgreich gesetzt wurde, oder false im Fehlerfall.

Beispiele

Nachricht mit aktiviertem ASCII-Armor verschlüsseln

<?php
// GnuPG-Ressource initialisieren
$gpg = gnupg_init();

// ASCII-Armor aktivieren (Standard)
gnupg_setarmor($gpg, 1);

// Empfänger-Fingerabdruck hinzufügen
$fingerprint = 'ABCDEF1234567890ABCDEF1234567890ABCDEF12';
gnupg_addencryptkey($gpg, $fingerprint);

// Nachricht verschlüsseln
$encrypted = gnupg_encrypt($gpg, 'Geheime Nachricht');

if ($encrypted !== false) {
    echo $encrypted;
    // Ausgabe beginnt mit: -----BEGIN PGP MESSAGE-----
} else {
    echo 'Fehler beim Verschlüsseln: ' . gnupg_geterror($gpg);
}
-----BEGIN PGP MESSAGE----- hQEMA...== =XXXX -----END PGP MESSAGE-----

Binäre Ausgabe ohne ASCII-Armor

<?php
// GnuPG-Ressource initialisieren
$gpg = gnupg_init();

// ASCII-Armor deaktivieren → binäre Ausgabe
gnupg_setarmor($gpg, 0);

// Empfänger-Fingerabdruck hinzufügen
$fingerprint = 'ABCDEF1234567890ABCDEF1234567890ABCDEF12';
gnupg_addencryptkey($gpg, $fingerprint);

// Nachricht verschlüsseln (Ergebnis sind binäre Rohdaten)
$encrypted = gnupg_encrypt($gpg, 'Geheime Nachricht');

if ($encrypted !== false) {
    // Binärdaten z. B. in eine Datei schreiben
    file_put_contents('/tmp/nachricht.gpg', $encrypted);
    echo 'Binär verschlüsselte Daten gespeichert (' . strlen($encrypted) . ' Bytes).';
} else {
    echo 'Fehler beim Verschlüsseln: ' . gnupg_geterror($gpg);
}
Binär verschlüsselte Daten gespeichert (512 Bytes).

// Wichtig · Fallstricke

Kompatibilität: gnupg_setarmor() gehört zur prozeduralen Schnittstelle der GnuPG-Erweiterung. Die objektorientierte Entsprechung ist $gpg->setarmor(int $armor).

Reihenfolge beachten: Die Funktion muss vor dem Verschlüsselungs- oder Signierungsaufruf gesetzt werden, da der Armor-Status zum Zeitpunkt der Operation ausgewertet wird. Ein nachträgliches Setzen hat keinen Einfluss auf bereits durchgeführte Vorgänge.

Standardwert: Nach gnupg_init() ist ASCII-Armor standardmäßig aktiviert. Wenn binäre Daten benötigt werden, muss gnupg_setarmor($gpg, 0) explizit aufgerufen werden.