2014-09-26 33 views
1

我們正在使用存儲在USB令牌上的 證書在未受管理的C++項目中使用microsoft wincrypt實現數字簽名。每次需要密碼CryptSignMessage()調用

除非我們的應用程序已關閉並重新啓動,否則一切都按預期工作,除非用戶多次執行此過程,他們只需要首次輸入其證書密碼。

我們需要用戶在每次簽名時輸入密碼。有沒有辦法「重置」這個過程?

CertOpenSystemStore(NULL,"MY"); 
CertEnumCertificatesInStore(); // until we find the certificate we want 
CryptSignMessage(); // this brings up the password dialog box the first time, but not again 
// edited to show closing store and freeing context 
CertCloseStore(); 
CertFreeCertificateContext(); 

謝謝!

回答

1

緩存密碼由USB設備的驅動程序控制。通常這可以通過設備及其驅動程序附帶的一些UI應用程序進行配置。

作爲最後的手段,您可以將簽名過程放到單獨的EXE中,並在您每次需要簽名數據時運行它。這樣,每個簽名操作都會調用單獨的進程,並且密碼不會被緩存。

+0

謝謝,我不在辦公室,直到星期一,但會檢查這一點。 – PhilC 2014-09-26 19:16:33

相關問題