BouncyCastle を使用して楕円曲線 DSA 署名のキー ペアを作成し、RFC4050 に準拠した XMLString を使用して公開キーを ECDsaCng にインポートすることができました。今、秘密鍵も移動したいのですが、解決策を見つけることができませんでした。私が得た最も近いものは、CngKey.Import を使用することです。
CngKey.Import は PKCS#8 形式をサポートしているため、キーを有効な pkcs8 に入れることができれば機能します。残念ながら、次のコードはまったく機能しません。
var privatekey = (ECPrivateKeyParameters) keyPair.Private;
var pkinfo = PrivateKeyInfoFactory.CreatePrivateKeyInfo(privatekey);
byte[] pkcs8Blob = pkinfo.GetDerEncoded();
var importedKey = CngKey.Import(pkcs8Blob, CngKeyBlobFormat.Pkcs8PrivateBlob);
これにより例外がスローされます。
System.Security.Cryptography.CryptographicException: ASN1 の不適切なタグ値が見つかりました。
私が知る限り、GetDerEncoded は有効な Pkcs8 blob を返すはずです。
BouncyCastle で作成された秘密鍵を ECDsaCng オブジェクトで使用するにはどうすればよいですか?