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 |
---|---|
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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 |
---|---|
|
Acquisisce il nome dell'emittente. Se non impostato, acquisisce il nome dell'oggetto. |
|
Ignora il tentativo iniziale predefinito di decodificare il valore come UTF8 e decodifica come caratteri a 8 bit. |
|
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. |
|
Questo flag consente la decodifica delle stringhe IA5String in valori stringa Unicode in base al valore del parametro dwType , come definito di seguito:
|
[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 |