2009-08-17 3 views
0

GPGME와의 인터페이스에 Pyme을 사용하고 있으며 서명/암호화에 문제가 없습니다. 그러나 암호 해독을 시도하면 c.set_passphrase_cb 콜백을 통해 암호를 설정 했음에도 불구하고 암호문을 입력하라는 메시지가 나타납니다. 내가 뭔가 잘못하고 있는거야?Python Pyme : 사용자 상호 작용없이 간단한 암호 해독

+1

코드의 모양은 어떻습니까? – hughdbrown

+0

나는 바보 야. 나는 지금 일하고있다. – sberry

+2

작업 서명 코드를 게시 할 수 있으면 좋을 것입니다. pyme 설명서에서이 예제를 찾을 수 없습니다. – mariotomo

답변

0

암호문 콜백을 설정하기 전에 "c.set_armor (1)"을 추가하십시오.

1

비슷한 문제가 있습니다. 내 코드는 다음과 같습니다

데프 passphrase_callback (= prev_bad을 힌트를 = '', DESC = '' '') : 복귀 '암호'

클래스 CryptoEngine : 클래스 NoSignKeys (예외) : def 초기화 (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() 

난 아직도 메시지 상자가 암호 또는 잘못된 암호의 단지 예외 통지를 요청받을하거나 암호 콜백을 설정에도 불구하고. 누군가이 문제를 해결하고 지식을 공유 할 수 있습니까? 감사합니다. 얀

관련 문제