2009-08-17 16 views
0

Ich benutze Pyme für die Schnittstelle mit GPGME und hatte keine Probleme beim Signieren/Verschlüsseln. Wenn ich versuche, zu entschlüsseln, wird jedoch immer die Eingabeaufforderung für die Passphrase angezeigt, obwohl sie über einen c.set_passphrase_cb Callback festgelegt wurde. Mache ich etwas falsch?Python Pyme: Einfache Entschlüsselung ohne Benutzerinteraktion

+1

Wie sieht Ihr Code aus? – hughdbrown

+0

Ich bin ein Idiot. Ich habe es jetzt funktioniert. – sberry

+2

wäre es schön, wenn Sie Ihren funktionierenden Signaturcode posten könnten: Ich kann in der pyme-Dokumentation kein Beispiel dafür finden. – mariotomo

Antwort

0

Fügen Sie "c.set_armor (1)" hinzu, bevor Sie den Passphrase-Rückruf festlegen.

1

Ich habe ein ähnliches Problem. Mein Code sieht wie folgt aus:

def passphrase_callback (Tip = '', desc = '', prev_bad = ''): return 'Passwort'

Klasse CryptoEngine-: Klasse NoSignKeys (Exception): def init (selbst, str): Ausnahme. init (self, str)

def __init__(self, user_id, passphrase): 
    "Initialize with ID (e-mail)" 
    self.user_id = user_id 
    self.passphrase = passphrase 
def verify(self, data): 
    c = core.Context() 
    sig = core.Data(string = data) 
    file = None 
    plain = core.Data() 
    c.op_verify(sig, file, plain) 
    result = c.op_verify_result() 
    plain.seek(0, 0) 
    plaintext = plain.read() 
    sig = result.signatures 
    status = False 
    for s in sig: 
     status = (s.status == 0) 
    return status, plaintext 

def sign(self, data): 
    c = core.Context() 
    for sigkey in c.op_keylist_all(self.user_id, 1): 
     if sigkey.can_sign: 
      c.signers_add(sigkey) 
    if not c.signers_enum(0): 
     raise CryptoEngine.NoSignKeys("No secret %s's keys suitable for signing" % self.user_id) 

    plain = core.Data(data) 
    sig = core.Data() 
    c.set_passphrase_cb(passphrase_callback) 
    c.op_sign(plain, sig, mode.CLEAR) 
    sig.seek(0, 0) 
    return sig.read() 

Trotz des Passwortes Rückruf Einstellung entweder ich noch ein Meldungsfeld fragt nach dem Passwort oder nur eine Ausnahme anmelde ein schlechtes Passwort. Hat jemand dieses Problem gelöst und könnte sein Wissen teilen? Danke, Yan