VirtualBox

source: vbox/trunk/src/VBox/Additions/WINNT/VBoxCredProv/VBoxCredProvCredential.h@ 95890

Last change on this file since 95890 was 95890, checked in by vboxsync, 23 months ago

Add/Nt/VBoxCredProv: Make it compile in VBOX_WITH_NOCRT_STATIC mode. bugref:10261

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.1 KB
Line 
1/* $Id: VBoxCredProvCredential.h 95890 2022-07-28 01:49:20Z vboxsync $ */
2/** @file
3 * VBoxCredProvCredential - Class for keeping and handling the passed credentials.
4 */
5
6/*
7 * Copyright (C) 2012-2022 Oracle Corporation
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 */
17
18#ifndef GA_INCLUDED_SRC_WINNT_VBoxCredProv_VBoxCredProvCredential_h
19#define GA_INCLUDED_SRC_WINNT_VBoxCredProv_VBoxCredProvCredential_h
20#ifndef RT_WITHOUT_PRAGMA_ONCE
21# pragma once
22#endif
23
24
25#include <iprt/win/windows.h>
26#include <NTSecAPI.h>
27#define SECURITY_WIN32
28#include <Security.h>
29#include <ShlGuid.h>
30
31#include <iprt/win/shlwapi.h>
32
33#include <iprt/string.h>
34
35#include "VBoxCredentialProvider.h"
36
37
38
39class VBoxCredProvProvider;
40
41class VBoxCredProvCredential : public ICredentialProviderCredential
42{
43public:
44
45 VBoxCredProvCredential(void);
46
47 virtual ~VBoxCredProvCredential(void);
48
49 /** @name IUnknown methods
50 * @{ */
51 IFACEMETHODIMP_(ULONG) AddRef(void);
52 IFACEMETHODIMP_(ULONG) Release(void);
53 IFACEMETHODIMP QueryInterface(REFIID interfaceID, void **ppvInterface);
54 /** @} */
55
56 /** @name ICredentialProviderCredential methods.
57 * @{ */
58 IFACEMETHODIMP Advise(ICredentialProviderCredentialEvents* pcpce);
59 IFACEMETHODIMP UnAdvise(void);
60
61 IFACEMETHODIMP SetSelected(PBOOL pfAutoLogon);
62 IFACEMETHODIMP SetDeselected(void);
63
64 IFACEMETHODIMP GetFieldState(DWORD dwFieldID,
65 CREDENTIAL_PROVIDER_FIELD_STATE* pcpfs,
66 CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE* pcpfis);
67
68 IFACEMETHODIMP GetStringValue(DWORD dwFieldID, PWSTR *ppwsz);
69 IFACEMETHODIMP GetBitmapValue(DWORD dwFieldID, HBITMAP *phbmp);
70 IFACEMETHODIMP GetCheckboxValue(DWORD dwFieldID, PBOOL pfChecked, PWSTR *ppwszLabel);
71 IFACEMETHODIMP GetComboBoxValueCount(DWORD dwFieldID, DWORD* pcItems, DWORD *pdwSelectedItem);
72 IFACEMETHODIMP GetComboBoxValueAt(DWORD dwFieldID, DWORD dwItem, PWSTR *ppwszItem);
73 IFACEMETHODIMP GetSubmitButtonValue(DWORD dwFieldID, DWORD *pdwAdjacentTo);
74
75 IFACEMETHODIMP SetStringValue(DWORD dwFieldID, PCWSTR pwszValue);
76 IFACEMETHODIMP SetCheckboxValue(DWORD dwFieldID, BOOL fChecked);
77 IFACEMETHODIMP SetComboBoxSelectedValue(DWORD dwFieldID, DWORD dwSelectedItem);
78 IFACEMETHODIMP CommandLinkClicked(DWORD dwFieldID);
79
80 IFACEMETHODIMP GetSerialization(CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE *pcpGetSerializationResponse,
81 CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION *pcpCredentialSerialization,
82 PWSTR *ppwszOptionalStatusText, CREDENTIAL_PROVIDER_STATUS_ICON *pcpsiOptionalStatusIcon);
83 IFACEMETHODIMP ReportResult(NTSTATUS ntStatus, NTSTATUS ntSubStatus,
84 PWSTR *ppwszOptionalStatusText,
85 CREDENTIAL_PROVIDER_STATUS_ICON* pcpsiOptionalStatusIcon);
86 /** @} */
87
88 PCRTUTF16 getField(DWORD dwFieldID);
89 HRESULT setField(DWORD dwFieldID, const PRTUTF16 pcwszString, bool fNotifyUI);
90 HRESULT Reset(void);
91 HRESULT Initialize(CREDENTIAL_PROVIDER_USAGE_SCENARIO cpus);
92 int RetrieveCredentials(void);
93 BOOL TranslateAccountName(PWSTR pwszDisplayName, PWSTR *ppwszAccoutName);
94 static bool ExtractAccountData(PWSTR pwszAccountData, PWSTR *ppwszAccountName, PWSTR *ppwszDomain);
95
96protected:
97 HRESULT RTUTF16ToUnicode(PUNICODE_STRING pUnicodeDest, PRTUTF16 pwszSource, bool fCopy);
98 HRESULT RTUTF16ToUnicodeA(PUNICODE_STRING pUnicodeDest, PRTUTF16 pwszSource);
99 void UnicodeStringFree(PUNICODE_STRING pUnicode);
100
101 HRESULT kerberosLogonCreate(KERB_INTERACTIVE_LOGON *pLogon,
102 CREDENTIAL_PROVIDER_USAGE_SCENARIO enmUsage,
103 PRTUTF16 pwszUser, PRTUTF16 pwszPassword, PRTUTF16 pwszDomain);
104 void kerberosLogonDestroy(KERB_INTERACTIVE_LOGON *pLogon);
105 HRESULT kerberosLogonSerialize(const KERB_INTERACTIVE_LOGON *pLogon, PBYTE *ppPackage, DWORD *pcbPackage);
106
107private:
108 /** Internal reference count. */
109 LONG m_cRefs;
110 /** The usage scenario for which we were enumerated. */
111 CREDENTIAL_PROVIDER_USAGE_SCENARIO m_enmUsageScenario;
112 /** The actual credential provider fields.
113 * Must be allocated as long as the credential provider is in charge. */
114 PRTUTF16 m_apwszFields[VBOXCREDPROV_NUM_FIELDS];
115 /** Pointer to event handler. */
116 ICredentialProviderCredentialEvents *m_pEvents;
117 /** Flag indicating whether credentials already were retrieved. */
118 bool m_fHaveCreds;
119 /** Flag indicating wheter a profile (user tile) current is selected or not. */
120 bool m_fIsSelected;
121};
122#endif /* !GA_INCLUDED_SRC_WINNT_VBoxCredProv_VBoxCredProvCredential_h */
123
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use