C# 申请x509证书';Windows My store中的密码

C# 申请x509证书';Windows My store中的密码,c#,x509certificate2,C#,X509certificate2,我可以使用以下代码在Windows My store中获取证书: X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser); store.Open(OpenFlags.IncludeArchived); X509Certificate2Enumerator enumerator = store.Certificates.GetEnumerator(); // then I loop through the

我可以使用以下代码在Windows My store中获取证书:

X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.IncludeArchived);

X509Certificate2Enumerator enumerator = store.Certificates.GetEnumerator();
// then I loop through the enumerator and store the certificates in a list
store.Close();
在我的应用程序中,用户选择一个证书,我必须询问它的密码。如果密码正确,用户可以输入应用程序的选项。我可以使用用户所选文件中的pfx或pkcs12证书执行此操作:

X509Certificate2 cert = new X509Certificate2();

try
{
    cert.Import(File.ReadAllBytes(pathToMyPfxCert), "my password", X509KeyStorageFlags.DefaultKeySet);
}
catch (CryptographicException)
{
    //wrong password! :D
}
但我不确定从Windows My中选择证书时是否可以这样做。当我将Windows My certificates导出到pfx文件并使用错误的密码再次导入它们时,我看到一个加密异常,尖叫着“网络密码无效”,但我没有收到异常,就好像输入了正确的密码一样

请同时告诉我,我是否以错误的方式使用Windows我的证书,或者以一种不是为之设计的方式使用证书(我是x509的新手)

编辑:关于@CryptoGuy评论:

我同意:这有点奇怪,因为它有点实验性:我们想知道Windows My Store证书是否可以用于登录桌面应用程序而不是签署文档。 我的测试证书的配置方式是,在签署文档时,要求用户输入访问私钥的密码:

我用来签署文件并获取此对话框的应用程序是


我想在我的应用程序中也这样做:请求证书的密码(或其私钥的密码)并检查它以登录我的应用程序。

您是否尝试过查看有关
X509
内容的任何文档或在线查找示例。。在这方面你试过什么?@MethodMan:是的,我试过了。当证书来自文件而不是Windows My时,我发现的示例代码要求输入密码。我找到的文档描述了证书的格式和标准。我想将这些证书用于登录目的。用户从列表框中选择证书并将密码写入文本框。如果密码正确,用户可以进入应用程序。在这个过程中有些奇怪。您应该使用登录/密码或客户端证书身份验证过程,并且不应该将它们组合在一起。若用户在您的应用程序中拥有有效的证书,那个么您为什么要询问密码?如果需要密码,则不需要为证书浪费资源。您引用的对话框用于不同的目的。它被称为“私钥强保护”,用于保护密钥不被未经授权的使用。它不是身份验证机制。