Статус: Новичок
Группы: Участники
Зарегистрирован: 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 без использования асинхронной логики?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,664   Сказал «Спасибо»: 571 раз Поблагодарили: 2297 раз в 1798 постах
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close