Compartir a través de


Función CredUnPackAuthenticationBufferA (wincred.h)

La función credUnPackAuthenticationBuffer convierte un búfer de autenticación devuelto por una llamada a la función credUIPromptForWindowsCredentials en un nombre de usuario y contraseña de cadena.

Sintaxis

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

Al establecer el valor de este parámetro en CRED_PACK_PROTECTED_CREDENTIALS se especifica que la función intenta descifrar las credenciales en el búfer de autenticación. Si no se puede descifrar la credencial, la función devuelve FALSEy una llamada a la función getLastError devolverá el valor ERROR_NOT_CAPABLE.

La forma en que se realiza el descifrado depende del formato del búfer de autenticación.

Si el búfer de autenticación es una estructura de SEC_WINNT_AUTH_IDENTITY_EX2, la función puede descifrar el búfer si se cifra mediante SspiEncryptAuthIdentityEx con la opción SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON.

Si el búfer de autenticación es una de las estructuras de KERB_*_LOGON serializadas, la función descifra la contraseña antes de devolverla en el búfer de pszPassword.

[in] pAuthBuffer

Puntero al búfer de autenticación que se va a convertir.

Este búfer suele ser la salida de la función CredUIPromptForWindowsCredential s o CredPackAuthenticationBuffer. Debe ser uno de los siguientes tipos:

[in] cbAuthBuffer

Tamaño, en bytes, del búfer de pAuthBuffer.

[out] pszUserName

Puntero a una cadena terminada en null que recibe el nombre de usuario.

Esta cadena puede ser una credencial serializado. Vea comentarios.

[in, out] pcchlMaxUserName

Puntero a un valor de DWORD que especifica el tamaño, en caracteres, del búfer de pszUserName. En la salida, si el búfer no tiene un tamaño suficiente, especifica el tamaño necesario, en caracteres, del búfer de pszUserName. El tamaño incluye el carácter nulo de terminación.

[out] pszDomainName

Puntero a una cadena terminada en null que recibe el nombre del dominio del usuario.

[in, out] pcchMaxDomainName

Puntero a un valor DWORD que especifica el tamaño, en caracteres, del búfer de pszDomainName. En la salida, si el búfer no tiene un tamaño suficiente, especifica el tamaño necesario, en caracteres, del pszDomainName búfer. El tamaño incluye el carácter nulo de terminación. El tamaño necesario puede ser cero si no hay ningún nombre de dominio.

[out] pszPassword

Puntero a una cadena terminada en null que recibe la contraseña.

[in, out] pcchMaxPassword

Puntero a un valor de DWORD que especifica el tamaño, en caracteres, del búfer de pszPassword. En la salida, si el búfer no tiene un tamaño suficiente, especifica el tamaño necesario, en caracteres, del pszPassword búfer. El tamaño incluye el carácter nulo de terminación.

Esta cadena puede ser una credencial serializado. Vea comentarios.

Valor devuelto

TRUE si la función se realiza correctamente; De lo contrario, FALSE.

Para obtener información de error extendida, llame a la función getLastError . En la tabla siguiente se muestran valores comunes para la función GetLastError.

Código y valor devueltos Descripción
ERROR_NOT_CAPABLE
CRED_PACK_PROTECTED_CREDENTIALS se pasó como el valor del parámetro dwFlags, pero esta función no puede descifrar la credencial porque el contexto de seguridad usado para proteger la contraseña es diferente del contexto de seguridad del autor de la llamada.
ERROR_INSUFFICIENT_BUFFER
Uno de los búferes de salida, pszUserName, pszDomainName, o pszPassword, era de tamaño insuficiente.
ERROR_NOT_SUPPORTED
El búfer de autenticación no es de un tipo admitido.

Observaciones

A partir de Windows 8 y Windows Server 2012, el búfer de autenticación puede ser una estructura de SEC_WINNT_AUTH_IDENTITY_EX2, que se puede cifrar opcionalmente mediante la función SspiEncryptAuthIdentityEx con la opción SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON. Este formato de credencial lo devuelve un proveedor de credenciales de un proveedor de identidades mediante la función CredUIPromptForWindowsCredentials o SspiPromptForCredentials. Esta estructura también se puede construir mediante la función CredPackAuthenticationBuffer. Si el búfer de autenticación pAuthBuffer representa una credencial sin contraseña, como KERB_CERTIFICATE_LOGON o SEC_WINNT_AUTH_IDENTITY_EX2, la función debe serializar la credencial como cadenas de caracteres, devueltas como nombre de usuario, nombre de dominio y cadenas de contraseña. La serialización se realiza mediante un procedimiento específico. Cuando dwFlags contiene la marca CRED_PACK_PROTECTED_CREDENTIALS, el autor de la llamada debe ejecutarse en la misma sesión de inicio de sesión en la que se cifró la credencial.

Nota

El encabezado wincred.h define CredUnPackAuthenticationBuffer como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows Vista [solo aplicaciones de escritorio]
servidor mínimo admitido Windows Server 2008 [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
encabezado de wincred.h
biblioteca de Credui.lib
DLL de Credui.dll