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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Sergey Grigoriev  
#1 Оставлено : 11 ноября 2019 г. 21:07:36(UTC)
Sergey Grigoriev

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

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

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

В нашем web приложении пользователи подписывают файлы в браузере при помощи ‎КриптоПро ЭЦП Browser plugin.
Есть необходимость перед сохранением открепленной сигнатуры в БД проверить её. Проверку сделали с помощью CAPICOM, но
она не проходит. Ошибка верификации: "Неправильное значение хеша".

В связи с этим возникает несколько вопросов.

1. Возможно ли проверить подпись CADES_BES сделанную в ‎КриптоПро ЭЦП Browser plugin при помощи CAPICOM?
2. Возможно ли подписать данные в ‎КриптоПро ЭЦП Browser plugin не в формате CADES_BES так, чтобы она проходила проверку при помощи CAPICOM?
3. Если все же придется использовать интерфейс COM (cadescom.dll) то где можно взять описание интерфейсов CADESCOM для Delphi? (для CAPICOM я нашел CAPICOM_TLB.pas здесь на форуме)

Файлы подписываются для внутреннего пользования и за пределы организации не уходят.
Delphi 10.2 Tokyo.

Заранее спасибо.
Online Андрей Писарев  
#2 Оставлено : 11 ноября 2019 г. 21:36:33(UTC)
Андрей *

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

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

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

Код приведите, как работаете с CAPICOM.
Тема поднималась много раз.
Техническую поддержку оказываем тут
Наша база знаний
Online Андрей Писарев  
#3 Оставлено : 11 ноября 2019 г. 21:38:52(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
https://www.cryptopro.ru...&m=107336#post107336

пример заполнения Buffer
Техническую поддержку оказываем тут
Наша база знаний
Online Андрей Писарев  
#4 Оставлено : 11 ноября 2019 г. 21:40:42(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
Автор: Sergey Grigoriev Перейти к цитате

3. Если все же придется использовать интерфейс COM (cadescom.dll) то где можно взять описание интерфейсов CADESCOM для Delphi? (для CAPICOM я нашел CAPICOM_TLB.pas здесь на форуме)

Файлы подписываются для внутреннего пользования и за пределы организации не уходят.
Delphi 10.2 Tokyo.

Заранее спасибо.



Он аналогичен CAPICOM, пример выше.

Интерфейс COM

Техническую поддержку оказываем тут
Наша база знаний
Offline Sergey Grigoriev  
#5 Оставлено : 11 ноября 2019 г. 22:03:00(UTC)
Sergey Grigoriev

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

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

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

Код приведите, как работаете с CAPICOM.


То, что подписывается через CAPICOM им же проверяется нормально. И прикрепленная и открепленная подпись. И бинарная и Base64.
А вот с подписью плагина - беда

DMDocSigner.pas (13kb) загружен 14 раз(а).

Online Андрей Писарев  
#6 Оставлено : 11 ноября 2019 г. 22:05:58(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
Автор: Sergey Grigoriev Перейти к цитате
Автор: Андрей Писарев Перейти к цитате

Код приведите, как работаете с CAPICOM.


То, что подписывается через CAPICOM им же проверяется нормально. И прикрепленная и открепленная подпись. И бинарная и Base64.


Пришлите пример бинарный файл и подпись к нему.

Или сами проверьте сторонним софтом.

Техническую поддержку оказываем тут
Наша база знаний
Offline Sergey Grigoriev  
#7 Оставлено : 11 ноября 2019 г. 22:11:09(UTC)
Sergey Grigoriev

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

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

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

Пришлите пример бинарный файл и подпись к нему.
Или сами проверьте сторонним софтом.


Не совсем понял. Файл подписанный CAPICOM'ом? или плагином?
То что подписывается CAPICOM'ом успешно проходит проверку на https://crypto.kontur.ru/verify#

Отредактировано пользователем 11 ноября 2019 г. 22:12:28(UTC)  | Причина: Не указана

Online Андрей Писарев  
#8 Оставлено : 11 ноября 2019 г. 22:16:23(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
Автор: Sergey Grigoriev Перейти к цитате

В нашем web приложении пользователи подписывают файлы в браузере при помощи ‎КриптоПро ЭЦП Browser plugin.


Особенности представления данных в интерфейсе COM


Создание и проверка отделенной подписи

Код:
var oSignedData = cadesplugin.CreateObject("CAdESCOM.CadesSignedData");
        // Значение свойства ContentEncoding должно быть задано
        // до заполнения свойства Content
        oSignedData.ContentEncoding = CADESCOM_BASE64_TO_BINARY;
        oSignedData.Content = dataToSign;


У Вас в коде web-приложения так же?
Техническую поддержку оказываем тут
Наша база знаний
Online Андрей Писарев  
#9 Оставлено : 11 ноября 2019 г. 22:17:12(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
dataToSign - в base64.
Техническую поддержку оказываем тут
Наша база знаний
Offline Sergey Grigoriev  
#10 Оставлено : 11 ноября 2019 г. 22:25:57(UTC)
Sergey Grigoriev

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

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

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

Да, только в асинхронном режиме:
Код:

var oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
      if (dataToSign) {
        // Данные на подпись ввели
        yield oSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN);
        yield oSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY); //
        if (typeof (setDisplayData) != 'undefined') {
          //Set display data flag flag for devices like Rutoken PinPad
          yield oSignedData.propset_DisplayData(1);
        }
        yield oSignedData.propset_Content(dataToSign);

        try {
          if (detached) {
            Signature = yield oSignedData.SignCades(oSigner, cadesplugin.CADESCOM_CADES_BES, true);
          } else {
            Signature = yield oSignedData.SignCades(oSigner, cadesplugin.CADESCOM_CADES_BES);
          }



Причем самим плагином его подписи проверяются нормально
Код:

if (sSignedMessage) {
      // Подпись на проверку ввели
      var oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
      try {
        var res;
        if (dataToVerify) {
          // Значение свойства ContentEncoding должно быть задано
          // до заполнения свойства Content
          yield oSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY);
          yield oSignedData.propset_Content(dataToVerify);
          yield oSignedData.VerifyCades(sSignedMessage, cadesplugin.CADESCOM_CADES_BES, true);
        } else {
          res = yield oSignedData.VerifyCades(sSignedMessage, cadesplugin.CADESCOM_CADES_BES);
        }

        // oSignedData.Signers.Item(1).Certificate.SubjectName
        var Signers = yield oSignedData.Signers;
        var Item = yield Signers.Item(1); // ???
        var Cert = yield Item.Certificate;
        var SubjectName = yield Cert.SubjectName;
        var IssuerName = yield Cert.IssuerName;
        var SerialNumber = yield Cert.SerialNumber;
        var ValidFromDate = yield Cert.ValidFromDate;
        var ValidToDate = yield Cert.ValidToDate;
        var Version = yield Cert.Version;
        // 
        var SigningTime = yield Item.SigningTime;
        //  
        res = true;

      } catch (err) {
        res = false;
        var errmsg = cadesplugin.getLastError(err);
        // alert("Failed to verify signature. Error: " + errmsg);
      }
    }

Отредактировано пользователем 11 ноября 2019 г. 22:29:12(UTC)  | Причина: Не указана

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