📄 wincrypt.pas
字号:
{$EXTERNALSYM DSSPUBKEY}
KEAPUBKEY = _PUBKEY;
{$EXTERNALSYM KEAPUBKEY}
TEKPUBKEY = _PUBKEY;
{$EXTERNALSYM TEKPUBKEY}
PDSSSEED = ^DSSSEED;
{$NODEFINE PDSSSEED}
_DSSSEED = record
counter: DWORD;
seed: array [0..19] of BYTE;
end;
{$EXTERNALSYM _DSSSEED}
DSSSEED = _DSSSEED;
{$EXTERNALSYM DSSSEED}
TDssSeed = DSSSEED;
PPUBKEYVER3 = ^PUBKEYVER3;
{$NODEFINE PPUBKEYVER3}
_PUBKEYVER3 = record
magic: DWORD;
bitlenP: DWORD; // # of bits in prime modulus
bitlenQ: DWORD; // # of bits in prime q, 0 if not available
bitlenJ: DWORD; // # of bits in (p-1)/q, 0 if not available
DSSSeed: DSSSEED;
end;
{$EXTERNALSYM _PUBKEYVER3}
PUBKEYVER3 = _PUBKEYVER3;
{$EXTERNALSYM PUBKEYVER3}
DHPUBKEY_VER3 = PUBKEYVER3;
{$EXTERNALSYM DHPUBKEY_VER3}
TPubKeyVer3 = PUBKEYVER3;
PPRIVKEYVER3 = ^DHPRIVKEY_VER3;
{$NODEFINE PPRIVKEYVER3}
_PRIVKEYVER3 = record
magic: DWORD;
bitlenP: DWORD; // # of bits in prime modulus
bitlenQ: DWORD; // # of bits in prime q, 0 if not available
bitlenJ: DWORD; // # of bits in (p-1)/q, 0 if not available
bitlenX: DWORD; // # of bits in X
DSSSeed: DSSSEED;
end;
{$EXTERNALSYM _PRIVKEYVER3}
DHPRIVKEY_VER3 = _PRIVKEYVER3;
{$EXTERNALSYM DHPRIVKEY_VER3}
DSSPRIVKEY_VER3 = _PRIVKEYVER3;
{$EXTERNALSYM DSSPRIVKEY_VER3}
TDssPrivKey3 = DHPRIVKEY_VER3;
PKEY_TYPE_SUBTYPE = ^KEY_TYPE_SUBTYPE;
{$EXTERNALSYM PKEY_TYPE_SUBTYPE}
_KEY_TYPE_SUBTYPE = record
dwKeySpec: DWORD;
Type_: GUID;
Subtype: GUID;
end;
{$EXTERNALSYM _KEY_TYPE_SUBTYPE}
KEY_TYPE_SUBTYPE = _KEY_TYPE_SUBTYPE;
{$EXTERNALSYM KEY_TYPE_SUBTYPE}
TKeyTypeSubType = KEY_TYPE_SUBTYPE;
PKeyTypeSubType = PKEY_TYPE_SUBTYPE;
PCERT_FORTEZZA_DATA_PROP = ^CERT_FORTEZZA_DATA_PROP;
{$NODEFINE PCERT_FORTEZZA_DATA_PROP}
_CERT_FORTEZZA_DATA_PROP = record
SerialNumber: array [0..7] of Byte;
CertIndex: Integer;
CertLabel: array [0..35] of Byte;
end;
{$EXTERNALSYM _CERT_FORTEZZA_DATA_PROP}
CERT_FORTEZZA_DATA_PROP = _CERT_FORTEZZA_DATA_PROP;
{$EXTERNALSYM CERT_FORTEZZA_DATA_PROP}
TCertFortezzaDataProp = CERT_FORTEZZA_DATA_PROP;
PCertFortezzaDataProp = PCERT_FORTEZZA_DATA_PROP;
//+-------------------------------------------------------------------------
// CRYPTOAPI BLOB definitions
//--------------------------------------------------------------------------
type
_CRYPTOAPI_BLOB = record
cbData: DWORD;
pbData: LPBYTE;
end;
{$EXTERNALSYM _CRYPTOAPI_BLOB}
CRYPT_INTEGER_BLOB = _CRYPTOAPI_BLOB;
TCryptIntegerBlob = CRYPT_INTEGER_BLOB;
{$EXTERNALSYM CRYPT_INTEGER_BLOB}
PCRYPT_INTEGER_BLOB = ^_CRYPTOAPI_BLOB;
{$EXTERNALSYM PCRYPT_INTEGER_BLOB}
PCryptIntegerBlob = PCRYPT_INTEGER_BLOB;
CRYPT_UINT_BLOB = _CRYPTOAPI_BLOB;
{$EXTERNALSYM CRYPT_UINT_BLOB}
TCryptUintBlob = CRYPT_UINT_BLOB;
PCRYPT_UINT_BLOB = ^_CRYPTOAPI_BLOB;
{$EXTERNALSYM PCRYPT_UINT_BLOB}
PCryptUintBlob = PCRYPT_UINT_BLOB;
CRYPT_OBJID_BLOB = _CRYPTOAPI_BLOB;
{$EXTERNALSYM CRYPT_OBJID_BLOB}
TCryptObjIdBlob = CRYPT_OBJID_BLOB;
PCRYPT_OBJID_BLOB = ^_CRYPTOAPI_BLOB;
{$EXTERNALSYM PCRYPT_OBJID_BLOB}
PCryptObjIdBlob = PCRYPT_OBJID_BLOB;
CERT_NAME_BLOB = _CRYPTOAPI_BLOB;
{$EXTERNALSYM CERT_NAME_BLOB}
TCertNameBlob = CERT_NAME_BLOB;
PCERT_NAME_BLOB = ^_CRYPTOAPI_BLOB;
{$EXTERNALSYM PCERT_NAME_BLOB}
PCertNameBlob = PCERT_NAME_BLOB;
CERT_RDN_VALUE_BLOB = _CRYPTOAPI_BLOB;
{$EXTERNALSYM CERT_RDN_VALUE_BLOB}
TCertRdnValueBlob = CERT_RDN_VALUE_BLOB;
PCERT_RDN_VALUE_BLOB = ^_CRYPTOAPI_BLOB;
{$EXTERNALSYM PCERT_RDN_VALUE_BLOB}
PCertRdnValueBlob = PCERT_RDN_VALUE_BLOB;
CERT_BLOB = _CRYPTOAPI_BLOB;
{$EXTERNALSYM CERT_BLOB}
TCertBlob = CERT_BLOB;
PCERT_BLOB = ^_CRYPTOAPI_BLOB;
{$EXTERNALSYM PCERT_BLOB}
PCertBlob = PCERT_BLOB;
CRL_BLOB = _CRYPTOAPI_BLOB;
{$EXTERNALSYM CRL_BLOB}
TCrlBlob = CRL_BLOB;
PCRL_BLOB = ^_CRYPTOAPI_BLOB;
{$EXTERNALSYM PCRL_BLOB}
PCrlBlob = PCRL_BLOB;
DATA_BLOB = _CRYPTOAPI_BLOB;
{$EXTERNALSYM DATA_BLOB}
TDataBlob = DATA_BLOB;
PDATA_BLOB = ^_CRYPTOAPI_BLOB;
{$EXTERNALSYM PDATA_BLOB}
PDataBlob = PDATA_BLOB;
CRYPT_DATA_BLOB = _CRYPTOAPI_BLOB;
{$EXTERNALSYM CRYPT_DATA_BLOB}
TCryptDataBlob = CRYPT_DATA_BLOB;
PCRYPT_DATA_BLOB = ^_CRYPTOAPI_BLOB;
{$EXTERNALSYM PCRYPT_DATA_BLOB}
PCryptDataBlob = PCRYPT_DATA_BLOB;
CRYPT_HASH_BLOB = _CRYPTOAPI_BLOB;
{$EXTERNALSYM CRYPT_HASH_BLOB}
TCryptHashBlob = CRYPT_HASH_BLOB;
PCRYPT_HASH_BLOB = ^_CRYPTOAPI_BLOB;
{$EXTERNALSYM PCRYPT_HASH_BLOB}
PCryptHashBlob = PCRYPT_HASH_BLOB;
CRYPT_DIGEST_BLOB = _CRYPTOAPI_BLOB;
{$EXTERNALSYM CRYPT_DIGEST_BLOB}
TCryptDigestBlob = CRYPT_DIGEST_BLOB;
PCRYPT_DIGEST_BLOB = ^_CRYPTOAPI_BLOB;
{$EXTERNALSYM PCRYPT_DIGEST_BLOB}
PCryptDigestBlob = PCRYPT_DIGEST_BLOB;
CRYPT_DER_BLOB = _CRYPTOAPI_BLOB;
{$EXTERNALSYM CRYPT_DER_BLOB}
TCyptDerBlob = CRYPT_DER_BLOB;
PCRYPT_DER_BLOB = ^_CRYPTOAPI_BLOB;
{$EXTERNALSYM PCRYPT_DER_BLOB}
PCyptDerBlob = PCRYPT_DER_BLOB;
CRYPT_ATTR_BLOB = _CRYPTOAPI_BLOB;
{$EXTERNALSYM CRYPT_ATTR_BLOB}
TCryptAttrBlob = CRYPT_ATTR_BLOB;
PCRYPT_ATTR_BLOB = ^_CRYPTOAPI_BLOB;
{$EXTERNALSYM PCRYPT_ATTR_BLOB}
PCryptAttrBlob = PCRYPT_ATTR_BLOB;
// structure for use with CryptSetKeyParam for CMS keys
PCMS_DH_KEY_INFO = ^CMS_DH_KEY_INFO;
{$EXTERNALSYM PCMS_DH_KEY_INFO}
_CMS_DH_KEY_INFO = record
dwVersion: DWORD; // sizeof(CMS_DH_KEY_INFO)
Algid: ALG_ID; // algorithmm id for the key to be converted
pszContentEncObjId: LPSTR; // pointer to OID to hash in with Z
PubInfo: CRYPT_DATA_BLOB; // OPTIONAL - public information
pReserved: Pointer; // reserved - should be NULL
end;
{$EXTERNALSYM _CMS_DH_KEY_INFO}
CMS_DH_KEY_INFO = _CMS_DH_KEY_INFO;
{$EXTERNALSYM CMS_DH_KEY_INFO}
TCmsDhKeyInfo = CMS_DH_KEY_INFO;
PCmsDhKeyInfo = PCMS_DH_KEY_INFO;
function CryptAcquireContextA(var phProv: HCRYPTPROV; pszContainer: LPCSTR;
pszProvider: LPCSTR; dwProvType: DWORD; dwFlags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptAcquireContextA}
function CryptAcquireContextW(var phProv: HCRYPTPROV; pszContainer: LPCWSTR;
pszProvider: LPCWSTR; dwProvType: DWORD; dwFlags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptAcquireContextW}
{$IFDEF UNICODE}
function CryptAcquireContext(var phProv: HCRYPTPROV; pszContainer: LPCWSTR;
pszProvider: LPCWSTR; dwProvType: DWORD; dwFlags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptAcquireContext}
{$ELSE}
function CryptAcquireContext(var phProv: HCRYPTPROV; pszContainer: LPCSTR;
pszProvider: LPCSTR; dwProvType: DWORD; dwFlags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptAcquireContext}
{$ENDIF}
function CryptReleaseContext(hProv: HCRYPTPROV; dwFlags: ULONG_PTR): BOOL; stdcall;
{$EXTERNALSYM CryptReleaseContext}
function CryptGenKey(hProv: HCRYPTPROV; Algid: ALG_ID; dwFlags: DWORD;
var phKey: HCRYPTKEY): BOOL; stdcall;
{$EXTERNALSYM CryptGenKey}
function CryptDeriveKey(hProv: HCRYPTPROV; Algid: ALG_ID; hBaseData: HCRYPTHASH;
dwFlags: DWORD; var phKey: HCRYPTKEY): BOOL; stdcall;
{$EXTERNALSYM CryptDeriveKey}
function CryptDestroyKey(hKey: HCRYPTKEY): BOOL; stdcall;
{$EXTERNALSYM CryptDestroyKey}
function CryptSetKeyParam(hKey: HCRYPTKEY; dwParam: DWORD; pbData: LPBYTE;
dwFlags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptSetKeyParam}
function CryptGetKeyParam(hKey: HCRYPTKEY; dwParam: DWORD; pbData: LPBYTE;
var pdwDataLen: DWORD; dwFlags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptGetKeyParam}
function CryptSetHashParam(hHash: HCRYPTHASH; dwParam: DWORD; pbData: LPBYTE;
dwFlags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptSetHashParam}
function CryptGetHashParam(hHash: HCRYPTHASH; dwParam: DWORD; pbData: LPBYTE;
var pdwDataLen: DWORD; dwFlags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptGetHashParam}
function CryptSetProvParam(hProv: HCRYPTPROV; dwParam: DWORD; pbData: LPBYTE;
dwFlags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptSetProvParam}
function CryptGetProvParam(hProv: HCRYPTPROV; dwParam: DWORD; pbData: LPBYTE;
var pdwDataLen: DWORD; dwFlags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptGetProvParam}
function CryptGenRandom(hProv: HCRYPTPROV; dwLen: DWORD; pbBuffer: LPBYTE): BOOL; stdcall;
{$EXTERNALSYM CryptGenRandom}
function CryptGetUserKey(hProv: HCRYPTPROV; dwKeySpec: DWORD; var phUserKey: HCRYPTKEY): BOOL; stdcall;
{$EXTERNALSYM CryptGetUserKey}
function CryptExportKey(hKey, hExpKey: HCRYPTKEY; dwBlobType, dwFlags: DWORD;
pbData: LPBYTE; var pdwDataLen: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptExportKey}
function CryptImportKey(hProv: HCRYPTPROV; pbData: LPBYTE; dwDataLen: DWORD;
hPubKey: HCRYPTKEY; dwFlags: DWORD; var phKey: HCRYPTKEY): BOOL; stdcall;
{$EXTERNALSYM CryptImportKey}
function CryptEncrypt(hKey: HCRYPTKEY; hHash: HCRYPTHASH; Final: BOOL;
dwFlags: DWORD; pbData: LPBYTE; var pdwDataLen: DWORD; dwBufLen: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptEncrypt}
function CryptDecrypt(hKey: HCRYPTKEY; hHash: HCRYPTHASH; Final: BOOL;
dwFlags: DWORD; pbData: LPBYTE; var pdwDataLen: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptDecrypt}
function CryptCreateHash(hProv: HCRYPTPROV; Algid: ALG_ID; hKey: HCRYPTKEY;
dwFlags: DWORD; var phHash: HCRYPTHASH): BOOL; stdcall;
{$EXTERNALSYM CryptCreateHash}
function CryptHashData(hHash: HCRYPTHASH; pbData: LPBYTE; dwDataLen, dwFlags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptHashData}
function CryptHashSessionKey(hHash: HCRYPTHASH; hKey: HCRYPTKEY; dwFlags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptHashSessionKey}
function CryptDestroyHash(hHash: HCRYPTHASH): BOOL; stdcall;
{$EXTERNALSYM CryptDestroyHash}
function CryptSignHashA(hHash: HCRYPTHASH; dwKeySpec: DWORD; sDescription: LPCSTR;
dwFlags: DWORD; pbSignature: LPBYTE; var pdwSigLen: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptSignHashA}
function CryptSignHashW(hHash: HCRYPTHASH; dwKeySpec: DWORD; sDescription: LPCWSTR;
dwFlags: DWORD; pbSignature: LPBYTE; var pdwSigLen: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptSignHashW}
{$IFDEF UNICODE}
function CryptSignHash(hHash: HCRYPTHASH; dwKeySpec: DWORD; sDescription: LPCWSTR;
dwFlags: DWORD; pbSignature: LPBYTE; var pdwSigLen: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptSignHash}
{$ELSE}
function CryptSignHash(hHash: HCRYPTHASH; dwKeySpec: DWORD; sDescription: LPCSTR;
dwFlags: DWORD; pbSignature: LPBYTE; var pdwSigLen: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptSignHash}
{$ENDIF}
function CryptVerifySignatureA(hHash: HCRYPTHASH; pbSignature: LPBYTE;
dwSigLen: DWORD; hPubKey: HCRYPTKEY; sDescription: LPCSTR; dwFlags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptVerifySignatureA}
function CryptVerifySignatureW(hHash: HCRYPTHASH; pbSignature: LPBYTE;
dwSigLen: DWORD; hPubKey: HCRYPTKEY; sDescription: LPCWSTR; dwFlags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptVerifySignatureW}
{$IFDEF UNICODE}
function CryptVerifySignature(hHash: HCRYPTHASH; pbSignature: LPBYTE;
dwSigLen: DWORD; hPubKey: HCRYPTKEY; sDescription: LPCWSTR; dwFlags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptVerifySignature}
{$ELSE}
function CryptVerifySignature(hHash: HCRYPTHASH; pbSignature: LPBYTE;
dwSigLen: DWORD; hPubKey: HCRYPTKEY; sDescription: LPCSTR; dwFlags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptVerifySignature}
{$ENDIF}
function CryptSetProviderA(pszProvName: LPCSTR; dwProvType: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptSetProviderA}
function CryptSetProviderW(pszProvName: LPCWSTR; dwProvType: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptSetProviderW}
{$IFDEF UNICODE}
function CryptSetProvider(pszProvName: LPCWSTR; dwProvType: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptSetProvider}
{$ELSE}
function CryptSetProvider(pszProvName: LPCSTR; dwProvType: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptSetProvider}
{$ENDIF}
function CryptSetProviderExA(pszProvName: LPCSTR; dwProvType: DWORD;
pdwReserved: LPDWORD; dwFlags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptSetProviderExA}
function CryptSetProviderExW(pszProvName: LPCWSTR; dwProvType: DWORD;
pdwReserved: LPDWORD; dwFlags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptSetProviderExW}
{$IFDEF UNICODE}
function CryptSetProviderEx(pszProvName: LPCWSTR; dwProvType: DWORD;
pdwReserved: LPDWORD; dwFlags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptSetProviderEx}
{$ELSE}
function CryptSetProviderEx(pszProvName: LPCSTR; dwProvType: DWORD;
pdwReserved: LPDWORD; dwFlags: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptSetProviderEx}
{$ENDIF}
function CryptGetDefaultProviderA(dwProvType: DWORD; pdwReserved: LPDWORD;
dwFlags: DWORD; pszProvName: LPSTR; var pcbProvName: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptGetDefaultProviderA}
function CryptGetDefaultProviderW(dwProvType: DWORD; pdwReserved: LPDWORD;
dwFlags: DWORD; pszProvName: LPWSTR; var pcbProvName: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptGetDefaultProviderW}
{$IFDEF UNICODE}
function CryptGetDefaultProvider(dwProvType: DWORD; pdwReserved: LPDWORD;
dwFlags: DWORD; pszProvName: LPWSTR; var pcbProvName: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptGetDefaultProvider}
{$ELSE}
function CryptGetDefaultProvider(dwProvType: DWORD; pdwReserved: LPDWORD;
dwFlags: DWORD; pszProvName: LPSTR; var pcbProvName: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptGetDefaultProvider}
{$ENDIF}
function CryptEnumProviderTypesA(dwIndex: DWORD; pdwReserved: LPDWORD;
dwFlags: DWORD; var pdwProvType: DWORD; pszTypeName: LPSTR;
var pcbTypeName: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptEnumProviderTypesA}
function CryptEnumProviderTypesW(dwIndex: DWORD; pdwReserved: LPDWORD;
dwFlags: DWORD; var pdwProvType: DWORD; pszTypeName: LPWSTR;
var pcbTypeName: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptEnumProviderTypesW}
{$IFDEF UNICODE}
function CryptEnumProviderTypes(dwIndex: DWORD; pdwReserved: LPDWORD;
dwFlags: DWORD; var pdwProvType: DWORD; pszTypeName: LPWSTR;
var pcbTypeName: DWORD): BOOL; stdcall;
{$EXTERNALSYM CryptEnumProviderTypes}
{$ELSE}
function CryptEnumProviderTypes(dwIndex: DWORD; pdwReserved: LPDWORD;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -