बहुत सारे लोग वास्तव में जीपीजीएमई को नहीं समझते हैं और यह संभवतः मदद नहीं करता है कि जो दस्तावेज़ मौजूद है वह मूल रूप से उस समय लिखी गई कोड टिप्पणी है। यह, हालांकि, पूरे GNU प्राइवेसी गार्ड सूट के लिए पूरी तरह से या पूरी तरह से प्रोग्रामेटिक एक्सेस की अनुमति देता है और माना जाता है कि यह libassuan, gpg-agent और विभिन्न अन्य घटकों जैसी चीजों तक पहुंच को सक्षम करता है। यही कारण है कि डिफ़ॉल्ट रूप से इसमें S / MIME कार्यान्वयन भी शामिल है, जो कि कुछ कंपनियों के बाहर लगभग कोई नहीं है जो 90 के दशक के उत्तरार्ध में जोर से उत्सर्जित हुए।
वर्तमान में GPGME में 500 अलग-अलग फ़ंक्शन या अधिक जैसे कुछ शामिल हैं और निश्चित रूप से कमांड लाइन पर GPG के साथ आपके द्वारा किए जाने वाले बहुत कुछ को कवर करता है। हालांकि, इसमें पिछले डिज़ाइन विकल्पों के कुछ अवशेष भी शामिल हैं जो बाद में सही दिशा नहीं होने के लिए निर्धारित किए गए हैं। उदाहरण के लिए, यह एक एपीआई है जिसमें जीटीके 2 के बड़े हिस्से हैं। जाहिर है, यह जाने की जरूरत है (और जब समय होगा)। एक और समस्या यह है कि इन दिनों, शायद गोद लेने के लिए सबसे बड़ी बाधा यह है कि जब कोई कहता है कि "एपीआई" अधिकांश कोडर्स तुरंत सी हेडर फ़ाइलों के बारे में नहीं सोचते हैं ताकि बात को एक्सेस करने के लिए अपने कोड के साथ संकलन कर सकें; आइए इसका सामना करते हैं, इन दिनों ज्यादातर लोग कुछ ऐसा सोच रहे हैं जो RESTful है या कम से कम चलो उन्हें JSON प्रारूप में डेटा के साथ इंटरैक्ट करते हैं। GPGME इससे उतना ही दूर है जितना कि वह ' प्राप्त करना संभव है। ध्यान दें, जबकि इसे JSON के साथ अच्छी तरह से खेलना संभव होना चाहिए, यह कभी भी Restful नहीं हो सकता क्योंकि संपादन कुंजी नहीं हो सकती। प्लस वेब के माध्यम से कुंजी का प्रबंधन सिर्फ परेशानी के लिए पूछ रहा है।
चीज़ के बहुत सारे अनजाने फीचर्स और पहलू भी हैं जैसे कि सॉफ्टवेयर के साथ काम करने वाले लोग भी इसकी स्थापना के बाद भी कुछ चीजों से आश्चर्यचकित हो सकते हैं। जैसे, कहते हैं, किर्मिंग डेटा के लिए XML प्रारूप जिसमें औपचारिक स्कीमा को छोड़कर सब कुछ था (जब तक कि कुछ महीने पहले उत्पन्न नहीं हुआ था)।
दूसरी ओर, सभी अच्छी चीजें जो म्यूट करता है, उसके लिए यह कुछ चौंकाने वाली चीजें भी करता है। उदाहरण के लिए, GPGME का उपयोग किया जाता है या नहीं, इसके लिए Mutt to cache passphrases का कोई कारण नहीं होना चाहिए; या तो परिदृश्य में इसे GPG (gpg- एजेंट के साथ या बिना) को सौंपना चाहिए। इसी तरह, यह ~/.gnupg/gpg.conf
फ़ाइल (और उस निर्देशिका में अन्य) में कॉन्फ़िगरेशन मापदंडों का सम्मान करना चाहिए । ज़रूर, अलग-अलग खातों के लिए वैकल्पिक कुंजी आईडी सेट करने के तरीके से कमांड को बुलाया जाता है या यहां तक कि वैकल्पिक कॉन्फ़िगरेशन फ़ाइलों या निर्देशिकाओं को निर्दिष्ट करने में सक्षम होने के लिए (उदाहरण के लिए)gpg --homedir ~/.gnupg-work/gpg.conf
)। यद्यपि, चीजें खड़ी होती हैं, लेकिन मुटट समय को उन समस्याओं को हल करने की कोशिश में बर्बाद कर देता है जो पहले से मौजूद प्रोग्राम द्वारा हल की जाती हैं, जैसे पासफ़्रेज़ या कुंजी प्रबंधन, लेकिन जीपीजी की सामान्य सुविधाओं तक पहुंच की अनुमति नहीं देता है, जिनमें से कई ईमेल के लिए शानदार हैं। या तो कई प्राप्तकर्ताओं के लिए समूह लाइनों का उपयोग करना या विशेष प्राप्तकर्ताओं के लिए कुंजी चयन को ओवरराइड करना (क्योंकि हमेशा ऐसा होता है कि एक व्यक्ति जो अपनी गुप्त कुंजी खो देता है या पासफ़्रेज़ को भूल जाता है और अब आपको यूआईडी के समान पते के साथ 15 सार्वजनिक कुंजी मिल गई हैं और डिफ़ॉल्ट व्यवहार पहले मैच को चुनना है जो बहुत सही नहीं है)। Emacs वहां थोड़ा बेहतर है, लेकिन यहां तक कि यह उस gpg.conf
फ़ाइल को लेने में विफल रहता है जो आमतौर पर उन चीजों के लिए स्वचालित रूप से उत्तर देती है जो इसके लिए संकेत देना चाहते हैं।
अब, कुछ अधिक उपयोगी और स्पर्धात्मक रूप से संबंधित कुछ के लिए, GPGME एक और निफ्टी के साथ एक छोटी सी अनिर्दिष्ट चीज के साथ आता है जिसे gpgme-tool कहा जाता है। यह GPGME के लिए एक अल्पविकसित इंटरफ़ेस है जो UNIX सॉकेट पर चलेगा (और यदि आप चाहते हैं तो नेटवर्क पोर्ट पर बैठने के लिए ncat या कुछ का उपयोग कर सकते हैं)। हालांकि यह अनिर्दिष्ट है लेकिन यदि आप इसे चलाते हैं और थोड़ी देर के लिए बातचीत करते हैं और मदद कमांड से शुरू करते हैं तो यह काफी आत्म व्याख्यात्मक है। वैकल्पिक रूप से यह बहुत अच्छी तरह से काम करता है:
echo help | gpgme-tool > gpgme-tool-cheatsheet.txt
यह खुशी से सभी मूल बातें (एन्क्रिप्ट, डिक्रिप्ट, साइन, वेरिफाई, पासफ़्रेज़ बदल देगा, चाबियाँ, सूची कुंजी, सूची गुप्त कुंजी, विशिष्ट कुंजी की खोज या उन्हें चुनने, आदि) कर देगा। यदि आप "छुपा" XML प्रारूप यह देखना चाहते हैं:
echo "KEYLIST --secret-only" | gpgme-tool > secret-key-list.xml
वह गुप्त कुंजियों को निर्यात नहीं करेगा, बस उन्हें सूचीबद्ध करें और उनके बारे में डेटा। इसके अलावा, यह कुछ आउटपुट प्रारूप cruft के साथ निर्यात करेगा जिसे कुछ भी करने से पहले फ़िल्टर करने की आवश्यकता होगी वास्तव में इसे XML के रूप में पहचाना जाएगा (शीर्ष पंक्ति को हटा दें, प्रत्येक बाद की पंक्ति के पहले दो अक्षर और प्रत्येक पंक्ति के अंत से% 0A। )। वैसे भी, gpgme-tool बेहतर विचार दे सकता है कि GPGME वास्तव में क्या कर सकता है। उदाहरण के लिए, GPGME के लिए PyME पायथन बाइंडिंग, स्वचालित रूप से GPGME फ़ंक्शंस से मिलान करने का प्रयास करता है (और आमतौर पर यह परेशानी के बिना प्राप्त होता है); pyme.core.pygpgme में सुविधाओं की वर्तमान सूची 534 पर आती है। कमांड लाइन और GPG 1.4.20 की तुलना में 322 विकल्प हैं, जबकि 2.1.11 में 347 है (मैंने 2.0 को छोड़ दिया है इसलिए मैं जांच नहीं कर सकता, लेकिन यह चाहिए उन दोनों के बीच कहीं हो)।
मुख्य आदेशों के मिलान की बात करते हुए पिछले उत्तर के लिए, कि पूरी तरह से विन्यास विकल्पों द्वारा संचालित किया जाना चाहिए और क्या Mutt "GPG के लिए पूर्ण पहुंच" की अनुमति देता है या नहीं। मैं वर्तमान में GPGME के साथ Mutt का उपयोग कर रहा हूं और बताए गए दो फ़ंक्शन (मेल-की और एक्स्ट्रेक्ट कीज़) ठीक हैं, हालांकि Mutt को PGP / इन-लाइन कंटेंट को पहचानने में परेशानी होती है, अगर उसने टेक्स्ट / प्लेन कंटेंट टाइप को असाइन या पिक कर लिया है कहीं। जब ऐसा होता है, तो हाँ, आमतौर पर Emacs या किसी अन्य चीज़ पर स्विच करना आवश्यक होता है। फिर भी, यह उस तरह से एक मुद्दा प्रतीत होता है जिस तरह से मट चेक करता है कि क्या सामग्री वास्तव में सिर्फ पाठ है या कैसे यह अन्यथा OpenPGP प्रारूप सामग्री के लिए जाँच करता है। हालांकि मुझे यह कहने से बेहतर कुछ नहीं होगा कि हम केवल पीजीपी / माइम का उपयोग करें (और हमें होना चाहिए)
मूल रूप से ऐसा लगता है कि Mutt पूरी तरह से संदेश पर निर्भर करता है कि यह एक या अधिक भागों के साथ मल्टी-पार्टटाइम MIME हो, जिसके साथ कुछ भी करने के लिए कुंजी, हस्ताक्षर और / या एन्क्रिप्टेड सामग्री हो। यह किसी भी सादे ईमेल के माध्यम से खोज नहीं करेगा जो सामग्री से मेल खाता हो, लेकिन यह न तो GPG और न ही GPGME की गलती है। इसका समाधान या तो उन विशेषताओं को जोड़ने या उस क्षमता के साथ किसी संदेश को खोलने का है (जैसे ईपीए / ईज़ीपीजी के साथ Emacs, जो इन दिनों डिफ़ॉल्ट रूप से सक्षम होना चाहिए) या संदेश को एक सीधे कमांड (या gpgme-tool) पर पाइप करें यदि आप चाहें, लेकिन जब पाइपिंग करना आम तौर पर एक नियमित कमांड पर सीधे जाना आसान होता है)।
GPGME के लिए, सभी के पास यह उपलब्ध नहीं है क्योंकि इसे हमेशा उसी स्रोत संस्करण से संकलित करने की आवश्यकता होती है जैसा कि सिस्टम पर स्थापित है। अगर आप GPG को अपग्रेड करते हैं और मैच के लिए GPGME को दोबारा नहीं जोड़ते हैं, तो समस्याएँ होंगी। दूसरी ओर, स्रोत से GPG को स्थापित करना आमतौर पर जहाँ संभव होता है, वहां सिफारिश की जाती है, इसलिए यदि GPGME मार्ग पर जा रहे हैं तो यह अच्छा है कि जीपीजी को अपडेट करते समय केवल उस रीकैपाइल को चलाया जाए और यह सब ठीक होना चाहिए।
जबकि वे लोग जो अपने चुने हुए वितरण द्वारा प्रदान किए गए पैकेजों पर पूरी तरह से निर्भर हैं, उन पैकेजों के रख-रखाव के लिए भी जो भी हो, को बनाए रखने के लिए परेशान किया जा सकता है और वे हमेशा GPG और GPGME की आवश्यकताओं को एक साथ काम कर सकते हैं या नहीं समझ सकते हैं। उदाहरण के लिए, GPGME के लिए MacPorts पैकेज GPG 2.0.x पर निर्भर करने के लिए सेट है, जो बदले में GPG 2.1.x के साथ विरोध करने के लिए सेट है, इसलिए 2.1 स्थापित करने वाले अधिकांश लोग GPGME को स्थापित नहीं कर सकते, भले ही वे स्पष्ट रूप से एक साथ काम न करें। उस परिदृश्य में काम करने के लिए जीपीजीएमई प्राप्त करना उन चीजों को करने की आवश्यकता है जो मैकपोर्ट्स के खिलाफ पोर्ट प्रबंधन प्रणाली के बाहर चीजों को संकलित करने की सिफारिश करता है (लेकिन /opt/local
)। कुछ लिनक्स वितरण में समान मुद्दे हो सकते हैं।
इसलिए यदि आप केवल PGP / MIME का उपयोग करने जा रहे हैं तो GPGME एकीकरण का उपयोग करने में कोई समस्या नहीं होनी चाहिए और इसका मतलब है कि आपको कभी भी अपनी .muttrc
फ़ाइल में विशिष्ट कमांड को कॉन्फ़िगर नहीं करना पड़ेगा । यदि आप पीजीपी / इन-लाइन से निपटते हैं, तो आप समस्याओं का सामना करने जा रहे हैं, लेकिन उन्हें मुट के साथ किसी भी तरह से टाला नहीं जा सकता है, इसलिए यदि आप चाहे तो जीपीजीएमई का उपयोग करने की सलाह देंगे।
अस्वीकरण: मैं सभी गैर-सी देवों के लिए एपीआई के लिए एपीआई बनाने के लिए देव कार्य के साथ शामिल हूं, जो कि पोस्ट-ओवरहाल का उपयोग करने में सक्षम हो। मैंने Python 2 से Python 3 तक PyME 0.9 को भी चित्रित किया (यह वर्तमान में GPGME की एक शाखा में है और केवल Python 2 संस्करण PyPI और पाइप के माध्यम से उपलब्ध है)।
UPDATE: PyME का पायथन 3 तक का पोर्ट अब GPGME की मास्टर ब्रांच में है और PyPI पर pyme3 के रूप में उपलब्ध है।