Функция CredUnPackAuthenticationBufferA (wincred.h)
Функция CredUnPackAuthenticationBuffer преобразует буфер проверки подлинности, возвращаемый вызовом функции CredUIPromptForWindowsCredentials в строковое имя пользователя и пароль.
Синтаксис
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
);
Параметры
[in] dwFlags
Установка значения этого параметра на CRED_PACK_PROTECTED_CREDENTIALS указывает, что функция пытается расшифровать учетные данные в буфере проверки подлинности. Если учетные данные не могут быть расшифрованы, функция возвращает значение FALSE, а вызов функции GetLastError возвращает значение ERROR_NOT_CAPABLE.
Способ расшифровки зависит от формата буфера проверки подлинности.
Если буфер проверки подлинности является структурой SEC_WINNT_AUTH_IDENTITY_EX2, функция может расшифровать буфер, если он зашифрован с помощью SspiEncryptAuthIdentityEx с параметром SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON.
Если буфер проверки подлинности является одним из маршалированных структур KERB_*_LOGON, функция расшифровывает пароль перед возвратом пароля в буфере pszPassword.
[in] pAuthBuffer
Указатель на буфер проверки подлинности, который необходимо преобразовать.
Этот буфер обычно представляет собой выходные данные функции CredUIPromptForWindowsCredentials или CredPackAuthenticationBuffer. Это должен быть один из следующих типов:
- Структура SEC_WINNT_AUTH_IDENTITY_EX2 для учетных данных удостоверения. Функция не принимает другие SEC_WINNT_AUTH_IDENTITY структуры.
- Структура KERB_INTERACTIVE_LOGON или KERB_INTERACTIVE_UNLOCK_LOGON для учетных данных паролей.
- Структура KERB_CERTIFICATE_LOGON или KERB_CERTIFICATE_UNLOCK_LOGON для учетных данных сертификата смарт-карты.
- GENERIC_CRED для универсальных учетных данных.
[in] cbAuthBuffer
Размер
[out] pszUserName
Указатель на строку, завершающуюся значением NULL, которая получает имя пользователя.
Эта строка может быть маршалирована учетными данными. См. примечания.
[in, out] pcchlMaxUserName
Указатель на значение DWORD
[out] pszDomainName
Указатель на строку, завершающую значение NULL, которая получает имя домена пользователя.
[in, out] pcchMaxDomainName
Указатель на значение
[out] pszPassword
Указатель на строку, завершающуюся значением NULL, которая получает пароль.
[in, out] pcchMaxPassword
Указатель на значение
Эта строка может быть маршалирована учетными данными. См. примечания.
Возвращаемое значение
TRUE, если функция выполнена успешно; в противном случае FALSE.
Для получения расширенных сведений об ошибке вызовите функцию GetLastError. В следующей таблице показаны общие значения функции GetLastError.
Возврат кода или значения | Описание |
---|---|
|
CRED_PACK_PROTECTED_CREDENTIALS был передан в качестве значения параметра dwFlags, но эта функция не может расшифровать учетные данные, так как контекст безопасности, используемый для защиты пароля, отличается от контекста безопасности вызывающего объекта. |
|
Один из выходных буферов, pszUserName, pszDomainNameили pszPassword, был недостаточного размера. |
|
Буфер проверки подлинности не является поддерживаемым типом. |
Замечания
Начиная с Windows 8 и Windows Server 2012, буфер проверки подлинности может быть SEC_WINNT_AUTH_IDENTITY_EX2 структурой, которая может быть при необходимости зашифрована с помощью функции SspiEncryptAuthIdentityEx с параметром SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON. Этот формат учетных данных возвращается поставщиком учетных данных поставщика удостоверений с помощью функции CredUIPromptForWindowsCredentials или SspiPromptForCredentials. Эта структура также может быть создана с помощью функции CredPackAuthenticationBuffer. Если буфер проверки подлинности pAuthBuffer представляет учетные данные, такие как KERB_CERTIFICATE_LOGON или SEC_WINNT_AUTH_IDENTITY_EX2, функция должна маршализирует учетные данные в виде строк символов, возвращаемых как имя пользователя, доменное имя и строки паролей. Маршалинг выполняется с помощью определенной процедуры. Если dwFlags содержит флаг CRED_PACK_PROTECTED_CREDENTIALS, вызывающий объект должен выполняться в том же сеансе входа, в котором зашифрованы учетные данные.
Заметка
Заголовок wincred.h определяет CredUnPackAuthenticationBuffer как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows Vista [только классические приложения] |
минимальный поддерживаемый сервер | Windows Server 2008 [только классические приложения] |
целевая платформа | Виндоус |
заголовка | wincred.h |
библиотеки |
Credui.lib |
DLL | Credui.dll |