tl; dr: Einstellung der --textmode
Option.
Aus RFC 4880, 5.2.4. Rechensignaturen :
5.2.4. Unterschriften berechnen
Alle Signaturen werden gebildet, indem ein Hash über den Signaturdaten erzeugt wird und dann der resultierende Hash im Signaturalgorithmus verwendet wird.
Bei binären Dokumentsignaturen (Typ
0x00
) werden die Dokumentdaten direkt gehasht. Bei Textdokumentunterschriften (Typ0x01
) wird das Dokument kanonisiert, indem Zeilenenden in konvertiert werden<CR><LF>
, und die resultierenden Daten werden gehasht.
Mit anderen Worten, Sie müssen sicherstellen, dass GnuPG das Dokument beim Signieren als Textdokument behandelt. Dies muss mit der --textmode
Option aktiviert werden :
gpg --textmode --detach --sign file
Beim Ausführen gpg --list-packets signature-file
werden Sie die verschiedenen Signaturtypen aus RFC 4880 beobachten, wobei die zweite Zeile sigclass 0x01
mit --textmode
set anstelle von sigclass 0x00
ohne enthält.
From man gpg
(das gleiche gilt für GnuPG 2):
-t, --textmode
--no-textmode
Behandeln Sie Eingabedateien als Text und speichern Sie sie in der kanonischen OpenPGP-Textform mit den standardmäßigen Zeilenenden "CRLF". Dadurch werden auch die erforderlichen Flags gesetzt, um den Empfänger darüber zu informieren, dass die verschlüsselten oder signierten Daten Text sind und die Zeilenenden möglicherweise in das vom lokalen System verwendete konvertiert werden müssen. Diese Option ist nützlich, wenn zwischen zwei Plattformen mit unterschiedlichen Zeilenendkonventionen (UNIX-like Mac, Mac zu Windows usw.) kommuniziert wird.
--no-textmode
Deaktiviert diese Option und ist die Standardeinstellung.Wenn
-t
(jedoch nicht--textmode
) zusammen mit der Bewaffnung und der Signatur verwendet wird, werden hiermit zu löschende Nachrichten aktiviert. Dieser Befehl wird für die Befehlszeilen-Kompatibilität mit Befehlszeilenversionen von PGP benötigt. Normalerweise würden Sie--sign
oder verwenden--clearsign
, um den Typ der Signatur auszuwählen.