J'essaye de décrypter des messages en utilisant pyme (un wrapper python de gpgme). Cela fonctionne bien si je tape le mot de passe quand il m'indique mais je ne peux pas obtenir le callback de phrase secrète pour fonctionner. Voici le codeProblème de décryptage de PGP en python avec pyme sans intervention de l'utilisateur
import pyme.core
def Callback(x, y, z):
print 'in passphrase callback'
return 'passphrase'
plain = pyme.core.Data()
cipher = pyme.core.Data(sys.stdin.read())
c = pyme.core.Context()
c.set_armor(1)
c.set_passphrase_cb(Callback)
c.op_decrypt(cipher, plain)
plain.seek(0,0)
print plain.read()
Quand je lance ce et ne fournissent pas le mot de passe de manière interactive le programme tente alors l'impression de rappel « dans le rappel de mot de passe », mais échoue avec l'erreur:
pyme.errors.GPGMEError: Invocation of gpgme_op_decrypt: Unspecified source: General error (0,1)
Première et avant tout, pourquoi le callback de phrase secrète ne fonctionne pas? Et deuxièmement, comment puis-je empêcher le programme d'inviter l'utilisateur à entrer un mot de passe avant d'appeler le rappel de phrase secrète?
Ce fonctionne sur Ubuntu 10.04
Malheureusement, l'erreur d'indentation dans cet exemple était juste une erreur de copier-coller. Dans mon code, la fonction de rappel renvoie correctement une chaîne. Quelle version de python/pyme/os utilisez-vous pour que cela fonctionne? – user19745
@ user19745 J'utilise Debian testing avec libgpgme11 1.2.0-1.2 et python-pyme 0.8.1 + clean-4. – llasram