📄 idsspi.pas
字号:
sUserName: PSEC_WCHAR;
end;
PSecPkgCredentials_NamesA = ^SecPkgCredentials_NamesA;
SecPkgCredentials_NamesA = record
sUserName: PSEC_CHAR;
end;
{$IFDEF SSPI_UNICODE}
SecPkgCredentials_Names = SecPkgCredentials_NamesW;
PSecPkgCredentials_Names = PSecPkgCredentials_NamesW;
{$ELSE}
SecPkgCredentials_Names = SecPkgCredentials_NamesA;
PSecPkgCredentials_Names = PSecPkgCredentials_NamesA;
{$ENDIF}
//
// Security Context Attributes:
//
const
SECPKG_ATTR_SIZES = 0;
SECPKG_ATTR_NAMES = 1;
SECPKG_ATTR_LIFESPAN = 2;
SECPKG_ATTR_DCE_INFO = 3;
SECPKG_ATTR_STREAM_SIZES = 4;
SECPKG_ATTR_KEY_INFO = 5;
SECPKG_ATTR_AUTHORITY = 6;
SECPKG_ATTR_PROTO_INFO = 7;
SECPKG_ATTR_PASSWORD_EXPIRY = 8;
SECPKG_ATTR_SESSION_KEY = 9;
SECPKG_ATTR_PACKAGE_INFO = 10;
SECPKG_ATTR_USER_FLAGS = 11;
SECPKG_ATTR_NEGOTIATION_INFO = 12;
SECPKG_ATTR_NATIVE_NAMES = 13;
SECPKG_ATTR_FLAGS = 14;
type
PSecPkgContext_Sizes = ^SecPkgContext_Sizes;
SecPkgContext_Sizes = record
cbMaxToken: ULONG;
cbMaxSignature: ULONG;
cbBlockSize: ULONG;
cbSecurityTrailer: ULONG;
end;
PSecPkgContext_StreamSizes = ^SecPkgContext_StreamSizes;
SecPkgContext_StreamSizes = record
cbHeader: ULONG;
cbTrailer: ULONG;
cbMaximumMessage: ULONG;
cBuffers: ULONG;
cbBlockSize: ULONG;
end;
PSecPkgContext_NamesW = ^SecPkgContext_NamesW;
SecPkgContext_NamesW = record
sUserName: PSEC_WCHAR;
end;
PSecPkgContext_NamesA = ^SecPkgContext_NamesA;
SecPkgContext_NamesA = record
sUserName: PSEC_CHAR;
end;
{$IFDEF SSPI_UNICODE}
SecPkgContext_Names = SecPkgContext_NamesW;
PSecPkgContext_Names = PSecPkgContext_NamesW;
{$ELSE}
SecPkgContext_Names = SecPkgContext_NamesA;
PSecPkgContext_Names = PSecPkgContext_NamesA;
{$ENDIF}
PSecPkgContext_Lifespan = ^SecPkgContext_Lifespan;
SecPkgContext_Lifespan = record
tsStart: TimeStamp;
tsExpiry: TimeStamp;
end;
PSecPkgContext_DceInfo = ^SecPkgContext_DceInfo;
SecPkgContext_DceInfo = record
AuthzSvc: ULONG;
pPac: PVOID;
end;
PSecPkgContext_KeyInfoA = ^SecPkgContext_KeyInfoA;
SecPkgContext_KeyInfoA = record
sSignatureAlgorithmName: PSEC_CHAR;
sEncryptAlgorithmName: PSEC_CHAR;
KeySize: ULONG;
SignatureAlgorithm: ULONG;
EncryptAlgorithm: ULONG;
end;
PSecPkgContext_KeyInfoW = ^SecPkgContext_KeyInfoW;
SecPkgContext_KeyInfoW = record
sSignatureAlgorithmName: PSEC_WCHAR;
sEncryptAlgorithmName: PSEC_WCHAR;
KeySize: ULONG;
SignatureAlgorithm: ULONG;
EncryptAlgorithm: ULONG;
end;
{$IFDEF SSPI_UNICODE}
SecPkgContext_KeyInfo = SecPkgContext_KeyInfoW;
PSecPkgContext_KeyInfo = PSecPkgContext_KeyInfoW;
{$ELSE}
SecPkgContext_KeyInfo = SecPkgContext_KeyInfoA;
PSecPkgContext_KeyInfo = PSecPkgContext_KeyInfoA;
{$ENDIF}
PSecPkgContext_AuthorityA = ^SecPkgContext_AuthorityA;
SecPkgContext_AuthorityA = record
sAuthorityName: PSEC_CHAR;
end;
PSecPkgContext_AuthorityW = ^SecPkgContext_AuthorityW;
SecPkgContext_AuthorityW = record
sAuthorityName: PSEC_WCHAR;
end;
{$IFDEF SSPI_UNICODE}
SecPkgContext_Authority = SecPkgContext_AuthorityW;
PSecPkgContext_Authority = PSecPkgContext_AuthorityW;
{$ELSE}
SecPkgContext_Authority = SecPkgContext_AuthorityA;
PSecPkgContext_Authority = PSecPkgContext_AuthorityA;
{$ENDIF}
PSecPkgContext_ProtoInfoA = ^SecPkgContext_ProtoInfoA;
SecPkgContext_ProtoInfoA = record
sProtocolName: PSEC_CHAR;
majorVersion: ULONG;
minorVersion: ULONG;
end;
PSecPkgContext_ProtoInfoW = ^SecPkgContext_ProtoInfoW;
SecPkgContext_ProtoInfoW = record
sProtocolName: PSEC_WCHAR;
majorVersion: ULONG;
minorVersion: ULONG;
end;
{$IFDEF SSPI_UNICODE}
SecPkgContext_ProtoInfo = SecPkgContext_ProtoInfoW;
PSecPkgContext_ProtoInfo = PSecPkgContext_ProtoInfoW;
{$ELSE}
SecPkgContext_ProtoInfo = SecPkgContext_ProtoInfoA;
PSecPkgContext_ProtoInfo = PSecPkgContext_ProtoInfoA;
{$ENDIF}
PSecPkgContext_PasswordExpiry = ^SecPkgContext_PasswordExpiry;
SecPkgContext_PasswordExpiry = record
tsPasswordExpires: TimeStamp;
end;
PSecPkgContext_SessionKey = ^SecPkgContext_SessionKey;
SecPkgContext_SessionKey = record
SessionKeyLength: ULONG;
SessionKey: PUCHAR;
end;
PSecPkgContext_PackageInfoW = ^SecPkgContext_PackageInfoW;
SecPkgContext_PackageInfoW = record
PackageInfo: PSecPkgInfoW;
end;
PSecPkgContext_PackageInfoA = ^SecPkgContext_PackageInfoA;
SecPkgContext_PackageInfoA = record
PackageInfo: PSecPkgInfoA;
end;
PSecPkgContext_UserFlags = ^SecPkgContext_UserFlags;
SecPkgContext_UserFlags = record
UserFlags: ULONG;
end;
PSecPkgContext_Flags = ^SecPkgContext_Flags;
SecPkgContext_Flags = record
Flags: ULONG;
end;
{$IFDEF SSPI_UNICODE}
SecPkgContext_PackageInfo = SecPkgContext_PackageInfoW;
PSecPkgContext_PackageInfo = PSecPkgContext_PackageInfoW;
{$ELSE}
SecPkgContext_PackageInfo = SecPkgContext_PackageInfoA;
PSecPkgContext_PackageInfo = PSecPkgContext_PackageInfoA;
{$ENDIF}
PSecPkgContext_NegotiationInfoA = ^SecPkgContext_NegotiationInfoA;
SecPkgContext_NegotiationInfoA = record
PackageInfo: PSecPkgInfoA;
NegotiationState: ULONG;
end;
PSecPkgContext_NegotiationInfoW = ^SecPkgContext_NegotiationInfoW;
SecPkgContext_NegotiationInfoW = record
PackageInfo: PSecPkgInfoW;
NegotiationState: ULONG;
end;
{$IFDEF SSPI_UNICODE}
SecPkgContext_NegotiationInfo = SecPkgContext_NegotiationInfoW;
PSecPkgContext_NegotiationInfo = PSecPkgContext_NegotiationInfoW;
{$ELSE}
SecPkgContext_NegotiationInfo = SecPkgContext_NegotiationInfoA;
PSecPkgContext_NegotiationInfo = PSecPkgContext_NegotiationInfoA;
{$ENDIF}
const
SECPKG_NEGOTIATION_COMPLETE = 0;
SECPKG_NEGOTIATION_OPTIMISTIC = 1;
SECPKG_NEGOTIATION_IN_PROGRESS = 2;
SECPKG_NEGOTIATION_DIRECT = 3;
type
PSecPkgContext_NativeNamesW = ^SecPkgContext_NativeNamesW;
SecPkgContext_NativeNamesW = record
sClientName: PSEC_WCHAR;
sServerName: PSEC_WCHAR;
end;
PSecPkgContext_NativeNamesA = ^SecPkgContext_NativeNamesA;
SecPkgContext_NativeNamesA = record
sClientName: PSEC_CHAR;
sServerName: PSEC_CHAR;
end;
{$IFDEF SSPI_UNICODE}
SecPkgContext_NativeNames = SecPkgContext_NativeNamesW;
PSecPkgContext_NativeNames = PSecPkgContext_NativeNamesW;
{$ELSE}
SecPkgContext_NativeNames = SecPkgContext_NativeNamesA;
PSecPkgContext_NativeNames = PSecPkgContext_NativeNamesA;
{$ENDIF}
SEC_GET_KEY_FN = function(
Arg: PVOID; // Argument passed in
Principal: PVOID; // Principal ID
KeyVer: ULONG; // Key Version
Key: PPVOID; // Returned ptr to key
Status: PSECURITY_STATUS // returned status
): PVOID; stdcall;
//
// Flags for ExportSecurityContext
//
const
SECPKG_CONTEXT_EXPORT_RESET_NEW = $00000001; // New context is reset to initial state
SECPKG_CONTEXT_EXPORT_DELETE_OLD = $00000002; // Old context is deleted during export
type
ACQUIRE_CREDENTIALS_HANDLE_FN_W = function( // AcquireCredentialsHandleW
pszPrincipal: PSEC_WCHAR; // Name of principal
pszPackage: PSEC_WCHAR; // Name of package
fCredentialUse: ULONG; // Flags indicating use
pvLogonId: PVOID; // Pointer to logon ID
pAuthData: PVOID; // Package specific data
pGetKeyFn: SEC_GET_KEY_FN; // Pointer to GetKey() func
pvGetKeyArgument: PVOID; // Value to pass to GetKey()
phCredential: PCredHandle; // (out) Cred Handle
ptsExpiry: PTimeStamp // (out) Lifetime (optional)
): SECURITY_STATUS; stdcall;
ACQUIRE_CREDENTIALS_HANDLE_FN_A = function( // AcquireCredentialsHandleW
pszPrincipal: PSEC_CHAR; // Name of principal
pszPackage: PSEC_CHAR; // Name of package
fCredentialUse: ULONG; // Flags indicating use
pvLogonId: PVOID; // Pointer to logon ID
pAuthData: PVOID; // Package specific data
pGetKeyFn: SEC_GET_KEY_FN; // Pointer to GetKey() func
pvGetKeyArgument: PVOID; // Value to pass to GetKey()
phCredential: PCredHandle; // (out) Cred Handle
ptsExpiry: PTimeStamp // (out) Lifetime (optional)
): SECURITY_STATUS; stdcall;
{$IFDEF SSPI_UNICODE}
ACQUIRE_CREDENTIALS_HANDLE_FN = ACQUIRE_CREDENTIALS_HANDLE_FN_W;
{$ELSE}
ACQUIRE_CREDENTIALS_HANDLE_FN = ACQUIRE_CREDENTIALS_HANDLE_FN_A;
{$ENDIF}
FREE_CREDENTIALS_HANDLE_FN = function( // FreeCredentialsHandle
phCredential: PCredHandle // Handle to free
): SECURITY_STATUS; stdcall;
ADD_CREDENTIALS_FN_W = function( // AddCredentialsW
hCredentials: PCredHandle;
pszPrincipal: PSEC_WCHAR; // Name of principal
pszPackage: PSEC_WCHAR; // Name of package
fCredentialUse: ULONG; // Flags indicating use
pAuthData: PVOID; // Package specific data
pGetKeyFn: SEC_GET_KEY_FN; // Pointer to GetKey() func
pvGetKeyArgument: PVOID; // Value to pass to GetKey()
ptsExpiry: PTimeStamp // (out) Lifetime (optional)
): SECURITY_STATUS; stdcall;
ADD_CREDENTIALS_FN_A = function( // AddCredentialsA
hCredentials: PCredHandle;
pszPrincipal: PSEC_CHAR; // Name of principal
pszPackage: PSEC_CHAR; // Name of package
fCredentialUse: ULONG; // Flags indicating use
pAuthData: PVOID; // Package specific data
pGetKeyFn: SEC_GET_KEY_FN; // Pointer to GetKey() func
pvGetKeyArgument: PVOID; // Value to pass to GetKey()
ptsExpiry: PTimeStamp // (out) Lifetime (optional)
): SECURITY_STATUS; stdcall;
{$IFDEF SSPI_UNICODE}
ADD_CREDENTIALS_FN = ADD_CREDENTIALS_FN_W;
{$ELSE}
ADD_CREDENTIALS_FN = ADD_CREDENTIALS_FN_A;
{$ENDIF}
(*
#ifdef WIN32_CHICAGO
SECURITY_STATUS SEC_ENTRY
SspiLogonUserW(
SEC_WCHAR SEC_FAR * pszPackage, // Name of package
SEC_WCHAR SEC_FAR * pszUserName, // Name of package
SEC_WCHAR SEC_FAR * pszDomainName, // Name of package
SEC_WCHAR SEC_FAR * pszPassword // Name of package
);
typedef SECURITY_STATUS
(SEC_ENTRY * SSPI_LOGON_USER_FN_W)(
SEC_CHAR SEC_FAR *,
SEC_CHAR SEC_FAR *,
SEC_CHAR SEC_FAR *,
SEC_CHAR SEC_FAR * );
SECURITY_STATUS SEC_ENTRY
SspiLogonUserA(
SEC_CHAR SEC_FAR * pszPackage, // Name of package
SEC_CHAR SEC_FAR * pszUserName, // Name of package
SEC_CHAR SEC_FAR * pszDomainName, // Name of package
SEC_CHAR SEC_FAR * pszPassword // Name of package
);
typedef SECURITY_STATUS
(SEC_ENTRY * SSPI_LOGON_USER_FN_A)(
SEC_CHAR SEC_FAR *,
SEC_CHAR SEC_FAR *,
SEC_CHAR SEC_FAR *,
SEC_CHAR SEC_FAR * );
#ifdef UNICODE
#define SspiLogonUser SspiLogonUserW // ntifs
#define SSPI_LOGON_USER_FN SSPI_LOGON_USER_FN_W
#else
#define SspiLogonUser SspiLogonUserA
#define SSPI_LOGON_USER_FN SSPI_LOGON_USER_FN_A
#endif // !UNICODE
#endif // WIN32_CHICAGO
*)
////////////////////////////////////////////////////////////////////////
///
/// Context Management Functions
///
////////////////////////////////////////////////////////////////////////
INITIALIZE_SECURITY_CONTEXT_FN_W = function( // InitializeSecurityContextW
phCredential: PCredHandle; // Cred to base context
phContext: PCtxtHandle; // Existing context (OPT)
pszTargetName: PSEC_WCHAR; // Name of target
fContextReq: ULONG; // Context Requirements
Reserved1: ULONG; // Reserved, MBZ
TargetDataRep: ULONG; // Data rep of target
pInput: PSecBufferDesc; // Input Buffers
Reserved2: ULONG; // Reserved, MBZ
phNewContext: PCtxtHandle; // (out) New Context handle
pOutput: PSecBufferDesc; // (inout) Output Buffers
pfContextAttr: PULONG; // (out) Context attrs
ptsExpiry: PTimeStamp // (out) Life span (OPT)
): SECURITY_STATUS; stdcall;
INITIALIZE_SECURITY_CONTEXT_FN_A = function( // InitializeSecurityContextA
phCredential: PCredHandle; // Cred to base context
phContext: PCtxtHandle; // Existing context (OPT)
pszTargetName: PSEC_CHAR; // Name of target
fContextReq: ULONG; // Context Requirements
Reserved1: ULONG; // Reserved, MBZ
TargetDataRep: ULONG; // Data rep of target
pInput: PSecBufferDesc; // Input Buffers
Reserved2: ULONG; // Reserved, MBZ
phNewContext: PCtxtHandle; // (out) New Context handle
pOutput: PSecBufferDesc; // (inout) Output Buffers
pfContextAttr: PULONG; // (out) Context attrs
ptsExpiry: PTimeStamp // (out) Life span (OPT)
): SECURITY_STATUS; stdcall;
{$IFDEF SSPI_UNICODE}
INITIALIZE_SECURITY_CONTEXT_FN = INITIALIZE_SECURITY_CONTEXT_FN_W;
{$ELSE}
INITIALIZE_SECURITY_CONTEXT_FN = INITIALIZE_SECURITY_CONTEXT_FN_A;
{$ENDIF}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -