我有一个证书文件(后缀为.p7b)放在硬盘上而不是在证书库中,如何从证书文件中取得公钥?一般用cryTo api, 能说出要用到的几个函数吗? 特别是第1步, 如何打开该证书文件?

解决方案 »

  1.   

    不知道你要用证书做什么,打开证书可以用
    HCERTSTORE WINAPI CertOpenStore(
      LPCSTR lpszStoreProvider,
      DWORD dwMsgAndCertEncodingType,
      HCRYPTPROV hCryptProv,
      DWORD dwFlags,
      const void* pvPara
    );
    使用参数CERT_STORE_PROV_FILENAME或者CERT_STORE_PROV_FILE完成,然后你在打开的HCERTSTORE中找到(CertFindCertificateInStore)你所需使用的证书上下文(CERT_CONTEXT),在CERT_CONTEXT中的CERT_INFO结构中你可以找到CERT_PUBLIC_KEY_INFO,这就是你要的公钥。详细你可以在MSDN中找一下这些函数和结构。