Показать сообщение отдельно
  #4  
Старый 08.09.2013, 15:44
SeregaZ SeregaZ вне форума
Прохожий
 
Регистрация: 08.09.2013
Сообщения: 1
Версия Delphi: PB
Репутация: 10
По умолчанию

странный у вас форум... хотел постануть в подходящей теме, однако меня отбрили, так как тема якобы устарела. зашибись. вопрос по сертификатам, точнее получения одного свойства из сертификата:

нужен план получения нужного значения из сертификата, то есть цепочка команд друг за другом какие должны быть.

преамбула: у сертификатов есть определенные политики применения. например - идентификация клиента на сервере - oid 1.3.6.1.5.5.7.3.2. они, насколько я понял, читаются из поля "улучшенный ключ командой CertGetEnhancedKeyUsage - она возвращает массив этих oid, которые имеются у этого сертификата. этот момент я написал и работает, я доволен. НО! в случае когда у сертификата стоит свойство - "Все политики применения", то фактически поле "улучшенный ключ" у сертификата отсутствует, и соответственно моя команда CertGetEnhancedKeyUsage не будет работать, возвращает 0 и все тут.

вот собственно вопрос - каким образом мне получить свойство "Все политики применения"? какой порядок команд должен быть?

сейчас:
1. CertOpenSystemStore - открываем нужное хранилище в системе, например мои личные сертификаты.
2. CertEnumCertificatesInStore - гоняем в цикле по хранилищу, получая каждый сертификат в отдельности
3. CertGetEnhancedKeyUsage - первый раз получаем размер массива
4. CertGetEnhancedKeyUsage - второй раз получаем уже сам массив
5. читаем этот массив гоняя в цикле количества элементов.
6. CertCloseStore - закрываем хранилище

это краткий план получения oid 1.3.6.1.5.5.7.3.2 - "идентификация клиента на сервере", вот мне нужен точно такой-же, но для получения флага "Все политики применения". то есть что-то типа:
1. CertOpenSystemStore - открываем нужное хранилище в системе, например мои личные сертификаты.
2. CertEnumCertificatesInStore - гоняем в цикле по хранилищу, получая каждый сертификат в отдельности
3. CertGetEnhancedKeyUsage - если размер ноль, значит нужно искать "все политики"
4. блаблабла - эта самая команда для всех политик
5. CertCloseStore - закрываем хранилище
Ответить с цитированием