Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按应用程序策略OID定位证书_C#_.net_Security_X509certificate2 - Fatal编程技术网

C# 按应用程序策略OID定位证书

C# 按应用程序策略OID定位证书,c#,.net,security,x509certificate2,C#,.net,Security,X509certificate2,我的个人证书存储中安装了两个X509证书,希望通过应用程序策略检索证书 我使用以下代码来实现这一点: public X509Certificate2 LocateCertificate(Oid oid) { var store = new X509Store(Store.My, StoreLocation.CurrentUser); store.Open(OpenFlags.ReadOnly); try { var certificates =

我的个人证书存储中安装了两个X509证书,希望通过应用程序策略检索证书

我使用以下代码来实现这一点:

public X509Certificate2 LocateCertificate(Oid oid)
{
    var store = new X509Store(Store.My, StoreLocation.CurrentUser);
    store.Open(OpenFlags.ReadOnly);

    try
    {
        var certificates = store.Certificates.Find(X509FindType.FindByApplicationPolicy, oid.Value, true);
        if(certificates.Count != 1)
        {
            throw new CryptographicException(string.Format("Expected one certificate, found {0}", certificates.Count);
        }
        return certificates[0];
    }
    finally
    {
        store.Close();
    }
}
当两个已安装的X509证书具有不同的扩展密钥使用值时,如果提供了有效的OID,上述方法将成功检索正确的证书。但是,如果一个证书未设置其扩展密钥用法属性,则查询也会将其与正确的证书一起返回。我希望防止退回具有以下内容的证书:

  • 设置的扩展密钥使用值不正确
  • 未设置扩展密钥使用值
  • 任何帮助都将受到感谢