gpgme Python-Bindings und set_passphrase_cb
Jan Girlich
vollkorn at cryptobitch.de
Fr Okt 20 22:23:21 CEST 2017
Moin,
ich versuche gerade mit den gpgme Python-Bindings einen Text mit einem
privaten, passwortgeschützten Key zu signieren. Das bekomme ich aber
nicht ans Laufen.
So sieht mein Code aus:
import gpg
def passphrase(hint, desc, prev_bad):
return 'test_passwort'
with gpg.Context(armor=True,
pinentry_mode=gpg.constants.PINENTRY_MODE_LOOPBACK,
home_dir='ROOT/gpg_home_folder') as c:
c.set_passphrase_cb(passphrase)
sender_key = c.get_key('0xDBBA0A4D')
recipient_key = c.get_key('0x0B04220B')
c.signers = [sender_key]
encrypted_body, _1, _2 = c.encrypt('T€est'.encode(), recipients=
[sender_key, recipient_key], sign=True, always_trust=True)
Ich erhalte folgende Fehlermeldung:
Traceback (most recent call last):
File "gpg_test.py", line 18, in <module>
encrypted_body, _1, _2 = c.encrypt('T€est'.encode(),
recipients=[sender_key, recipient_key], sign=True, always_trust=True)
File
"/home/jan/Projekte/AA/env/lib/python3.5/site-packages/gpg/core.py",
line 269, in encrypt
self.op_encrypt_sign(recipients, flags, plaintext, ciphertext)
File
"/home/jan/Projekte/AA/env/lib/python3.5/site-packages/gpg/core.py",
line 151, in wrapper
return _funcwrap(self, *args)
File
"/home/jan/Projekte/AA/env/lib/python3.5/site-packages/gpg/core.py",
line 135, in _funcwrap
return errorcheck(result, "Invocation of " + name)
File
"/home/jan/Projekte/AA/env/lib/python3.5/site-packages/gpg/errors.py",
line 62, in errorcheck
raise GPGMEError(retval, extradata)
gpg.errors.GPGMEError: Invocation of gpgme_op_encrypt_sign: Unspecified
source: No secret key
gpg.errors.GPGMEError: Invocation of gpgme_op_sign: GPGME: Unusable
secret key
In meiner gpg-agent.conf steht nur "allow-loopback-pinentry" und in
meiner gpg.conf "keyserver hkp://keys.gnupg.net".
Mit gpg habe ich sichergestellt, dass der Key im Keyring ist und das
Passwort für den sender_key habe ich direkt vor dem Test gesetzt.
Mit dem Debugger habe ich festgestellt, dass meine passphrase() nie
aufgerufen wird.
Warum wird die nicht aufgerufen?
Besten Gruß
Jan Girlich
Mehr Informationen über die Mailingliste Gnupg-de