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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Yuriy.Semenov  
#1 Оставлено : 13 июля 2021 г. 14:41:18(UTC)
Yuriy.Semenov

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

Группы: Участники
Зарегистрирован: 13.07.2021(UTC)
Сообщений: 5
Российская Федерация
Откуда: Ростов-на-Дону

Сказал(а) «Спасибо»: 1 раз
Нужен пример кода на C# для подписания строки, получаемой из "Честного Знака".
Какие библиотеки необходимо установить для этого?
С чего можно начать хотя бы?
В криптографии не силен.

Отредактировано пользователем 13 июля 2021 г. 14:42:02(UTC)  | Причина: Не указана

Offline Санчир Момолдаев  
#2 Оставлено : 14 июля 2021 г. 4:53:33(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 88 раз
Поблагодарили: 223 раз в 211 постах
Добрый день!
в 5.0 не выйдет.
либо Net 4.8 либо Net Core 3.1
примеры есть на этом форуме. к примеру тут
Техническую поддержку оказываем тут
Наша база знаний
Offline Yuriy.Semenov  
#3 Оставлено : 14 июля 2021 г. 8:19:38(UTC)
Yuriy.Semenov

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

Группы: Участники
Зарегистрирован: 13.07.2021(UTC)
Сообщений: 5
Российская Федерация
Откуда: Ростов-на-Дону

Сказал(а) «Спасибо»: 1 раз
Автор: Санчир Момолдаев Перейти к цитате
Добрый день!
в 5.0 не выйдет.
либо Net 4.8 либо Net Core 3.1
примеры есть на этом форуме. к примеру тут


Я вообще в этом деле сундук.
Где можно прочесть про способы подписания строк?
Есть ли документация на эту тему?
Я нашел CoreFX на GitHub, но в dotnet Core 5.0 это дело не работает от слова "совсем", как Вы правильно заметили.
Описание по установке CoreFx кстати не очень внятное.
Например п. 7
Цитата:
Скопировать сборки NetStandard из репозитория NetStandard.Library в локальную директорию nuget ($env:userprofile\.nuget\packages\) с заменой.

Как скопировать? Вместе с папками, отдельно содержимое из каждой папки в одну? И что значит в этом случае "с заменой"?
К сожалению, вернуться к Net Core 3.1 возможности нет...
Не существует ли иных способов подписания строки, через внешние приложения, плагины и т.д?
Типа вызвал внешнее приложение, а в качестве параметров сунул ему строку и ссылку на сертификат.
Заранее благодарен за помощь.

Отредактировано пользователем 14 июля 2021 г. 9:14:42(UTC)  | Причина: Не указана

Offline Андрей *  
#4 Оставлено : 14 июля 2021 г. 10:07:00(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
Внешнее приложение: cryptcp, текст сохранить в файл, для подписания - указывать отпечаток сертификата.

Документация к приложению командной строки в pdf, на странице загрузки csp 5R2
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Yuriy.Semenov оставлено 14.07.2021(UTC)
Offline Yuriy.Semenov  
#5 Оставлено : 14 июля 2021 г. 10:13:34(UTC)
Yuriy.Semenov

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

Группы: Участники
Зарегистрирован: 13.07.2021(UTC)
Сообщений: 5
Российская Федерация
Откуда: Ростов-на-Дону

Сказал(а) «Спасибо»: 1 раз
Автор: Андрей * Перейти к цитате
Внешнее приложение: cryptcp, текст сохранить в файл, для подписания - указывать отпечаток сертификата.

Документация к приложению командной строки в pdf, на странице загрузки csp 5R2


Спасибо. Буду пробовать.
Offline Yuriy.Semenov  
#6 Оставлено : 17 марта 2022 г. 15:53:11(UTC)
Yuriy.Semenov

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

Группы: Участники
Зарегистрирован: 13.07.2021(UTC)
Сообщений: 5
Российская Федерация
Откуда: Ростов-на-Дону

Сказал(а) «Спасибо»: 1 раз
В итоге проблема решена.
Приложение называется csptest.exe.
Для Windows оно находится в папке C:\Program Files\Crypto Pro\CSP\ и устанавливается вместе с Crypto Pro.
Если нужны подробности, то могу осветить вкратце.
Там есть определенные тонкости с применением ключей.
Перед написанием программы, проверьте наличие приложения.

