20#include <winpr/platform.h>
21#include <winpr/wtypes.h>
22#include <winpr/config.h>
25#define SEC_ENTRY __stdcall
26#define SSPI_EXPORT __declspec(dllexport)
28#include <winpr/winpr.h>
31#define SSPI_EXPORT WINPR_API
37typedef unsigned long ULONG;
39typedef LONG SECURITY_STATUS;
42WINPR_PRAGMA_DIAG_IGNORED_MISSING_PROTOTYPES
52extern SECURITY_STATUS SEC_ENTRY sspi_EnumerateSecurityPackagesW(
void*,
void*);
54SSPI_EXPORT SECURITY_STATUS SEC_ENTRY EnumerateSecurityPackagesW(
void* pcPackages,
57 return sspi_EnumerateSecurityPackagesW(pcPackages, ppPackageInfo);
60extern SECURITY_STATUS SEC_ENTRY sspi_EnumerateSecurityPackagesA(
void*,
void*);
62SSPI_EXPORT SECURITY_STATUS SEC_ENTRY EnumerateSecurityPackagesA(
void* pcPackages,
65 return sspi_EnumerateSecurityPackagesA(pcPackages, ppPackageInfo);
68extern void* SEC_ENTRY sspi_InitSecurityInterfaceW(
void);
70SSPI_EXPORT
void* SEC_ENTRY InitSecurityInterfaceW(
void)
72 return sspi_InitSecurityInterfaceW();
75extern void* SEC_ENTRY sspi_InitSecurityInterfaceA(
void);
77SSPI_EXPORT
void* SEC_ENTRY InitSecurityInterfaceA(
void)
79 return sspi_InitSecurityInterfaceA();
82extern SECURITY_STATUS SEC_ENTRY sspi_QuerySecurityPackageInfoW(
void*,
void*);
84SSPI_EXPORT SECURITY_STATUS SEC_ENTRY QuerySecurityPackageInfoW(
void* pszPackageName,
87 return sspi_QuerySecurityPackageInfoW(pszPackageName, ppPackageInfo);
90extern SECURITY_STATUS SEC_ENTRY sspi_QuerySecurityPackageInfoA(
void*,
void*);
92SSPI_EXPORT SECURITY_STATUS SEC_ENTRY QuerySecurityPackageInfoA(
void* pszPackageName,
95 return sspi_QuerySecurityPackageInfoA(pszPackageName, ppPackageInfo);
100extern SECURITY_STATUS SEC_ENTRY sspi_AcquireCredentialsHandleW(
void*,
void*, ULONG,
void*,
void*,
101 void*,
void*,
void*,
void*);
103SSPI_EXPORT SECURITY_STATUS SEC_ENTRY AcquireCredentialsHandleW(
104 void* pszPrincipal,
void* pszPackage, ULONG fCredentialUse,
void* pvLogonID,
void* pAuthData,
105 void* pGetKeyFn,
void* pvGetKeyArgument,
void* phCredential,
void* ptsExpiry)
107 return sspi_AcquireCredentialsHandleW(pszPrincipal, pszPackage, fCredentialUse, pvLogonID,
108 pAuthData, pGetKeyFn, pvGetKeyArgument, phCredential,
112extern SECURITY_STATUS SEC_ENTRY sspi_AcquireCredentialsHandleA(
void*,
void*, ULONG,
void*,
void*,
113 void*,
void*,
void*,
void*);
115SSPI_EXPORT SECURITY_STATUS SEC_ENTRY AcquireCredentialsHandleA(
116 void* pszPrincipal,
void* pszPackage, ULONG fCredentialUse,
void* pvLogonID,
void* pAuthData,
117 void* pGetKeyFn,
void* pvGetKeyArgument,
void* phCredential,
void* ptsExpiry)
119 return sspi_AcquireCredentialsHandleA(pszPrincipal, pszPackage, fCredentialUse, pvLogonID,
120 pAuthData, pGetKeyFn, pvGetKeyArgument, phCredential,
124extern SECURITY_STATUS SEC_ENTRY sspi_ExportSecurityContext(
void*, ULONG,
void*,
void**);
126SSPI_EXPORT SECURITY_STATUS SEC_ENTRY ExportSecurityContext(
void* phContext, ULONG fFlags,
127 void* pPackedContext,
void** pToken)
129 return sspi_ExportSecurityContext(phContext, fFlags, pPackedContext, pToken);
132extern SECURITY_STATUS SEC_ENTRY sspi_FreeCredentialsHandle(
void*);
134SSPI_EXPORT SECURITY_STATUS SEC_ENTRY FreeCredentialsHandle(
void* phCredential)
136 return sspi_FreeCredentialsHandle(phCredential);
139extern SECURITY_STATUS SEC_ENTRY sspi_ImportSecurityContextW(
void*,
void*,
void*,
void*);
141SSPI_EXPORT SECURITY_STATUS SEC_ENTRY ImportSecurityContextW(
void* pszPackage,
void* pPackedContext,
142 void* pToken,
void* phContext)
144 return sspi_ImportSecurityContextW(pszPackage, pPackedContext, pToken, phContext);
147extern SECURITY_STATUS SEC_ENTRY sspi_ImportSecurityContextA(
void*,
void*,
void*,
void*);
149SSPI_EXPORT SECURITY_STATUS SEC_ENTRY ImportSecurityContextA(
void* pszPackage,
void* pPackedContext,
150 void* pToken,
void* phContext)
152 return sspi_ImportSecurityContextA(pszPackage, pPackedContext, pToken, phContext);
155extern SECURITY_STATUS SEC_ENTRY sspi_QueryCredentialsAttributesW(
void*, ULONG,
void*);
157SSPI_EXPORT SECURITY_STATUS SEC_ENTRY QueryCredentialsAttributesW(
void* phCredential,
158 ULONG ulAttribute,
void* pBuffer)
160 return sspi_QueryCredentialsAttributesW(phCredential, ulAttribute, pBuffer);
163extern SECURITY_STATUS SEC_ENTRY sspi_QueryCredentialsAttributesA(
void*, ULONG,
void*);
165SSPI_EXPORT SECURITY_STATUS SEC_ENTRY QueryCredentialsAttributesA(
void* phCredential,
166 ULONG ulAttribute,
void* pBuffer)
168 return sspi_QueryCredentialsAttributesA(phCredential, ulAttribute, pBuffer);
173extern SECURITY_STATUS SEC_ENTRY sspi_AcceptSecurityContext(
void*,
void*,
void*, ULONG, ULONG,
174 void*,
void*,
void*,
void*);
176SSPI_EXPORT SECURITY_STATUS SEC_ENTRY AcceptSecurityContext(
void* phCredential,
void* phContext,
177 void* pInput, ULONG fContextReq,
178 ULONG TargetDataRep,
void* phNewContext,
179 void* pOutput,
void* pfContextAttr,
182 return sspi_AcceptSecurityContext(phCredential, phContext, pInput, fContextReq, TargetDataRep,
183 phNewContext, pOutput, pfContextAttr, ptsTimeStamp);
186extern SECURITY_STATUS SEC_ENTRY sspi_ApplyControlToken(
void*,
void*);
188SSPI_EXPORT SECURITY_STATUS SEC_ENTRY ApplyControlToken(
void* phContext,
void* pInput)
190 return sspi_ApplyControlToken(phContext, pInput);
193extern SECURITY_STATUS SEC_ENTRY sspi_CompleteAuthToken(
void*,
void*);
195SSPI_EXPORT SECURITY_STATUS SEC_ENTRY CompleteAuthToken(
void* phContext,
void* pToken)
197 return sspi_CompleteAuthToken(phContext, pToken);
200extern SECURITY_STATUS SEC_ENTRY sspi_DeleteSecurityContext(
void*);
202SSPI_EXPORT SECURITY_STATUS SEC_ENTRY DeleteSecurityContext(
void* phContext)
204 return sspi_DeleteSecurityContext(phContext);
207extern SECURITY_STATUS SEC_ENTRY sspi_FreeContextBuffer(
void*);
209SSPI_EXPORT SECURITY_STATUS SEC_ENTRY FreeContextBuffer(
void* pvContextBuffer)
211 return sspi_FreeContextBuffer(pvContextBuffer);
214extern SECURITY_STATUS SEC_ENTRY sspi_ImpersonateSecurityContext(
void*);
216SSPI_EXPORT SECURITY_STATUS SEC_ENTRY ImpersonateSecurityContext(
void* phContext)
218 return sspi_ImpersonateSecurityContext(phContext);
221extern SECURITY_STATUS SEC_ENTRY sspi_InitializeSecurityContextW(
void*,
void*,
void*, ULONG, ULONG,
222 ULONG,
void*, ULONG,
void*,
void*,
225SSPI_EXPORT SECURITY_STATUS SEC_ENTRY InitializeSecurityContextW(
226 void* phCredential,
void* phContext,
void* pszTargetName, ULONG fContextReq, ULONG Reserved1,
227 ULONG TargetDataRep,
void* pInput, ULONG Reserved2,
void* phNewContext,
void* pOutput,
228 void* pfContextAttr,
void* ptsExpiry)
230 return sspi_InitializeSecurityContextW(phCredential, phContext, pszTargetName, fContextReq,
231 Reserved1, TargetDataRep, pInput, Reserved2,
232 phNewContext, pOutput, pfContextAttr, ptsExpiry);
235extern SECURITY_STATUS SEC_ENTRY sspi_InitializeSecurityContextA(
void*,
void*,
void*, ULONG, ULONG,
236 ULONG,
void*, ULONG,
void*,
void*,
239SSPI_EXPORT SECURITY_STATUS SEC_ENTRY InitializeSecurityContextA(
240 void* phCredential,
void* phContext,
void* pszTargetName, ULONG fContextReq, ULONG Reserved1,
241 ULONG TargetDataRep,
void* pInput, ULONG Reserved2,
void* phNewContext,
void* pOutput,
242 void* pfContextAttr,
void* ptsExpiry)
244 return sspi_InitializeSecurityContextA(phCredential, phContext, pszTargetName, fContextReq,
245 Reserved1, TargetDataRep, pInput, Reserved2,
246 phNewContext, pOutput, pfContextAttr, ptsExpiry);
249extern SECURITY_STATUS SEC_ENTRY sspi_QueryContextAttributesW(
void*, ULONG,
void*);
251SSPI_EXPORT SECURITY_STATUS SEC_ENTRY QueryContextAttributesW(
void* phContext, ULONG ulAttribute,
254 return sspi_QueryContextAttributesW(phContext, ulAttribute, pBuffer);
257extern SECURITY_STATUS SEC_ENTRY sspi_QueryContextAttributesA(
void*, ULONG,
void*);
259SSPI_EXPORT SECURITY_STATUS SEC_ENTRY QueryContextAttributesA(
void* phContext, ULONG ulAttribute,
262 return sspi_QueryContextAttributesA(phContext, ulAttribute, pBuffer);
265extern SECURITY_STATUS SEC_ENTRY sspi_QuerySecurityContextToken(
void*,
void**);
267SSPI_EXPORT SECURITY_STATUS SEC_ENTRY QuerySecurityContextToken(
void* phContext,
void** phToken)
269 return sspi_QuerySecurityContextToken(phContext, phToken);
272extern SECURITY_STATUS SEC_ENTRY sspi_SetContextAttributesW(
void*, ULONG,
void*, ULONG);
274SSPI_EXPORT SECURITY_STATUS SEC_ENTRY SetContextAttributesW(
void* phContext, ULONG ulAttribute,
275 void* pBuffer, ULONG cbBuffer)
277 return sspi_SetContextAttributesW(phContext, ulAttribute, pBuffer, cbBuffer);
280extern SECURITY_STATUS SEC_ENTRY sspi_SetContextAttributesA(
void*, ULONG,
void*, ULONG);
282SSPI_EXPORT SECURITY_STATUS SEC_ENTRY SetContextAttributesA(
void* phContext, ULONG ulAttribute,
283 void* pBuffer, ULONG cbBuffer)
285 return sspi_SetContextAttributesA(phContext, ulAttribute, pBuffer, cbBuffer);
288extern SECURITY_STATUS SEC_ENTRY sspi_SetCredentialsAttributesW(
void*, ULONG,
void*, ULONG);
290static SECURITY_STATUS SEC_ENTRY SetCredentialsAttributesW(
void* phCredential, ULONG ulAttribute,
291 void* pBuffer, ULONG cbBuffer)
293 return sspi_SetCredentialsAttributesW(phCredential, ulAttribute, pBuffer, cbBuffer);
296extern SECURITY_STATUS SEC_ENTRY sspi_SetCredentialsAttributesA(
void*, ULONG,
void*, ULONG);
298static SECURITY_STATUS SEC_ENTRY SetCredentialsAttributesA(
void* phCredential, ULONG ulAttribute,
299 void* pBuffer, ULONG cbBuffer)
301 return sspi_SetCredentialsAttributesA(phCredential, ulAttribute, pBuffer, cbBuffer);
304extern SECURITY_STATUS SEC_ENTRY sspi_RevertSecurityContext(
void*);
306SSPI_EXPORT SECURITY_STATUS SEC_ENTRY RevertSecurityContext(
void* phContext)
308 return sspi_RevertSecurityContext(phContext);
313extern SECURITY_STATUS SEC_ENTRY sspi_DecryptMessage(
void*,
void*, ULONG,
void*);
315SSPI_EXPORT SECURITY_STATUS SEC_ENTRY DecryptMessage(
void* phContext,
void* pMessage,
316 ULONG MessageSeqNo,
void* pfQOP)
318 return sspi_DecryptMessage(phContext, pMessage, MessageSeqNo, pfQOP);
321extern SECURITY_STATUS SEC_ENTRY sspi_EncryptMessage(
void*, ULONG,
void*, ULONG);
323SSPI_EXPORT SECURITY_STATUS SEC_ENTRY EncryptMessage(
void* phContext, ULONG fQOP,
void* pMessage,
326 return sspi_EncryptMessage(phContext, fQOP, pMessage, MessageSeqNo);
329extern SECURITY_STATUS SEC_ENTRY sspi_MakeSignature(
void*, ULONG,
void*, ULONG);
331SSPI_EXPORT SECURITY_STATUS SEC_ENTRY MakeSignature(
void* phContext, ULONG fQOP,
void* pMessage,
334 return sspi_MakeSignature(phContext, fQOP, pMessage, MessageSeqNo);
337extern SECURITY_STATUS SEC_ENTRY sspi_VerifySignature(
void*,
void*, ULONG,
void*);
339SSPI_EXPORT SECURITY_STATUS SEC_ENTRY VerifySignature(
void* phContext,
void* pMessage,
340 ULONG MessageSeqNo,
void* pfQOP)
342 return sspi_VerifySignature(phContext, pMessage, MessageSeqNo, pfQOP);