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