Другой способ создания цифровой подписи с использованием закрытого ключа (который находится на смарт-карте с сертификатом, установленным в локальном хранилище сертификатов) в .NET Framework, отличном от этого, потому что я понятия не имею, как узнать имя контейнера ключей (и, похоже, никто не делает этого)?Способы генерации цифровой подписи с .NET Framework
CspParameters^ cspa = gcnew CspParameters(ProviderType, ProviderName, keyContainerName, cryptoSecurityKey, securityString);
RSACryptoServiceProvider^ csp = gcnew RSACryptoServiceProvider(cspa);
csp.SignHash()
Я так понимаю, если один инициализирует CspParameters, без keyContainerName, Crypto Provider не имеет возможности сказать, что сертификат один хочет использовать для подписания, поэтому он просто не будет работать. Я искал сеть для информации, и никто не нашел (кроме нескольких вопросов без ответа). Единственные примеры, которые я нашел, используют строки типа «example», «test» для keyContainerName. В случае программы, которая будет использоваться множеством людей с большим количеством сертификатов и смарт-карт, это бесполезно, потому что вам нужен метод, который смотрит на выбранный сертификат и определяет его имя контейнера (например, certutils.exe) и затем создает CspParameters, RSACryptoServiceProvider и затем подписывает. Так что теперь это невозможно.
Итак, каковы другие способы генерации цифровой подписи со смарт-картой в .NET Framework?
Скопируйте/вставьте вопрос о своем названии в поле поиска Google, сделайте 2-й удар. У этого есть хороший фрагмент кода, который показывает вам, как использовать RSAPKCS1SignatureFormatter –
На самом деле это был не второй хит в моем случае, но я нашел это. Спасибо! –
Есть ли идеи о том, как передать пароль RSACryptoServiceProvider, если вы хотите избежать диалогового окна ввода PIN-кода по умолчанию и ввести его другим способом? –