Hallo Liste, ich habe in letzter Zeit etwas mit GPG gespielt. Dabei habe folgendes Problem gefunden: ich wollte ein shell-script signieren und habe dazu mit gpg --clearsig signiert. Problem: anschließend ist es kein shell-script mehr.
Gibt es einen Trick, damit ich die Signatur wieder los werde (ohne sed-voodoo) ? gpg muss es wissen, denn das Programm kan ja die Signatur auslesen. (Note:ich kenne detach-sign).
CU
Hallo Peter,
hast du denn die original Datei nicht mehr? Wenn ich ein shell script mit gpg --clearsign test.sh signiere, entsteht eine neue Datei test.sh.asc Aber die Datei test.sh bleibt unverändert.
Alternative könntest du mit einem Editor die Datei editieren. Am Anfang steht bei mir: -----BEGIN PGP SIGNED MESSAGE----- hier kommt der original text
Ich denke du kannst das einfach entfernen.
Viele Grüße Toby
Am 30.06.24 um 12:52 schrieb Peter Radisson:
Hallo Liste, ich habe in letzter Zeit etwas mit GPG gespielt. Dabei habe folgendes Problem gefunden: ich wollte ein shell-script signieren und habe dazu mit gpg --clearsig signiert. Problem: anschließend ist es kein shell-script mehr.
Gibt es einen Trick, damit ich die Signatur wieder los werde (ohne sed-voodoo) ? gpg muss es wissen, denn das Programm kan ja die Signatur auslesen. (Note:ich kenne detach-sign).
CU
Am 30.06.24 um 13:18 schrieb toby:
Hallo Peter,
hast du denn die original Datei nicht mehr? Wenn ich ein shell script mit gpg --clearsign test.sh signiere, entsteht eine neue Datei test.sh.asc Aber die Datei test.sh bleibt unverändert.
Hi, so war das nicht gemeint
ich möchte die Datei von a nach b verschieben und das soll automatisch geschehen. Ich kann mit sed die signatur wieder entfernen, aber ich vermute mal ich bin nicht der erste der diese Idee hat und es wundert mich, ob es nicht eine Option in gpg gibt die einfach das "Original" wieder herstellen kann. Die Signatur brauche ich danach ja nicht mehr.
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
#!/bin/sh hallo
Die Idee ist gpg das file testen zu lassen und das ursprüngliche script ohne die Verzierungen wieder zu bekommen, um dann damit weiter zu arbeiten. Bis her mache ich das mit 2 Files was die automatisch Auswertung aber nur kompliziert (was mach ich wenn nur eines von beiden ankommt etc.) Ich kann nun folgendes machen: gpg <file> || exit 1 sed <file> >xx exec xx
Ich habe mich nun gefragt: habe ich eine gpg option übersehen die das ganze eventuell gleich macht ?? ok, das exec wohl nicht aber den rest eventuell ?
Alternative könntest du mit einem Editor die Datei editieren. Am Anfang steht bei mir:
Ich denke du kannst das einfach entfernen.
Viele Grüße Toby
Am 30.06.24 um 12:52 schrieb Peter Radisson:
Hallo Liste, ich habe in letzter Zeit etwas mit GPG gespielt. Dabei habe folgendes Problem gefunden: ich wollte ein shell-script signieren und habe dazu mit gpg --clearsig signiert. Problem: anschließend ist es kein shell-script mehr.
Gibt es einen Trick, damit ich die Signatur wieder los werde (ohne sed-voodoo) ? gpg muss es wissen, denn das Programm kan ja die Signatur auslesen. (Note:ich kenne detach-sign).
CU
On Sun, Jun 30, 2024 at 05:12:54PM +0200, Peter Radisson wrote:
[...]
Hi, so war das nicht gemeint
ich möchte die Datei von a nach b verschieben und das soll automatisch geschehen. Ich kann mit sed die signatur wieder entfernen, aber ich vermute mal ich bin nicht der erste der diese Idee hat und es wundert mich, ob es nicht eine Option in gpg gibt die einfach das "Original" wieder herstellen kann. Die Signatur brauche ich danach ja nicht mehr.
Eigentlich kann das gpg. Beispiel:
tomas@mail:~$ echo -e 'das ist eine kleine Datei\nmit ganzen\ndrei Zeilen' > foo tomas@mail:~$ cat foo das ist eine kleine Datei mit ganzen drei Zeilen tomas@mail:~$ gpg --clearsign foo tomas@mail:~$ cat foo.asc -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
das ist eine kleine Datei mit ganzen drei Zeilen
tomas@mail:~$ rm foo tomas@mail:~$ gpg foo.asc gpg: WARNING: no command supplied. Trying to guess what you mean ... gpg: Signature made Sun 30 Jun 2024 05:32:52 PM CEST gpg: using DSA key 69E77962A25643EA25E1028205C82CF57AD1DA46 gpg: Good signature from "tomás zerolo (moep moep) tomas@tuxteam.de" [unknown] gpg: aka "tomás zerolo tomas.zerolo@swissfm.ch" [unknown] gpg: aka "tomás zerolo (moep) tomas@fabula.de" [unknown] gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: 69E7 7962 A256 43EA 25E1 0282 05C8 2CF5 7AD1 DA46 tomas@mail:~$ cat foo das ist eine kleine Datei mit ganzen drei Zeilen
jetzt nur noch herausfinden, welche Optionen gpg sagen, was es tun soll, statt ihn raten zu lassen. Ah, --verify isses :-)
lg
Hallo Peter,
On 6/30/24 12:52, Peter Radisson wrote:
ich habe in letzter Zeit etwas mit GPG gespielt. Dabei habe folgendes Problem gefunden: ich wollte ein shell-script signieren und habe dazu mit gpg --clearsig signiert. Problem: anschließend ist es kein shell-script mehr.
Gibt es einen Trick, damit ich die Signatur wieder los werde (ohne sed-voodoo) ? gpg muss es wissen, denn das Programm kan ja die Signatur auslesen. (Note:ich kenne detach-sign).
uwe@taurus:/tmp/shellsign$ printf '#!/bin/sh\n\necho hello world\n' > lala.sh uwe@taurus:/tmp/shellsign$ gpg --clear-sign lala.sh gpg: using "0D2511F322BFAB1C1580266BE2DCDD9132669BD6" as default secret key for signing uwe@taurus:/tmp/shellsign$ annotate-output gpg -d lala.sh.asc 10:40:48 I: Started gpg -d lala.sh.asc 10:40:48 O: #!/bin/sh 10:40:48 E: gpg: Signature made Mon 01 Jul 2024 10:40:03 AM CEST 10:40:48 E: gpg: using RSA key 3F81AC693A7A1E5989ADFED38F80FB587D12FE4E 10:40:48 O: 10:40:48 O: echo hello world 10:40:48 E: gpg: Good signature from "Uwe Kleine-Kön..." [ultimate] 10:40:48 E: gpg: aka "Uwe Kleine-Kön..." [ultimate] 10:40:48 E: gpg: aka "Uwe Kleine-Kön..." [ultimate] 10:40:48 E: gpg: aka "Uwe Kleine-Kön..." [ultimate] 10:40:48 E: gpg: aka "Uwe Kleine-Kön..." [ultimate] 10:40:48 E: gpg: aka "Uwe Kleine-Kön..." [ultimate] 10:40:48 E: gpg: aka "Uwe Kleine-Kön..." [ultimate] 10:40:48 I: Finished with exitcode 0
Ergo, gpg -d ist Dein Freund, wenn Du die Statusmeldungen, die auf stderr rauskommen, verwirfst.
Eine detached signature ist aber vielleicht einfacher?
Liebe Grüße Uwe
Am 01.07.24 um 10:43 schrieb Uwe Kleine-König:
Hallo Peter,
On 6/30/24 12:52, Peter Radisson wrote:
ich habe in letzter Zeit etwas mit GPG gespielt. Dabei habe folgendes Problem gefunden: ich wollte ein shell-script signieren und habe dazu mit gpg --clearsig signiert. Problem: anschließend ist es kein shell-script mehr.
Gibt es einen Trick, damit ich die Signatur wieder los werde (ohne sed-voodoo) ? gpg muss es wissen, denn das Programm kan ja die Signatur auslesen. (Note:ich kenne detach-sign).
uwe@taurus:/tmp/shellsign$ printf '#!/bin/sh\n\necho hello world\n' > lala.sh uwe@taurus:/tmp/shellsign$ gpg --clear-sign lala.sh gpg: using "0D2511F322BFAB1C1580266BE2DCDD9132669BD6" as default secret key for signing uwe@taurus:/tmp/shellsign$ annotate-output gpg -d lala.sh.asc 10:40:48 I: Started gpg -d lala.sh.asc 10:40:48 O: #!/bin/sh 10:40:48 E: gpg: Signature made Mon 01 Jul 2024 10:40:03 AM CEST 10:40:48 E: gpg: using RSA key 3F81AC693A7A1E5989ADFED38F80FB587D12FE4E 10:40:48 O: 10:40:48 O: echo hello world 10:40:48 E: gpg: Good signature from "Uwe Kleine-Kön..." [ultimate] 10:40:48 E: gpg: aka "Uwe Kleine-Kön..." [ultimate] 10:40:48 E: gpg: aka "Uwe Kleine-Kön..." [ultimate] 10:40:48 E: gpg: aka "Uwe Kleine-Kön..." [ultimate] 10:40:48 E: gpg: aka "Uwe Kleine-Kön..." [ultimate] 10:40:48 E: gpg: aka "Uwe Kleine-Kön..." [ultimate] 10:40:48 E: gpg: aka "Uwe Kleine-Kön..." [ultimate] 10:40:48 I: Finished with exitcode 0
Ergo, gpg -d ist Dein Freund, wenn Du die Statusmeldungen, die auf stderr rauskommen, verwirfst.
Eine detached signature ist aber vielleicht einfacher?
Liebe Grüße Uwe
Danke allen Beteiligten, es gibt wohl keine gpg-only Lösung.
Mein Entwurf einer Lösung sah bisher so aus: gpg --verify magic cat test.sh.asc | sed -e '/^#!/,/^-----BEGIN/!d;/^-----BEGIN/d'
eventuell hilft es jemanden weiter
CU
On Mon, Jul 01, 2024 at 08:10:45PM +0200, Peter Radisson wrote:
Hallo, Peter
[...]
Danke allen Beteiligten, es gibt wohl keine gpg-only Lösung.
Huch? Ich meinte, Uwe und ich haben gerade (im wesentlichen) dieselbe gpg-only Lösung angeboten? Was stimmt daran nicht?
Mein Entwurf einer Lösung sah bisher so aus: gpg --verify magic cat test.sh.asc | sed -e '/^#!/,/^-----BEGIN/!d;/^-----BEGIN/d'
eventuell hilft es jemanden weiter
Nochmal:
Signieren mit clearsign, das war Deine Anwendung):
gpg --clearsign foo
=> ergibt ein foo.asc
gpg -o foo --verify foo.asc
=> überprüft die Signatur und schreibt eine Datei foo ohne die Signatur.
War das nicht, was Du wolltest?
lg
Am 01.07.24 um 20:53 schrieb tomas@tuxteam.de:
On Mon, Jul 01, 2024 at 08:10:45PM +0200, Peter Radisson wrote:
Hallo, Peter
[...]
Danke allen Beteiligten, es gibt wohl keine gpg-only Lösung.
Huch? Ich meinte, Uwe und ich haben gerade (im wesentlichen) dieselbe gpg-only Lösung angeboten? Was stimmt daran nicht?
Mein Entwurf einer Lösung sah bisher so aus: gpg --verify magic cat test.sh.asc | sed -e '/^#!/,/^-----BEGIN/!d;/^-----BEGIN/d'
eventuell hilft es jemanden weiter
Nochmal:
Signieren mit clearsign, das war Deine Anwendung): gpg --clearsign foo => ergibt ein foo.asc gpg -o foo --verify foo.asc => überprüft die Signatur und schreibt eine Datei foo ohne die Signatur.
War das nicht, was Du wolltest?
doch hat aber nicht geklappt, keine Idee warum. Welche version von gpg ?
lg
On Thu, Jul 04, 2024 at 05:39:16PM +0200, Peter Radisson wrote:
Am 01.07.24 um 20:53 schrieb tomas@tuxteam.de:
[...]
=> überprüft die Signatur und schreibt eine Datei foo ohne die Signatur.
War das nicht, was Du wolltest?
doch hat aber nicht geklappt, keine Idee warum. Welche version von gpg ?
Getestet habe ich das mit:
tomas@mail:~$ gpg --version gpg (GnuPG) 2.2.27 libgcrypt 1.8.8
lg
Am 04.07.24 um 18:46 schrieb tomas@tuxteam.de:
On Thu, Jul 04, 2024 at 05:39:16PM +0200, Peter Radisson wrote:
Am 01.07.24 um 20:53 schrieb tomas@tuxteam.de:
[...]
=> überprüft die Signatur und schreibt eine Datei foo ohne die Signatur.
War das nicht, was Du wolltest?
doch hat aber nicht geklappt, keine Idee warum. Welche version von gpg ?
Getestet habe ich das mit:
tomas@mail:~$ gpg --version gpg (GnuPG) 2.2.27 libgcrypt 1.8.8
lg
ok, danke meine version ist 2.4 wenn ich mich recht erinnere. Zumindest bestätigt das meine vermutung, dass ich nicht der erste bei mit dem problem :)
On Thu, Jul 04, 2024 at 06:56:52PM +0200, Peter Radisson wrote:
Am 04.07.24 um 18:46 schrieb tomas@tuxteam.de:
[...]
ok, danke meine version ist 2.4 wenn ich mich recht erinnere. Zumindest bestätigt das meine vermutung, dass ich nicht der erste bei mit dem problem :)
...klappt auch mit 2.2.40 -- weiter komme ich gerade nicht :)
lg
Am 04.07.24 um 19:09 schrieb tomas@tuxteam.de:
On Thu, Jul 04, 2024 at 06:56:52PM +0200, Peter Radisson wrote:
Am 04.07.24 um 18:46 schrieb tomas@tuxteam.de:
[...]
ok, danke meine version ist 2.4 wenn ich mich recht erinnere. Zumindest bestätigt das meine vermutung, dass ich nicht der erste bei mit dem problem :)
...klappt auch mit 2.2.40 -- weiter komme ich gerade nicht :)
lg
Habs jetzt getestet (mit gpg (GnuPG) 2.2.27, doch nicht 2.4) cat test.sh.asc | gpg --verify --output file.sh - 2>/dev/null
geht wunderbar, meine Idee das ganze in der Pipe zu verwenden leider nicht: cat bad.sh.asc | gpg --verify --output - - 2>/dev/null | bash -s kill me
(set -eo pipefail half auch nicht)
Das wird daran liegen, dass pipes auf EOF reagieren und das gleichzeitig gpg --output schreibt bevor es merkt das die Checksumme nicht stimmt.
was aber funktioniert ist das hier: gpg --verify --output bad.sh bad.sh.asc 2>/dev/null || rm bad.sh
auch schon mal was wert ...
CU