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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline J.  
#1 Оставлено : 7 мая 2020 г. 8:33:35(UTC)
J.

Статус: Активный участник

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

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 2 раз в 2 постах
После импорта библиотеки `cadesplugin-api.js` появились сложности совместимости стандартных вызовов в angular 9.
Пробую реализовать вывод списка сертификатов в компоненте, но никак не получается.
Поделитесь пожалуйста опытом, у кого получилось связать `cadesplugin-api.js` с angular (v. > 7), как вы это сделали?
Offline ALPNP  
#2 Оставлено : 20 апреля 2021 г. 18:50:23(UTC)
ALPNP

Статус: Участник

Группы: Участники
Зарегистрирован: 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()
}
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.