Статус: Участник
Группы: Участники
Зарегистрирован: 09.01.2023(UTC) Сообщений: 11  Откуда: Москва Сказал(а) «Спасибо»: 3 раз
|
Добрый день! В документации описан интерфейс IAdditionalStore, с помощью которого можно передать в объект дополнительное хранилище для проверки статуса сертификата (или подписи), это описано тут и тут. К сожалению, не нашел примеров реализации этого функционала ни в документации, ни на форуме. Возможно кто-нибудь уже занимался таким или сможет подсказать как правильно реализовать эту провреку? Пытаюсь проверить сертификат следующим образом:Код:
// Функция получения CAPICOM_MEMORY_STORE c CRL
async function getAdditionalStore() {
return cadesplugin.async_spawn(function* getAdditionalStoreGenerator() {
const crl = yield plugin.CreateObjectAsync('CAdESCOM.CRL');
yield crl.Import(rawCRLString); // rawCRLString - строка с закодированным CRL
const store = yield plugin.CreateObjectAsync('CAdESCOM.Store');
// Открываем CAPICOM_MEMORY_STORE на чтение + запись
yield store.Open(0, 'MemStore', cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
// Добавляем объект с импортированным CRL
yield store.AddCRL(crl);
return store;
});
}
// Функция для проверки статуса сертификата в личном хранилище
async function testCertificate() {
const additionalStore = await getAdditionalStore(); // получили доп. хранилище из примера выше
return cadesplugin.async_spawn(function* testCertificateGenerator() {
const store = yield plugin.CreateObjectAsync('CAdESCOM.Store');
// Открываем хранилище личных сертификатов
yield store.Open(2, 'My', cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
const storeCertificates = yield store.Certificates;
const cert = yield storeCertificates.Item(1); // берем первый сертификат (в этом случае, он единственный в хранилище)
// Передаем дополнительное хранилище для проверки статуса сертификата
yield cert.AdditionalStore(additionalStore);
// Проверяем валидность сертификата
const validity = yield cert.IsValid();
const isValid = yield validity.Result;
console.log(isValid); // -> false
return yield store.Close();
});
}
В примере выше сертификаты остаются невалидными, не смотря на то, что в них передается доп. хранилище со списком отозванных сертификатов УЦ, в котором этих сертификатов нет. Что я делаю не так? Есть специалисты, которые знают ответ? Спасибо!
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,664   Сказал «Спасибо»: 571 раз Поблагодарили: 2297 раз в 1798 постах
|
Здравствуйте.
А цепочка до корневого УЦ строится успешно? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 09.01.2023(UTC) Сообщений: 11  Откуда: Москва Сказал(а) «Спасибо»: 3 раз
|
Если эти CRL импортировать через Инструменты КриптоПРО, то да, цепочка строится успешно. Но вот метод, описанный мной выше, не работает. Например, если проверять подпись этим методом, то вылетает ошибка, что не удалось проверить цепочку сертификата. То есть, как будто, этот AdditionalStore не учитывается при проверке :( Отредактировано пользователем 8 июня 2023 г. 11:53:02(UTC)
| Причина: Не указана
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 09.01.2023(UTC) Сообщений: 11  Откуда: Москва Сказал(а) «Спасибо»: 3 раз
|
Подскажите хотя бы, правильный ли механизм проверки сертификата или подписи таким образом? Так подразумевается использование AdditionalStore?
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close