およびで使用するために、ECC ベースX509Certificate2
のから に公開/秘密鍵を取得するにはどうすればよいですか?CngKey
ECDsaCng
ECDiffieHellmanCng
現在、署名/暗号化に RSA 2048 ビット キー ペアを使用しています。X509Store
これを行うには、エクスポート不可としてマークされた秘密鍵を使用して、証明書が安全に保存されている場所から証明書を取得します。現在の実装を ECDSA と ECDH を使用するように変換して、同等のセキュリティのためにより小さいキー サイズを使用できるようにしたいと考えています。
openssl を使用して ECC 証明書を正常に生成しました。
openssl ecparam -out private.pem -name prime256v1 -genkey
openssl req -new -key private.pem -x509 -nodes -days 365 -out public.cer
openssl pkcs12 -export -in public.cer -inkey private.pem -out export.pfx
上記で生成された証明書を証明書ストアに正常にインストールしました。拇印でそれらを取得できますが、秘密鍵と公開鍵の暗号化プロバイダーは「アルゴリズムがサポートされていません」という例外をスローします。代わりに、使用ECDsaCng
しECDiffieHellmanCng
て署名/暗号化することになっていることを理解しています。しかし、これらは を扱いCngKey
ます。
秘密鍵をエクスポート可能にする必要があるため、Bouncy Castle はオプションではありません。
CLR SecurityCngKey
はペアを返しますGetCngPrivateKey
が、CLRSecurity によって返されるキーは ECDH キーであるため、ECDsa では使用できません。X509Certificate2
さらに、CLR セキュリティでは、署名の検証のために公開キーだけを取得する方法がありません (署名者の秘密キーを持っていないか、必要としない場合)。
何か案は?私は機知に富んでいます...どんな助けでも大歓迎です。