Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.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# 如何用c查询MS证书颁发机构服务器#_C#_Certificate_Smartcard_X509certificate2_Ca - Fatal编程技术网

C# 如何用c查询MS证书颁发机构服务器#

C# 如何用c查询MS证书颁发机构服务器#,c#,certificate,smartcard,x509certificate2,ca,C#,Certificate,Smartcard,X509certificate2,Ca,我正在尝试用c查询ca# 我需要做两件事: 获取已颁发证书的列表并对其进行迭代 获取crl或已吊销证书的列表,并对其进行迭代 我找不到任何api来执行此操作 我尝试通过Active Directory查询certificated,但缺少一些属性 我还尝试通过Microsoft.Clm.Provision Api进行查询,但也没有成功 有什么想法吗 用于通过Active Directory查询的Exmaple DirectoryEntry de = new DirectoryEntry("

我正在尝试用c查询ca#

我需要做两件事:

  • 获取已颁发证书的列表并对其进行迭代

  • 获取crl或已吊销证书的列表,并对其进行迭代

  • 我找不到任何api来执行此操作

    我尝试通过Active Directory查询certificated,但缺少一些属性

    我还尝试通过Microsoft.Clm.Provision Api进行查询,但也没有成功

    有什么想法吗

    用于通过Active Directory查询的Exmaple

        DirectoryEntry de = new DirectoryEntry("LDAP://xxxx", "xxxx\\administrator", "yyyyyy"); 
        DirectorySearcher dsearch = new DirectorySearcher(de);
    
        SearchResultCollection rc = dsearch.FindAll();
    
        X509Certificate[] stt = new X509Certificate[rc.Count];
        List<X509Certificate2> certificatesList = new List<X509Certificate2> { };
    
    
        foreach (SearchResult r in rc)
        {
    
          if (r.Properties.Contains("userCertificate"))
          {
            Byte[] b = (Byte[])r.Properties["userCertificate"][0];  
            cert1 = new X509Certificate2(b);
          }
        }
    
    DirectoryEntry de=newdirectoryEntry(“LDAP://xxxx”、“xxxx\\administrator”、“yyyyy”);
    DirectorySearch dsearch=新的DirectorySearch(de);
    SearchResultCollection rc=dsearch.FindAll();
    X509Certificate[]stt=新的X509Certificate[rc.Count];
    列表证书列表=新列表{};
    foreach(rc中的搜索结果r)
    {
    if(r.Properties.Contains(“用户证书”))
    {
    字节[]b=(字节[])r.Properties[“用户证书”][0];
    cert1=新的X509Certificate2(b);
    }
    }
    
    你必须使用ICEtVIEW COM接口:我也看到了ICertView,但是所有的例子都是C++的,所以我假设这对C是不可用的,在C语言中找不到它,C也可用。只需创建一个
    CertAdmin
    interop库(将COM定义翻译为CLR)并在项目中引用该库即可。感谢您的回复,对不起,这是我的中文:)