📄 sspi.pas
字号:
{$EXTERNALSYM QueryContextAttributes}
type
QUERY_CONTEXT_ATTRIBUTES_FN = function (phContext: PCtxtHandle;
ulAttribute: Cardinal; pBuffer: Pointer): SECURITY_STATUS; stdcall;
{$EXTERNALSYM QUERY_CONTEXT_ATTRIBUTES_FN}
{$ENDIF}
function QueryCredentialsAttributesW(phCredential: PCredHandle;
ulAttribute: Cardinal; pBuffer: Pointer): SECURITY_STATUS; stdcall;
{$EXTERNALSYM QueryCredentialsAttributesW}
type
QUERY_CREDENTIALS_ATTRIBUTES_FN_W = function (phCredential: PCredHandle;
ulAttribute: Cardinal; pBuffer: Pointer): SECURITY_STATUS; stdcall;
{$EXTERNALSYM QUERY_CREDENTIALS_ATTRIBUTES_FN_W}
function QueryCredentialsAttributesA(phCredential: PCredHandle;
ulAttribute: Cardinal; pBuffer: Pointer): SECURITY_STATUS; stdcall;
{$EXTERNALSYM QueryCredentialsAttributesA}
type
QUERY_CREDENTIALS_ATTRIBUTES_FN_A = function (phCredential: PCredHandle;
ulAttribute: Cardinal; pBuffer: Pointer): SECURITY_STATUS; stdcall;
{$EXTERNALSYM QUERY_CREDENTIALS_ATTRIBUTES_FN_A}
{$IFDEF UNICODE}
function QueryCredentialsAttributes(phCredential: PCredHandle;
ulAttribute: Cardinal; pBuffer: Pointer): SECURITY_STATUS; stdcall;
{$EXTERNALSYM QueryCredentialsAttributes}
type
QUERY_CREDENTIALS_ATTRIBUTES_FN = function (phCredential: PCredHandle;
ulAttribute: Cardinal; pBuffer: Pointer): SECURITY_STATUS; stdcall;
{$EXTERNALSYM QUERY_CREDENTIALS_ATTRIBUTES_FN}
{$ELSE}
function QueryCredentialsAttributes(phCredential: PCredHandle;
ulAttribute: Cardinal; pBuffer: Pointer): SECURITY_STATUS; stdcall;
{$EXTERNALSYM QueryCredentialsAttributes}
type
QUERY_CREDENTIALS_ATTRIBUTES_FN = function (phCredential: PCredHandle;
ulAttribute: Cardinal; pBuffer: Pointer): SECURITY_STATUS; stdcall;
{$EXTERNALSYM QUERY_CREDENTIALS_ATTRIBUTES_FN}
{$ENDIF}
function FreeContextBuffer(pvContextBuffer: Pointer): SECURITY_STATUS; stdcall;
{$EXTERNALSYM FreeContextBuffer}
type
FREE_CONTEXT_BUFFER_FN = function (pvContextBuffer: Pointer): SECURITY_STATUS; stdcall;
{$EXTERNALSYM FREE_CONTEXT_BUFFER_FN}
///////////////////////////////////////////////////////////////////
////
//// Message Support API
////
//////////////////////////////////////////////////////////////////
function MakeSignature(phContext: PCtxtHandle; fQOP: Cardinal;
pMessage: PSecBufferDesc; MessageSeqNo: Cardinal): SECURITY_STATUS; stdcall;
{$EXTERNALSYM MakeSignature}
type
MAKE_SIGNATURE_FN = function (phContext: PCtxtHandle; fQOP: Cardinal;
pMessage: PSecBufferDesc; MessageSeqNo: Cardinal): SECURITY_STATUS; stdcall;
{$EXTERNALSYM MAKE_SIGNATURE_FN}
function VerifySignature(phContext: PCtxtHandle; pMessage: PSecBufferDesc;
MessageSeqNo: Cardinal; var pfQOP: Cardinal): SECURITY_STATUS; stdcall;
{$EXTERNALSYM VerifySignature}
type
VERIFY_SIGNATURE_FN = function (phContext: PCtxtHandle; pMessage: PSecBufferDesc;
MessageSeqNo: Cardinal; var pfQOP: Cardinal): SECURITY_STATUS; stdcall;
{$EXTERNALSYM VERIFY_SIGNATURE_FN}
function EncryptMessage(phContext: PCtxtHandle; fQOP: Cardinal;
pMessage: PSecBufferDesc; MessageSeqNo: Cardinal): SECURITY_STATUS; stdcall;
{$EXTERNALSYM EncryptMessage}
type
ENCRYPT_MESSAGE_FN = function (phContext: PCtxtHandle; fQOP: Cardinal;
pMessage: PSecBufferDesc; MessageSeqNo: Cardinal): SECURITY_STATUS; stdcall;
{$EXTERNALSYM ENCRYPT_MESSAGE_FN}
function DecryptMessage(phContext: PCtxtHandle; pMessage: PSecBufferDesc;
MessageSeqNo: Cardinal; var pfQOP: Cardinal): SECURITY_STATUS; stdcall;
{$EXTERNALSYM DecryptMessage}
type
DECRYPT_MESSAGE_FN = function (phContext: PCtxtHandle; pMessage: PSecBufferDesc;
MessageSeqNo: Cardinal; var pfQOP: Cardinal): SECURITY_STATUS; stdcall;
{$EXTERNALSYM DECRYPT_MESSAGE_FN}
///////////////////////////////////////////////////////////////////////////
////
//// Misc.
////
///////////////////////////////////////////////////////////////////////////
function EnumerateSecurityPackagesW(var pcPackages: Cardinal;
var ppPackageInfo: PSecPkgInfoW): SECURITY_STATUS; stdcall;
{$EXTERNALSYM EnumerateSecurityPackagesW}
type
ENUMERATE_SECURITY_PACKAGES_FN_W = function (var pcPackages: Cardinal;
var ppPackageInfo: PSecPkgInfoW): SECURITY_STATUS; stdcall;
{$EXTERNALSYM ENUMERATE_SECURITY_PACKAGES_FN_W}
function EnumerateSecurityPackagesA(var pcPackages: Cardinal;
var ppPackageInfo: PSecPkgInfoA): SECURITY_STATUS; stdcall;
{$EXTERNALSYM EnumerateSecurityPackagesA}
type
ENUMERATE_SECURITY_PACKAGES_FN_A = function (var pcPackages: Cardinal;
var ppPackageInfo: PSecPkgInfoA): SECURITY_STATUS; stdcall;
{$EXTERNALSYM ENUMERATE_SECURITY_PACKAGES_FN_A}
{$IFDEF UNICODE}
function EnumerateSecurityPackages(var pcPackages: Cardinal;
var ppPackageInfo: PSecPkgInfoW): SECURITY_STATUS; stdcall;
{$EXTERNALSYM EnumerateSecurityPackages}
type
ENUMERATE_SECURITY_PACKAGES_FN = function (var pcPackages: Cardinal;
var ppPackageInfo: PSecPkgInfoW): SECURITY_STATUS; stdcall;
{$EXTERNALSYM ENUMERATE_SECURITY_PACKAGES_FN}
{$ELSE}
function EnumerateSecurityPackages(var pcPackages: Cardinal;
var ppPackageInfo: PSecPkgInfoA): SECURITY_STATUS; stdcall;
{$EXTERNALSYM EnumerateSecurityPackages}
type
ENUMERATE_SECURITY_PACKAGES_FN = function (var pcPackages: Cardinal;
var ppPackageInfo: PSecPkgInfoA): SECURITY_STATUS; stdcall;
{$EXTERNALSYM ENUMERATE_SECURITY_PACKAGES_FN}
{$ENDIF}
function QuerySecurityPackageInfoW(pszPackageName: PSecWChar;
var ppPackageInfo: PSecPkgInfoW): SECURITY_STATUS; stdcall;
{$EXTERNALSYM QuerySecurityPackageInfoW}
type
QUERY_SECURITY_PACKAGE_INFO_FN_W = function (pszPackageName: PSecWChar;
var ppPackageInfo: PSecPkgInfoW): SECURITY_STATUS; stdcall;
{$EXTERNALSYM QUERY_SECURITY_PACKAGE_INFO_FN_W}
function QuerySecurityPackageInfoA(pszPackageName: PSecChar;
var ppPackageInfo: PSecPkgInfoA): SECURITY_STATUS; stdcall;
{$EXTERNALSYM QuerySecurityPackageInfoA}
type
QUERY_SECURITY_PACKAGE_INFO_FN_A = function (pszPackageName: PSecChar;
var ppPackageInfo: PSecPkgInfoA): SECURITY_STATUS; stdcall;
{$EXTERNALSYM QUERY_SECURITY_PACKAGE_INFO_FN_A}
{$IFDEF UNICODE}
function QuerySecurityPackageInfo(pszPackageName: PSecWChar;
var ppPackageInfo: PSecPkgInfoW): SECURITY_STATUS; stdcall;
{$EXTERNALSYM QuerySecurityPackageInfo}
type
QUERY_SECURITY_PACKAGE_INFO_FN = function (pszPackageName: PSecWChar;
var ppPackageInfo: PSecPkgInfoW): SECURITY_STATUS; stdcall;
{$EXTERNALSYM QUERY_SECURITY_PACKAGE_INFO_FN}
{$ELSE}
function QuerySecurityPackageInfo(pszPackageName: PSecChar;
var ppPackageInfo: PSecPkgInfoA): SECURITY_STATUS; stdcall;
{$EXTERNALSYM QuerySecurityPackageInfo}
type
QUERY_SECURITY_PACKAGE_INFO_FN = function (pszPackageName: PSecChar;
var ppPackageInfo: PSecPkgInfoA): SECURITY_STATUS; stdcall;
{$EXTERNALSYM QUERY_SECURITY_PACKAGE_INFO_FN}
{$ENDIF}
type
_SecDelegationType = (
SecFull,
SecService,
SecTree,
SecDirectory,
SecObject);
{$EXTERNALSYM _SecDelegationType}
SecDelegationType = _SecDelegationType;
{$EXTERNALSYM SecDelegationType}
PSecDelegationType = ^SecDelegationType;
{$EXTERNALSYM PSecDelegationType}
TSecDelegationType = SecDelegationType;
//function DelegateSecurityContext(phContext: PCtxtHandle; pszTarget: PSecChar;
// DelegationType: SecDelegationType; pExpiry: PTimeStamp;
// pPackageParameters: PSecBuffer; pOutput: PSecBufferDesc): SECURITY_STATUS; stdcall;
//{$EXTERNALSYM DelegateSecurityContext}
///////////////////////////////////////////////////////////////////////////
////
//// Proxies
////
///////////////////////////////////////////////////////////////////////////
//
// Proxies are only available on NT platforms
//
///////////////////////////////////////////////////////////////////////////
////
//// Context export/import
////
///////////////////////////////////////////////////////////////////////////
function ExportSecurityContext(phContext: PCtxtHandle; fFlags: ULONG;
pPackedContext: PSecBuffer; var pToken: Pointer): SECURITY_STATUS; stdcall;
{$EXTERNALSYM ExportSecurityContext}
type
EXPORT_SECURITY_CONTEXT_FN = function (phContext: PCtxtHandle; fFlags: ULONG;
pPackedContext: PSecBuffer; var pToken: Pointer): SECURITY_STATUS; stdcall;
{$EXTERNALSYM EXPORT_SECURITY_CONTEXT_FN}
function ImportSecurityContextW(pszPackage: PSecWChar; pPackedContext: PSecBuffer;
Token: Pointer; phContext: PCtxtHandle): SECURITY_STATUS; stdcall;
{$EXTERNALSYM ImportSecurityContextW}
type
IMPORT_SECURITY_CONTEXT_FN_W = function (pszPackage: PSecWChar; pPackedContext: PSecBuffer;
Token: Pointer; phContext: PCtxtHandle): SECURITY_STATUS; stdcall;
{$EXTERNALSYM IMPORT_SECURITY_CONTEXT_FN_W}
function ImportSecurityContextA(pszPackage: PSecChar; pPackedContext: PSecBuffer;
Token: Pointer; phContext: PCtxtHandle): SECURITY_STATUS; stdcall;
{$EXTERNALSYM ImportSecurityContextA}
type
IMPORT_SECURITY_CONTEXT_FN_A = function (pszPackage: PSecChar; pPackedContext: PSecBuffer;
Token: Pointer; phContext: PCtxtHandle): SECURITY_STATUS; stdcall;
{$EXTERNALSYM IMPORT_SECURITY_CONTEXT_FN_A}
{$IFDEF UNICODE}
function ImportSecurityContext(pszPackage: PSecWChar; pPackedContext: PSecBuffer;
Token: Pointer; phContext: PCtxtHandle): SECURITY_STATUS; stdcall;
{$EXTERNALSYM ImportSecurityContext}
type
IMPORT_SECURITY_CONTEXT_FN = function (pszPackage: PSecWChar; pPackedContext: PSecBuffer;
Token: Pointer; phContext: PCtxtHandle): SECURITY_STATUS; stdcall;
{$EXTERNALSYM IMPORT_SECURITY_CONTEXT_FN}
{$ELSE}
function ImportSecurityContext(pszPackage: PSecChar; pPackedContext: PSecBuffer;
Token: Pointer; phContext: PCtxtHandle): SECURITY_STATUS; stdcall;
{$EXTERNALSYM ImportSecurityContext}
type
IMPORT_SECURITY_CONTEXT_FN = function (pszPackage: PSecChar; pPackedContext: PSecBuffer;
Token: Pointer; phContext: PCtxtHandle): SECURITY_STATUS; stdcall;
{$EXTERNALSYM IMPORT_SECURITY_CONTEXT_FN}
{$ENDIF}
///////////////////////////////////////////////////////////////////////////////
////
//// Fast access for RPC:
////
///////////////////////////////////////////////////////////////////////////////
const
SECURITY_ENTRYPOINT_ANSIW = 'InitSecurityInterfaceW';
{$EXTERNALSYM SECURITY_ENTRYPOINT_ANSIW}
SECURITY_ENTRYPOINT_ANSIA = 'InitSecurityInterfaceA';
{$EXTERNALSYM SECURITY_ENTRYPOINT_ANSIA}
SECURITY_ENTRYPOINTW = 'InitSecurityInterfaceW';
{$EXTERNALSYM SECURITY_ENTRYPOINTW}
SECURITY_ENTRYPOINTA = 'InitSecurityInterfaceA';
{$EXTERNALSYM SECURITY_ENTRYPOINTA}
SECURITY_ENTRYPOINT16 = 'INITSECURITYINTERFACEA';
{$EXTERNALSYM SECURITY_ENTRYPOINT16}
{$IFDEF UNICODE}
SECURITY_ENTRYPOINT = SECURITY_ENTRYPOINTW;
{$EXTERNALSYM SECURITY_ENTRYPOINT}
SECURITY_ENTRYPOINT_ANSI = SECURITY_ENTRYPOINT_ANSIW;
{$EXTERNALSYM SECURITY_ENTRYPOINT_ANSI}
{$ELSE}
SECURITY_ENTRYPOINT = SECURITY_ENTRYPOINTA;
{$EXTERNALSYM SECURITY_ENTRYPOINT}
SECURITY_ENTRYPOINT_ANSI = SECURITY_ENTRYPOINT_ANSIA;
{$EXTERNALSYM SECURITY_ENTRYPOINT_ANSI}
{$ENDIF}
function FreeCredentialHandle(phCredential: PCredHandle): SECURITY_STATUS; stdcall;
{$EXTERNALSYM FreeCredentialHandle}
type
PSecurityFunctionTableW = ^SecurityFunctionTableW;
{$EXTERNALSYM PSecurityFunctionTableW}
_SECURITY_FUNCTION_TABLE_W = record
dwVersion: Cardinal;
EnumerateSecurityPackagesW: ENUMERATE_SECURITY_PACKAGES_FN_W;
QueryCredentialsAttributesW: QUERY_CREDENTIALS_ATTRIBUTES_FN_W;
AcquireCredentialsHandleW: ACQUIRE_CREDENTIALS_HANDLE_FN_W;
FreeCredentialsHandle: FREE_CREDENTIALS_HANDLE_FN;
SspiLogonUserW: SSPI_LOGON_USER_FN;
InitializeSecurityContextW: INITIALIZE_SECURITY_CONTEXT_FN_W;
AcceptSecurityContext: ACCEPT_SECURITY_CONTEXT_FN;
CompleteAuthToken: COMPLETE_AUTH_TOKEN_FN;
DeleteSecurityContext: DELETE_SECURITY_CONTEXT_FN;
ApplyControlToken: APPLY_CONTROL_TOKEN_FN;
QueryContextAttributesW: QUERY_CONTEXT_ATTRIBUTES_FN_W;
ImpersonateSecurityContext: IMPERSONATE_SECURITY_CONTEXT_FN;
RevertSecurityContext: REVERT_SECURITY_CONTEXT_FN;
MakeSignature: MAKE_SIGNATURE_FN;
VerifySignature: VERIFY_SIGNATURE_FN;
FreeContextBuffer: FREE_CONTEXT_BUFFER_FN;
QuerySecurityPackageInfoW: QUERY_SECURITY_PACKAGE_INFO_FN_W;
Reserved3: Pointer;
Reserved4: Pointer;
ExportSecurityContext: EXPORT_SECURITY_CONTEXT_FN;
ImportSecurityContextW: IMPORT_SECURITY_CONTEXT_FN_W;
AddCredentialsW: ADD_CREDENTIALS_FN_W;
Reserved8: Pointer;
QuerySecurityContextToken: QUERY_SECURITY_CONTEXT_TOKEN_FN;
EncryptMessage: ENCRYPT_MESSAGE_FN;
DecryptMessage: DECRYPT_MESSAGE_FN;
end;
{$EXTERNALSYM _SECURITY_FUNCTION_TABLE_W}
SecurityFunctionTableW = _SECURITY_FUNCTION_TABLE_W;
{$EXTERNALSYM SecurityFunctionTableW}
TSecurityFunctionTableW = SecurityFunctionTableW;
PSecurityFunctionTableA = ^SecurityFunctionTableA;
{$EXTERNALSYM PSecurityFunctionTableA}
_SECURITY_FUNCTION_TABLE_A = record
dwVe
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -