Função CredPackAuthenticationBufferA (wincred.h)

A função CredPackAuthenticationBuffer converte um nome de usuário de cadeia de caracteres e uma senha em um buffer de autenticação.

A partir do Windows 8 e do Windows Server 2012, a função CredPackAuthenticationBuffer converte uma credencial de identidade em um buffer de autenticação, que é uma estrutura SEC_WINNT_AUTH_IDENTITY_EX2 . Esse buffer pode ser passado para LsaLogonUser, AcquireCredentialsHandle ou outras interfaces do provedor de identidade.

Sintaxe

CREDUIAPI BOOL CredPackAuthenticationBufferA(
  [in]      DWORD dwFlags,
  [in]      LPSTR pszUserName,
  [in]      LPSTR pszPassword,
  [out]     PBYTE pPackedCredentials,
  [in, out] DWORD *pcbPackedCredentials
);

Parâmetros

[in] dwFlags

Especifica como a credencial deve ser empacotada. Isso pode ser uma combinação dos sinalizadores a seguir.

Valor Significado
CRED_PACK_PROTECTED_CREDENTIALS
Criptografa a credencial para que ela só possa ser descriptografada por processos na sessão de logon do chamador.
CRED_PACK_WOW_BUFFER
Criptografa a credencial em um buffer WOW.
CRED_PACK_GENERIC_CREDENTIALS
Criptografa a credencial em um buffer de CRED_GENERIC.
CRED_PACK_ID_PROVIDER_CREDENTIALS
Criptografa a credencial de uma identidade online em uma estrutura SEC_WINNT_AUTH_IDENTITY_EX2 . Se CRED_PACK_GENERIC_CREDENTIALS e CRED_PACK_ID_PROVIDER_CREDENTIALS não estiverem definidos, criptografará as credenciais em um buffer de KERB_INTERACTIVE_LOGON.

Windows 7, Windows Server 2008 R2, Windows Vista, Windows Server 2008: Não há suporte para esse valor.

[in] pszUserName

Um ponteiro para uma cadeia de caracteres terminada em nulo que especifica o nome de usuário a ser convertido. Para usuários de domínio, a cadeia de caracteres deve estar no seguinte formato:

Domainname\Username

Para identidades online, se a credencial for uma senha de texto não criptografado, o formato de nome de usuário será ProviderName\UserName. Se a credencial for uma estrutura SEC_WINNT_AUTH_IDENTITY_EX2 , o nome de usuário será uma cadeia de caracteres codificada que é a saída do parâmetro UserName de uma chamada de função para SspiEncodeAuthIdentityAsStrings.

Para credenciais de certificado ou cartão inteligentes, o nome de usuário é uma cadeia de caracteres codificada que é a saída de uma chamada de função para CredMarshalCredential com a opção CertCredential.

Windows Server 2008 R2, Windows 7, Windows Server 2008 e Windows Vista: Não há suporte para identidades online.

[in] pszPassword

Um ponteiro para uma cadeia de caracteres terminada em nulo que especifica a senha a ser convertida.

Para SEC_WINNT_AUTH_IDENTITY_EX2 credenciais, a senha é uma cadeia de caracteres codificada que está na saída ppszPackedCredentialsString de uma chamada de função para SspiEncodeAuthIdentityAsStrings.

Para credenciais de cartão inteligentes, esse é o PIN de cartão inteligente.

Windows Server 2008 R2, Windows 7, Windows Server 2008 e Windows Vista: Não há suporte para identidades online.

[out] pPackedCredentials

Um ponteiro para uma matriz de bytes que, na saída, recebe o buffer de autenticação empacotado. Esse parâmetro pode ser NULL para receber o tamanho do buffer necessário no parâmetro pcbPackedCredentials .

[in, out] pcbPackedCredentials

Um ponteiro para um valor DWORD que especifica o tamanho, em bytes, do buffer pPackedCredentials . Na saída, se o buffer não for de tamanho suficiente, especificará o tamanho necessário, em bytes, do buffer pPackedCredentials .

Valor retornado

TRUE se a função for bem-sucedida; caso contrário, FALSE.

Para obter informações de erro estendidas, chame a função GetLastError , que pode retornar os seguintes códigos de erro.

Código de retorno Descrição
ERROR_INSUFFICIENT_BUFFER
O buffer fornecido por pPackedCredentials é muito pequeno.

Comentários

Observação

O cabeçalho wincred.h define CredPackAuthenticationBuffer 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 Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho wincred.h
Biblioteca Credui.lib
DLL Credui.dll