From 5aea9f491947ffb42844dca1ca3ba8e091d24dbe Mon Sep 17 00:00:00 2001
From: Biswapriyo Nath <[email protected]>
Date: Thu, 4 Aug 2022 08:27:17 +0530
Subject: [PATCH] headers: Add credentialprovider.idl

Required for openvpn-gui project

Signed-off-by: Biswapriyo Nath <[email protected]>
---
 mingw-w64-crt/libsrc/uuid.c                   |   1 +
 mingw-w64-headers/Makefile.am                 |   1 +
 .../include/credentialprovider.idl            | 406 ++++++++++++++++++
 3 files changed, 408 insertions(+)
 create mode 100644 mingw-w64-headers/include/credentialprovider.idl

diff --git a/mingw-w64-crt/libsrc/uuid.c b/mingw-w64-crt/libsrc/uuid.c
index 8dfcb08..cd86228 100644
--- a/mingw-w64-crt/libsrc/uuid.c
+++ b/mingw-w64-crt/libsrc/uuid.c
@@ -14,6 +14,7 @@
 #define INITGUID
 #include <basetyps.h>
 
+#include <credentialprovider.h>
 #include <textstor.h>
 #include <shobjidl.h>
 #include <propkey.h>
diff --git a/mingw-w64-headers/Makefile.am b/mingw-w64-headers/Makefile.am
index 96a8f47..8b25bfc 100644
--- a/mingw-w64-headers/Makefile.am
+++ b/mingw-w64-headers/Makefile.am
@@ -90,6 +90,7 @@ IDL_SRCS = \
   include/comadmin.idl \
   include/commoncontrols.idl \
   include/control.idl \
+  include/credentialprovider.idl \
   include/ctfutb.idl \
   include/d3d10.idl \
   include/d3d10_1.idl \
diff --git a/mingw-w64-headers/include/credentialprovider.idl 
b/mingw-w64-headers/include/credentialprovider.idl
new file mode 100644
index 0000000..3019c08
--- /dev/null
+++ b/mingw-w64-headers/include/credentialprovider.idl
@@ -0,0 +1,406 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+cpp_quote("#include <winapifamily.h>")
+
+cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
+
+import "wtypes.idl";
+import "shobjidl.idl";
+import "propsys.idl";
+import "unknwn.idl";
+
+[v1_enum] typedef enum _CREDENTIAL_PROVIDER_USAGE_SCENARIO {
+  CPUS_INVALID = 0,
+  CPUS_LOGON,
+  CPUS_UNLOCK_WORKSTATION,
+  CPUS_CHANGE_PASSWORD,
+  CPUS_CREDUI,
+  CPUS_PLAP,
+} CREDENTIAL_PROVIDER_USAGE_SCENARIO;
+
+[v1_enum] typedef enum _CREDENTIAL_PROVIDER_FIELD_TYPE {
+  CPFT_INVALID = 0,
+  CPFT_LARGE_TEXT,
+  CPFT_SMALL_TEXT,
+  CPFT_COMMAND_LINK,
+  CPFT_EDIT_TEXT,
+  CPFT_PASSWORD_TEXT,
+  CPFT_TILE_IMAGE,
+  CPFT_CHECKBOX,
+  CPFT_COMBOBOX,
+  CPFT_SUBMIT_BUTTON,
+} CREDENTIAL_PROVIDER_FIELD_TYPE;
+
+[v1_enum] typedef enum _CREDENTIAL_PROVIDER_FIELD_STATE {
+  CPFS_HIDDEN = 0,
+  CPFS_DISPLAY_IN_SELECTED_TILE,
+  CPFS_DISPLAY_IN_DESELECTED_TILE,
+  CPFS_DISPLAY_IN_BOTH,
+} CREDENTIAL_PROVIDER_FIELD_STATE;
+
+[v1_enum] typedef enum _CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE {
+  CPFIS_NONE = 0,
+  CPFIS_READONLY,
+  CPFIS_DISABLED,
+  CPFIS_FOCUSED,
+} CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE;
+
+typedef struct _CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR {
+  DWORD dwFieldID;
+  CREDENTIAL_PROVIDER_FIELD_TYPE cpft;
+  LPWSTR pszLabel;
+  GUID guidFieldType;
+} CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR;
+
+[v1_enum] typedef enum _CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE {
+  CPGSR_NO_CREDENTIAL_NOT_FINISHED,
+  CPGSR_NO_CREDENTIAL_FINISHED,
+  CPGSR_RETURN_CREDENTIAL_FINISHED,
+  CPGSR_RETURN_NO_CREDENTIAL_FINISHED,
+} CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE;
+
+[v1_enum] typedef enum _CREDENTIAL_PROVIDER_STATUS_ICON {
+  CPSI_NONE = 0,
+  CPSI_ERROR,
+  CPSI_WARNING,
+  CPSI_SUCCESS,
+} CREDENTIAL_PROVIDER_STATUS_ICON;
+
+typedef struct _CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION {
+  ULONG ulAuthenticationPackage;
+  GUID clsidCredentialProvider;
+  ULONG cbSerialization;
+  [size_is(cbSerialization)] byte* rgbSerialization;
+} CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION;
+
+cpp_quote("#if (NTDDI_VERSION >= NTDDI_WIN8)")
+[v1_enum] typedef enum CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS {
+  CPAO_NONE = 0x00000000,
+  CPAO_EMPTY_LOCAL = 0x00000001,
+  CPAO_EMPTY_CONNECTED = 0x00000002,
+} CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS)")
+
+[v1_enum] typedef enum CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS {
+  CPCFO_NONE = 0x00000000,
+  CPCFO_ENABLE_PASSWORD_REVEAL = 0x00000001,
+  CPCFO_IS_EMAIL_ADDRESS = 0x00000002,
+  CPCFO_ENABLE_TOUCH_KEYBOARD_AUTO_INVOKE = 0x00000004,
+  CPCFO_NUMBERS_ONLY = 0x00000008,
+  CPCFO_SHOW_ENGLISH_KEYBOARD = 0x00000010,
+} CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS)")
 
