Статус: Новичок
Группы: Участники
Зарегистрирован: 13.07.2021(UTC) Сообщений: 5 Откуда: Ростов-на-Дону Сказал(а) «Спасибо»: 1 раз
|
Нужен пример кода на C# для подписания строки, получаемой из "Честного Знака". Какие библиотеки необходимо установить для этого? С чего можно начать хотя бы? В криптографии не силен. Отредактировано пользователем 13 июля 2021 г. 14:42:02(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Модератор, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 1,193 Сказал(а) «Спасибо»: 100 раз Поблагодарили: 274 раз в 254 постах
|
Добрый день! в 5.0 не выйдет. либо Net 4.8 либо Net Core 3.1 примеры есть на этом форуме. к примеру тут |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 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)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,322 Сказал «Спасибо»: 549 раз Поблагодарили: 2208 раз в 1723 постах
|
Внешнее приложение: cryptcp, текст сохранить в файл, для подписания - указывать отпечаток сертификата.
Документация к приложению командной строки в pdf, на странице загрузки csp 5R2 |
|
1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 13.07.2021(UTC) Сообщений: 5 Откуда: Ростов-на-Дону Сказал(а) «Спасибо»: 1 раз
|
Автор: Андрей * Внешнее приложение: cryptcp, текст сохранить в файл, для подписания - указывать отпечаток сертификата.
Документация к приложению командной строки в pdf, на странице загрузки csp 5R2 Спасибо. Буду пробовать.
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 13.07.2021(UTC) Сообщений: 5 Откуда: Ростов-на-Дону Сказал(а) «Спасибо»: 1 раз
|
В итоге проблема решена. Приложение называется csptest.exe. Для Windows оно находится в папке C:\Program Files\Crypto Pro\CSP\ и устанавливается вместе с Crypto Pro. Если нужны подробности, то могу осветить вкратце. Там есть определенные тонкости с применением ключей. Перед написанием программы, проверьте наличие приложения. Отредактировано пользователем 17 марта 2022 г. 15:54:52(UTC)
| Причина: Не указана
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 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)
| Причина: Не указана
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 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(); }
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 05.07.2018(UTC) Сообщений: 467
Сказал(а) «Спасибо»: 43 раз Поблагодарили: 69 раз в 61 постах
|
Через DLLImport не пробовали capilite "подключать" и вызывать функции CryptAcquireContextA, CryptCreateHash, CryptHashData и CryptSignHashA, а CAdES формировать через другую либу (или через тот же capilite)? Отредактировано пользователем 23 декабря 2022 г. 10:51:38(UTC)
| Причина: Не указана |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close