📄 clcryptapi.pas
字号:
PP_SESSION_KEYSIZE = 20;
PP_UI_PROMPT = 21;
PP_ENUMALGS_EX = 22;
CRYPT_FIRST = 1;
CRYPT_NEXT = 2;
CRYPT_IMPL_HARDWARE = 1;
CRYPT_IMPL_SOFTWARE = 2;
CRYPT_IMPL_MIXED = 3;
CRYPT_IMPL_UNKNOWN = 4;
// key storage flags
CRYPT_SEC_DESCR = $00000001;
CRYPT_PSTORE = $00000002;
CRYPT_UI_PROMPT = $00000004;
// protocol flags
CRYPT_FLAG_PCT1 = $0001;
CRYPT_FLAG_SSL2 = $0002;
CRYPT_FLAG_SSL3 = $0004;
CRYPT_FLAG_TLS1 = $0008;
// CryptSetProvParam
PP_CLIENT_HWND = 1;
PP_CONTEXT_INFO = 11;
PP_KEYEXCHANGE_KEYSIZE = 12;
PP_SIGNATURE_KEYSIZE = 13;
PP_KEYEXCHANGE_ALG = 14;
PP_SIGNATURE_ALG = 15;
PP_DELETEKEY = 24;
PROV_RSA_FULL = 1;
PROV_RSA_SIG = 2;
PROV_DSS = 3;
PROV_FORTEZZA = 4;
PROV_MS_EXCHANGE = 5;
PROV_SSL = 6;
PROV_RSA_SCHANNEL = 12;
PROV_DSS_DH = 13;
PROV_EC_ECDSA_SIG = 14;
PROV_EC_ECNRA_SIG = 15;
PROV_EC_ECDSA_FULL = 16;
PROV_EC_ECNRA_FULL = 17;
PROV_DH_SCHANNEL = 18;
PROV_SPYRUS_LYNKS = 20;
PROV_RNG = 21;
PROV_INTEL_SEC = 22;
PROV_RSA_AES = 24;
// STT defined Providers
PROV_STT_MER = 7;
PROV_STT_ACQ = 8;
PROV_STT_BRND = 9;
PROV_STT_ROOT = 10;
PROV_STT_ISS = 11;
// Provider friendly names
MS_DEF_PROV_A = 'Microsoft Base Cryptographic Provider v1.0';
{$IFNDEF VER90}
MS_DEF_PROV_W = WideString( 'Microsoft Base Cryptographic Provider v1.0');
{$ELSE}
MS_DEF_PROV_W = ( 'Microsoft Base Cryptographic Provider v1.0');
{$ENDIF}
{$IFDEF UNICODE}
MS_DEF_PROV = MS_DEF_PROV_W;
{$ELSE}
MS_DEF_PROV = MS_DEF_PROV_A;
{$ENDIF}
MS_ENHANCED_PROV_A = 'Microsoft Enhanced Cryptographic Provider v1.0';
{$IFNDEF VER90}
MS_ENHANCED_PROV_W = WideString('Microsoft Enhanced Cryptographic Provider v1.0');
{$ELSE}
MS_ENHANCED_PROV_W = ('Microsoft Enhanced Cryptographic Provider v1.0');
{$ENDIF}
{$IFDEF UNICODE}
MS_ENHANCED_PROV = MS_ENHANCED_PROV_W;
{$ELSE}
MS_ENHANCED_PROV = MS_ENHANCED_PROV_A;
{$ENDIF}
MS_DEF_RSA_SIG_PROV_A = 'Microsoft RSA Signature Cryptographic Provider';
{$IFNDEF VER90}
MS_DEF_RSA_SIG_PROV_W = WideString('Microsoft RSA Signature Cryptographic Provider');
{$ELSE}
MS_DEF_RSA_SIG_PROV_W = ('Microsoft RSA Signature Cryptographic Provider');
{$ENDIF}
{$IFDEF UNICODE}
MS_DEF_RSA_SIG_PROV = MS_DEF_RSA_SIG_PROV_W;
{$ELSE}
MS_DEF_RSA_SIG_PROV = MS_DEF_RSA_SIG_PROV_A;
{$ENDIF}
MS_DEF_RSA_SCHANNEL_PROV_A = 'Microsoft Base RSA SChannel Cryptographic Provider';
{$IFNDEF VER90}
MS_DEF_RSA_SCHANNEL_PROV_W = WideString('Microsoft Base RSA SChannel Cryptographic Provider');
{$ELSE}
MS_DEF_RSA_SCHANNEL_PROV_W = ('Microsoft Base RSA SChannel Cryptographic Provider');
{$ENDIF}
{$IFDEF UNICODE}
MS_DEF_RSA_SCHANNEL_PROV = MS_DEF_RSA_SCHANNEL_PROV_W;
{$ELSE}
MS_DEF_RSA_SCHANNEL_PROV = MS_DEF_RSA_SCHANNEL_PROV_A;
{$ENDIF}
MS_ENHANCED_RSA_SCHANNEL_PROV_A = 'Microsoft Enhanced RSA SChannel Cryptographic Provider';
{$IFNDEF VER90}
MS_ENHANCED_RSA_SCHANNEL_PROV_W = WideString('Microsoft Enhanced RSA SChannel Cryptographic Provider');
{$ELSE}
MS_ENHANCED_RSA_SCHANNEL_PROV_W = ('Microsoft Enhanced RSA SChannel Cryptographic Provider');
{$ENDIF}
{$IFDEF UNICODE}
MS_ENHANCED_RSA_SCHANNEL_PROV = MS_ENHANCED_RSA_SCHANNEL_PROV_W;
{$ELSE}
MS_ENHANCED_RSA_SCHANNEL_PROV = MS_ENHANCED_RSA_SCHANNEL_PROV_A;
{$ENDIF}
MS_DEF_DSS_PROV_A = 'Microsoft Base DSS Cryptographic Provider';
{$IFNDEF VER90}
MS_DEF_DSS_PROV_W = WideString('Microsoft Base DSS Cryptographic Provider');
{$ELSE}
MS_DEF_DSS_PROV_W = ('Microsoft Base DSS Cryptographic Provider');
{$ENDIF}
{$IFDEF UNICODE}
MS_DEF_DSS_PROV = MS_DEF_DSS_PROV_W;
{$ELSE}
MS_DEF_DSS_PROV = MS_DEF_DSS_PROV_A;
{$ENDIF}
MS_DEF_DSS_DH_PROV_A = 'Microsoft Base DSS and Diffie-Hellman Cryptographic Provider';
{$IFNDEF VER90}
MS_DEF_DSS_DH_PROV_W = WideString('Microsoft Base DSS and Diffie-Hellman Cryptographic Provider');
{$ELSE}
MS_DEF_DSS_DH_PROV_W = ('Microsoft Base DSS and Diffie-Hellman Cryptographic Provider');
{$ENDIF}
{$IFDEF UNICODE}
MS_DEF_DSS_DH_PROV = MS_DEF_DSS_DH_PROV_W;
{$ELSE}
MS_DEF_DSS_DH_PROV = MS_DEF_DSS_DH_PROV_A;
{$ENDIF}
MAXUIDLEN = 64;
CUR_BLOB_VERSION = 2;
{structure for use with CryptSetHashParam with CALG_HMAC}
type
PHMAC_INFO = ^HMAC_INFO;
HMAC_INFO = record
HashAlgid :ALG_ID;
pbInnerString :PBYTE;
cbInnerString :DWORD;
pbOuterString :PBYTE;
cbOuterString :DWORD;
end;
// structure for use with CryptSetHashParam with CALG_HMAC
type
PSCHANNEL_ALG = ^SCHANNEL_ALG;
SCHANNEL_ALG = record
dwUse :DWORD;
Algid :ALG_ID;
cBits :DWORD;
end;
// uses of algortihms for SCHANNEL_ALG structure
const
SCHANNEL_MAC_KEY = $00000000;
SCHANNEL_ENC_KEY = $00000001;
type
PPROV_ENUMALGS = ^PROV_ENUMALGS;
PROV_ENUMALGS = record
aiAlgid :ALG_ID;
dwBitLen :DWORD;
dwNameLen :DWORD;
szName :array[0..20-1] of Char;
end ;
type
PPROV_ENUMALGS_EX = ^PROV_ENUMALGS_EX;
PROV_ENUMALGS_EX = record
aiAlgid :ALG_ID;
dwDefaultLen :DWORD;
dwMinLen :DWORD;
dwMaxLen :DWORD;
dwProtocols :DWORD;
dwNameLen :DWORD;
szName :array[0..20-1] of Char;
dwLongNameLen :DWORD;
szLongName :array[0..40-1] of Char;
end;
type
PPUBLICKEYSTRUC = ^PUBLICKEYSTRUC;
PUBLICKEYSTRUC = record
bType :BYTE;
bVersion :BYTE;
reserved :Word;
aiKeyAlg :ALG_ID;
end;
type
BLOBHEADER = PUBLICKEYSTRUC;
PBLOBHEADER = ^BLOBHEADER;
type
PRSAPUBKEY = ^RSAPUBKEY;
RSAPUBKEY = record
magic :DWORD; // Has to be RSA1
bitlen :DWORD; // # of bits in modulus
pubexp :DWORD; // public exponent
// Modulus data follows
end;
type
PPUBKEY = ^PUBKEY;
PUBKEY = record
magic :DWORD;
bitlen :DWORD; // # of bits in modulus
end;
type
DHPUBKEY = PUBKEY;
DSSPUBKEY = PUBKEY;
KEAPUBKEY = PUBKEY;
TEKPUBKEY = PUBKEY;
type
PDSSSEED = ^DSSSEED;
DSSSEED = record
counter :DWORD;
seed :array[0..20-1] of BYTE;
end;
type
PKEY_TYPE_SUBTYPE = ^KEY_TYPE_SUBTYPE;
KEY_TYPE_SUBTYPE = record
dwKeySpec :DWORD;
Type_ :TGUID; {conflict with base Delphi type: original name 'Type'}
Subtype :TGUID;
end;
type
HCRYPTPROV = ULONG;
PHCRYPTPROV = ^HCRYPTPROV;
HCRYPTKEY = ULONG;
PHCRYPTKEY = ^HCRYPTKEY;
HCRYPTHASH = ULONG;
PHCRYPTHASH = ^HCRYPTHASH;
(*
function CryptAcquireContextA(phProv :PHCRYPTPROV;
pszContainer :PAnsiChar;
pszProvider :PAnsiChar;
dwProvType :DWORD;
dwFlags :DWORD) :BOOL;stdcall;
*)
function CryptAcquireContext(phProv :PHCRYPTPROV;
pszContainer :LPAWSTR;
pszProvider :LPAWSTR;
dwProvType :DWORD;
dwFlags :DWORD) :BOOL;stdcall;
type
TclCryptAcquireContext = function(phProv :PHCRYPTPROV;
pszContainer :LPAWSTR;
pszProvider :LPAWSTR;
dwProvType :DWORD;
dwFlags :DWORD) :BOOL;stdcall;
(*
function CryptAcquireContextW(phProv :PHCRYPTPROV;
pszContainer :PWideChar;
pszProvider :PWideChar;
dwProvType :DWORD;
dwFlags :DWORD) :BOOL ;stdcall;
*)
function CryptReleaseContext(hProv :HCRYPTPROV;
dwFlags :DWORD) :BOOL;stdcall;
type
TclCryptReleaseContext = function(hProv :HCRYPTPROV;
dwFlags :DWORD) :BOOL;stdcall;
(*function CryptDeriveKey(hProv :HCRYPTPROV;
Algid :ALG_ID;
hBaseData :HCRYPTHASH;
dwFlags :DWORD;
phKey :PHCRYPTKEY) :BOOL;stdcall ;
*)
function CryptDestroyKey(hKey :HCRYPTKEY) :BOOL;stdcall ;
type
TclCryptDestroyKey = function (hKey :HCRYPTKEY) :BOOL;stdcall ;
function CryptGenKey(hProv :HCRYPTPROV;
Algid :ALG_ID;
dwFlags :DWORD;
phKey :PHCRYPTKEY) :BOOL;stdcall ;
type
TclCryptGenKey = function (hProv :HCRYPTPROV;
Algid :ALG_ID;
dwFlags :DWORD;
phKey :PHCRYPTKEY) :BOOL;stdcall ;
(*
function CryptSetKeyParam(hKey :HCRYPTKEY;
dwParam :DWORD;
pbData :PBYTE;
dwFlags :DWORD) :BOOL;stdcall;
function CryptGetKeyParam(hKey :HCRYPTKEY;
dwParam :DWORD;
pbData :PBYTE;
pdwDataLen :PDWORD;
dwFlags :DWORD) :BOOL;stdcall;
*)
function CryptSetHashParam(hHash :HCRYPTHASH;
dwParam :DWORD;
pbData :PBYTE;
dwFlags :DWORD) :BOOL;stdcall;
type
TclCryptSetHashParam = function (hHash :HCRYPTHASH;
dwParam :DWORD;
pbData :PBYTE;
dwFlags :DWORD) :BOOL;stdcall;
function CryptGetHashParam(hHash :HCRYPTHASH;
dwParam :DWORD;
pbData :PBYTE;
pdwDataLen :PDWORD;
dwFlags :DWORD) :BOOL;stdcall;
type
TclCryptGetHashParam = function (hHash :HCRYPTHASH;
dwParam :DWORD;
pbData :PBYTE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -