Форум КриптоПро
»
Средства криптографической защиты информации
»
Встраивание
»
Проверка подписи КриптоПро ЭЦП Browser plugin при помощи CAPICOM
Статус: Новичок
Группы: Участники
Зарегистрирован: 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.
Заранее спасибо.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,630 Сказал «Спасибо»: 494 раз Поблагодарили: 2035 раз в 1579 постах
|
Здравствуйте. Код приведите, как работаете с CAPICOM. Тема поднималась много раз.
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,630 Сказал «Спасибо»: 494 раз Поблагодарили: 2035 раз в 1579 постах
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 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 |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 02.11.2019(UTC) Сообщений: 6 Сказал(а) «Спасибо»: 1 раз
|
Автор: Андрей Писарев Код приведите, как работаете с CAPICOM.
То, что подписывается через CAPICOM им же проверяется нормально. И прикрепленная и открепленная подпись. И бинарная и Base64. А вот с подписью плагина - беда DMDocSigner.pas (13kb) загружен 14 раз(а).
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,630 Сказал «Спасибо»: 494 раз Поблагодарили: 2035 раз в 1579 постах
|
Автор: Sergey Grigoriev Автор: Андрей Писарев Код приведите, как работаете с CAPICOM.
То, что подписывается через CAPICOM им же проверяется нормально. И прикрепленная и открепленная подпись. И бинарная и Base64. Пришлите пример бинарный файл и подпись к нему. Или сами проверьте сторонним софтом. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 02.11.2019(UTC) Сообщений: 6 Сказал(а) «Спасибо»: 1 раз
|
Автор: Андрей Писарев Пришлите пример бинарный файл и подпись к нему. Или сами проверьте сторонним софтом.
Не совсем понял. Файл подписанный CAPICOM'ом? или плагином? То что подписывается CAPICOM'ом успешно проходит проверку на https://crypto.kontur.ru/verify#Отредактировано пользователем 11 ноября 2019 г. 22:12:28(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-приложения так же? |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,630 Сказал «Спасибо»: 494 раз Поблагодарили: 2035 раз в 1579 постах
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 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)
| Причина: Не указана
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
Встраивание
»
Проверка подписи КриптоПро ЭЦП Browser plugin при помощи CAPICOM
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close