問題タブ [cng]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Microsoft 暗号化 API を使用して、バイト ストリームから ECDSA キーを作成できますか?
そのため、ライセンス ファイルの署名付きハッシュを検証するために、どの暗号化 C++ ライブラリを使用するかを考えています (C# で同等の方法を既に見つけました)。
CNG に関する Microsoft のドキュメントを読むと、RSA キーでは可能であるにもかかわらず、バイト ストリームからコードで ECDSA キーを生成することはできないようです (100% 確実ではないと思います)。
コード バイト ストリームの生成が必要だったので、crypto++ を調べて、テスト スイートをコンパイルすることができましたが、cryptolib.lib は 90 メガバイトの特大サイズであり、基本的なことをしようとしているだけで多数のリンク エラーに直面しています。そのため、今は crypto++ にはあまり熱心ではありません。
したがって、デスクトップ Windows OS で Microsoft が出荷したものを使用することに戻りたいのですが、コード バイトストリームで生成されたキーがないという元の問題に戻ります。
専門家は、これが本当に不可能であることを確認できますか? また、代替案を提案してもらえますか。長い (2048?) キーを使用して RSA にフォールバックできます。
次のコードは、コンパイルして実行します。これは、MSDN の記事 - Signing Data with CNG にあります。適応できるかどうかが気になりました。このコードは、(a) オンザフライで ECDSA キーを作成しますか (b) ハッシュに署名しますか (c) キーを証明書ストアに保存します (d) キーを取得し、署名付きハッシュを検証します。もしそうなら、それはデモコードだと思います。私が必要とするのは、その場で作成されたものではなく、ハードコードされた ECDSA キーの例です。
明確にするために、私は 384 ビットを目指しており、OpenSsl および C# との互換性のために、curvename は NIST 推奨の曲線secp384r1 – {1.3.132.0.34}
です。また、SHA256 ハッシュを 2 回使用します (BitCoin と同様)。