Статус: Новичок
Группы: Участники
Зарегистрирован: 17.10.2025(UTC) Сообщений: 1  Откуда: Москва Сказал(а) «Спасибо»: 3 раз
|
Всем Привет!
Вопрос: почему при получении списка сертификатов, сертификаты дублируются? При сравнении выяснил, что отличаются только privateKey.ObjId
То есть если у меня 3 сертификата я получаю 3 дублирующихся лога итого 6
Контекcт:
``` public async findSerialNumber(number: string) { console.log('Поиск сертификата через COM-объект...');
try { await this.initializeCrypto(); const oStore = await this.plugin.CreateObjectAsync('CAdESCOM.Store'); await oStore.Open(4, 'My', 0); // 4 = CAPICOM_CURRENT_USER_STORE, 0 = read-only
const certificates = await oStore.Certificates; const count = await certificates.Count;
console.log(`Всего сертификатов в хранилище "My": ${count}`);
for (let index = 1; index <= count; index++) { const cert = await certificates.Item(index);
// Проверяем наличие приватного ключа — отсеиваем "мёртвые" копии const privateKey = await cert.PrivateKey; if (!privateKey) { continue; }
const privateKeyOptions = { // CachePin: await privateKey.CachePin, CarrierFlags: await privateKey.CarrierFlags, ContainerName: await privateKey.ContainerName, IsDefaultPin: await privateKey.IsDefaultPin, // KeyPin: await privateKey.KeyPin, KeySpec: await privateKey.KeySpec, ProviderName: await privateKey.ProviderName, ProviderType: await privateKey.ProviderType, UniqueContainerName: await privateKey.UniqueContainerName, };
const issuer = await cert.IssuerName; const serialNumber = await cert.SerialNumber; const subject = await cert.SubjectName; const thumbprint = await cert.Thumbprint; const version = await cert.Version;
// console.log(cert, 'cert');
console.log('Сертификат с ключом:', { issuer, privateKey, privateKeyOptions, subject, serialNumber, thumbprint, version, });
if (serialNumber.toUpperCase() === number.toUpperCase()) { console.log('✅ Найден по серийному номеру через COM'); return true; } }
return false; } catch (error) { console.error('Ошибка при поиске через COM:', error); throw error; } } ```
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,957   Сказал «Спасибо»: 602 раз Поблагодарили: 2341 раз в 1838 постах
|
Здравствуйте.
Что на тестовой странице плагина? Как понять "почему при получении списка сертификатов, сертификаты дублируются?", а далее про логи.
|
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,957   Сказал «Спасибо»: 602 раз Поблагодарили: 2341 раз в 1838 постах
|
p.s. findSerialNumber - 1) серийный номер в целом не уникальный, но с учётом требований к ПАК УЦ - ок... 2) можно использовать отпечаток и функцию для поиска сразу, вместо получения и анализа всех сертификатов oStoreCerts.Find CAPICOM_CERTIFICATE_FIND_SHA1_HASH Подробнее - смотреть примеры к плагину в документации. |
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,957   Сказал «Спасибо»: 602 раз Поблагодарили: 2341 раз в 1838 постах
|
p.s2.
Ещё сертификаты могут быть только в контейнерах, без установки в Личное хранилище, доставать через: oStore.Open(cadesplugin.CADESCOM_CONTAINER_STORE);
Пример есть в async_code.js в архиве с примерами. |
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close