Преобразование между форматами Windows CryptoApi и OpenSSL X509

StackOverflow https://stackoverflow.com/questions/4866672

Вопрос

у меня есть Cert_context Структура, которую я извлекал с смарт -карты на Windows через Cryptoapi. Мне нужно преобразовать эту структуру в кодированный байтовый массив DER, который согласуется с OpenSSL. Ближайший матч, который у меня до сих пор - через Cryptencodeobject Используя x509_asn_encoding и модификатор x509_cert_to_be_signed, который принимает Cert_info структура как вход.

Проблема в том, что он не совпадает с выводом, созданным OpenSSL i2d_x509 функция Используя 2048 -битный сертификат X509 в качестве входного ввода, OpenSSL производит 1789 байтов кодируемого выхода, в то время как Windows CryptoApi производит 1638 байтов кодированного вывода.

Единственный вариант, который я могу увидеть, - это создать сертификат x509 на лету, используя значения из Cert_context структура и кодируют полученный объект непосредственно с i2d_x509 функция Единственная проблема в этом заключается в том, что я не могу извлечь личный ключ из смарт -карты, поэтому это может вызвать проблемы с процедурами создания сертификатов X509.

Если кто -то может предоставить какое -либо понимание/советы/советы в эти вопросы, я был бы очень обязан.

Это было полезно?

Решение

Кодированный сертификат DER может быть получен из (CTX-> PBCERTENCODED, CTX-> CBCERTENCODED), где CTX является объектом PCCERT_CONTEXT. Тем не менее, вы не сможете восстановить личный ключ.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top