Wollte einen Git Tag signieren auf einem Raspberry Pi W Zero. Nach der Key Erzeugung (gpg –gen-key) schlug das signieren des git tags mit -s:
git tag -s v1.0.1 -m 'Erster signierter Tag'
mit folgender Fehlermeldung fehl:
gpg: signing failed: Unpassender IOCTL (I/O-Control) für das Gerät
gpg: signing failed ioctl
Ein erster Test mit:
echo "test" | gpg --clearsign
schlug auch fehlt. Eine Kontrolle der Config (.gitconfig) mit:
git config -l
hat auch alle relevanten Einträge angezeigt:
user.name=Thomas Wenzlaff
[email protected]
user.signingkey=FEC823F044525328B2CA20352AB54AA20ECBF41B
commit.gpgsign=true
tag.gpgsign=true
Nach einigem suchen im Internet und validieren hat das setzen der GPG_TTY Variable bei mir geholfen:
GPG_TTY=$(tty) export GPG_TTY
Damit das auch nach einem reboot weiterhin läuft, diese beiden Zeilen in der .bashrc Datei hinzufügen. Sonst kommt diese Meldung oder ähnlich:
Dann den ersten Tag wie oben beschrieben angelegt und angezeigt mit:
git show v1.0.1
man kann gut die PGP Signatur am tag erkennen:
pi@pi-zero:~/Git-Pi-Anleitung $ git show v1.0.1 tag v1.0.1 Tagger: Thomas Wenzlaff <[email protected]> Date: Tue Sep 11 18:56:09 2018 +0000 Erster signierter Tag -----BEGIN PGP SIGNATURE----- iQEyBAABCAAdFiEE/sgj8ERSUyiyyiA1KrVKog7L9BsFAluYD8kACgkQKrVKog7L 9Btf8gf1HfbN1OfxR1NZLWK1Nm3zft7OwMvQKgyhVYwJVvBECLEFJo/xJ9KnQnTF 4KMXT2csYNJNf0lAZMiWqD+VB98gBDygUTzwmnWdAO05YK1dH9Je1qKpnkuheYzo npkNQPS7DKCzY0xpOR8jL8SFIOxeTJeQJ5JtdnYFXyaUghvrv4m7SQLE9r09qPeY uRJXMHq3L2UkZ2gFSd/D2FMPGtgcLob5gTp5vTeOSWVPR8WPsbHcM50qJl+Z4n7s jQAesN88JOkZJeS3hCmAnv5AMqFT6MTRBKAk2ZLI4xAfMmvPE3t8lU8/cmsgXqbN xEJd/MmExIIV+e+f67v6hl93RDqc =Yn1H -----END PGP SIGNATURE-----
Dann können wir ja auch gleich mal die Signatur des Git Tags validieren mit -v
git tag -v v1.0.1
und siehe da, alles ok:
object 191c2adfb0f891c88e8489a0503ca4a1b9cce085 type commit tag v1.0.1 tagger Thomas Wenzlaff <[email protected]> 1536692169 +0000 Erster signierter Tag gpg: Signature made Di 11 Sep 2018 18:56:09 UTC gpg: using RSA key FEC823F044525328B2CA20352AB54AA20ECBF41B gpg: Good signature from "Thomas Wenzlaff <[email protected]>" [ultimate]
Ok, dann wollen wir auch noch gleich das signieren von commits testen. Ein erster commit mit Parameter -S
git commit -a -S -m 'Erster signierter Commit'
Es kommt dann der Dialog wo das Passwort für den Key eingegeben werden muss:
Ok, der commit war erfolgreich. Das wollen wir gleich mal testen mit
git show
Oder auch um die letzte Signatur anzuschauen:
git log --show-signature -1
Auch eine Tabelle mit allen commits kann man sich schön formatiert ausgeben lassen mit log, wobei die signierten Einträge mit G in der zweiten Spalte gekennzeichnet sind:
git log --pretty="format:%h %G? %aN %s"
Dann auch noch die Signatur für den commit anschauen
git log --show-signature -1