ผู้คนจำนวนมากไม่เข้าใจ GPGME จริง ๆ และอาจไม่ช่วยว่าเอกสารที่มีอยู่นั้นเป็นคำอธิบายรหัสที่เขียนในเวลานั้น อย่างไรก็ตามจะอนุญาตการเข้าถึงโดยสมบูรณ์หรือใกล้ทางโปรแกรมโดยสมบูรณ์ไปยังชุดความเป็นส่วนตัวของ GNU ทั้งหมดและควรเปิดใช้งานการเข้าถึงสิ่งต่าง ๆ เช่น libassuan, gpg-agent และส่วนประกอบอื่น ๆ อีกมากมาย ซึ่งเป็นสาเหตุโดยค่าเริ่มต้นมันยังรวมถึงการใช้งาน S / MIME ซึ่งเกือบจะไม่มีใครนอก บริษัท ไม่กี่แห่งที่ร้องเสียงดังในช่วงปลายยุค 90 ที่ใช้งาน
ปัจจุบัน GPGME มีฟังก์ชั่นแยกต่างหาก 500 รายการขึ้นไปและครอบคลุมทุกอย่างที่คุณทำกับ GPG ในบรรทัดคำสั่ง อย่างไรก็ตามมันก็มีบางส่วนของตัวเลือกการออกแบบก่อนหน้านี้ซึ่งได้รับการพิจารณาในภายหลังว่าไม่ใช่ทิศทางที่ถูกต้อง ตัวอย่างเช่นนี่เป็น API ที่มีชิ้นส่วนขนาดใหญ่ของ GTK 2 อยู่ในนั้น เห็นได้ชัดว่าสิ่งนี้ต้องดำเนินการ (และเมื่อเวลาอนุญาต) ปัญหาอีกประการหนึ่งที่มีอยู่ในปัจจุบันอาจเป็นอุปสรรคที่ใหญ่ที่สุดในการนำไปใช้คือเมื่อมีคนพูดว่า "API" ตัวแปลงสัญญาณส่วนใหญ่ไม่คิดทันทีว่าไฟล์ส่วนหัว C เพื่อคอมไพล์ด้วยรหัสของตัวเองเพื่อเข้าถึงสิ่งต่างๆ มาเจอกันวันนี้คนส่วนใหญ่กำลังคิดถึงสิ่งที่สงบหรืออย่างน้อยก็ให้พวกเขาโต้ตอบกับข้อมูลในรูปแบบ JSON GPGME นั้นห่างจากสิ่งนั้นมาก ' เป็นไปได้ที่จะได้รับ โปรดทราบว่าในขณะที่มันควรจะเป็นไปได้ที่จะทำให้มันเล่นอย่างกับ JSON มันไม่สามารถสงบเพราะปุ่มแก้ไขไม่สามารถ การจัดการคีย์ผ่านทางเว็บรวมถึงการขอปัญหา
นอกจากนี้ยังมีคุณสมบัติที่ไม่มีเอกสารและแง่มุมต่าง ๆ ของสิ่งต่าง ๆ เช่นแม้กระทั่งคนที่ทำงานกับซอฟต์แวร์ตั้งแต่เริ่มก่อตั้งยังสามารถประหลาดใจในบางสิ่ง เช่นพูดว่ารูปแบบ XML สำหรับข้อมูลพวงกุญแจที่มีทุกอย่างยกเว้นสกีมาที่เป็นทางการ (จนกระทั่งสร้างขึ้นเมื่อสองสามเดือนที่ผ่านมา)
ในทางกลับกันสำหรับสิ่งดี ๆ ทุกอย่างที่มุทท์ทำมันก็ทำสิ่งที่ค่อนข้างน่าตกใจเช่นกัน ตัวอย่างเช่นไม่ว่าจะใช้ GPGME หรือไม่ก็ตามไม่มีเหตุผลใด ๆ ที่ Mutt จะแคชข้อความรหัสผ่าน ในสถานการณ์ใดมันควรจะส่งมอบให้กับ GPG (มีหรือไม่มีตัวแทน gpg) ในทำนองเดียวกันมันควรจะเคารพพารามิเตอร์การกำหนดค่าใน~/.gnupg/gpg.conf
ไฟล์ (และอื่น ๆ ในไดเรกทอรีนั้น) แน่นอนว่าการตั้งค่ารหัสคีย์สำรองสำหรับบัญชีที่แตกต่างกันเพื่อเปลี่ยนวิธีการเรียกใช้คำสั่งหรือแม้กระทั่งความสามารถในการระบุไฟล์กำหนดค่าทางเลือกหรือไดเรกทอรีทั้งหมด (เช่นgpg --homedir ~/.gnupg-work/gpg.conf
) ในขณะที่สิ่งต่าง ๆ ยืน Mutt เสียเวลาพยายามแก้ปัญหาที่โปรแกรมได้โต้ตอบกับมันแล้วเช่นข้อความรหัสผ่านหรือการจัดการคีย์ แต่ไม่อนุญาตให้เข้าถึงคุณลักษณะปกติของ GPG ซึ่งเป็นเรื่องที่ยอดเยี่ยมสำหรับอีเมล เช่นใช้กลุ่มบรรทัดสำหรับผู้รับหลายคนหรือแทนที่การเลือกคีย์สำหรับผู้รับเฉพาะ (เพราะมีผู้ชายคนหนึ่งที่สูญเสียรหัสลับหรือลืมรหัสผ่านของเขาเสมอและตอนนี้คุณมีกุญแจสาธารณะ 15 อันพร้อมที่อยู่เดียวกับ UID และ พฤติกรรมเริ่มต้นคือการเลือกคู่แรกซึ่งมีโอกาสมากที่จะไม่ถูกต้อง) 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 อาจให้แนวคิดที่ดีกว่าว่า GPGME สามารถทำอะไรได้บ้าง ยกตัวอย่างเช่นการผูก PyME Python สำหรับ GPGME พยายามจับคู่ฟังก์ชั่น GPGME โดยอัตโนมัติ (และมักจะประสบความสำเร็จโดยไม่มีปัญหา) รายการคุณลักษณะปัจจุบันใน pyme.core.pygpgme มาถึง 534 เปรียบเทียบกับบรรทัดคำสั่งและ GPG 1.4.20 มี 322 ตัวเลือกในขณะที่ 2.1.11 มี 347 (ฉันข้าม 2.0 ดังนั้นฉันไม่สามารถตรวจสอบได้ แต่ควร อยู่ที่ใดที่หนึ่งระหว่างสองคนนี้)
สำหรับคำตอบก่อนหน้านี้ที่อ้างถึงการจับคู่คำสั่งสำคัญนั้นควรได้รับแรงผลักดันจากตัวเลือกการกำหนดค่าเพียงอย่างเดียวหรือไม่และ Mutt "อนุญาตให้" เข้าถึง GPG ได้อย่างสมบูรณ์หรือไม่ ขณะนี้ฉันใช้ Mutt กับ GPGME และทั้งสองฟังก์ชั่นที่กล่าวถึง (คีย์อีเมลและคีย์แยก) นั้นใช้ได้แม้ว่า Mutt จะมีปัญหาในการรับรู้ PGP / เนื้อหาในบรรทัดถ้ามันได้กำหนดหรือเลือกประเภทเนื้อหาข้อความ / ธรรมดาจาก ที่ไหนสักแห่ง. เมื่อเกิดเหตุการณ์นั้นขึ้นมาใช่มันมักจะจำเป็นต้องเปลี่ยนไปใช้ Emacs หรืออะไรบางอย่าง ถึงกระนั้นก็ดูเหมือนว่าจะมีปัญหากับวิธีการ Mutt ตรวจสอบว่าเนื้อหาเป็นเพียงข้อความหรือวิธีการตรวจสอบเนื้อหารูปแบบ OpenPGP แม้ว่าฉันจะไม่ชอบอะไรที่ดีไปกว่าแค่บอกว่าเราทุกคนควรใช้ PGP / MIME แทน (และเราควรจะเป็น)
โดยทั่วไปดูเหมือนว่า Mutt อาศัยเพียงข้อความที่เป็น MIME แบบหลายส่วนโดยมีส่วนใดส่วนหนึ่งที่ประกอบด้วยคีย์ลายเซ็นและ / หรือเนื้อหาที่เข้ารหัสไว้เพื่อทำสิ่งใด ๆ ด้วย ไม่เพียงแค่ค้นหาผ่านอีเมลธรรมดาที่กำลังค้นหาเนื้อหาที่ตรงกัน แต่นั่นไม่ใช่ความผิดของ GPG หรือ GPGME การแก้ปัญหาคือการเพิ่มคุณสมบัติเหล่านั้นให้กับ Mutt หรือเปิดข้อความในบางสิ่งที่มีความสามารถนั้น (เช่น Emacs กับ EPA / EasyPG ซึ่งควรจะเปิดใช้งานตามค่าเริ่มต้นในวันนี้) หรือไพพ์ข้อความออกไปยังคำสั่งโดยตรง (หรือ gpgme-tool ถ้าคุณชอบ แต่เมื่อไปป์ไลน์มันง่ายกว่าที่จะไปที่คำสั่งปกติ)
สำหรับ GPGME นั้นไม่ใช่ทุกคนที่มีอยู่เพราะจำเป็นต้องรวบรวมจากแหล่งที่มาเดียวกันกับที่ติดตั้งไว้ในระบบเสมอ หากคุณอัปเกรด GPG และไม่คอมไพล์ GPGME ให้ตรงกันจะมีปัญหา ในทางกลับกันการติดตั้ง GPG จากแหล่งที่มามักจะแนะนำถ้าเป็นไปได้ดังนั้นหากไปเส้นทาง GPGME มันเป็นวิธีที่ดีในการรันคอมไพล์นั้นเมื่อทำการอัพเดต GPG และควรจะดีทั้งหมด
ในขณะที่คนเหล่านั้นที่อาศัย แต่เพียงผู้เดียวในแพ็คเกจที่ได้รับจากการแจกจ่ายที่เลือกไว้จะต้องอยู่ภายใต้การดูแลรักษาของแพ็คเกจเหล่านั้นและพวกเขาอาจหรืออาจไม่เข้าใจข้อกำหนดของ GPG และ GPGME ที่ทำงานร่วมกัน ตัวอย่างเช่นแพคเกจ MacPorts สำหรับ GPGME ถูกตั้งค่าให้ขึ้นอยู่กับ GPG 2.0.x ซึ่งจะถูกตั้งค่าให้ขัดแย้งกับ GPG 2.1.x ดังนั้นคนส่วนใหญ่ที่ติดตั้ง 2.1 ก็ไม่สามารถติดตั้ง GPGME ได้แม้ว่าพวกเขาจะทำงานร่วมกันอย่างชัดเจน การให้ GPGME ทำงานในสถานการณ์นั้นจำเป็นต้องทำสิ่งต่าง ๆ ที่ MacPort แนะนำ (การรวบรวมสิ่งต่างๆนอกระบบการจัดการพอร์ต แต่ภายใน/opt/local
) ลีนุกซ์บางรุ่นอาจมีปัญหาคล้ายกัน
ดังนั้นหากคุณกำลังใช้ PGP / MIME เพียงอย่างเดียวไม่ควรมีปัญหากับการใช้การรวม GPGME และจะหมายความว่าคุณไม่จำเป็นต้องกำหนดค่าคำสั่งเฉพาะลงใน.muttrc
ไฟล์ของคุณ หากคุณจัดการกับ PGP / in-line คุณจะพบปัญหา แต่ก็ไม่สามารถหลีกเลี่ยงได้ด้วยวิธีใดก็ตามกับ Mutt ดังนั้นฉันขอแนะนำให้ใช้ GPGME หากคุณสามารถทำได้
การปฏิเสธความรับผิด: ฉันเกี่ยวข้องกับการทำงาน dev เพื่อสร้าง API เป็น API สำหรับผู้ที่ไม่ใช่ C ทั้งหมดเพื่อให้สามารถใช้สิ่งที่โพสต์ยกเครื่อง ฉันย้ายพอร์ต PyME 0.9 จาก Python 2 ไปยัง Python 3 (ปัจจุบันอยู่ในสาขาของ GPGMEและเฉพาะรุ่น Python 2 เท่านั้นที่มีให้ผ่าน PyPI และ pip)
อัปเดต: พอร์ตของ PyME ไปยัง Python 3 อยู่ในสาขาหลักของ GPGME และมีให้ใน PyPI เป็น pyme3