2009-08-17 8 views
0

私はGPGMEとのインターフェイスにPymeを使用しており、署名/暗号化に問題はありませんでした。ただし、復号化しようとすると、c.set_passphrase_cbコールバックを設定したにもかかわらず、パスフレーズのプロンプトが常に表示されます。私は何か間違っているのですか?Python Pyme:ユーザーとのやりとりのない簡単な復号化

+1

あなたのコードはどのように見えますか? – hughdbrown

+0

私はばかです。私は今働いている。 – sberry

+2

作業署名コードを投稿できるといいですね。私はpymeの文書でこれの例を見つけることができません。 – mariotomo

答えて

0

パスフレーズコールバックを設定する前に "c.set_armor(1)"を追加してください。

1

私にも同様の問題があります。 私のコードは次のようになります。

デフ(ヒント= ''、DESC = ''、prev_badを= '')passphrase_callback: リターン 'パスワード'

クラスCryptoEngine: クラスNoSignKeys(例外): def init(self、str): 例外があります。 のinit(自己、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() 

私はまだ パスフレーズまたはパスワードが間違っだけの例外通知を尋ねるメッセージボックスを取得するのいずれかのパスフレーズのコールバックを設定するにもかかわらず。 誰かがこの問題を解決し、彼の知識を共有できましたか? ありがとう、 Yan

関連する問題