Ahoj,
potrebuju periodicky stahovat skript a spoustet ho v bashi. Abych mel jistotu, ze ho nikdo neupravil, rad bych overoval gpg podpis.
Verejny GPG klic si na pc, kde se bude stahovat nahraju rucne a navic ho nechci importovat, ale overovat primo ze souboru:
martin@martin:~/test$ cat test.sh
#!/bin/bash
echo "ok"
martin@martin:~/test$ gpg -u 1D9883AE -a --sign --detach-sig --output test.sh.asc test.sh
martin@martin:~/test$
martin@martin:~/test$ gpg --no-default-keyring --keyring ./x.gpg --verify test.sh.asc test.sh 2>/dev/null && bash test.sh || echo "gpg_verify_error"
ok
martin@martin:~/test$
# PO ZMENE SOUBORU SE NESPUSTI:
martin@martin:~/test$ sed -i 's/ok/OK/g' test.sh
martin@martin:~/test$ cat test.sh
#!/bin/bash
echo "OK"
martin@martin:~/test$ gpg --no-default-keyring --keyring ./x.gpg --verify test.sh.asc test.sh 2>/dev/null && bash test.sh || echo "gpg_verify_error"
gpg_verify_error
martin@martin:~/test$
Tohle krasne funguje.
Jenze ja nechci soubory ukladat na disk (budou se stahovat casto), ale mit je v promennych. Zkousel jsem:
martin@martin:~/test$ python -m SimpleHTTPServer 8080 &
martin@martin:~/test$
martin@martin:~/test$ curl http://localhost:8080/test.sh
#!/bin/bash
echo "ok"
martin@martin:~/test$ curl http://localhost:8080/test.sh.asc
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQIcBAABAgAGBQJa9uxCAAoJEBD8Q3R7umFHW/EQALRXXnrJ+aTyVo2zmvA6ayMc
...
martin@martin:~/test$
martin@martin:~/test$ script=$(curl -s http://localhost:8080/test.sh); sign=$(curl -s http://localhost:8080/test.sh.asc);
martin@martin:~/test$ echo $script
#!/bin/bash echo "ok"
martin@martin:~/test$ echo -e $script
#!/bin/bash echo "ok"
martin@martin:~/test$ script=$(curl -s http://localhost:8080/test.sh); sign=$(curl -s http://localhost:8080/test.sh.asc); gpg --no-default-keyring --keyring ./x.gpg --verify $sign $script 2>/dev/null && echo $script | bash || echo "gpg_verify_error"
gpg_verify_error
martin@martin:~/test$
Cilem tedy je:
# script=$(curl -s http://localhost:8080/test.sh); sign=$(curl -s http://localhost:8080/test.sh.asc); gpg --no-default-keyring --keyring ./x.gpg --verify $sign $script 2>/dev/null && echo $script | bash || echo "gpg_verify_error"
Prvni problem - kdyz si pres echo vypisu promennou, zalomeni radku jsou pryc.
Druhy problem - umi gpg overovat z promennych, jako to mam na ukazce?
Zkousim to vic, nez hodinu, ale stale jsem na nic neprisel :-(