| 1 | /* | 
|---|
| 2 | * Copyright (C) 2006 Robert Shearman (for CodeWeavers) | 
|---|
| 3 | * | 
|---|
| 4 | * This library is free software; you can redistribute it and/or | 
|---|
| 5 | * modify it under the terms of the GNU Lesser General Public | 
|---|
| 6 | * License as published by the Free Software Foundation; either | 
|---|
| 7 | * version 2.1 of the License, or (at your option) any later version. | 
|---|
| 8 | * | 
|---|
| 9 | * This library is distributed in the hope that it will be useful, | 
|---|
| 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|---|
| 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|---|
| 12 | * Lesser General Public License for more details. | 
|---|
| 13 | * | 
|---|
| 14 | * You should have received a copy of the GNU Lesser General Public | 
|---|
| 15 | * License along with this library; if not, write to the Free Software | 
|---|
| 16 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
|---|
| 17 | */ | 
|---|
| 18 |  | 
|---|
| 19 | #ifndef _WINCRED_H_ | 
|---|
| 20 | #define _WINCRED_H_ | 
|---|
| 21 |  | 
|---|
| 22 | #ifdef __cplusplus | 
|---|
| 23 | extern "C" { | 
|---|
| 24 | #endif | 
|---|
| 25 |  | 
|---|
| 26 | #define _ADVAPI32_ | 
|---|
| 27 |  | 
|---|
| 28 | #ifdef _ADVAPI32_ | 
|---|
| 29 | #define WINADVAPI | 
|---|
| 30 | #else | 
|---|
| 31 | #define WINADVAPI DECLSPEC_IMPORT | 
|---|
| 32 | #endif | 
|---|
| 33 |  | 
|---|
| 34 | #ifndef __SECHANDLE_DEFINED__ | 
|---|
| 35 | #define __SECHANDLE_DEFINED__ | 
|---|
| 36 | typedef struct _SecHandle | 
|---|
| 37 | { | 
|---|
| 38 | ULONG_PTR dwLower; | 
|---|
| 39 | ULONG_PTR dwUpper; | 
|---|
| 40 | } SecHandle, *PSecHandle; | 
|---|
| 41 | #endif | 
|---|
| 42 |  | 
|---|
| 43 | #ifndef __WINE_CTXTHANDLE_DEFINED__ | 
|---|
| 44 | #define __WINE_CTXTHANDLE_DEFINED__ | 
|---|
| 45 | typedef SecHandle CtxtHandle; | 
|---|
| 46 | typedef PSecHandle PCtxtHandle; | 
|---|
| 47 | #endif | 
|---|
| 48 |  | 
|---|
| 49 | typedef struct _CREDENTIAL_ATTRIBUTEA | 
|---|
| 50 | { | 
|---|
| 51 | LPSTR Keyword; | 
|---|
| 52 | DWORD Flags; | 
|---|
| 53 | DWORD ValueSize; | 
|---|
| 54 | LPBYTE Value; | 
|---|
| 55 | } CREDENTIAL_ATTRIBUTEA, *PCREDENTIAL_ATTRIBUTEA; | 
|---|
| 56 |  | 
|---|
| 57 | typedef struct _CREDENTIAL_ATTRIBUTEW | 
|---|
| 58 | { | 
|---|
| 59 | LPWSTR Keyword; | 
|---|
| 60 | DWORD Flags; | 
|---|
| 61 | DWORD ValueSize; | 
|---|
| 62 | LPBYTE Value; | 
|---|
| 63 | } CREDENTIAL_ATTRIBUTEW, *PCREDENTIAL_ATTRIBUTEW; | 
|---|
| 64 |  | 
|---|
| 65 | DECL_WINELIB_TYPE_AW(CREDENTIAL_ATTRIBUTE) | 
|---|
| 66 | DECL_WINELIB_TYPE_AW(PCREDENTIAL_ATTRIBUTE) | 
|---|
| 67 |  | 
|---|
| 68 | typedef struct _CREDENTIALA | 
|---|
| 69 | { | 
|---|
| 70 | DWORD Flags; | 
|---|
| 71 | DWORD Type; | 
|---|
| 72 | LPSTR TargetName; | 
|---|
| 73 | LPSTR Comment; | 
|---|
| 74 | FILETIME LastWritten; | 
|---|
| 75 | DWORD CredentialBlobSize; | 
|---|
| 76 | LPBYTE CredentialBlob; | 
|---|
| 77 | DWORD Persist; | 
|---|
| 78 | DWORD AttributeCount; | 
|---|
| 79 | PCREDENTIAL_ATTRIBUTEA Attributes; | 
|---|
| 80 | LPSTR TargetAlias; | 
|---|
| 81 | LPSTR UserName; | 
|---|
| 82 | } CREDENTIALA, *PCREDENTIALA; | 
|---|
| 83 |  | 
|---|
| 84 | typedef struct _CREDENTIALW | 
|---|
| 85 | { | 
|---|
| 86 | DWORD Flags; | 
|---|
| 87 | DWORD Type; | 
|---|
| 88 | LPWSTR TargetName; | 
|---|
| 89 | LPWSTR Comment; | 
|---|
| 90 | FILETIME LastWritten; | 
|---|
| 91 | DWORD CredentialBlobSize; | 
|---|
| 92 | LPBYTE CredentialBlob; | 
|---|
| 93 | DWORD Persist; | 
|---|
| 94 | DWORD AttributeCount; | 
|---|
| 95 | PCREDENTIAL_ATTRIBUTEW Attributes; | 
|---|
| 96 | LPWSTR TargetAlias; | 
|---|
| 97 | LPWSTR UserName; | 
|---|
| 98 | } CREDENTIALW, *PCREDENTIALW; | 
|---|
| 99 |  | 
|---|
| 100 | DECL_WINELIB_TYPE_AW(CREDENTIAL) | 
|---|
| 101 | DECL_WINELIB_TYPE_AW(PCREDENTIAL) | 
|---|
| 102 |  | 
|---|
| 103 | typedef struct _CREDUI_INFOA | 
|---|
| 104 | { | 
|---|
| 105 | DWORD cbSize; | 
|---|
| 106 | HWND hwndParent; | 
|---|
| 107 | PCSTR pszMessageText; | 
|---|
| 108 | PCSTR pszCaptionText; | 
|---|
| 109 | HBITMAP hbmBanner; | 
|---|
| 110 | } CREDUI_INFOA, *PCREDUI_INFOA; | 
|---|
| 111 |  | 
|---|
| 112 | typedef struct _CREDUI_INFOW | 
|---|
| 113 | { | 
|---|
| 114 | DWORD cbSize; | 
|---|
| 115 | HWND hwndParent; | 
|---|
| 116 | PCWSTR pszMessageText; | 
|---|
| 117 | PCWSTR pszCaptionText; | 
|---|
| 118 | HBITMAP hbmBanner; | 
|---|
| 119 | } CREDUI_INFOW, *PCREDUI_INFOW; | 
|---|
| 120 |  | 
|---|
| 121 | DECL_WINELIB_TYPE_AW(CREDUI_INFO) | 
|---|
| 122 | DECL_WINELIB_TYPE_AW(PCREDUI_INFO) | 
|---|
| 123 |  | 
|---|
| 124 | #define CRED_MAX_STRING_LENGTH              256 | 
|---|
| 125 | #define CRED_MAX_USERNAME_LENGTH            513 | 
|---|
| 126 | #define CRED_MAX_GENERIC_TARGET_NAME_LENGTH 32767 | 
|---|
| 127 | #define CRED_MAX_DOMAIN_TARGET_NAME_LENGTH  337 | 
|---|
| 128 | #define CRED_MAX_VALUE_SIZE                 256 | 
|---|
| 129 | #define CRED_MAX_ATTRIBUTES                 64 | 
|---|
| 130 |  | 
|---|
| 131 | #define CRED_MAX_BLOB_SIZE                  512 | 
|---|
| 132 |  | 
|---|
| 133 | #define CREDUI_MAX_MESSAGE_LENGTH 32767 | 
|---|
| 134 | #define CREDUI_MAX_CAPTION_LENGTH 128 | 
|---|
| 135 | #define CREDUI_MAX_GENERIC_TARGET_LENGTH CRED_MAX_GENERIC_TARGET_NAME_LENGTH | 
|---|
| 136 | #define CREDUI_MAX_DOMAIN_TARGET_LENGTH CRED_MAX_DOMAIN_TARGET_LENGTH | 
|---|
| 137 | #define CREDUI_MAX_USERNAME_LENGTH CRED_MAX_USERNAME_LENGTH | 
|---|
| 138 | #define CREDUI_MAX_PASSWORD_LENGTH (CRED_MAX_CREDENTIAL_BLOB_SIZE / 2) | 
|---|
| 139 |  | 
|---|
| 140 | /* flags for CREDENTIAL::Flags */ | 
|---|
| 141 | #define CRED_FLAGS_PASSWORD_FOR_CERT                0x0001 | 
|---|
| 142 | #define CRED_FLAGS_PROMPT_NOW                       0x0002 | 
|---|
| 143 | #define CRED_FLAGS_USERNAME_TARGET                  0x0004 | 
|---|
| 144 | #define CRED_FLAGS_OWF_CRED_BLOB                    0x0008 | 
|---|
| 145 | #define CRED_FLAGS_VALID_FLAGS                      0x000f | 
|---|
| 146 |  | 
|---|
| 147 | /* values for CREDENTIAL::Type */ | 
|---|
| 148 | #define CRED_TYPE_GENERIC                           1 | 
|---|
| 149 | #define CRED_TYPE_DOMAIN_PASSWORD                   2 | 
|---|
| 150 | #define CRED_TYPE_DOMAIN_CERTIFICATE                3 | 
|---|
| 151 | #define CRED_TYPE_DOMAIN_VISIBLE_PASSWORD           4 | 
|---|
| 152 | #define CRED_TYPE_GENERIC_CERTIFICATE               5 | 
|---|
| 153 | #define CRED_TYPE_MAXIMUM                           6 | 
|---|
| 154 | #define CRED_TYPE_MAXIMUM_EX                        (CRED_TYPE_MAXIMUM+1000) | 
|---|
| 155 |  | 
|---|
| 156 | /* values for CREDENTIAL::Persist */ | 
|---|
| 157 | #define CRED_PERSIST_NONE                           0 | 
|---|
| 158 | #define CRED_PERSIST_SESSION                        1 | 
|---|
| 159 | #define CRED_PERSIST_LOCAL_MACHINE                  2 | 
|---|
| 160 | #define CRED_PERSIST_ENTERPRISE                     3 | 
|---|
| 161 |  | 
|---|
| 162 | #define CREDUI_FLAGS_INCORRECT_PASSWORD             0x00000001 | 
|---|
| 163 | #define CREDUI_FLAGS_DO_NOT_PERSIST                 0x00000002 | 
|---|
| 164 | #define CREDUI_FLAGS_REQUEST_ADMINISTRATOR          0x00000004 | 
|---|
| 165 | #define CREDUI_FLAGS_EXCLUDE_CERTIFICATES           0x00000008 | 
|---|
| 166 | #define CREDUI_FLAGS_REQUIRE_CERTIFICATE            0x00000010 | 
|---|
| 167 | #define CREDUI_FLAGS_SHOW_SAVE_CHECK_BOX            0x00000040 | 
|---|
| 168 | #define CREDUI_FLAGS_ALWAYS_SHOW_UI                 0x00000080 | 
|---|
| 169 | #define CREDUI_FLAGS_REQUIRE_SMARTCARD              0x00000100 | 
|---|
| 170 | #define CREDUI_FLAGS_PASSWORD_ONLY_OK               0x00000200 | 
|---|
| 171 | #define CREDUI_FLAGS_VALIDATE_USERNAME              0x00000400 | 
|---|
| 172 | #define CREDUI_FLAGS_COMPLETE_USERNAME              0x00000800 | 
|---|
| 173 | #define CREDUI_FLAGS_PERSIST                        0x00001000 | 
|---|
| 174 | #define CREDUI_FLAGS_SERVER_CREDENTIAL              0x00004000 | 
|---|
| 175 | #define CREDUI_FLAGS_EXPECT_CONFIRMATION            0x00020000 | 
|---|
| 176 | #define CREDUI_FLAGS_GENERIC_CREDENTIALS            0x00040000 | 
|---|
| 177 | #define CREDUI_FLAGS_USERNAME_TARGET_CREDENTIALS    0x00080000 | 
|---|
| 178 | #define CREDUI_FLAGS_KEEP_USERNAME                  0x00100000 | 
|---|
| 179 |  | 
|---|
| 180 | /* flags for CredWrite and CredWriteDomainCredentials */ | 
|---|
| 181 | #define CRED_PRESERVE_CREDENTIAL_BLOB               0x00000001 | 
|---|
| 182 |  | 
|---|
| 183 | WINADVAPI BOOL  WINAPI CredDeleteA(LPCSTR,DWORD,DWORD); | 
|---|
| 184 | WINADVAPI BOOL  WINAPI CredDeleteW(LPCWSTR,DWORD,DWORD); | 
|---|
| 185 | #define                CredDelete WINELIB_NAME_AW(CredDelete) | 
|---|
| 186 | WINADVAPI BOOL  WINAPI CredEnumerateA(LPCSTR,DWORD,DWORD *,PCREDENTIALA **); | 
|---|
| 187 | WINADVAPI BOOL  WINAPI CredEnumerateW(LPCWSTR,DWORD,DWORD *,PCREDENTIALW **); | 
|---|
| 188 | #define                CredEnumerate WINELIB_NAME_AW(CredEnumerate) | 
|---|
| 189 | WINADVAPI VOID  WINAPI CredFree(PVOID); | 
|---|
| 190 | WINADVAPI BOOL  WINAPI CredGetSessionTypes(DWORD,LPDWORD); | 
|---|
| 191 | WINADVAPI BOOL  WINAPI CredReadA(LPCSTR,DWORD,DWORD,PCREDENTIALA *); | 
|---|
| 192 | WINADVAPI BOOL  WINAPI CredReadW(LPCWSTR,DWORD,DWORD,PCREDENTIALW *); | 
|---|
| 193 | #define                CredRead WINELIB_NAME_AW(CredRead) | 
|---|
| 194 | WINADVAPI BOOL  WINAPI CredRenameA(LPCSTR,LPCSTR,DWORD,DWORD); | 
|---|
| 195 | WINADVAPI BOOL  WINAPI CredRenameW(LPCWSTR,LPCWSTR,DWORD,DWORD); | 
|---|
| 196 | #define                CredRename WINELIB_NAME_AW(CredRename) | 
|---|
| 197 | WINADVAPI BOOL  WINAPI CredWriteA(PCREDENTIALA,DWORD); | 
|---|
| 198 | WINADVAPI BOOL  WINAPI CredWriteW(PCREDENTIALW,DWORD); | 
|---|
| 199 | #define                CredWrite WINELIB_NAME_AW(CredWrite) | 
|---|
| 200 |  | 
|---|
| 201 | DWORD WINAPI CredUICmdLinePromptForCredentialsW(PCWSTR,PCtxtHandle,DWORD,PWSTR,ULONG,PWSTR,ULONG,PBOOL,DWORD); | 
|---|
| 202 | DWORD WINAPI CredUICmdLinePromptForCredentialsA(PCSTR,PCtxtHandle,DWORD,PSTR,ULONG,PSTR,ULONG,PBOOL,DWORD); | 
|---|
| 203 | #define      CredUICmdLinePromptForCredentials WINELIB_NAME_AW(CredUICmdLinePromptForCredentials) | 
|---|
| 204 | DWORD WINAPI CredUIConfirmCredentialsW(PCWSTR,BOOL); | 
|---|
| 205 | DWORD WINAPI CredUIConfirmCredentialsA(PCSTR,BOOL); | 
|---|
| 206 | #define      CredUIConfirmCredentials WINELIB_NAME_AW(CredUIConfirmCredentials) | 
|---|
| 207 | DWORD WINAPI CredUIParseUserNameW(PCWSTR,PWSTR,ULONG,PWSTR,ULONG); | 
|---|
| 208 | DWORD WINAPI CredUIParseUserNameA(PCSTR,PSTR,ULONG,PSTR,ULONG); | 
|---|
| 209 | #define      CredUIParseUserName WINELIB_NAME_AW(CredUIParseUserName) | 
|---|
| 210 | DWORD WINAPI CredUIPromptForCredentialsW(PCREDUI_INFOW,PCWSTR,PCtxtHandle,DWORD,PWSTR,ULONG,PWSTR,ULONG,PBOOL,DWORD); | 
|---|
| 211 | DWORD WINAPI CredUIPromptForCredentialsA(PCREDUI_INFOA,PCSTR,PCtxtHandle,DWORD,PSTR,ULONG,PSTR,ULONG,PBOOL,DWORD); | 
|---|
| 212 | #define      CredUIPromptForCredentials WINELIB_NAME_AW(CredUIPromptForCredentials) | 
|---|
| 213 | DWORD WINAPI CredUIStoreSSOCredW(PCWSTR,PCWSTR,PCWSTR,BOOL); | 
|---|
| 214 | /* Note: no CredUIStoreSSOCredA in PSDK header */ | 
|---|
| 215 | DWORD WINAPI CredUIReadSSOCredW(PCWSTR,PWSTR*); | 
|---|
| 216 | /* Note: no CredUIReadSSOCredA in PSDK header */ | 
|---|
| 217 |  | 
|---|
| 218 | #ifdef __cplusplus | 
|---|
| 219 | } | 
|---|
| 220 | #endif | 
|---|
| 221 |  | 
|---|
| 222 | #endif /* _WINCRED_H_ */ | 
|---|