Fonction CertGetNameStringA (wincrypt.h)

La fonction CertGetNameString obtient le nom de l’objet ou de l’émetteur à partir d’une structure de certificat CERT_CONTEXT et le convertit en chaîne de caractères null.

Syntaxe

DWORD CertGetNameStringA(
  [in]  PCCERT_CONTEXT pCertContext,
  [in]  DWORD          dwType,
  [in]  DWORD          dwFlags,
  [in]  void           *pvTypePara,
  [out] LPSTR          pszNameString,
  [in]  DWORD          cchNameString
);

Paramètres

[in] pCertContext

Un pointeur vers un CERT_CONTEXT contexte de certificat qui inclut un sujet et un nom d’émetteur à convertir.

[in] dwType

DWORD indiquant comment le nom est à trouver et comment la sortie doit être mise en forme.

Valeur Signification
CERT_NAME_EMAIL_TYPE
1
Si le certificat a une extension Subject Alternative Name ou Un autre nom de l’émetteur, utilise le premier choix rfc822Name. Si aucun choix rfc822Name n’est trouvé dans l’extension, utilise le champ Nom de l’objet pour le Email OID. Si rfc822Name ou le Email OID est trouvé, utilise la chaîne . Sinon, retourne une chaîne vide (le nombre de caractères retourné est 1). pvTypePara n’est pas utilisé et a la valeur NULL.
CERT_NAME_RDN_TYPE
2
Convertit l’objet BLOB de nom d’objet en appelant CertNameToStr. pvTypePara pointe vers un DWORD contenant le dwStrType passé à CertNameToStr. Si le champ Nom de l’objet est vide et que le certificat a une extension Autre nom d’objet, utilise le premier choix de nom du répertoire de CertNameToStr.
CERT_NAME_ATTR_TYPE
3
pvTypePara pointe vers un identificateur d’objet (OID) spécifiant l’attribut name à retourner. Par exemple, si pvTypePara est szOID_COMMON_NAME, utilise le membre Nom de l’objet. Si le membre Nom de l’objet est vide et que le certificat a une extension Autre nom d’objet, utilise le premier choix directoryName.
CERT_NAME_SIMPLE_DISPLAY_TYPE
4
Effectue une itération dans la liste suivante d’attributs de nom et utilise le nom de l’objet ou l’extension autre nom de l’objet pour la première occurrence de : szOID_COMMON_NAME, szOID_ORGANIZATIONAL_UNIT_NAME, szOID_ORGANIZATION_NAME ou szOID_RSA_emailAddr.

Si l’un de ces attributs est introuvable, utilise l’extension Subject Alternative Name pour un choix rfc822Name. S’il n’y a toujours aucune correspondance, utilise le premier attribut.

pvTypePara n’est pas utilisé et a la valeur NULL.

CERT_NAME_FRIENDLY_DISPLAY_TYPE
5
Recherche une propriété CERT_FRIENDLY_NAME_PROP_ID dans le certificat. Si le certificat a cette propriété, il est retourné. Si le certificat n’a pas la propriété, le CERT_NAME_SIMPLE_DISPLAY_TYPE est retourné.
CERT_NAME_DNS_TYPE
6
Si le certificat a une extension Subject Alternative Name pour l’émetteur, Issuer Alternative Name, recherchez le premier choix DNSName.

Si le choix DNSName est introuvable dans l’extension, recherchez dans le champ Nom de l’objet l’OID CN, « 2.5.4.3 ».

Si l’OID DNSName ou CN est trouvé, retournez la chaîne. Sinon, retournez une chaîne vide.

CERT_NAME_URL_TYPE
7
Si le certificat a une extension Subject Alternative Name pour l’émetteur, Issuer Alternative Name, recherchez le premier choix d’URL. Si le choix d’URL est trouvé, retournez la chaîne. Sinon, retournez une chaîne vide.
CERT_NAME_UPN_TYPE
8
Si le certificat a une extension Autre nom d’objet, recherchez les options OtherName à la recherche d’un pszObjId == szOID_NT_PRINCIPAL_NAME, (« 1.3.6.1.4.1.311.20.2.3 »).

Si l’OID UPN est trouvé, décodez l’objet BLOB en tant que X509_UNICODE_ANY_STRING et retournez la chaîne décodée. Sinon, retournez une chaîne vide.

