Função CryptStringToBinaryW (wincrypt.h)

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

Sintaxe

BOOL CryptStringToBinaryW(
  [in]      LPCWSTR 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, sem incluir o caractere NULL de terminação. Se esse parâmetro for zero, pszString será considerado 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 formato '-----BEGIN ...-----' e '-----END ...-----'. Consulte os 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 formato '-----BEGIN ...-----' e '-----END ...-----'. Consulte os 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 formato '-----BEGIN ...-----' e '-----END ...-----'. Consulte os 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: Não há suporte para esse valor.

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 retorna, 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 alcançar o início do -----BEGIN ...----- cabeçalho. 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 valor DWORD 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 valores a seguir. 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 valores a seguir. 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 retornado

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

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

Comentários

Os sinalizadores CRYPT_STRING_BASE64HEADER, CRYPT_STRING_BASE64REQUESTHEADER e 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 CRL (lista de revogação de certificadosX.509) foi encontrado.

Observação

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

CryptBinaryToString