Compartir a través de


Función CertStrToNameA (wincrypt.h)

La función CertStrToName convierte una cadena X.500 terminada en null en un nombre de certificado codificado.

Sintaxis

BOOL CertStrToNameA(
  [in]            DWORD  dwCertEncodingType,
  [in]            LPCSTR pszX500,
  [in]            DWORD  dwStrType,
  [in, optional]  void   *pvReserved,
  [out]           BYTE   *pbEncoded,
  [in, out]       DWORD  *pcbEncoded,
  [out, optional] LPCSTR *ppszError
);

Parámetros

[in] dwCertEncodingType

Tipo de codificación de certificado que se usó para codificar la cadena. La tipo de codificación de mensajes identificador, contenida en el alto word de este valor, esta función omite.

Este parámetro puede ser el siguiente tipo de codificación de certificado definido actualmente.

Valor Significado
X509_ASN_ENCODING
1 (0x1)
Especifica codificación de certificados X.509.

[in] pszX500

Puntero a la cadena X.500 terminada en null que se va a convertir. El formato de esta cadena se especifica mediante el parámetro dwStrType.

Se espera que esta cadena tenga el mismo formato que la salida de la función CertNameToStr.

[in] dwStrType

Este parámetro especifica el tipo de la cadena. Este parámetro también especifica otras opciones para el contenido de la cadena.

Si no se combinan marcas con el especificador de tipo de cadena, la cadena puede contener una coma (,) o un punto y coma (;) como separadores en el nombre distintivo relativo (RDN) y un signo más (+) como separador en varios valores de RDN.

Se admiten comillas (""). Una comilla se puede incluir en un valor entre comillas mediante dos conjuntos de comillas, por ejemplo, CN="User ""one""".

