1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
#![cfg(windows)]
extern crate winapi;
use winapi::*;
extern "system" {
pub fn AcceptSecurityContext(
phCredential: PCredHandle, phContext: PCtxtHandle, pInput: PSecBufferDesc,
fContextReq: c_ulong, TargetDataRep: c_ulong, phNewContext: PCtxtHandle,
pOutput: PSecBufferDesc, pfContextAttr: *mut c_ulong, ptsExpiry: PTimeStamp,
) -> SECURITY_STATUS;
pub fn AcquireCredentialsHandleA(
pszPrincipal: LPSTR, pszPackage: LPSTR, fCredentialUse: c_ulong, pvLogonId: *mut c_void,
pAuthData: *mut c_void, pGetKeyFn: SEC_GET_KEY_FN, pvGetKeyArgument: *mut c_void,
phCredential: PCredHandle, ptsExpiry: PTimeStamp,
) -> SECURITY_STATUS;
pub fn AcquireCredentialsHandleW(
pszPrincipal: LPWSTR, pszPackage: LPWSTR, fCredentialUse: c_ulong, pvLogonId: *mut c_void,
pAuthData: *mut c_void, pGetKeyFn: SEC_GET_KEY_FN, pvGetKeyArgument: *mut c_void,
phCredential: PCredHandle, ptsExpiry: PTimeStamp,
) -> SECURITY_STATUS;
pub fn AddCredentialsA(
hCredentials: PCredHandle, pszPrincipal: LPSTR, pszPackage: LPSTR, fCredentialUse: c_ulong,
pAuthData: *mut c_void, pGetKeyFn: SEC_GET_KEY_FN, pvGetKeyArgument: *mut c_void,
ptsExpiry: PTimeStamp,
) -> SECURITY_STATUS;
pub fn AddCredentialsW(
hCredentials: PCredHandle, pszPrincipal: LPWSTR, pszPackage: LPWSTR,
fCredentialUse: c_ulong, pAuthData: *mut c_void, pGetKeyFn: SEC_GET_KEY_FN,
pvGetKeyArgument: *mut c_void, ptsExpiry: PTimeStamp,
) -> SECURITY_STATUS;
pub fn ApplyControlToken(phContext: PCtxtHandle, pInput: PSecBufferDesc) -> SECURITY_STATUS;
pub fn ChangeAccountPasswordA(
pszPackageName: *mut SEC_CHAR, pszDomainName: *mut SEC_CHAR, pszAccountName: *mut SEC_CHAR, pszOldPassword: *mut SEC_CHAR, pszNewPassword: *mut SEC_CHAR, bImpersonating: BOOLEAN,
dwReserved: c_ulong, pOutput: PSecBufferDesc,
) -> SECURITY_STATUS;
pub fn ChangeAccountPasswordW(
pszPackageName: *mut SEC_WCHAR, pszDomainName: *mut SEC_WCHAR,
pszAccountName: *mut SEC_WCHAR, pszOldPassword: *mut SEC_WCHAR,
pszNewPassword: *mut SEC_WCHAR, bImpersonating: BOOLEAN, dwReserved: c_ulong,
pOutput: PSecBufferDesc,
) -> SECURITY_STATUS;
pub fn CompleteAuthToken(phContext: PCtxtHandle, pToken: PSecBufferDesc) -> SECURITY_STATUS;
pub fn DecryptMessage(
phContext: PCtxtHandle, pMessage: PSecBufferDesc, MessageSeqNo: c_ulong,
pfQOP: *mut c_ulong,
) -> SECURITY_STATUS;
pub fn DeleteSecurityContext(phContext: PCtxtHandle) -> SECURITY_STATUS;
pub fn EncryptMessage(
phContext: PCtxtHandle, fQOP: c_ulong, pMessage: PSecBufferDesc, MessageSeqNo: c_ulong,
) -> SECURITY_STATUS;
pub fn EnumerateSecurityPackagesA(
pcPackages: *mut c_ulong, ppPackageInfo: *mut PSecPkgInfoA,
) -> SECURITY_STATUS;
pub fn EnumerateSecurityPackagesW(
pcPackages: *mut c_ulong, ppPackageInfo: *mut PSecPkgInfoW,
) -> SECURITY_STATUS;
pub fn ExportSecurityContext(
phContext: PCtxtHandle, fFlags: ULONG, pPackedContext: PSecBuffer,
pToken: *mut *mut c_void,
) -> SECURITY_STATUS;
pub fn FreeContextBuffer(pvContextBuffer: PVOID) -> SECURITY_STATUS;
pub fn FreeCredentialsHandle(phCredential: PCredHandle) -> SECURITY_STATUS;
pub fn ImpersonateSecurityContext(phContext: PCtxtHandle) -> SECURITY_STATUS;
pub fn ImportSecurityContextA(
pszPackage: LPSTR, pPackedContext: PSecBuffer, Token: *mut c_void, phContext: PCtxtHandle,
) -> SECURITY_STATUS;
pub fn ImportSecurityContextW(
pszPackage: LPWSTR, pPackedContext: PSecBuffer, Token: *mut c_void, phContext: PCtxtHandle,
) -> SECURITY_STATUS;
pub fn InitializeSecurityContextA(
phCredential: PCredHandle, phContext: PCtxtHandle, pszTargetName: *mut SEC_CHAR,
fContextReq: c_ulong, Reserved1: c_ulong, TargetDataRep: c_ulong, pInput: PSecBufferDesc,
Reserved2: c_ulong, phNewContext: PCtxtHandle, pOutput: PSecBufferDesc,
pfContextAttr: *mut c_ulong, ptsExpiry: PTimeStamp,
) -> SECURITY_STATUS;
pub fn InitializeSecurityContextW(
phCredential: PCredHandle, phContext: PCtxtHandle, pszTargetName: *mut SEC_WCHAR,
fContextReq: c_ulong, Reserved1: c_ulong, TargetDataRep: c_ulong, pInput: PSecBufferDesc,
Reserved2: c_ulong, phNewContext: PCtxtHandle, pOutput: PSecBufferDesc,
pfContextAttr: *mut c_ulong, ptsExpiry: PTimeStamp,
) -> SECURITY_STATUS;
pub fn MakeSignature(
phContext: PCtxtHandle, fQOP: c_ulong, pMessage: PSecBufferDesc, MessageSeqNo: c_ulong,
) -> SECURITY_STATUS;
pub fn QueryContextAttributesA(
phContext: PCtxtHandle, ulAttribute: c_ulong, pBuffer: *mut c_void,
) -> SECURITY_STATUS;
pub fn QueryContextAttributesW(
phContext: PCtxtHandle, ulAttribute: c_ulong, pBuffer: *mut c_void,
) -> SECURITY_STATUS;
pub fn QueryCredentialsAttributesA(
phCredential: PCredHandle, ulAttribute: c_ulong, pBuffer: *mut c_void,
) -> SECURITY_STATUS;
pub fn QueryCredentialsAttributesW(
phCredential: PCredHandle, ulAttribute: c_ulong, pBuffer: *mut c_void,
) -> SECURITY_STATUS;
pub fn QuerySecurityContextToken(
phContext: PCtxtHandle, Token: *mut *mut c_void,
) -> SECURITY_STATUS;
pub fn QuerySecurityPackageInfoA(
pszPackageName: LPSTR, ppPackageInfo: *mut PSecPkgInfoA,
) -> SECURITY_STATUS;
pub fn QuerySecurityPackageInfoW(
pszPackageName: LPWSTR, ppPackageInfo: *mut PSecPkgInfoW,
) -> SECURITY_STATUS;
pub fn RevertSecurityContext(phContext: PCtxtHandle) -> SECURITY_STATUS;
pub fn SetContextAttributesA(
phContext: PCtxtHandle, ulAttribute: c_ulong, pBuffer: *mut c_void, cbBuffer: c_ulong,
) -> SECURITY_STATUS;
pub fn SetContextAttributesW(
phContext: PCtxtHandle, ulAttribute: c_ulong, pBuffer: *mut c_void, cbBuffer: c_ulong,
) -> SECURITY_STATUS;
pub fn SetCredentialsAttributesA(
phCredential: PCredHandle, ulAttribute: c_ulong, pBuffer: *mut c_void, cbBuffer: c_ulong,
) -> SECURITY_STATUS;
pub fn SetCredentialsAttributesW(
phCredential: PCredHandle, ulAttribute: c_ulong, pBuffer: *mut c_void, cbBuffer: c_ulong,
) -> SECURITY_STATUS;
pub fn VerifySignature(
phContext: PCtxtHandle, pMessage: PSecBufferDesc, MessageSeqNo: c_ulong,
pfQOP: *mut c_ulong,
) -> SECURITY_STATUS;
}