Compartilhar via


Função CryptStringToBinaryA (wincrypt.h)

A função CryptStringToBinary converte uma cadeia de caracteres formatada em uma matriz de bytes.

Sintaxe

BOOL CryptStringToBinaryA(
  [in]      LPCSTR pszString,
  [in]      DWORD  cchString,
  [in]      DWORD  dwFlags,
  [in]      BYTE   *pbBinary,
  [in, out] DWORD  *pcbBinary,
  [out]     DWORD  *pdwSkip,
  [out]     DWORD  *pdwFlags
);

Parâmetros

[in] pszString

Um ponteiro para uma cadeia de caracteres que contém a cadeia de caracteres formatada a ser convertida.

[in] cchString

O número de caracteres da cadeia de caracteres formatada a ser convertida, não incluindo a terminação caractere NULL caractere. Se esse parâmetro for zero, pszString será considerada uma cadeia de caracteres terminada em nulo.

[in] dwFlags

Indica o formato da cadeia de caracteres a ser convertida. Esse pode ser um dos valores a seguir.

Valor Significado
CRYPT_STRING_BASE64HEADER
0x00000000
Base64 entre as linhas do formulário '-----BEGIN ...-----' e '-----END ...-----'. Veja comentários abaixo.
CRYPT_STRING_BASE64
0x00000001
Base64, sem cabeçalhos.
CRYPT_STRING_BINARY
0x00000002
Cópia binária pura.
CRYPT_STRING_BASE64REQUESTHEADER
0x00000003
Base64 entre as linhas do formulário '-----BEGIN ...-----' e '-----END ...-----'. Veja comentários abaixo.
CRYPT_STRING_HEX
0x00000004
Formato somente hexadecimal.
CRYPT_STRING_HEXASCII
0x00000005
Formato hexadecimal com exibição de caractere ASCII.
CRYPT_STRING_BASE64_ANY
0x00000006
Tenta o seguinte, na ordem:
CRYPT_STRING_BASE64HEADER
CRYPT_STRING_BASE64
CRYPT_STRING_ANY
0x00000007
Tenta o seguinte, na ordem:
CRYPT_STRING_BASE64HEADER
CRYPT_STRING_BASE64
CRYPT_STRING_BINARY
CRYPT_STRING_HEX_ANY
0x00000008
Tenta o seguinte, na ordem:
CRYPT_STRING_HEXADDR
CRYPT_STRING_HEXASCIIADDR
CRYPT_STRING_HEX
CRYPT_STRING_HEXRAW
CRYPT_STRING_HEXASCII
CRYPT_STRING_BASE64X509CRLHEADER
0x00000009
Base64 entre as linhas do formulário '-----BEGIN ...-----' e '-----END ...-----'. Veja comentários abaixo.
CRYPT_STRING_HEXADDR
0x0000000a
Hex, com exibição de endereço.
CRYPT_STRING_HEXASCIIADDR
0x0000000b
Hex, com caractere ASCII e exibição de endereço.
CRYPT_STRING_HEXRAW
0x0000000c
Uma cadeia de caracteres hexadecimal bruta.

Windows Server 2003 e Windows XP: Esse valor não tem suporte.

CRYPT_STRING_STRICT
0x20000000
Defina esse sinalizador para dados Base64 para especificar que o final dos dados binários contenha apenas espaço em branco e, no máximo, três sinais "=".

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

[in] pbBinary

Um ponteiro para um buffer que recebe a sequência de bytes retornada. Se esse parâmetro for NULL, a função calculará o comprimento do buffer necessário e retornará o tamanho, em bytes, da memória necessária no DWORD apontado por pcbBinary.

[in, out] pcbBinary

Um ponteiro para uma variável DWORD que, na entrada, contém o tamanho, em bytes, do buffer pbBinary. Depois que a função é retornada, essa variável contém o número de bytes copiados para o buffer. Se esse valor não for grande o suficiente para conter todos os dados, a função falhará e GetLastError retornará ERROR_MORE_DATA.

Se pbBinary for NULL, o DWORD apontado por pcbBinary será ignorado.

[out] pdwSkip

Um ponteiro para um valor DWORD que recebe o número de caracteres ignorados para chegar ao início do cabeçalho -----BEGIN ...-----. Se nenhum cabeçalho estiver presente, o DWORD será definido como zero. Esse parâmetro é opcional e pode ser NULL se não for necessário.

[out] pdwFlags

Um ponteiro para um DWORD valor que recebe os sinalizadores realmente usados na conversão. Esses são os mesmos sinalizadores usados para o parâmetro dwFlags. Em muitos casos, esses serão os mesmos sinalizadores que foram passados no parâmetro dwFlags . Se dwFlags contiver um dos sinalizadores a seguir, esse valor receberá um sinalizador que indica o formato real da cadeia de caracteres. Esse parâmetro é opcional e pode ser NULL se não for necessário.

Valor Significado
CRYPT_STRING_ANY
Essa variável receberá um dos seguintes valores. Cada valor indica o formato real da cadeia de caracteres.
CRYPT_STRING_BASE64HEADER
CRYPT_STRING_BASE64
CRYPT_STRING_BINARY
CRYPT_STRING_BASE64_ANY
Essa variável receberá um dos seguintes valores. Cada valor indica o formato real da cadeia de caracteres.
CRYPT_STRING_BASE64HEADER
CRYPT_STRING_BASE64
CRYPT_STRING_HEX_ANY
Essa variável receberá um dos seguintes valores. Cada valor indica o formato real da cadeia de caracteres.
CRYPT_STRING_HEXADDR
CRYPT_STRING_HEXASCIIADDR
CRYPT_STRING_HEX
CRYPT_STRING_HEXRAW
CRYPT_STRING_HEXASCII

Valor de retorno

Se a função for bem-sucedida, o valor retornado não será zero (TRUE).

Se a função falhar, o valor retornado será zero (false).

Observações

Os sinalizadores CRYPT_STRING_BASE64HEADER, CRYPT_STRING_BASE64REQUESTHEADERe CRYPT_STRING_BASE64X509CRLHEADER são tratados de forma idêntica por essa função: eles tentam analisar o primeiro bloco de dados codificados em base64 entre linhas do formulário -----BEGIN ...----- e -----END ...-----. As partes ... são ignoradas e não precisam corresponder. Se a análise for bem-sucedida, o valor passado no parâmetro dwFlags será retornado no DWORD apontado pelo parâmetro pdwFlags. Observe que um valor de CRYPT_STRING_BASE64REQUESTHEADER ou CRYPT_STRING_BASE64X509CRLHEADER não significa que um cabeçalho de solicitação ou X.509 crl (lista de revogação de certificados) foi encontrado.

Nota

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

CryptBinaryToString