📄 wincrypt.pas
字号:
KP_SCHANNEL_ALG = 20; // for setting the Secure Channel algorithms
KP_CLIENT_RANDOM = 21; // for setting the Secure Channel client random data
KP_SERVER_RANDOM = 22; // for setting the Secure Channel server random data
KP_RP = 23;
KP_PRECOMP_MD5 = 24;
KP_PRECOMP_SHA = 25;
KP_CERTIFICATE = 26; // for setting Secure Channel certificate data (PCT1)
KP_CLEAR_KEY = 27; // for setting Secure Channel clear key data (PCT1)
KP_PUB_EX_LEN = 28;
KP_PUB_EX_VAL = 29;
// KP_PADDING
PKCS5_PADDING = 1; // PKCS 5 (sec 6.2) padding method
RANDOM_PADDING = 2;
ZERO_PADDING = 3;
// KP_MODE
CRYPT_MODE_CBC = 1; // Cipher block chaining
CRYPT_MODE_ECB = 2; // Electronic code book
CRYPT_MODE_OFB = 3; // Output feedback mode
CRYPT_MODE_CFB = 4; // Cipher feedback mode
CRYPT_MODE_CTS = 5; // Ciphertext stealing mode
// KP_PERMISSIONS
CRYPT_ENCRYPT = $0001; // Allow encryption
CRYPT_DECRYPT = $0002; // Allow decryption
CRYPT_EXPORT = $0004; // Allow key to be exported
CRYPT_READ = $0008; // Allow parameters to be read
CRYPT_WRITE = $0010; // Allow parameters to be set
CRYPT_MAC = $0020; // Allow MACs to be used with key
CRYPT_EXPORT_KEY = $0040; // Allow key to be used for exporting keys
CRYPT_IMPORT_KEY = $0080; // Allow key to be used for importing keys
HP_ALGID = $0001; // Hash algorithm
HP_HASHVAL = $0002; // Hash value
HP_HASHSIZE = $0004; // Hash value size
HP_HMAC_INFO = $0005; // information for creating an HMAC
CRYPT_FAILED = FALSE;
CRYPT_SUCCEED = TRUE ;
//RCRYPT_SUCCEEDED(rt) = ((rt) = CRYPT_SUCCEED);
//RCRYPT_FAILED(rt) = ((rt) = CRYPT_FAILED);
//
// CryptGetProvParam
//
PP_ENUMALGS = 1;
PP_ENUMCONTAINERS = 2;
PP_IMPTYPE = 3;
PP_NAME = 4;
PP_VERSION = 5;
PP_CONTAINER = 6;
PP_CHANGE_PASSWORD = 7;
PP_KEYSET_SEC_DESCR = 8; // get/set security descriptor of keyset
PP_CERTCHAIN = 9; // for retrieving certificates from tokens
PP_KEY_TYPE_SUBTYPE = 10;
PP_PROVTYPE = 16;
PP_KEYSTORAGE = 17;
PP_APPLI_CERT = 18;
PP_SYM_KEYSIZE = 19;
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_SPYRUS_LYNKS = 20;
//
// 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';
MS_DEF_PROV_W = 'Microsoft Base Cryptographic Provider v1.0';
MS_DEF_PROV = MS_DEF_PROV_W;
MS_ENHANCED_PROV_A = 'Microsoft Enhanced Cryptographic Provider v1.0';
MS_ENHANCED_PROV_W = 'Microsoft Enhanced Cryptographic Provider v1.0';
MS_ENHANCED_PROV = MS_ENHANCED_PROV_W;
MS_DEF_RSA_SIG_PROV_A = 'Microsoft RSA Signature Cryptographic Provider';
MS_DEF_RSA_SIG_PROV_W = 'Microsoft RSA Signature Cryptographic Provider';
MS_DEF_RSA_SIG_PROV = MS_DEF_RSA_SIG_PROV_W;
MS_DEF_RSA_SCHANNEL_PROV_A = 'Microsoft Base RSA SChannel Cryptographic Provider' ;
MS_DEF_RSA_SCHANNEL_PROV_W = 'Microsoft Base RSA SChannel Cryptographic Provider';
MS_DEF_RSA_SCHANNEL_PROV = MS_DEF_RSA_SCHANNEL_PROV_W ;
MS_ENHANCED_RSA_SCHANNEL_PROV_A = 'Microsoft Enhanced RSA SChannel Cryptographic Provider';
MS_ENHANCED_RSA_SCHANNEL_PROV_W ='Microsoft Enhanced RSA SChannel Cryptographic Provider';
MS_ENHANCED_RSA_SCHANNEL_PROV = MS_ENHANCED_RSA_SCHANNEL_PROV_W;
MS_DEF_DSS_PROV_A = 'Microsoft Base DSS Cryptographic Provider' ;
MS_DEF_DSS_PROV_W = 'Microsoft Base DSS Cryptographic Provider';
MS_DEF_DSS_PROV = MS_DEF_DSS_PROV_W;
MS_DEF_DSS_DH_PROV_A = 'Microsoft Base DSS and Diffie-Hellman Cryptographic Provider' ;
MS_DEF_DSS_DH_PROV_W = 'Microsoft Base DSS and Diffie-Hellman Cryptographic Provider';
MS_DEF_DSS_DH_PROV = MS_DEF_DSS_DH_PROV_W ;
MAXUIDLEN = 64;
CUR_BLOB_VERSION = 2;
//FUNCTIONS
const
advapi32 = 'advapi32.dll';
cryptapi = 'crypt32.dll';
FUNCTION CryptAcquireContext(phProv:PHCRYPTPROV;pszContainer:LPCSTR;pszProvider:LPCSTR;
dwProvType,dwFlags:DWORD):BOOLEAN;STDCALL;external advapi32 name 'CryptAcquireContextA';
FUNCTION CryptReleaseContext(hProv:HCRYPTPROV;dwFlags:DWORD):BOOLEAN;STDCALL;external advapi32;
FUNCTION CryptGenKey(hProv:HCRYPTPROV;Algid:ALG_ID;dwFlags:DWORD;
phKey:PHCRYPTKEY):BOOLEAN;STDCALL;external advapi32;
FUNCTION CryptDeriveKey(hProv:HCRYPTPROV;Algid:ALG_ID;hBaseData:HCRYPTHASH;
dwFlags:DWORD;phKey:PHCRYPTKEY):BOOLEAN;STDCALL;external advapi32;
FUNCTION CryptDestroyKey(hKey:HCRYPTKEY):BOOLEAN;STDCALL;external advapi32;
FUNCTION CryptSetKeyParam(hKey:HCRYPTKEY;dwParam:DWORD;pbData:BYTE;dwFlags:DWORD)
:BOOLEAN;STDCALL;external cryptapi;
FUNCTION CryptGetKeyParam(hKey:HCRYPTKEY;dwParam:DWORD;pbData:byte;pdwDataLen:DWORD;
dwFlags:DWORD):BOOLEAN;STDCALL;external cryptapi;
FUNCTION CryptExportKey(hKey:HCRYPTKEY;hExpKey:HCRYPTKEY;dwBlobType:DWORD;dwFlags:DWORD;
pbData:BYTE;pdwDataLen:DWORD):BOOLEAN;STDCALL;external cryptapi;
FUNCTION CryptImportKey(hProv:HCRYPTPROV;CONST pbData:BYTE;dwDataLen:DWORD;hPubKey:HCRYPTKEY;
dwFlags:DWORD;phKey:HCRYPTKEY):BOOLEAN;STDCALL;external cryptapi;
FUNCTION CryptEncrypt(hKey:HCRYPTKEY;hHash:HCRYPTHASH;Final:BOOLEAN;dwFlags:DWORD;
pbData:PBYTE;pdwDataLen:PDWORD;dwBufLen:DWORD):BOOLEAN;STDCALL;external advapi32;
FUNCTION CryptDecrypt(hKey:HCRYPTKEY;hHash:HCRYPTHASH;Final:BOOLEAN;dwFlags:DWORD;
pbData:PByte;pdwDataLen:pDWORD):BOOLEAN;STDCALL;external advapi32;
FUNCTION CryptCreateHash(hProv:HCRYPTPROV;Algid:ALG_ID;hKey:HCRYPTKEY;dwFlags:DWORD;
phHash:PHCRYPTHASH):BOOLEAN;STDCALL;external advapi32;
FUNCTION CryptHashData(hHash:HCRYPTHASH;CONST pbData:PBYTE;dwDataLen:DWORD;
dwFlags:DWORD):BOOLEAN;STDCALL;external advapi32;
FUNCTION CryptHashSessionKey(hHash:HCRYPTHASH;hKey:HCRYPTKEY;dwFlags:DWORD)
:BOOLEAN;STDCALL;external cryptapi;
FUNCTION CryptDestroyHash(hHash:HCRYPTHASH):BOOLEAN;STDCALL;external advapi32;
FUNCTION CryptSignHash(hHash:HCRYPTHASH;dwKeySpec:DWORD;sDescription:LPCSTR;dwFlags:DWORD;
pbSignature:PBYTE;pdwSigLen:PDWORD):BOOLEAN;STDCALL;external advapi32 NAME 'CryptSignHashA';
implementation
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -