Funzione CertGetNameStringA (wincrypt.h)

La funzione CertGetNameString ottiene il nome dell'oggetto o dell'autorità emittente da un certificato CERT_CONTEXT struttura e lo converte in una stringa di caratteri con terminazione Null.

Sintassi

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

Parametri

[in] pCertContext

Puntatore a un contesto di certificato CERT_CONTEXT che include un oggetto e un nome dell'autorità di certificazione da convertire.

[in] dwType

DWORD che indica come trovare il nome e come deve essere formattato l'output.

Valore Significato
CERT_NAME_EMAIL_TYPE
1
Se il certificato ha un'estensione Nome alternativo soggetto o Nome alternativo autorità di certificazione, usa la prima scelta rfc822Name. Se nell'estensione non viene trovata alcuna scelta rfc822Name, usa il campo Nome soggetto per l'OID Email. Se viene trovato rfc822Name o l'OID Email, usa la stringa . In caso contrario, restituisce una stringa vuota (il conteggio dei caratteri restituito è 1). pvTypePara non viene usato ed è impostato su NULL.
CERT_NAME_RDN_TYPE
2
Converte il BLOB del nome soggetto chiamando CertNameToStr. pvTypePara punta a un DWORD contenente il dwStrType passato a CertNameToStr. Se il campo Nome soggetto è vuoto e il certificato ha un'estensione Nome alternativo soggetto, usa la prima scelta nome directory da CertNameToStr.
CERT_NAME_ATTR_TYPE
3
pvTypePara punta a un identificatore di oggetto (OID) che specifica l'attributo name da restituire. Ad esempio, se pvTypePara è szOID_COMMON_NAME, usa il membro Subject Name. Se il membro Nome soggetto è vuoto e il certificato dispone di un'estensione Subject Alternative Name, usa la prima scelta directoryName.
CERT_NAME_SIMPLE_DISPLAY_TYPE
4
Esegue l'iterazione dell'elenco di attributi del nome seguente e usa il nome soggetto o l'estensione Nome alternativo soggetto per la prima occorrenza di: szOID_COMMON_NAME, szOID_ORGANIZATIONAL_UNIT_NAME, szOID_ORGANIZATION_NAME o szOID_RSA_emailAddr.

Se uno di questi attributi non viene trovato, usa l'estensione Subject Alternative Name per una scelta rfc822Name. Se non esiste ancora alcuna corrispondenza, usa il primo attributo.

pvTypePara non viene usato ed è impostato su NULL.

CERT_NAME_FRIENDLY_DISPLAY_TYPE
5
Controlla la presenza di una proprietà CERT_FRIENDLY_NAME_PROP_ID del certificato. Se il certificato ha questa proprietà, viene restituito. Se il certificato non dispone della proprietà , viene restituito il CERT_NAME_SIMPLE_DISPLAY_TYPE.
CERT_NAME_DNS_TYPE
6
Se il certificato ha un'estensione Nome alternativo soggetto per l'autorità emittente, Issuer Alternative Name ,cercare first DNSName choice.

Se la scelta DNSName non viene trovata nell'estensione, cercare l'OID CN nel campo Nome soggetto, "2.5.4.3".

Se viene trovato DNSName o CN OID, restituire la stringa. In caso contrario, restituisce una stringa vuota.

