Banyak orang benar-benar tidak mengerti GPGME dan mungkin tidak membantu bahwa dokumentasi yang ada pada dasarnya adalah kode komentar yang ditulis pada saat itu. Akan tetapi, ini akan memungkinkan akses programatik lengkap atau hampir lengkap ke seluruh GNU Privacy Guard suite dan seharusnya juga memungkinkan akses ke hal-hal seperti libassuan, agen gpg dan berbagai komponen lainnya. Itulah sebabnya secara default itu juga mencakup implementasi S / MIME yang hampir tidak ada di luar beberapa perusahaan yang berseru keras pada penggunaan akhir tahun 90-an.
Saat ini GPGME mencakup sekitar 500 fungsi terpisah atau lebih dan pasti mencakup hampir semua yang akan Anda lakukan dengan GPG di baris perintah. Namun, itu juga mengandung beberapa peninggalan dari pilihan desain sebelumnya yang kemudian ditentukan bukan arah yang benar. Misalnya, ini adalah API dengan potongan besar GTK 2 di dalamnya. Jelas, ini harus dilakukan (dan itu akan terjadi ketika waktu memungkinkan). Masalah lain yang ada saat ini, mungkin rintangan terbesar untuk adopsi adalah ketika seseorang mengatakan "API" kebanyakan coders tidak segera memikirkan file header C untuk dikompilasi dengan kode mereka sendiri untuk mengakses hal itu; mari kita hadapi itu, hari ini kebanyakan orang berpikir tentang sesuatu yang tenang atau setidaknya membiarkan mereka berinteraksi dengan data dalam format JSON. GPGME adalah tentang sejauh itu karena ' mungkin untuk mendapatkan. Perhatikan bahwa meskipun mungkin untuk membuatnya bermain dengan baik dengan JSON, itu tidak akan pernah tenang karena tombol pengeditan tidak bisa. Ditambah mengelola kunci melalui web hanya meminta masalah.
Ada juga banyak fitur dan aspek yang tidak berdokumen sehingga orang-orang yang bekerja dengan perangkat lunak tersebut sejak awal masih dapat terkejut oleh beberapa hal. Seperti, katakanlah, format XML untuk memasukkan data yang memiliki segalanya kecuali skema formal (hingga dihasilkan beberapa bulan lalu).
Di sisi lain, untuk semua hal baik yang dilakukan Mutt, ia juga melakukan beberapa hal yang agak mengejutkan. Misalnya, apakah GPGME digunakan atau tidak, seharusnya tidak ada alasan sama sekali bagi Mutt untuk men-cache frasa sandi; dalam kedua skenario itu harus diserahkan ke GPG (dengan atau tanpa gpg-agent). Demikian juga, itu harus menghormati parameter konfigurasi dalam ~/.gnupg/gpg.conf
file (dan yang lainnya di direktori itu). Tentu, menetapkan ID kunci alternatif untuk akun yang berbeda untuk mengubah cara perintah dipanggil atau bahkan dapat menentukan file konfigurasi alternatif atau seluruh direktori (mis.gpg --homedir ~/.gnupg-work/gpg.conf
). Namun, Mutt membuang waktu untuk menyelesaikan masalah yang sudah dipecahkan oleh program yang berinteraksi dengannya, seperti frasa sandi atau manajemen kunci, tetapi tidak mengizinkan akses ke fitur normal GPG, banyak di antaranya fantastis untuk email seperti menggunakan garis grup untuk beberapa penerima atau untuk menimpa pemilihan kunci untuk penerima tertentu (karena selalu ada satu orang yang terus kehilangan kunci rahasianya atau lupa frasa sandi dan sekarang Anda punya 15 kunci publik dengan alamat yang sama dengan UID dan perilaku default adalah memilih pertandingan pertama yang sangat mungkin tidak benar). Emacs sedikit lebih baik di sana, tetapi bahkan gagal untuk mengambil gpg.conf
file yang biasanya secara otomatis menjawab hal-hal yang ingin ditanyakan.
Sekarang, untuk sesuatu yang sedikit lebih berguna dan berhubungan secara tangensial, GPGME hadir dengan hal kecil tidak berdokumen bagus lainnya yang disebut gpgme-tool. Ini adalah antarmuka yang belum sempurna untuk GPGME yang akan berjalan pada soket UNIX (dan tentu saja Anda bisa menggunakan ncat atau sesuatu untuk membuatnya duduk di port jaringan jika Anda mau). Meskipun tidak terdokumentasi, cukup jelas jika Anda menjalankannya dan berinteraksi dengannya sebentar dan mulai dengan perintah bantuan. Atau ini bekerja dengan cukup baik:
echo help | gpgme-tool > gpgme-tool-cheatsheet.txt
Dengan senang hati akan melakukan semua dasar-dasarnya (mengenkripsi, mendekripsi, menandatangani, memverifikasi, mengubah frasa sandi, menghasilkan kunci, kunci daftar, kunci rahasia daftar, mencari kunci tertentu atau memilihnya, dll.). Jika Anda ingin melihat format XML "tersembunyi" coba ini:
echo "KEYLIST --secret-only" | gpgme-tool > secret-key-list.xml
Itu tidak akan mengekspor kunci rahasia, cukup daftarkan dan data tentang mereka. Juga, itu akan mengekspor dengan beberapa format format output yang perlu disaring sebelum ada yang benar-benar mengenalinya sebagai XML (hapus baris teratas, dua karakter pertama dari setiap baris berikutnya dan% 0A dari akhir setiap baris ). Bagaimanapun, gpgme-tool dapat memberikan ide yang lebih baik tentang apa yang benar-benar dapat dilakukan GPGME. Binding PyME Python untuk GPGME, misalnya, mencoba untuk secara otomatis mencocokkan fungsi GPGME (dan biasanya mencapai itu tanpa masalah); daftar fitur saat ini di pyme.core.pygpgme datang ke 534. Bandingkan dengan baris perintah dan GPG 1.4.20 memiliki 322 opsi, sementara 2.1.11 memiliki 347 (saya melewatkan 2.0 sehingga saya tidak dapat memeriksa, tetapi seharusnya berada di antara keduanya).
Adapun jawaban sebelumnya mengacu pada mencocokkan perintah-perintah utama, yang harus semata-mata didorong oleh opsi konfigurasi dan apakah Mutt "memungkinkan" akses penuh ke GPG atau tidak. Saya saat ini menggunakan Mutt dengan GPGME dan dua fungsi yang disebutkan (kunci surat dan kunci ekstrak) baik-baik saja, meskipun Mutt memang mengalami kesulitan mengenali konten PGP / in-line jika telah menetapkan atau mengambil jenis teks / konten polos dari suatu tempat. Ketika itu terjadi maka ya, biasanya perlu beralih ke Emacs atau sesuatu. Namun, itu tampaknya menjadi masalah dengan cara Mutt memeriksa apakah konten benar-benar hanya teks atau bagaimana cara memeriksa konten format OpenPGP. Sementara saya suka tidak ada yang lebih baik daripada hanya mengatakan kita semua harus menggunakan PGP / MIME sebagai gantinya (dan kita seharusnya),
Pada dasarnya sepertinya Mutt hanya bergantung pada pesan MIME multi-bagian dengan satu atau lebih bagian yang berisi kunci, tanda tangan, dan / atau konten yang dienkripsi agar dapat melakukan apa saja dengan. Itu tidak hanya mencari melalui email biasa mencari konten yang cocok, tapi itu bukan kesalahan GPGE atau GPGME. Solusinya adalah dengan menambahkan fitur-fitur itu ke Mutt atau membuka pesan dalam sesuatu dengan kemampuan itu (misalnya Emacs dengan EPA / EasyPG, yang seharusnya diaktifkan secara default hari ini) atau menyalurkan pesan ke perintah langsung (atau gpgme-tool jika Anda suka, tetapi ketika memiping biasanya lebih mudah untuk langsung ke perintah biasa).
Sedangkan untuk GPGME, tidak semua orang memilikinya karena selalu perlu dikompilasi dari versi sumber yang sama seperti yang diinstal pada sistem. Jika Anda memutakhirkan GPG dan tidak mengkompilasi ulang GPGME agar cocok maka kemungkinan akan ada masalah. Di sisi lain menginstal GPG dari sumber biasanya disarankan jika memungkinkan, jadi jika pergi rute GPGME itu menjadi praktik yang baik untuk hanya menjalankan kompilasi itu ketika memperbarui GPG dan semuanya harus baik-baik saja.
Sedangkan orang-orang yang hanya mengandalkan paket yang disediakan oleh distribusi pilihan mereka juga akan tunduk pada apa pun yang dipelihara oleh pengelola paket tersebut dan mereka mungkin atau mungkin tidak selalu memahami persyaratan kerja sama GPG dan GPGME. Sebagai contoh paket MacPorts untuk GPGME diatur untuk bergantung pada GPG 2.0.x, yang pada gilirannya diatur untuk bertentangan dengan GPG 2.1.x, sehingga sebagian besar orang yang menginstal 2.1 tidak dapat juga menginstal GPGME, meskipun mereka jelas bekerja sama. Agar GPGME berfungsi dalam skenario itu, Anda harus melakukan hal-hal yang direkomendasikan MacPorts (mengkompilasi hal-hal di luar sistem manajemen pelabuhan, tetapi di dalam /opt/local
). Beberapa distribusi Linux mungkin memiliki masalah serupa.
Jadi jika Anda hanya akan menggunakan PGP / MIME seharusnya tidak ada masalah dengan menggunakan integrasi GPGME dan itu berarti Anda tidak perlu mengkonfigurasi perintah tertentu ke dalam .muttrc
file Anda . Jika Anda berurusan dengan PGP / in-line maka Anda akan menghadapi masalah, tetapi mereka tidak dapat dihindari dengan Mutt, jadi saya akan merekomendasikan menggunakan GPGME jika Anda bisa.
PENOLAKAN: Saya terlibat dengan pekerjaan dev untuk membuat API ke API untuk semua dev non-C untuk dapat menggunakan hal post-overhaul. Saya juga mem-porting PyME 0.9 dari Python 2 ke Python 3 (saat ini dalam cabang GPGME dan hanya versi Python 2 yang tersedia melalui PyPI dan pip).
UPDATE: port PyME ke Python 3 sekarang di cabang utama GPGME dan tersedia di PyPI sebagai pyme3.