Função CertGetNameStringA (wincrypt.h)

A função CertGetNameString obtém o nome do assunto ou emissor de uma estrutura de CERT_CONTEXT de certificado e a converte em uma cadeia de caracteres terminada em nulo.

Sintaxe

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

Parâmetros

[in] pCertContext

Um ponteiro para um CERT_CONTEXT contexto de certificado que inclui um assunto e um nome do emissor a serem convertidos.

[in] dwType

DWORD que indica como o nome deve ser encontrado e como a saída deve ser formatada.

Valor Significado
CERT_NAME_EMAIL_TYPE
1
Se o certificado tiver uma extensão Nome Alternativo da Entidade ou Nome Alternativo do Emissor, usará a primeira opção rfc822Name. Se nenhuma opção rfc822Name for encontrada na extensão, usará o campo Nome da Entidade para o Email OID. Se rfc822Name ou o Email OID for encontrado, usará a cadeia de caracteres. Caso contrário, retorna uma cadeia de caracteres vazia (a contagem de caracteres retornada é 1). pvTypePara não é usado e é definido como NULL.
CERT_NAME_RDN_TYPE
2
Converte o BLOB de Nome da Entidade chamando CertNameToStr. pvTypePara aponta para um DWORD que contém o dwStrType passado para CertNameToStr. Se o campo Nome da Entidade estiver vazio e o certificado tiver uma extensão Nome Alternativo da Entidade, usará a escolha nome do primeiro diretório de CertNameToStr.
CERT_NAME_ATTR_TYPE
3
pvTypePara aponta para um OID (identificador de objeto ) especificando o atributo name a ser retornado. Por exemplo, se pvTypePara for szOID_COMMON_NAME, usará o membro Nome da Entidade. Se o membro Nome da Entidade estiver vazio e o certificado tiver uma extensão Nome Alternativo da Entidade, usará a primeira opção directoryName.
CERT_NAME_SIMPLE_DISPLAY_TYPE
4
Itera por meio da lista a seguir de atributos de nome e usa o Nome da Entidade ou a extensão Nome Alternativo da Entidade para a primeira ocorrência de: szOID_COMMON_NAME, szOID_ORGANIZATIONAL_UNIT_NAME, szOID_ORGANIZATION_NAME ou szOID_RSA_emailAddr.

Se um desses atributos não for encontrado, usará a extensão Nome Alternativo da Entidade para uma escolha rfc822Name. Se ainda não houver correspondência, usará o primeiro atributo.

pvTypePara não é usado e é definido como NULL.

CERT_NAME_FRIENDLY_DISPLAY_TYPE
5
Verifica o certificado de uma propriedade CERT_FRIENDLY_NAME_PROP_ID. Se o certificado tiver essa propriedade, ele será retornado. Se o certificado não tiver a propriedade , o CERT_NAME_SIMPLE_DISPLAY_TYPE será retornado.
CERT_NAME_DNS_TYPE
6
Se o certificado tiver uma extensão Nome Alternativo da Entidade para o emissor, Nome Alternativo do Emissor, procure a primeira opção DNSName.

Se a opção DNSName não for encontrada na extensão, pesquise no campo Nome da Entidade para o OID CN, "2.5.4.3".

Se o OID DNSName ou CN for encontrado, retorne a cadeia de caracteres. Caso contrário, retorne uma cadeia de caracteres vazia.

CERT_NAME_URL_TYPE
7
Se o certificado tiver uma extensão Nome Alternativo da Entidade para o emissor, Nome Alternativo do Emissor, procure a primeira opção de URL. Se a opção url for encontrada, retorne a cadeia de caracteres. Caso contrário, retorne uma cadeia de caracteres vazia.
CERT_NAME_UPN_TYPE
8
Se o certificado tiver uma extensão Nome Alternativo da Entidade, pesquise as opções OtherName procurando um pszObjId == szOID_NT_PRINCIPAL_NAME ("1.3.6.1.4.1.311.20.2.3").

Se o OID UPN for encontrado, decodificará o BLOB como um X509_UNICODE_ANY_STRING e retornará a cadeia de caracteres decodificada. Caso contrário, retorne uma cadeia de caracteres vazia.

[in] dwFlags

Indica o tipo de processamento necessário.

