gpgme: Auswählen eines privaten Schlüssels beim Signieren von Daten

9

Mit gpgme (der Entwicklungsbibliothek für gpg / gnupg) versuche ich einige Daten zu signieren. Im Schlüsselbund habe ich mehr als 1 privaten Schlüssel, also möchte ich den auswählen richtig eins. Dies schlägt fehl mit: "Unusable secret key (117440566)". Der Schlüssel wurde mit gnupg2 selbst generiert. Bei Verwendung von gnupg tritt auch das Problem auf.

%Vor%

Zuerst überprüfe ich, ob es einen privaten Schlüssel für den ausgewählten Schlüssel gibt:

%Vor%

Mache die Unterzeichnung:

%Vor%

Nun schlägt gpgme_op_encrypt_sign immer mit dem Fehler "Unusable secret key (117440566)" fehl. Irgendwelche Tipps / Hinweise?

Softwareversionen:

%Vor%

Ich habe Debug-Tracing aktiviert, aber es hilft mir nicht viel:

%Vor%

BEARBEITEN

Wie von @kylehuff angefordert, ist hier der Code für die Schlüsselauswahl:

%Vor%

Dann im Konstruktor mache ich:

%Vor%

und wenn es Zeit ist zu unterschreiben:

%Vor%

@kylehuff, hast du das verlangt? Danke

BEARBEITEN

Hier ist die Liste für 20CD3FF80DA6C1E46CD9F135CC73A8A60BF38589:

%Vor%

BEARBEITEN

folkert @ travemate: ~ $ gpg2 --local-benutzer 14B7E8E6 --zeichen bla.txt

folkert @ travemate: ~ $ gpg --verify bla.txt.gpg gpg: Unterschrift wurde am 18. Juni 2015 07:18:17 UTC mit der RSA-Schlüssel-ID 74D6F5C6 erstellt gpg: Gute Signatur von "testkey2 (testkey2)"

und mit der Bearbeitungs-Taste kann ich sehen, dass 74d6f5c6 tatsächlich der Unterschlüssel des Zeichens ist:

sub 1024R / 74D6F5C6 erstellt: 2015-05-31 läuft ab: nie Verwendung: S

Ich bin also etwas überrascht, dass dies nicht für gpgme funktioniert. Wenn Sie den Fund nicht direkt ausführen, gibt gpgme_get_key () denselben Fehler.

    
Folkert van Heusden 12.06.2015, 09:14
quelle

1 Antwort

2

Es ist schwierig zu sagen, was vor sich geht, sogar mit der Probe, aber hier sind einige mögliche Szenarien -

Etwas, das in der Methode my_gpgme_new(&ctx, false, error) ausgeführt wird, kann eigensinnig sein. Was macht diese Funktion genau? Warum nicht die Standardmethode gpgme_new verwenden?

Im Beispiel verwenden Sie die Funktion search_key_result_t gpgme::find_key() ; Gibt es einen Bedarf für mehrere Unterzeichner? wenn ja, zumindest zum Testen, warum nicht vereinfachen und einfach gpgme_get_key() verwenden? d. h.

%Vor%

Zusätzlich zu dieser Methode scheint es, dass Sie diese Methode zu gpgme namesapce hinzufügen. Ist es möglich, die eingebaute Methode auch im gpgme-Namespace zu trampeln?

Wie ist das für das Empfängerobjekt aufgebaut? Es sollte eine null-beendete gpgme_key_t -Struktur von gpgme_key_t s sein, auch wenn es sich nur um einen einzelnen Empfänger handelt. d. h.

%Vor%

Alternativ, wenn die Empfänger als Array bereitgestellt werden:

%Vor%     
kylehuff 16.06.2015 20:14
quelle

Tags und Links