?? wincrypt.pas
字號:
UNIT WINCRYPT;
interface
USES WINDOWS,SysUtils;
type HRESULT=LONGINT;
type ALG_ID=WORD;
CONST
ALG_CLASS_ANY = (0);
ALG_TYPE_ANY = (0);
ALG_SID_ANY = (0);
ALG_CLASS_SIGNATURE = (1 shl 13);
ALG_CLASS_MSG_ENCRYPT = (2 shl 13);
ALG_CLASS_DATA_ENCRYPT = (3 shl 13);
ALG_CLASS_HASH = (4 shl 13);
ALG_CLASS_KEY_EXCHANGE = (5 shl 13);
// Algorithm types
ALG_TYPE_DSS = (1 shl 9);
ALG_TYPE_RSA = (2 shl 9);
ALG_TYPE_BLOCK = (3 shl 9);
ALG_TYPE_STREAM = (4 shl 9);
ALG_TYPE_DH = (5 shl 9);
ALG_TYPE_SECURECHANNEL = (6 shl 9);
// Some RSA sub-ids =
CONST
ALG_SID_RSA_ANY = 0;
ALG_SID_RSA_PKCS = 1;
ALG_SID_RSA_MSATWORK= 2;
ALG_SID_RSA_ENTRUST = 3;
ALG_SID_RSA_PGP = 4;
ALG_SID_DSS_ANY = 0;
ALG_SID_DSS_PKCS = 1;
ALG_SID_DSS_DMS = 2;
ALG_SID_DES = 1;
ALG_SID_3DES = 3;
ALG_SID_DESX = 4;
ALG_SID_IDEA = 5;
ALG_SID_CAST = 6;
ALG_SID_SAFERSK64 = 7;
ALG_SID_SAFERSK128 = 8;
ALG_SID_3DES_112 = 9;
ALG_SID_CYLINK_MEK = 12;
ALG_SID_RC5 = 13;
ALG_SID_SKIPJACK = 10;
ALG_SID_TEK = 11;
CRYPT_MODE_CBCI = 6; // ANSI CBC Interleaved
CRYPT_MODE_CFBP = 7; // ANSI CFB Pipelined
CRYPT_MODE_OFBP = 8; // ANSI OFB Pipelined
CRYPT_MODE_CBCOFM = 9; // ANSI CBC + OF Masking
CRYPT_MODE_CBCOFMI = 10; // ANSI CBC + OFM Interleaved
ALG_SID_RC2 = 2;
ALG_SID_RC4 = 1;
ALG_SID_SEAL = 2;
ALG_SID_DH_SANDF = 1;
ALG_SID_DH_EPHEM = 2;
ALG_SID_AGREED_KEY_ANY = 3;
ALG_SID_KEA = 4;
// Hash sub ids
ALG_SID_MD2 = 1;
ALG_SID_MD4 = 2;
ALG_SID_MD5 = 3;
ALG_SID_SHA = 4;
ALG_SID_SHA1 = 4;
ALG_SID_MAC = 5;
ALG_SID_RIPEMD = 6;
ALG_SID_RIPEMD160 = 7;
ALG_SID_SSL3SHAMD5 = 8;
ALG_SID_HMAC = 9;
// secure channel sub ids
ALG_SID_SSL3_MASTER = 1;
ALG_SID_SCHANNEL_MASTER_HASH = 2;
ALG_SID_SCHANNEL_MAC_KEY = 3;
ALG_SID_PCT1_MASTER = 4;
ALG_SID_SSL2_MASTER = 5;
ALG_SID_TLS1_MASTER = 6;
ALG_SID_SCHANNEL_ENC_KEY = 7;
// Our silly example sub-id
ALG_SID_EXAMPLE = 80;
CALG_MD2 = (ALG_CLASS_HASH OR ALG_TYPE_ANY OR ALG_SID_MD2);
CALG_MD4 = (ALG_CLASS_HASH OR ALG_TYPE_ANY OR ALG_SID_MD4);
CALG_MD5 = (ALG_CLASS_HASH OR ALG_TYPE_ANY OR ALG_SID_MD5);
CALG_SHA = (ALG_CLASS_HASH OR ALG_TYPE_ANY OR ALG_SID_SHA);
CALG_SHA1 = (ALG_CLASS_HASH OR ALG_TYPE_ANY OR ALG_SID_SHA1);
CALG_MAC = (ALG_CLASS_HASH OR ALG_TYPE_ANY OR ALG_SID_MAC);
CALG_RSA_SIGN = (ALG_CLASS_SIGNATURE OR ALG_TYPE_RSA OR ALG_SID_RSA_ANY);
CALG_DSS_SIGN = (ALG_CLASS_SIGNATURE OR ALG_TYPE_DSS OR ALG_SID_DSS_ANY);
CALG_RSA_KEYX = (ALG_CLASS_KEY_EXCHANGE OR ALG_TYPE_RSA OR ALG_SID_RSA_ANY);
CALG_DES = (ALG_CLASS_DATA_ENCRYPT OR ALG_TYPE_BLOCK OR ALG_SID_DES);
CALG_3DES_112 = (ALG_CLASS_DATA_ENCRYPT OR ALG_TYPE_BLOCK OR ALG_SID_3DES_112);
CALG_3DES = (ALG_CLASS_DATA_ENCRYPT OR ALG_TYPE_BLOCK OR ALG_SID_3DES);
CALG_RC2 = (ALG_CLASS_DATA_ENCRYPT OR ALG_TYPE_BLOCK OR ALG_SID_RC2);
CALG_RC4 = (ALG_CLASS_DATA_ENCRYPT OR ALG_TYPE_STREAM OR ALG_SID_RC4);
CALG_SEAL = (ALG_CLASS_DATA_ENCRYPT OR ALG_TYPE_STREAM OR ALG_SID_SEAL);
CALG_DH_SF =(ALG_CLASS_KEY_EXCHANGE OR ALG_TYPE_DH OR ALG_SID_DH_SANDF);
CALG_DH_EPHEM = (ALG_CLASS_KEY_EXCHANGE OR ALG_TYPE_DH OR ALG_SID_DH_EPHEM);
CALG_AGREEDKEY_ANY = (ALG_CLASS_KEY_EXCHANGE OR ALG_TYPE_DH OR ALG_SID_AGREED_KEY_ANY);
CALG_KEA_KEYX = (ALG_CLASS_KEY_EXCHANGE OR ALG_TYPE_DH OR ALG_SID_KEA);
CALG_HUGHES_MD5 =(ALG_CLASS_KEY_EXCHANGE OR ALG_TYPE_ANY OR ALG_SID_MD5);
CALG_SKIPJACK = (ALG_CLASS_DATA_ENCRYPT OR ALG_TYPE_BLOCK OR ALG_SID_SKIPJACK);
CALG_TEK = (ALG_CLASS_DATA_ENCRYPT OR ALG_TYPE_BLOCK OR ALG_SID_TEK);
CALG_CYLINK_MEK =(ALG_CLASS_DATA_ENCRYPT OR ALG_TYPE_BLOCK OR ALG_SID_CYLINK_MEK);
CALG_SSL3_SHAMD5 =(ALG_CLASS_HASH OR ALG_TYPE_ANY OR ALG_SID_SSL3SHAMD5);
CALG_SSL3_MASTER =(ALG_CLASS_MSG_ENCRYPT OR ALG_TYPE_SECURECHANNEL OR ALG_SID_SSL3_MASTER);
CALG_SCHANNEL_MASTER_HASH = (ALG_CLASS_MSG_ENCRYPT OR ALG_TYPE_SECURECHANNEL OR ALG_SID_SCHANNEL_MASTER_HASH);
CALG_SCHANNEL_MAC_KEY = (ALG_CLASS_MSG_ENCRYPT OR ALG_TYPE_SECURECHANNEL OR ALG_SID_SCHANNEL_MAC_KEY);
CALG_SCHANNEL_ENC_KEY = (ALG_CLASS_MSG_ENCRYPT OR ALG_TYPE_SECURECHANNEL OR ALG_SID_SCHANNEL_ENC_KEY);
CALG_PCT1_MASTER = (ALG_CLASS_MSG_ENCRYPT OR ALG_TYPE_SECURECHANNEL OR ALG_SID_PCT1_MASTER);
CALG_SSL2_MASTER = (ALG_CLASS_MSG_ENCRYPT OR ALG_TYPE_SECURECHANNEL OR ALG_SID_SSL2_MASTER);
CALG_TLS1_MASTER = (ALG_CLASS_MSG_ENCRYPT OR ALG_TYPE_SECURECHANNEL OR ALG_SID_TLS1_MASTER);
CALG_RC5 = (ALG_CLASS_DATA_ENCRYPT OR ALG_TYPE_BLOCK OR ALG_SID_RC5);
CALG_HMAC = (ALG_CLASS_HASH OR ALG_TYPE_ANY OR ALG_SID_HMAC);
type HCRYPTPROV=LONGWORD;
type HCRYPTKEY=LONGWORD;
type HCRYPTHASH=LONGWORD;
type PHCRYPTPROV=^HCRYPTPROV;
type PHCRYPTKEY=^HCRYPTKEY;
type PHCRYPTHASH=^HCRYPTHASH;
// dwFlags definitions for CryptAcquireContext
CONST
CRYPT_VERIFYCONTEXT = $F0000000;
CRYPT_NEWKEYSET = $00000008;
CRYPT_DELETEKEYSET = $00000010;
CRYPT_MACHINE_KEYSET = $00000020;
// dwFlag definitions for CryptGenKey
CRYPT_EXPORTABLE = $00000001;
CRYPT_USER_PROTECTED = $00000002;
CRYPT_CREATE_SALT = $00000004;
CRYPT_UPDATE_KEY = $00000008;
CRYPT_NO_SALT = $00000010;
CRYPT_PREGEN = $00000040;
CRYPT_RECIPIENT = $00000010;
CRYPT_INITIATOR = $00000040;
CRYPT_ONLINE = $00000080;
CRYPT_SF = $00000100;
CRYPT_CREATE_IV = $00000200;
CRYPT_KEK = $00000400;
CRYPT_DATA_KEY = $00000800;
// dwFlags definitions for CryptDeriveKey
CRYPT_SERVER = $00000400;
KEY_LENGTH_MASK = $FFFF0000;
// dwFlag definitions for CryptExportKey
CRYPT_Y_ONLY = $00000001;
CRYPT_SSL2_SLUMMING = $00000002;
// dwFlags definitions for CryptHashSessionKey
CRYPT_LITTLE_ENDIAN = $00000001;
// dwFlag definitions for CryptSetProviderEx and CryptGetDefaultProvider
CRYPT_MACHINE_DEFAULT = $00000001;
CRYPT_USER_DEFAULT = $00000002;
CRYPT_DELETE_DEFAULT = $00000004;
// exported key blob definitions
SIMPLEBLOB = $1;
PUBLICKEYBLOB = $6;
PRIVATEKEYBLOB = $7;
PLAINTEXTKEYBLOB = $8;
AT_KEYEXCHANGE = 1;
AT_SIGNATURE = 2;
CRYPT_USERDATA = 1;
// dwParam
KP_IV = 1; // Initialization vector
KP_SALT = 2; // Salt value
KP_PADDING = 3; // Padding values
KP_MODE = 4; // Mode of the cipher
KP_MODE_BITS = 5; // Number of bits to feedback
KP_PERMISSIONS = 6; // Key permissions DWORD
KP_ALGID = 7; // Key algorithm
KP_BLOCKLEN = 8; // Block size of the cipher
KP_KEYLEN = 9; // Length of key in bits
KP_SALT_EX = 10; // Length of salt in bytes
KP_P = 11; // DSS/Diffie-Hellman P value
KP_G = 12; // DSS/Diffie-Hellman G value
KP_Q = 13; // DSS Q value
KP_X = 14; // Diffie-Hellman X value
KP_Y = 15; // Y value
KP_RA = 16; // Fortezza RA value
KP_RB = 17; // Fortezza RB value
KP_INFO = 18; // for putting information into an RSA envelope
KP_EFFECTIVE_KEYLEN = 19; // setting and getting RC2 effective key length
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -