質問

私は持っています cert_context Cryptoapiを介してWindowsのスマートカードから抽出した構造。この構造をOpenSSLと一致するDerエンコードされたバイト配列に変換する必要があります。私がこれまでに持っている最も近い試合は通過です CryptencodeObject X509_ASN_ENCODINGとX509_CERT_TO_BE_SIGNED MODIFIERを使用します 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