📄 wincrypt.h
字号:
DWORD cbSize; CERT_USAGE_MATCH RequestedUsage;#if CERT_CHAIN_PARA_HAS_EXTRA_FIELDS CERT_USAGE_MATCH RequestedIssuancePolicy; DWORD dwUrlRetrievalTimeout; BOOL fCheckRevocationFreshnessTime; DWORD dwRevocationFreshnessTime;#endif} CERT_CHAIN_PARA, *PCERT_CHAIN_PARA;typedef BOOL (WINAPI *PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK)(PCCERT_CONTEXT,void*);typedef struct _CERT_CHAIN_FIND_BY_ISSUER_PARA { DWORD cbSize; LPCSTR pszUsageIdentifier; DWORD dwKeySpec; DWORD dwAcquirePrivateKeyFlags; DWORD cIssuer; CERT_NAME_BLOB* rgIssuer; PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK pfnFIndCallback; void* pvFindArg; DWORD* pdwIssuerChainIndex; DWORD* pdwIssuerElementIndex;} CERT_CHAIN_FIND_BY_ISSUER_PARA, *PCERT_CHAIN_FIND_BY_ISSUER_PARA;/* #endif */typedef struct _CERT_TRUST_STATUS { DWORD dwErrorStatus; DWORD dwInfoStatus;} CERT_TRUST_STATUS, *PCERT_TRUST_STATUS;typedef struct _CRL_ENTRY { CRYPT_INTEGER_BLOB SerialNumber; FILETIME RevocationDate; DWORD cExtension; PCERT_EXTENSION rgExtension;} CRL_ENTRY, *PCRL_ENTRY;typedef struct _CRL_INFO { DWORD dwVersion; CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm; CERT_NAME_BLOB Issuer; FILETIME ThisUpdate; FILETIME NextUpdate; DWORD cCRLEntry; PCRL_ENTRY rgCRLEntry; DWORD cExtension; PCERT_EXTENSION rgExtension;} CRL_INFO, *PCRL_INFO;typedef struct _CRL_CONTEXT { DWORD dwCertEncodingType; BYTE* pbCrlEncoded; DWORD cbCrlEncoded; PCRL_INFO pCrlInfo; HCERTSTORE hCertStore;} CRL_CONTEXT, *PCRL_CONTEXT;typedef const CRL_CONTEXT *PCCRL_CONTEXT;typedef struct _CERT_REVOCATION_CRL_INFO { DWORD cbSize; PCCRL_CONTEXT pBaseCRLContext; PCCRL_CONTEXT pDeltaCRLContext; PCRL_ENTRY pCrlEntry; BOOL fDeltaCrlEntry;} CERT_REVOCATION_CRL_INFO, *PCERT_REVOCATION_CRL_INFO;typedef struct _CERT_REVOCATION_INFO { DWORD cbSize; DWORD dwRevocationResult; LPCSTR pszRevocationOid; LPVOID pvOidSpecificInfo; BOOL fHasFreshnessTime; DWORD dwFreshnessTime; PCERT_REVOCATION_CRL_INFO pCrlInfo;} CERT_REVOCATION_INFO, *PCERT_REVOCATION_INFO;/* #if (_WIN32_WINNT>=0x500) */typedef struct _CERT_CHAIN_ELEMENT { DWORD cbSize; PCCERT_CONTEXT pCertContext; CERT_TRUST_STATUS TrustStatus; PCERT_REVOCATION_INFO pRevocationInfo; PCERT_ENHKEY_USAGE pIssuanceUsage; PCERT_ENHKEY_USAGE pApplicationUsage;} CERT_CHAIN_ELEMENT, *PCERT_CHAIN_ELEMENT;/* #endif */typedef struct _CRYPT_ATTRIBUTE { LPSTR pszObjId; DWORD cValue; PCRYPT_ATTR_BLOB rgValue;} CRYPT_ATTRIBUTE, *PCRYPT_ATTRIBUTE;typedef struct _CTL_ENTRY { CRYPT_DATA_BLOB SubjectIdentifier; DWORD cAttribute; PCRYPT_ATTRIBUTE rgAttribute;} CTL_ENTRY, *PCTL_ENTRY;typedef struct _CTL_INFO { DWORD dwVersion; CTL_USAGE SubjectUsage; CRYPT_DATA_BLOB ListIdentifier; CRYPT_INTEGER_BLOB SequenceNumber; FILETIME ThisUpdate; FILETIME NextUpdate; CRYPT_ALGORITHM_IDENTIFIER SubjectAlgorithm; DWORD cCTLEntry; PCTL_ENTRY rgCTLEntry; DWORD cExtension; PCERT_EXTENSION rgExtension;} CTL_INFO, *PCTL_INFO;typedef struct _CTL_CONTEXT { DWORD dwMsgAndCertEncodingType; BYTE* pbCtlEncoded; DWORD cbCtlEncoded; PCTL_INFO pCtlInfo; HCERTSTORE hCertStore; HCRYPTMSG hCryptMsg; BYTE* pbCtlContent; DWORD cbCtlContent;} CTL_CONTEXT, *PCTL_CONTEXT;typedef const CTL_CONTEXT *PCCTL_CONTEXT;typedef struct _CERT_TRUST_LIST_INFO { DWORD cbSize; PCTL_ENTRY pCtlEntry; PCCTL_CONTEXT pCtlContext;} CERT_TRUST_LIST_INFO, *PCERT_TRUST_LIST_INFO;typedef struct _CERT_SIMPLE_CHAIN { DWORD cbSize; CERT_TRUST_STATUS TrustStatus; DWORD cElement; PCERT_CHAIN_ELEMENT* rgpElement; PCERT_TRUST_LIST_INFO pTrustListInfo; BOOL fHasRevocationFreshnessTime; DWORD dwRevocationFreshnessTime;} CERT_SIMPLE_CHAIN, *PCERT_SIMPLE_CHAIN;/* #if (_WIN32_WINNT>=0x500) */typedef const struct _CERT_CHAIN_CONTEXT* PCCERT_CHAIN_CONTEXT;typedef struct _CERT_CHAIN_CONTEXT { DWORD cbSize; CERT_TRUST_STATUS TrustStatus; DWORD cChain; PCERT_SIMPLE_CHAIN* rgpChain; DWORD cLowerQualityChainContext; PCCERT_CHAIN_CONTEXT* rgpLowerQualityChainContext; BOOL fHasRevocationFreshnessTime; DWORD dwRevocationFreshnessTime;} CERT_CHAIN_CONTEXT, *PCERT_CHAIN_CONTEXT;/* #endif */typedef struct _PROV_ENUMALGS { ALG_ID aiAlgid; DWORD dwBitLen; DWORD dwNameLen; CHAR szName[20];} PROV_ENUMALGS;typedef struct _PUBLICKEYSTRUC { BYTE bType; BYTE bVersion; WORD reserved; ALG_ID aiKeyAlg;} BLOBHEADER, PUBLICKEYSTRUC;typedef struct _RSAPUBKEY { DWORD magic; DWORD bitlen; DWORD pubexp;} RSAPUBKEY;typedef struct _HMAC_Info{ ALG_ID HashAlgid; BYTE* pbInnerString; DWORD cbInnerString; BYTE* pbOuterString; DWORD cbOuterString;} HMAC_INFO, *PHMAC_INFO;#if (WINVER >= 0x0501) /* Windows Server 2003, Windows XP */typedef struct _CMC_ADD_ATTRIBUTES_INFO { DWORD dwCmcDataReference; DWORD cCertReference; DWORD* rgdwCertReference; DWORD cAttribute; PCRYPT_ATTRIBUTE rgAttribute;} CMC_ADD_ATTRIBUTES_INFO, *PCMC_ADD_ATTRIBUTES_INFO;typedef struct _CMC_ADD_EXTENSIONS_INFO { DWORD dwCmcDataReference; DWORD cCertReference; DWORD* rgdwCertReference; DWORD cExtension; PCERT_EXTENSION rgExtension;} CMC_ADD_EXTENSIONS_INFO, *PCMC_ADD_EXTENSIONS_INFO;#endif /* (WINVER >= 0x0501) */ /* Windows Server 2003, Windows XP */#if (WINVER >= 0x0410) /* Windows 98 *//* need PCERT_OTHER_NAME & CERT_DATA_BLOB!typedef struct _CERT_ALT_NAME_ENTRY { DWORD dwAltNameChoice; union { PCERT_OTHER_NAME pOtherName; LPWSTR pwszRfc822Name; LPWSTR pwszDNSName; CERT_DATA_BLOB x400Address; CERT_NAME_BLOB DirectoryName; LPWSTR pEdiPartyName; LPWSTR pwszURL; CRYPT_DATA_BLOB IPAddress; LPSTR pszRegisteredID; };} CERT_ALT_NAME_ENTRY, *PCERT_ALT_NAME_ENTRY;*//* needs CERT_ALT_NAME_ENTRY above, which lacks prereqstypedef struct _CERT_ALT_NAME_INFO { DWORD cAltEntry; PCERT_ALT_NAME_ENTRY rgAltEntry;} CERT_ALT_NAME_INFO, *PCERT_ALT_NAME_INFO; */typedef struct _CERT_NAME_VALUE { DWORD dwValueType; CERT_RDN_VALUE_BLOB Value;} CERT_NAME_VALUE, *PCERT_NAME_VALUE;typedef struct _CERT_POLICY_QUALIFIER_INFO { LPSTR pszPolicyQualifierId; CRYPT_OBJID_BLOB Qualifier;} CERT_POLICY_QUALIFIER_INFO, *PCERT_POLICY_QUALIFIER_INFO;typedef struct _CERT_POLICY_CONSTRAINTS_INFO { BOOL fRequireExplicitPolicy; DWORD dwRequireExplicitPolicySkipCerts; BOOL fInhibitPolicyMapping; DWORD dwInhibitPolicyMappingSkipCerts;} CERT_POLICY_CONSTRAINTS_INFO, *PCERT_POLICY_CONSTRAINTS_INFO;#endif /* (WINVER >= 0x0410) */ /* Windows 98 */#if (WINVER >= 0x0501) /* Windows Server 2003, Windows XP */typedef struct _CERT_POLICY_MAPPING { LPSTR pszIssuerDomainPolicy; LPSTR pszSubjectDomainPolicy;} CERT_POLICY_MAPPING, *PCERT_POLICY_MAPPING;typedef struct _CERT_POLICY_MAPPINGS_INFO { DWORD cPolicyMapping; PCERT_POLICY_MAPPING rgPolicyMapping;} CERT_POLICY_MAPPINGS_INFO, *PCERT_POLICY_MAPPINGS_INFO;#endif /* (WINVER >= 0x0501) */ /* Windows Server 2003, Windows XP */BOOL WINAPI CertCloseStore(HCERTSTORE,DWORD);BOOL WINAPI CertGetCertificateChain(HCERTCHAINENGINE,PCCERT_CONTEXT,LPFILETIME,HCERTSTORE,PCERT_CHAIN_PARA,DWORD,LPVOID,PCCERT_CHAIN_CONTEXT*);BOOL WINAPI CertVerifyCertificateChainPolicy(LPCSTR,PCCERT_CHAIN_CONTEXT,PCERT_CHAIN_POLICY_PARA,PCERT_CHAIN_POLICY_STATUS);void WINAPI CertFreeCertificateChain(PCCERT_CHAIN_CONTEXT);DWORD WINAPI CertNameToStrA(DWORD,PCERT_NAME_BLOB,DWORD,LPSTR,DWORD);DWORD WINAPI CertNameToStrW(DWORD,PCERT_NAME_BLOB,DWORD,LPWSTR,DWORD);HCERTSTORE WINAPI CertOpenSystemStoreA(HCRYPTPROV,LPCSTR);HCERTSTORE WINAPI CertOpenSystemStoreW(HCRYPTPROV,LPCWSTR);HCERTSTORE WINAPI CertOpenStore(LPCSTR,DWORD,HCRYPTPROV,DWORD,const void*);PCCERT_CONTEXT WINAPI CertFindCertificateInStore(HCERTSTORE,DWORD,DWORD,DWORD,const void*,PCCERT_CONTEXT);BOOL WINAPI CertFreeCertificateContext(PCCERT_CONTEXT);PCCERT_CONTEXT WINAPI CertGetIssuerCertificateFromStore(HCERTSTORE,PCCERT_CONTEXT,PCCERT_CONTEXT,DWORD*);PCCERT_CHAIN_CONTEXT WINAPI CertFindChainInStore(HCERTSTORE,DWORD,DWORD,DWORD,const void*,PCCERT_CHAIN_CONTEXT);HCERTSTORE WINAPI CertDuplicateStore(HCERTSTORE);PCCERT_CONTEXT WINAPI CertEnumCertificatesInStore(HCERTSTORE,PCCERT_CONTEXT);PCCERT_CONTEXT WINAPI CertDuplicateCertificateContext(PCCERT_CONTEXT);DWORD WINAPI CertGetNameStringA(PCCERT_CONTEXT,DWORD,DWORD,void*,LPSTR,DWORD);DWORD WINAPI CertGetNameStringW(PCCERT_CONTEXT,DWORD,DWORD,void*,LPWSTR,DWORD);BOOL WINAPI PFXIsPFXBlob(CRYPT_DATA_BLOB*);PCERT_EXTENSION WINAPI CertFindExtension(LPCSTR,DWORD,CERT_EXTENSION*);BOOL WINAPI CryptDecodeObject(DWORD,LPCSTR,const BYTE*,DWORD,DWORD,void*,DWORD*);BOOL WINAPI CryptDecodeObjectEx(DWORD,LPCSTR,const BYTE*,DWORD,DWORD,PCRYPT_DECODE_PARA,void*,DWORD*);BOOL WINAPI CryptEncodeObject(DWORD dwCertEncodingType,LPCSTR,const void*,BYTE*,DWORD*);BOOL WINAPI CryptEncodeObjectEx(DWORD,LPCSTR,const void*,DWORD,PCRYPT_ENCODE_PARA,void*,DWORD*);BOOL WINAPI CertAddCertificateContextToStore(HCERTSTORE,PCCERT_CONTEXT,DWORD,PCCERT_CONTEXT*);BOOL WINAPI CertCompareCertificate(DWORD,PCERT_INFO,PCERT_INFO);BOOL WINAPI PFXVerifyPassword(CRYPT_DATA_BLOB*,LPCWSTR,DWORD);HCERTSTORE WINAPI PFXImportCertStore(CRYPT_DATA_BLOB*,LPCWSTR,DWORD);BOOL WINAPI CertDeleteCertificateFromStore(PCCERT_CONTEXT);WINADVAPI BOOL WINAPI CryptAcquireContextA(HCRYPTPROV*,LPCSTR,LPCSTR,DWORD,DWORD);WINADVAPI BOOL WINAPI CryptAcquireContextW(HCRYPTPROV*,LPCWSTR,LPCWSTR,DWORD,DWORD);WINADVAPI BOOL WINAPI CryptContextAddRef(HCRYPTPROV,DWORD*,DWORD);WINADVAPI BOOL WINAPI CryptReleaseContext(HCRYPTPROV,DWORD);WINADVAPI BOOL WINAPI CryptGenKey(HCRYPTPROV,ALG_ID,DWORD,HCRYPTKEY*);WINADVAPI BOOL WINAPI CryptDeriveKey(HCRYPTPROV,ALG_ID,HCRYPTHASH,DWORD,HCRYPTKEY*);WINADVAPI BOOL WINAPI CryptDestroyKey(HCRYPTKEY);#if (WINVER >= 0x0500)WINADVAPI BOOL WINAPI CryptDuplicateHash(HCRYPTHASH,DWORD*,DWORD,HCRYPTHASH*);WINADVAPI BOOL WINAPI CryptDuplicateKey(HCRYPTKEY,DWORD*,DWORD,HCRYPTKEY*);#endifWINADVAPI BOOL WINAPI CryptSetKeyParam(HCRYPTKEY,DWORD,PBYTE,DWORD);WINADVAPI BOOL WINAPI CryptGetKeyParam(HCRYPTKEY,DWORD,PBYTE,PDWORD,DWORD);WINADVAPI BOOL WINAPI CryptSetHashParam(HCRYPTHASH,DWORD,PBYTE,DWORD);WINADVAPI BOOL WINAPI CryptGetHashParam(HCRYPTHASH,DWORD,PBYTE,PDWORD,DWORD);WINADVAPI BOOL WINAPI CryptSetProvParam(HCRYPTPROV,DWORD,PBYTE,DWORD);WINADVAPI BOOL WINAPI CryptGetProvParam(HCRYPTPROV,DWORD,PBYTE,PDWORD,DWORD);WINADVAPI BOOL WINAPI CryptGenRandom(HCRYPTPROV,DWORD,PBYTE);WINADVAPI BOOL WINAPI CryptGetUserKey(HCRYPTPROV,DWORD,HCRYPTKEY*);WINADVAPI BOOL WINAPI CryptExportKey(HCRYPTKEY,HCRYPTKEY,DWORD,DWORD,PBYTE,PDWORD);WINADVAPI BOOL WINAPI CryptImportKey(HCRYPTPROV,PBYTE,DWORD,HCRYPTKEY,DWORD,HCRYPTKEY*);WINADVAPI BOOL WINAPI CryptEncrypt(HCRYPTKEY,HCRYPTHASH,BOOL,DWORD,PBYTE,PDWORD,DWORD);WINADVAPI BOOL WINAPI CryptDecrypt(HCRYPTKEY,HCRYPTHASH,BOOL,DWORD,PBYTE,PDWORD);WINADVAPI BOOL WINAPI CryptCreateHash(HCRYPTPROV,ALG_ID,HCRYPTKEY,DWORD,HCRYPTHASH*);WINADVAPI BOOL WINAPI CryptHashData(HCRYPTHASH,PBYTE,DWORD,DWORD);WINADVAPI BOOL WINAPI CryptHashSessionKey(HCRYPTHASH,HCRYPTKEY,DWORD);WINADVAPI BOOL WINAPI CryptGetHashValue(HCRYPTHASH,DWORD,PBYTE,PDWORD);WINADVAPI BOOL WINAPI CryptDestroyHash(HCRYPTHASH);WINADVAPI BOOL WINAPI CryptSignHashA(HCRYPTHASH,DWORD,LPCSTR,DWORD,PBYTE,PDWORD);WINADVAPI BOOL WINAPI CryptSignHashW(HCRYPTHASH,DWORD,LPCWSTR,DWORD,PBYTE,PDWORD);WINADVAPI BOOL WINAPI CryptVerifySignatureA(HCRYPTHASH,PBYTE,DWORD,HCRYPTKEY,LPCSTR,DWORD);WINADVAPI BOOL WINAPI CryptVerifySignatureW(HCRYPTHASH,PBYTE,DWORD,HCRYPTKEY,LPCWSTR,DWORD);WINADVAPI BOOL WINAPI CryptSetProviderA(LPCSTR,DWORD);WINADVAPI BOOL WINAPI CryptSetProviderW(LPCWSTR,DWORD);#ifdef UNICODE#define CertGetNameString CertGetNameStringW#else#define CertGetNameString CertGetNameStringA#endif#ifdef UNICODE#define CertNameToStr CertNameToStrW#define CryptAcquireContext CryptAcquireContextW#define CryptSignHash CryptSignHashW#define CryptVerifySignature CryptVerifySignatureW#define CryptSetProvider CryptSetProviderW#define CertOpenSystemStore CertOpenSystemStoreW#define CERT_FIND_SUBJECT_STR CERT_FIND_SUBJECT_STR_W#define CERT_FIND_ISSUER_STR CERT_FIND_ISSUER_STR_W#define MS_DEF_PROV MS_DEF_PROV_W#define MS_ENHANCED_PROV MS_ENHANCED_PROV_W#define MS_STRONG_PROV MS_STRONG_PROV_W#define MS_DEF_RSA_SIG_PROV MS_DEF_RSA_SIG_PROV_W#define MS_DEF_RSA_SCHANNEL_PROV MS_DEF_RSA_SCHANNEL_PROV_W#define MS_DEF_DSS_PROV MS_DEF_DSS_PROV_W#define MS_DEF_DSS_DH_PROV MS_DEF_DSS_DH_PROV_W#define MS_ENH_DSS_DH_PROV MS_ENH_DSS_DH_PROV_W#define MS_DEF_DH_SCHANNEL_PROV MS_DEF_DH_SCHANNEL_PROV_W#define MS_SCARD_PROV MS_SCARD_PROV_W#if (_WIN32_WINNT >= 0x0501)#define MS_ENH_RSA_AES_PROV MS_ENH_RSA_AES_PROV_W#endif#else#define CertNameToStr CertNameToStrA#define CryptAcquireContext CryptAcquireContextA#define CryptSignHash CryptSignHashA#define CryptVerifySignature CryptVerifySignatureA#define CryptSetProvider CryptSetProviderA#define CertOpenSystemStore CertOpenSystemStoreA#define CERT_FIND_SUBJECT_STR CERT_FIND_SUBJECT_STR_A#define CERT_FIND_ISSUER_STR CERT_FIND_ISSUER_STR_A#define MS_DEF_PROV MS_DEF_PROV_A#define MS_ENHANCED_PROV MS_ENHANCED_PROV_A#define MS_STRONG_PROV MS_STRONG_PROV_A#define MS_DEF_RSA_SIG_PROV MS_DEF_RSA_SIG_PROV_A#define MS_DEF_RSA_SCHANNEL_PROV MS_DEF_RSA_SCHANNEL_PROV_A#define MS_DEF_DSS_PROV MS_DEF_DSS_PROV_A#define MS_DEF_DSS_DH_PROV MS_DEF_DSS_DH_PROV_A#define MS_ENH_DSS_DH_PROV MS_ENH_DSS_DH_PROV_A#define MS_DEF_DH_SCHANNEL_PROV MS_DEF_DH_SCHANNEL_PROV_A#define MS_SCARD_PROV MS_SCARD_PROV_A#if (_WIN32_WINNT >= 0x0501)#define MS_ENH_RSA_AES_PROV MS_ENH_RSA_AES_PROV_A#endif#endif/* from http://msdn2.microsoft.com/en-us/library/Aa380263.aspx: */typedef struct _CRYPTPROTECT_PROMPTSTRUCT { DWORD cbSize; DWORD dwPromptFlags; HWND hwndApp; LPCWSTR szPrompt;} CRYPTPROTECT_PROMPTSTRUCT, *PCRYPTPROTECT_PROMPTSTRUCT;/* from http://msdn2.microsoft.com/en-us/library/aa380261.aspx */BOOL WINAPI CryptProtectData (DATA_BLOB*, LPCWSTR, DATA_BLOB*, PVOID, CRYPTPROTECT_PROMPTSTRUCT*, DWORD, DATA_BLOB*);/* http://msdn2.microsoft.com/en-us/library/aa380882.aspx */BOOL WINAPI CryptUnprotectData (DATA_BLOB*, LPWSTR*, DATA_BLOB*, PVOID, CRYPTPROTECT_PROMPTSTRUCT*, DWORD, DATA_BLOB*);/* from http://msdn2.microsoft.com/en-us/library/aa302402.aspx: */#define CRYPTPROTECT_UI_FORBIDDEN 0x1#define CRYPTPROTECT_LOCAL_MACHINE 0x4#ifdef __cplusplus}#endif#endif /* _WINCRYPT_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -