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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline AlexMilko  
#1 Оставлено : 26 апреля 2023 г. 14:45:59(UTC)
AlexMilko

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

Группы: Участники
Зарегистрирован: 26.04.2023(UTC)
Сообщений: 1

Добрый день!

Стоит задача подключить на стенде CADES , используемый браузер - Google Chrome (в моем случае версия 112.0.5615.138 64-бит)
Установлен CryptoPro Extension for CAdES Browser Plug-in Версия 1.2.13

Не могу разобраться с тем, как получить хранилище и список сертификатов из него. Использую пример, который был когда-то ранее написан под IE, там логика была синхронная, использовался метод CreateObject, у меня как я вижу в консоли, доступен только метод CreateObjectAsync, и внедрить его в логику у меня не получается.

Что делаю:

Код на кнопке вызова:
runCryptoPro: function(callback, scope) {
ITdsCryptoProUtilities.InitPlugin(this.generateVisualCryptoProPluginInfo, this);
var userAttributes = {
"Name" : "Test Certificate",//this.get("CurrentUserLogin"),
"Email": "amilko@it.ru"//this.get("CurrentUserEmail")

};
var certificates = ITdsCryptoProUtilities.GetCertificatesForUser(userAttributes);
/*..............*/



Код утилиты:
function getCertificatesForUser(userAttributes) {
var store = getCertificateStore(),
certificates,
certificatesInfo = [],
currentDateObj = new Date(),
userName = userAttributes ? userAttributes.Name : null,
userEmail = userAttributes ? userAttributes.Email : null;
if ((!store) || (!userEmail)) {
return;

}

/*..............*/




function getCertificateStore() {
var store;
var canAsync = !!CreateObject;
if(canAsync)
{
store = pluginObject.CreateObjectAsync(name);
store.Open();

try {
if(store == null || store== undefined || store.Certificates.Count == 0) {
return;

} else {
return store;

}

}
catch (ex) {
store.Close();
return;

}

}

else {

/*.........*/


При такой реализации на строчку store.Open() код переходит не дожидаясь завершения создания store. При проверке выходит, что store=undefined и возвращается пустой результат.
При этом в консоли браузера вижу, что сам объект store впоследствии создается и содержит какие-то сертификаты, просто это происходит позднее.

Не могу найти пример как написать асинхронный вызов чтобы store.Open() и дальнейший код не отрабатывал пока CreateObjectAsync не завершено. Как я понимаю, это делается через promise, но написать не получилось. Или может я чего-то не знаю и под Chrome можно работать с CADES без использования асинхронной логики?

Offline Андрей *  
#2 Оставлено : 26 апреля 2023 г. 15:01:34(UTC)
Андрей *

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

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

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

https://www.cryptopro.ru/products/cades/plugin

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