Статус: Новичок
Группы: Участники
Зарегистрирован: 07.02.2024(UTC) Сообщений: 3 Откуда: Москва
|
Добрый день. Мы проходим API-интеграцию с банком и появилась необходимость подписывать ежедневные отчеты, полученные из банка по API, с помощью УКЭП. В инструкции, полученной от банка, содежится следующее: Цитата:Полученный отчёт подпишите с помощью УКЭП и передайте в банк отсоединённую подпись в формате Base64. Пример того как можно подписать данные см. ниже.
cryptcp.x64.exe -sign -f cert2.cer -dn "7840473679" -detached -pin password123 test.txt
Хотим автоматизировать подписание отчетов на C#, но не понимаем, какие есть варианты. Саму подпись с токена невозможно экспортировать, а .cer файл, который экспортиуется через cptools содержит только публичную часть ключа. Реализуемя ли вообще наша затея или единственный вариант - подписывать все отчеты вручную?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,322 Сказал «Спасибо»: 549 раз Поблагодарили: 2208 раз в 1723 постах
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 07.02.2024(UTC) Сообщений: 3 Откуда: Москва
|
Спасибо за ва ответ. Я пробовал как в примере: Код:Initializer.Initialize();
var x509 = new X509Certificate2(File.ReadAllBytes(@"D:\certificate.cer"));
var contentInfo = new ContentInfo(Encoding.UTF8.GetBytes(Guid.NewGuid().ToString()));
var signedCms = new SignedCms(contentInfo, true);
var cmsSigner = new CmsSigner(x509);
signedCms.ComputeSignature(cmsSigner);
var signature = signedCms.Encode();
Console.WriteLine($"Signature: {Convert.ToBase64String(signature)}");
Но получаю ошибку: Цитата:Could not determine signature algorithm for the signer certificate. В certificate.cer, экпортированном через cptools, отсутвтвет приватный ключ. Отредактировано пользователем 8 февраля 2024 г. 0:38:18(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,322 Сказал «Спасибо»: 549 раз Поблагодарили: 2208 раз в 1723 постах
|
Все верно, в сертификате никогда и не было приватного ключа.
X509 предлагаю инициировать из найденного сертификата в личном хранилище. |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,322 Сказал «Спасибо»: 549 раз Поблагодарили: 2208 раз в 1723 постах
|
КриптоПро .NET и КриптоПро .NET SDK. примеры SDK\Examples\simple.zip\CMS\cs\DetachedSignature.cs |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,322 Сказал «Спасибо»: 549 раз Поблагодарили: 2208 раз в 1723 постах
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 07.02.2024(UTC) Сообщений: 3 Откуда: Москва
|
Получилось подписать файл с помощью представленного выше кода на машине, где установлен этот сертификат. Теперь основной вопрос: как все это завернуть в Docker контейнер? Ведь сертификат с приватным ключом с машины экспортировать нельзя.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close