CERT_NAME_URL_TYPE
7
Se il certificato ha un'estensione Nome alternativo soggetto per l'autorità emittente, Issuer Alternative Name (Nome alternativo autorità di certificazione), cercare first URL choice (Nome alternativo dell'autorità emittente). Se viene trovata la scelta dell'URL, restituire la stringa. In caso contrario, restituisce una stringa vuota.
CERT_NAME_UPN_TYPE
8
Se il certificato ha un'estensione Nome alternativo soggetto, cercare un pszObjId == szOID_NT_PRINCIPAL_NAME, ("1.3.6.1.4.1.311.20.20.2.3").

Se viene trovato l'OID UPN, decodificare il BLOB come X509_UNICODE_ANY_STRING e restituire la stringa decodificata. In caso contrario, restituisce una stringa vuota.

[in] dwFlags

Indica il tipo di elaborazione necessaria.

Valore Significato
CERT_NAME_ISSUER_FLAG
0x1
Acquisisce il nome dell'emittente. Se non impostato, acquisisce il nome dell'oggetto.
CERT_NAME_DISABLE_IE4_UTF8_FLAG
0x00010000
Ignora il tentativo iniziale predefinito di decodificare il valore come UTF8 e decodifica come caratteri a 8 bit.
CERT_NAME_SEARCH_ALL_NAMES_FLAG
0x2
Se il parametro dwType è impostato su CERT_NAME_DNS_TYPE, vengono restituiti tutti i nomi applicabili per il valore DNS specificato. Se non è presente alcun nome DNS, ma nel soggetto è presente un componente CN, viene restituito il cn. Se è presente un nome CN e un nome DNS, vengono restituiti solo i nomi DNS. Questo simula i criteri di compilazione della catena SSL. Se si imposta questo flag per un tipo di nome diverso da CERT_NAME_DNS_TYPE, questa funzione restituisce una stringa vuota con terminazione Null.

Windows 8 e Windows Server 2012: Viene avviato il supporto per questo flag.

CERT_NAME_STR_ENABLE_PUNYCODE_FLAG
0x00200000
Questo flag consente la decodifica delle stringhe IA5String in valori stringa Unicode in base al valore del parametro dwType , come definito di seguito:
  • CERT_NAME_EMAIL_TYPE: se la parte del nome host dell'indirizzo di posta elettronica contiene un componente IA5String codificato punycode, viene convertito nell'equivalente Unicode.
  • CERT_NAME_SIMPLE_DISPLAY_TYPE: se viene restituito un nome soggetto di szOID_RSA_emailAddr o rfc822Name dal nome alternativo soggetto dal certificato e la parte del nome host dell'indirizzo di posta elettronica contenente il componente IA5String codificato punycode, viene convertita nell'equivalente Unicode.
  • CERT_NAME_DNS_TYPE: se il certificato ha un nome alternativo dell'autorità di certificazione, con una scelta DNSName e la parte del nome host dell'indirizzo di posta elettronica contenente il componente IA5String codificato punycode, viene convertito nell'equivalente Unicode.
  • CERT_NAME_URL_TYPE: l'URI viene decodificato e senza caratteri di escape. Se il nome host del server dell'URI contiene un componente IA5String codificato punycode, la stringa del nome host viene convertita nell'equivalente Unicode.
Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Questo valore non è supportato.

[in] pvTypePara

Puntatore a un DWORD contenente dwStrType o un identificatore di oggetto (OID) che specifica l'attributo name. Il tipo a cui punta è determinato dal valore di dwType.

[out] pszNameString

Puntatore a un buffer allocato per ricevere la stringa restituita. Se pszNameString non è NULL e cchNameString non è zero, pszNameString è una stringa con terminazione Null.

Se CERT_NAME_SEARCH_ALL_NAMES_FLAG viene specificato nel parametro dwFlags e CERT_NAME_DNS_TYPE è impostato nel parametro dwType , la stringa restituita conterrà tutti i nomi DNS applicabili. Ogni stringa nella stringa di output è con terminazione Null e l'ultima stringa sarà con terminazione Null doppia. Se non vengono trovati nomi DNS, viene restituita una singola stringa vuota con terminazione Null.

[in] cchNameString

Dimensione, in caratteri, allocata per la stringa restituita. Le dimensioni devono includere il carattere NULL di terminazione.

Valore restituito

Restituisce il numero di caratteri convertiti, incluso il carattere zero di terminazione. Se pszNameString è NULL o cchNameString è zero, restituisce le dimensioni necessarie della stringa di destinazione (incluso il carattere NULL di terminazione). Se il tipo di nome specificato non viene trovato, restituisce una stringa vuota con terminazione Null con un numero di caratteri restituito pari a 1.

Commenti

Nota

L'intestazione wincrypt.h definisce CertGetNameString come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.

Requisiti

   
Client minimo supportato Windows XP [app desktop | App UWP]
Server minimo supportato Windows Server 2003 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione wincrypt.h
Libreria Crypt32.lib
DLL Crypt32.dll

Vedi anche

Funzioni di conversione dei dati