Funzione CertNameToStrA (wincrypt.h)
La funzione CertNameToStr converte un nome codificato in una struttura CERT_NAME_BLOB in una stringa di caratteri con terminazione null.
La rappresentazione stringa segue le specifiche del nome distinto in RFC 1779. Le eccezioni a questa regola sono elencate nella sezione Osservazioni, di seguito.
Sintassi
DWORD CertNameToStrA(
[in] DWORD dwCertEncodingType,
[in] PCERT_NAME_BLOB pName,
[in] DWORD dwStrType,
[out] LPSTR psz,
[in] DWORD csz
);
Parametri
[in] dwCertEncodingType
Tipo di codifica del certificato usato per codificare il nome. L'identificatore del tipo di codifica del messaggio , contenuto nell'alto WORD di questo valore, viene ignorato da questa funzione.
Questo parametro può essere il seguente tipo di codifica del certificato attualmente definito.
Valore | Significato |
---|---|
|
Specifica la codifica del certificato X.509. |
[in] pName
Puntatore alla struttura CERT_NAME_BLOB da convertire.
[in] dwStrType
Questo parametro specifica il formato della stringa di output. Questo parametro specifica anche altre opzioni per il contenuto della stringa.
Questo parametro può avere uno dei valori seguenti.
Valore | Significato |
---|---|
|
Tutti gli identificatori di oggetto (OID) vengono eliminati. CERT_RDN voci sono separate da una virgola seguita da uno spazio (, ). Più attributi in un CERT_RDN sono separati da un segno più racchiuso in spazi ( + ), ad esempio Microsoft, Kim Abercrombie + Programmatore. |
|
Gli ID sono inclusi con un separatore di uguale segno (=) dal valore dell'attributo. CERT_RDN voci sono separate da una virgola seguita da uno spazio (, ). Più attributi in un CERT_RDN sono separati da un segno più seguito da uno spazio (+ ). |
|
Gli ID vengono convertiti nei nomi delle chiavi X.500 ; altrimenti, sono uguali a CERT_OID_NAME_STR. Se un OID non ha un nome X.500 corrispondente, l'OID viene usato con un prefisso OID.
Il valore RDN viene citato se contiene spazi vuoti iniziali o finali o uno dei caratteri seguenti:
|
Le opzioni seguenti possono essere combinate anche con il valore precedente per specificare opzioni aggiuntive per la stringa.
Valore | Significato |
---|---|
|
Sostituire la virgola seguita da uno spazio (, ) separatore con un punto e virgola seguito da uno spazio (; ) separatore. |
|
Sostituire la virgola seguita da uno spazio (, ) separatore con una barra rovesciata seguita dalla lettera r seguita da una barra rovesciata seguita dalla lettera n (\r\n) separatore. |
|
Sostituire il segno più racchiuso tra spazi ( + ) separatore con un singolo separatore di spazio. |
|
Disabilitare la citazione. |
|
L'ordine delle reti RDN nella stringa di nome distinto viene invertito dopo la decodifica. Questo flag non è impostato per impostazione predefinita. |
|
Per impostazione predefinita, una stringa di chiave X.500 CERT_RDN_T61_STRING viene decodificata come UTF8. Se la decodifica UTF8 ha esito negativo, la chiave X.500 viene decodificata come carattere a 8 bit. Usare CERT_NAME_STR_DISABLE_IE4_UTF8_FLAG per ignorare il tentativo iniziale di decodificare come UTF8. |
|
Se il nome a cui punta il parametro pName contiene un messaggio di posta elettronica RDN e la parte del nome host dell'indirizzo di posta elettronica contiene un IA5String con codifica Punycode, il nome viene convertito nell'equivalente Unicode.
Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Questo valore non è supportato. |
[out] psz
Puntatore a un buffer di caratteri che riceve la stringa restituita. Le dimensioni di questo buffer vengono specificate nel parametro csz .
[in] csz
Dimensioni, in caratteri, del buffer psz . Le dimensioni devono includere il carattere Null terminante.
Valore restituito
Restituisce il numero di caratteri convertiti, incluso il carattere Null terminante.
Se psz è NULL o csz è zero, restituisce le dimensioni necessarie della stringa di destinazione.
Commenti
Se psz non è NULL e csz non è zero, la psz restituita è sempre una stringa con terminazione null.
È consigliabile usare RDN multicomponente (ad esempio CN=James+O=Microsoft) per evitare possibili problemi di ordinamento quando si verifica la decodifica. Prendere invece in considerazione l'uso di RDN con valori singoli(ad esempio CN=James, O=Microsoft).
La rappresentazione stringa segue le specifiche del nome distinto in RFC 1779 , ad eccezione delle deviazioni descritte nell'elenco seguente.
- I nomi che contengono virgolette sono racchiusi tra virgolette doppie.
- Le stringhe vuote sono racchiuse tra virgolette doppie.
- Le stringhe che contengono spazi consecutivi non sono racchiuse tra virgolette.
- I valori di nome distinto relativo (RDN) di tipo CERT_RDN_ENCODED_BLOB o CERT_RDN_OCTET_STRING vengono formattati in esadecimale.
- Se un OID non ha un nome X.500 corrispondente, il prefisso "OID" viene usato prima dell'OID.
- I valori RDN sono racchiusi tra virgolette doppie anziché "\") se contengono spazi vuoti iniziali, spazi vuoti finali o uno dei caratteri seguenti:
- Virgola (,)
- Segno più (+)
- Segno di uguale (=)
- Segno di pollice (")
- Barra rovesciata (/)
- Segno minore (<)
- Segno maggiore di (>)
- Segno di numero (#)
- Punto e virgola (;)
- Il nome della chiave X.500 per stateOrProvinceName (2.5.4.8) è "S". Questo valore è diverso dal nome della chiave X.500 X.500 RFC 1779 ("ST").
Chiave | Stringa dell'identificatore di oggetto |
---|---|
E | 1.2.840.113549.1.9.1 |
T | 2.5.4.12 |
G | 2.5.4.42 |
I | 2.5.4.43 |
SN | 2.5.4.4 |
Esempio
Per un esempio che usa questa funzione, vedere
Esempio di programma C: conversione di nomi da certificati ad ASN.1 e indietro.
Nota
L'intestazione wincrypt.h definisce CertNameToStr 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 funzioni.
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 |