Статус: Новичок
Группы: Участники
Зарегистрирован: 02.05.2022(UTC) Сообщений: 4 Сказал(а) «Спасибо»: 1 раз
|
Здравствуйте! У меня стоит задача загрузить отсоединённую подпись и вывести информацию о ней на страницу ( Издатель, владелец, дата создания + дата истечения ). Возможно ли это сделать в браузере и если да то как ? У меня получается это сделать когда я проверяю подпись методом VerifyCades и она верна, но что делать если подпись не верна ? Ниже пример как я это делаю : Код:
static verify(sSignedMessage, dataInBase64) {
return new Promise(function(resolve, reject) {
const cadesplugin = window.cadesplugin
cadesplugin.async_spawn(function* (args) {
const oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
try {
// Значение свойства ContentEncoding должно быть задано
// до заполнения свойства Content
yield oSignedData.propset_ContentEncoding(CADESCOM_BASE64_TO_BINARY);
yield oSignedData.propset_Content(dataInBase64);
yield oSignedData.VerifyCades(sSignedMessage, CADESCOM_CADES_BES, true);
const signers = yield oSignedData.Signers;
const oSigner = yield signers.Item(1);
const signatureStatus = yield oSigner.SignatureStatus;
const certificate = yield oSigner.Certificate;
const info = {}
info.isSignatureValid = yield signatureStatus.IsValid
info.certificate = {
issuerName: yield certificate.IssuerName,
subjectName: yield certificate.SubjectName,
thumbprint: yield certificate.Thumbprint,
validFromDate: yield certificate.ValidFromDate,
validToDate: yield certificate.ValidToDate,
}
return args[0](info);
}
catch(err) {
const e = cadesplugin.getLastError(err);
return args[1](e);
}
}, resolve, reject);
});
}
Отредактировано пользователем 4 мая 2022 г. 12:01:28(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,726 Сказал «Спасибо»: 501 раз Поблагодарили: 2058 раз в 1598 постах
|
Здравствуйте. Достаточно при подписании указать желаемое: bDetached = true, как сделано было в коде для проверки. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 02.05.2022(UTC) Сообщений: 4 Сказал(а) «Спасибо»: 1 раз
|
Автор: Андрей * Здравствуйте. Достаточно при подписании указать желаемое: bDetached = true, как сделано было в коде для проверки. Все так и сделано. Далее я сохраняю отсоединенную подпись в файл. После этого я создал страницу где должна быть возможность загрузить подпись и посмотреть данные по ней (данные о подписанте, дату подписи и т.п.) Можно ли получить эти данные как то иначе, не используя метод verify из моего примера?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,726 Сказал «Спасибо»: 501 раз Поблагодарили: 2058 раз в 1598 постах
|
Автор: JS_coder Автор: Андрей * Здравствуйте. Достаточно при подписании указать желаемое: bDetached = true, как сделано было в коде для проверки. Все так и сделано. Далее я сохраняю отсоединенную подпись в файл. После этого я создал страницу где должна быть возможность загрузить подпись и посмотреть данные по ней (данные о подписанте, дату подписи и т.п.) Можно ли получить эти данные как то иначе, не используя метод verify из моего примера? Конечно можно, но тогда это выходит за рамки работы с плагином. |
|
1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,726 Сказал «Спасибо»: 501 раз Поблагодарили: 2058 раз в 1598 постах
|
Автор: JS_coder не используя метод verify из моего примера? Почему не используя, в чём причина? Проверять на сервере, на клиенте показывать необходимое или без передачи - на клиенте проверять через плагин... либо парсить CMS и выводить необходимое... без плагина и СКЗИ (а если подпись некорректная?) |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 02.05.2022(UTC) Сообщений: 4 Сказал(а) «Спасибо»: 1 раз
|
Автор: Андрей * Автор: JS_coder не используя метод verify из моего примера? Почему не используя, в чём причина? Дело в том что этот метод работает корректно, но не в полной мере как бы нам хотелось. Если подпись верна то данные можно получить, но если не верна то кидается исключение и срабатывает блок 'catch'. В этом случае я не знаю как получить issuerName, subjectName и т.п Хотелось бы что бы и в случае когда подпись не верна можно было показать информацию о ней.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,726 Сказал «Спасибо»: 501 раз Поблагодарили: 2058 раз в 1598 постах
|
Автор: JS_coder Автор: Андрей * Автор: JS_coder не используя метод verify из моего примера? Почему не используя, в чём причина? Дело в том что этот метод работает корректно, но не в полной мере как бы нам хотелось. Если подпись верна то данные можно получить, но если не верна то кидается исключение и срабатывает блок 'catch'. В этом случае я не знаю как получить issuerName, subjectName и т.п Хотелось бы что бы и в случае когда подпись не верна можно было показать информацию о ней. try { .VerifyCades } ... ... oSignedData.Signers; не работает? |
|
|
|
|
Статус: Администратор
Группы: Участники
Зарегистрирован: 01.03.2017(UTC) Сообщений: 95 Откуда: Москва Сказал(а) «Спасибо»: 4 раз Поблагодарили: 29 раз в 20 постах
|
Цитата:У меня получается это сделать когда я проверяю подпись методом VerifyCades и она верна, но что делать если подпись не верна ? Попробуйте обратиться к объекту oSignedData внутри блока catch. Upd: Или да, как предложено выше, обернуть вызов в try/catch и в любом случае обратиться к объекту. Примерный код Код:
try {
yield oSignedData.VerifyCades(sSignedMessage, CADESCOM_CADES_BES, true);
}
catch (err) {
// обработка ошибки
}
oSigners = yield oSignedData.Signers;
SignersNum = yield oSigners.Count;
oSigner = yield oSigners.Item(1);
certificate = yield oSigner.Certificate;
dateFrom = yield certificate.ValidFromDate;
dateTo = yield certificate.ValidToDate;
issuerName = yield certificate.IssuerName;
subjectName = yield certificate.SubjectName;
version = yield certificate.Version;
Отредактировано пользователем 4 мая 2022 г. 11:30:01(UTC)
| Причина: Не указана
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 02.05.2022(UTC) Сообщений: 4 Сказал(а) «Спасибо»: 1 раз
|
Автор: Андрей *
try { .VerifyCades } ... ... oSignedData.Signers;
не работает?
Работает =) Вчера проверял но по запарке видимо что то сделал не так. Стыдно когда моя не внимательность всплывает на форуме =) Отредактировано пользователем 4 мая 2022 г. 11:58:50(UTC)
| Причина: Не указана
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close