2014-01-15 56 views
1

我使用GnuPG的蟒蛇解密我已經與蟒蛇下載的文件:的Python - GPG解密的作品,但GNUPG不

 gpg = gnupg.GPG(gnupghome="/home/myname/.gnupg") 
    with open('updates/'+filelist[i],'r') as f: 
     print "Decrypting "+fn 
     status=gpg.decrypt_file(f, passphrase="passphrase",output='updates/'+fn) 

    print 'ok: ', status.ok 
    print 'stderr: ',status.stderr 

失敗說「密鑰不可用」。但是,當我從終端運行gpg -d文件名解密文件沒有任何錯誤。我已經使用gpg -K並檢查用於加密文件的祕密證書/密鑰是否爲導入+信任等。

這是所有在Ubuntu Server 12.04上運行的。

任何人都可以建議我如何解決這個錯誤?

+0

標題看起來不符合問題 – balki

回答

1

請注意,GnuPG是gpg的「真實」名稱,它只是二進制文件的名稱。 python API被稱爲python-gnupg。

該問題很可能是由缺少訪問權限造成的。正如您已經意識到的那樣,每個系統用戶都有自己的GnuPG主目錄(因此您提供了另一個用戶的GnuPG目錄),其他人無法訪問。確保您的Web服務器用戶(可能是www-data)有權訪問/home/myname/.gnupg,更好地導出私鑰並從Web服務器用戶重新導入它(GnuPG不喜歡廣泛的訪問權限,否則可能會發送警告或拒絕運行)。

您可以通過運行sudo -u www-data 'gpg --home-dir /home/myname/.gnupg -d filename(因此,在Web服務器的用戶下運行gpg)來測試是否真的存在問題。