Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.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_Openssl_Cryptoapi_Wincrypt - Fatal编程技术网

C 如何获取链中的下一个证书

C 如何获取链中的下一个证书,c,openssl,cryptoapi,wincrypt,C,Openssl,Cryptoapi,Wincrypt,我想从Windows证书存储中获取父证书(或链中的所有证书)(假设我知道最终证书的位置)。我需要获得每一个,以便构建自己的自定义X509\u存储(使用OpenSSL) 我认为适当的做法是: 使用CertFindCertificateInstaller获取第一个证书(完成) 使用CertGetCertificateChain获取证书链(完成) 从链(?)中提取证书 对于链中的每个证书,使用d2i\u X509(完成)将其转换 或 使用CertFindCertificateInstaller获取第一

我想从Windows证书存储中获取父证书(或链中的所有证书)(假设我知道最终证书的位置)。我需要获得每一个,以便构建自己的自定义
X509\u存储
(使用OpenSSL)

我认为适当的做法是:

  • 使用CertFindCertificateInstaller获取第一个证书(完成)
  • 使用
    CertGetCertificateChain
    获取证书链(完成)
  • 从链(?)中提取证书
  • 对于链中的每个证书,使用
    d2i\u X509
    (完成)将其转换
  • 使用CertFindCertificateInstaller获取第一个证书(完成)
  • 获取父证书(如果存在)(?)
  • 使用d2i\U X509将其转换,转到2。(已完成)
  • 然后创建商店


    然后要回答的问题是-如何使用Windows证书存储获取父证书或链中的所有证书?我可能在这里遗漏了一些或多或少的神秘功能。

    CertFindCertificateInstant
    输出一个链上下文时,可以使用漂亮的结构访问其成员:

    chainContext->rgpChain[0]->rgpElement[iCertIndex]->pCertContext->pbcertcoded


    iCertIndex
    介于
    0
    (结束证书)和
    chainSize-1
    (自签名根证书)之间时。

    CertFindCertificateInstant
    输出链上下文时,可以使用漂亮的结构访问其成员:

    chainContext->rgpChain[0]->rgpElement[iCertIndex]->pCertContext->pbcertcoded

    其中,
    iCertIndex
    介于
    0
    (结束证书)和
    chainSize-1
    (自签名根证书)之间