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 構造体の 1 つである場合、この関数は パスワードを復号化してから pszPassword バッファーに戻します。
[in] pAuthBuffer
変換する認証バッファーへのポインター。
このバッファーは通常、 CredUIPromptForWindowsCredentials または CredPackAuthenticationBuffer 関数の出力です。 これは、次のいずれかの型である必要があります。
- ID 資格情報の 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
pAuthBuffer バッファーのサイズ (バイト単位)。
[out] pszUserName
ユーザー名を受け取る null で終わる文字列へのポインター。
この文字列には、マーシャリングされた資格情報を指定できます。 「解説」を参照してください。
[in, out] pcchlMaxUserName
pszUserName バッファーのサイズを文字単位で指定する DWORD 値へのポインター。 出力時にバッファーのサイズが十分でない場合は、 pszUserName バッファーの必要なサイズを文字単位で指定します。 サイズには、終端の null 文字が含まれます。
[out] pszDomainName
ユーザーのドメインの名前を受け取る null で終わる文字列へのポインター。
[in, out] pcchMaxDomainName
pszDomainName バッファーのサイズを文字単位で指定する DWORD 値へのポインター。 出力時にバッファーのサイズが十分でない場合は、 pszDomainName バッファーの必要なサイズを文字単位で指定します。 サイズには、終端の null 文字が含まれます。 ドメイン名がない場合は、必要なサイズを 0 にすることができます。
[out] pszPassword
パスワードを受け取る null で終わる文字列へのポインター。
[in, out] pcchMaxPassword
pszPassword バッファーのサイズを文字単位で指定する DWORD 値へのポインター。 出力時にバッファーのサイズが十分でない場合は、 pszPassword バッファーの必要なサイズを文字単位で指定します。 サイズには、終端の null 文字が含まれます。
この文字列には、マーシャリングされた資格情報を指定できます。 「解説」を参照してください。
戻り値
関数 が成功した場合は TRUE。それ以外の場合は FALSE。
拡張エラー情報については、 GetLastError 関数を呼び出します。 次の表は 、GetLastError 関数の一般的な値を示しています。
リターン コード/値 | Description |
---|---|
|
CRED_PACK_PROTECTED_CREDENTIALS は dwFlags パラメーターの値として渡されましたが、パスワードの保護に使用されるセキュリティ コンテキストが呼び出し元のセキュリティ コンテキストとは異なるため、この関数は資格情報を復号化できません。 |
|
出力バッファーの 1 つである pszUserName、 pszDomainName、または pszPassword のサイズが不十分でした。 |
|
認証バッファーがサポートされている種類ではありません。 |
注釈
Windows 8およびWindows Server 2012以降、認証バッファーはSEC_WINNT_AUTH_IDENTITY_EX2構造にすることができます。これは、必要に応じて、SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON オプションで SspiEncryptAuthIdentityEx 関数を使用して暗号化できます。 この資格情報の形式は、 CredUIPromptForWindowsCredentials または SspiPromptForCredentials 関数を使用して、ID プロバイダーの資格情報プロバイダーによって返されます。 この構造体は、 CredPackAuthenticationBuffer 関数を使用して構築することもできます。 認証バッファー pAuthBuffer が 、KERB_CERTIFICATE_LOGON や SEC_WINNT_AUTH_IDENTITY_EX2などの非パスワード資格情報を表す場合、関数は資格情報を文字列としてマーシャリングし、ユーザー名、ドメイン名、パスワード文字列として返す必要があります。 マーシャリングは、特定のプロシージャを使用して行われます。 dwFlags に CRED_PACK_PROTECTED_CREDENTIALS フラグが含まれている場合、呼び出し元は資格情報が暗号化されたのと同じログオン セッションで実行する必要があります。
注意
wincred.h ヘッダーは CredUnPackAuthenticationBuffer をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいてこの関数の ANSI または Unicode バージョンを自動的に選択します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | wincred.h |
Library | Credui.lib |
[DLL] | Credui.dll |