📄 sspi.pas
字号:
{$IFDEF UNICODE}
SecPkgContext_NativeNames = SecPkgContext_NativeNamesW;
{$EXTERNALSYM SecPkgContext_NativeNames}
PSecPkgContext_NativeNames = PSecPkgContext_NativeNamesW;
{$EXTERNALSYM PSecPkgContext_NativeNames}
TSecPkgContextNativeNames = TSecPkgContextNativeNamesW;
PSecPkgContextNativeNames = PSecPkgContextNativeNamesW;
{$ELSE}
SecPkgContext_NativeNames = SecPkgContext_NativeNamesA;
{$EXTERNALSYM SecPkgContext_NativeNames}
PSecPkgContext_NativeNames = PSecPkgContext_NativeNamesA;
{$EXTERNALSYM PSecPkgContext_NativeNames}
TSecPkgContextNativeNames = TSecPkgContextNativeNamesA;
PSecPkgContextNativeNames = PSecPkgContextNativeNamesA;
{$ENDIF}
SEC_GET_KEY_FN = procedure (
Arg: Pointer; // Argument passed in
Principal: Pointer; // Principal ID
KeyVer: Cardinal; // Key Version
var Key: Pointer; // Returned ptr to key
var Status: SECURITY_STATUS); stdcall; // returned status
{$EXTERNALSYM SEC_GET_KEY_FN}
TSecGetKeyFn = SEC_GET_KEY_FN;
//
// Flags for ExportSecurityContext
//
const
SECPKG_CONTEXT_EXPORT_RESET_NEW = $00000001; // New context is reset to initial state
{$EXTERNALSYM SECPKG_CONTEXT_EXPORT_RESET_NEW}
SECPKG_CONTEXT_EXPORT_DELETE_OLD = $00000002; // Old context is deleted during export
{$EXTERNALSYM SECPKG_CONTEXT_EXPORT_DELETE_OLD}
function AcquireCredentialsHandleW(pszPrincipal, pszPackage: PSecWChar;
fCredentialUse: Cardinal; pvLogonId, pAuthData: Pointer;
pGetKeyFn: SEC_GET_KEY_FN; pvGetKeyArgument: Pointer; phCredential: PCredHandle;
var ptsExpiry: TTimeStamp): SECURITY_STATUS; stdcall;
{$EXTERNALSYM AcquireCredentialsHandleW}
type
ACQUIRE_CREDENTIALS_HANDLE_FN_W = function (
pszPrincipal: PSecWChar;
pszPackage: PSecWChar;
fCredentialsUse: Cardinal;
pvLogonId: Pointer;
pAuthData: Pointer;
pGetKeyFn: SEC_GET_KEY_FN;
pvGetKeyArgument: Pointer;
phCredential: PCredHandle;
ptsExpiry: PTimeStamp): SECURITY_STATUS; stdcall;
{$EXTERNALSYM ACQUIRE_CREDENTIALS_HANDLE_FN_W}
TAcquireCredentialsHandleFnW = ACQUIRE_CREDENTIALS_HANDLE_FN_W;
function AcquireCredentialsHandleA(pszPrincipal, pszPackage: PSecChar;
fCredentialUse: Cardinal; pvLogonId, pAuthData: Pointer;
pGetKeyFn: SEC_GET_KEY_FN; pvGetKeyArgument: Pointer; phCredential: PCredHandle;
var ptsExpiry: TTimeStamp): SECURITY_STATUS; stdcall;
{$EXTERNALSYM AcquireCredentialsHandleA}
type
ACQUIRE_CREDENTIALS_HANDLE_FN_A = function (
pszPrincipal: PSecChar;
pszPackage: PSecChar;
fCredentialsUse: Cardinal;
pvLogonId: Pointer;
pAuthData: Pointer;
pGetKeyFn: SEC_GET_KEY_FN;
pvGetKeyArgument: Pointer;
phCredential: PCredHandle;
ptsExpiry: PTimeStamp): SECURITY_STATUS; stdcall;
{$EXTERNALSYM ACQUIRE_CREDENTIALS_HANDLE_FN_A}
TAcquireCredentialsHandleFnA = ACQUIRE_CREDENTIALS_HANDLE_FN_A;
{$IFDEF UNICODE}
function AcquireCredentialsHandle(pszPrincipal, pszPackage: PSecWChar;
fCredentialUse: Cardinal; pvLogonId, pAuthData: Pointer;
pGetKeyFn: SEC_GET_KEY_FN; pvGetKeyArgument: Pointer; phCredential: PCredHandle;
var ptsExpiry: TTimeStamp): SECURITY_STATUS; stdcall;
{$EXTERNALSYM AcquireCredentialsHandle}
type
ACQUIRE_CREDENTIALS_HANDLE_FN = ACQUIRE_CREDENTIALS_HANDLE_FN_W;
{$EXTERNALSYM ACQUIRE_CREDENTIALS_HANDLE_FN}
TAcquireCredentialsHandleFn = TAcquireCredentialsHandleFnW;
{$ELSE}
function AcquireCredentialsHandle(pszPrincipal, pszPackage: PSecChar;
fCredentialUse: Cardinal; pvLogonId, pAuthData: Pointer;
pGetKeyFn: SEC_GET_KEY_FN; pvGetKeyArgument: Pointer; phCredential: PCredHandle;
var ptsExpiry: TTimeStamp): SECURITY_STATUS; stdcall;
{$EXTERNALSYM AcquireCredentialsHandle}
type
ACQUIRE_CREDENTIALS_HANDLE_FN = ACQUIRE_CREDENTIALS_HANDLE_FN_A;
{$EXTERNALSYM ACQUIRE_CREDENTIALS_HANDLE_FN}
TAcquireCredentialsHandleFn = TAcquireCredentialsHandleFnA;
{$ENDIF}
function FreeCredentialsHandle(phCredential: PCredHandle): SECURITY_STATUS; stdcall;
{$EXTERNALSYM FreeCredentialsHandle}
type
FREE_CREDENTIALS_HANDLE_FN = function (phCredential: PCredHandle): SECURITY_STATUS; stdcall;
{$EXTERNALSYM FREE_CREDENTIALS_HANDLE_FN}
function AddCredentialsW(hCredentials: PCredHandle; pszPrincipal: PSecWChar;
pszPackage: PSecWChar; fCredentialUse: Cardinal; pAuthData: Pointer;
pGetKeyFn: SEC_GET_KEY_FN; pvGetKeyArgument: Pointer;
ptsExpiry: PTimeStamp): SECURITY_STATUS; stdcall;
{$EXTERNALSYM AddCredentialsW}
type
ADD_CREDENTIALS_FN_W = function (hCredentials: PCredHandle; pszPrincipal: PSecWChar;
pszPackage: PSecWChar; fCredentialUse: Cardinal; pAuthData: Pointer;
pGetKeyFn: SEC_GET_KEY_FN; pvGetKeyArgument: Pointer;
ptsExpiry: PTimeStamp): SECURITY_STATUS; stdcall;
{$EXTERNALSYM ADD_CREDENTIALS_FN_W}
function AddCredentialsA(hCredentials: PCredHandle; pszPrincipal: PSecChar;
pszPackage: PSecChar; fCredentialUse: Cardinal; pAuthData: Pointer;
pGetKeyFn: SEC_GET_KEY_FN; pvGetKeyArgument: Pointer; ptsExpiry: PTimeStamp): SECURITY_STATUS; stdcall;
{$EXTERNALSYM AddCredentialsA}
type
ADD_CREDENTIALS_FN_A = function (hCredentials: PCredHandle; pszPrincipal: PSecChar;
pszPackage: PSecChar; fCredentialUse: Cardinal; pAuthData: Pointer;
pGetKeyFn: SEC_GET_KEY_FN; pvGetKeyArgument: Pointer; ptsExpiry: PTimeStamp): SECURITY_STATUS; stdcall;
{$EXTERNALSYM ADD_CREDENTIALS_FN_A}
{$IFDEF UNICODE}
function AddCredentials(hCredentials: PCredHandle; pszPrincipal: PSecWChar;
pszPackage: PSecWChar; fCredentialUse: Cardinal; pAuthData: Pointer;
pGetKeyFn: SEC_GET_KEY_FN; pvGetKeyArgument: Pointer;
ptsExpiry: PTimeStamp): SECURITY_STATUS; stdcall;
{$EXTERNALSYM AddCredentials}
type
ADD_CREDENTIALS_FN = function (hCredentials: PCredHandle; pszPrincipal: PSecWChar;
pszPackage: PSecWChar; fCredentialUse: Cardinal; pAuthData: Pointer;
pGetKeyFn: SEC_GET_KEY_FN; pvGetKeyArgument: Pointer;
ptsExpiry: PTimeStamp): SECURITY_STATUS; stdcall;
{$EXTERNALSYM ADD_CREDENTIALS_FN}
{$ELSE}
function AddCredentials(hCredentials: PCredHandle; pszPrincipal: PSecChar;
pszPackage: PSecChar; fCredentialUse: Cardinal; pAuthData: Pointer;
pGetKeyFn: SEC_GET_KEY_FN; pvGetKeyArgument: Pointer; ptsExpiry: PTimeStamp): SECURITY_STATUS; stdcall;
{$EXTERNALSYM AddCredentials}
type
ADD_CREDENTIALS_FN = function (hCredentials: PCredHandle; pszPrincipal: PSecChar;
pszPackage: PSecChar; fCredentialUse: Cardinal; pAuthData: Pointer;
pGetKeyFn: SEC_GET_KEY_FN; pvGetKeyArgument: Pointer; ptsExpiry: PTimeStamp): SECURITY_STATUS; stdcall;
{$EXTERNALSYM ADD_CREDENTIALS_FN}
{$ENDIF}
//function SspiLogonUserW(pszPackage, pszUserName, pszDomainName, pszPassword: PSecWChar): SECURITY_STATUS; stdcall;
//{$EXTERNALSYM SspiLogonUserW}
type
SSPI_LOGON_USER_FN_W = function (pszPackage, pszUserName,
pszDomainName, pszPassword: PSecWChar): SECURITY_STATUS; stdcall;
{$EXTERNALSYM SSPI_LOGON_USER_FN_W}
//function SspiLogonUserA(pszPackage, pszUserName, pszDomainName, pszPassword: PSecChar): SECURITY_STATUS; stdcall;
//{$EXTERNALSYM SspiLogonUserA}
type
SSPI_LOGON_USER_FN_A = function (pszPackage, pszUserName,
pszDomainName, pszPassword: PSecChar): SECURITY_STATUS; stdcall;
{$EXTERNALSYM SSPI_LOGON_USER_FN_A}
{$IFDEF UNICODE}
//function SspiLogonUser(pszPackage, pszUserName, pszDomainName, pszPassword: PSecWChar): SECURITY_STATUS; stdcall;
//{$EXTERNALSYM SspiLogonUser}
type
SSPI_LOGON_USER_FN = function (pszPackage, pszUserName,
pszDomainName, pszPassword: PSecWChar): SECURITY_STATUS; stdcall;
{$EXTERNALSYM SSPI_LOGON_USER_FN}
{$ELSE}
//function SspiLogonUser(pszPackage, pszUserName, pszDomainName, pszPassword: PSecChar): SECURITY_STATUS; stdcall;
//{$EXTERNALSYM SspiLogonUser}
type
SSPI_LOGON_USER_FN = function (pszPackage, pszUserName,
pszDomainName, pszPassword: PSecChar): SECURITY_STATUS; stdcall;
{$EXTERNALSYM SSPI_LOGON_USER_FN}
{$ENDIF}
////////////////////////////////////////////////////////////////////////
///
/// Context Management Functions
///
////////////////////////////////////////////////////////////////////////
function InitializeSecurityContextW(phCredential: PCredHandle; phContext: PCtxtHandle;
pszTargetName: PSecWChar; fContextReq, Reserved1, TargetDataRep: Cardinal;
pInput: PSecBufferDesc; Reserved2: Cardinal; phNewContext: PCtxtHandle;
pOutput: PSecBufferDesc; var pfContextAttr: Cardinal; ptsExpiry: PTimeStamp): SECURITY_STATUS; stdcall;
{$EXTERNALSYM InitializeSecurityContextW}
type
INITIALIZE_SECURITY_CONTEXT_FN_W = function (phCredential: PCredHandle; phContext: PCtxtHandle;
pszTargetName: PSecWChar; fContextReq, Reserved1, TargetDataRep: Cardinal;
pInput: PSecBufferDesc; Reserved2: Cardinal; phNewContext: PCtxtHandle;
pOutput: PSecBufferDesc; var pfContextAttr: Cardinal; ptsExpiry: PTimeStamp): SECURITY_STATUS; stdcall;
{$EXTERNALSYM INITIALIZE_SECURITY_CONTEXT_FN_W}
function InitializeSecurityContextA(phCredential: PCredHandle; phContext: PCtxtHandle;
pszTargetName: PSecChar; fContextReq, Reserved1, TargetDataRep: Cardinal;
pInput: PSecBufferDesc; Reserved2: Cardinal; phNewContext: PCtxtHandle;
pOutput: PSecBufferDesc; var pfContextAttr: Cardinal; ptsExpiry: PTimeStamp): SECURITY_STATUS; stdcall;
{$EXTERNALSYM InitializeSecurityContextA}
type
INITIALIZE_SECURITY_CONTEXT_FN_A = function (phCredential: PCredHandle; phContext: PCtxtHandle;
pszTargetName: PSecChar; fContextReq, Reserved1, TargetDataRep: Cardinal;
pInput: PSecBufferDesc; Reserved2: Cardinal; phNewContext: PCtxtHandle;
pOutput: PSecBufferDesc; var pfContextAttr: Cardinal; ptsExpiry: PTimeStamp): SECURITY_STATUS; stdcall;
{$EXTERNALSYM INITIALIZE_SECURITY_CONTEXT_FN_A}
{$IFDEF UNICODE}
function InitializeSecurityContext(phCredential: PCredHandle; phContext: PCtxtHandle;
pszTargetName: PSecWChar; fContextReq, Reserved1, TargetDataRep: Cardinal;
pInput: PSecBufferDesc; Reserved2: Cardinal; phNewContext: PCtxtHandle;
pOutput: PSecBufferDesc; var pfContextAttr: Cardinal; ptsExpiry: PTimeStamp): SECURITY_STATUS; stdcall;
{$EXTERNALSYM InitializeSecurityContext}
type
INITIALIZE_SECURITY_CONTEXT_FN = function (phCredential: PCredHandle; phContext: PCtxtHandle;
pszTargetName: PSecWChar; fContextReq, Reserved1, TargetDataRep: Cardinal;
pInput: PSecBufferDesc; Reserved2: Cardinal; phNewContext: PCtxtHandle;
pOutput: PSecBufferDesc; var pfContextAttr: Cardinal; ptsExpiry: PTimeStamp): SECURITY_STATUS; stdcall;
{$EXTERNALSYM INITIALIZE_SECURITY_CONTEXT_FN}
{$ELSE}
function InitializeSecurityContext(phCredential: PCredHandle; phContext: PCtxtHandle;
pszTargetName: PSecChar; fContextReq, Reserved1, TargetDataRep: Cardinal;
pInput: PSecBufferDesc; Reserved2: Cardinal; phNewContext: PCtxtHandle;
pOutput: PSecBufferDesc; var pfContextAttr: Cardinal; ptsExpiry: PTimeStamp): SECURITY_STATUS; stdcall;
{$EXTERNALSYM InitializeSecurityContext}
type
INITIALIZE_SECURITY_CONTEXT_FN = function (phCredential: PCredHandle; phContext: PCtxtHandle;
pszTargetName: PSecChar; fContextReq, Reserved1, TargetDataRep: Cardinal;
pInput: PSecBufferDesc; Reserved2: Cardinal; phNewContext: PCtxtHandle;
pOutput: PSecBufferDesc; var pfContextAttr: Cardinal; ptsExpiry: PTimeStamp): SECURITY_STATUS; stdcall;
{$EXTERNALSYM INITIALIZE_SECURITY_CONTEXT_FN}
{$ENDIF}
function AcceptSecurityContext(phCredential: PCredHandle; phContext: PCtxtHandle;
pInput: PSecBufferDesc; fContextReq, TargetDataRep: Cardinal;
phNewContext: PCtxtHandle; pOutput: PSecBufferDesc; var pfContextAttr: Cardinal;
ptsExpiry: PTimeStamp): SECURITY_STATUS; stdcall;
{$EXTERNALSYM AcceptSecurityContext}
type
ACCEPT_SECURITY_CONTEXT_FN = function (phCredential: PCredHandle; phContext: PCtxtHandle;
pInput: PSecBufferDesc; fContextReq, TargetDataRep: Cardinal;
phNewContext: PCtxtHandle; pOutput: PSecBufferDesc; var pfContextAttr: Cardinal;
ptsExpiry: PTimeStamp): SECURITY_STATUS; stdcall;
{$EXTERNALSYM ACCEPT_SECURITY_CONTEXT_FN}
function CompleteAuthToken(phContext: PCtxtHandle; pToken: PSecBufferDesc): SECURITY_STATUS; stdcall;
{$EXTERNALSYM CompleteAuthToken}
type
COMPLETE_AUTH_TOKEN_FN = function (phContext: PCtxtHandle; pToken: PSecBufferDesc): SECURITY_STATUS; stdcall;
{$EXTERNALSYM COMPLETE_AUTH_TOKEN_FN}
function ImpersonateSecurityContext(phContext: PCtxtHandle): SECURITY_STATUS; stdcall;
{$EXTERNALSYM ImpersonateSecurityContext}
type
IMPERSONATE_SECURITY_CONTEXT_FN = function (phContext: PCtxtHandle): SECURITY_STATUS; stdcall;
{$EXTERNALSYM IMPERSONATE_SECURITY_CONTEXT_FN}
function RevertSecurityContext(phContext: PCtxtHandle): SECURITY_STATUS; stdcall;
{$EXTERNALSYM RevertSecurityContext}
type
REVERT_SECURITY_CONTEXT_FN = function (phContext: PCtxtHandle): SECURITY_STATUS; stdcall;
{$EXTERNALSYM REVERT_SECURITY_CONTEXT_FN}
function QuerySecurityContextToken(phContext: PCtxtHandle; var Token: Pointer): SECURITY_STATUS; stdcall;
{$EXTERNALSYM QuerySecurityContextToken}
type
QUERY_SECURITY_CONTEXT_TOKEN_FN = function (phContext: PCtxtHandle;
var Token: Pointer): SECURITY_STATUS; stdcall;
{$EXTERNALSYM QUERY_SECURITY_CONTEXT_TOKEN_FN}
function DeleteSecurityContext(phContext: PCtxtHandle): SECURITY_STATUS; stdcall;
{$EXTERNALSYM DeleteSecurityContext}
type
DELETE_SECURITY_CONTEXT_FN = function (phContext: PCtxtHandle): SECURITY_STATUS; stdcall;
{$EXTERNALSYM DELETE_SECURITY_CONTEXT_FN}
function ApplyControlToken(phContext: PCtxtHandle; pInput: PSecBufferDesc): SECURITY_STATUS; stdcall;
{$EXTERNALSYM ApplyControlToken}
type
APPLY_CONTROL_TOKEN_FN = function (phContext: PCtxtHandle; pInput: PSecBufferDesc): SECURITY_STATUS; stdcall;
{$EXTERNALSYM APPLY_CONTROL_TOKEN_FN}
function QueryContextAttributesW(phContext: PCtxtHandle; ulAttribute: Cardinal;
pBuffer: Pointer): SECURITY_STATUS; stdcall;
{$EXTERNALSYM QueryContextAttributesW}
type
QUERY_CONTEXT_ATTRIBUTES_FN_W = function (phContext: PCtxtHandle;
ulAttribute: Cardinal; pBuffer: Pointer): SECURITY_STATUS; stdcall;
{$EXTERNALSYM QUERY_CONTEXT_ATTRIBUTES_FN_W}
function QueryContextAttributesA(phContext: PCtxtHandle; ulAttribute: Cardinal;
pBuffer: Pointer): SECURITY_STATUS; stdcall;
{$EXTERNALSYM QueryContextAttributesA}
type
QUERY_CONTEXT_ATTRIBUTES_FN_A = function (phContext: PCtxtHandle;
ulAttribute: Cardinal; pBuffer: Pointer): SECURITY_STATUS; stdcall;
{$EXTERNALSYM QUERY_CONTEXT_ATTRIBUTES_FN_A}
{$IFDEF UNICODE}
function QueryContextAttributes(phContext: PCtxtHandle; ulAttribute: Cardinal;
pBuffer: Pointer): SECURITY_STATUS; stdcall;
{$EXTERNALSYM QueryContextAttributes}
type
QUERY_CONTEXT_ATTRIBUTES_FN = function (phContext: PCtxtHandle;
ulAttribute: Cardinal; pBuffer: Pointer): SECURITY_STATUS; stdcall;
{$EXTERNALSYM QUERY_CONTEXT_ATTRIBUTES_FN}
{$ELSE}
function QueryContextAttributes(phContext: PCtxtHandle; ulAttribute: Cardinal;
pBuffer: Pointer): SECURITY_STATUS; stdcall;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -