Função CertNameToStrA (wincrypt.h)
A função CertNameToStr converte um nome codificado em uma estrutura CERT_NAME_BLOB em uma cadeia de caracteres terminada em nulo.
A representação de cadeia de caracteres segue as especificações de nome diferenciada no RFC 1779. As exceções a essa regra são listadas na seção Comentários, abaixo.
Sintaxe
DWORD CertNameToStrA(
[in] DWORD dwCertEncodingType,
[in] PCERT_NAME_BLOB pName,
[in] DWORD dwStrType,
[out] LPSTR psz,
[in] DWORD csz
);
Parâmetros
[in] dwCertEncodingType
O tipo de codificação de certificado usado para codificar o nome. O tipo de codificação de mensagem
Esse parâmetro pode ser o seguinte tipo de codificação de certificado definido no momento.
Valor | Significado |
---|---|
|
Especifica a codificação de certificado X.509. |
[in] pName
Um ponteiro para a estrutura CERT_NAME_BLOB a ser convertida.
[in] dwStrType
Esse parâmetro especifica o formato da cadeia de caracteres de saída. Esse parâmetro também especifica outras opções para o conteúdo da cadeia de caracteres.
Esse parâmetro pode ser um dos valores a seguir.
Valor | Significado |
---|---|
|
Todos os identificadores de objeto (OIDs) são descartados. CERT_RDN entradas são separadas por uma vírgula seguida por um espaço (, ). Vários atributos em uma CERT_RDN são separados por um sinal de adição entre espaços ( + ), por exemplo, Microsoft, Kim Abercrombie + Programador. |
|
Os OIDs são incluídos com um separador de sinal de igual (=) de seu valor de atributo. CERT_RDN entradas são separadas por uma vírgula seguida por um espaço (, ). Vários atributos em um CERT_RDN são separados por um sinal de adição seguido por um espaço (+ ). |
|
Os OIDs são convertidos em seus nomes de chave X.500; caso contrário, eles são os mesmos que CERT_OID_NAME_STR. Se uma OID não tiver um nome X.500 correspondente, o OID será usado com um prefixo de OID.
O valor RDN será citado se ele contiver espaço em branco à esquerda ou à direita ou um dos seguintes caracteres:
|
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 |
---|---|
|
Substitua a vírgula seguida por um separador de espaço (, ) por um separador de ponto-e-vírgula seguido por um separador de espaço (; ). |
|
Substitua a vírgula seguida por um separador de espaço (, ) por uma barra invertida seguida pela letra r seguida por uma barra invertida seguida pelo separador de letra n (\r\n). |
|
Substitua o sinal de adição entre espaços ( + ) separador por um separador de espaço único. |
|
Desabilitar aspas. |
|
A ordem dos RDNs na cadeia de caracteres de nome diferenciado é revertida após a decodificação. Esse sinalizador não é definido por padrão. |
|
Por padrão, uma cadeia de caracteres de chave CERT_RDN_T61_STRING X.500 é decodificada como UTF8. Se a decodificação UTF8 falhar, a chave X.500 será decodificada como um caractere de 8 bits. Use CERT_NAME_STR_DISABLE_IE4_UTF8_FLAG para ignorar a tentativa inicial de decodificar como UTF8. |
|
Se o nome apontado pelo parâmetro pName contiver um RDN de email e a parte do nome do host do endereço de email contiver um codificado em PunycodeIA5String, o nome será convertido no equivalente Unicode.
Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Não há suporte para esse valor. |
[out] psz
Um ponteiro para um buffer de caracteres que recebe a cadeia de caracteres retornada. O tamanho desse buffer é especificado no parâmetro csz.
[in] csz
O tamanho, em caracteres, do buffer psz. O tamanho deve incluir o caractere nulo de encerramento.
Valor de retorno
Retorna o número de caracteres convertidos, incluindo o caractere nulo de terminação.
Se psz for NULL ou csz for zero, retornará o tamanho necessário da cadeia de caracteres de destino.
Observações
Se
É recomendável não usar RDNs multicomponentes (por exemplo, CN=James+O=Microsoft) para evitar possíveis problemas de ordenação durante a decodificação. Em vez disso, considere usar RDNs com valor único (por exemplo, CN=James, O=Microsoft).
A representação de cadeia de caracteres segue as especificações de nome diferenciadas em RFC 1779, exceto pelos desvios descritos na lista a seguir.
- Os nomes que contêm aspas estão entre aspas duplas.
- Cadeias de caracteres vazias são colocadas entre aspas duplas.
- Cadeias de caracteres que contêm espaços consecutivos não estão entre aspas.
- Valores rdn (nome diferenciado relativo) do tipo CERT_RDN_ENCODED_BLOB ou CERT_RDN_OCTET_STRING são formatados em hexadecimal.
- Se uma OID não tiver um nome X.500 correspondente, o prefixo "OID" será usado antes do OID.
- Os valores RDN serão colocados entre aspas duplas (em vez de "\") se contiverem espaço em branco à esquerda, espaço em branco à direita ou um dos seguintes caracteres:
- Vírgula (,)
- Sinal de adição (+)
- Sinal de igual (=)
- Marca de polegada (")
- Barra invertida (/)
- Sinal menor que (<)
- Maior que sinal (>)
- Sinal de número (#)
- Ponto e vírgula (;)
- O nome da chave X.500 para stateOrProvinceName (2.5.4.8) OID é "S". Esse valor é diferente do nome da chave RFC 1779 X.500 ("ST").
Chave | Cadeia de caracteres do identificador de objeto |
---|---|
E | 1.2.840.113549.1.9.1 |
T | 2.5.4.12 |
G | 2.5.4.42 |
Eu | 2.5.4.43 |
SN | 2.5.4.4 |
Exemplos
Para obter um exemplo que usa essa função, consulte
exemplo de programa C: convertendo nomes de certificados em ASN.1 e Back.
Nota
O cabeçalho wincrypt.h define CertNameToStr como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows XP [aplicativos da área de trabalho | Aplicativos UWP] |
servidor com suporte mínimo | Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP] |
da Plataforma de Destino |
Windows |
cabeçalho | wincrypt.h |
biblioteca | Crypt32.lib |
de DLL |
Crypt32.dll |
Consulte também
CertRDNValueToStr