У меня есть пара открытого и закрытого ключей, сгенерированная классом RSACng. Я могу сохранить личный ключ в моем KSP (MicrosoftSoftwareKeyStorageProvider) на локальном компьютере -> (Данные программы-> Крипто-> RSA-> Ключи). Но я не могу сохранить открытый ключ, сгенерированный RSACng. Как сохранить открытый ключ в RSACng для KSP (MicrosoftSoftwareKeyStorageProvider)?
Я уже пытался сохранить открытый ключ с помощью CngKey, но он выдает мне сообщение «Операция не поддерживается». Пожалуйста, найдите код ниже.
public static void SaveKeyPairToKSP(KeyGenerationResult keyData, string keyName)
{
var myKSP = CngProvider.MicrosoftSoftwareKeyStorageProvider;
const bool MachineKey = true;
if (!CngKey.Exists(keyName, myKSP))
{
var keyParams = new CngKeyCreationParameters
{
ExportPolicy = CngExportPolicies.AllowArchiving,
KeyCreationOptions = (MachineKey) ? CngKeyCreationOptions.MachineKey : CngKeyCreationOptions.None,
Provider = myKSP
};
keyParams.Parameters.Add(new CngProperty("Length", BitConverter.GetBytes(keyData.KeySize), CngPropertyOptions.None));
keyParams.Parameters.Add(new CngProperty(CngKeyBlobFormat.GenericPrivateBlob.Format, keyData.PrivateBytes, CngPropertyOptions.Persist));
//Here is my public key that i want to store in my KSP
keyParams.Parameters.Add(new CngProperty(CngKeyBlobFormat.GenericPublicBlob.Format, keyData.PublicBytes, CngPropertyOptions.Persist));
CngKey.Create(CngAlgorithm.Rsa, keyName, keyParams);
}
}