Un valor que comienza con un signo de número (#) se trata como ASCII hexadecimal y se convierte en un CERT_RDN_OCTET_STRING. Se omite el espacio en blanco incrustado. Por ejemplo, 1.2.3 = # AB CD 01 es el mismo que 1.2.3=#ABCD01.

Se omite el espacio en blanco que rodea las claves, los identificadores de objeto y los valores.

Este parámetro puede ser uno de los siguientes valores.

Valor Significado
CERT_SIMPLE_NAME_STR
1
No se admite este tipo de cadena.
CERT_OID_NAME_STR
2
Valida que se admite el tipo de cadena. La cadena puede ser un identificador de objeto (OID) o un nombre X.500.
CERT_X500_NAME_STR
3
Idéntico a CERT_OID_NAME_STR. Valida que se admite el tipo de cadena. La cadena puede ser un identificador de objeto (OID) o un nombre X.500.
 

Las siguientes opciones también se pueden combinar con el valor anterior para especificar opciones adicionales para la cadena.

Valor Significado
CERT_NAME_STR_COMMA_FLAG
0x04000000
Solo se admite una coma (,) como separador RDN.
CERT_NAME_STR_SEMICOLON_FLAG
0x40000000
Solo se admite un punto y coma (;) como separador RDN.
CERT_NAME_STR_CRLF_FLAG
0x08000000
Solo se admite una barra diagonal inversa r (\r) o barra diagonal inversa n (\n) como separador RDN.
CERT_NAME_STR_NO_PLUS_FLAG
0x20000000
El signo más (+) se omite como separador y no se admiten varios valores por RDN.
CERT_NAME_STR_NO_QUOTING_FLAG
0x10000000
No se admite el comillas.
CERT_NAME_STR_REVERSE_FLAG
0x02000000
El orden de las RDN en un nombre distintivo se invierte antes de codificar. Esta marca no se establece de forma predeterminada.
CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG
0x00020000
El tipo de valor codificado CERT_RDN_T61_STRING se usa en lugar de CERT_RDN_UNICODE_STRING. Esta marca se puede usar si todos los caracteres Unicode son menores o iguales que 0xFF.
CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG
0x00040000
El tipo de valor codificado CERT_RDN_UTF8_STRING se usa en lugar de CERT_RDN_UNICODE_STRING.
CERT_NAME_STR_FORCE_UTF8_DIR_STR_FLAG
0x00080000
Obliga a codificar la clave X.500 como una cadena UTF-8 (CERT_RDN_UTF8_STRING) en lugar de como una cadena Unicode imprimible (CERT_RDN_PRINTABLE_STRING). Este es el valor predeterminado para las entidades de certificación de Microsoft a partir de Windows Server 2003.
CERT_NAME_STR_DISABLE_UTF8_DIR_STR_FLAG
0x00100000
Impide forzar la codificación de una clave X.500 CERT_RDN_PRINTABLE_STRING X.500 imprimible mediante UTF-8 (CERT_RDN_UTF8_STRING). Use para habilitar la codificación de claves X.500 como valores Unicode cuando se establece CERT_NAME_STR_FORCE_UTF8_DIR_STR_FLAG.
CERT_NAME_STR_ENABLE_PUNYCODE_FLAG
0x00200000
Si la cadena contiene un valor RDN de correo electrónico y la dirección de correo electrónico contiene caracteres Unicode fuera del conjunto de caracteres ASCII, la parte del nombre de host de la dirección de correo electrónico se codifica en Punycode. A continuación, la dirección de correo electrónico resultante se codifica como una cadena de IA5String. La codificación Punycode del nombre de host se realiza por etiqueta.

Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP: Este valor no se admite.

[in, optional] pvReserved

Reservado para uso futuro y debe ser NULL.

[out] pbEncoded

Puntero a un búfer que recibe la estructura codificada.

El tamaño de este búfer se especifica en el parámetro pcbEncoded.

Este parámetro puede ser NULL para obtener el tamaño necesario del búfer con fines de asignación de memoria. Para obtener más información, vea recuperar datos de longitud desconocida.

[in, out] pcbEncoded

Puntero a un DWORD que, antes de llamar a la función, contiene el tamaño, en bytes, del búfer al que apunta el parámetro pbEncoded. Cuando la función devuelve, el DWORD contiene el número de bytes almacenados en el búfer.

Si pbEncoded es null, el DWORD recibe el tamaño, en bytes, necesario para el búfer.

[out, optional] ppszError

Puntero a un puntero de cadena que recibe información de error adicional sobre una cadena de entrada que no es válida.

Si la cadena de pszX500 no es válida, esta función actualiza ppszError para que apunte al principio de la secuencia de caracteres que no es válida. Si no se detecta ningún error en la cadena de entrada, ppszError se establece en NULL.

Si no se requiere esta información, pase NULL para este parámetro.

Este parámetro se actualiza para los siguientes códigos de error devueltos de GetLastError.

CRYPT_E_INVALID_X500_STRING

CRYPT_E_INVALID_NUMERIC_STRING

CRYPT_E_INVALID_PRINTABLE_STRING

CRYPT_E_INVALID_IA5_STRING

Valor devuelto

Devuelve un valor distinto de cero si es correcto o cero de lo contrario.

Para obtener información de error extendida, llame a GetLastError.

Observaciones

La tabla siguiente contiene las claves X.500 admitidas, su cadena de identificador de objeto correspondiente, el identificador de cadena (de Wincrypt.h) y los tipos de valor.

Llave Cadena de identificador de objeto Identificador de cadena Tipos de valor RDN
CN 2.5.4.3 szOID_COMMON_NAME Imprimible

T61

L 2.5.4.7 szOID_LOCALITY_NAME Imprimible

T61

O 2.5.4.10 szOID_ORGANIZATION_NAME Imprimible

T61

OU 2.5.4.11 szOID_ORGANIZATIONAL_UNIT_NAME Imprimible

T61

E

Correo electrónico

1.2.840.113549.1.9.1 szOID_RSA_emailAddr IA5
C 2.5.4.6 szOID_COUNTRY_NAME Imprimible
S

C

2.5.4.8 szOID_STATE_OR_PROVINCE_NAME Imprimible

T61

CALLE 2.5.4.9 szOID_STREET_ADDRESS Imprimible

T61

T

Título

2.5.4.12 szOID_TITLE Imprimible

T61

G

GivenName

2.5.4.42 szOID_GIVEN_NAME Imprimible

T61

Yo

Iniciales

2.5.4.43 szOID_INITIALS Imprimible

T61

SN 2.5.4.4 szOID_SUR_NAME Imprimible

T61

DC 0.9.2342.19200300.100.1.25 szOID_DOMAIN_COMPONENT IA5

UTF8

 

Si se permite Imprimir o T61 como tipo de valor RDN para la clave, Printable se selecciona automáticamente si el componente de cadena de nombre es miembro de los siguientes conjuntos de caracteres:

  • A, B, ..., Z
  • a, b, ..., z
  • 0, 1, …, 9
  • (espacio) ' ( ) + , - . / : = ?

Los tipos T61 están codificados con UTF8.

Ejemplos

Para obtener un ejemplo que usa esta función, vea Programa C de ejemplo: Conversión de nombres de certificados a ASN.1 y Back.

Nota

El encabezado wincrypt.h define CertStrToName 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 neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows XP [aplicaciones de escritorio | Aplicaciones para UWP]
servidor mínimo admitido Windows Server 2003 [aplicaciones de escritorio | Aplicaciones para UWP]
de la plataforma de destino de Windows
encabezado de wincrypt.h
biblioteca de Crypt32.lib
DLL de Crypt32.dll

Consulte también

CertNameToStr

funciones de conversión de datos de

GetLastError

recuperar datos de longitud desconocida