странный у вас форум... хотел постануть в подходящей теме, однако меня отбрили, так как тема якобы устарела. зашибись. вопрос по сертификатам, точнее получения одного свойства из сертификата:
нужен план получения нужного значения из сертификата, то есть цепочка команд друг за другом какие должны быть.
преамбула: у сертификатов есть определенные политики применения. например - идентификация клиента на сервере - 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 - закрываем хранилище
|