CryptoAPIを介してWindowsのスマートカードから抽出したCERT_CONTEXT構造体があります。この構造を、OpenSSLと整合性のあるDERエンコードされたバイト配列に変換する必要があります。私がこれまでに得た最も近い一致は、X509_ASN_ENCODINGとCERT_INFO構造を入力として受け取るX509_CERT_TO_BE_SIGNED修飾子を使用するCryptEncodeObjectを介したものです。
問題は、 OpenSSLi2d_X509関数によって生成された出力と一致しないことです。2048ビットのx509証明書を入力として使用すると、OpenSSLは1789バイトのエンコードされた出力を生成し、WindowsCryptoAPIは1638バイトのエンコードされた出力を生成します。
私が見ることができる唯一のオプションは、 CERT_CONTEXT構造体からの値を使用してその場でX509証明書を作成し、結果のオブジェクトをi2d_X509関数で直接エンコードすることです。これに関する唯一の問題は、スマートカードから秘密鍵を抽出できないことです。そのため、x509証明書作成ルーチンで問題が発生する可能性があります。
誰かがこれらの問題についての洞察/アドバイス/ヒントを提供することができれば、私は大いに義務づけられるでしょう。