0

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

4

2 に答える 2

1

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

def passphrase_callback(hint='', desc='', prev_bad=''): 「パスワード」を返す

クラス CryptoEngine: クラス NoSignKeys(Exception): def init (self, str): 例外。init (自己、文字列)

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

パスフレーズ コールバックを設定しても、パスフレーズを要求するメッセージ ボックスが表示されるか、パスワードが正しくないことを通知する例外が表示されます。誰かがこの問題を解決し、彼の知識を共有できましたか? ありがとう、ヤン

于 2009-12-02T23:02:27.613 に答える
0

パスフレーズ コールバックを設定する前に、「c.set_armor(1)」を追加します。

于 2010-04-11T17:53:03.040 に答える