У меня есть структура 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.
Если кто-нибудь может дать какие-либо идеи / советы / советы по этим вопросам, я был бы очень признателен.