Как сохранить открытый ключ, созданный RSACng, на локальный компьютер или поставщик хранилища ключей (KSP)? - PullRequest
1 голос
/ 25 апреля 2019

У меня есть пара открытого и закрытого ключей, сгенерированная классом 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);
        }
    }

Но, с приведенным выше кодом, это вызывает исключение «Операция не поддерживается». В случае, если только постоянный ключ добавляется только для сохранения без открытого ключа, код работает нормально.

Ожидаемый результат-> Я хочу сохранить открытый ключ, а также закрытый ключ в моем KSP. фактический результат-> Сохраняется только закрытый ключ. Пожалуйста, помогите мне в том же. Заранее спасибо! Не могли бы вы помочь мне с этим?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...