📄 wincrypt.pas
字号:
PHCRYPTPROV = ^HCRYPTPROV;
{$NODEFINE PHCRYPTPROV}
PHCRYPTKEY = ^HCRYPTKEY;
{$NODEFINE PHCRYPTKEY}
PHCRYPTHASH = ^HCRYPTHASH;
{$NODEFINE PHCRYPTHASH}
// dwFlags definitions for CryptAcquireContext
const
CRYPT_VERIFYCONTEXT = DWORD($F0000000);
{$EXTERNALSYM CRYPT_VERIFYCONTEXT}
CRYPT_NEWKEYSET = $00000008;
{$EXTERNALSYM CRYPT_NEWKEYSET}
CRYPT_DELETEKEYSET = $00000010;
{$EXTERNALSYM CRYPT_DELETEKEYSET}
CRYPT_MACHINE_KEYSET = $00000020;
{$EXTERNALSYM CRYPT_MACHINE_KEYSET}
CRYPT_SILENT = $00000040;
{$EXTERNALSYM CRYPT_SILENT}
// dwFlag definitions for CryptGenKey
CRYPT_EXPORTABLE = $00000001;
{$EXTERNALSYM CRYPT_EXPORTABLE}
CRYPT_USER_PROTECTED = $00000002;
{$EXTERNALSYM CRYPT_USER_PROTECTED}
CRYPT_CREATE_SALT = $00000004;
{$EXTERNALSYM CRYPT_CREATE_SALT}
CRYPT_UPDATE_KEY = $00000008;
{$EXTERNALSYM CRYPT_UPDATE_KEY}
CRYPT_NO_SALT = $00000010;
{$EXTERNALSYM CRYPT_NO_SALT}
CRYPT_PREGEN = $00000040;
{$EXTERNALSYM CRYPT_PREGEN}
CRYPT_RECIPIENT = $00000010;
{$EXTERNALSYM CRYPT_RECIPIENT}
CRYPT_INITIATOR = $00000040;
{$EXTERNALSYM CRYPT_INITIATOR}
CRYPT_ONLINE = $00000080;
{$EXTERNALSYM CRYPT_ONLINE}
CRYPT_SF = $00000100;
{$EXTERNALSYM CRYPT_SF}
CRYPT_CREATE_IV = $00000200;
{$EXTERNALSYM CRYPT_CREATE_IV}
CRYPT_KEK = $00000400;
{$EXTERNALSYM CRYPT_KEK}
CRYPT_DATA_KEY = $00000800;
{$EXTERNALSYM CRYPT_DATA_KEY}
CRYPT_VOLATILE = $00001000;
{$EXTERNALSYM CRYPT_VOLATILE}
CRYPT_SGCKEY = $00002000;
{$EXTERNALSYM CRYPT_SGCKEY}
RSA1024BIT_KEY = $04000000;
{$EXTERNALSYM RSA1024BIT_KEY}
// dwFlags definitions for CryptDeriveKey
CRYPT_SERVER = $00000400;
{$EXTERNALSYM CRYPT_SERVER}
KEY_LENGTH_MASK = DWORD($FFFF0000);
{$EXTERNALSYM KEY_LENGTH_MASK}
// dwFlag definitions for CryptExportKey
CRYPT_Y_ONLY = $00000001;
{$EXTERNALSYM CRYPT_Y_ONLY}
CRYPT_SSL2_FALLBACK = $00000002;
{$EXTERNALSYM CRYPT_SSL2_FALLBACK}
CRYPT_DESTROYKEY = $00000004;
{$EXTERNALSYM CRYPT_DESTROYKEY}
CRYPT_OAEP = $00000040; // used with RSA encryptions/decryptions
// CryptExportKey, CryptImportKey,
// CryptEncrypt and CryptDecrypt
{$EXTERNALSYM CRYPT_OAEP}
CRYPT_BLOB_VER3 = $00000080; // export version 3 of a blob type
{$EXTERNALSYM CRYPT_BLOB_VER3}
// dwFlags definitions for CryptCreateHash
CRYPT_SECRETDIGEST = $00000001;
{$EXTERNALSYM CRYPT_SECRETDIGEST}
// dwFlags definitions for CryptHashSessionKey
CRYPT_LITTLE_ENDIAN = $00000001;
{$EXTERNALSYM CRYPT_LITTLE_ENDIAN}
// dwFlags definitions for CryptSignHash and CryptVerifySignature
CRYPT_NOHASHOID = $00000001;
{$EXTERNALSYM CRYPT_NOHASHOID}
CRYPT_TYPE2_FORMAT = $00000002;
{$EXTERNALSYM CRYPT_TYPE2_FORMAT}
CRYPT_X931_FORMAT = $00000004;
{$EXTERNALSYM CRYPT_X931_FORMAT}
// dwFlag definitions for CryptSetProviderEx and CryptGetDefaultProvider
CRYPT_MACHINE_DEFAULT = $00000001;
{$EXTERNALSYM CRYPT_MACHINE_DEFAULT}
CRYPT_USER_DEFAULT = $00000002;
{$EXTERNALSYM CRYPT_USER_DEFAULT}
CRYPT_DELETE_DEFAULT = $00000004;
{$EXTERNALSYM CRYPT_DELETE_DEFAULT}
// exported key blob definitions
SIMPLEBLOB = $1;
{$EXTERNALSYM SIMPLEBLOB}
PUBLICKEYBLOB = $6;
{$EXTERNALSYM PUBLICKEYBLOB}
PRIVATEKEYBLOB = $7;
{$EXTERNALSYM PRIVATEKEYBLOB}
PLAINTEXTKEYBLOB = $8;
{$EXTERNALSYM PLAINTEXTKEYBLOB}
OPAQUEKEYBLOB = $9;
{$EXTERNALSYM OPAQUEKEYBLOB}
PUBLICKEYBLOBEX = $A;
{$EXTERNALSYM PUBLICKEYBLOBEX}
SYMMETRICWRAPKEYBLOB = $B;
{$EXTERNALSYM SYMMETRICWRAPKEYBLOB}
AT_KEYEXCHANGE = 1;
{$EXTERNALSYM AT_KEYEXCHANGE}
AT_SIGNATURE = 2;
{$EXTERNALSYM AT_SIGNATURE}
CRYPT_USERDATA = 1;
{$EXTERNALSYM CRYPT_USERDATA}
// dwParam
KP_IV = 1; // Initialization vector
{$EXTERNALSYM KP_IV}
KP_SALT = 2; // Salt value
{$EXTERNALSYM KP_SALT}
KP_PADDING = 3; // Padding values
{$EXTERNALSYM KP_PADDING}
KP_MODE = 4; // Mode of the cipher
{$EXTERNALSYM KP_MODE}
KP_MODE_BITS = 5; // Number of bits to feedback
{$EXTERNALSYM KP_MODE_BITS}
KP_PERMISSIONS = 6; // Key permissions DWORD
{$EXTERNALSYM KP_PERMISSIONS}
KP_ALGID = 7; // Key algorithm
{$EXTERNALSYM KP_ALGID}
KP_BLOCKLEN = 8; // Block size of the cipher
{$EXTERNALSYM KP_BLOCKLEN}
KP_KEYLEN = 9; // Length of key in bits
{$EXTERNALSYM KP_KEYLEN}
KP_SALT_EX = 10; // Length of salt in bytes
{$EXTERNALSYM KP_SALT_EX}
KP_P = 11; // DSS/Diffie-Hellman P value
{$EXTERNALSYM KP_P}
KP_G = 12; // DSS/Diffie-Hellman G value
{$EXTERNALSYM KP_G}
KP_Q = 13; // DSS Q value
{$EXTERNALSYM KP_Q}
KP_X = 14; // Diffie-Hellman X value
{$EXTERNALSYM KP_X}
KP_Y = 15; // Y value
{$EXTERNALSYM KP_Y}
KP_RA = 16; // Fortezza RA value
{$EXTERNALSYM KP_RA}
KP_RB = 17; // Fortezza RB value
{$EXTERNALSYM KP_RB}
KP_INFO = 18; // for putting information into an RSA envelope
{$EXTERNALSYM KP_INFO}
KP_EFFECTIVE_KEYLEN = 19; // setting and getting RC2 effective key length
{$EXTERNALSYM KP_EFFECTIVE_KEYLEN}
KP_SCHANNEL_ALG = 20; // for setting the Secure Channel algorithms
{$EXTERNALSYM KP_SCHANNEL_ALG}
KP_CLIENT_RANDOM = 21; // for setting the Secure Channel client random data
{$EXTERNALSYM KP_CLIENT_RANDOM}
KP_SERVER_RANDOM = 22; // for setting the Secure Channel server random data
{$EXTERNALSYM KP_SERVER_RANDOM}
KP_RP = 23;
{$EXTERNALSYM KP_RP}
KP_PRECOMP_MD5 = 24;
{$EXTERNALSYM KP_PRECOMP_MD5}
KP_PRECOMP_SHA = 25;
{$EXTERNALSYM KP_PRECOMP_SHA}
KP_CERTIFICATE = 26; // for setting Secure Channel certificate data (PCT1)
{$EXTERNALSYM KP_CERTIFICATE}
KP_CLEAR_KEY = 27; // for setting Secure Channel clear key data (PCT1)
{$EXTERNALSYM KP_CLEAR_KEY}
KP_PUB_EX_LEN = 28;
{$EXTERNALSYM KP_PUB_EX_LEN}
KP_PUB_EX_VAL = 29;
{$EXTERNALSYM KP_PUB_EX_VAL}
KP_KEYVAL = 30;
{$EXTERNALSYM KP_KEYVAL}
KP_ADMIN_PIN = 31;
{$EXTERNALSYM KP_ADMIN_PIN}
KP_KEYEXCHANGE_PIN = 32;
{$EXTERNALSYM KP_KEYEXCHANGE_PIN}
KP_SIGNATURE_PIN = 33;
{$EXTERNALSYM KP_SIGNATURE_PIN}
KP_PREHASH = 34;
{$EXTERNALSYM KP_PREHASH}
KP_OAEP_PARAMS = 36; // for setting OAEP params on RSA keys
{$EXTERNALSYM KP_OAEP_PARAMS}
KP_CMS_KEY_INFO = 37;
{$EXTERNALSYM KP_CMS_KEY_INFO}
KP_CMS_DH_KEY_INFO = 38;
{$EXTERNALSYM KP_CMS_DH_KEY_INFO}
KP_PUB_PARAMS = 39; // for setting public parameters
{$EXTERNALSYM KP_PUB_PARAMS}
KP_VERIFY_PARAMS = 40; // for verifying DSA and DH parameters
{$EXTERNALSYM KP_VERIFY_PARAMS}
KP_HIGHEST_VERSION = 41; // for TLS protocol version setting
{$EXTERNALSYM KP_HIGHEST_VERSION}
// KP_PADDING
PKCS5_PADDING = 1; // PKCS 5 (sec 6.2) padding method
{$EXTERNALSYM PKCS5_PADDING}
RANDOM_PADDING = 2;
{$EXTERNALSYM RANDOM_PADDING}
ZERO_PADDING = 3;
{$EXTERNALSYM ZERO_PADDING}
// KP_MODE
CRYPT_MODE_CBC = 1; // Cipher block chaining
{$EXTERNALSYM CRYPT_MODE_CBC}
CRYPT_MODE_ECB = 2; // Electronic code book
{$EXTERNALSYM CRYPT_MODE_ECB}
CRYPT_MODE_OFB = 3; // Output feedback mode
{$EXTERNALSYM CRYPT_MODE_OFB}
CRYPT_MODE_CFB = 4; // Cipher feedback mode
{$EXTERNALSYM CRYPT_MODE_CFB}
CRYPT_MODE_CTS = 5; // Ciphertext stealing mode
{$EXTERNALSYM CRYPT_MODE_CTS}
// KP_PERMISSIONS
CRYPT_ENCRYPT = $0001; // Allow encryption
{$EXTERNALSYM CRYPT_ENCRYPT}
CRYPT_DECRYPT = $0002; // Allow decryption
{$EXTERNALSYM CRYPT_DECRYPT}
CRYPT_EXPORT = $0004; // Allow key to be exported
{$EXTERNALSYM CRYPT_EXPORT}
CRYPT_READ = $0008; // Allow parameters to be read
{$EXTERNALSYM CRYPT_READ}
CRYPT_WRITE = $0010; // Allow parameters to be set
{$EXTERNALSYM CRYPT_WRITE}
CRYPT_MAC = $0020; // Allow MACs to be used with key
{$EXTERNALSYM CRYPT_MAC}
CRYPT_EXPORT_KEY = $0040; // Allow key to be used for exporting keys
{$EXTERNALSYM CRYPT_EXPORT_KEY}
CRYPT_IMPORT_KEY = $0080; // Allow key to be used for importing keys
{$EXTERNALSYM CRYPT_IMPORT_KEY}
HP_ALGID = $0001; // Hash algorithm
{$EXTERNALSYM HP_ALGID}
HP_HASHVAL = $0002; // Hash value
{$EXTERNALSYM HP_HASHVAL}
HP_HASHSIZE = $0004; // Hash value size
{$EXTERNALSYM HP_HASHSIZE}
HP_HMAC_INFO = $0005; // information for creating an HMAC
{$EXTERNALSYM HP_HMAC_INFO}
HP_TLS1PRF_LABEL = $0006; // label for TLS1 PRF
{$EXTERNALSYM HP_TLS1PRF_LABEL}
HP_TLS1PRF_SEED = $0007; // seed for TLS1 PRF
{$EXTERNALSYM HP_TLS1PRF_SEED}
CRYPT_FAILED = FALSE;
{$EXTERNALSYM CRYPT_FAILED}
CRYPT_SUCCEED = TRUE;
{$EXTERNALSYM CRYPT_SUCCEED}
function RCRYPT_SUCCEEDED(rt: BOOL): BOOL;
{$EXTERNALSYM RCRYPT_SUCCEEDED}
function RCRYPT_FAILED(rt: BOOL): BOOL;
{$EXTERNALSYM RCRYPT_FAILED}
//
// CryptGetProvParam
//
const
PP_ENUMALGS = 1;
{$EXTERNALSYM PP_ENUMALGS}
PP_ENUMCONTAINERS = 2;
{$EXTERNALSYM PP_ENUMCONTAINERS}
PP_IMPTYPE = 3;
{$EXTERNALSYM PP_IMPTYPE}
PP_NAME = 4;
{$EXTERNALSYM PP_NAME}
PP_VERSION = 5;
{$EXTERNALSYM PP_VERSION}
PP_CONTAINER = 6;
{$EXTERNALSYM PP_CONTAINER}
PP_CHANGE_PASSWORD = 7;
{$EXTERNALSYM PP_CHANGE_PASSWORD}
PP_KEYSET_SEC_DESCR = 8; // get/set security descriptor of keyset
{$EXTERNALSYM PP_KEYSET_SEC_DESCR}
PP_CERTCHAIN = 9; // for retrieving certificates from tokens
{$EXTERNALSYM PP_CERTCHAIN}
PP_KEY_TYPE_SUBTYPE = 10;
{$EXTERNALSYM PP_KEY_TYPE_SUBTYPE}
PP_PROVTYPE = 16;
{$EXTERNALSYM PP_PROVTYPE}
PP_KEYSTORAGE = 17;
{$EXTERNALSYM PP_KEYSTORAGE}
PP_APPLI_CERT = 18;
{$EXTERNALSYM PP_APPLI_CERT}
PP_SYM_KEYSIZE = 19;
{$EXTERNALSYM PP_SYM_KEYSIZE}
PP_SESSION_KEYSIZE = 20;
{$EXTERNALSYM PP_SESSION_KEYSIZE}
PP_UI_PROMPT = 21;
{$EXTERNALSYM PP_UI_PROMPT}
PP_ENUMALGS_EX = 22;
{$EXTERNALSYM PP_ENUMALGS_EX}
PP_ENUMMANDROOTS = 25;
{$EXTERNALSYM PP_ENUMMANDROOTS}
PP_ENUMELECTROOTS = 26;
{$EXTERNALSYM PP_ENUMELECTROOTS}
PP_KEYSET_TYPE = 27;
{$EXTERNALSYM PP_KEYSET_TYPE}
PP_ADMIN_PIN = 31;
{$EXTERNALSYM PP_ADMIN_PIN}
PP_KEYEXCHANGE_PIN = 32;
{$EXTERNALSYM PP_KEYEXCHANGE_PIN}
PP_SIGNATURE_PIN = 33;
{$EXTERNALSYM PP_SIGNATURE_PIN}
PP_SIG_KEYSIZE_INC = 34;
{$EXTERNALSYM PP_SIG_KEYSIZE_INC}
PP_KEYX_KEYSIZE_INC = 35;
{$EXTERNALSYM PP_KEYX_KEYSIZE_INC}
PP_UNIQUE_CONTAINER = 36;
{$EXTERNALSYM PP_UNIQUE_CONTAINER}
PP_SGC_INFO = 37;
{$EXTERNALSYM PP_SGC_INFO}
PP_USE_HARDWARE_RNG = 38;
{$EXTERNALSYM PP_USE_HARDWARE_RNG}
PP_KEYSPEC = 39;
{$EXTERNALSYM PP_KEYSPEC}
PP_ENUMEX_SIGNING_PROT = 40;
{$EXTERNALSYM PP_ENUMEX_SIGNING_PROT}
CRYPT_FIRST = 1;
{$EXTERNALSYM CRYPT_FIRST}
CRYPT_NEXT = 2;
{$EXTERNALSYM CRYPT_NEXT}
CRYPT_SGC_ENUM = 4;
{$EXTERNALSYM CRYPT_SGC_ENUM}
CRYPT_IMPL_HARDWARE = 1;
{$EXTERNALSYM CRYPT_IMPL_HARDWARE}
CRYPT_IMPL_SOFTWARE = 2;
{$EXTERNALSYM CRYPT_IMPL_SOFTWARE}
CRYPT_IMPL_MIXED = 3;
{$EXTERNALSYM CRYPT_IMPL_MIXED}
CRYPT_IMPL_UNKNOWN = 4;
{$EXTERNALSYM CRYPT_IMPL_UNKNOWN}
CRYPT_IMPL_REMOVABLE = 8;
{$EXTERNALSYM CRYPT_IMPL_REMOVABLE}
// key storage flags
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -