Цифровая подпись отчётов в PDF-формате

Обсуждение Stimulsoft Reports.NET
Eugene A. Bykov
Сообщения: 52
Зарегистрирован: 28 июн 2006, 05:34
Откуда: Ekaterinburg, Russia

Цифровая подпись отчётов в PDF-формате

Сообщение Eugene A. Bykov »

Добрый день, подскажите, пожалуйста, имеется ли в планах на будущее в генераторе отчётов добавить возможность цифровой подписи документов, экспортированных, в частности, в PDF? Если да, то в какие ориентировочно сроки? Если нет, подскажите, пожалуйста, в какой части или частях исходных кодов следует искать код для доработки, отвечающий за настройку параметров экспорта в PDF?
Спасибо!
Pavel
Сообщения: 67
Зарегистрирован: 10 май 2007, 11:24

Цифровая подпись отчётов в PDF-формате

Сообщение Pavel »

Подскажите пожалуйста, что вы подразумеваете под цифровой подписью, в каком виде ее реализовать, где можно посмотреть работающий пример, тот который нужен вам?

Спасибо.
Eugene A. Bykov
Сообщения: 52
Зарегистрирован: 28 июн 2006, 05:34
Откуда: Ekaterinburg, Russia

Цифровая подпись отчётов в PDF-формате

Сообщение Eugene A. Bykov »

Pavel писал(а):где можно посмотреть работающий пример
Добрый день, к сожалению, работающего примера в том виде, в каком нам бы хотелось, пока что не существует. Желаемый результат - автоматическая ЭЦП генерируемых PDF-отчётов с помощью сертификатов ГОСТ (в частности, поддержку сертификатов ГОСТ осуществляет криптопровайдер КриптоПро www.cryptopro.ru).
К примеру

Код: Выделить всё

StiReport.ResponseAsPdf(..., bool generateSignature, certificate signaturePrivateKey);
Если рассматривать неавтоматизированный вариант, то можно исполльзовать Adobe Acrobat Professional (в частности, версии 7). В меню Acrobat это Document -> Digital Signatures -> Sign This Document. Данный вид подписи не является автоматическим, однако сущесвует спецификация формата PDF, в которой ЭЦП описана. Мы готовы оплатить разработку.
Спасибо!
Vital
Сообщения: 647
Зарегистрирован: 09 июн 2006, 12:23

Цифровая подпись отчётов в PDF-формате

Сообщение Vital »

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

Спасибо.
Vital
Сообщения: 647
Зарегистрирован: 09 июн 2006, 12:23

Цифровая подпись отчётов в PDF-формате

Сообщение Vital »

Вроде бы со стандартным adobe криптопровайдором все получилось. Я думаю скорей всего ответ будет положительный.
Vital
Сообщения: 647
Зарегистрирован: 09 июн 2006, 12:23

Цифровая подпись отчётов в PDF-формате

Сообщение Vital »

Здравствуйте!

Мы реализовали поддержку цифровой подписи для экспорта в pdf. Проверьте пожалуйста следующий пререлиз билд.

Спасибо.
annasuper25
Сообщения: 3
Зарегистрирован: 04 авг 2016, 14:46

Re: Цифровая подпись отчётов в PDF-формате

Сообщение annasuper25 »

Добрый день!

Прочитала в статье https://www.stimulsoft.com/ru/news/stim ... 2-released, что в версии 2014.2 появилась возможность добавить электронную подпись при экспорте отчетов в PDF.

Подскажите пожалуйста, как настроить генерацию подписи в Стимулсофте, не могу найти в интерфейсе упоминаний о CryptoPro в версиях 2016.2, 2016.3.

И возможно ли настроить ЭЦП для справочника подписантов? То есть в документ будет передаваться некий ключ подписанта (гуид, комбинация цифр, код) - и в зависимости от неё генерироваться своя ЭЦП для этого подписанта. Что для этого нужно сделать, как это настроить, помогите пожалуйста.
Ivan
Сообщения: 641
Зарегистрирован: 10 авг 2006, 05:40
Откуда: Stimulsoft Office

Re: Цифровая подпись отчётов в PDF-формате

Сообщение Ivan »

Здравствуйте.
annasuper25 писал(а):Прочитала в статье https://www.stimulsoft.com/ru/news/stim ... 2-released, что в версии 2014.2 появилась возможность добавить электронную подпись при экспорте отчетов в PDF.
Возможность добавить стандартную ЭЦП появилась в версии 2008.1.
В версии 2014.2 появилась поддержка российского национального стандарта формирования и проверки электронной цифровой подписи ГОСТ Р 34.10-2012, который поддерживается с помощью СКЗИ (средства криптографической защиты информации) "КриптоПро CSP".
annasuper25 писал(а):Подскажите пожалуйста, как настроить генерацию подписи в Стимулсофте, не могу найти в интерфейсе упоминаний о CryptoPro в версиях 2016.2, 2016.3.
По своей сути ЭЦП - это хэш документа, который зашифрован с помощью специального ключа и записан в этот же документ.
В зависимости от стандарта используются разные алгоритмы хэширования и разные ключи шифрования.
Ключи хранятся в сертификатах, по свойствам сертификата можно определить, для какого алгоритма предназначен этот сертификат.
В нашем продукте алгоритм для КриптоПро выбирается автоматически, если для подписи используется соответствующий сертификат.
annasuper25 писал(а):И возможно ли настроить ЭЦП для справочника подписантов? То есть в документ будет передаваться некий ключ подписанта (гуид, комбинация цифр, код) - и в зависимости от неё генерироваться своя ЭЦП для этого подписанта. Что для этого нужно сделать, как это настроить, помогите пожалуйста.
Если мы правильно поняли вашу задачу, то у вас для каждого клиента есть соответствующий сертификат, который вы хотите использовать при подписи документов для этого клиента.
Выбор сертификата происходит при экспорте документа в формат pdf. Есть три варианта:
1. Сертификат хранится в хранилище сертификатов Windows. Выбор нужного производится пользователем с помощью системного меню выбора сертификата, которое отображается во время экспорта документа.
2. Сертификат хранится в хранилище сертификатов Windows. В настройках экспорта указывается SubjectName, по которому производится поиск сертификата из хранилища.
3. Сертификат передаётся прямо в настройках экспорта в виде массива байтов.
Программно можно реализовать второй и третий варианты. Но при этом экспорт должен быть не из вьювера отчетов, а из вашего кода.

Спасибо.
annasuper25
Сообщения: 3
Зарегистрирован: 04 авг 2016, 14:46

Re: Цифровая подпись отчётов в PDF-формате

Сообщение annasuper25 »

Если мы правильно поняли вашу задачу, то у вас для каждого клиента есть соответствующий сертификат, который вы хотите использовать при подписи документов для этого клиента.
Выбор сертификата происходит при экспорте документа в формат pdf. Есть три варианта:
1. Сертификат хранится в хранилище сертификатов Windows. Выбор нужного производится пользователем с помощью системного меню выбора сертификата, которое отображается во время экспорта документа.
2. Сертификат хранится в хранилище сертификатов Windows. В настройках экспорта указывается SubjectName, по которому производится поиск сертификата из хранилища.
3. Сертификат передаётся прямо в настройках экспорта в виде массива байтов.
Программно можно реализовать второй и третий варианты. Но при этом экспорт должен быть не из вьювера отчетов, а из вашего кода.
Да, верно, задача именно такова.
Но совершенно непонятно, как реализовать хоть один из вариантов.

1) Что за системное меню выбора сертификата? Где оно находится, где отображается во время экспорта документа? И что подразумевается под "экспортом" документа? Построение, рендер, печать?
2) Где располагаются настройки экспорта и настройка SubjectName? В самом интерфейсе Стимулсофт или же вы имеете в виду наш внешний код, вызывающий рендер отчета? Если можно, приведите пример кода или скриншот интерфейса, где настраивается эта настройка.
3) Тоже вопрос - Где располагаются настройки экспорта? И о каком коде здесь идет речь? Вкладка "Код" в Stimulsoft Designer или же внешний код, вызывающий на рендер ПФ?

Буду очень признательна за ответы и за примеры. Спасибо!
Ivan
Сообщения: 641
Зарегистрирован: 10 авг 2006, 05:40
Откуда: Stimulsoft Office

Re: Цифровая подпись отчётов в PDF-формате

Сообщение Ivan »

Здравствуйте.
Что подразумевается под "экспортом" документа? Построение, рендер, печать?
Экспорт - это сохранение построенного (отрендеренного) документа в файл другого программного продукта - Word, Excel, AdobeAcrobat и т.п.
В данном контексте - сохранение готового отчета в файл PDF.

Далее, надо определиться, как вы будете экспортировать файлы: вручную из вьювера (каждый файл отдельно) или из кода своего приложения (пакетная обработка).
Также, как у вас хранятся сертификаты пользователей: в хранилище Windows или в виде отдельных файлов ?
Если в виде файлов, то экспорт надо делать только из кода вашего приложения.

При экспорте из вьювера появляется окошко настроек экспорта. Снизу располагается кнопка "Digital Signature" (ЭЦП), при нажатии которой появляется маленькое всплывающее меню с тремя опциями.
Первая галочка включает цифровую подпись файла.
Вторая галочка определяет, как будет выбираться сертификат для подписи.
Если галочка установлена - то в процессе экспорта файла отобразится системное меню (Crypto UI), в котором можно выбрать сертификат из хранилища сертификатов Windows.
Если галочка снята - то активируется третье поле, где надо ввести SubjectName - это или имя сертификата, или имя пользователя из сертификата (атрибут CN), по этому имени будет производиться поиск сертификата в хранилище Windows.
На прилагаемом скриншоте справа изображено системное окошко выбора сертификата на Windows 10. Для других версий windows оно отличается.
menu1.png
menu1.png (54.68 КБ) 8774 просмотра
При экспорте отчета из кода вашего приложения сначала надо построить отчет:

Код: Выделить всё

StiReport report = new StiReport();
report.Load("test.mrt");
report.Render();
Затем экспортируем отчет. Сертификат тоже можно выбрать вручную:

Код: Выделить всё

StiPdfExportSettings pdfSettings = new StiPdfExportSettings();
pdfSettings.UseDigitalSignature = true;
pdfSettings.GetCertificateFromCryptoUI = true;
report.ExportDocument(StiExportFormat.Pdf, "test.pdf", pdfSettings);
Хотя обычно при экспорте из кода это делают "тихо", т.е. выбирают сертификат по имени:

Код: Выделить всё

StiPdfExportSettings pdfSettings = new StiPdfExportSettings();
pdfSettings.UseDigitalSignature = true;
pdfSettings.GetCertificateFromCryptoUI = false;
pdfSettings.SubjectNameString = "your_subjectName";
report.ExportDocument(StiExportFormat.Pdf, "test.pdf", pdfSettings);
Если сертификаты хранятся в отдельных файлах, то сразу передаём нужный сертификат в настройках экспорта:

Код: Выделить всё

StiPdfExportSettings pdfSettings = new StiPdfExportSettings();
pdfSettings.UseDigitalSignature = true;
pdfSettings.CertificateData = File.ReadAllBytes("certificate.pfx");
pdfSettings.CertificatePassword = "your_password";
report.ExportDocument(StiExportFormat.Pdf, "test.pdf", pdfSettings);
Спасибо.
Ответить