cf62424b92
cguid.h, commctrl.h, commdlg.h, cpl.h, cplext.h, custcntl.h, dbt.h, dde.h, ddeml.h, dlgs.h, excpt.h, httpext.h, imagehlp.h, imm.h, initguid.h, intshcut.h, ipexport.h, iphlpapi.h, ipifcons.h, iprtrmib.h, iptypes.h, isguids.h, largeint.h, lm.h, lmaccess.h, lmalert.h, lmapibuf.h, lmat.h, lmaudit.h, lmbrowsr.h, lmchdev.h, lmconfig.h, lmcons.h, lmerr.h, lmerrlog.h, lmmsg.h, lmremutl.h, lmrepl.h, lmserver.h, lmshare.h, lmsname.h, lmstats.h, lmsvc.h, lmuse.h, lmuseflg.h, lmwksta.h, lzexpand.h, mapi.h, mciavi.h, mcx.h, mmsystem.h, mswsock.h, nb30.h, nddeapi.h, nspapi.h, ntdef.h, ntsecapi.h, ntsecpkg.h, oaidl.h, objbase.h, objfwd.h, objidl.h, odbcinst.h, ole.h, ole2.h, ole2ver.h, oleauto.h, olectl.h, olectlid.h, oledlg.h, oleidl.h, pbt.h, prsht.h, psapi.h, rapi.h, ras.h, raserror.h, rassapi.h, regstr.h, richedit.h, richole.h, rpc.h, rpcdce.h, rpcdce2.h, rpcdcep.h, rpcndr.h, rpcnsi.h, rpcnsip.h, rpcnterr.h, rpcproxy.h, schannel.h, schnlsp.h, scrnsave.h, security.h, setupapi.h, shellapi.h, shlguid.h, shlobj.h, sql.h, sqlext.h, sqltypes.h, sqlucode.h, sspi.h, subauth.h, tlhelp32.h, unknwn.h, userenv.h, w32api.h, winbase.h, wincon.h, wincrypt.h, windef.h, windows.h, windowsx.h, winerror.h, wingdi.h, wininet.h, winioctl.h, winnetwk.h, winnls.h, winnt.h, winperf.h, winreg.h, winresrc.h, winsock.h, winsock2.h, winspool.h, winsvc.h, winuser.h, winver.h, ws2tcpip.h, wsnetbs.h, wtypes.h, zmouse.h: Add #pragma GCC system_header if __GNUC__ >= 3. * include/mapi.h: Change header guard name to _MAPI_H for consistency.
554 lines
19 KiB
C
554 lines
19 KiB
C
#ifndef _WINCRYPT_H
|
|
#define _WINCRYPT_H
|
|
#if __GNUC__ >=3
|
|
#pragma GCC system_header
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
#define MS_DEF_PROV_A "Microsoft Base Cryptographic Provider v1.0"
|
|
#define MS_DEF_PROV_W L"Microsoft Base Cryptographic Provider v1.0"
|
|
#define GET_ALG_CLASS(x) (x&57344)
|
|
#define GET_ALG_TYPE(x) (x&7680)
|
|
#define GET_ALG_SID(x) (x&511)
|
|
#define ALG_CLASS_ANY 0
|
|
#define ALG_CLASS_SIGNATURE 8192
|
|
#define ALG_CLASS_MSG_ENCRYPT 16384
|
|
#define ALG_CLASS_DATA_ENCRYPT 24576
|
|
#define ALG_CLASS_HASH 32768
|
|
#define ALG_CLASS_KEY_EXCHANGE 40960
|
|
#define ALG_TYPE_ANY 0
|
|
#define ALG_TYPE_DSS 512
|
|
#define ALG_TYPE_RSA 1024
|
|
#define ALG_TYPE_BLOCK 1536
|
|
#define ALG_TYPE_STREAM 2048
|
|
#define ALG_SID_ANY 0
|
|
#define ALG_SID_RSA_ANY 0
|
|
#define ALG_SID_RSA_PKCS 1
|
|
#define ALG_SID_RSA_MSATWORK 2
|
|
#define ALG_SID_RSA_ENTRUST 3
|
|
#define ALG_SID_RSA_PGP 4
|
|
#define ALG_SID_DSS_ANY 0
|
|
#define ALG_SID_DSS_PKCS 1
|
|
#define ALG_SID_DSS_DMS 2
|
|
#define ALG_SID_DES 1
|
|
#define ALG_SID_RC2 2
|
|
#define ALG_SID_RC4 1
|
|
#define ALG_SID_SEAL 2
|
|
#define ALG_SID_MD2 1
|
|
#define ALG_SID_MD4 2
|
|
#define ALG_SID_MD5 3
|
|
#define ALG_SID_SHA 4
|
|
#define ALG_SID_MAC 5
|
|
#define ALG_SID_EXAMPLE 80
|
|
#define CALG_MD2 (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_MD2)
|
|
#define CALG_MD4 (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_MD4)
|
|
#define CALG_MD5 (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_MD5)
|
|
#define CALG_SHA (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_SHA)
|
|
#define CALG_MAC (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_MAC)
|
|
#define CALG_3DES (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|3)
|
|
#define CALG_CYLINK_MEK (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|12)
|
|
#define CALG_SKIPJACK (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|10)
|
|
#define CALG_KEA_KEYX (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_STREAM|ALG_TYPE_DSS|4)
|
|
#define CALG_RSA_SIGN (ALG_CLASS_SIGNATURE|ALG_TYPE_RSA|ALG_SID_RSA_ANY)
|
|
#define CALG_DSS_SIGN (ALG_CLASS_SIGNATURE|ALG_TYPE_DSS|ALG_SID_DSS_ANY)
|
|
#define CALG_RSA_KEYX (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_RSA|ALG_SID_RSA_ANY)
|
|
#define CALG_DES (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_DES)
|
|
#define CALG_RC2 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_RC2)
|
|
#define CALG_RC4 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_STREAM|ALG_SID_RC4)
|
|
#define CALG_SEAL (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_STREAM|ALG_SID_SEAL)
|
|
#define CALG_DH_EPHEM (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_STREAM|ALG_TYPE_DSS|ALG_SID_DSS_DMS)
|
|
|
|
#define CRYPT_VERIFYCONTEXT 0xF0000000
|
|
#define CRYPT_NEWKEYSET 8
|
|
#define CRYPT_DELETEKEYSET 16
|
|
#define CRYPT_MACHINE_KEYSET 32
|
|
#define CRYPT_EXPORTABLE 1
|
|
#define CRYPT_USER_PROTECTED 2
|
|
#define CRYPT_CREATE_SALT 4
|
|
#define CRYPT_UPDATE_KEY 8
|
|
#define SIMPLEBLOB 1
|
|
#define PUBLICKEYBLOB 6
|
|
#define AT_KEYEXCHANGE 1
|
|
#define AT_SIGNATURE 2
|
|
#define CRYPT_USERDATA 1
|
|
#define KP_IV 1
|
|
#define KP_SALT 2
|
|
#define KP_PADDING 3
|
|
#define KP_MODE 4
|
|
#define KP_MODE_BITS 5
|
|
#define KP_PERMISSIONS 6
|
|
#define KP_ALGID 7
|
|
#define KP_BLOCKLEN 8
|
|
#define PKCS5_PADDING 1
|
|
#define CRYPT_MODE_CBC 1
|
|
#define CRYPT_MODE_ECB 2
|
|
#define CRYPT_MODE_OFB 3
|
|
#define CRYPT_MODE_CFB 4
|
|
#define CRYPT_MODE_CTS 5
|
|
#define CRYPT_ENCRYPT 1
|
|
#define CRYPT_DECRYPT 2
|
|
#define CRYPT_EXPORT 4
|
|
#define CRYPT_READ 8
|
|
#define CRYPT_WRITE 16
|
|
#define CRYPT_MAC 32
|
|
#define HP_ALGID 1
|
|
#define HP_HASHVAL 2
|
|
#define HP_HASHSIZE 4
|
|
#define CRYPT_FAILED FALSE
|
|
#define CRYPT_SUCCEED TRUE
|
|
#define RCRYPT_SUCCEEDED(r) ((r)==CRYPT_SUCCEED)
|
|
#define RCRYPT_FAILED(r) ((r)==CRYPT_FAILED)
|
|
#define PP_ENUMALGS 1
|
|
#define PP_ENUMCONTAINERS 2
|
|
#define PP_IMPTYPE 3
|
|
#define PP_NAME 4
|
|
#define PP_VERSION 5
|
|
#define PP_CONTAINER 6
|
|
#define CRYPT_FIRST 1
|
|
#define CRYPT_NEXT 2
|
|
#define CRYPT_IMPL_HARDWARE 1
|
|
#define CRYPT_IMPL_SOFTWARE 2
|
|
#define CRYPT_IMPL_MIXED 3
|
|
#define CRYPT_IMPL_UNKNOWN 4
|
|
#define PROV_RSA_FULL 1
|
|
#define PROV_RSA_SIG 2
|
|
#define PROV_DSS 3
|
|
#define PROV_FORTEZZA 4
|
|
#define PROV_MS_MAIL 5
|
|
#define PROV_SSL 6
|
|
#define PROV_STT_MER 7
|
|
#define PROV_STT_ACQ 8
|
|
#define PROV_STT_BRND 9
|
|
#define PROV_STT_ROOT 10
|
|
#define PROV_STT_ISS 11
|
|
#define MAXUIDLEN 64
|
|
#define CUR_BLOB_VERSION 2
|
|
#define X509_ASN_ENCODING 1
|
|
#define PKCS_7_ASN_ENCODING 65536
|
|
#define CERT_V1 0
|
|
#define CERT_V2 1
|
|
#define CERT_V3 2
|
|
#define CERT_E_CHAINING (-2146762486)
|
|
#define CERT_E_CN_NO_MATCH (-2146762481)
|
|
#define CERT_E_EXPIRED (-2146762495)
|
|
#define CERT_E_PURPOSE (-2146762490)
|
|
#define CERT_E_REVOCATION_FAILURE (-2146762482)
|
|
#define CERT_E_REVOKED (-2146762484)
|
|
#define CERT_E_ROLE (-2146762493)
|
|
#define CERT_E_UNTRUSTEDROOT (-2146762487)
|
|
#define CERT_E_UNTRUSTEDTESTROOT (-2146762483)
|
|
#define CERT_E_VALIDITYPERIODNESTING (-2146762494)
|
|
#define CERT_E_WRONG_USAGE (-2146762480)
|
|
#define CERT_E_PATHLENCONST (-2146762492)
|
|
#define CERT_E_CRITICAL (-2146762491)
|
|
#define CERT_E_ISSUERCHAINING (-2146762489)
|
|
#define CERT_E_MALFORMED (-2146762488)
|
|
#define CRYPT_E_REVOCATION_OFFLINE (-2146885613)
|
|
#define CRYPT_E_REVOKED (-2146885616)
|
|
#define TRUST_E_BASIC_CONSTRAINTS (-2146869223)
|
|
#define TRUST_E_CERT_SIGNATURE (-2146869244)
|
|
#define TRUST_E_FAIL (-2146762485)
|
|
#define CERT_TRUST_NO_ERROR 0
|
|
#define CERT_TRUST_IS_NOT_TIME_VALID 1
|
|
#define CERT_TRUST_IS_NOT_TIME_NESTED 2
|
|
#define CERT_TRUST_IS_REVOKED 4
|
|
#define CERT_TRUST_IS_NOT_SIGNATURE_VALID 8
|
|
#define CERT_TRUST_IS_NOT_VALID_FOR_USAGE 16
|
|
#define CERT_TRUST_IS_UNTRUSTED_ROOT 32
|
|
#define CERT_TRUST_REVOCATION_STATUS_UNKNOWN 64
|
|
#define CERT_TRUST_IS_CYCLIC 128
|
|
#define CERT_TRUST_IS_PARTIAL_CHAIN 65536
|
|
#define CERT_TRUST_CTL_IS_NOT_TIME_VALID 131072
|
|
#define CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID 262144
|
|
#define CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE 524288
|
|
#define CERT_TRUST_HAS_EXACT_MATCH_ISSUER 1
|
|
#define CERT_TRUST_HAS_KEY_MATCH_ISSUER 2
|
|
#define CERT_TRUST_HAS_NAME_MATCH_ISSUER 4
|
|
#define CERT_TRUST_IS_SELF_SIGNED 8
|
|
#define CERT_TRUST_IS_COMPLEX_CHAIN 65536
|
|
#define CERT_CHAIN_POLICY_BASE ((LPCSTR) 1)
|
|
#define CERT_CHAIN_POLICY_AUTHENTICODE ((LPCSTR) 2)
|
|
#define CERT_CHAIN_POLICY_AUTHENTICODE_TS ((LPCSTR) 3)
|
|
#define CERT_CHAIN_POLICY_SSL ((LPCSTR) 4)
|
|
#define CERT_CHAIN_POLICY_BASIC_CONSTRAINTS ((LPCSTR) 5)
|
|
#define CERT_CHAIN_POLICY_NT_AUTH ((LPCSTR) 6)
|
|
#define USAGE_MATCH_TYPE_AND 0
|
|
#define USAGE_MATCH_TYPE_OR 1
|
|
#define CERT_SIMPLE_NAME_STR 1
|
|
#define CERT_OID_NAME_STR 2
|
|
#define CERT_X500_NAME_STR 3
|
|
#define CERT_NAME_STR_SEMICOLON_FLAG 1073741824
|
|
#define CERT_NAME_STR_CRLF_FLAG 134217728
|
|
#define CERT_NAME_STR_NO_PLUS_FLAG 536870912
|
|
#define CERT_NAME_STR_NO_QUOTING_FLAG 268435456
|
|
#define CERT_NAME_STR_REVERSE_FLAG 33554432
|
|
#define CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG 131072
|
|
#define CERT_FIND_ANY 0
|
|
#define CERT_FIND_CERT_ID 1048576
|
|
#define CERT_FIND_CTL_USAGE 655360
|
|
#define CERT_FIND_ENHKEY_USAGE 655360
|
|
#define CERT_FIND_EXISTING 851968
|
|
#define CERT_FIND_HASH 65536
|
|
#define CERT_FIND_ISSUER_ATTR 196612
|
|
#define CERT_FIND_ISSUER_NAME 131076
|
|
#define CERT_FIND_ISSUER_OF 786432
|
|
#define CERT_FIND_KEY_IDENTIFIER 983040
|
|
#define CERT_FIND_KEY_SPEC 589824
|
|
#define CERT_FIND_MD5_HASH 262144
|
|
#define CERT_FIND_PROPERTY 327680
|
|
#define CERT_FIND_PUBLIC_KEY 393216
|
|
#define CERT_FIND_SHA1_HASH 65536
|
|
#define CERT_FIND_SIGNATURE_HASH 917504
|
|
#define CERT_FIND_SUBJECT_ATTR 196615
|
|
#define CERT_FIND_SUBJECT_CERT 720896
|
|
#define CERT_FIND_SUBJECT_NAME 131079
|
|
#define CERT_FIND_SUBJECT_STR_A 458759
|
|
#define CERT_FIND_SUBJECT_STR_W 524295
|
|
#define CERT_FIND_ISSUER_STR_A 458756
|
|
#define CERT_FIND_ISSUER_STR_W 524292
|
|
#define CERT_FIND_OR_ENHKEY_USAGE_FLAG 16
|
|
#define CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG 1
|
|
#define CERT_FIND_NO_ENHKEY_USAGE_FLAG 8
|
|
#define CERT_FIND_VALID_ENHKEY_USAGE_FLAG 32
|
|
#define CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG 2
|
|
#define CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG 2
|
|
#define CERT_UNICODE_IS_RDN_ATTRS_FLAG 1
|
|
#define CERT_CHAIN_FIND_BY_ISSUER 1
|
|
#define CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG 1
|
|
#define CERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG 2
|
|
#define CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG 32768
|
|
#define CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG 4
|
|
#define CERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG 8
|
|
#define CERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG 16384
|
|
#define CERT_STORE_PROV_SYSTEM 10
|
|
#define CERT_SYSTEM_STORE_LOCAL_MACHINE 131072
|
|
#define szOID_PKIX_KP_SERVER_AUTH "4235600"
|
|
#define szOID_SERVER_GATED_CRYPTO "4235658"
|
|
#define szOID_SGC_NETSCAPE "2.16.840.1.113730.4.1"
|
|
#define szOID_PKIX_KP_CLIENT_AUTH "1.3.6.1.5.5.7.3.2"
|
|
|
|
typedef 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;
|
|
} PUBLICKEYSTRUC;
|
|
typedef struct _RSAPUBKEY {
|
|
DWORD magic;
|
|
DWORD bitlen;
|
|
DWORD pubexp;
|
|
} RSAPUBKEY;
|
|
|
|
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 CryptReleaseContext(HCRYPTPROV,DWORD);
|
|
BOOL WINAPI CryptGenKey(HCRYPTPROV,ALG_ID,DWORD,HCRYPTKEY*);
|
|
BOOL WINAPI CryptDeriveKey(HCRYPTPROV,ALG_ID,HCRYPTHASH,DWORD,HCRYPTKEY*);
|
|
BOOL WINAPI CryptDestroyKey(HCRYPTKEY);
|
|
BOOL 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
|
|
#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
|
|
#endif
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* _WINCRYPT_H */
|