wincrypt.h

来自「北京大学ACM在线评测系统 OnlineJudge」· C头文件 代码 · 共 729 行 · 第 1/2 页

H
729
字号
#define SCHANNEL_MAC_KEY    0x00000000#define SCHANNEL_ENC_KEY    0x00000001#define INTERNATIONAL_USAGE 0x00000001typedef UINT ALG_ID;typedef struct _VTableProvStruc {FARPROC FuncVerifyImage;} VTableProvStruc,*PVTableProvStruc;typedef ULONG HCRYPTPROV;typedef ULONG HCRYPTKEY;typedef ULONG HCRYPTHASH;typedef PVOID HCERTSTORE;typedef PVOID HCRYPTMSG;typedef PVOID HCERTCHAINENGINE;typedef struct _CRYPTOAPI_BLOB {	DWORD cbData;	BYTE* pbData;} CRYPT_INTEGER_BLOB, *PCRYPT_INTEGER_BLOB,  CRYPT_UINT_BLOB,    *PCRYPT_UINT_BLOB,  CRYPT_OBJID_BLOB,   *PCRYPT_OBJID_BLOB,  CERT_NAME_BLOB,     *PCERT_NAME_BLOB,  CERT_RDN_VALUE_BLOB,*PCERT_RDN_VALUE_BLOB,  CERT_BLOB,          *PCERT_BLOB,  CRL_BLOB,           *PCRL_BLOB,  DATA_BLOB,          *PDATA_BLOB,  CRYPT_DATA_BLOB,    *PCRYPT_DATA_BLOB,  CRYPT_HASH_BLOB,    *PCRYPT_HASH_BLOB,  CRYPT_DIGEST_BLOB,  *PCRYPT_DIGEST_BLOB,  CRYPT_DER_BLOB,     *PCRYPT_DER_BLOB,  CRYPT_ATTR_BLOB,    *PCRYPT_ATTR_BLOB;/* not described in SDK; has the same layout as HTTPSPolicyCallbackData */typedef struct _SSL_EXTRA_CERT_CHAIN_POLICY_PARA {	DWORD cbStruct;	DWORD dwAuthType;	DWORD fdwChecks;	LPWSTR pwszServerName;} SSL_EXTRA_CERT_CHAIN_POLICY_PARA, *PSSL_EXTRA_CERT_CHAIN_POLICY_PARA,  HTTPSPolicyCallbackData, *PHTTPSPolicyCallbackData;/* #if (_WIN32_WINNT>=0x500) */typedef struct _CERT_CHAIN_POLICY_PARA {	DWORD cbSize;	DWORD dwFlags;	void* pvExtraPolicyPara;} CERT_CHAIN_POLICY_PARA, *PCERT_CHAIN_POLICY_PARA;typedef struct _CERT_CHAIN_POLICY_STATUS {	DWORD cbSize;	DWORD dwError;	LONG lChainIndex;	LONG lElementIndex;	void* pvExtraPolicyStatus;} CERT_CHAIN_POLICY_STATUS, *PCERT_CHAIN_POLICY_STATUS;/* #endif */typedef struct _CRYPT_ALGORITHM_IDENTIFIER {	LPSTR pszObjId;	CRYPT_OBJID_BLOB Parameters;} CRYPT_ALGORITHM_IDENTIFIER, *PCRYPT_ALGORITHM_IDENTIFIER;typedef struct _CRYPT_BIT_BLOB {	DWORD cbData;	BYTE* pbData;	DWORD cUnusedBits;} CRYPT_BIT_BLOB, *PCRYPT_BIT_BLOB;typedef struct _CERT_PUBLIC_KEY_INFO {	CRYPT_ALGORITHM_IDENTIFIER Algorithm;	CRYPT_BIT_BLOB PublicKey;} CERT_PUBLIC_KEY_INFO, *PCERT_PUBLIC_KEY_INFO;typedef struct _CERT_EXTENSION {	LPSTR pszObjId;	BOOL fCritical;	CRYPT_OBJID_BLOB Value;} CERT_EXTENSION, *PCERT_EXTENSION;typedef struct _CERT_INFO {	DWORD dwVersion;	CRYPT_INTEGER_BLOB SerialNumber;	CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm;	CERT_NAME_BLOB Issuer;	FILETIME NotBefore;	FILETIME NotAfter;	CERT_NAME_BLOB Subject;	CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo;	CRYPT_BIT_BLOB IssuerUniqueId;	CRYPT_BIT_BLOB SubjectUniqueId;	DWORD cExtension;	PCERT_EXTENSION rgExtension;} CERT_INFO, *PCERT_INFO;typedef struct _CERT_CONTEXT {	DWORD dwCertEncodingType;	BYTE* pbCertEncoded;	DWORD cbCertEncoded;	PCERT_INFO pCertInfo;	HCERTSTORE hCertStore;} CERT_CONTEXT, *PCERT_CONTEXT;typedef const CERT_CONTEXT *PCCERT_CONTEXT;typedef struct _CTL_USAGE {	DWORD cUsageIdentifier;	LPSTR *rgpszUsageIdentifier;} CTL_USAGE, *PCTRL_USAGE,  CERT_ENHKEY_USAGE, *PCERT_ENHKEY_USAGE;typedef struct _CERT_USAGE_MATCH {	DWORD dwType;	CERT_ENHKEY_USAGE Usage;} CERT_USAGE_MATCH, *PCERT_USAGE_MATCH;/* #if (_WIN32_WINNT>=0x500) */typedef struct _CERT_CHAIN_PARA {	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;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);BOOL WINAPI CryptAcquireContextA(HCRYPTPROV*,LPCSTR,LPCSTR,DWORD,DWORD);BOOL WINAPI CryptAcquireContextW(HCRYPTPROV*,LPCWSTR,LPCWSTR,DWORD,DWORD);BOOL WINAPI CryptContextAddRef(HCRYPTPROV,DWORD*,DWORD);BOOL WINAPI CryptReleaseContext(HCRYPTPROV,DWORD);BOOL WINAPI CryptGenKey(HCRYPTPROV,ALG_ID,DWORD,HCRYPTKEY*);BOOL WINAPI CryptDeriveKey(HCRYPTPROV,ALG_ID,HCRYPTHASH,DWORD,HCRYPTKEY*);BOOL WINAPI CryptDestroyKey(HCRYPTKEY);#if (WINVER >= 0x0500)BOOL WINAPI CryptDuplicateHash(HCRYPTHASH,DWORD*,DWORD,HCRYPTHASH*);BOOL WINAPI CryptDuplicateKey(HCRYPTKEY,DWORD*,DWORD,HCRYPTKEY*);#endifBOOL WINAPI CryptSetKeyParam(HCRYPTKEY,DWORD,PBYTE,DWORD);BOOL WINAPI CryptGetKeyParam(HCRYPTKEY,DWORD,PBYTE,PDWORD,DWORD);BOOL WINAPI CryptSetHashParam(HCRYPTHASH,DWORD,PBYTE,DWORD);BOOL WINAPI CryptGetHashParam(HCRYPTHASH,DWORD,PBYTE,PDWORD,DWORD);BOOL WINAPI CryptSetProvParam(HCRYPTPROV,DWORD,PBYTE,DWORD);BOOL WINAPI CryptGetProvParam(HCRYPTPROV,DWORD,PBYTE,PDWORD,DWORD);BOOL WINAPI CryptGenRandom(HCRYPTPROV,DWORD,PBYTE);BOOL WINAPI CryptGetUserKey(HCRYPTPROV,DWORD,HCRYPTKEY*);BOOL WINAPI CryptExportKey(HCRYPTKEY,HCRYPTKEY,DWORD,DWORD,PBYTE,PDWORD);BOOL WINAPI CryptImportKey(HCRYPTPROV,PBYTE,DWORD,HCRYPTKEY,DWORD,HCRYPTKEY*);BOOL WINAPI CryptEncrypt(HCRYPTKEY,HCRYPTHASH,BOOL,DWORD,PBYTE,PDWORD,DWORD);BOOL WINAPI CryptDecrypt(HCRYPTKEY,HCRYPTHASH,BOOL,DWORD,PBYTE,PDWORD);BOOL WINAPI CryptCreateHash(HCRYPTPROV,ALG_ID,HCRYPTKEY,DWORD,HCRYPTHASH*);BOOL WINAPI CryptHashData(HCRYPTHASH,PBYTE,DWORD,DWORD);BOOL WINAPI CryptHashSessionKey(HCRYPTHASH,HCRYPTKEY,DWORD);BOOL WINAPI CryptGetHashValue(HCRYPTHASH,DWORD,PBYTE,PDWORD);BOOL WINAPI CryptDestroyHash(HCRYPTHASH);BOOL WINAPI CryptSignHashA(HCRYPTHASH,DWORD,LPCSTR,DWORD,PBYTE,PDWORD);BOOL WINAPI CryptSignHashW(HCRYPTHASH,DWORD,LPCWSTR,DWORD,PBYTE,PDWORD);BOOL WINAPI CryptVerifySignatureA(HCRYPTHASH,PBYTE,DWORD,HCRYPTKEY,LPCSTR,DWORD);BOOL WINAPI CryptVerifySignatureW(HCRYPTHASH,PBYTE,DWORD,HCRYPTKEY,LPCWSTR,DWORD);BOOL WINAPI CryptSetProviderA(LPCSTR,DWORD);BOOL WINAPI CryptSetProviderW(LPCWSTR,DWORD);#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#ifdef __cplusplus}#endif#endif /* _WINCRYPT_H */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?