Freigeben über


CertGetNameStringA-Funktion (wincrypt.h)

Die CertGetNameString--Funktion ruft den Antragsteller- oder Ausstellernamen aus einem Zertifikat CERT_CONTEXT Struktur ab und konvertiert ihn in eine NULL--terminated-Zeichenfolge.

Syntax

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

Parameter

[in] pCertContext

Ein Zeiger auf einen CERT_CONTEXT Zertifikatkontext, der einen Antragsteller- und Ausstellernamen enthält, der konvertiert werden soll.

[in] dwType

DWORD- angibt, wie der Name gefunden werden soll und wie die Ausgabe formatiert werden soll.

Wert Bedeutung
CERT_NAME_EMAIL_TYPE
1
Wenn das Zertifikat über eine Alternative Antragstellername-Erweiterung oder einen alternativen Ausstellernamen verfügt, wird die erste rfc822Name-Option verwendet. Wenn in der Erweiterung keine rfc822Name-Auswahl gefunden wird, wird das Feld "Antragstellername" für das E-Mail-OID verwendet. Wenn entweder rfc822Name oder das E-Mail-OID gefunden wird, wird die Zeichenfolge verwendet. Andernfalls wird eine leere Zeichenfolge zurückgegeben (zurückgegebene Zeichenanzahl ist 1). pvTypePara wird nicht verwendet und wird auf NULL-festgelegt.
CERT_NAME_RDN_TYPE
2
Konvertiert das BLOB des Antragstellernamens durch Aufrufen CertNameToStr-. pvTypePara verweist auf ein DWORD- mit dem dwStrType an CertNameToStrübergeben. Wenn das Feld "Antragstellername" leer ist und das Zertifikat über die Erweiterung "Alternativer Antragstellername" verfügt, wird die erste Auswahl des Verzeichnisnamens aus CertNameToStrverwendet.
CERT_NAME_ATTR_TYPE
3
pvTypePara verweist auf einen Objektbezeichner (OID), der das zurückzugebende Namensattribute angibt. Wenn z. B. pvTypePara szOID_COMMON_NAME ist, wird das Element "Antragstellername" verwendet. Wenn das Element "Antragstellername" leer ist und das Zertifikat über eine Erweiterung des alternativen Antragstellernamens verfügt, wird die erste Verzeichnisname-Option verwendet.
CERT_NAME_SIMPLE_DISPLAY_TYPE
4
Durchlaufen Sie die folgende Liste der Namensattribute und verwendet die Erweiterung "Antragstellername" oder "Alternativer Antragstellername" für das erste Vorkommen von: szOID_COMMON_NAME, szOID_ORGANIZATIONAL_UNIT_NAME, szOID_ORGANIZATION_NAME oder szOID_RSA_emailAddr.

Wenn eines dieser Attribute nicht gefunden wird, verwendet die Erweiterung "Alternativer Antragstellername" für eine rfc822Name-Auswahl. Wenn noch keine Übereinstimmung vorhanden ist, wird das erste Attribut verwendet.

pvTypePara wird nicht verwendet und wird auf NULL-festgelegt.

CERT_NAME_FRIENDLY_DISPLAY_TYPE
5
Überprüft das Zertifikat auf eine CERT_FRIENDLY_NAME_PROP_ID-Eigenschaft. Wenn das Zertifikat über diese Eigenschaft verfügt, wird es zurückgegeben. Wenn das Zertifikat nicht über die Eigenschaft verfügt, wird die CERT_NAME_SIMPLE_DISPLAY_TYPE zurückgegeben.
CERT_NAME_DNS_TYPE
6
Wenn das Zertifikat über eine Alternative Antragstellername-Erweiterung für Aussteller verfügt, suchen Sie nach der ersten DNSName-Auswahl.

Wenn die DNSName-Auswahl in der Erweiterung nicht gefunden wird, durchsuchen Sie das Feld "Antragstellername" nach dem CN OID , "2.5.4.3".

Wenn der DNSName oder CN OID gefunden wird, geben Sie die Zeichenfolge zurück. Geben Sie andernfalls eine leere Zeichenfolge zurück.

CERT_NAME_URL_TYPE
7
Wenn das Zertifikat über eine Alternative Antragstellername-Erweiterung für Aussteller verfügt, suchen Sie nach der ersten URL-Auswahl. Wenn die URL-Auswahl gefunden wird, geben Sie die Zeichenfolge zurück. Geben Sie andernfalls eine leere Zeichenfolge zurück.
CERT_NAME_UPN_TYPE
8
Wenn das Zertifikat über die Erweiterung "Alternativer Antragstellername" verfügt, suchen Sie nach einer pszObjId == szOID_NT_PRINCIPAL_NAME ("1.3.6.1.4.1.311.20.2.3").

Wenn der UPN-OID gefunden wird, decodieren Sie das BLOB als X509_UNICODE_ANY_STRING, und geben Sie die decodierte Zeichenfolge zurück. Geben Sie andernfalls eine leere Zeichenfolge zurück.

[in] dwFlags

Gibt den Typ der erforderlichen Verarbeitung an.

