Я создал пары ключей для подписи DSA эллиптической кривой, используя BouncyCastle и сумел импортировать открытый ключ в ECDsaCng, используя XMLString, присоединенный к RFC4050. Теперь я хочу также переместить закрытый ключ и не нашел решения. Самое близкое, что я получил, это использовать CngKey.Import.Экспорт секретного ключа EC из BouncyCastle и импорт в CngKey или ECDsaCng?
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, насколько я могу судить.
Как я могу использовать закрытый ключ, созданный с помощью BouncyCastle в объекте ECDsaCng?