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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline JS_coder  
#1 Оставлено : 4 мая 2022 г. 9:25:50(UTC)
JS_coder

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

Группы: Участники
Зарегистрирован: 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)  | Причина: Не указана

Offline Андрей *  
#2 Оставлено : 4 мая 2022 г. 9:49:10(UTC)
Андрей *

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

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

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

Достаточно при подписании указать желаемое: bDetached = true, как сделано было в коде для проверки.
Техническую поддержку оказываем тут
Наша база знаний
Offline JS_coder  
#3 Оставлено : 4 мая 2022 г. 10:39:41(UTC)
JS_coder

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

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

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

Достаточно при подписании указать желаемое: bDetached = true, как сделано было в коде для проверки.


Все так и сделано. Далее я сохраняю отсоединенную подпись в файл.

После этого я создал страницу где должна быть возможность загрузить подпись и посмотреть данные по ней
(данные о подписанте, дату подписи и т.п.)
Можно ли получить эти данные как то иначе, не используя метод verify из моего примера?

Offline Андрей *  
#4 Оставлено : 4 мая 2022 г. 10:55:13(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2043 раз в 1584 постах
Автор: JS_coder Перейти к цитате
Автор: Андрей * Перейти к цитате
Здравствуйте.

Достаточно при подписании указать желаемое: bDetached = true, как сделано было в коде для проверки.


Все так и сделано. Далее я сохраняю отсоединенную подпись в файл.

После этого я создал страницу где должна быть возможность загрузить подпись и посмотреть данные по ней
(данные о подписанте, дату подписи и т.п.)
Можно ли получить эти данные как то иначе, не используя метод verify из моего примера?



Конечно можно, но тогда это выходит за рамки работы с плагином.
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
JS_coder оставлено 04.05.2022(UTC)
Offline Андрей *  
#5 Оставлено : 4 мая 2022 г. 10:59:00(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2043 раз в 1584 постах
Автор: JS_coder Перейти к цитате
не используя метод verify из моего примера?


Почему не используя, в чём причина?

Проверять на сервере, на клиенте показывать необходимое или без передачи - на клиенте проверять через плагин... либо парсить CMS и выводить необходимое... без плагина и СКЗИ (а если подпись некорректная?)
Техническую поддержку оказываем тут
Наша база знаний
Offline JS_coder  
#6 Оставлено : 4 мая 2022 г. 11:16:37(UTC)
JS_coder

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

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

Сказал(а) «Спасибо»: 1 раз
Автор: Андрей * Перейти к цитате
Автор: JS_coder Перейти к цитате
не используя метод verify из моего примера?


Почему не используя, в чём причина?


Дело в том что этот метод работает корректно, но не в полной мере как бы нам хотелось.
Если подпись верна то данные можно получить, но если не верна то кидается исключение и срабатывает блок 'catch'. В этом случае я не знаю как получить issuerName, subjectName и т.п

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

Offline Андрей *  
#7 Оставлено : 4 мая 2022 г. 11:20:27(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2043 раз в 1584 постах
Автор: JS_coder Перейти к цитате
Автор: Андрей * Перейти к цитате
Автор: JS_coder Перейти к цитате
не используя метод verify из моего примера?


Почему не используя, в чём причина?


Дело в том что этот метод работает корректно, но не в полной мере как бы нам хотелось.
Если подпись верна то данные можно получить, но если не верна то кидается исключение и срабатывает блок 'catch'. В этом случае я не знаю как получить issuerName, subjectName и т.п

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



try {
.VerifyCades
}
...
... oSignedData.Signers;

не работает?
Техническую поддержку оказываем тут
Наша база знаний
Offline Ситдиков Денис  
#8 Оставлено : 4 мая 2022 г. 11:20:48(UTC)
Ситдиков Денис

Статус: Администратор

Группы: Участники
Зарегистрирован: 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)  | Причина: Не указана

Offline JS_coder  
#9 Оставлено : 4 мая 2022 г. 11:37:40(UTC)
JS_coder

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

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

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


try {
.VerifyCades
}
...
... oSignedData.Signers;

не работает?


Работает =)
Вчера проверял но по запарке видимо что то сделал не так.
Стыдно когда моя не внимательность всплывает на форуме =)

Отредактировано пользователем 4 мая 2022 г. 11:58:50(UTC)  | Причина: Не указана

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