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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline alex.kondakov99  
#1 Оставлено : 21 марта 2013 г. 12:55:00(UTC)
alex.kondakov99

Статус: Новичок

Группы: Участники
Зарегистрирован: 21.03.2013(UTC)
Сообщений: 3
Российская Федерация
Откуда: Южно-Сахалиснк

Пытаюсь найти сертификат в хранилище по его ХЭШ отпечатку. Мне кажется, что я неправильно формирую критерий поиска. Функция выполняется без ошибок но не возвращает сертификатов. Помогите корректно сформировать. Нужно передавать строку символов или байтов?

Код:
// Поиск сертификата в хранилище
void FoundCertificateInStore(ICertificate2Ptr iCert)
{
    IStorePtr pIStore;
    ICertificates2Ptr pICertificates;
    ICertificates2Ptr pICertificatesFound;
    VARIANT varCriteria;

    pIStore = CreateOleObject("CAPICOM.Store.3");

    if (FAILED(pIStore->Open(CAPICOM_STORE_LOCATION::CAPICOM_CURRENT_USER_STORE,
                             L"My",
                             CAPICOM_STORE_OPEN_MODE::CAPICOM_STORE_OPEN_READ_ONLY)))
    {
        ShowMessage("Ошибка открытия хранилища сертификатов");
        return;
    }

    //Поиск

    pICertificates = pIStore->Certificates;

    varCriteria.vt = VT_I1;
    varCriteria.pcVal = "c01134ee90d8fd41cf9fdc1b99644038c6e5bf21";

    pICertificatesFound = pICertificates->Find(CAPICOM_CERTIFICATE_FIND_TYPE::CAPICOM_CERTIFICATE_FIND_SHA1_HASH,
                         varCriteria,
                         false);

    ShowMessage(pICertificatesFound->Count);
}
Offline Андрей Писарев  
#2 Оставлено : 21 марта 2013 г. 13:56:40(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 14,190
Мужчина
Российская Федерация

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
Код:
varCriteria.vt = VT_BSTR;
varCriteria.pcVal = "C01134EE90D8FD41CF9FDC1B99644038C6E5BF21";  

Отредактировано пользователем 21 марта 2013 г. 13:57:41(UTC)  | Причина: хм.. на 2х языках нельзя вставлять примеры..

Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#3 Оставлено : 21 марта 2013 г. 13:58:23(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 14,190
Мужчина
Российская Федерация

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
Код:

FindType   : CAPICOM_CERTIFICATE_FIND_TYPE;
varCriteria: OleVariant

FindType:=CAPICOM_CERTIFICATE_FIND_SHA1_HASH; // = 0
varCriteria:='C01134EE90D8FD41CF9FDC1B99644038C6E5BF21';

  Store := CoStore.Create;
  Store.Open( CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE, CAPICOM_STORE_OPEN_READ_ONLY);
  Certs := Store.Certificates.Find( FindType, varCriteria, false );
  //Certs.Count - количество найденных сертификатов
Техническую поддержку оказываем тут
Наша база знаний
Offline alex.kondakov99  
#4 Оставлено : 22 марта 2013 г. 4:34:46(UTC)
alex.kondakov99

Статус: Новичок

Группы: Участники
Зарегистрирован: 21.03.2013(UTC)
Сообщений: 3
Российская Федерация
Откуда: Южно-Сахалиснк

Автор: Андрей * Перейти к цитате
Код:
varCriteria.vt = VT_BSTR;
varCriteria.pcVal = "C01134EE90D8FD41CF9FDC1B99644038C6E5BF21";  


Так не работает. Выдается сообщение об ошибке доступа EAccessVialation.

Пользователь alex.kondakov99 прикрепил следующие файлы:
Ошибка.jpg (31kb) загружен 5 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Offline alex.kondakov99  
#5 Оставлено : 22 марта 2013 г. 4:39:32(UTC)
alex.kondakov99

Статус: Новичок

Группы: Участники
Зарегистрирован: 21.03.2013(UTC)
Сообщений: 3
Российская Федерация
Откуда: Южно-Сахалиснк

Автор: Андрей * Перейти к цитате
Код:
varCriteria.vt = VT_BSTR;
varCriteria.pcVal = "C01134EE90D8FD41CF9FDC1B99644038C6E5BF21";  


Работает если иcпользовать тип OleVariant.

OleVariant varCriteria = "c01134ee90d8fd41cf9fdc1b99644038c6e5bf21";

pICertificatesFound = pICertificates->Find(CAPICOM_CERTIFICATE_FIND_TYPE::CAPICOM_CERTIFICATE_FIND_SHA1_HASH,
varCriteria,
false);
Offline Андрей Писарев  
#6 Оставлено : 22 марта 2013 г. 5:46:58(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 14,190
Мужчина
Российская Федерация

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
Автор: alex.kondakov99 Перейти к цитате
Автор: Андрей * Перейти к цитате
Код:
varCriteria.vt = VT_BSTR;
varCriteria.pcVal = "C01134EE90D8FD41CF9FDC1B99644038C6E5BF21";  


Работает если иcпользовать тип OleVariant.

OleVariant varCriteria = "c01134ee90d8fd41cf9fdc1b99644038c6e5bf21";

pICertificatesFound = pICertificates->Find(CAPICOM_CERTIFICATE_FIND_TYPE::CAPICOM_CERTIFICATE_FIND_SHA1_HASH,
varCriteria,
false);



OleVariant и нужен.

Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.