是否可以使用openssl API创建与Windows加密API兼容的证书缓冲区?

时间:2016-03-09 06:31:17

标签: cryptography openssl

我们使用以下openssl API从个人信息交换文件中检索证书

ret = PKCS12_parse ( p12, "mqroot", &pkey, &cert, &ca );
        if ( 0 == ret )
        {
            printf ( "\tError: PKCS12_parse %d\n", GetLastError( ) );
            hResult = GetLastError ( );
            __leave;
        }// if

此证书是否可以转换为与Windows CAPI兼容的任何数据类型。

hCertStore = PFXImportCertStore( &data, wszPassword, CRYPT_EXPORTABLE | CRYPT_USER_KEYSET );
        if ( !hCertStore )
        {
            hResult = GetLastError();
            __leave;
        } // if
pUsrCertContext = CertEnumCertificatesInStore(
            hCertStore,
            pUsrCertContext );
        if( !pUsrCertContext )
        {
            hResult = GetLastError( );
            __leave;
        } // if

使用上述功能,我们将编码的证书数据作为pUsrCertContext获取,并且有任何函数可以使用openssl获取编码的证书数据,以便在其他操作系统中可以忽略Windows API。

1 个答案:

答案 0 :(得分:0)

您可以从OpenSSL获取PEM / DER编码证书,并使用CryptStringToBinary函数将PEM / DER转换为CryptoAPI二进制格式。

另请参阅此post的最底部。