2009-08-17 4 views
0

J'utilise Pyme pour interfacer avec GPGME et n'ai eu aucun problème à signer/crypter. Lorsque j'essaie de décrypter, cependant, il affiche toujours l'invite pour la phrase secrète, même si elle a été définie via un rappel c.set_passphrase_cb. Est-ce que je fais quelque chose de mal?Pyme Python: décryptage simple sans interaction de l'utilisateur

+1

À quoi ressemble votre code? – hughdbrown

+0

Je suis un idiot. Je l'ai fonctionné maintenant. – sberry

+2

ce serait bien si vous pouviez poster votre code de signature de travail: je ne trouve aucun exemple de cela dans la documentation de pyme. – mariotomo

Répondre

0

Ajoutez «c.set_armor (1)» avant de définir le rappel de phrase secrète.

1

J'ai un problème similaire. Mon code ressemble à ceci:

def passphrase_callback (indice = '', desc = '', prev_bad = ''): retour 'password'

classe CryptoEngine: NoSignKeys de classe (Exception): def init (self, str): Exception. initialisation (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() 

Malgré le réglage de la fonction de rappel de mot de passe je reste soit obtenir une boîte de message demandant le mot de passe ou juste une notification d'exception d'un mauvais mot de passe. Est-ce que quelqu'un a résolu ce problème et pourrait partager ses connaissances? Merci, Yan

Questions connexes