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 |
---|---|
|
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. |
|
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. |
|
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. |
|
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. |
|
Ü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. |
|
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. |
|
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. |
|
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 |
---|---|
|
Ruft den Namen des Ausstellers ab. Wenn nicht festgelegt, wird der Name des Antragstellers abgerufen. |
|
Überspringt den anfänglichen Standardversuch, den Wert als UTF8 zu decodieren und als 8-Bit-Zeichen zu decodieren. |
|
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. |
|
Dieses Flag ermöglicht die Decodierung von IA5String-Zeichenfolgen mit Unicode-Zeichenfolgenwerten basierend auf dem dwType-Parameterwert wie unten definiert:
|
[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 |