我必須查明智能卡是否有一個給定的證書。爲此,我首先使用CryptAcquireContext獲取HCRYPTPROV(CSP的句柄),然後使用它打開系統存儲(OpenSystemStore),然後枚舉證書。只能在智能卡上使用證書
它在Windows XP上完美運行。在Windows 7上,由於在商店中存儲了陳舊/舊證書,因此存在問題。 Windows從智能卡存儲/複製其存儲中的證書。這意味着如果我在智能卡上有兩個證書Cert1和Cert2,並且我已經使用智能卡登錄到Windows。那麼Windows將這些證書存儲在其商店中,我們可以看到,通過轉到IE-> Internet選項 - >內容 - >證書。然後,如果我從智能卡中刪除Cert2,那麼Cert2也會顯示在Windows Store中,並且這件事正在破壞我的代碼。
所以我需要枚舉這僅適用於智能卡不能在Windows應用商店的證書。
尚未對Windows編程一段時間,但通常智能卡上的證書會附帶一個私鑰以進行實際簽名或解密。你可能會嘗試訪問或使用私鑰,看看會發生什麼? –
謝謝貓頭鷹。它爲我工作。我已經使用CryptAcquireCertificatePrivateKey API檢查給定證書的相應私鑰。如果它在智能卡上可用,它將成功返回 – MLS
很高興爲您提供一些幫助穆罕默德。 –