Função CertStrToNameA (wincrypt.h)

A função CertStrToName converte uma cadeia de caracteres X.500 terminada em nulo em um nome de certificado codificado.

Sintaxe

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

O tipo de codificação de certificado que foi usado para codificar a cadeia de caracteres. O identificador de tipo de codificação de mensagem , contido no WORD alto desse valor, é ignorado por essa função.

Esse parâmetro pode ser o seguinte tipo de codificação de certificado definido no momento.

Valor Significado
X509_ASN_ENCODING
1 (0x1)
Especifica a codificação de certificado X.509 .

[in] pszX500

Um ponteiro para a cadeia de caracteres X.500 terminada em nulo a ser convertida. O formato dessa cadeia de caracteres é especificado pelo parâmetro dwStrType .

Espera-se que essa cadeia de caracteres seja formatada da mesma forma que a saída da função CertNameToStr .

[in] dwStrType

Esse parâmetro especifica o tipo da cadeia de caracteres. Esse parâmetro também especifica outras opções para o conteúdo da cadeia de caracteres.

Se nenhum sinalizador for combinado com o especificador de tipo de cadeia de caracteres, a cadeia de caracteres poderá conter uma vírgula (,) ou um ponto-e-vírgula (;) como separadores no RDN (nome diferenciado relativo ) e um sinal de adição (+) como separador em vários valores RDN.

Há suporte para aspas (""). Uma aspa pode ser incluída em um valor entre aspas usando dois conjuntos de aspas, por exemplo, CN="Usuário ""um"".