+cpp_quote("#endif /* (NTDDI_VERSION >= NTDDI_WIN8) */")
+
+cpp_quote("#ifdef __WIDL__")
+typedef LONG NTSTATUS;
+cpp_quote("#else")
+cpp_quote("#ifndef NTSTATUS")
+cpp_quote("typedef LONG NTSTATUS;")
+cpp_quote("#endif")
+cpp_quote("#endif")
+
+cpp_quote("#define CREDENTIAL_PROVIDER_NO_DEFAULT ((DWORD)-1)")
+
+interface ICredentialProviderCredentialEvents;
+
+[
+  local,
+  object,
+  pointer_default(ref),
+  uuid(63913a93-40c1-481a-818d-4072ff8c70cc),
+]
+interface ICredentialProviderCredential : IUnknown
+{
+  HRESULT Advise([in] ICredentialProviderCredentialEvents* pcpce);
+  HRESULT UnAdvise();
+
+  HRESULT SetSelected([out] WINBOOL* pbAutoLogon);
+  HRESULT SetDeselected();
+
+  HRESULT GetFieldState([in] DWORD dwFieldID,
+              [out] CREDENTIAL_PROVIDER_FIELD_STATE* pcpfs,
+              [out] CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE* pcpfis);
+
+  HRESULT GetStringValue([in] DWORD dwFieldID, [out, string] LPWSTR* ppsz);
+  HRESULT GetBitmapValue([in] DWORD dwFieldID, [out] HBITMAP* phbmp);
+  HRESULT GetCheckboxValue([in] DWORD dwFieldID, [out] WINBOOL* pbChecked, 
[out, string] LPWSTR* ppszLabel);
+  HRESULT GetSubmitButtonValue([in] DWORD dwFieldID, [out] DWORD* 
pdwAdjacentTo);
+
+  HRESULT GetComboBoxValueCount([in] DWORD dwFieldID, [out] DWORD* pcItems, 
[out] DWORD* pdwSelectedItem);
+  HRESULT GetComboBoxValueAt([in] DWORD dwFieldID, DWORD dwItem, [out, string] 
LPWSTR* ppszItem);
+
+  HRESULT SetStringValue([in] DWORD dwFieldID, [in, string] LPCWSTR psz);
+  HRESULT SetCheckboxValue([in] DWORD dwFieldID, [in] WINBOOL bChecked);
+  HRESULT SetComboBoxSelectedValue([in] DWORD dwFieldID, [in] DWORD 
dwSelectedItem);
+  HRESULT CommandLinkClicked([in] DWORD dwFieldID);
+
+  HRESULT GetSerialization([out] 
CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE* pcpgsr,
+               [out] CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION* pcpcs,
+               [out] LPWSTR* ppszOptionalStatusText,
+               [out] CREDENTIAL_PROVIDER_STATUS_ICON* pcpsiOptionalStatusIcon);
+  HRESULT ReportResult([in] NTSTATUS ntsStatus,
+             [in] NTSTATUS ntsSubstatus,
+             [out] LPWSTR* ppszOptionalStatusText,
+             [out] CREDENTIAL_PROVIDER_STATUS_ICON* pcpsiOptionalStatusIcon);
+}
+
+[
+  local,
+  object,
+  pointer_default(ref),
+  uuid(9090be5b-502b-41fb-bccc-0049a6c7254b),
+]
+interface IQueryContinueWithStatus : IQueryContinue
+{
+  HRESULT SetStatusMessage([in, string] LPCWSTR psz);
+}
+
+[
+  local,
+  object,
+  pointer_default(ref),
+  uuid(9387928b-ac75-4bf9-8ab2-2b93c4a55290),
+]
+interface IConnectableCredentialProviderCredential : 
ICredentialProviderCredential
+{
+  HRESULT Connect([in] IQueryContinueWithStatus* pqcws);
+  HRESULT Disconnect();
+}
+
+[
+  object,
+  pointer_default(ref),
+  uuid(fa6fa76b-66b7-4b11-95f1-86171118e816),
+]
+interface ICredentialProviderCredentialEvents : IUnknown
+{
+  HRESULT SetFieldState([in] ICredentialProviderCredential* pcpc,
+              [in] DWORD dwFieldID,
+              [in] CREDENTIAL_PROVIDER_FIELD_STATE cpfs);
+  HRESULT SetFieldInteractiveState([in] ICredentialProviderCredential* pcpc,
+                   [in] DWORD dwFieldID,
+                   [in] CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE cpfis);
+
+  HRESULT SetFieldString([in] ICredentialProviderCredential* pcpc,
+               [in] DWORD dwFieldID,
+               [in, string, unique] LPCWSTR psz);
+  HRESULT SetFieldCheckbox([in] ICredentialProviderCredential* pcpc,
+               [in] DWORD dwFieldID,
+               [in] WINBOOL bChecked,
+               [in] LPCWSTR pszLabel);
+  HRESULT SetFieldBitmap([in] ICredentialProviderCredential* pcpc,
+               [in] DWORD dwFieldID,
+               [in] HBITMAP hbmp);
+
+  HRESULT SetFieldComboBoxSelectedItem([in] ICredentialProviderCredential* 
pcpc,
+                     [in] DWORD dwFieldID,
+                     [in] DWORD dwSelectedItem);
+  HRESULT DeleteFieldComboBoxItem([in] ICredentialProviderCredential* pcpc,
+                  [in] DWORD dwFieldID,
+                  [in] DWORD dwItem);
+  HRESULT AppendFieldComboBoxItem([in] ICredentialProviderCredential* pcpc,
+                  [in] DWORD dwFieldID,
+                  [in, string] LPCWSTR pszItem);
+
+  HRESULT SetFieldSubmitButton([in] ICredentialProviderCredential* pcpc,
+                 [in] DWORD dwFieldID,
+                 [in] DWORD dwAdjacentTo);
+  HRESULT OnCreatingWindow([out] HWND* phwndOwner);
+}
+
+interface ICredentialProviderEvents;
+
+[
+  local,
+  object,
+  pointer_default(ref),
+  uuid(d27c3481-5a1c-45b2-8aaa-c20ebbe8229e),
+]
+interface ICredentialProvider : IUnknown
+{
+  HRESULT SetUsageScenario([in] CREDENTIAL_PROVIDER_USAGE_SCENARIO cpus,
+               [in] DWORD dwFlags);
+  HRESULT SetSerialization([in] const 
CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION* pcpcs);
+
+  HRESULT Advise([in] ICredentialProviderEvents* pcpe, [in] UINT_PTR 
upAdviseContext);
+  HRESULT UnAdvise();
+
+  HRESULT GetFieldDescriptorCount([out] DWORD* pdwCount);
+  HRESULT GetFieldDescriptorAt([in] DWORD dwIndex,
+                 [out] CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR** ppcpfd);
+
+  HRESULT GetCredentialCount([out] DWORD* pdwCount,
+                 [out] DWORD* pdwDefault,
+                 [out] WINBOOL* pbAutoLogonWithDefault);
+  HRESULT GetCredentialAt([in] DWORD dwIndex,
+              [out] ICredentialProviderCredential** ppcpc);
+}
+
+[
+  object,
+  pointer_default(ref),
+  uuid(34201e5a-a787-41a3-a5a4-bd6dcf2a854e),
+]
+interface ICredentialProviderEvents : IUnknown
+{
+  HRESULT CredentialsChanged([in] UINT_PTR upAdviseContext);
+}
+
+[
+  local,
+  object,
+  pointer_default(ref),
+  uuid(a5da53f9-d475-4080-a120-910c4a739880),
+]
+interface ICredentialProviderFilter : IUnknown
+{
+  HRESULT Filter([in] CREDENTIAL_PROVIDER_USAGE_SCENARIO cpus,
+           [in] DWORD dwFlags,
+           [in, size_is(cProviders)] GUID* rgclsidProviders,
+           [in, out, size_is(cProviders)] WINBOOL* rgbAllow,
+           [in] DWORD cProviders);
+  HRESULT UpdateRemoteCredential([in] const 
CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION* pcpcsIn,
+                   [out] CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION* 
pcpcsOut);
+}
+
+cpp_quote("#if (NTDDI_VERSION >= NTDDI_WIN8)")
+[
+  local,
+  object,
+  pointer_default(ref),
+  uuid(fd672c54-40ea-4d6e-9b49-cfb1a7507bd7),
+]
+interface ICredentialProviderCredential2 : ICredentialProviderCredential
+{
+  HRESULT GetUserSid([out, string] LPWSTR *sid);
+}
+
+[
+  local,
+  object,
+  pointer_default(ref),
+  uuid(dbc6fb30-c843-49e3-a645-573e6f39446a),
+]
+interface ICredentialProviderCredentialWithFieldOptions : IUnknown
+{
+  HRESULT GetFieldOptions([in] DWORD fieldID,
+              [out] CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS *options);
+}
+
+[
+  object,
+  pointer_default(ref),
+  uuid(b53c00b6-9922-4b78-b1f4-ddfe774dc39b),
+]
+interface ICredentialProviderCredentialEvents2 : 
ICredentialProviderCredentialEvents
+{
+  HRESULT BeginFieldUpdates();
+  HRESULT EndFieldUpdates();
+  HRESULT SetFieldOptions([in] ICredentialProviderCredential *credential,
+              [in] DWORD fieldID,
+              [in] CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS options);
+}
+
+[
+  local,
+  uuid(13793285-3ea6-40fd-b420-15f47da41fbb),
+  object,
+  pointer_default(ref),
+]
+interface ICredentialProviderUser : IUnknown
+{
+  HRESULT GetSid([out, string] LPWSTR *sid);
+  HRESULT GetProviderID([out] GUID *providerID);
+  HRESULT GetStringValue([in] REFPROPERTYKEY key, [out, string] LPWSTR 
*stringValue);
+  HRESULT GetValue([in] REFPROPERTYKEY key, [out] PROPVARIANT *value);
+}
+
+cpp_quote("DEFINE_GUID(Identity_LocalUserProvider, 0xA198529B, 0x730F, 0x4089, 
0xB6, 0x46, 0xA1, 0x25, 0x57, 0xF5, 0x66, 0x5E);")
+
+[
+  local,
+  uuid(90c119ae-0f18-4520-a1f1-114366a40fe8),
+  object,
+  pointer_default(ref),
+]
+interface ICredentialProviderUserArray : IUnknown
+{
+  HRESULT SetProviderFilter([in] REFGUID guidProviderToFilterTo);
+  HRESULT GetAccountOptions([out] CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS 
*credentialProviderAccountOptions);
+  HRESULT GetCount([out] DWORD *userCount);
+  HRESULT GetAt([in] DWORD userIndex, [out] ICredentialProviderUser **user);
+}
+
+[
+  local,
+  uuid(095c1484-1c0c-4388-9c6d-500e61bf84bd),
+  object,
+  pointer_default(ref),
+]
+interface ICredentialProviderSetUserArray : IUnknown
+{
+  HRESULT SetUserArray([in] ICredentialProviderUserArray *users);
+}
+
+cpp_quote("#endif /* (NTDDI_VERSION >= NTDDI_WIN8) */")
+
+[
+  uuid(d545db01-e522-4a63-af83-d8ddf954004f),
+]
+library CredentialProviders
+{
+  [uuid(60b78e88-ead8-445c-9cfd-0b87f74ea6cd)]
+  coclass PasswordCredentialProvider { interface ICredentialProvider; }
+
+  [uuid(6f45dc1e-5384-457a-bc13-2cd81b0d28ed)]
+  coclass V1PasswordCredentialProvider { interface ICredentialProvider; }
+
+  [uuid(cb82ea12-9f71-446d-89e1-8d0924e1256e)]
+  coclass PINLogonCredentialProvider { interface ICredentialProvider; }
+
+  [uuid(3dd6bec0-8193-4ffe-ae25-e08e39ea4063)]
+  coclass NPCredentialProvider { interface ICredentialProvider; }
+
+  [uuid(8fd7e19c-3bf7-489b-a72c-846ab3678c96)]
+  coclass SmartcardCredentialProvider { interface ICredentialProvider; }
+
+  [uuid(8bf9a910-a8ff-457f-999f-a5ca10b4a885)]
+  coclass V1SmartcardCredentialProvider { interface ICredentialProvider; }
+
+  [uuid(94596c7e-3744-41ce-893e-bbf09122f76a)]
+  coclass SmartcardPinProvider { interface ICredentialProvider; }
+
+  [uuid(1b283861-754f-4022-ad47-a5eaaa618894)]
+  coclass SmartcardReaderSelectionProvider { interface ICredentialProvider; }
+
+  [uuid(1ee7337f-85ac-45e2-a23c-37c753209769)]
+  coclass SmartcardWinRTProvider { interface ICredentialProvider; }
+
+  [uuid(25CBB996-92ED-457e-B28C-4774084BD562)]
+  coclass GenericCredentialProvider { interface ICredentialProvider; }
+
+  [uuid(5537e283-b1e7-4ef8-9c6e-7ab0afe5056d)]
+  coclass RASProvider { interface ICredentialProvider; }
+
+  [uuid(07aa0886-cc8d-4e19-a410-1c75af686e62)]
+  coclass OnexCredentialProvider { interface ICredentialProvider; }
+
+  [uuid(33c86cd6-705f-4ba1-9adb-67070b837775)]
+  coclass OnexPlapSmartcardCredentialProvider { interface ICredentialProvider; 
}
+
+  [uuid(503739d0-4c5e-4cfd-b3ba-d881334f0df2)]
+  coclass VaultProvider { interface ICredentialProvider; }
+
+  [uuid(bec09223-b018-416d-a0ac-523971b639f5)]
+  coclass WinBioCredentialProvider { interface ICredentialProvider; }
+
+  [uuid(ac3ac249-e820-4343-a65b-377ac634dc09)]
+  coclass V1WinBioCredentialProvider { interface ICredentialProvider; }
+}
+
+cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */")
-- 
2.37.1

_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to