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 |
---|---|
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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 |
---|---|
|
Adquire o nome do emissor. Se não estiver definido, adquirirá o nome da entidade. |
|
Ignora a tentativa inicial padrão de decodificar o valor como UTF8 e decodifica como caracteres de 8 bits. |
|
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. |
|
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:
|
[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 |