Problém dekódování PGP v pythonu s pyme bez zásahu uživatele

hlasů
0

Snažím se dešifrování zpráv pomocí pyme (krajta obálky z gpgme). To funguje dobře, pokud zadám heslo, když se zobrazí výzva, ale nemohu dostat heslo zpětné volání do práce. Zde je kód

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()

Když spustím to a neposkytují heslo interaktivně Program se poté pokusí zpětné volání tisku ‚v přístupové heslo pro zpětné volání‘, ale potom se nezdaří s chybou:

pyme.errors.GPGMEError: Invocation of gpgme_op_decrypt: Unspecified source: General error (0,1)

Za prvé a především, proč heslo callback nefunguje? A za druhé, jak mohu zabránit program od vyzve uživatele k zadání hesla před voláním přístupové heslo zpětné volání?

To běží na Ubuntu 10.04

Položena 07/09/2010 v 16:34
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
2

zdá se, že je třeba interpretovat klíčové slovo hook:

   def Callback( x, y, z, hook=None):
   ...

funguje velmi dobře.

Odpovězeno 29/10/2011 v 15:00
zdroj uživatelem

hlasů
0

Jsem schopen reprodukovat chybu jste vykazování vrácením Nonez přístupové heslo pro zpětné volání. Python funkce vrací Nonestandardně, pokud se dostanou na konec vykonávající funkci, aniž by dosažení returnprohlášení. Je možné, že jste omylem vrací Noneze svého zpětného volání, snad kvůli misindentation vašeho kódu, která končí svou funkci předčasně? (Dále jen misindentation myšlenka je jen odhad založený na nelegálním zářezu ve vašem příkladu).

Odpovězeno 19/09/2010 v 10:58
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more