Compartir a través de


Función CertGetNameStringW (wincrypt.h)

La función CertGetNameString obtiene el nombre del firmante o emisor de una estructura de CERT_CONTEXT de certificado y lo convierte en una cadena de caracteresterminada null.

Sintaxis

DWORD CertGetNameStringW(
  [in]  PCCERT_CONTEXT pCertContext,
  [in]  DWORD          dwType,
  [in]  DWORD          dwFlags,
  [in]  void           *pvTypePara,
  [out] LPWSTR         pszNameString,
  [in]  DWORD          cchNameString
);

Parámetros

[in] pCertContext

Puntero a un contexto de certificado de CERT_CONTEXT que incluye un nombre de firmante y emisor que se va a convertir.

[in] dwType

DWORD que indican cómo se va a encontrar el nombre y cómo se va a dar formato a la salida.

Valor Significado
CERT_NAME_EMAIL_TYPE
1
Si el certificado tiene una extensión de nombre alternativo del firmante o un nombre alternativo del emisor, usa la primera opción rfc822Name. Si no se encuentra ninguna opción rfc822Name en la extensión, usa el campo Nombre del firmante para el OID de correo electrónico. Si se encuentra rfc822Name o el OID de correo electrónico, usa la cadena . De lo contrario, devuelve una cadena vacía (el recuento de caracteres devuelto es 1). no se usa pvTypePara y se establece en null.
CERT_NAME_RDN_TYPE
2
Convierte el BLOB de nombre de sujeto llamando a CertNameToStr. pvTypePara apunta a un DWORD de que contiene el dwStrType de pasado a CertNameToStr. Si el campo Nombre del firmante está vacío y el certificado tiene una extensión Nombre alternativo del firmante, usa la primera opción de nombre de directorio de CertNameToStr.
CERT_NAME_ATTR_TYPE
3
pvTypePara apunta a un identificador de objeto de (OID) que especifica el atributo name que se va a devolver. Por ejemplo, si pvTypePara es szOID_COMMON_NAME, usa el miembro Nombre del firmante. Si el miembro Nombre del firmante está vacío y el certificado tiene una extensión Nombre alternativo del firmante, usa la primera opción directoryName.
CERT_NAME_SIMPLE_DISPLAY_TYPE
4
Recorre en iteración la siguiente lista de atributos de nombre y usa la extensión Nombre del firmante o Nombre alternativo del firmante para la primera aparición de: szOID_COMMON_NAME, szOID_ORGANIZATIONAL_UNIT_NAME, szOID_ORGANIZATION_NAME o szOID_RSA_emailAddr.

Si no se encuentra uno de estos atributos, usa la extensión Nombre alternativo del firmante para una opción rfc822Name. Si todavía no hay ninguna coincidencia, usa el primer atributo.

no se usa pvTypePara y se establece en null.

CERT_NAME_FRIENDLY_DISPLAY_TYPE
5
Comprueba el certificado de una propiedad CERT_FRIENDLY_NAME_PROP_ID. Si el certificado tiene esta propiedad, se devuelve. Si el certificado no tiene la propiedad , se devuelve el CERT_NAME_SIMPLE_DISPLAY_TYPE.
CERT_NAME_DNS_TYPE
6
Si el certificado tiene una extensión de nombre alternativo del firmante para el emisor, nombre alternativo del emisor, busque la primera opción DNSName.

Si la opción DNSName no se encuentra en la extensión, busque el campo Nombre del firmante para el OID CN, "2.5.4.3".

Si se encuentra el OID DNSName o CN, devuelva la cadena. De lo contrario, devuelve una cadena vacía.

CERT_NAME_URL_TYPE
7
Si el certificado tiene una extensión de nombre alternativo del firmante para el emisor, nombre alternativo del emisor, busque la primera opción de dirección URL. Si se encuentra la opción de dirección URL, devuelva la cadena. De lo contrario, devuelve una cadena vacía.
CERT_NAME_UPN_TYPE
8
Si el certificado tiene una extensión Nombre alternativo del firmante, busque las opciones OtherName que buscan un pszObjId == szOID_NT_PRINCIPAL_NAME, ("1.3.6.1.4.1.311.20.2.3").

Si se encuentra el OID de UPN, descodifique el BLOB como un X509_UNICODE_ANY_STRING y devuelva la cadena descodificada. De lo contrario, devuelve una cadena vacía.

[in] dwFlags

Indica el tipo de procesamiento necesario.

Valor Significado
CERT_NAME_ISSUER_FLAG
0x1
Adquiere el nombre del emisor. Si no se establece, adquiere el nombre del firmante.
CERT_NAME_DISABLE_IE4_UTF8_FLAG
0x00010000
Omite el intento inicial predeterminado de descodificar el valor como UTF8 y descodifica como caracteres de 8 bits.
CERT_NAME_SEARCH_ALL_NAMES_FLAG
0x2
Si el parámetro dwType se establece en CERT_NAME_DNS_TYPE, se devuelven todos los nombres aplicables para el valor DNS especificado. Si no hay ningún nombre DNS, pero hay un componente CN en el asunto, se devuelve el CN en su lugar. Si hay un CN y un nombre DNS, solo se devuelven los nombres DNS. Esto imita la directiva de creación de cadenas SSL. Si establece esta marca para un tipo de nombre distinto de CERT_NAME_DNS_TYPE, esta función devuelve una cadena vacía terminada en null.

Windows 8 y Windows Server 2012: comienza la compatibilidad con esta marca.

CERT_NAME_STR_ENABLE_PUNYCODE_FLAG
0x00200000
Esta marca habilita la descodificación de cadenas de IA5String en valores de cadena Unicode basados en el valor de parámetro dwType , tal como se define a continuación:
  • CERT_NAME_EMAIL_TYPE: si la parte del nombre de host de la dirección de correo electrónico contiene un componente de IA5String codificado componente de, se convierte en el equivalente Unicode.
  • CERT_NAME_SIMPLE_DISPLAY_TYPE: si se devuelve un nombre de firmante de szOID_RSA_emailAddr o rfc822Name del nombre alternativo del firmante del certificado y la parte del nombre de host de la dirección de correo electrónico contiene un componente de IA5String codificado en Punycode, se convierte en el equivalente Unicode.
  • CERT_NAME_DNS_TYPE: si el certificado tiene un nombre alternativo del emisor, con una opción DNSName y la parte del nombre de host de la dirección de correo electrónico, contiene punycode codificado componente ia5String, se convierte en el equivalente Unicode.
  • CERT_NAME_URL_TYPE: el URI está descodificado y sin escape. Si el nombre de host del servidor del URI contiene una codificación Punycode componente de IA5String, la cadena de nombre de host se convierte en el equivalente Unicode.
Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP: Este valor no se admite.

[in] pvTypePara

Puntero a un DWORD de que contiene el dwStrType de o un identificador de objeto (OID) que especifica el atributo name. El tipo al que apunta está determinado por el valor de dwType.

[out] pszNameString

Puntero a un búfer asignado para recibir la cadena devuelta. Si pszNameString no es NULL y cchNameString no es cero, pszNameString es una cadena nula-terminated.

Si CERT_NAME_SEARCH_ALL_NAMES_FLAG se especifica en el parámetro dwFlags y CERT_NAME_DNS_TYPE se establece en el parámetro dwType, la cadena devuelta contendrá todos los nombres DNS que se aplican. Cada cadena de la cadena de salida está terminada en null y la última cadena finalizará con un valor NULL doble. Si no se encuentra ningún nombre DNS, se devuelve una sola cadena vacía terminada en NULL.

[in] cchNameString

Tamaño, en caracteres, asignado para la cadena devuelta. El tamaño debe incluir el carácter de de terminación NULL.

Valor devuelto

Devuelve el número de caracteres convertidos, incluido el carácter de terminación cero. Si pszNameString es null o cchNameString es cero, devuelve el tamaño necesario de la cadena de destino (incluido el carácter de DE terminación NULL). Si no se encuentra el tipo de nombre especificado, devuelve un cadena vacía terminadanull con un recuento de caracteres devuelto de 1.

Observaciones

Nota

El encabezado wincrypt.h define CertGetNameString 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

funciones de conversión de datos de