235 lines
5.2 KiB
C++
235 lines
5.2 KiB
C++
//=============================================================================
|
|
// Copyright (c) 2000 Microsoft Corporation
|
|
//
|
|
// dialogs.hpp
|
|
//
|
|
// Credential manager user interface classes used to get credentials.
|
|
//
|
|
// Created 02/29/2000 johnstep (John Stephens)
|
|
//=============================================================================
|
|
|
|
#ifndef __DIALOGS_HPP__
|
|
#define __DIALOGS_HPP__
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
#include "controls.hpp"
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Types
|
|
//-----------------------------------------------------------------------------
|
|
|
|
struct CREDUI_CHANGE_PASSWORD_INFO
|
|
{
|
|
CONST WCHAR *UserName;
|
|
WCHAR *Password;
|
|
ULONG PasswordMaxChars;
|
|
CreduiBalloonTip BalloonTip;
|
|
CreduiPasswordBox OldPasswordBox;
|
|
CreduiPasswordBox NewPasswordBox;
|
|
CreduiPasswordBox ConfirmPasswordBox;
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Functions
|
|
//-----------------------------------------------------------------------------
|
|
|
|
static
|
|
INT_PTR
|
|
CALLBACK
|
|
CreduiChangePasswordCallback(
|
|
HWND changePasswordWindow,
|
|
UINT message,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
extern
|
|
BOOL
|
|
CreduiChangeDomainPassword(
|
|
HWND parentWindow,
|
|
CONST WCHAR *userName,
|
|
WCHAR *password,
|
|
ULONG passwordMaxChars
|
|
);
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// CreduiPasswordDialog Class
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class CreduiPasswordDialog
|
|
{
|
|
public:
|
|
|
|
CreduiPasswordDialog(
|
|
IN BOOL DoingCommandLine,
|
|
IN BOOL DelayCredentialWrite,
|
|
IN DWORD credCategory,
|
|
CREDUI_INFO *uiInfo,
|
|
CONST WCHAR *targetName,
|
|
WCHAR *userName,
|
|
ULONG userNameMaxChars,
|
|
WCHAR *password,
|
|
ULONG passwordMaxChars,
|
|
BOOL *save,
|
|
DWORD flags,
|
|
CtxtHandle *securityContext,
|
|
DWORD authError,
|
|
DWORD *result
|
|
);
|
|
~CreduiPasswordDialog();
|
|
|
|
private:
|
|
|
|
// Variables:
|
|
|
|
DWORD Result;
|
|
DWORD AuthError;
|
|
|
|
HWND DialogWindow;
|
|
|
|
HWND CredControlWindow;
|
|
DWORD CredControlStyle;
|
|
|
|
// User interface control state flags:
|
|
|
|
enum
|
|
{
|
|
DISABLED_DIALOG = 0x0001,
|
|
DISABLED_CONTROL_CRED = 0x0002,
|
|
DISABLED_CONTROL_OK = 0x0004,
|
|
};
|
|
|
|
BOOL DisabledControlMask;
|
|
|
|
BOOL DelayCredentialWrite;
|
|
BOOL EncryptedVisiblePassword;
|
|
|
|
DWORD Flags;
|
|
|
|
//
|
|
// CredCategory defines the type of the credential
|
|
//
|
|
DWORD CredCategory;
|
|
#define DOMAIN_CATEGORY 0
|
|
#define USERNAME_TARGET_CATEGORY CREDUI_FLAGS_USERNAME_TARGET_CREDENTIALS
|
|
#define GENERIC_CATEGORY CREDUI_FLAGS_GENERIC_CREDENTIALS
|
|
|
|
|
|
BOOL Save;
|
|
WCHAR *TargetName;
|
|
WCHAR *UserOrTargetName;
|
|
CtxtHandle *SecurityContext;
|
|
CREDUI_INFO UiInfo;
|
|
WCHAR *UserName;
|
|
ULONG UserNameMaxChars;
|
|
WCHAR *Password;
|
|
ULONG PasswordMaxChars;
|
|
|
|
BOOL fInitialSaveState; // initial state of the Save checkbox
|
|
BOOL fPassedUsername;
|
|
BOOL fPasswordOnly;
|
|
|
|
BOOL FirstPaint;
|
|
CONST CREDUI_BALLOON *CredBalloon;
|
|
|
|
enum
|
|
{
|
|
PASSWORD_UNINIT = 0,
|
|
PASSWORD_INIT = 1,
|
|
PASSWORD_CHANGED = 2
|
|
};
|
|
|
|
DWORD PasswordState;
|
|
|
|
LONG ResizeTop;
|
|
LONG ResizeDelta;
|
|
|
|
// Functions:
|
|
|
|
BOOL InitWindow(HWND dialogWindow);
|
|
VOID SelectAndSetWindowCaption();
|
|
VOID SelectAndSetWindowMessage();
|
|
|
|
VOID Enable(BOOL enable = TRUE);
|
|
|
|
DWORD HandleOk();
|
|
void SetCredTargetFromInfo();
|
|
DWORD UsernameHandleOk();
|
|
DWORD FinishHandleOk();
|
|
|
|
static LRESULT CALLBACK CmdLineMessageHandlerCallback(
|
|
HWND window,
|
|
UINT message,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
LRESULT
|
|
CreduiPasswordDialog::CmdLineMessageHandler(
|
|
UINT message,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
static INT_PTR CALLBACK DialogMessageHandlerCallback(
|
|
HWND dialogWindow,
|
|
UINT message,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
INT_PTR DialogMessageHandler(
|
|
UINT message,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
static BOOL CALLBACK ResizeDialogCallback(
|
|
HWND childWindow,
|
|
LPARAM lParam);
|
|
|
|
CREDENTIAL_TARGET_INFORMATION *TargetInfo;
|
|
CREDENTIAL *PasswordCredential;
|
|
CREDENTIAL *OldCredential;
|
|
CREDENTIAL NewCredential;
|
|
WCHAR OldUserName[CRED_MAX_USERNAME_LENGTH + 1];
|
|
WCHAR NewTargetName[CRED_MAX_STRING_LENGTH + 1];
|
|
WCHAR NewTargetAlias[CRED_MAX_STRING_LENGTH + 1];
|
|
|
|
SSOPACKAGE SSOPackage;
|
|
DWORD dwIDDResource;
|
|
RECT rcBrand;
|
|
HBITMAP hBrandBmp;
|
|
|
|
DWORD MaximumPersist;
|
|
DWORD MaximumPersistSso;
|
|
|
|
//
|
|
// Data specific to command line
|
|
//
|
|
|
|
DWORD
|
|
CmdLineDialog(
|
|
VOID
|
|
);
|
|
|
|
HWND CmdLineWindow;
|
|
BOOL DoingCommandLine;
|
|
static LONG Registered;
|
|
|
|
DWORD
|
|
CmdlinePasswordPrompt(
|
|
VOID
|
|
);
|
|
|
|
|
|
|
|
// Functions:
|
|
|
|
BOOL CompleteUserName();
|
|
VOID SelectBestTargetName(BOOL serverOnly);
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
#endif // __DIALOGS_HPP__
|