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-endende 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 , das angibt, wie der Name gefunden und wie die Ausgabe formatiert werden soll.

Wert Bedeutung
CERT_NAME_EMAIL_TYPE
1
Wenn das Zertifikat über eine Erweiterung für alternativen Antragstellernamen oder einen alternativen Ausstellernamen verfügt, wird die erste rfc822Name-Auswahl verwendet. Wenn keine rfc822Name-Auswahl in der Erweiterung gefunden wird, verwendet das Feld Antragstellername für die Email OID. Wenn rfc822Name oder die Email OID gefunden wird, verwendet die Zeichenfolge. Andernfalls wird eine leere Zeichenfolge zurückgegeben (die Anzahl der zurückgegebenen Zeichen ist 1). pvTypePara wird nicht verwendet und ist auf NULL festgelegt.
CERT_NAME_RDN_TYPE
2
Konvertiert das Blob "Antragstellername" durch Aufrufen von CertNameToStr. pvTypePara verweist auf ein DWORD, das den an CertNameToStr übergebenen dwStrType enthält. Wenn das Feld Antragstellername leer ist und das Zertifikat über die Erweiterung Alternativer Antragstellername verfügt, wird die erste Verzeichnisname-Auswahl von CertNameToStr verwendet.
CERT_NAME_ATTR_TYPE
3
pvTypePara verweist auf einen Objektbezeichner (Object Identifier, OID), der das zurückzugebende name-Attribut angibt. Wenn pvTypePara beispielsweise szOID_COMMON_NAME ist, verwendet das Member Antragstellername. Wenn das Member Antragstellername leer ist und das Zertifikat über eine Erweiterung für alternativen Antragstellernamen verfügt, verwendet die erste Verzeichnisname-Auswahl.
CERT_NAME_SIMPLE_DISPLAY_TYPE
4
Durchläuft die folgende Liste der Namensattribute und verwendet den Antragstellernamen oder die Erweiterung 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 immer noch keine Übereinstimmung vorhanden ist, verwendet das erste Attribut.

pvTypePara wird nicht verwendet und ist 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 die Erweiterung Alternativer Antragstellername für Aussteller( Ausstelleralternativer Name) verfügt, suchen Sie nach der ersten DNSName-Wahl.

Wenn die Option DNSName in der Erweiterung nicht gefunden wird, suchen Sie im Feld Antragstellername nach der CN-OID "2.5.4.3".

Wenn die DNSName- oder CN-OID gefunden wird, geben Sie die Zeichenfolge zurück. Andernfalls wird eine leere Zeichenfolge zurückgegeben.

CERT_NAME_URL_TYPE
7
Wenn das Zertifikat über die Erweiterung Alternativer Antragstellername für Aussteller( Ausstelleralternativer Name) verfügt, suchen Sie nach der ersten URL-Wahl. Wenn die URL-Auswahl gefunden wird, geben Sie die Zeichenfolge zurück. Andernfalls wird eine leere Zeichenfolge zurückgegeben.
CERT_NAME_UPN_TYPE
8
Wenn das Zertifikat über die Erweiterung Alternativer Antragstellername verfügt, suchen Sie in den Optionen OtherName nach einer pszObjId == szOID_NT_PRINCIPAL_NAME ("1.3.6.1.4.1.311.20.2.3").

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

[in] dwFlags

Gibt den Typ der erforderlichen Verarbeitung an.

Wert Bedeutung
CERT_NAME_ISSUER_FLAG
0x1
Ruft den Namen des Ausstellers ab. Wenn nicht festgelegt, wird der Name des Antragstellers abgerufen.
CERT_NAME_DISABLE_IE4_UTF8_FLAG
0x00010000
Überspringt den anfänglichen Standardversuch, 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_TYPE festgelegt ist, werden alle anwendbaren Namen für den angegebenen DNS-Wert zurückgegeben. Wenn kein DNS-Name, 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 Richtlinie zum Erstellen von SSL-Ketten. Wenn Sie dieses Flag für einen anderen Namenstyp als CERT_NAME_DNS_TYPE festlegen, gibt diese Funktion eine leere NULL-Zeichenfolge zurück.

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

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

[in] pvTypePara

Ein Zeiger auf ein DWORD , das den dwStrType oder einen Objektbezeichner (OID) enthält, der das name-Attribut angibt. Der Typ, auf den verwiesen wird, wird durch den Wert von dwType bestimmt.

[out] pszNameString

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

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

[in] cchNameString

Größe in Zeichen, die für die zurückgegebene Zeichenfolge zugewiesen ist. Die Größe muss das beendende NULL-Zeichen enthalten.

Rückgabewert

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

Hinweise

Hinweis

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 nicht codierungsneutralem Code kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile wincrypt.h
Bibliothek Crypt32.lib
DLL Crypt32.dll

Weitere Informationen

Datenkonvertierungsfunktionen