[in] dwFlags

Indique le type de traitement nécessaire.

Valeur Signification
CERT_NAME_ISSUER_FLAG
0x1
Acquiert le nom de l’émetteur. S’il n’est pas défini, acquiert le nom de l’objet.
CERT_NAME_DISABLE_IE4_UTF8_FLAG
0x00010000
Ignore la tentative initiale par défaut de décoder la valeur en UTF8 et décode en caractères 8 bits.
CERT_NAME_SEARCH_ALL_NAMES_FLAG
0x2
Si le paramètre dwType a la valeur CERT_NAME_DNS_TYPE, tous les noms applicables sont retournés pour la valeur DNS spécifiée. S’il n’y a pas de nom DNS, mais qu’il existe un composant CN dans l’objet, le cn est retourné à la place. S’il existe un nom CN et un nom DNS, seuls les noms DNS sont retournés. Cela imite la stratégie de création de chaîne SSL. Si vous définissez cet indicateur pour un type de nom autre que CERT_NAME_DNS_TYPE, cette fonction retourne une chaîne vide terminée par null.

Windows 8 et Windows Server 2012 : La prise en charge de cet indicateur commence.

CERT_NAME_STR_ENABLE_PUNYCODE_FLAG
0x00200000
Cet indicateur permet le décodage des chaînes IA5String en valeurs de chaîne Unicode en fonction de la valeur du paramètre dwType , comme défini ci-dessous :
  • CERT_NAME_EMAIL_TYPE : si la partie nom d’hôte de l’adresse e-mail contient un composant IA5String encodé en Punycode, il est converti en équivalent Unicode.
  • CERT_NAME_SIMPLE_DISPLAY_TYPE : si un nom d’objet de szOID_RSA_emailAddr ou le rfc822Name de l’autre nom de l’objet est retourné à partir du certificat et que la partie nom d’hôte de l’adresse e-mail contient le composant IA5String encodé Punycode, il est converti en équivalent Unicode.
  • CERT_NAME_DNS_TYPE : si le certificat a un autre nom d’émetteur, avec un choix DNSName et que la partie nom d’hôte de l’adresse e-mail contient un composant IA5String encodé Punycode, il est converti en équivalent Unicode.
  • CERT_NAME_URL_TYPE : l’URI est décodé et non boucté. Si le nom d’hôte du serveur de l’URI contient un composant IA5String encodé punycode, la chaîne de nom d’hôte est convertie en équivalent Unicode.
Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP : Cette valeur n’est pas prise en charge.

[in] pvTypePara

Pointeur vers un DWORD contenant le dwStrType ou un identificateur d’objet (OID) spécifiant l’attribut name. Le type pointé vers est déterminé par la valeur de dwType.

[out] pszNameString

Pointeur vers une mémoire tampon allouée pour recevoir la chaîne retournée. Si pszNameString n’a pas la valeur NULL et que cchNameString n’a pas la valeur zéro, pszNameString est une chaîne terminée par null.

Si CERT_NAME_SEARCH_ALL_NAMES_FLAG est spécifié dans le paramètre dwFlags et que CERT_NAME_DNS_TYPE est défini dans le paramètre dwType , la chaîne retournée contient tous les noms DNS qui s’appliquent. Chaque chaîne de la chaîne de sortie est terminée par null et la dernière chaîne est doublement terminée par null. Si aucun nom DNS n’est trouvé, une seule chaîne vide terminée par null est retournée.

[in] cchNameString

Taille, en caractères, allouée pour la chaîne retournée. La taille doit inclure le caractère NULL de fin.

Valeur retournée

Retourne le nombre de caractères convertis, y compris le caractère zéro de fin. Si pszNameString a la valeur NULL ou si cchNameString a la valeur zéro, retourne la taille requise de la chaîne de destination (y compris le caractère NULL de fin). Si le type de nom spécifié est introuvable, retourne une chaîne vide terminée par null avec un nombre de caractères retourné de 1.

Remarques

Notes

L’en-tête wincrypt.h définit CertGetNameString comme un alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Configuration requise

   
Client minimal pris en charge Windows XP [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête wincrypt.h
Bibliothèque Crypt32.lib
DLL Crypt32.dll

Voir aussi

Fonctions de conversion de données