2010-04-20 63 views
0

我很累。我已經安裝了GnuPG,並從GnuPG的另一個實例中導出了兩個公鑰(我自己的和我的一個客戶端)。我嘗試在本地機器上配置「我的加密/解密」方法。GnuPG + Webservice + ASP.NET

當我從一個小控制檯應用程序運行加密方法,它效果很好。 當我從我的本地機器上的web服務運行此(同一! - 具有相同的身體)方法...我有一個ExitCode = 2。

快樂的事實捕捉錯誤消息,但不滿意他們的身體。

「GPG:沒有默認密鑰:密鑰不可用 GPG:XXXXXXXXXXXXXXXX.xml:符號+加密失敗:不提供密鑰」

我該怎麼辦?怎麼了?

最好的問候, 卡羅爾Bladek

+0

你能提供你的方法代碼嗎? – curtisk 2010-04-20 14:26:55

回答

0
static bool EncryptPGP(string inFile, string outFile) 
    { 
     try 
     { 
      RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\GNU\GnuPG"); //LocalMachine 
      if (key != null) 
      { 
       string path = key.GetValue("Install Directory").ToString(); 
       string pgpPath = string.Format("{0}\\gpg.exe", path);//@"C:\tools\GNU\GnuPG\gpg.exe"; 
       string password = "No no no no no"; 
       string keyName = "hihi"; 
       string args = string.Format(@"--batch --yes --passphrase {0} --recipient {1} --encrypt --output ""{2}"" --sign ""{3}""", password, keyName, outFile, inFile); 
       Process proc = Process.Start(pgpPath, args); 
       if (!proc.HasExited) 
       { 
        proc.WaitForExit(); 
       } 
       return proc.ExitCode == 0; 
      } 
     } 
     catch (Exception exc) 
     { 
      Console.WriteLine(exc.Message); 
     } 
     return false; 
    } 
+0

此代碼在控制檯應用程序中工作,但不在webservice方法中。 我正在考慮ASPNET用戶privillagies ...但錯誤消息顯示別的東西。 – 2010-04-20 14:42:57

0

密鑰環文件在每個用戶的基礎上創建的。運行控制檯應用程序時,它將在您的目錄中查找PGP密鑰環文件,而在Web服務中運行時,它將查看Web服務使用的用戶身份的目錄。

繼續打開cmd,切換到GPG安裝目錄並鍵入gpg -h。在靠近頂部的某處,它將向您顯示密鑰環文件爲登錄用戶所在的路徑。

你可以做些什麼來解決這個問題,是將keyring文件複製到它希望爲web服務用戶找到它的地方。不知道是否有任何命令行選項爲gpg選擇不同的密鑰環文件位置。