Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Илья200602  
#1 Оставлено : 2 июня 2020 г. 19:58:10(UTC)
Илья200602

Статус: Новичок

Группы: Участники
Зарегистрирован: 02.06.2020(UTC)
Сообщений: 3
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Здравствуйте.
В Crypto Pro 5 заявлены новые функции работы с ключами rutoken.
Подскажи пожалуйста как найти такие сертификаты с помощью библиотеки Net

Сертификаты экспортируются примерно в таком виде.

имя 68b3d11fd229f0ddabfacaadfdd4fd
уникальное имя SCARD\rutoken_pkcs_39177de4\68b3d11fd229f0ddabfa
FQCN имя \\.\Aktiv Rutoken ECP 0\68b3d11fd229f0ddabfacaadfdd4fd
.....
имя сертификата Компания РК
.....


Offline Илья200602  
#2 Оставлено : 4 июня 2020 г. 12:45:57(UTC)
Илья200602

Статус: Новичок

Группы: Участники
Зарегистрирован: 02.06.2020(UTC)
Сообщений: 3
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Добрый день
Сертификат поиском найти получилось подскажите пожалуйста как с его помощью получить подпись документа
1. Попытка 1
public string SignText(string input)
{
byte[] сontext = Encoding.UTF8.GetBytes(input);
ContentInfo сontentInfo = new ContentInfo(сontext);
SignedCms signedCms = new SignedCms(сontentInfo, true);
CmsSigner signer = new CmsSigner(Certificate);
signedCms.ComputeSignature(signer);
byte[] sign = signedCms.Encode();
return Convert.ToBase64String(sign);
}
System.Security.Cryptography.CryptographicException: Не удается построить цепочку сертификатов для доверенного корневого центра.

2 Попытка 2
public string SignTextEx(string input)
{
CspParameters cp = new CspParameters();
cp.KeyContainerName = Certificate.FriendlyName;
Gost3410CryptoServiceProvider gost = new Gost3410CryptoServiceProvider(cp);
GostSignatureFormatter GostFormatter = new GostSignatureFormatter(gost);
GostSignatureDeformatter GostDeformatter = new GostSignatureDeformatter(gost);
byte[] HashValue = Encoding.UTF8.GetBytes(input);
byte[] SignedHashValue = GostFormatter.CreateSignature(HashValue);
return Convert.ToBase64String(SignedHashValue);

}
System.Security.Cryptography.CryptographicException: Указанный поставщик криптографических услуг (Cryptographic Service Provider, CSP) не поддерживает данный алгоритм ключей.
Offline Андрей *  
#3 Оставлено : 4 июня 2020 г. 12:57:44(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,628
Мужчина
Российская Федерация

Сказал «Спасибо»: 493 раз
Поблагодарили: 2034 раз в 1578 постах
Здравствуйте.

Установите корневой сертификат в хранилище.

В КриптоПРО.NET SDK есть примеры.


Цитата:

cp.KeyContainerName = Certificate.FriendlyName;

В FriendlyName содержится... имя контейнера для CSP?
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Илья200602 оставлено 04.06.2020(UTC)
Offline Андрей *  
#4 Оставлено : 4 июня 2020 г. 12:59:08(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,628
Мужчина
Российская Федерация

Сказал «Спасибо»: 493 раз
Поблагодарили: 2034 раз в 1578 постах
Автор: Илья200602 Перейти к цитате

2 Попытка 2
public string SignTextEx(string input)
{
CspParameters cp = new CspParameters();
cp.KeyContainerName = Certificate.FriendlyName;
Gost3410CryptoServiceProvider gost = new Gost3410CryptoServiceProvider(cp);
GostSignatureFormatter GostFormatter = new GostSignatureFormatter(gost);
GostSignatureDeformatter GostDeformatter = new GostSignatureDeformatter(gost);
byte[] HashValue = Encoding.UTF8.GetBytes(input);
byte[] SignedHashValue = GostFormatter.CreateSignature(HashValue);
return Convert.ToBase64String(SignedHashValue);

}
System.Security.Cryptography.CryptographicException: Указанный поставщик криптографических услуг (Cryptographic Service Provider, CSP) не поддерживает данный алгоритм ключей.



У Вас ключи по ГОСТ 2012, а обращаетесь к CSP, который с ними не работает.

Техническую поддержку оказываем тут
Наша база знаний
Offline Илья200602  
#5 Оставлено : 4 июня 2020 г. 15:08:15(UTC)
Илья200602

Статус: Новичок

Группы: Участники
Зарегистрирован: 02.06.2020(UTC)
Сообщений: 3
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Автор: Андрей * Перейти к цитате
Здравствуйте.

Установите корневой сертификат в хранилище.

В КриптоПРО.NET SDK есть примеры.


Цитата:

cp.KeyContainerName = Certificate.FriendlyName;

В FriendlyName содержится... имя контейнера для CSP?


Спасибо установка корневого сертификата помогла. (Вариант 1 заработал)
Да в френдли нейм записал имя контейнера - В принципе это удобно. И там и там по русски.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.