|
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)
|
@@ -313,8 +256,6 @@ int main(int argc, char *argv[])
|
313 | 256 |
|
314 | 257 | read_credential();
|
315 | 258 |
|
316 |
| - load_cred_funcs(); |
317 |
| - |
318 | 259 | if (!protocol || !(host || path))
|
319 | 260 | return 0;
|
320 | 261 |
|
|
0 commit comments