हम अपने सिस्टम कॉन्फ़िगरेशन प्रबंधन टूल के कुछ पहलुओं को सत्यापित करने के लिए gpg हस्ताक्षर का उपयोग करना चाहते हैं। इसके अतिरिक्त, हम एक "ट्रस्ट" मॉडल का उपयोग करना चाहते हैं जहां व्यक्तिगत sysadmin कुंजी एक मास्टर साइनिंग कुंजी के साथ हस्ताक्षरित होती है, और फिर हमारे सिस्टम उस मास्टर कुंजी पर भरोसा करते हैं (और हमारे sysadmins द्वारा हस्ताक्षर को मान्य करने के लिए "विश्वास की वेब" का उपयोग करते हैं)।
यह हमें बहुत लचीलापन प्रदान करता है, जैसे कि किसी के जाने पर चाबी पर आसानी से विश्वास को फिर से जगाने की क्षमता, लेकिन हम एक समस्या में चले गए हैं। जबकि gpg
कमांड आपको बताएगी कि क्या कोई कुंजी अविश्वासित है, तो यह इस तथ्य को इंगित करते हुए एक एक्जिट कोड वापस नहीं करता है। उदाहरण के लिए:
# 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
जिस हिस्से की हमें परवाह है वह यह है:
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
विश्वास की विफलता के बावजूद, इस मामले में gpg द्वारा दिया गया निकास कोड 0 है:
# echo $?
0
हम उस घटना में विफल होने के लिए gpg कैसे प्राप्त करते हैं कि किसी चीज़ पर हस्ताक्षर नहीं किए गए हैं?
मैंने कुछ सुझाव देखे हैं कि gpgv
कमांड एक उचित निकास कोड लौटाएगा, लेकिन दुर्भाग्य से gpgv
पता नहीं है कि चाबियों से चाबी कैसे निकाली जाए। मुझे लगता है कि हम स्थिति आउटपुट (-status-fd का उपयोग करके) को पार्स कर सकते हैं gpg
, लेकिन क्या कोई बेहतर तरीका है?