Я экспортирую ключ в формате CngKeyBlobFormat.Pkcs8PrivateBlob
, затем пытаюсь импортировать эту информацию в новый CngKey, а затем снова пытаюсь экспортировать новый ключ. Проблема в том, что когда вы просто импортируете ключ с помощью CngKey.Import()
, вы не можете выбрать ни параметры, ни имя ключа, поэтому я не могу экспортировать его снова, так как параметры по умолчанию не позволяют вам это сделать. Поэтому я написал следующий код:
// Import key into RSACng rsa
var key = rsa.Key.Export(CngKeyBlobFormat.Pkcs8PrivateBlob);
CngProvider cp = new CngProvider("NewProvider");
CngKeyCreationParameters ckcp = new CngKeyCreationParameters() { ExportPolicy=CngExportPolicies.AllowPlaintextExport, Provider=cp};
ckcp.Parameters.Add(new CngProperty(CngKeyBlobFormat.Pkcs8PrivateBlob.Format, key, CngPropertyOptions.None));
CngKey cngKey2 = CngKey.Create(CngAlgorithm.Rsa, "OldKey", ckcp);
RSACng rsa2 = new RSACng(cngKey2);
var exportedKey = rsa2.Key.Export(CngKeyBlobFormat.Pkcs8PrivateBlob);
// exportedKey.Equals(key) == true
Я получаю сообщение об ошибке CngKey.Create
:
System.Security.Cryptography.CryptographicException: «Неизвестная ошибка «-1073741275».