|
6 | 6 | #include <stdio.h> |
7 | 7 | #include <io.h> |
8 | 8 | #include <fcntl.h> |
| 9 | +#include <wincred.h> |
9 | 10 |
|
10 | 11 | /* common helpers */ |
11 | 12 |
|
@@ -33,64 +34,6 @@ static void *xmalloc(size_t size) |
33 | 34 | return ret; |
34 | 35 | } |
35 | 36 |
|
36 | | -/* MinGW doesn't have wincred.h, so we need to define stuff */ |
37 | | - |
38 | | -typedef struct _CREDENTIAL_ATTRIBUTEW { |
39 | | - LPWSTR Keyword; |
40 | | - DWORD Flags; |
41 | | - DWORD ValueSize; |
42 | | - LPBYTE Value; |
43 | | -} CREDENTIAL_ATTRIBUTEW, *PCREDENTIAL_ATTRIBUTEW; |
44 | | - |
45 | | -typedef struct _CREDENTIALW { |
46 | | - DWORD Flags; |
47 | | - DWORD Type; |
48 | | - LPWSTR TargetName; |
49 | | - LPWSTR Comment; |
50 | | - FILETIME LastWritten; |
51 | | - DWORD CredentialBlobSize; |
52 | | - LPBYTE CredentialBlob; |
53 | | - DWORD Persist; |
54 | | - DWORD AttributeCount; |
55 | | - PCREDENTIAL_ATTRIBUTEW Attributes; |
56 | | - LPWSTR TargetAlias; |
57 | | - LPWSTR UserName; |
58 | | -} CREDENTIALW, *PCREDENTIALW; |
59 | | - |
60 | | -#define CRED_TYPE_GENERIC 1 |
61 | | -#define CRED_PERSIST_LOCAL_MACHINE 2 |
62 | | -#define CRED_MAX_ATTRIBUTES 64 |
63 | | - |
64 | | -typedef BOOL (WINAPI *CredWriteWT)(PCREDENTIALW, DWORD); |
65 | | -typedef BOOL (WINAPI *CredEnumerateWT)(LPCWSTR, DWORD, DWORD *, |
66 | | - PCREDENTIALW **); |
67 | | -typedef VOID (WINAPI *CredFreeT)(PVOID); |
68 | | -typedef BOOL (WINAPI *CredDeleteWT)(LPCWSTR, DWORD, DWORD); |
69 | | - |
70 | | -static HMODULE advapi; |
71 | | -static CredWriteWT CredWriteW; |
72 | | -static CredEnumerateWT CredEnumerateW; |
73 | | -static CredFreeT CredFree; |
74 | | -static CredDeleteWT CredDeleteW; |
75 | | - |
76 | | -static void load_cred_funcs(void) |
77 | | -{ |
78 | | - /* load DLLs */ |
79 | | - advapi = LoadLibraryExA("advapi32.dll", NULL, |
80 | | - LOAD_LIBRARY_SEARCH_SYSTEM32); |
81 | | - if (!advapi) |
82 | | - die("failed to load advapi32.dll"); |
83 | | - |
84 | | - /* get function pointers */ |
85 | | - CredWriteW = (CredWriteWT)GetProcAddress(advapi, "CredWriteW"); |
86 | | - CredEnumerateW = (CredEnumerateWT)GetProcAddress(advapi, |
87 | | - "CredEnumerateW"); |
88 | | - CredFree = (CredFreeT)GetProcAddress(advapi, "CredFree"); |
89 | | - CredDeleteW = (CredDeleteWT)GetProcAddress(advapi, "CredDeleteW"); |
90 | | - if (!CredWriteW || !CredEnumerateW || !CredFree || !CredDeleteW) |
91 | | - die("failed to load functions"); |
92 | | -} |
93 | | - |
94 | 37 | static WCHAR *wusername, *password, *protocol, *host, *path, target[1024]; |
95 | 38 |
|
96 | 39 | static void write_item(const char *what, LPCWSTR wbuf, int wlen) |
@@ -300,8 +243,6 @@ int main(int argc, char *argv[]) |
300 | 243 |
|
301 | 244 | read_credential(); |
302 | 245 |
|
303 | | - load_cred_funcs(); |
304 | | - |
305 | 246 | if (!protocol || !(host || path)) |
306 | 247 | return 0; |
307 | 248 |
|
|
0 commit comments