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.