Kami ingin menggunakan tanda tangan gpg untuk memverifikasi beberapa aspek dari alat manajemen konfigurasi sistem kami. Selain itu, kami ingin menggunakan model "kepercayaan" di mana kunci sysadmin individual ditandatangani dengan kunci penandatanganan master, dan kemudian sistem kami mempercayai kunci master (dan menggunakan "web of trust" untuk memvalidasi tanda tangan oleh sysadmin kami).
Ini memberi kami banyak fleksibilitas, seperti kemampuan untuk dengan mudah mencabut kepercayaan pada kunci ketika seseorang pergi, tetapi kami mengalami masalah. Sementara gpg
perintah akan memberi tahu Anda jika kunci tidak dipercaya, tampaknya tidak mengembalikan kode keluar yang menunjukkan fakta ini. Sebagai contoh:
# gpg -v < foo.asc
Version: GnuPG v1.4.11 (GNU/Linux)
gpg: armor header:
gpg: original file name=''
this is a test
gpg: Signature made Fri 22 Jul 2011 11:34:02 AM EDT using RSA key ID ABCD00B0
gpg: using PGP trust model
gpg: Good signature from "Testing Key <someone@example.com>"
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: ABCD 1234 0527 9D0C 3C4A CAFE BABE DEAD BEEF 00B0
gpg: binary signature, digest algorithm SHA1
Bagian yang kami pedulikan adalah ini:
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Kode keluar yang dikembalikan oleh gpg dalam hal ini adalah 0, meskipun kegagalan kepercayaan:
# echo $?
0
Bagaimana caranya agar gpg gagal jika ada sesuatu yang ditandatangani dengan tanda tangan tidak tepercaya?
Saya telah melihat beberapa saran bahwa gpgv
perintah akan mengembalikan kode keluar yang tepat, tetapi sayangnya gpgv
tidak tahu cara mengambil kunci dari server kunci. Saya kira kita dapat mem-parsing keluaran status (menggunakan --status-fd) dari gpg
, tetapi apakah ada cara yang lebih baik?