GPGME Python: Unterscheidung zwischen "Keyserver down" und "Key nicht auf Keyserver"

Jan Girlich vollkorn at cryptobitch.de
Do Sep 26 09:25:22 CEST 2019


Moin Bernhard,

Am 26.09.19 um 08:58 schrieb Bernhard Reiter:
> Am Mittwoch 25 September 2019 14:28:45 schrieb Jan Girlich:
>> Ich habe eine E-Mailadresse und einen Fingerprint auf einem anderen
>> Kanal erhalten und möchte jetzt eine verschlüsselte E-Mail senden. Dazu
>> möchte ich den Key vom Keyserver holen. 
> 
> Du solltest zuerst WKD probieren, dirmngr kann das ja auch machen.

okay, habe ich mich noch nicht mit beschäftigt. Ich lese mich da mal
ein, aber meiner Einschätzung nach nutzen das nur ein sehr, sehr kleiner
Teil der GPG-User und es hilft mir nicht bei dem vorliegenden Problem:
User, die ihre Keys auf Keyservern haben.

>> Um zu entscheiden, ob ich jetzt eine
>> Fehlermeldung sende oder es später versuche, brauche ich die
>> Fallunterscheidung.
> 
> Wäre es nicht sinnvoll, es in jedem Fall nochmals zu probieren
> und nach angemessener Zeit und Anzahl von Versuchen eine Meldung zu schicken?
> (Da es ja verschiedene Gründe geben kann, warum der öffentliche Schlüssel 
> nicht da oder erhältlich ist. Wenn ein Keyserver an einem Zeitpunkt nicht zu 
> erreichen ist oder den öffentlichen Schlüssel nicht hat, ist ja fast 
> gleichwertig, oder?)

Nein, das ist keinesfalls gleichwertig. In dem Falle, dass der Key nicht
auf den Keyservern ist, muss die Gegenseite aktiv werden und im anderen
Falle muss ich das Problem behandeln.

Da mein Interval, in dem ich Versuche zu senden vornehmen kann, aus
organisatorischen Gründen mindestens eine Woche lang ist, sind
probabilistische Verfahren mit mehreren Versuchen etc. nicht gangbar.

Aktueller Ansatz von mir ist eine Abfrage per HTTP zu machen um zu
prüfen, ob der Key tatsächlich auf den Keyservern liegt. Da bekomme ich
zumindest verschiedene Fehlercodes wie 200, 502, 504 etc. und kann bei
einer 200 im Response-Body prüfen ob es einen Key gibt. Das ist
natürlich wackelig, hat mögliche Race-Conditions (Key wird gerade erst
zwischen den Servern verteilt und meine HTTP-Abfrage findet auf anderem
Server statt als gnupgs Abfrage).

Irgendwelche Ideen wie ich das über die gpgme-API regeln kann?

Gruß
Jan



Mehr Informationen über die Mailingliste Gnupg-de