Função CredUnPackAuthenticationBufferA (wincred.h)
A função CredUnPackAuthenticationBuffer converte um buffer de autenticação retornado por uma chamada para a função CredUIPromptForWindowsCredentials em um nome de usuário e senha de cadeia de caracteres.
Sintaxe
CREDUIAPI BOOL CredUnPackAuthenticationBufferA(
[in] DWORD dwFlags,
[in] PVOID pAuthBuffer,
[in] DWORD cbAuthBuffer,
[out] LPSTR pszUserName,
[in, out] DWORD *pcchlMaxUserName,
[out] LPSTR pszDomainName,
[in, out] DWORD *pcchMaxDomainName,
[out] LPSTR pszPassword,
[in, out] DWORD *pcchMaxPassword
);
Parâmetros
[in] dwFlags
Definir o valor desse parâmetro como CRED_PACK_PROTECTED_CREDENTIALS especifica que a função tenta descriptografar as credenciais no buffer de autenticação. Se a credencial não puder ser descriptografada, a função retornará FALSE e uma chamada para a função GetLastError retornará o valor ERROR_NOT_CAPABLE.
A forma como a descriptografia é feita depende do formato do buffer de autenticação.
Se o buffer de autenticação for uma estrutura SEC_WINNT_AUTH_IDENTITY_EX2, a função poderá descriptografar o buffer se ele for criptografado usando SspiEncryptAuthIdentityEx com a opção SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON.
Se o buffer de autenticação for uma das estruturas de KERB_*_LOGON em marshaled, a função descriptografa a senha antes de devolvê-la no buffer pszPassword
[in] pAuthBuffer
Um ponteiro para o buffer de autenticação a ser convertido.
Esse buffer normalmente é a saída da função CredUIPromptForWindowsCredentials ou função CredPackAuthenticationBuffer. Esse deve ser um dos seguintes tipos:
- Uma estrutura SEC_WINNT_AUTH_IDENTITY_EX2 para credenciais de identidade. A função não aceita outras estruturas de SEC_WINNT_AUTH_IDENTITY.
- Uma estrutura KERB_INTERACTIVE_LOGON ou KERB_INTERACTIVE_UNLOCK_LOGON para credenciais de senha.
- Uma estrutura de KERB_CERTIFICATE_LOGON ou KERB_CERTIFICATE_UNLOCK_LOGON para credenciais de certificado de cartão inteligente.
- GENERIC_CRED para credenciais genéricas.
[in] cbAuthBuffer
O tamanho, em bytes, do buffer pAuthBuffer.
[out] pszUserName
Um ponteiro para uma cadeia de caracteres terminada em nulo que recebe o nome de usuário.
Essa cadeia de caracteres pode ser uma credencial marshalada. Consulte Comentários.
[in, out] pcchlMaxUserName
Um ponteiro para um DWORD valor que especifica o tamanho, em caracteres, do buffer pszUserName. Na saída, se o buffer não for de tamanho suficiente, especifica o tamanho necessário, em caracteres, do buffer pszUserName. O tamanho inclui o encerramento do caractere nulo.
[out] pszDomainName
Um ponteiro para uma cadeia de caracteres terminada em nulo que recebe o nome do domínio do usuário.
[in, out] pcchMaxDomainName
Um ponteiro para um DWORD valor que especifica o tamanho, em caracteres, do buffer pszDomainName. Na saída, se o buffer não for de tamanho suficiente, especifica o tamanho necessário, em caracteres, do buffer pszDomainName. O tamanho inclui o caractere nulo de encerramento. O tamanho necessário poderá ser zero se não houver nenhum nome de domínio.
[out] pszPassword
Um ponteiro para uma cadeia de caracteres terminada em nulo que recebe a senha.
[in, out] pcchMaxPassword
Um ponteiro para um
Essa cadeia de caracteres pode ser uma credencial marshalada. Consulte Comentários.
Valor de retorno
VERDADEIRO se a função for bem-sucedida; caso contrário, FALSE .
Para obter informações de erro estendidas, chame a função GetLastError. A tabela a seguir mostra valores comuns para a função GetLastError
Código/valor de retorno | Descrição |
---|---|
|
CRED_PACK_PROTECTED_CREDENTIALS foi passado como o valor do parâmetro dwFlags, mas essa função não pode descriptografar a credencial porque o contexto de segurança usado para proteger a senha é diferente do contexto de segurança do chamador. |
|
Um dos buffers de saída, pszUserName, pszDomainNameou pszPassword, era de tamanho insuficiente. |
|
O buffer de autenticação não é de um tipo com suporte. |
Observações
A partir do Windows 8 e do Windows Server 2012, o buffer de autenticação pode ser uma estrutura SEC_WINNT_AUTH_IDENTITY_EX2, que pode ser criptografada opcionalmente usando a função SspiEncryptAuthIdentityEx com a opção SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON. Esse formato de credencial é retornado por um Provedor de Credenciais de um Provedor de Identidade usando a função CredUIPromptForWindowsCredentials ou função SspiPromptForCredentials. Essa estrutura também pode ser construída usando a função
Nota
O cabeçalho wincred.h define CredUnPackAuthenticationBuffer 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 Vista [somente aplicativos da área de trabalho] |
servidor com suporte mínimo | Windows Server 2008 [somente aplicativos da área de trabalho] |
da Plataforma de Destino |
Windows |
cabeçalho | wincred.h |
biblioteca | Credui.lib |
de DLL |
Credui.dll |