Статус: Активный участник
Группы: Участники
Зарегистрирован: 19.02.2012(UTC) Сообщений: 121 Сказал «Спасибо»: 2 раз Поблагодарили: 2 раз в 2 постах
|
После импорта библиотеки `cadesplugin-api.js` появились сложности совместимости стандартных вызовов в angular 9. Пробую реализовать вывод списка сертификатов в компоненте, но никак не получается. Поделитесь пожалуйста опытом, у кого получилось связать `cadesplugin-api.js` с angular (v. > 7), как вы это сделали?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 08.04.2021(UTC) Сообщений: 11 Откуда: Москва Сказал(а) «Спасибо»: 3 раз
|
Добрый день. Инициализируем плагин Цитата: initCadesPlugin(): Observable<string> { this.cadesplugin = this.windowRef.nativeWindow.cadesplugin return from(this.cadesplugin).pipe( mergeMap(() => { if (environment.cadesPluginLog) { this.cadesplugin.set_log_level(this.cadesplugin.LOG_LEVEL_DEBUG) } this.log('Плагин инициализирован') return of(this.cadesplugin.JSModuleVersion) }), catchError((err: any) => { this.log(err, 'error') return throwError(null) }), ) }
Получаем сертификаты Цитата: /** * Метод получения всех сертификатов из хранилища * @returns Promise<ICadesCert[]> */ getCertificates(): Promise<ICadesCert[]> { if (this.cadesplugin) { this.log('получение списка сертификатов')
const ctx = this const certificates: ICadesCert[] = []
return new Promise((resolve, reject) => { this.cadesplugin.async_spawn( function* init(args: any[]): any { try { const oStore = yield ctx.cadesplugin.CreateObjectAsync('CAdESCOM.Store') ctx.log('Открытие хранилища сертификатов') oStore.Open( CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE, CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED, ) const CertificatesObj = yield oStore.Certificates const oCertificates = yield CertificatesObj.Find( CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY, CAPICOM_PROPID_KEY_PROV_INFO, ) const Count = yield oCertificates.Count if (Count === 0) { ctx.log('сертификаты не найдены', 'error') throw new Error(`Сертификаты не найдены`) } ctx.log(`Сертификаты: ${Count}`) for (let i = 1; i <= Count; i += 1) { const Item = yield CertificatesObj.Item(i) ctx.log(`Обработка сертификата ${JSON.stringify(Item)}`)
const certData: ICadesCert = { Item, ValidToDate: moment(yield Item.ValidToDate).format('DD-MMMM-YYYY HH:mm:ss'), ValidFromDate: moment(yield Item.ValidFromDate).format('DD-MMMM-YYYY HH:mm:ss'), HasPrivateKey: yield Item.HasPrivateKey(), IssuerName: ctx.extract(yield Item.IssuerName, 'CN='), SubjectName: ctx.extract(yield Item.SubjectName, 'CN='), Thumbprint: yield Item.Thumbprint, Version: yield Item.Version, }
certificates.push(certData) } oStore.Close() args[0](certificates) } catch (err) { ctx.log(err, 'error') args[1](null) } }, resolve, reject, ) }) } this.log('ошибка получения сертификатов, плагин не инициализирован или не запущен', 'error') return Promise.reject() }
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 13.05.2022(UTC) Сообщений: 26 Откуда: Moscow
|
Делаете "задержку" при вызове в Клиентском WEB-интерфейсе, например я сделал красивый AJAX-PHP запрос вместе со статус баром. в то время как за 1,2сек всё инициализируется...
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close