Um valor que começa com um sinal numérico (#) é tratado como ASCII hexadecimal e convertido em um CERT_RDN_OCTET_STRING. O espaço em branco inserido é ignorado. Por exemplo, 1.2.3 = # AB CD 01 é igual a 1.2.3=#ABCD01.

O espaço em branco que envolve as chaves, os identificadores de objeto e os valores é ignorado.

Esse parâmetro pode usar um dos valores a seguir.

Valor Significado
CERT_SIMPLE_NAME_STR
1
Não há suporte para esse tipo de cadeia de caracteres.
CERT_OID_NAME_STR
2
Valida se há suporte para o tipo de cadeia de caracteres. A cadeia de caracteres pode ser um OID (identificador de objeto ) ou um nome X.500.
CERT_X500_NAME_STR
3
Idêntico a CERT_OID_NAME_STR. Valida se há suporte para o tipo de cadeia de caracteres. A cadeia de caracteres pode ser um OID (identificador de objeto ) ou um nome X.500.
 

As opções a seguir também podem ser combinadas com o valor acima para especificar opções adicionais para a cadeia de caracteres.

Valor Significado
CERT_NAME_STR_COMMA_FLAG
0x04000000
Há suporte apenas para uma vírgula (,) como separador rdn.
CERT_NAME_STR_SEMICOLON_FLAG
0x40000000
Há suporte apenas para um ponto e vírgula (;) como separador rdn.
CERT_NAME_STR_CRLF_FLAG
0x08000000
Somente uma barra invertida r (\r) ou barra invertida n (\n) tem suporte como separador rdn.
CERT_NAME_STR_NO_PLUS_FLAG
0x20000000
O sinal de adição (+) é ignorado como separador e não há suporte para vários valores por RDN.
CERT_NAME_STR_NO_QUOTING_FLAG
0x10000000
Não há suporte para aspas.
CERT_NAME_STR_REVERSE_FLAG
0x02000000
A ordem dos RDNs em um nome diferenciado é invertida antes da codificação. Esse sinalizador não é definido por padrão.
CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG
0x00020000
O tipo de valor codificado CERT_RDN_T61_STRING é usado em vez de CERT_RDN_UNICODE_STRING. Esse sinalizador poderá ser usado se todos os caracteres Unicode forem menores ou iguais a 0xFF.
CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG
0x00040000
O tipo de valor codificado CERT_RDN_UTF8_STRING é usado em vez de CERT_RDN_UNICODE_STRING.
CERT_NAME_STR_FORCE_UTF8_DIR_STR_FLAG
0x00080000
Força a chave X.500 a ser codificada como uma cadeia de caracteres UTF-8 (CERT_RDN_UTF8_STRING) em vez de como uma cadeia de caracteres Unicode imprimível (CERT_RDN_PRINTABLE_STRING). Esse é o valor padrão para as autoridades de certificação da Microsoft a partir do Windows Server 2003.
CERT_NAME_STR_DISABLE_UTF8_DIR_STR_FLAG
0x00100000
Impede forçar uma chave X.500 unicode imprimível (CERT_RDN_PRINTABLE_STRING) a ser codificada usando UTF-8 (CERT_RDN_UTF8_STRING). Use para habilitar a codificação de chaves X.500 como valores Unicode quando CERT_NAME_STR_FORCE_UTF8_DIR_STR_FLAG for definido.
CERT_NAME_STR_ENABLE_PUNYCODE_FLAG
0x00200000
Se a cadeia de caracteres contiver um valor RDN de email e o endereço de email contiver caracteres Unicode fora do conjunto de caracteres ASCII, a parte do nome do host do endereço de email será codificada em Punycode. O endereço de email resultante é codificado como uma cadeia de caracteres IA5String . A codificação punycode do nome do host é executada em uma base de rótulo por rótulo.

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Não há suporte para esse valor.

[in, optional] pvReserved

Reservado para uso futuro e deve ser NULL.

[out] pbEncoded

Um ponteiro para um buffer que recebe a estrutura codificada.

O tamanho desse buffer é especificado no parâmetro pcbEncoded .

Esse parâmetro pode ser NULL para obter o tamanho necessário do buffer para fins de alocação de memória. Para obter mais informações, consulte Recuperando dados de comprimento desconhecido.

[in, out] pcbEncoded

Um ponteiro para um DWORD que, antes de chamar a função, contém o tamanho, em bytes, do buffer apontado pelo parâmetro pbEncoded . Quando a função retorna, o DWORD contém o número de bytes armazenados no buffer.

Se pbEncoded for NULL, o DWORD receberá o tamanho, em bytes, necessário para o buffer.

[out, optional] ppszError

Um ponteiro para um ponteiro de cadeia de caracteres que recebe informações de erro adicionais sobre uma cadeia de caracteres de entrada que não é válida.

Se a cadeia de caracteres pszX500 não for válida, ppszError será atualizado por essa função para apontar para o início da sequência de caracteres que não é válida. Se nenhum erro for detectado na cadeia de caracteres de entrada, ppszError será definido como NULL.

Se essas informações não forem necessárias, passe NULL para esse parâmetro.

Esse parâmetro é atualizado para os seguintes códigos de erro retornados de GetLastError.

CRYPT_E_INVALID_X500_STRING

CRYPT_E_INVALID_NUMERIC_STRING

CRYPT_E_INVALID_PRINTABLE_STRING

CRYPT_E_INVALID_IA5_STRING

Retornar valor

Retornará diferente de zero se tiver êxito ou zero caso contrário.

Para obter informações de erro estendidas, chame GetLastError.

Comentários

A tabela a seguir contém as chaves X.500 com suporte, a cadeia de caracteres do identificador de objeto correspondente, o identificador de cadeia de caracteres (de Wincrypt.h) e os tipos de valor.

Chave Cadeia de caracteres do identificador de objeto Identificador de cadeia de caracteres Tipos de valor RDN
CN 2.5.4.3 szOID_COMMON_NAME Imprimível

T61

L 2.5.4.7 szOID_LOCALITY_NAME Imprimível

T61

O 2.5.4.10 szOID_ORGANIZATION_NAME Imprimível

T61

OU 2.5.4.11 szOID_ORGANIZATIONAL_UNIT_NAME Imprimível

T61

E

Email

1.2.840.113549.1.9.1 szOID_RSA_emailAddr IA5
C 2.5.4.6 szOID_COUNTRY_NAME Imprimível
S

ST

2.5.4.8 szOID_STATE_OR_PROVINCE_NAME Imprimível

T61

RUA 2.5.4.9 szOID_STREET_ADDRESS Imprimível

T61

T

Título

2.5.4.12 szOID_TITLE Imprimível

T61

G

GivenName

2.5.4.42 szOID_GIVEN_NAME Imprimível

T61

I

Iniciais

2.5.4.43 szOID_INITIALS Imprimível

T61

SN 2.5.4.4 szOID_SUR_NAME Imprimível

T61

DC 0.9.2342.19200300.100.1.25 szOID_DOMAIN_COMPONENT IA5

UTF8

 

Se Printable ou T61 for permitido como o tipo de valor RDN para a chave, Printable será selecionado automaticamente se o componente de cadeia de caracteres de nome for um membro dos seguintes conjuntos de caracteres:

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

Os tipos T61 são codificados em UTF8.

Exemplos

Para obter um exemplo que usa essa função, consulte Exemplo de programa C: convertendo nomes de certificados em ASN.1 e Back.

Observação

O cabeçalho wincrypt.h define CertStrToName 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

Requisito Valor
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

CertNameToStr

Funções de conversão de dados

Obter Último Erro

Recuperando dados de comprimento desconhecido