Отредактировано пользователем 17 марта 2022 г. 15:54:52(UTC)  | Причина: Не указана

Offline Yuriy.Semenov  
#7 Оставлено : 13 декабря 2022 г. 11:13:37(UTC)
Yuriy.Semenov

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

Группы: Участники
Зарегистрирован: 13.07.2021(UTC)
Сообщений: 5
Российская Федерация
Откуда: Ростов-на-Дону

Сказал(а) «Спасибо»: 1 раз
Автор: Yuriy.Semenov Перейти к цитате
В итоге проблема решена.
Приложение называется csptest.exe.
Для Windows оно находится в папке C:\Program Files\Crypto Pro\CSP\ и устанавливается вместе с Crypto Pro.
Если нужны подробности, то могу осветить вкратце.
Там есть определенные тонкости с применением ключей.
Перед написанием программы, проверьте наличие приложения.


Отвечаю сам себе.
Может кому-нибудь пригодится.

Порядок действий для "Честного знака" следующий:
1. Подготавливаем данные, куда будем сохранять токен и отпечаток подписи, которой подписываем документ.
2. Get запросом получаем строку для подписи, сохраняем её в файл и запоминаем её uuid.
3. Подписываем строку с помощью утилиты csptest.exe
Для этого запускаем её с ключами:
C:\Program Files\Crypto Pro\CSP\csptest.exe -sfsign -sign -in <файл со строкой для подписи> -my <отпечаток подписи> -out <файл с подписанной строкой> -addsigtime -base64 -add
4. В файле с подписанной строкой удаляем все пробелы и переводы строк.
5. Составляем JSON файл:
{
"uuid" : "<запомненный в п. 2 uuid>",
"data" : "<подписанная строка без пробелов и переводов строк>"
}
5. Post запросом отправляем полученный JSON и в ответ получаем токен.

Код прислать не могу, связан корпоративной этикой.
У меня это дело работает с Net 6.0 и библиотекой RestSharp 108.0.1
Естественно, электронная подпись должна быть зарегистрирована в "Честном знаке" в качестве подписи пользователя личного кабинета.

Отредактировано пользователем 13 декабря 2022 г. 11:15:55(UTC)  | Причина: Не указана

Offline jokerpnz  
#8 Оставлено : 22 декабря 2022 г. 13:17:18(UTC)
jokerpnz

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

Группы: Участники
Зарегистрирован: 22.12.2022(UTC)
Сообщений: 1
Российская Федерация
Откуда: Пенза

Так проще будет

using (var webClient = new WebClient())
{
var authKey = webClient.DownloadString("https://markirovka.crpt.ru/api/v4/true-api/auth/key");
parsed = JObject.Parse(authKey);

authUuid = parsed["uuid"] + string.Empty;
authData = parsed["data"] + string.Empty;
}

//Подписываем строку сертификатом
var signData = Convert.ToBase64String(SignAttached(Encoding.UTF8.GetBytes(authData), cert));
var json = JsonConvert.SerializeObject(new { uuid = authUuid, data = signData });
.....................


public static byte[] SignAttached(byte[] dataToSign, X509Certificate2 certificate)
{
ContentInfo contentInfo = new ContentInfo(dataToSign);
SignedCms cms = new SignedCms(contentInfo, false);
CmsSigner signer = new CmsSigner(certificate);
cms.ComputeSignature(signer);
return cms.Encode();
}
Offline TolikTipaTut1  
#9 Оставлено : 23 декабря 2022 г. 10:44:24(UTC)
TolikTipaTut1

Статус: Активный участник

Группы: Участники
Зарегистрирован: 05.07.2018(UTC)
Сообщений: 467

Сказал(а) «Спасибо»: 43 раз
Поблагодарили: 69 раз в 61 постах
Через DLLImport не пробовали capilite "подключать" и вызывать функции CryptAcquireContextA, CryptCreateHash, CryptHashData и CryptSignHashA, а CAdES формировать через другую либу (или через тот же capilite)?

Отредактировано пользователем 23 декабря 2022 г. 10:51:38(UTC)  | Причина: Не указана

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