Condividi tramite


Funzione CertGetNameStringA (wincrypt.h)

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

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 soggetto e un nome dell'autorità emittente da convertire.

[in] dwType

DWORD che indica come trovare il nome e come formattare 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 posta elettronica. Se viene trovato rfc822Name o OID di posta elettronica, usa la stringa . In caso contrario, restituisce una stringa vuota (il numero di 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 dispone di 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) specificando l'attributo name da restituire. Ad esempio, se pvTypePara è szOID_COMMON_NAME, usa il membro Nome soggetto. Se il membro Nome soggetto è vuoto e il certificato dispone di un'estensione Nome alternativo soggetto, usa la prima scelta directoryName.
CERT_NAME_SIMPLE_DISPLAY_TYPE
4
Scorre l'elenco di attributi del nome seguente e usa l'estensione Nome soggetto o 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 Nome alternativo soggetto 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 il certificato per una proprietà CERT_FRIENDLY_NAME_PROP_ID. 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 dispone di un'estensione Nome alternativo soggetto per l'autorità emittente, Nome alternativo autorità di certificazione, cercare la prima scelta DNSName.

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

Se viene trovato il nome DNS o l'OID CN, restituire la stringa. In caso contrario, restituire una stringa vuota.

CERT_NAME_URL_TYPE
7
Se il certificato ha un'estensione Nome alternativo soggetto per l'autorità emittente, Nome alternativo autorità di certificazione, cercare la prima scelta url. Se viene trovata la scelta dell'URL, restituire la stringa. In caso contrario, restituire 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, restituire una stringa vuota.

[in] dwFlags

Indica il tipo di elaborazione necessario.

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 di 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 con codifica Punycode IA5String, 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 del soggetto dal certificato e la parte del nome host dell'indirizzo di posta elettronica contenente punycode codificato componente IA5String, viene convertito 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 punycode codificato componente IA5String, viene convertito nell'equivalente Unicode.
  • CERT_NAME_URL_TYPE: l'URI è decodificato e senza caratteri di escape. Se il nome host del server dell'URI contiene un componente con codifica Punycode componente IA5String, 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 il 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 null-terminate.

Se CERT_NAME_SEARCH_ALL_NAMES_FLAG viene specificato nel parametro dwFlags e CERT_NAME_DNS_TYPE viene 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 verrà terminata con doppio carattere Null. 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 null). Se il tipo di nome specificato non viene trovato, restituisce un nullstringa vuota con terminazione con un numero di caratteri restituito pari a 1.

Osservazioni

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 non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.

Fabbisogno

Requisito Valore
client minimo supportato Windows XP [app desktop | App UWP]
server minimo supportato Windows Server 2003 [app desktop | App UWP]
piattaforma di destinazione Finestre
intestazione wincrypt.h
libreria Crypt32.lib
dll Crypt32.dll

Vedere anche

funzioni di conversione dei dati