Wert Bedeutung
CERT_NAME_ISSUER_FLAG
0x1
Erwirbt den Namen des Ausstellers. Wenn sie nicht festgelegt ist, wird der Name des Betreffs erfasst.
CERT_NAME_DISABLE_IE4_UTF8_FLAG
0x00010000
Überspringt den standardmäßigen anfänglichen Versuch, den Wert als UTF8 zu decodieren und als 8-Bit-Zeichen zu decodieren.
CERT_NAME_SEARCH_ALL_NAMES_FLAG
0x2
Wenn der dwType Parameter auf CERT_NAME_DNS_TYPEfestgelegt ist, werden alle anwendbaren Namen für den angegebenen DNS-Wert zurückgegeben. Wenn kein DNS-Name vorhanden ist, aber eine CN-Komponente im Betreff vorhanden ist, wird stattdessen der CN zurückgegeben. Wenn ein CN und ein DNS-Name vorhanden sind, werden nur die DNS-Namen zurückgegeben. Dies imitiert die SSL-Chain-Gebäuderichtlinie. Wenn Sie dieses Kennzeichen für einen anderen Namenstyp als CERT_NAME_DNS_TYPEfestlegen, gibt diese Funktion eine leere Zeichenfolge mit Null-Beendigung zurück.

Windows 8 und Windows Server 2012: Unterstützung für dieses Flag beginnt.

CERT_NAME_STR_ENABLE_PUNYCODE_FLAG
0x00200000
Dieses Flag ermöglicht die Decodierung von IA5String- Zeichenfolgen in Unicode-Zeichenfolgenwerte basierend auf dem dwType Parameterwert wie unten definiert:
  • CERT_NAME_EMAIL_TYPE: Wenn der Hostnamenteil der E-Mail-Adresse einen punycodecodierten IA5String--Komponente enthält, wird er in das Unicode-Äquivalent konvertiert.
  • CERT_NAME_SIMPLE_DISPLAY_TYPE: Wenn ein Antragstellername von szOID_RSA_emailAddr oder der rfc822Name vom Alternativen Antragstellernamen aus dem Zertifikat zurückgegeben wird, und der Hostnamenteil der E-Mail-Adresse, der eine Punycode-codierte IA5String--Komponente enthält, wird sie in die Unicode-Entsprechung konvertiert.
  • CERT_NAME_DNS_TYPE: Wenn das Zertifikat über einen alternativen Ausstellernamen verfügt, und der Hostnamenteil der E-Mail-Adresse eine punycodecodierte IA5String--Komponente enthält, wird sie in das Unicode-Äquivalent konvertiert.
  • CERT_NAME_URL_TYPE: Der URI ist decodiert und entschlüsselt. Wenn der Serverhostname des URI einen punycodecodierten IA5String- Komponente enthält, wird die Hostnamenzeichenfolge in das Unicode-Äquivalent konvertiert.
Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP: Dieser Wert wird nicht unterstützt.

[in] pvTypePara

Ein Zeiger auf eine DWORD-, die den dwStrType- enthält, oder einen Objektbezeichner (OID), der das Namensattribute angibt. Der typ, auf den verwiesen wird, wird durch den Wert von dwTypebestimmt.

[out] pszNameString

Ein Zeiger auf einen zugewiesenen Puffer, um die zurückgegebene Zeichenfolge zu empfangen. Wenn pszNameString- nicht NULL- ist und cchNameString- nicht null ist, ist pszNameString- eine NULL--terminated-Zeichenfolge.

Wenn CERT_NAME_SEARCH_ALL_NAMES_FLAG im parameter dwFlags angegeben wird und CERT_NAME_DNS_TYPE im dwType--Parameter festgelegt wird, enthält die zurückgegebene Zeichenfolge alle DNS-Namen, die angewendet werden. Jede Zeichenfolge in der Ausgabezeichenfolge wird null beendet, und die letzte Zeichenfolge wird doppelt null beendet. Wenn keine DNS-Namen gefunden werden, wird eine einzelne leere Zeichenfolge mit Null beendet.

[in] cchNameString

Größe der zurückgegebenen Zeichenfolge in Zeichen. Die Größe muss das beendende NULL-Zeichen Zeichen enthalten.

Rückgabewert

Gibt die Anzahl der konvertierten Zeichen zurück, einschließlich des endenden Nullzeichens. Wenn pszNameString-NULL- ist oder cchNameString null ist, wird die erforderliche Größe der Zielzeichenfolge zurückgegeben (einschließlich des endierenden NULL- Zeichens). Wenn der angegebene Namenstyp nicht gefunden wird, wird eine null--terminated leere Zeichenfolge mit einer zurückgegebenen Zeichenanzahl von 1 zurückgegeben.

Bemerkungen

Anmerkung

Der wincrypt.h-Header definiert CertGetNameString als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows XP [Desktop-Apps | UWP-Apps]
mindestens unterstützte Server- Windows Server 2003 [Desktop-Apps | UWP-Apps]
Zielplattform- Fenster
Header- wincrypt.h
Library Crypt32.lib
DLL- Crypt32.dll

Siehe auch

Datenkonvertierungsfunktionen