Condividi tramite


Funzione CertNameToStrW (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 di stringa segue le specifiche dei nomi distinti in RFC 1779. Le eccezioni a questa regola sono elencate nella sezione Osservazioni di seguito.

Sintassi

DWORD CertNameToStrW(
  [in]  DWORD           dwCertEncodingType,
  [in]  PCERT_NAME_BLOB pName,
  [in]  DWORD           dwStrType,
  [out] LPWSTR          psz,
  [in]  DWORD           csz
);

Parametri

[in] dwCertEncodingType

Tipo di codifica del certificato utilizzato per codificare il nome. Il tipo di codifica messaggio identificatore, contenuto nell' word elevato di questo valore, viene ignorato da questa funzione.

Questo parametro può essere il tipo di codifica del certificato attualmente definito seguente.

Valore Significato
X509_ASN_ENCODING
1 (0x1)
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ò essere uno dei valori seguenti.

Valore Significato
CERT_SIMPLE_NAME_STR
1
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 tra spazi ( + ), ad esempio Microsoft, Kim Abercrombie + Programmatore.
CERT_OID_NAME_STR
2
Gli ID predefiniti sono inclusi con un separatore di segno di uguale (=) 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 (+ ).
CERT_X500_NAME_STR
3
Gli OID vengono convertiti nei nomi delle chiavi X.500; in caso contrario, 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 racchiuso tra virgolette se contiene spazi vuoti iniziali o finali o uno dei caratteri seguenti:

  • Virgola (,)
  • Segno più (+)
  • Segno di uguale (=)
  • Segno di pollice (")
  • Barra rovesciata seguita dalla lettera n (\n)
  • Segno minore (<)
  • Segno maggiore di (>)
  • Segno di numero (#)
  • Punto e virgola (;)
La virgoletta è un segno di pollice ("). Se il valore RDN contiene un segno di pollice, viene racchiuso tra virgolette ("").
 

È anche possibile combinare le opzioni seguenti con il valore precedente per specificare opzioni aggiuntive per la stringa.

Valore Significato
CERT_NAME_STR_SEMICOLON_FLAG
0x40000000
Sostituire la virgola seguita da un separatore di spazio (, ) con un punto e virgola seguito da un separatore di spazio (; ).
CERT_NAME_STR_CRLF_FLAG
0x08000000
Sostituire la virgola seguita da un separatore di spazio (, ) con una barra rovesciata seguita dalla lettera r seguita da una barra rovesciata seguita dalla lettera n (\r\n) separatore.
CERT_NAME_STR_NO_PLUS_FLAG
0x20000000
Sostituire il segno più racchiuso tra spazi ( + ) separatore con un separatore di spazio singolo.
CERT_NAME_STR_NO_QUOTING_FLAG
0x10000000
Disabilitare l'inserimento tra virgolette.
CERT_NAME_STR_REVERSE_FLAG
0x02000000
L'ordine dei rdn nella stringa del nome distinto viene invertito dopo la decodifica. Questo flag non è impostato per impostazione predefinita.
CERT_NAME_STR_DISABLE_IE4_UTF8_FLAG
0x00010000
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.
CERT_NAME_STR_ENABLE_PUNYCODE_FLAG
0x00200000
Se il nome a cui punta il parametro pName contiene un rdn di posta elettronica e la parte del nome host dell'indirizzo di posta elettronica contiene un punycode codificato IA5String, 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

Dimensione, in caratteri, del buffer di psz. Le dimensioni devono includere il carattere Null di terminazione.

Valore restituito

Restituisce il numero di caratteri convertiti, incluso il carattere Null di terminazione.

Se psz è NULL o csz è zero, restituisce le dimensioni necessarie della stringa di destinazione.

Osservazioni

Se psz non è NULL e csz non è zero, il psz restituito è sempre una stringa con terminazione Null.

È consigliabile usare RDN multicomponenti (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 di stringa segue le specifiche dei nomi distinti in RFC 1779 ad eccezione delle deviazioni descritte nell'elenco seguente.

  • I nomi contenenti 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 RDN (Relative Distinguished Name) di tipo CERT_RDN_ENCODED_BLOB o CERT_RDN_OCTET_STRING vengono formattati in formato 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").
Inoltre, i nomi di chiave X.500 seguenti non sono menzionati in RFC 1779, ma possono essere restituiti da questa API:
Chiave Stringa dell'identificatore di oggetto
E 1.2.840.113549.1.9.1
T 2.5.4.12
G 2.5.4.42
Io 2.5.4.43
SN 2.5.4.4
 

Esempi

Per un esempio che usa questa funzione, vedere

programma C di esempio: 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 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

CertRDNValueToStr

CertStrToName

funzioni di conversione dei dati