📄 sspi.h
字号:
#ifndef _SSPI_H#define _SSPI_H#if __GNUC__ >=3#pragma GCC system_header#endif#ifdef __cplusplusextern "C" {#endif#define SECPKG_CRED_INBOUND 1#define SECPKG_CRED_OUTBOUND 2#define SECPKG_CRED_BOTH (SECPKG_CRED_OUTBOUND|SECPKG_CRED_INBOUND)#define SECPKG_CRED_ATTR_NAMES 1#define SECPKG_FLAG_INTEGRITY 1#define SECPKG_FLAG_PRIVACY 2#define SECPKG_FLAG_TOKEN_ONLY 4#define SECPKG_FLAG_DATAGRAM 8#define SECPKG_FLAG_CONNECTION 16#define SECPKG_FLAG_MULTI_REQUIRED 32#define SECPKG_FLAG_CLIENT_ONLY 64#define SECPKG_FLAG_EXTENDED_ERROR 128#define SECPKG_FLAG_IMPERSONATION 256#define SECPKG_FLAG_ACCEPT_WIN32_NAME 512#define SECPKG_FLAG_STREAM 1024#define SECPKG_ATTR_AUTHORITY 6#define SECPKG_ATTR_CONNECTION_INFO 90#define SECPKG_ATTR_ISSUER_LIST 80#define SECPKG_ATTR_ISSUER_LIST_EX 89#define SECPKG_ATTR_KEY_INFO 5#define SECPKG_ATTR_LIFESPAN 2#define SECPKG_ATTR_LOCAL_CERT_CONTEXT 84#define SECPKG_ATTR_LOCAL_CRED 82#define SECPKG_ATTR_NAMES 1#define SECPKG_ATTR_PROTO_INFO 7#define SECPKG_ATTR_REMOTE_CERT_CONTEXT 83#define SECPKG_ATTR_REMOTE_CRED 81#define SECPKG_ATTR_SIZES 0#define SECPKG_ATTR_STREAM_SIZES 4#define SECBUFFER_EMPTY 0#define SECBUFFER_DATA 1#define SECBUFFER_TOKEN 2#define SECBUFFER_PKG_PARAMS 3#define SECBUFFER_MISSING 4#define SECBUFFER_EXTRA 5#define SECBUFFER_STREAM_TRAILER 6#define SECBUFFER_STREAM_HEADER 7#define SECBUFFER_PADDING 9#define SECBUFFER_STREAM 10#define SECBUFFER_READONLY 0x80000000#define SECBUFFER_ATTRMASK 0xf0000000#define UNISP_NAME_A "Microsoft Unified Security Protocol Provider"#define UNISP_NAME_W L"Microsoft Unified Security Protocol Provider"#define SECBUFFER_VERSION 0typedef struct _SecHandle { ULONG_PTR dwLower; ULONG_PTR dwUpper;} SecHandle, *PSecHandle;typedef struct _SecBuffer { ULONG cbBuffer; ULONG BufferType; PVOID pvBuffer;} SecBuffer, *PSecBuffer;typedef SecHandle CredHandle;typedef PSecHandle PCredHandle;typedef SecHandle CtxtHandle;typedef PSecHandle PCtxtHandle;typedef struct _SECURITY_INTEGER { unsigned long LowPart; long HighPart;} SECURITY_INTEGER;typedef SECURITY_INTEGER TimeStamp, *PTimeStamp;typedef struct _SecBufferDesc { ULONG ulVersion; ULONG cBuffers; PSecBuffer pBuffers;} SecBufferDesc, *PSecBufferDesc;typedef struct _SecPkgContext_StreamSizes { ULONG cbHeader; ULONG cbTrailer; ULONG cbMaximumMessage; ULONG cBuffers; ULONG cbBlockSize;} SecPkgContext_StreamSizes, *PSecPkgContext_StreamSizes;typedef struct _SecPkgContext_Sizes { ULONG cbMaxToken; ULONG cbMaxSignature; ULONG cbBlockSize; ULONG cbSecurityTrailer;} SecPkgContext_Sizes, *PSecPkgContext_Sizes;typedef struct _SecPkgContext_AuthorityW { SEC_WCHAR* sAuthorityName;} SecPkgContext_AuthorityW, *PSecPkgContext_AuthorityW;typedef struct _SecPkgContext_AuthorityA { SEC_CHAR* sAuthorityName;} SecPkgContext_AuthorityA, *PSecPkgContext_AuthorityA;typedef struct _SecPkgContext_KeyInfoW { SEC_WCHAR* sSignatureAlgorithmName; SEC_WCHAR* sEncryptAlgorithmName; ULONG KeySize; ULONG SignatureAlgorithm; ULONG EncryptAlgorithm;} SecPkgContext_KeyInfoW, *PSecPkgContext_KeyInfoW;typedef struct _SecPkgContext_KeyInfoA { SEC_CHAR* sSignatureAlgorithmName; SEC_CHAR* sEncryptAlgorithmName; ULONG KeySize; ULONG SignatureAlgorithm; ULONG EncryptAlgorithm;} SecPkgContext_KeyInfoA, *PSecPkgContext_KeyInfoA;typedef struct _SecPkgContext_LifeSpan { TimeStamp tsStart; TimeStamp tsExpiry;} SecPkgContext_LifeSpan, *PSecPkgContext_LifeSpan;typedef struct _SecPkgContext_NamesW { SEC_WCHAR* sUserName;} SecPkgContext_NamesW, *PSecPkgContext_NamesW;typedef struct _SecPkgContext_NamesA { SEC_CHAR* sUserName;} SecPkgContext_NamesA, *PSecPkgContext_NamesA;typedef struct _SecPkgInfoW { ULONG fCapabilities; USHORT wVersion; USHORT wRPCID; ULONG cbMaxToken; SEC_WCHAR* Name; SEC_WCHAR* Comment;} SecPkgInfoW, *PSecPkgInfoW;typedef struct _SecPkgInfoA { ULONG fCapabilities; USHORT wVersion; USHORT wRPCID; ULONG cbMaxToken; SEC_CHAR* Name; SEC_CHAR* Comment;} SecPkgInfoA, *PSecPkgInfoA;/* supported only in win2k+, so it should be a PSecPkgInfoW *//* PSDK does not say it has ANSI/Unicode versions */typedef struct _SecPkgContext_PackageInfo { PSecPkgInfoW PackageInfo;} SecPkgContext_PackageInfo, *PSecPkgContext_PackageInfo;typedef struct _SecPkgCredentials_NamesW { SEC_WCHAR* sUserName;} SecPkgCredentials_NamesW, *PSecPkgCredentials_NamesW;typedef struct _SecPkgCredentials_NamesA { SEC_CHAR* sUserName;} SecPkgCredentials_NamesA, *PSecPkgCredentials_NamesA;/* TODO: missing type in SDK */typedef void (*SEC_GET_KEY_FN)();typedef SECURITY_STATUS (WINAPI *ENUMERATE_SECURITY_PACKAGES_FN_W)(PULONG,PSecPkgInfoW*);typedef SECURITY_STATUS (WINAPI *ENUMERATE_SECURITY_PACKAGES_FN_A)(PULONG,PSecPkgInfoA*);typedef SECURITY_STATUS (WINAPI *QUERY_CREDENTIALS_ATTRIBUTES_FN_W)(PCredHandle,ULONG,PVOID);typedef SECURITY_STATUS (WINAPI *QUERY_CREDENTIALS_ATTRIBUTES_FN_A)(PCredHandle,ULONG,PVOID);typedef SECURITY_STATUS (WINAPI *ACQUIRE_CREDENTIALS_HANDLE_FN_W)(SEC_WCHAR*,SEC_WCHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp);typedef SECURITY_STATUS (WINAPI *ACQUIRE_CREDENTIALS_HANDLE_FN_A)(SEC_CHAR*,SEC_CHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp);typedef SECURITY_STATUS (WINAPI *FREE_CREDENTIALS_HANDLE_FN)(PCredHandle);typedef SECURITY_STATUS (WINAPI *INITIALIZE_SECURITY_CONTEXT_FN_W)(PCredHandle,PCtxtHandle,SEC_WCHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp);typedef SECURITY_STATUS (WINAPI *INITIALIZE_SECURITY_CONTEXT_FN_A)(PCredHandle,PCtxtHandle,SEC_CHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp);typedef SECURITY_STATUS (WINAPI *ACCEPT_SECURITY_CONTEXT_FN)(PCredHandle,PCtxtHandle,PSecBufferDesc,ULONG,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp);typedef SECURITY_STATUS (WINAPI *COMPLETE_AUTH_TOKEN_FN)(PCtxtHandle,PSecBufferDesc);typedef SECURITY_STATUS (WINAPI *DELETE_SECURITY_CONTEXT_FN)(PCtxtHandle);typedef SECURITY_STATUS (WINAPI *APPLY_CONTROL_TOKEN_FN_W)(PCtxtHandle,PSecBufferDesc);typedef SECURITY_STATUS (WINAPI *APPLY_CONTROL_TOKEN_FN_A)(PCtxtHandle,PSecBufferDesc);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -