私は、Windows上のスマートカードからCryptoAPI経由で抽出したCERT_CONTEXT構造を持っています。この構造体をOpenSSLと一貫性のあるDERでエンコードされたバイト配列に変換する必要があります。私がこれまでに得た最も近いマッチは、X509_ASN_ENCODINGとCERT_INFO構造体を入力とするX509_CERT_TO_BE_SIGNEDモディファイアを使用してCryptEncodeObject経由です。Windows CryptoAPIとOpenSSL x509のフォーマット間の変換
問題は、OpenSSL i2d_X509機能によって生成された出力と一致しないことです。 2048ビットx509証明書を入力として使用すると、OpenSSLは1789バイトのエンコード出力を生成し、Windows CryptoAPIは1638バイトのエンコード出力を生成します。
私が見ることができる唯一の選択肢は、CERT_CONTEXT構造からの値を使用してフライでX509証明書を作成し、結果のオブジェクトを直接i2d_X509関数でエンコードすることです。この問題の唯一の問題は、スマートカードから秘密鍵を抽出できないため、x509証明書作成ルーチンで問題が発生する可能性があることです。
誰もがこれらの問題に洞察力/アドバイス/ヒントを提供できる場合、私は多くの義務があります。
Argh !,私の目の前で、全体の時間:)、ありがとう、私は決してこれを見つけたことがないだろう、私は自分の心はCryptEncodeObject関数を使用して設定していた。私は秘密鍵は必要ありません。私は署名操作のソースデータとして公開鍵エンコーディングを使用しています。 –