Valor Significado
CERT_NAME_ISSUER_FLAG
0x1
Adquire o nome do emissor. Se não estiver definido, adquirirá o nome da entidade.
CERT_NAME_DISABLE_IE4_UTF8_FLAG
0x00010000
Ignora a tentativa inicial padrão de decodificar o valor como UTF8 e decodifica como caracteres de 8 bits.
CERT_NAME_SEARCH_ALL_NAMES_FLAG
0x2
Se o parâmetro dwType for definido como CERT_NAME_DNS_TYPE, todos os nomes aplicáveis serão retornados para o valor DNS especificado. Se não houver nenhum nome DNS, mas houver um componente CN na entidade, o CN será retornado. Se houver um CN e um nome DNS, somente os nomes DNS serão retornados. Isso imita a política de construção da cadeia SSL. Se você definir esse sinalizador para um tipo de nome diferente de CERT_NAME_DNS_TYPE, essa função retornará uma cadeia de caracteres vazia terminada em nulo.

Windows 8 e Windows Server 2012: O suporte para esse sinalizador começa.

CERT_NAME_STR_ENABLE_PUNYCODE_FLAG
0x00200000
Esse sinalizador permite a decodificação de cadeias de caracteres IA5String para valores de cadeia de caracteres Unicode com base no valor do parâmetro dwType , conforme definido abaixo:
  • CERT_NAME_EMAIL_TYPE: se a parte do nome do host do endereço de email contiver um componente IA5String codificado em Punycode, ele será convertido no equivalente Unicode.
  • CERT_NAME_SIMPLE_DISPLAY_TYPE: se um nome de entidade de szOID_RSA_emailAddr ou o rfc822Name do Nome Alternativo da Entidade for retornado do certificado e a parte do nome do host do endereço de email um contiver o componente IA5String codificado em Punycode, ele será convertido no equivalente Unicode.
  • CERT_NAME_DNS_TYPE: se o certificado tiver um Nome Alternativo do Emissor, com uma opção DNSName e a parte do nome do host do endereço de email que contém um componente IA5String codificado por Punycode, ele será convertido no equivalente Unicode.
  • CERT_NAME_URL_TYPE: o URI é decodificado e sem escape. Se o nome do host do servidor do URI contiver um componente IA5String codificado em Punycode, a cadeia de caracteres de nome do host será convertida no equivalente Unicode.
Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Não há suporte para esse valor.

[in] pvTypePara

Um ponteiro para um DWORD que contém o dwStrType ou um OID ( identificador de objeto ) especificando o atributo name. O tipo apontado é determinado pelo valor de dwType.

[out] pszNameString

Um ponteiro para um buffer alocado para receber a cadeia de caracteres retornada. Se pszNameString não for NULL e cchNameString não for zero, pszNameString será uma cadeia de caracteres terminada em nulo.

Se CERT_NAME_SEARCH_ALL_NAMES_FLAG for especificado no parâmetro dwFlags e CERT_NAME_DNS_TYPE estiver definido no parâmetro dwType , a cadeia de caracteres retornada conterá todos os nomes DNS que se aplicam. Cada cadeia de caracteres na cadeia de caracteres de saída é terminada em nulo e a última cadeia de caracteres será terminada em nulo duplo. Se nenhum nome DNS for encontrado, uma única cadeia de caracteres vazia terminada em nulo será retornada.

[in] cchNameString

Tamanho, em caracteres, alocado para a cadeia de caracteres retornada. O tamanho deve incluir o caractere NULL de terminação.

Valor retornado

Retorna o número de caracteres convertidos, incluindo o caractere zero de terminação. Se pszNameString for NULL ou cchNameString for zero, retornará o tamanho necessário da cadeia de caracteres de destino (incluindo o caractere NULL de terminação). Se o tipo de nome especificado não for encontrado, retornará uma cadeia de caracteres vazia terminada em nulo com uma contagem de caracteres retornada de 1.

Comentários

Observação

O cabeçalho wincrypt.h define CertGetNameString como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.

Requisitos

   
Cliente mínimo com suporte Windows XP [aplicativos da área de trabalho | aplicativos UWP]
Servidor mínimo com suporte Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho wincrypt.h
Biblioteca Crypt32.lib
DLL Crypt32.dll

Confira também

Funções de conversão de dados