Что такое обновленная версия SetPinForPrivateKey в .NET 6?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Гость
 Что такое обновленная версия SetPinForPrivateKey в .NET 6?

Сообщение Гость »


Мне нужно установить PIN-код для смарт-карты. Я использовал метод расширения, указанный ниже, в .NET Framework 4.8. Затем я решил обновить свое приложение, используя .NET 6, и застрял. Проблема в том, что строка:

Ключ RSACryptoServiceProvider = (RSACryptoServiceProvider)certificate.PrivateKey; В .NET 6 тип возвращаемого значения certificate.PrivateKey — System.Security.Cryptography.RSACng, и этот метод устарел. Я обнаружил, что в .NET 6 есть метод certificate.GetRSAPrivateKey(). но тип возвращаемого значения – RSA.

Есть ли обновленный код для .NET 6 или можно ли преобразовать RSACng в RSACryptoServiceProvider?
с использованием System.Security.Cryptography; использование System.Security.Cryptography.X509Certificates; использование System.Text; пространство имен X509CertExtension { внутренний статический класс X509Certificate2Extension { public static bool SetPinForPrivateKey (этот сертификат X509Certificate2, строковый PIN-код) { логический флаг = ложь; пытаться { // Здесь у меня ошибка в .NET 6 // System.InvalidCastException: 'Невозможно привести объект типа 'System.Security.Cryptography.RSACng' к типу 'System.Security.Cryptography.RSACryptoServiceProvider'.' Ключ RSACryptoServiceProvider = (RSACryptoServiceProvider)certificate.PrivateKey; IntPtr провайдерХандле = IntPtr.Zero; byte[] pinBuffer = Encoding.ASCII.GetBytes(pin); SafeNativeMethods.Execute((Func)(() => SafeNativeMethods.CryptAcquireContext(refProviderHandle, key.CspKeyContainerInfo.KeyContainerName, key.CspKeyContainerInfo.ProviderName, key.CspKeyContainerInfo.ProviderType, SafeNativeMethods.CryptContextFlags.Silent))); SafeNativeMethods.Execute((Func)(() => SafeNativeMethods.CryptSetProvParam(providerHandle, SafeNativeMethods.CryptParameter.KeyExchangePin, pinBuffer, 0U))); SafeNativeMethods.Execute((Func)(() => SafeNativeMethods.CertSetCertificateContextProperty(certificate.Handle, SafeNativeMethods.CertificateProperty.CryptoProviderHandle, 0U,ProviderHandle))); флаг = правда; } поймать (Исключение ex) { } флаг возврата; } } }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как может отображаться обновленная версия элемента формы?
    Anonymous » » в форуме Php
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Как может отображаться обновленная версия элемента формы?
    Anonymous » » в форуме Html
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Функция Azure, обновленная до .NET 8, завершается с ошибкой «Не удалось загрузить файл или сборку «System.Memory.Data»».
    Anonymous » » в форуме C#
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous
  • Обновленная ActiveMQ до 5.18.6, log4j.properties не обрабатывается
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Обновленная ActiveMQ Classic до 5.18.6, log4j.properties не обрабатывается
    Anonymous » » в форуме JAVA
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»