Extraire toutes les valeurs d’un atsortingbut de sujet dans un certificate

J’utilise actuellement CertGetNameSsortingng pour extraire les valeurs de chaque atsortingbut de sujet comme CertGetNameSsortingng :

 CertGetNameSsortingng(pCertificate, CERT_NAME_ATTR_TYPE, 0, szOID_ORGANIZATIONAL_UNIT_NAME, buf, _countof(buf)); 

Cependant, certains certificates que j’ai trouvés ont plusieurs valeurs pour le nom de l’unité d’organisation (OU) et CertGetNameSsortingng ne peut que lire le premier. Par exemple, ceci fait l’object d’un certificate Adobe:

 CN = Adobe Systems, Incorporated OU = Acrobat Engineering OU = Digital ID Class 3 - Microsoft Software Validation v2 O = Adobe Systems, Incorporated L = San Jose S = California C = US 

Comment lire toutes les valeurs des atsortingbuts OU (et autres) à l’aide de CryptoAPI?

Ok, a trouvé la solution. La bonne API à utiliser est CertNameToStr , comme ceci:

  CertNameToStr(X509_ASN_ENCODING, &pCertificate->pCertInfo->Subject, CERT_X500_NAME_STR, buf, _countof(buf)); 

Il retournera une chaîne telle que:

 C=US, S=California, L=San Jose, O="Adobe Systems, Incorporated", OU=Digital ID Class 3 - Microsoft Software Validation v2, OU=Acrobat Engineering, CN="Adobe Systems, Incorporated" 

Ce qui peut ensuite être analysé si des valeurs d’atsortingbut individuelles sont requirejses.