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