Función CertNameToStrA (wincrypt.h)
La función CertNameToStr convierte un nombre codificado en una estructura de CERT_NAME_BLOB en una cadena de caracteres terminada en null.
La representación de cadena sigue las especificaciones de nombre distintivo en RFC 1779. Las excepciones a esta regla se enumeran en la sección Comentarios, a continuación.
Sintaxis
DWORD CertNameToStrA(
[in] DWORD dwCertEncodingType,
[in] PCERT_NAME_BLOB pName,
[in] DWORD dwStrType,
[out] LPSTR psz,
[in] DWORD csz
);
Parámetros
[in] dwCertEncodingType
Tipo de codificación de certificado que se usó para codificar el nombre. Esta función omite el identificador de tipo de codificación de mensaje , contenido en la palabra alta de este valor.
Este parámetro puede ser el siguiente tipo de codificación de certificado definido actualmente.
Valor | Significado |
---|---|
|
Especifica la codificación de certificados X.509. |
[in] pName
Puntero a la estructura CERT_NAME_BLOB que se va a convertir.
[in] dwStrType
Este parámetro especifica el formato de la cadena de salida. Este parámetro también especifica otras opciones para el contenido de la cadena.
Este parámetro puede ser uno de los valores siguientes.
Valor | Significado |
---|---|
|
Se descartan todos los identificadores de objeto (OID). CERT_RDN entradas están separadas por una coma seguida de un espacio (, ). Varios atributos de un CERT_RDN están separados por un signo más entre espacios ( + ), por ejemplo, Microsoft, Kim Abercrombie + Programador. |
|
Los OID se incluyen con un separador de signo igual (=) de su valor de atributo. CERT_RDN entradas están separadas por una coma seguida de un espacio (, ). Varios atributos de un CERT_RDN están separados por un signo más seguido de un espacio (+ ). |
|
Los OID se convierten en sus nombres de clave X.500 ; de lo contrario, son iguales que CERT_OID_NAME_STR. Si un OID no tiene un nombre X.500 correspondiente, el OID se usa con un prefijo de OID.
El valor rdn se cita si contiene espacios en blanco iniciales o finales o uno de los siguientes caracteres:
|
Las siguientes opciones también se pueden combinar con el valor anterior para especificar opciones adicionales para la cadena.
Valor | Significado |
---|---|
|
Reemplace la coma seguida de un separador de espacio (, ) por un punto y coma seguido de un separador de espacio (; ). |
|
Reemplace la coma seguida de un separador de espacio (, ) por una barra diagonal inversa seguida de la letra r seguida de una barra diagonal inversa seguida de la letra n (\r\n). |
|
Reemplace el signo más entre espacios ( + ) separador por un separador de espacio único. |
|
Deshabilite el entrecomillado. |
|
El orden de los RDN en la cadena de nombre distintivo se invierte después de la descodificación. Esta marca no se establece de forma predeterminada. |
|
De forma predeterminada, una cadena de clave X.500 CERT_RDN_T61_STRING se descodifica como UTF8. Si se produce un error en la descodificación UTF8, la tecla X.500 se descodifica como un carácter de 8 bits. Use CERT_NAME_STR_DISABLE_IE4_UTF8_FLAG para omitir el intento inicial de descodificar como UTF8. |
|
Si el nombre al que apunta el parámetro pName contiene un RDN de correo electrónico y la parte del nombre de host de la dirección de correo electrónico contiene una IA5String codificada en Punycode, el nombre se convierte en el equivalente Unicode.
Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP: Este valor no se admite. |
[out] psz
Puntero a un búfer de caracteres que recibe la cadena devuelta. El tamaño de este búfer se especifica en el parámetro csz .
[in] csz
Tamaño, en caracteres, del búfer psz . El tamaño debe incluir el carácter nulo de terminación.
Valor devuelto
Devuelve el número de caracteres convertidos, incluido el carácter nulo de terminación.
Si psz es NULL o csz es cero, devuelve el tamaño necesario de la cadena de destino.
Comentarios
Si psz no es NULL y csz no es cero, el valor psz devuelto siempre es una cadena terminada en null.
Se recomienda usar RDN de varios componentes (por ejemplo, CN=James+O=Microsoft) para evitar posibles problemas de ordenación cuando se produce la descodificación. En su lugar, considere la posibilidad de usar RDN con valores únicos (por ejemplo, CN=James, O=Microsoft).
La representación de cadena sigue las especificaciones de nombre distintivo en RFC 1779 , excepto las desviaciones descritas en la lista siguiente.
- Los nombres que contienen comillas se incluyen entre comillas dobles.
- Las cadenas vacías se incluyen entre comillas dobles.
- Las cadenas que contienen espacios consecutivos no se incluyen entre comillas.
- Los valores de nombre distintivo relativo (RDN) de tipo CERT_RDN_ENCODED_BLOB o CERT_RDN_OCTET_STRING tienen formato hexadecimal.
- Si un OID no tiene un nombre X.500 correspondiente, se usa el prefijo "OID" antes de OID.
- Los valores RDN se incluyen entre comillas dobles (en lugar de "\") si contienen espacios en blanco iniciales, espacios en blanco finales o uno de los siguientes caracteres:
- Coma (,)
- Signo más (+)
- Signo igual (=)
- Marca de pulgada (")
- Barra diagonal inversa (/)
- Menor que el signo (<)
- Mayor que el signo (>)
- Signo de número (#)
- Punto y coma (;)
- El nombre de clave X.500 para stateOrProvinceName (2.5.4.8) es "S". Este valor es diferente del nombre de clave RFC 1779 X.500 ("ST").
Clave | Cadena de identificador de objeto |
---|---|
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 |
Ejemplos
Para ver un ejemplo que usa esta función, consulte
Programa C de ejemplo: Convertir nombres de certificados a ASN.1 y Atrás.
Nota
El encabezado wincrypt.h define CertNameToStr como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.
Requisitos
Cliente mínimo compatible | Windows XP [aplicaciones de escritorio | aplicaciones para UWP] |
Servidor mínimo compatible | Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP] |
Plataforma de destino | Windows |
Encabezado | wincrypt.h |
Library | Crypt32.lib |
Archivo DLL | Crypt32.dll |