1
如何確保C#代碼使用password
來使用certificate's private key
?證書安裝在CurrentUser/Personal
商店中。我試過,但仍然我的代碼使用私鑰而不提示輸入密碼。使用X509Certificate2執行數字簽名提示輸入密碼以使用私鑰
byte[] fileData = File.ReadAllBytes(path);
ContentInfo contentInfo = new ContentInfo(fileData);
SignedCms signedCms =
new SignedCms(SubjectIdentifierType.SubjectKeyIdentifier, contentInfo, true);
CmsSigner signer =
new CmsSigner(SubjectIdentifierType.SubjectKeyIdentifier, MyLoadedCert);
signer.IncludeOption = X509IncludeOption.WholeChain;
signedCms.ComputeSignature(signer); // Works fine without prompting password
byte[] encoded = signedCms.Encode();
File.WriteAllBytes(signatureFilePath, encoded);
它不拋出任何爲我破例。但是如果我把'signedCms.ComputeSignature(signer,false)',那麼它會在外部窗口中提示輸入密碼。爲什麼在靜音模式下它不起作用?我的證書中是否需要某些東西? –
@GokulE它是恕我直言靜默模式=不允許用戶交互。我沒有在.NET中找到任何方式來檢查一個證書是否具有強大的密鑰保護,但也許我只是 看起來不夠硬:) – pepo