Viele Leute verstehen GPGME wirklich nicht und es hilft wahrscheinlich nicht, dass die vorhandene Dokumentation im Grunde genommen der zu der Zeit geschriebene Codekommentar ist. Es wird jedoch einen vollständigen oder nahezu vollständigen programmatischen Zugriff auf die gesamte GNU Privacy Guard-Suite ermöglichen und soll auch den Zugriff auf Dinge wie libassuan, gpg-agent und verschiedene andere Komponenten ermöglichen. Aus diesem Grund enthält es standardmäßig auch die S / MIME-Implementierung, die kaum jemand außerhalb einiger Unternehmen, die sich Ende der 90er Jahre lautstark ausgesprochen haben, einsetzt.
Derzeit enthält GPGME etwa 500 separate Funktionen oder mehr und deckt definitiv so ziemlich alles ab, was Sie mit GPG in der Befehlszeile tun würden. Es enthält jedoch auch einige Relikte früherer Designentscheidungen, bei denen später festgestellt wurde, dass sie nicht in die richtige Richtung weisen. Dies ist beispielsweise eine API mit einer großen Menge GTK 2. Offensichtlich muss dies gehen (und es wird, wenn es die Zeit erlaubt). Ein weiteres Problem, das es heutzutage gibt, ist vielleicht die größte Hürde bei der Einführung, dass die meisten Programmierer, wenn jemand "API" sagt, nicht sofort an C-Header-Dateien denken, um sie mit ihrem eigenen Code zu kompilieren, um auf das Ding zuzugreifen. Seien wir ehrlich, heutzutage denken die meisten Menschen an etwas, das RESTful ist, oder lassen Sie sie zumindest mit Daten in einem JSON-Format interagieren. GPGME ist ungefähr so weit davon entfernt wie es ' ist möglich zu bekommen. Beachten Sie, dass es zwar möglich sein sollte, mit JSON eine gute Wiedergabe zu erzielen, jedoch niemals REST-fähig sein kann, da das Bearbeiten von Schlüsseln nicht möglich ist. Das Verwalten von Schlüsseln über das Web fordert nur Ärger.
Es gibt auch viele undokumentierte Funktionen und Aspekte der Sache, so dass selbst Leute, die seit ihrer Einführung mit der Software arbeiten, immer noch von einigen Dingen überrascht werden können. Zum Beispiel das XML-Format für Schlüsselbunddaten, die bis auf ein formales Schema alles hatten (bis vor ein paar Monaten).
Auf der anderen Seite macht Mutt trotz all der guten Dinge auch einige ziemlich schockierende Dinge. Unabhängig davon, ob GPGME verwendet wird oder nicht, sollte es für Mutt keinen Grund geben, Passwörter zwischenzuspeichern. in beiden szenarien sollte es an GPG übergeben werden (mit oder ohne gpg-agent). Ebenso sollten die Konfigurationsparameter in der ~/.gnupg/gpg.conf
Datei (und in anderen in diesem Verzeichnis) berücksichtigt werden . Sicher, Sie können eine alternative Schlüssel-ID für verschiedene Konten festlegen, um die Art und Weise zu ändern, in der die Befehle aufgerufen werden, oder Sie können sogar alternative Konfigurationsdateien oder ganze Verzeichnisse angeben (z. B.gpg --homedir ~/.gnupg-work/gpg.conf
). Aus heutiger Sicht verschwendet Mutt jedoch Zeit, um Probleme zu lösen, die bereits von dem Programm behoben wurden, mit dem er interagiert, wie z. B. Passphrase oder Schlüsselverwaltung, aber er erlaubt keinen Zugriff auf die normalen Funktionen von GPG, von denen viele für E-Mails fantastisch sind B. die Verwendung von Gruppenleitungen für mehrere Empfänger oder das Überschreiben der Schlüsselauswahl für bestimmte Empfänger (da es immer einen Typen gibt, der seinen geheimen Schlüssel verliert oder die Passphrase vergisst und jetzt 15 öffentliche Schlüssel mit derselben Adresse wie UID und UID hat) Standardmäßig wird die erste Übereinstimmung ausgewählt, die höchstwahrscheinlich nicht korrekt ist. Emacs ist dort ein bisschen besser, aber selbst wenn es die gpg.conf
Datei nicht erkennt, beantwortet es normalerweise automatisch die Dinge, nach denen es fragen möchte.
Für etwas Nützlicheres und Tangentialeres wird GPGME mit einem weiteren kleinen undokumentierten Ding namens gpgme-tool ausgeliefert. Es ist eine rudimentäre Schnittstelle zu GPGME, die auf einem UNIX-Socket ausgeführt wird (und natürlich können Sie ncat oder etwas anderes verwenden, um es auf einem Netzwerkport zu platzieren, wenn Sie dies wünschen). Obwohl es nicht dokumentiert ist, ist es ziemlich selbsterklärend, wenn Sie es ausführen und eine Weile damit interagieren und mit dem Befehl help beginnen. Alternativ funktioniert das auch ganz gut:
echo help | gpgme-tool > gpgme-tool-cheatsheet.txt
Es erledigt gerne alle Grundlagen (verschlüsseln, entschlüsseln, signieren, verifizieren, Passphrasen ändern, Schlüssel generieren, Schlüssel auflisten, geheime Schlüssel auflisten, nach bestimmten Schlüsseln suchen oder diese auswählen usw.). Wenn Sie das "versteckte" XML-Format sehen möchten, versuchen Sie Folgendes:
echo "KEYLIST --secret-only" | gpgme-tool > secret-key-list.xml
Damit werden die geheimen Schlüssel nicht exportiert, sondern nur aufgelistet und mit Daten versehen. Außerdem wird mit einem Ausgabeformat exportiert, das herausgefiltert werden muss, bevor es wirklich als XML erkannt wird. Löschen Sie die oberste Zeile, die ersten beiden Zeichen jeder nachfolgenden Zeile und die% 0A am Ende jeder Zeile ). Wie auch immer, gpgme-tool kann eine bessere Vorstellung davon geben, was GPGME wirklich kann. Die PyME-Python-Bindungen für GPGME versuchen beispielsweise, GPGME-Funktionen automatisch abzugleichen (und erreichen dies normalerweise problemlos). Die aktuelle Liste der Funktionen in pyme.core.pygpgme ist 534. Vergleichen Sie das mit der Befehlszeile und GPG 1.4.20 hat 322 Optionen, während 2.1.11 347 hat (ich habe 2.0 übersprungen, kann es also nicht überprüfen, aber es sollte irgendwo zwischen diesen beiden sein).
Was die vorherige Antwort betrifft, die sich auf den Abgleich der Tastaturbefehle bezieht, sollte dies ausschließlich von den Konfigurationsoptionen abhängen und davon, ob Mutt den vollständigen Zugriff auf GPG "erlaubt" oder nicht. Ich verwende derzeit Mutt mit GPGME und die beiden genannten Funktionen (Mail-Schlüssel und Schlüssel extrahieren) sind in Ordnung, obwohl Mutt Probleme hat, PGP / Inline-Inhalt zu erkennen, wenn er den Text- / Nur-Inhaltstyp von zugewiesen oder abgerufen hat irgendwo. Wenn das passiert, ist es normalerweise notwendig, zu Emacs oder so zu wechseln. Dies scheint jedoch ein Problem bei der Art und Weise zu sein, wie Mutt prüft, ob der Inhalt wirklich nur Text ist oder wie er auf andere Weise den Inhalt im OpenPGP-Format prüft. Ich würde zwar am liebsten sagen, wir sollten stattdessen alle PGP / MIME verwenden (und das sollten wir auch),
Grundsätzlich sieht es so aus, als ob Mutt sich ausschließlich darauf verlässt, dass die Nachricht aus mehreren MIME-Teilen besteht, wobei einer oder mehrere dieser Teile den Schlüssel, die Signaturen und / oder den verschlüsselten Inhalt enthalten, damit er etwas damit anfangen kann. Es wird nicht nur in einer einfachen E-Mail nach passenden Inhalten gesucht, sondern weder an GPGs noch an GPGMEs Schuld. Die Lösung besteht darin, entweder diese Funktionen zu Mutt hinzuzufügen oder die Nachricht in einer Funktion mit dieser Funktion zu öffnen (z. B. Emacs mit EPA / EasyPG, die heutzutage standardmäßig aktiviert sein sollte) oder die Nachricht an einen direkten Befehl (oder ein gpgme-Tool) weiterzuleiten Wenn Sie möchten, ist es jedoch in der Regel einfacher, direkt zu einem regulären Befehl zu wechseln.
GPGME ist nicht für alle verfügbar, da es immer aus der Quellversion kompiliert werden muss, die auf dem System installiert ist. Wenn Sie GPG aktualisieren und GPGME nicht neu kompilieren, gibt es wahrscheinlich Probleme. Auf der anderen Seite wird in der Regel empfohlen, GPG von der Quelle aus zu installieren. Wenn Sie also die GPGME-Route wählen, empfiehlt es sich, diese Neukompilierung beim Aktualisieren von GPG auszuführen, und alles sollte in Ordnung sein.
Während diejenigen Personen, die sich ausschließlich auf die Pakete verlassen, die von ihrer gewählten Distribution bereitgestellt werden, auch den Betreuern dieser Pakete unterworfen sein können und die Anforderungen von GPG und GPGME, die zusammenarbeiten, verstehen oder nicht immer verstehen. Beispielsweise ist das MacPorts-Paket für GPGME von GPG 2.0.x abhängig, was wiederum zu Konflikten mit GPG 2.1.x führen kann, sodass die meisten Benutzer, die 2.1 installieren, GPGME nicht installieren können, obwohl sie eindeutig zusammenarbeiten. Um GPGME in diesem Szenario zum Laufen zu bringen, müssen die von MacPorts empfohlenen Maßnahmen ergriffen werden (Kompilieren außerhalb des Port-Management-Systems, aber innerhalb /opt/local
). Einige Linux-Distributionen haben möglicherweise ähnliche Probleme.
Wenn Sie also nur PGP / MIME verwenden, sollte es keine Probleme mit der GPGME-Integration geben, und Sie müssen nie bestimmte Befehle in Ihrer .muttrc
Datei konfigurieren . Wenn Sie sich mit PGP / In-Line befassen, werden Sie auf Probleme stoßen, die sich mit Mutt jedoch nicht vermeiden lassen. Daher würde ich die Verwendung von GPGME empfehlen, wenn Sie dies trotzdem können.
HAFTUNGSAUSSCHLUSS: Ich arbeite mit dev daran, eine API für die API zu erstellen, damit alle Nicht-C-Entwickler das Ding nach der Überholung verwenden können. Ich habe auch PyME 0.9 von Python 2 nach Python 3 portiert (es befindet sich derzeit in einem Zweig von GPGME und nur die Python 2-Version ist über PyPI und pip verfügbar).
UPDATE: Dieser PyME-Port zu Python 3 befindet sich jetzt im Hauptzweig von GPGME und ist auf PyPI als pyme3 verfügbar.