2009-08-17 67 views
0

我使用Pyme與GPGME進行交互,並且在簽名/加密時沒有任何問題。但是,當我嘗試解密時,儘管通過回調設置了密碼,但它始終會提示密碼短語。難道我做錯了什麼?Python Pyme:無需用戶交互即可簡單解密

+1

你的代碼是什麼樣的? – hughdbrown 2009-08-17 16:22:34

+0

我是個白癡。我現在正在工作。 – sberry 2009-08-17 17:06:56

+2

如果你可以發佈你的工作簽名代碼,這將是很好的:我在pyme文檔中找不到任何這樣的例子。 – mariotomo 2009-10-07 08:32:58

回答

0

在設置密碼回調之前添加「c.set_armor(1)」。

1

我有類似的問題。 我的代碼如下所示:

高清passphrase_callback(提示= '',DESC = '',prev_bad = ''): 回報 '密碼'

類CryptoEngine: 類NoSignKeys(例外): def init(self,str): 例外。 初始化(個體經營,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() 

儘管設置密碼回調我仍然要麼得到一個消息框,要求輸入密碼 或只是一個錯誤密碼的例外通知。 有人解決了這個問題,可以分享他的知識嗎? 謝謝, 嚴