我有一个CERT_CONTEXT结构,它是我通过CryptoAPI从Windows上的智能卡中提取出来的。我需要将此结构转换为与OpenSSL一致的DER编码字节数组。到目前为止,我得到的最接近的匹配是通过使用X509_ASN_ENCODING和X509_CERT_TO_BE_SIGNED修饰符的CryptEncodeObject,该修饰符将CERT_INFO结构作为输入。
问题是它与OpenSSL i2d_X509函数产生的输出不匹配。使用2048位x509证书作为输入,OpenSSL产生1789字节的编码输出,而Windows CryptoAPI产生1638字节的编码输出。
我能看到的唯一选择就是使用CERT_CONTEXT结构中的值动态创建一个X509证书,并直接使用i2d_X509函数对结果对象进行编码。唯一的问题是我无法从智能卡中提取私钥,因此这可能会导致x509证书创建例程出现问题。
如果有人能就这些问题提供任何见解/建议/建议,我将不胜感激。
发布于 2011-02-02 03:13:13
DER编码证书可以从( ctx ->pbCertEncoded,ctx->cbCertEncoded)缓冲区获取,其中ctx是一个PCCERT_CONTEXT对象。但是,您仍然无法恢复私钥。
https://stackoverflow.com/questions/4866672
复制相似问题