Changeset 21314 for trunk/include


Ignore:
Timestamp:
Jul 2, 2009, 12:20:20 PM (16 years ago)
Author:
vladest
Message:

updating includes according to Flash10 support

Location:
trunk/include
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/initdll.h

    r21301 r21314  
    112112ULONG APIENTRY inittermMSVCRT(ULONG hModule, ULONG ulFlag);
    113113ULONG APIENTRY inittermImm32(ULONG hModule, ULONG ulFlag);
     114ULONG APIENTRY inittermCrypt32(ULONG hModule, ULONG ulFlag);
     115ULONG APIENTRY inittermOleacc(ULONG hModule, ULONG ulFlag);
     116ULONG APIENTRY inittermmscms(ULONG hModule, ULONG ulFlag);
    114117
    115118ULONG APIENTRY InitializeKernel32();
  • trunk/include/win/config.h

    r8426 r21314  
    66#include <stddef.h>
    77
     8#define PACKAGE_VERSION '1.1.10'
     9
    810#endif
  • trunk/include/win/winbase.h

    r21299 r21314  
    474474#define MAKEINTRESOURCEA(i) (LPSTR)((DWORD)((WORD)(i)))
    475475#define MAKEINTRESOURCEW(i) (LPWSTR)((DWORD)((WORD)(i)))
    476 #define MAKEINTRESOURCE WINELIB_NAME_AW(MAKEINTRESOURCE)
     476#define MAKEINTRESOURCE(i) ((ULONG_PTR)((WORD)(i)))
     477//#define MAKEINTRESOURCE WINELIB_NAME_AW(MAKEINTRESOURCE)
    477478
    478479/* Predefined resource types */
     
    494495#define RT_STRINGA         MAKEINTRESOURCEA(6)
    495496#define RT_STRINGW         MAKEINTRESOURCEW(6)
    496 #define RT_STRING            WINELIB_NAME_AW(RT_STRING)
     497//#define RT_STRING            WINELIB_NAME_AW(RT_STRING)
     498#define RT_STRING         MAKEINTRESOURCE(6)
    497499#define RT_FONTDIRA        MAKEINTRESOURCEA(7)
    498500#define RT_FONTDIRW        MAKEINTRESOURCEW(7)
  • trunk/include/win/wincrypt.h

    r2976 r21314  
    1 /* $Id: wincrypt.h,v 1.2 2000-03-02 23:07:56 sandervl Exp $ */
     1/*
     2 * Copyright (C) 2002 Travis Michielsen
     3 * Copyright (C) 2004-2005 Juan Lang
     4 * Copyright (C) 2007 Vijay Kiran Kamuju
     5 *
     6 * This library is free software; you can redistribute it and/or
     7 * modify it under the terms of the GNU Lesser General Public
     8 * License as published by the Free Software Foundation; either
     9 * version 2.1 of the License, or (at your option) any later version.
     10 *
     11 * This library is distributed in the hope that it will be useful,
     12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
     13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     14 * Lesser General Public License for more details.
     15 *
     16 * You should have received a copy of the GNU Lesser General Public
     17 * License along with this library; if not, write to the Free Software
     18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
     19 */
    220
    321#ifndef __WINE_WINCRYPT_H
    422#define __WINE_WINCRYPT_H
    523
     24#ifdef __cplusplus
     25extern "C" {
     26#endif
     27
     28#include <guiddef.h>
     29#include <windef.h>
     30#include <bcrypt.h>
     31/* FIXME: #include <ncrypt.h> */
     32
     33# define WINADVAPI
     34    //DECLSPEC_IMPORT
     35
    636/* some typedefs for function parameters */
     37typedef unsigned int ALG_ID;
     38typedef ULONG_PTR HCRYPTPROV;
     39typedef ULONG_PTR HCRYPTPROV_OR_NCRYPT_KEY_HANDLE;
     40typedef ULONG_PTR HCRYPTPROV_LEGACY;
     41typedef ULONG_PTR HCRYPTKEY;
     42typedef ULONG_PTR HCRYPTHASH;
     43typedef void *HCERTSTORE;
     44typedef void *HCRYPTMSG;
     45typedef void *HCERTSTOREPROV;
     46typedef void *HCRYPTOIDFUNCSET;
     47typedef void *HCRYPTOIDFUNCADDR;
     48typedef void *HCRYPTDEFAULTCONTEXT;
     49
     50/* CSP Structs */
     51
     52typedef struct _PROV_ENUMALGS {
     53  ALG_ID aiAlgid;
     54  DWORD  dwBitLen;
     55  DWORD  dwNameLen;
     56  CHAR   szName[20];
     57} PROV_ENUMALGS;
     58
     59typedef struct _PROV_ENUMALGS_EX {
     60  ALG_ID aiAlgid;
     61  DWORD  dwDefaultLen;
     62  DWORD  dwMinLen;
     63  DWORD  dwMaxLen;
     64  DWORD  dwProtocols;
     65  DWORD  dwNameLen;
     66  CHAR   szName[20];
     67  DWORD  dwLongNameLen;
     68  CHAR   szLongName[40];
     69} PROV_ENUMALGS_EX;
     70
     71#define SCHANNEL_MAC_KEY 0
     72#define SCHANNEL_ENC_KEY 1
     73
     74typedef struct _SCHANNEL_ALG {
     75  DWORD  dwUse;
     76  ALG_ID Algid;
     77  DWORD  cBits;
     78  DWORD  dwFlags;
     79  DWORD  dwReserved;
     80} SCHANNEL_ALG, *PSCHANNEL_ALG;
     81
     82typedef struct _HMAC_INFO {
     83  ALG_ID HashAlgid;
     84  BYTE*  pbInnerString;
     85  DWORD  cbInnerString;
     86  BYTE*  pbOuterString;
     87  DWORD  cbOuterString;
     88} HMAC_INFO, *PHMAC_INFO;
     89               
     90typedef struct _CRYPTOAPI_BLOB {
     91  DWORD    cbData;
     92  BYTE*    pbData;
     93} CRYPT_INTEGER_BLOB,  *PCRYPT_INTEGER_BLOB,
     94  CRYPT_UINT_BLOB,     *PCRYPT_UINT_BLOB,
     95  CRYPT_OBJID_BLOB,    *PCRYPT_OBJID_BLOB,
     96  CERT_NAME_BLOB,      *PCERT_NAME_BLOB,
     97  CERT_RDN_VALUE_BLOB, *PCERT_RDN_VALUE_BLOB,
     98  CERT_BLOB,           *PCERT_BLOB,
     99  CRL_BLOB,            *PCRL_BLOB,
     100  DATA_BLOB,           *PDATA_BLOB,
     101  CRYPT_DATA_BLOB,     *PCRYPT_DATA_BLOB,
     102  CRYPT_HASH_BLOB,     *PCRYPT_HASH_BLOB,
     103  CRYPT_DIGEST_BLOB,   *PCRYPT_DIGEST_BLOB,
     104  CRYPT_DER_BLOB,      *PCRYPT_DER_BLOB,
     105  CRYPT_ATTR_BLOB,     *PCRYPT_ATTR_BLOB;
     106
     107typedef struct _CRYPTPROTECT_PROMPTSTRUCT{
     108  DWORD   cbSize;
     109  DWORD   dwPromptFlags;
     110  HWND    hwndApp;
     111  LPCWSTR szPrompt;
     112} CRYPTPROTECT_PROMPTSTRUCT, *PCRYPTPROTECT_PROMPTSTRUCT;
     113
     114typedef struct _CRYPT_ALGORITHM_IDENTIFIER {
     115  LPSTR            pszObjId;
     116  CRYPT_OBJID_BLOB Parameters;
     117} CRYPT_ALGORITHM_IDENTIFIER, *PCRYPT_ALGORITHM_IDENTIFIER;
     118
     119typedef struct _CRYPT_ATTRIBUTE_TYPE_VALUE {
     120  LPSTR               pszObjId;
     121  CRYPT_OBJID_BLOB    Value;
     122} CRYPT_ATTRIBUTE_TYPE_VALUE, *PCRYPT_ATTRIBUTE_TYPE_VALUE;
     123
     124typedef struct _PUBLICKEYSTRUC {
     125    BYTE   bType;
     126    BYTE   bVersion;
     127    WORD   reserved;
     128    ALG_ID aiKeyAlg;
     129} BLOBHEADER, PUBLICKEYSTRUC;
     130
     131typedef struct _RSAPUBKEY {
     132    DWORD   magic;
     133    DWORD   bitlen;
     134    DWORD   pubexp;
     135} RSAPUBKEY;
     136
     137typedef struct _PUBKEY {
     138    DWORD   magic;
     139    DWORD   bitlen;
     140} DHPUBKEY, DSSPUBKEY, KEAPUBKEY, TEKPUBKEY;
     141
     142typedef struct _DSSSEED {
     143    DWORD   counter;
     144    BYTE    seed[20];
     145} DSSSEED;
     146
     147typedef struct _PUBKEYVER3 {
     148    DWORD   magic;
     149    DWORD   bitlenP;
     150    DWORD   bitlenQ;
     151    DWORD   bitlenJ;
     152    DSSSEED DSSSeed;
     153} DHPUBKEY_VER3, DSSPUBKEY_VER3;
     154
     155typedef struct _PRIVKEYVER3 {
     156    DWORD   magic;
     157    DWORD   bitlenP;
     158    DWORD   bitlenQ;
     159    DWORD   bitlenJ;
     160    DWORD   bitlenX;
     161    DSSSEED DSSSeed;
     162} DHPRIVKEY_VER3, DSSPRIVKEY_VER3;
     163
     164typedef struct _KEY_TYPE_SUBTYPE {
     165    DWORD   dwKeySpec;
     166    GUID    Type;
     167    GUID    SubType;
     168} KEY_TYPE_SUBTYPE, *PKEY_TYPE_SUBTYPE;
     169
     170typedef struct _CERT_FORTEZZA_DATA_PROP {
     171    unsigned char   SerialNumber[8];
     172    int             CertIndex;
     173    unsigned char   CertLabel[36];
     174} CERT_FORTEZZA_DATA_PROP;
     175
     176typedef struct _CMS_DH_KEY_INFO {
     177    DWORD             dwVersion;
     178    ALG_ID            Algid;
     179    LPSTR             pszContentEncObjId;
     180    CRYPT_DATA_BLOB   PubInfo;
     181    void              *pReserved;
     182} CMS_DH_KEY_INFO, *PCMS_DH_KEY_INFO;
     183
     184typedef struct _CRYPT_BIT_BLOB {
     185    DWORD cbData;
     186    BYTE  *pbData;
     187    DWORD cUnusedBits;
     188} CRYPT_BIT_BLOB, *PCRYPT_BIT_BLOB;
     189
     190typedef struct _CRYPT_KEY_PROV_PARAM {
     191    DWORD dwParam;
     192    BYTE *pbData;
     193    DWORD cbData;
     194    DWORD dwFlags;
     195} CRYPT_KEY_PROV_PARAM, *PCRYPT_KEY_PROV_PARAM;
     196
     197typedef struct _CRYPT_KEY_PROV_INFO {
     198    LPWSTR                pwszContainerName;
     199    LPWSTR                pwszProvName;
     200    DWORD                 dwProvType;
     201    DWORD                 dwFlags;
     202    DWORD                 cProvParam;
     203    PCRYPT_KEY_PROV_PARAM rgProvParam;
     204    DWORD                 dwKeySpec;
     205} CRYPT_KEY_PROV_INFO, *PCRYPT_KEY_PROV_INFO;
     206
     207typedef struct _CERT_KEY_CONTEXT {
     208    DWORD      cbSize;
     209    HCRYPTPROV hCryptProv;
     210    DWORD      dwKeySpec;
     211} CERT_KEY_CONTEXT, *PCERT_KEY_CONTEXT;
     212
     213typedef struct _CERT_PUBLIC_KEY_INFO {
     214    CRYPT_ALGORITHM_IDENTIFIER Algorithm;
     215    CRYPT_BIT_BLOB             PublicKey;
     216} CERT_PUBLIC_KEY_INFO, *PCERT_PUBLIC_KEY_INFO;
     217
     218typedef struct _CERT_EXTENSION {
     219    LPSTR               pszObjId;
     220    BOOL                fCritical;
     221    CRYPT_OBJID_BLOB    Value;
     222} CERT_EXTENSION, *PCERT_EXTENSION;
     223
     224typedef struct _CERT_EXTENSIONS {
     225    DWORD           cExtension;
     226    PCERT_EXTENSION rgExtension;
     227} CERT_EXTENSIONS, *PCERT_EXTENSIONS;
     228
     229typedef struct _CERT_INFO {
     230    DWORD                      dwVersion;
     231    CRYPT_INTEGER_BLOB         SerialNumber;
     232    CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm;
     233    CERT_NAME_BLOB             Issuer;
     234    FILETIME                   NotBefore;
     235    FILETIME                   NotAfter;
     236    CERT_NAME_BLOB             Subject;
     237    CERT_PUBLIC_KEY_INFO       SubjectPublicKeyInfo;
     238    CRYPT_BIT_BLOB             IssuerUniqueId;
     239    CRYPT_BIT_BLOB             SubjectUniqueId;
     240    DWORD                      cExtension;
     241    PCERT_EXTENSION            rgExtension;
     242} CERT_INFO, *PCERT_INFO;
     243
     244typedef struct _CERT_RDN_ATTR {
     245    LPSTR               pszObjId;
     246    DWORD               dwValueType;
     247    CERT_RDN_VALUE_BLOB Value;
     248} CERT_RDN_ATTR, *PCERT_RDN_ATTR;
     249
     250typedef struct _CERT_RDN {
     251    DWORD          cRDNAttr;
     252    PCERT_RDN_ATTR rgRDNAttr;
     253} CERT_RDN, *PCERT_RDN;
     254
     255typedef struct _CERT_NAME_INFO {
     256    DWORD     cRDN;
     257    PCERT_RDN rgRDN;
     258} CERT_NAME_INFO, *PCERT_NAME_INFO;
     259
     260typedef struct _CERT_NAME_VALUE {
     261    DWORD               dwValueType;
     262    CERT_RDN_VALUE_BLOB Value;
     263} CERT_NAME_VALUE, *PCERT_NAME_VALUE;
     264
     265typedef struct _CERT_ENCRYPTED_PRIVATE_KEY_INFO {
     266    CRYPT_ALGORITHM_IDENTIFIER EncryptionAlgorithm;
     267    CRYPT_DATA_BLOB            EncryptedPrivateKey;
     268} CERT_ENCRYPTED_PRIVATE_KEY_INFO, *PCERT_ENCRYPTED_PRIVATE_KEY_INFO;
     269
     270typedef struct _CERT_AUTHORITY_KEY_ID_INFO {
     271    CRYPT_DATA_BLOB    KeyId;
     272    CERT_NAME_BLOB     CertIssuer;
     273    CRYPT_INTEGER_BLOB CertSerialNumber;
     274} CERT_AUTHORITY_KEY_ID_INFO, *PCERT_AUTHORITY_KEY_ID_INFO;
     275
     276typedef struct _CERT_PRIVATE_KEY_VALIDITY {
     277    FILETIME NotBefore;
     278    FILETIME NotAfter;
     279} CERT_PRIVATE_KEY_VALIDITY, *PCERT_PRIVATE_KEY_VALIDITY;
     280
     281typedef struct _CERT_KEY_ATTRIBUTES_INFO {
     282    CRYPT_DATA_BLOB            KeyId;
     283    CRYPT_BIT_BLOB             IntendedKeyUsage;
     284    PCERT_PRIVATE_KEY_VALIDITY pPrivateKeyUsagePeriod;
     285} CERT_KEY_ATTRIBUTES_INFO, *PCERT_KEY_ATTRIBUTES_INFO;
     286
     287/* byte 0 */
     288#define CERT_DIGITAL_SIGNATURE_KEY_USAGE 0x80
     289#define CERT_NON_REPUDIATION_KEY_USAGE   0x40
     290#define CERT_KEY_ENCIPHERMENT_KEY_USAGE  0x20
     291#define CERT_DATA_ENCIPHERMENT_KEY_USAGE 0x10
     292#define CERT_KEY_AGREEMENT_KEY_USAGE     0x08
     293#define CERT_KEY_CERT_SIGN_KEY_USAGE     0x04
     294#define CERT_OFFLINE_CRL_SIGN_KEY_USAGE  0x02
     295#define CERT_CRL_SIGN_KEY_USAGE          0x02
     296#define CERT_ENCIPHER_ONLY_KEY_USAGE     0x01
     297/* byte 1 */
     298#define CERT_DECIPHER_ONLY_KEY_USAGE     0x80
     299
     300typedef struct _CERT_POLICY_ID {
     301    DWORD  cCertPolicyElementId;
     302    LPSTR *rgbszCertPolicyElementId;
     303} CERT_POLICY_ID, *PCERT_POLICY_ID;
     304
     305typedef struct _CERT_KEY_USAGE_RESTRICTION_INFO {
     306    DWORD           cCertPolicyId;
     307    PCERT_POLICY_ID rgCertPolicyId;
     308    CRYPT_BIT_BLOB  RestrictedKeyUsage;
     309} CERT_KEY_USAGE_RESTRICTION_INFO, *PCERT_KEY_USAGE_RESTRICTION_INFO;
     310
     311typedef struct _CERT_OTHER_NAME {
     312    LPSTR            pszObjId;
     313    CRYPT_OBJID_BLOB Value;
     314} CERT_OTHER_NAME, *PCERT_OTHER_NAME;
     315
     316typedef struct _CERT_ALT_NAME_ENTRY {
     317    DWORD dwAltNameChoice;
     318    union {
     319        PCERT_OTHER_NAME pOtherName;
     320        LPWSTR           pwszRfc822Name;
     321        LPWSTR           pwszDNSName;
     322        CERT_NAME_BLOB   DirectoryName;
     323        LPWSTR           pwszURL;
     324        CRYPT_DATA_BLOB  IPAddress;
     325        LPSTR            pszRegisteredID;
     326    } DUMMYUNIONNAME;
     327} CERT_ALT_NAME_ENTRY, *PCERT_ALT_NAME_ENTRY;
     328
     329#define CERT_ALT_NAME_OTHER_NAME     1
     330#define CERT_ALT_NAME_RFC822_NAME    2
     331#define CERT_ALT_NAME_DNS_NAME       3
     332#define CERT_ALT_NAME_X400_ADDRESS   4
     333#define CERT_ALT_NAME_DIRECTORY_NAME 5
     334#define CERT_ALT_NAME_EDI_PARTY_NAME 6
     335#define CERT_ALT_NAME_URL            7
     336#define CERT_ALT_NAME_IP_ADDRESS     8
     337#define CERT_ALT_NAME_REGISTERED_ID  9
     338
     339typedef struct _CERT_ALT_NAME_INFO {
     340    DWORD                cAltEntry;
     341    PCERT_ALT_NAME_ENTRY rgAltEntry;
     342} CERT_ALT_NAME_INFO, *PCERT_ALT_NAME_INFO;
     343
     344#define CERT_ALT_NAME_ENTRY_ERR_INDEX_MASK  0xff
     345#define CERT_ALT_NAME_ENTRY_ERR_INDEX_SHIFT 16
     346#define CERT_ALT_NAME_VALUE_ERR_INDEX_MASK  0x0000ffff
     347#define CERT_ALT_NAME_VALUE_ERR_INDEX_SHIFT 0
     348#define GET_CERT_ALT_NAME_ENTRY_ERR_INDEX(x) \
     349 (((x) >> CERT_ALT_NAME_ENTRY_ERR_INDEX_SHIFT) & \
     350  CERT_ALT_NAME_ENTRY_ERR_INDEX_MASK)
     351#define GET_CERT_ALT_NAME_VALUE_ERR_INDEX(x) \
     352 ((x) & CERT_ALT_NAME_VALUE_ERR_INDEX_MASK)
     353
     354typedef struct _CERT_BASIC_CONSTRAINTS_INFO {
     355    CRYPT_BIT_BLOB  SubjectType;
     356    BOOL            fPathLenConstraint;
     357    DWORD           dwPathLenConstraint;
     358    DWORD           cSubtreesConstraint;
     359    CERT_NAME_BLOB *rgSubtreesConstraint;
     360} CERT_BASIC_CONSTRAINTS_INFO, *PCERT_BASIC_CONSTRAINTS_INFO;
     361
     362#define CERT_CA_SUBJECT_FLAG         0x80
     363#define CERT_END_ENTITY_SUBJECT_FLAG 0x40
     364
     365typedef struct _CERT_BASIC_CONSTRAINTS2_INFO {
     366    BOOL  fCA;
     367    BOOL  fPathLenConstraint;
     368    DWORD dwPathLenConstraint;
     369} CERT_BASIC_CONSTRAINTS2_INFO, *PCERT_BASIC_CONSTRAINTS2_INFO;
     370
     371typedef struct _CERT_POLICY_QUALIFIER_INFO {
     372    LPSTR            pszPolicyQualifierId;
     373    CRYPT_OBJID_BLOB Qualifier;
     374} CERT_POLICY_QUALIFIER_INFO, *PCERT_POLICY_QUALIFIER_INFO;
     375
     376typedef struct _CERT_POLICY_INFO {
     377    LPSTR                       pszPolicyIdentifier;
     378    DWORD                       cPolicyQualifier;
     379    CERT_POLICY_QUALIFIER_INFO *rgPolicyQualifier;
     380} CERT_POLICY_INFO, *PCERT_POLICY_INFO;
     381
     382typedef struct _CERT_POLICIES_INFO {
     383    DWORD             cPolicyInfo;
     384    CERT_POLICY_INFO *rgPolicyInfo;
     385} CERT_POLICIES_INFO, *PCERT_POLICIES_INFO;
     386
     387typedef struct _CERT_POLICY_QUALIFIER_NOTICE_REFERENCE {
     388    LPSTR pszOrganization;
     389    DWORD cNoticeNumbers;
     390    int  *rgNoticeNumbers;
     391} CERT_POLICY_QUALIFIER_NOTICE_REFERENCE,
     392 *PCERT_POLICY_QUALIFIER_NOTICE_REFERENCE;
     393
     394typedef struct _CERT_POLICY_QUALIFIER_USER_NOTICE {
     395    CERT_POLICY_QUALIFIER_NOTICE_REFERENCE *pNoticeReference;
     396    LPWSTR                                  pszDisplayText;
     397} CERT_POLICY_QUALIFIER_USER_NOTICE, *PCERT_POLICY_QUALIFIER_USER_NOTICE;
     398
     399typedef struct _CPS_URLS {
     400    LPWSTR                      pszURL;
     401    CRYPT_ALGORITHM_IDENTIFIER *pAlgorithm;
     402    CRYPT_DATA_BLOB            *pDigest;
     403} CPS_URLS, *PCPS_URLS;
     404
     405typedef struct _CERT_POLICY95_QUALIFIER1 {
     406    LPWSTR    pszPracticesReference;
     407    LPSTR     pszNoticeIdentifier;
     408    LPSTR     pszNSINoticeIdentifier;
     409    DWORD     cCPSURLs;
     410    CPS_URLS *rgCPSURLs;
     411} CERT_POLICY95_QUALIFIER1, *PCERT_POLICY95_QUALIFIER1;
     412
     413typedef struct _CERT_POLICY_MAPPING {
     414    LPSTR pszIssuerDomainPolicy;
     415    LPSTR pszSubjectDomainPolicy;
     416} CERT_POLICY_MAPPING, *PCERT_POLICY_MAPPING;
     417
     418typedef struct _CERT_POLICY_MAPPINGS_INFO {
     419    DWORD                cPolicyMapping;
     420    PCERT_POLICY_MAPPING rgPolicyMapping;
     421} CERT_POLICY_MAPPINGS_INFO, *PCERT_POLICY_MAPPINGS_INFO;
     422
     423typedef struct _CERT_POLICY_CONSTRAINTS_INFO {
     424    BOOL  fRequireExplicitPolicy;
     425    DWORD dwRequireExplicitPolicySkipCerts;
     426    BOOL  fInhibitPolicyMapping;
     427    DWORD dwInhibitPolicyMappingSkipCerts;
     428} CERT_POLICY_CONSTRAINTS_INFO, *PCERT_POLICY_CONSTRAINTS_INFO;
     429
     430typedef struct _CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY {
     431    LPSTR           pszObjId;
     432    DWORD           cValue;
     433    PCRYPT_DER_BLOB rgValue;
     434} CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY, *PCRYPT_CONTENT_INFO_SEQUENCE_OF_ANY;
     435
     436typedef struct _CRYPT_CONTENT_INFO {
     437    LPSTR          pszObjId;
     438    CRYPT_DER_BLOB Content;
     439} CRYPT_CONTENT_INFO, *PCRYPT_CONTENT_INFO;
     440
     441typedef struct _CRYPT_SEQUENCE_OF_ANY {
     442    DWORD           cValue;
     443    PCRYPT_DER_BLOB rgValue;
     444} CRYPT_SEQUENCE_OF_ANY, *PCRYPT_SEQUENCE_OF_ANY;
     445
     446typedef struct _CERT_AUTHORITY_KEY_ID2_INFO {
     447    CRYPT_DATA_BLOB    KeyId;
     448    CERT_ALT_NAME_INFO AuthorityCertIssuer;
     449    CRYPT_INTEGER_BLOB AuthorityCertSerialNumber;
     450} CERT_AUTHORITY_KEY_ID2_INFO, *PCERT_AUTHORITY_KEY_ID2_INFO;
     451
     452typedef struct _CERT_ACCESS_DESCRIPTION {
     453    LPSTR               pszAccessMethod;
     454    CERT_ALT_NAME_ENTRY AccessLocation;
     455} CERT_ACCESS_DESCRIPTION, *PCERT_ACCESS_DESCRIPTION;
     456
     457typedef struct _CERT_AUTHORITY_INFO_ACCESS {
     458    DWORD                    cAccDescr;
     459    PCERT_ACCESS_DESCRIPTION rgAccDescr;
     460} CERT_AUTHORITY_INFO_ACCESS, *PCERT_AUTHORITY_INFO_ACCESS;
     461
     462typedef struct _CERT_CONTEXT {
     463    DWORD      dwCertEncodingType;
     464    BYTE       *pbCertEncoded;
     465    DWORD      cbCertEncoded;
     466    PCERT_INFO pCertInfo;
     467    HCERTSTORE hCertStore;
     468} CERT_CONTEXT, *PCERT_CONTEXT;
     469typedef const CERT_CONTEXT *PCCERT_CONTEXT;
     470
     471typedef struct _CRL_ENTRY {
     472    CRYPT_INTEGER_BLOB SerialNumber;
     473    FILETIME           RevocationDate;
     474    DWORD              cExtension;
     475    PCERT_EXTENSION    rgExtension;
     476} CRL_ENTRY, *PCRL_ENTRY;
     477
     478typedef struct _CRL_INFO {
     479    DWORD           dwVersion;
     480    CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm;
     481    CERT_NAME_BLOB  Issuer;
     482    FILETIME        ThisUpdate;
     483    FILETIME        NextUpdate;
     484    DWORD           cCRLEntry;
     485    PCRL_ENTRY      rgCRLEntry;
     486    DWORD           cExtension;
     487    PCERT_EXTENSION rgExtension;
     488} CRL_INFO, *PCRL_INFO;
     489
     490typedef struct _CRL_DIST_POINT_NAME {
     491    DWORD dwDistPointNameChoice;
     492    union {
     493        CERT_ALT_NAME_INFO FullName;
     494    } DUMMYUNIONNAME;
     495} CRL_DIST_POINT_NAME, *PCRL_DIST_POINT_NAME;
     496
     497#define CRL_DIST_POINT_NO_NAME         0
     498#define CRL_DIST_POINT_FULL_NAME       1
     499#define CRL_DIST_POINT_ISSUER_RDN_NAME 2
     500
     501typedef struct _CRL_DIST_POINT {
     502    CRL_DIST_POINT_NAME DistPointName;
     503    CRYPT_BIT_BLOB      ReasonFlags;
     504    CERT_ALT_NAME_INFO  CRLIssuer;
     505} CRL_DIST_POINT, *PCRL_DIST_POINT;
     506
     507#define CRL_REASON_UNUSED_FLAG                 0x80
     508#define CRL_REASON_KEY_COMPROMISE_FLAG         0x40
     509#define CRL_REASON_CA_COMPROMISE_FLAG          0x20
     510#define CRL_REASON_AFFILIATION_CHANGED_FLAG    0x10
     511#define CRL_REASON_SUPERSEDED_FLAG             0x08
     512#define CRL_REASON_CESSATION_OF_OPERATION_FLAG 0x04
     513#define CRL_REASON_CERTIFICATE_HOLD_FLAG       0x02
     514
     515typedef struct _CRL_DIST_POINTS_INFO {
     516    DWORD           cDistPoint;
     517    PCRL_DIST_POINT rgDistPoint;
     518} CRL_DIST_POINTS_INFO, *PCRL_DIST_POINTS_INFO;
     519
     520#define CRL_DIST_POINT_ERR_INDEX_MASK  0x7f
     521#define CRL_DIST_POINT_ERR_INDEX_SHIFT 24
     522#define GET_CRL_DIST_POINT_ERR_INDEX(x) \
     523 (((x) >> CRL_DIST_POINT_ERR_INDEX_SHIFT) & CRL_DIST_POINT_ERR_INDEX_MASK)
     524
     525#define CRL_DIST_POINT_ERR_CRL_ISSUER_BIT 0x80000000L
     526#define IS_CRL_DIST_POINT_ERR_CRL_ISSUER(x) \
     527 ((x) & CRL_DIST_POINT_ERR_CRL_ISSUER_BIT)
     528
     529typedef struct _CROSS_CERT_DIST_POINTS_INFO {
     530    DWORD               dwSyncDeltaTime;
     531    DWORD               cDistPoint;
     532    PCERT_ALT_NAME_INFO rgDistPoint;
     533} CROSS_CERT_DIST_POINTS_INFO, *PCROSS_CERT_DIST_POINTS_INFO;
     534
     535#define CROSS_CERT_DIST_POINT_ERR_INDEX_MASK  0xff
     536#define CROSS_CERT_DIST_POINT_ERR_INDEX_SHIFT 24
     537#define GET_CROSS_CERT_DIST_POINT_ERR_INDEX(x) \
     538 (((x) >> CROSS_CERT_DIST_POINT_ERR_INDEX_SHIFT) & \
     539 CROSS_CERT_DIST_POINT_ERR_INDEX_MASK)
     540
     541typedef struct _CERT_PAIR {
     542    CERT_BLOB Forward;
     543    CERT_BLOB Reverse;
     544} CERT_PAIR, *PCERT_PAIR;
     545
     546typedef struct _CRL_ISSUING_DIST_POINT {
     547    CRL_DIST_POINT_NAME DistPointName;
     548    BOOL                fOnlyContainsUserCerts;
     549    BOOL                fOnlyContainsCACerts;
     550    CRYPT_BIT_BLOB      OnlySomeReasonFlags;
     551    BOOL                fIndirectCRL;
     552} CRL_ISSUING_DIST_POINT, *PCRL_ISSUING_DIST_POINT;
     553
     554typedef struct _CERT_GENERAL_SUBTREE {
     555    CERT_ALT_NAME_ENTRY Base;
     556    DWORD               dwMinimum;
     557    BOOL                fMaximum;
     558    DWORD               dwMaximum;
     559} CERT_GENERAL_SUBTREE, *PCERT_GENERAL_SUBTREE;
     560
     561typedef struct _CERT_NAME_CONSTRAINTS_INFO {
     562    DWORD                 cPermittedSubtree;
     563    PCERT_GENERAL_SUBTREE rgPermittedSubtree;
     564    DWORD                 cExcludedSubtree;
     565    PCERT_GENERAL_SUBTREE rgExcludedSubtree;
     566} CERT_NAME_CONSTRAINTS_INFO, *PCERT_NAME_CONSTRAINTS_INFO;
     567
     568#define CERT_EXCLUDED_SUBTREE_BIT 0x80000000L
     569#define IS_CERT_EXCLUDED_SUBTREE(x) ((x) & CERT_EXCLUDED_SUBTREE_BIT)
     570
     571typedef struct _CRYPT_ATTRIBUTE {
     572    LPSTR            pszObjId;
     573    DWORD            cValue;
     574    PCRYPT_DATA_BLOB rgValue;
     575} CRYPT_ATTRIBUTE, *PCRYPT_ATTRIBUTE;
     576
     577typedef struct _CRYPT_ATTRIBUTES {
     578    DWORD            cAttr;
     579    PCRYPT_ATTRIBUTE rgAttr;
     580} CRYPT_ATTRIBUTES, *PCRYPT_ATTRIBUTES;
     581
     582typedef struct _CERT_REQUEST_INFO {
     583    DWORD                dwVersion;
     584    CERT_NAME_BLOB       Subject;
     585    CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo;
     586    DWORD                cAttribute;
     587    PCRYPT_ATTRIBUTE     rgAttribute;
     588} CERT_REQUEST_INFO, *PCERT_REQUEST_INFO;
     589
     590typedef struct _CERT_KEYGEN_REQUEST_INFO {
     591    DWORD                dwVersion;
     592    CERT_PUBLIC_KEY_INFO SubjectPubliceKeyInfo;
     593    LPWSTR               pwszChallengeString;
     594} CERT_KEYGEN_REQUEST_INFO, *PCERT_KEYGEN_REQUEST_INFO;
     595
     596typedef struct _CERT_SIGNED_CONTENT_INFO {
     597    CRYPT_DER_BLOB             ToBeSigned;
     598    CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm;
     599    CRYPT_BIT_BLOB             Signature;
     600} CERT_SIGNED_CONTENT_INFO, *PCERT_SIGNED_CONTENT_INFO;
     601
     602typedef struct _CRL_CONTEXT {
     603    DWORD      dwCertEncodingType;
     604    BYTE      *pbCrlEncoded;
     605    DWORD      cbCrlEncoded;
     606    PCRL_INFO  pCrlInfo;
     607    HCERTSTORE hCertStore;
     608} CRL_CONTEXT, *PCRL_CONTEXT;
     609typedef const CRL_CONTEXT *PCCRL_CONTEXT;
     610
     611#define SORTED_CTL_EXT_FLAGS_OFFSET                (0*4)
     612#define SORTED_CTL_EXT_COUNT_OFFSET                (1*4)
     613#define SORTED_CTL_EXT_MAX_COLLISION_OFFSET        (2*4)
     614#define SORTED_CTL_EXT_HASH_BUCKET_OFFSET          (3*4)
     615
     616#define SORTED_CTL_EXT_HASHED_SUBJECT_IDENTIFIER_FLAG    0x1
     617
     618typedef struct _CERT_DSS_PARAMETERS {
     619    CRYPT_UINT_BLOB    p;
     620    CRYPT_UINT_BLOB    q;
     621    CRYPT_UINT_BLOB    g;
     622} CERT_DSS_PARAMETERS, *PCERT_DSS_PARAMETERS;
     623
     624#define CERT_DSS_R_LEN            20
     625#define CERT_DSS_S_LEN            20
     626#define CERT_DSS_SIGNATURE_LEN    (CERT_DSS_R_LEN + CERT_DSS_S_LEN)
     627
     628#define CERT_MAX_ENCODED_DSS_SIGNATURE_LEN    (2 + 2*(2 + 20 +1))
     629
     630typedef struct _CERT_DH_PARAMETERS {
     631    CRYPT_UINT_BLOB    p;
     632    CRYPT_UINT_BLOB    g;
     633} CERT_DH_PARAMETERS, *PCERT_DH_PARAMETERS;
     634
     635typedef struct _CERT_X942_DH_VALIDATION_PARAMS {
     636    CRYPT_BIT_BLOB     seed;
     637    DWORD              pgenCounter;
     638} CERT_X942_DH_VALIDATION_PARAMS, *PCERT_X942_DH_VALIDATION_PARAMS;
     639
     640typedef struct _CERT_X942_DH_PARAMETERS {
     641    CRYPT_UINT_BLOB                    p;
     642    CRYPT_UINT_BLOB                    g;
     643    CRYPT_UINT_BLOB                    q;
     644    CRYPT_UINT_BLOB                    j;
     645    PCERT_X942_DH_VALIDATION_PARAMS    pValidationParams;
     646} CERT_X942_DH_PARAMETERS, *PCERT_X942_DH_PARAMETERS;
     647
     648#define CRYPT_X942_COUNTER_BYTE_LENGTH        4
     649#define CRYPT_X942_KEY_LENGTH_BYTE_LENGTH     4
     650#define CRYPT_X942_PUB_INFO_BYTE_LENGTH       (512/8)
     651
     652typedef struct _CRYPT_X942_OTHER_INFO {
     653    LPSTR              pszContentEncryptionObjId;
     654    BYTE               rgbCounter[CRYPT_X942_COUNTER_BYTE_LENGTH];
     655    BYTE               rgbKeyLength[CRYPT_X942_KEY_LENGTH_BYTE_LENGTH];
     656    CRYPT_DATA_BLOB    PubInfo;
     657} CRYPT_X942_OTHER_INFO, *PCRYPT_X942_OTHER_INFO;
     658
     659typedef struct _CRYPT_RC2_CBC_PARAMETERS {
     660    DWORD    dwVersion;
     661    BOOL     fIV;
     662    BYTE     rgbIV[4];
     663} CRYPT_RC2_CBC_PARAMETERS, *PCRYPT_RC2_CBC_PARAMETERS;
     664
     665#define CRYPT_RC2_40BIT_VERSION    160
     666#define CRYPT_RC2_56BIT_VERSION    52
     667#define CRYPT_RC2_64BIT_VERSION    120
     668#define CRYPT_RC2_128BIT_VERSION   58
     669
     670typedef struct _CRYPT_SMIME_CAPABILITY {
     671    LPSTR               pszObjId;
     672    CRYPT_OBJID_BLOB    Parameters;
     673} CRYPT_SMIME_CAPABILITY, *PCRYPT_SMIME_CAPABILITY;
     674
     675typedef struct _CRYPT_SMIME_CAPABILITIES {
     676    DWORD                   cCapability;
     677    PCRYPT_SMIME_CAPABILITY rgCapability;
     678} CRYPT_SMIME_CAPABILITIES, *PCRYPT_SMIME_CAPABILITIES;
     679
     680typedef struct _VTableProvStruc {
     681    DWORD    Version;
     682    FARPROC  pFuncVerifyImage;
     683    FARPROC  pFuncReturnhWnd;
     684    DWORD    dwProvType;
     685    BYTE    *pbContextInfo;
     686    DWORD    cbContextInfo;
     687    LPSTR    pszProvName;
     688} VTableProvStruc, *PVTableProvStruc;
     689
     690typedef struct _CERT_PRIVATE_KEY_INFO {
     691    DWORD                      Version;
     692    CRYPT_ALGORITHM_IDENTIFIER Algorithm;
     693    CRYPT_DER_BLOB             PrivateKey;
     694    PCRYPT_ATTRIBUTES          pAttributes;
     695} CERT_PRIVATE_KEY_INFO, *PCERT_PRIVATE_KEY_INFO;
     696
     697typedef struct _CTL_USAGE {
     698    DWORD  cUsageIdentifier;
     699    LPSTR *rgpszUsageIdentifier;
     700} CTL_USAGE, *PCTL_USAGE, CERT_ENHKEY_USAGE, *PCERT_ENHKEY_USAGE;
     701
     702typedef struct _CTL_ENTRY {
     703    CRYPT_DATA_BLOB  SubjectIdentifier;
     704    DWORD            cAttribute;
     705    PCRYPT_ATTRIBUTE rgAttribute;
     706} CTL_ENTRY, *PCTL_ENTRY;
     707
     708typedef struct _CTL_INFO {
     709    DWORD                      dwVersion;
     710    CTL_USAGE                  SubjectUsage;
     711    CRYPT_DATA_BLOB            ListIdentifier;
     712    CRYPT_INTEGER_BLOB         SequenceNumber;
     713    FILETIME                   ThisUpdate;
     714    FILETIME                   NextUpdate;
     715    CRYPT_ALGORITHM_IDENTIFIER SubjectAlgorithm;
     716    DWORD                      cCTLEntry;
     717    PCTL_ENTRY                 rgCTLEntry;
     718    DWORD                      cExtension;
     719    PCERT_EXTENSION            rgExtension;
     720} CTL_INFO, *PCTL_INFO;
     721
     722typedef struct _CTL_CONTEXT {
     723    DWORD      dwMsgAndCertEncodingType;
     724    BYTE      *pbCtlEncoded;
     725    DWORD      cbCtlEncoded;
     726    PCTL_INFO  pCtlInfo;
     727    HCERTSTORE hCertStore;
     728    HCRYPTMSG  hCryptMsg;
     729    BYTE      *pbCtlContext;
     730    DWORD      cbCtlContext;
     731} CTL_CONTEXT, *PCTL_CONTEXT;
     732typedef const CTL_CONTEXT *PCCTL_CONTEXT;
     733
     734typedef struct _CRYPT_TIME_STAMP_REQUEST_INFO {
     735    LPSTR            pszTimeStampAlgorithm;
     736    LPSTR            pszContentType;
     737    CRYPT_OBJID_BLOB Content;
     738    DWORD            cAttribute;
     739    PCRYPT_ATTRIBUTE rgAttribute;
     740} CRYPT_TIME_STAMP_REQUEST_INFO, *PCRYPT_TIME_STAMP_REQUEST_INFO;
     741
     742typedef struct _CRYPT_ENROLLMENT_NAME_VALUE_PAIR {
     743    LPWSTR pwszName;
     744    LPWSTR pwszValue;
     745} CRYPT_ENROLLMENT_NAME_VALUE_PAIR, *PCRYPT_ENROLLMENT_NAME_VALUE_PAIR;
     746
     747typedef struct _CMSG_SIGNER_INFO {
     748    DWORD                      dwVersion;
     749    CERT_NAME_BLOB             Issuer;
     750    CRYPT_INTEGER_BLOB         SerialNumber;
     751    CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
     752    CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
     753    CRYPT_DATA_BLOB            EncryptedHash;
     754    CRYPT_ATTRIBUTES           AuthAttrs;
     755    CRYPT_ATTRIBUTES           UnauthAttrs;
     756} CMSG_SIGNER_INFO, *PCMSG_SIGNER_INFO;
     757
     758#define CMSG_VERIFY_SIGNER_PUBKEY 1
     759#define CMSG_VERIFY_SIGNER_CERT   2
     760#define CMSG_VERIFY_SIGNER_CHAIN  3
     761#define CMSG_VERIFY_SIGNER_NULL   4
     762
     763typedef struct _CERT_REVOCATION_CRL_INFO {
     764    DWORD         cbSize;
     765    PCCRL_CONTEXT pBaseCrlContext;
     766    PCCRL_CONTEXT pDeltaCrlContext;
     767    PCRL_ENTRY    pCrlEntry;
     768    BOOL          fDeltaCrlEntry;
     769} CERT_REVOCATION_CRL_INFO, *PCERT_REVOCATION_CRL_INFO;
     770
     771typedef struct _CERT_REVOCATION_INFO {
     772    DWORD                     cbSize;
     773    DWORD                     dwRevocationResult;
     774    LPCSTR                    pszRevocationOid;
     775    LPVOID                    pvOidSpecificInfo;
     776    BOOL                      fHasFreshnessTime;
     777    DWORD                     dwFreshnessTime;
     778    PCERT_REVOCATION_CRL_INFO pCrlInfo;
     779} CERT_REVOCATION_INFO, *PCERT_REVOCATION_INFO;
     780
     781typedef struct _CERT_REVOCATION_PARA {
     782    DWORD                     cbSize;
     783    PCCERT_CONTEXT            pIssuerCert;
     784    DWORD                     cCertStore;
     785    HCERTSTORE               *rgCertStore;
     786    HCERTSTORE                hCrlStore;
     787    LPFILETIME                pftTimeToUse;
     788#ifdef CERT_REVOCATION_PARA_HAS_EXTRA_FIELDS
     789    DWORD                     dwUrlRetrievalTimeout;
     790    BOOL                      fCheckFreshnessTime;
     791    DWORD                     dwFreshnessTime;
     792    LPFILETIME                pftCurrentTime;
     793    PCERT_REVOCATION_CRL_INFO pCrlInfo;
     794#endif
     795} CERT_REVOCATION_PARA, *PCERT_REVOCATION_PARA;
     796
     797#define CERT_CONTEXT_REVOCATION_TYPE 1
     798#define CERT_VERIFY_REV_CHAIN_FLAG                0x00000001
     799#define CERT_VERIFY_CACHE_ONLY_BASED_REVOCATION   0x00000002
     800#define CERT_VERIFY_REV_ACCUMULATIVE_TIMEOUT_FLAG 0x00000004
     801
     802typedef struct _CTL_VERIFY_USAGE_PARA {
     803    DWORD           cbSize;
     804    CRYPT_DATA_BLOB ListIdentifier;
     805    DWORD           cCtlStore;
     806    HCERTSTORE     *rghCtlStore;
     807    DWORD           cSignerStore;
     808    HCERTSTORE     *rghSignerStore;
     809} CTL_VERIFY_USAGE_PARA, *PCTL_VERIFY_USAGE_PARA;
     810
     811typedef struct _CTL_VERIFY_USAGE_STATUS {
     812    DWORD           cbSize;
     813    DWORD           dwError;
     814    DWORD           dwFlags;
     815    PCCTL_CONTEXT  *ppCtl;
     816    DWORD           dwCtlEntryIndex;
     817    PCCERT_CONTEXT *ppSigner;
     818    DWORD           dwSignerIndex;
     819} CTL_VERIFY_USAGE_STATUS, *PCTL_VERIFY_USAGE_STATUS;
     820
     821#define CERT_VERIFY_INHIBIT_CTL_UPDATE_FLAG 0x1
     822#define CERT_VERIFY_TRUSTED_SIGNERS_FLAG    0x2
     823#define CERT_VERIFY_NO_TIME_CHECK_FLAG      0x4
     824#define CERT_VERIFY_ALLOW_MORE_USAGE_FLAG   0x8
     825#define CERT_VERIFY_UPDATED_CTL_FLAG        0x1
     826
     827typedef struct _CERT_REVOCATION_STATUS {
     828    DWORD cbSize;
     829    DWORD dwIndex;
     830    DWORD dwError;
     831    DWORD dwReason;
     832    BOOL  fHasFreshnessTime;
     833    DWORD dwFreshnessTime;
     834} CERT_REVOCATION_STATUS, *PCERT_REVOCATION_STATUS;
     835
     836typedef struct _CERT_TRUST_LIST_INFO {
     837    DWORD         cbSize;
     838    PCTL_ENTRY    pCtlEntry;
     839    PCCTL_CONTEXT pCtlContext;
     840} CERT_TRUST_LIST_INFO, *PCERT_TRUST_LIST_INFO;
     841
     842#define CERT_TRUST_NO_ERROR                          0x00000000
     843#define CERT_TRUST_IS_NOT_TIME_VALID                 0x00000001
     844#define CERT_TRUST_IS_NOT_TIME_NESTED                0x00000002
     845#define CERT_TRUST_IS_REVOKED                        0x00000004
     846#define CERT_TRUST_IS_NOT_SIGNATURE_VALID            0x00000008
     847#define CERT_TRUST_IS_NOT_VALID_FOR_USAGE            0x00000010
     848#define CERT_TRUST_IS_UNTRUSTED_ROOT                 0x00000020
     849#define CERT_TRUST_REVOCATION_STATUS_UNKNOWN         0x00000040
     850#define CERT_TRUST_IS_CYCLIC                         0x00000080
     851#define CERT_TRUST_INVALID_EXTENSION                 0x00000100
     852#define CERT_TRUST_INVALID_POLICY_CONSTRAINTS        0x00000200
     853#define CERT_TRUST_INVALID_BASIC_CONSTRAINTS         0x00000400
     854#define CERT_TRUST_INVALID_NAME_CONSTRAINTS          0x00000800
     855#define CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT 0x00001000
     856#define CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT   0x00002000
     857#define CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT 0x00004000
     858#define CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT      0x00008000
     859#define CERT_TRUST_IS_OFFLINE_REVOCATION             0x01000000
     860#define CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY          0x02000000
     861
     862#define CERT_TRUST_IS_PARTIAL_CHAIN                  0x00010000
     863#define CERT_TRUST_CTL_IS_NOT_TIME_VALID             0x00020000
     864#define CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID        0x00040000
     865#define CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE        0x00080000
     866
     867#define CERT_TRUST_HAS_EXACT_MATCH_ISSUER            0x00000001
     868#define CERT_TRUST_HAS_KEY_MATCH_ISSUER              0x00000002
     869#define CERT_TRUST_HAS_NAME_MATCH_ISSUER             0x00000004
     870#define CERT_TRUST_IS_SELF_SIGNED                    0x00000008
     871
     872#define CERT_TRUST_HAS_PREFERRED_ISSUER              0x00000100
     873#define CERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY         0x00000200
     874#define CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS        0x00000400
     875
     876#define CERT_TRUST_IS_COMPLEX_CHAIN                  0x00010000
     877
     878typedef struct _CERT_TRUST_STATUS {
     879    DWORD dwErrorStatus;
     880    DWORD dwInfoStatus;
     881} CERT_TRUST_STATUS, *PCERT_TRUST_STATUS;
     882
     883typedef struct _CERT_CHAIN_ELEMENT {
     884    DWORD                 cbSize;
     885    PCCERT_CONTEXT        pCertContext;
     886    CERT_TRUST_STATUS     TrustStatus;
     887    PCERT_REVOCATION_INFO pRevocationInfo;
     888    PCERT_ENHKEY_USAGE    pIssuanceUsage;
     889    PCERT_ENHKEY_USAGE    pApplicationUsage;
     890    LPCWSTR               pwszExtendedErrorInfo;
     891} CERT_CHAIN_ELEMENT, *PCERT_CHAIN_ELEMENT;
     892
     893typedef struct _CERT_SIMPLE_CHAIN {
     894    DWORD                 cbSize;
     895    CERT_TRUST_STATUS     TrustStatus;
     896    DWORD                 cElement;
     897    PCERT_CHAIN_ELEMENT  *rgpElement;
     898    PCERT_TRUST_LIST_INFO pTrustListInfo;
     899    BOOL                  fHasRevocationFreshnessTime;
     900    DWORD                 dwRevocationFreshnessTime;
     901} CERT_SIMPLE_CHAIN, *PCERT_SIMPLE_CHAIN;
     902
     903typedef struct _CERT_CHAIN_CONTEXT CERT_CHAIN_CONTEXT, *PCERT_CHAIN_CONTEXT;
     904typedef const CERT_CHAIN_CONTEXT *PCCERT_CHAIN_CONTEXT;
     905
     906struct _CERT_CHAIN_CONTEXT {
     907    DWORD                 cbSize;
     908    CERT_TRUST_STATUS     TrustStatus;
     909    DWORD                 cChain;
     910    PCERT_SIMPLE_CHAIN   *rgpChain;
     911    DWORD                 cLowerQualityChainContext;
     912    PCCERT_CHAIN_CONTEXT *rgpLowerQualityChainContext;
     913    BOOL                  fHasRevocationFreshnessTime;
     914    DWORD                 dwRevocationFreshnessTime;
     915};
     916
     917typedef struct _CERT_CHAIN_POLICY_PARA {
     918    DWORD cbSize;
     919    DWORD dwFlags;
     920    void *pvExtraPolicyPara;
     921} CERT_CHAIN_POLICY_PARA, *PCERT_CHAIN_POLICY_PARA;
     922
     923typedef struct _CERT_CHAIN_POLICY_STATUS {
     924    DWORD cbSize;
     925    DWORD dwError;
     926    LONG  lChainIndex;
     927    LONG  lElementIndex;
     928    void *pvExtraPolicyStatus;
     929} CERT_CHAIN_POLICY_STATUS, *PCERT_CHAIN_POLICY_STATUS;
     930
     931#define CERT_CHAIN_POLICY_BASE              ((LPCSTR)1)
     932#define CERT_CHAIN_POLICY_AUTHENTICODE      ((LPCSTR)2)
     933#define CERT_CHAIN_POLICY_AUTHENTICODE_TS   ((LPCSTR)3)
     934#define CERT_CHAIN_POLICY_SSL               ((LPCSTR)4)
     935#define CERT_CHAIN_POLICY_BASIC_CONSTRAINTS ((LPCSTR)5)
     936#define CERT_CHAIN_POLICY_NT_AUTH           ((LPCSTR)6)
     937#define CERT_CHAIN_POLICY_MICROSOFT_ROOT    ((LPCSTR)7)
     938
     939#define CERT_CHAIN_POLICY_IGNORE_NOT_TIME_VALID_FLAG            0x00000001
     940#define CERT_CHAIN_POLICY_IGNORE_CTL_NOT_TIME_VALID_FLAG        0x00000002
     941#define CERT_CHAIN_POLICY_IGNORE_NOT_TIME_NESTED_FLAG           0x00000004
     942#define CERT_CHAIN_POLICY_IGNORE_INVALID_BASIC_CONSTRAINTS_FLAG 0x00000008
     943
     944#define CERT_CHAIN_POLICY_IGNORE_ALL_NOT_TIME_VALID_FLAGS ( \
     945 CERT_CHAIN_POLICY_IGNORE_NOT_TIME_VALID_FLAG \
     946 CERT_CHAIN_POLICY_IGNORE_CTL_NOT_TIME_VALID_FLAG \
     947 CERT_CHAIN_POLICY_IGNORE_NOT_TIME_NESTED_FLAG )
     948
     949#define CERT_CHAIN_POLICY_ALLOW_UNKNOWN_CA_FLAG                 0x00000010
     950#define CERT_CHAIN_POLICY_IGNORE_WRONG_USAGE_FLAG               0x00000020
     951#define CERT_CHAIN_POLICY_IGNORE_INVALID_NAME_FLAG              0x00000040
     952#define CERT_CHAIN_POLICY_IGNORE_INVALID_POLICY_FLAG            0x00000080
     953
     954#define CERT_CHAIN_POLICY_IGNORE_END_REV_UNKNOWN_FLAG           0x00000100
     955#define CERT_CHAIN_POLICY_IGNORE_CTL_SIGNER_REV_UNKNOWN_FLAG    0x00000200
     956#define CERT_CHAIN_POLICY_IGNORE_CA_REV_UNKNOWN_FLAG            0x00000400
     957#define CERT_CHAIN_POLICY_IGNORE_ROOT_REV_UNKNOWN_FLAG          0x00000800
     958
     959#define CERT_CHAIN_POLICY_IGNORE_ALL_REV_UNKNOWN_FLAGS ( \
     960 CERT_CHAIN_POLICY_IGNORE_END_REV_UNKNOWN_FLAG \
     961 CERT_CHAIN_POLICY_IGNORE_CTL_SIGNER_REV_UNKNOWN_FLAG \
     962 CERT_CHAIN_POLICY_IGNORE_CA_REV_UNKNOWN_FLAG \
     963 CERT_CHAIN_POLICY_IGNORE_ROOT_REV_UNKNOWN_FLAG )
     964
     965#define CERT_CHAIN_POLICY_TRUST_TESTROOT_FLAG                   0x00004000
     966#define CERT_CHAIN_POLICY_ALLOW_TESTROOT_FLAG                   0x00008000
     967#define MICROSOFT_ROOT_CERT_CHAIN_POLICY_ENABLE_TEST_ROOT_FLAG  0x00010000
     968
     969typedef struct _AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA {
     970    DWORD             cbSize;
     971    DWORD             dwRegPolicySettings;
     972    PCMSG_SIGNER_INFO pSignerInfo;
     973} AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA,
     974 *PAUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA;
     975
     976typedef struct _AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS {
     977    DWORD cbSize;
     978    BOOL  fCommercial;
     979} AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS,
     980 *PAUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS;
     981
     982typedef struct _AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA {
     983    DWORD cbSize;
     984    DWORD dwRegPolicySettings;
     985    BOOL  fCommercial;
     986} AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA,
     987 *PAUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA;
     988
     989typedef struct _HTTPSPolicyCallbackData {
     990    union {
     991        DWORD cbStruct;
     992        DWORD cbSize;
     993    } DUMMYUNIONNAME;
     994    DWORD  dwAuthType;
     995    DWORD  fdwChecks;
     996    WCHAR *pwszServerName;
     997} HTTPSPolicyCallbackData, *PHTTPSPolicyCallbackData,
     998 SSL_EXTRA_CERT_CHAIN_POLICY_PARA, *PSSL_EXTRA_CERT_CHAIN_POLICY_PARA;
     999
     1000/* Values for HTTPSPolicyCallbackData's dwAuthType */
     1001#define AUTHTYPE_CLIENT 1
     1002#define AUTHTYPE_SERVER 2
     1003/* Values for HTTPSPolicyCallbackData's fdwChecks are defined in wininet.h */
     1004
     1005#define BASIC_CONSTRAINTS_CERT_CHAIN_POLICY_CA_FLAG         0x80000000
     1006#define BASIC_CONSTRAINTS_CERT_CHAIN_POLICY_END_ENTITY_FLAG 0x40000000
     1007
     1008#define MICROSOFT_ROOT_CERT_CHAIN_POLICY_ENABLE_TEST_ROOT_FLAG 0x00010000
     1009
     1010#define USAGE_MATCH_TYPE_AND 0x00000000
     1011#define USAGE_MATCH_TYPE_OR  0x00000001
     1012
     1013typedef struct _CERT_USAGE_MATCH {
     1014    DWORD             dwType;
     1015    CERT_ENHKEY_USAGE Usage;
     1016} CERT_USAGE_MATCH, *PCERT_USAGE_MATCH;
     1017
     1018typedef struct _CTL_USAGE_MATCH {
     1019    DWORD     dwType;
     1020    CTL_USAGE Usage;
     1021} CTL_USAGE_MATCH, *PCTL_USAGE_MATCH;
     1022
     1023#define CERT_CHAIN_REVOCATION_CHECK_END_CERT           0x10000000
     1024#define CERT_CHAIN_REVOCATION_CHECK_CHAIN              0x20000000
     1025#define CERT_CHAIN_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT 0x40000000
     1026#define CERT_CHAIN_REVOCATION_CHECK_CACHE_ONLY         0x80000000
     1027
     1028#define CERT_CHAIN_REVOCATION_ACCUMULATIVE_TIMEOUT     0x08000000
     1029
     1030#define CERT_CHAIN_DISABLE_PASS1_QUALITY_FILTERING     0x00000040
     1031#define CERT_CHAIN_RETURN_LOWER_QUALITY_CONTEXTS       0x00000080
     1032#define CERT_CHAIN_DISABLE_AUTH_ROOT_AUTO_UPDATE       0x00000100
     1033#define CERT_CHAIN_TIMESTAMP_TIME                      0x00000200
     1034
     1035typedef struct _CERT_CHAIN_PARA {
     1036    DWORD            cbSize;
     1037    CERT_USAGE_MATCH RequestedUsage;
     1038#ifdef CERT_CHAIN_PARA_HAS_EXTRA_FIELDS
     1039    CERT_USAGE_MATCH RequestedIssuancePolicy;
     1040    DWORD            dwUrlRetrievalTimeout;
     1041    BOOL             fCheckRevocationFreshnessTime;
     1042    DWORD            dwRevocationFreshnessTime;
     1043#endif
     1044} CERT_CHAIN_PARA, *PCERT_CHAIN_PARA;
     1045
     1046typedef struct _CERT_SYSTEM_STORE_INFO {
     1047    DWORD cbSize;
     1048} CERT_SYSTEM_STORE_INFO, *PCERT_SYSTEM_STORE_INFO;
     1049
     1050typedef struct _CERT_PHYSICAL_STORE_INFO {
     1051    DWORD           cbSize;
     1052    LPSTR           pszOpenStoreProvider;
     1053    DWORD           dwOpenEncodingType;
     1054    DWORD           dwOpenFlags;
     1055    CRYPT_DATA_BLOB OpenParameters;
     1056    DWORD           dwFlags;
     1057    DWORD           dwPriority;
     1058} CERT_PHYSICAL_STORE_INFO, *PCERT_PHYSICAL_STORE_INFO;
     1059
     1060typedef struct _CERT_SYSTEM_STORE_RELOCATE_PARA {
     1061    union {
     1062        HKEY  hKeyBase;
     1063        VOID *pvBase;
     1064    } DUMMYUNIONNAME;
     1065    union {
     1066        void   *pvSystemStore;
     1067        LPCSTR  pszSystemStore;
     1068        LPCWSTR pwszSystemStore;
     1069    } DUMMYUNIONNAME2;
     1070} CERT_SYSTEM_STORE_RELOCATE_PARA, *PCERT_SYSTEM_STORE_RELOCATE_PARA;
     1071
     1072typedef BOOL (*WINAPI PFN_CERT_ENUM_SYSTEM_STORE_LOCATION)(
     1073 LPCWSTR pwszStoreLocation, DWORD dwFlags, void *pvReserved, void *pvArg);
     1074
     1075typedef BOOL (*WINAPI PFN_CERT_ENUM_SYSTEM_STORE)(const void *pvSystemStore,
     1076 DWORD dwFlags, PCERT_SYSTEM_STORE_INFO pStoreInfo, void *pvReserved,
     1077 void *pvArg);
     1078
     1079typedef BOOL (*WINAPI PFN_CERT_ENUM_PHYSICAL_STORE)(const void *pvSystemStore,
     1080 DWORD dwFlags, LPCWSTR pwszStoreName, PCERT_PHYSICAL_STORE_INFO pStoreInfo,
     1081 void *pvReserved, void *pvArg);
     1082
     1083/* Encode/decode object */
     1084typedef LPVOID (*WINAPI PFN_CRYPT_ALLOC)(size_t cbsize);
     1085typedef VOID   (*WINAPI PFN_CRYPT_FREE)(LPVOID pv);
     1086
     1087typedef struct _CRYPT_ENCODE_PARA {
     1088    DWORD           cbSize;
     1089    PFN_CRYPT_ALLOC pfnAlloc;
     1090    PFN_CRYPT_FREE  pfnFree;
     1091} CRYPT_ENCODE_PARA, *PCRYPT_ENCODE_PARA;
     1092
     1093typedef struct _CRYPT_DECODE_PARA {
     1094    DWORD           cbSize;
     1095    PFN_CRYPT_ALLOC pfnAlloc;
     1096    PFN_CRYPT_FREE  pfnFree;
     1097} CRYPT_DECODE_PARA, *PCRYPT_DECODE_PARA;
     1098
     1099typedef struct _CERT_STORE_PROV_INFO {
     1100    DWORD             cbSize;
     1101    DWORD             cStoreProvFunc;
     1102    void            **rgpvStoreProvFunc;
     1103    HCERTSTOREPROV    hStoreProv;
     1104    DWORD             dwStoreProvFlags;
     1105    HCRYPTOIDFUNCADDR hStoreProvFuncAddr2;
     1106} CERT_STORE_PROV_INFO, *PCERT_STORE_PROV_INFO;
     1107
     1108typedef BOOL (*WINAPI PFN_CERT_DLL_OPEN_STORE_PROV_FUNC)(
     1109 LPCSTR lpszStoreProvider, DWORD dwEncodingType, HCRYPTPROV_LEGACY hCryptProv,
     1110 DWORD dwFlags, const void *pvPara, HCERTSTORE hCertStore,
     1111 PCERT_STORE_PROV_INFO pStoreProvInfo);
     1112
     1113typedef void (*WINAPI PFN_CERT_STORE_PROV_CLOSE)(HCERTSTOREPROV hStoreProv,
     1114 DWORD dwFlags);
     1115
     1116typedef BOOL (*WINAPI PFN_CERT_STORE_PROV_READ_CERT)(HCERTSTOREPROV hStoreProv,
     1117 PCCERT_CONTEXT pStoreCertContext, DWORD dwFlags,
     1118 PCCERT_CONTEXT *ppProvCertContext);
     1119
     1120typedef BOOL (*WINAPI PFN_CERT_STORE_PROV_WRITE_CERT)(HCERTSTOREPROV hStoreProv,
     1121 PCCERT_CONTEXT pCertContext, DWORD dwFlags);
     1122
     1123typedef BOOL (*WINAPI PFN_CERT_STORE_PROV_DELETE_CERT)(
     1124 HCERTSTOREPROV hStoreProv, PCCERT_CONTEXT pCertContext, DWORD dwFlags);
     1125
     1126typedef BOOL (*WINAPI PFN_CERT_STORE_PROV_SET_CERT_PROPERTY)(
     1127 HCERTSTOREPROV hStoreProv, PCCERT_CONTEXT pCertContext, DWORD dwPropId,
     1128 DWORD dwFlags, const void *pvData);
     1129
     1130typedef BOOL (*WINAPI PFN_CERT_STORE_PROV_READ_CRL)(HCERTSTOREPROV hStoreProv,
     1131 PCCRL_CONTEXT pStoreCrlContext, DWORD dwFlags,
     1132 PCCRL_CONTEXT *ppProvCrlContext);
     1133
     1134typedef BOOL (*WINAPI PFN_CERT_STORE_PROV_WRITE_CRL)(HCERTSTOREPROV hStoreProv,
     1135 PCCRL_CONTEXT pCrlContext, DWORD dwFlags);
     1136
     1137typedef BOOL (*WINAPI PFN_CERT_STORE_PROV_DELETE_CRL)(HCERTSTOREPROV hStoreProv,
     1138 PCCRL_CONTEXT pCrlContext, DWORD dwFlags);
     1139
     1140typedef BOOL (*WINAPI PFN_CERT_STORE_PROV_SET_CRL_PROPERTY)(
     1141 HCERTSTOREPROV hStoreProv, PCCRL_CONTEXT pCrlContext, DWORD dwPropId,
     1142 DWORD dwFlags, const void *pvData);
     1143
     1144typedef BOOL (*WINAPI PFN_CERT_STORE_PROV_READ_CTL)(HCERTSTOREPROV hStoreProv,
     1145 PCCTL_CONTEXT pStoreCtlContext, DWORD dwFlags,
     1146 PCCTL_CONTEXT *ppProvCtlContext);
     1147
     1148typedef BOOL (*WINAPI PFN_CERT_STORE_PROV_WRITE_CTL)(HCERTSTOREPROV hStoreProv,
     1149 PCCTL_CONTEXT pCtlContext, DWORD dwFlags);
     1150
     1151typedef BOOL (*WINAPI PFN_CERT_STORE_PROV_DELETE_CTL)(
     1152 HCERTSTOREPROV hStoreProv, PCCTL_CONTEXT pCtlContext, DWORD dwFlags);
     1153
     1154typedef BOOL (*WINAPI PFN_CERT_STORE_PROV_SET_CTL_PROPERTY)(
     1155 HCERTSTOREPROV hStoreProv, PCCTL_CONTEXT pCtlContext, DWORD dwPropId,
     1156 DWORD dwFlags, const void *pvData);
     1157
     1158typedef BOOL (*WINAPI PFN_CERT_STORE_PROV_CONTROL)(HCERTSTOREPROV hStoreProv,
     1159 DWORD dwFlags, DWORD dwCtrlType, void const *pvCtrlPara);
     1160
     1161typedef struct _CERT_STORE_PROV_FIND_INFO {
     1162    DWORD       cbSize;
     1163    DWORD       dwMsgAndCertEncodingType;
     1164    DWORD       dwFindFlags;
     1165    DWORD       dwFindType;
     1166    const void *pvFindPara;
     1167} CERT_STORE_PROV_FIND_INFO, *PCERT_STORE_PROV_FIND_INFO;
     1168typedef const CERT_STORE_PROV_FIND_INFO CCERT_STORE_PROV_FIND_INFO,
     1169 *PCCERT_STORE_PROV_FIND_INFO;
     1170
     1171typedef BOOL (*WINAPI PFN_CERT_STORE_PROV_FIND_CERT)(HCERTSTOREPROV hStoreProv,
     1172 PCCERT_STORE_PROV_FIND_INFO pFindInfo, PCCERT_CONTEXT pPrevCertContext,
     1173 DWORD dwFlags, void **ppvStoreProvFindInfo, PCCERT_CONTEXT *ppProvCertContext);
     1174
     1175typedef BOOL (*WINAPI PFN_CERT_STORE_PROV_FREE_FIND_CERT)(
     1176 HCERTSTOREPROV hStoreProv, PCCERT_CONTEXT pCertContext,
     1177 void *pvStoreProvFindInfo, DWORD dwFlags);
     1178
     1179typedef BOOL (*WINAPI PFN_CERT_STORE_PROV_GET_CERT_PROPERTY)(
     1180 HCERTSTOREPROV hStoreProv, PCCERT_CONTEXT pCertContext, DWORD dwPropId,
     1181 DWORD dwFlags, void *pvData, DWORD *pcbData);
     1182
     1183typedef BOOL (*WINAPI PFN_CERT_STORE_PROV_FIND_CRL)(HCERTSTOREPROV hStoreProv,
     1184 PCCERT_STORE_PROV_FIND_INFO pFindInfo, PCCRL_CONTEXT pPrevCrlContext,
     1185 DWORD dwFlags, void **ppvStoreProvFindInfo, PCCRL_CONTEXT *ppProvCrlContext);
     1186
     1187typedef BOOL (*WINAPI PFN_CERT_STORE_PROV_FREE_FIND_CRL)(
     1188 HCERTSTOREPROV hStoreProv, PCCRL_CONTEXT pCrlContext,
     1189 void *pvStoreProvFindInfo, DWORD dwFlags);
     1190
     1191typedef BOOL (*WINAPI PFN_CERT_STORE_PROV_GET_CRL_PROPERTY)(
     1192 HCERTSTOREPROV hStoreProv, PCCRL_CONTEXT pCrlContext, DWORD dwPropId,
     1193 DWORD dwFlags, void *pvData, DWORD *pcbData);
     1194
     1195typedef BOOL (*WINAPI PFN_CERT_STORE_PROV_FIND_CTL)(HCERTSTOREPROV hStoreProv,
     1196 PCCTL_CONTEXT pCtlContext, void *pvStoreProvFindInfo, DWORD dwFlags);
     1197
     1198typedef BOOL (*WINAPI PFN_CERT_STORE_PROV_GET_CTL_PROPERTY)(
     1199 HCERTSTOREPROV hStoreProv, PCCTL_CONTEXT pCtlContext, DWORD dwPropId,
     1200 DWORD dwFlags, void *pvData);
     1201
     1202typedef struct _CERT_CREATE_CONTEXT_PARA {
     1203    DWORD          cbSize;
     1204    PFN_CRYPT_FREE pfnFree;
     1205    void          *pvFree;
     1206} CERT_CREATE_CONTEXT_PARA, *PCERT_CREATE_CONTEXT_PARA;
     1207
     1208typedef struct _CRYPT_OID_FUNC_ENTRY {
     1209    LPCSTR pszOID;
     1210    void  *pvFuncAddr;
     1211} CRYPT_OID_FUNC_ENTRY, *PCRYPT_OID_FUNC_ENTRY;
     1212
     1213typedef BOOL (*WINAPI PFN_CRYPT_ENUM_OID_FUNC)(DWORD dwEncodingType,
     1214 LPCSTR pszFuncName, LPCSTR pszOID, DWORD cValue, const DWORD rgdwValueType[],
     1215 LPCWSTR const rgpwszValueName[], const BYTE * const rgpbValueData[],
     1216 const DWORD rgcbValueData[], void *pvArg);
     1217
     1218#define CRYPT_MATCH_ANY_ENCODING_TYPE 0xffffffff
     1219
     1220typedef struct _CRYPT_OID_INFO {
     1221    DWORD   cbSize;
     1222    LPCSTR  pszOID;
     1223    LPCWSTR pwszName;
     1224    DWORD   dwGroupId;
     1225    union {
     1226        DWORD  dwValue;
     1227        ALG_ID Algid;
     1228        DWORD  dwLength;
     1229    } DUMMYUNIONNAME;
     1230    CRYPT_DATA_BLOB ExtraInfo;
     1231} CRYPT_OID_INFO, *PCRYPT_OID_INFO;
     1232typedef const CRYPT_OID_INFO CCRYPT_OID_INFO, *PCCRYPT_OID_INFO;
     1233
     1234typedef BOOL (*WINAPI PFN_CRYPT_ENUM_OID_INFO)(PCCRYPT_OID_INFO pInfo,
     1235 void *pvArg);
     1236
     1237typedef struct _CRYPT_SIGN_MESSAGE_PARA {
     1238    DWORD                      cbSize;
     1239    DWORD                      dwMsgEncodingType;
     1240    PCCERT_CONTEXT             pSigningCert;
     1241    CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
     1242    void *                     pvHashAuxInfo;
     1243    DWORD                      cMsgCert;
     1244    PCCERT_CONTEXT            *rgpMsgCert;
     1245    DWORD                      cMsgCrl;
     1246    PCCRL_CONTEXT             *rgpMsgCrl;
     1247    DWORD                      cAuthAttr;
     1248    PCRYPT_ATTRIBUTE           rgAuthAttr;
     1249    DWORD                      cUnauthAttr;
     1250    PCRYPT_ATTRIBUTE           rgUnauthAttr;
     1251    DWORD                      dwFlags;
     1252    DWORD                      dwInnerContentType;
     1253#ifdef CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS
     1254    CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
     1255    void *                     pvHashEncryptionAuxInfo;
     1256#endif
     1257} CRYPT_SIGN_MESSAGE_PARA, *PCRYPT_SIGN_MESSAGE_PARA;
     1258
     1259#define CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAG         0x00000001
     1260#define CRYPT_MESSAGE_ENCAPSULATED_CONTENT_OUT_FLAG 0x00000002
     1261#define CRYPT_MESSAGE_KEYID_SIGNER_FLAG             0x00000004
     1262#define CRYPT_MESSAGE_SILENT_KEYSET_FLAG            0x00000008
     1263
     1264typedef PCCERT_CONTEXT (*WINAPI PFN_CRYPT_GET_SIGNER_CERTIFICATE)(void *pvArg,
     1265 DWORD dwCertEncodingType, PCERT_INFO pSignerId, HCERTSTORE hMsgCertStore);
     1266
     1267typedef struct _CRYPT_VERIFY_MESSAGE_PARA {
     1268    DWORD                            cbSize;
     1269    DWORD                            dwMsgAndCertEncodingType;
     1270    HCRYPTPROV_LEGACY                hCryptProv;
     1271    PFN_CRYPT_GET_SIGNER_CERTIFICATE pfnGetSignerCertificate;
     1272    void *                           pvGetArg;
     1273} CRYPT_VERIFY_MESSAGE_PARA, *PCRYPT_VERIFY_MESSAGE_PARA;
     1274
     1275typedef struct _CRYPT_ENCRYPT_MESSAGE_PARA {
     1276    DWORD                      cbSize;
     1277    DWORD                      dwMsgEncodingType;
     1278    HCRYPTPROV_LEGACY          hCryptProv;
     1279    CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm;
     1280    void *                     pvEncryptionAuxInfo;
     1281    DWORD                      dwFlags;
     1282    DWORD                      dwInnerContentType;
     1283} CRYPT_ENCRYPT_MESSAGE_PARA, *PCRYPT_ENCRYPT_MESSAGE_PARA;
     1284
     1285#define CRYPT_MESSAGE_KEYID_RECIPIENT_FLAG 0x00000004
     1286
     1287typedef struct _CRYPT_DECRYPT_MESSAGE_PARA {
     1288    DWORD       cbSize;
     1289    DWORD       dwMsgAndCertEncodingType;
     1290    DWORD       cCertStore;
     1291    HCERTSTORE *rghCertStore;
     1292#ifdef CRYPT_DECRYPT_MESSAGE_PARA_HAS_EXTRA_FIELDS
     1293    DWORD       dwFlags;
     1294#endif
     1295} CRYPT_DECRYPT_MESSAGE_PARA, *PCRYPT_DECRYPT_MESSAGE_PARA;
     1296
     1297typedef struct _CRYPT_HASH_MESSAGE_PARA {
     1298    DWORD                      cbSize;
     1299    DWORD                      dwMsgEncodingType;
     1300    HCRYPTPROV_LEGACY          hCryptProv;
     1301    CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
     1302    void *                     pvHashAuxInfo;
     1303} CRYPT_HASH_MESSAGE_PARA, *PCRYPT_HASH_MESSAGE_PARA;
     1304
     1305typedef struct _CRYPT_KEY_SIGN_MESSAGE_PARA {
     1306    DWORD                      cbSize;
     1307    DWORD                      dwMsgAndCertEncodingType;
     1308    HCRYPTPROV                 hCryptProv;
     1309    DWORD                      dwKeySpec;
     1310    CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
     1311    void *                     pvHashAuxInfo;
     1312} CRYPT_KEY_SIGN_MESSAGE_PARA, *PCRYPT_KEY_SIGN_MESSAGE_PARA;
     1313
     1314typedef struct _CRYPT_KEY_VERIFY_MESSAGE_PARA {
     1315    DWORD      cbSize;
     1316    DWORD      dwMsgEncodingType;
     1317    HCRYPTPROV_LEGACY hCryptProv;
     1318} CRYPT_KEY_VERIFY_MESSAGE_PARA, *PCRYPT_KEY_VERIFY_MESSAGE_PARA;
     1319
     1320typedef struct _CRYPT_URL_ARRAY {
     1321    DWORD   cUrl;
     1322    LPWSTR *rgwszUrl;
     1323} CRYPT_URL_ARRAY, *PCRYPT_URL_ARRAY;
     1324
     1325typedef struct _CRYPT_URL_INFO {
     1326    DWORD  cbSize;
     1327    DWORD  dwSyncDeltaTime;
     1328    DWORD  cGroup;
     1329    DWORD *rgcGroupEntry;
     1330} CRYPT_URL_INFO, *PCRYPT_URL_INFO;
     1331
     1332#define URL_OID_CERTIFICATE_ISSUER         ((LPCSTR)1)
     1333#define URL_OID_CERTIFICATE_CRL_DIST_POINT ((LPCSTR)2)
     1334#define URL_OID_CTL_ISSUER                 ((LPCSTR)3)
     1335#define URL_OID_CTL_NEXT_UPDATE            ((LPCSTR)4)
     1336#define URL_OID_CRL_ISSUER                 ((LPCSTR)5)
     1337#define URL_OID_CERTIFICATE_FRESHEST_CRL   ((LPCSTR)6)
     1338#define URL_OID_CRL_FRESHEST_CRL           ((LPCSTR)7)
     1339#define URL_OID_CROSS_CERT_DIST_POINT      ((LPCSTR)8)
     1340
     1341#define URL_OID_GET_OBJECT_URL_FUNC "UrlDllGetObjectUrl"
     1342
     1343typedef HANDLE HCRYPTASYNC, *PHCRYPTASYNC;
     1344
     1345typedef void (*WINAPI PFN_CRYPT_ASYNC_PARAM_FREE_FUNC)(LPSTR pszParamOid,
     1346 LPVOID pvParam);
     1347
     1348#define CRYPT_PARAM_ASYNC_RETRIEVAL_COMPLETION ((LPCSTR)1)
     1349#define CRYPT_PARAM_CANCEL_ASYNC_RETRIEVAL     ((LPCSTR)2)
     1350
     1351typedef void (*WINAPI PFN_CRYPT_ASYNC_RETRIEVAL_COMPLETION_FUNC)(
     1352 void *pvCompletion, DWORD dwCompletionCode, LPCSTR pszURL, LPSTR pszObjectOid,
     1353 void *pvObject);
     1354
     1355typedef struct _CRYPT_ASYNC_RETRIEVAL_COMPLETION
     1356{
     1357    PFN_CRYPT_ASYNC_RETRIEVAL_COMPLETION_FUNC pfnCompletion;
     1358    void                                     *pvCompletion;
     1359} CRYPT_ASYNC_RETRIEVAL_COMPLETION, *PCRYPT_ASYNC_RETRIEVAL_COMPLETION;
     1360
     1361typedef BOOL (*WINAPI PFN_CANCEL_ASYNC_RETRIEVAL_FUNC)(
     1362 HCRYPTASYNC hAsyncRetrieve);
     1363
     1364typedef struct _CRYPT_BLOB_ARRAY
     1365{
     1366    DWORD            cBlob;
     1367    PCRYPT_DATA_BLOB rgBlob;
     1368} CRYPT_BLOB_ARRAY, *PCRYPT_BLOB_ARRAY;
     1369
     1370typedef struct _CRYPT_CREDENTIALS {
     1371    DWORD  cbSize;
     1372    LPCSTR pszCredentialsOid;
     1373    LPVOID pvCredentials;
     1374} CRYPT_CREDENTIALS, *PCRYPT_CREDENTIALS;
     1375
     1376#define CREDENTIAL_OID_PASSWORD_CREDENTIALS_A ((LPCSTR)1)
     1377#define CREDENTIAL_OID_PASSWORD_CREDENTIALS_W ((LPCSTR)2)
     1378#define CREDENTIAL_OID_PASSWORD_CREDENTIALS \
     1379 WINELIB_NAME_AW(CREDENTIAL_OID_PASSWORD_CREDENTIALS_)
     1380
     1381typedef struct _CRYPT_PASSWORD_CREDENTIALSA {
     1382    DWORD cbSize;
     1383    LPSTR pszUsername;
     1384    LPSTR pszPassword;
     1385} CRYPT_PASSWORD_CREDENTIALSA, *PCRYPT_PASSWORD_CREDENTIALSA;
     1386
     1387typedef struct _CRYPT_PASSWORD_CREDENTIALSW {
     1388    DWORD  cbSize;
     1389    LPWSTR pszUsername;
     1390    LPWSTR pszPassword;
     1391} CRYPT_PASSWORD_CREDENTIALSW, *PCRYPT_PASSWORD_CREDENTIALSW;
     1392#define CRYPT_PASSWORD_CREDENTIALS WINELIB_NAME_AW(CRYPT_PASSWORD_CREDENTIALS)
     1393#define PCRYPT_PASSWORD_CREDENTIALS WINELIB_NAME_AW(PCRYPT_PASSWORD_CREDENTIALS)
     1394
     1395typedef struct _CRYPT_RETRIEVE_AUX_INFO {
     1396    DWORD     cbSize;
     1397    FILETIME *pLastSyncTime;
     1398    DWORD     dwMaxUrlRetrievalByteCount;
     1399} CRYPT_RETRIEVE_AUX_INFO, *PCRYPT_RETRIEVE_AUX_INFO;
     1400
     1401typedef void (*WINAPI PFN_FREE_ENCODED_OBJECT_FUNC)(LPCSTR pszObjectOid,
     1402 PCRYPT_BLOB_ARRAY pObject, void *pvFreeContext);
     1403
     1404#define SCHEME_OID_RETRIEVE_ENCODED_OBJECT_FUNC \
     1405 "SchemeDllRetrieveEncodedObject"
     1406#define SCHEME_OID_RETRIEVE_ENCODED_OBJECTW_FUNC \
     1407 "SchemeDllRetrieveEncodedObjectW"
     1408/* The signature of SchemeDllRetrieveEncodedObjectW is:
     1409BOOL WINAPI SchemeDllRetrieveEncodedObjectW(LPCWSTR pwszUrl,
     1410 LPCSTR pszObjectOid, DWORD dwRetrievalFlags, DWORD dwTimeout,
     1411 PCRYPT_BLOB_ARRAY pObject, PFN_FREE_ENCODED_OBJECT_FUNC *ppfnFreeObject,
     1412 void **ppvFreeContext, HCRYPTASYNC hAsyncRetrieve,
     1413 PCRYPT_CREDENTIALS pCredentials, PCRYPT_RETRIEVE_AUX_INFO pAuxInfo);
     1414 */
     1415
     1416#define CONTEXT_OID_CREATE_OBJECT_CONTEXT_FUNC "ContextDllCreateObjectContext"
     1417/* The signature of ContextDllCreateObjectContext is:
     1418BOOL WINAPI ContextDllCreateObjectContext(LPCSTR pszObjectOid,
     1419 DWORD dwRetrievalFlags, PCRYPT_BLOB_ARRAY pObject, void **ppvContxt);
     1420 */
     1421
     1422#define CONTEXT_OID_CERTIFICATE ((LPCSTR)1)
     1423#define CONTEXT_OID_CRL         ((LPCSTR)2)
     1424#define CONTEXT_OID_CTL         ((LPCSTR)3)
     1425#define CONTEXT_OID_PKCS7       ((LPCSTR)4)
     1426#define CONTEXT_OID_CAPI2_ANY   ((LPCSTR)5)
     1427
     1428#define CRYPT_RETRIEVE_MULTIPLE_OBJECTS      0x00000001
     1429#define CRYPT_CACHE_ONLY_RETRIEVAL           0x00000002
     1430#define CRYPT_WIRE_ONLY_RETRIEVAL            0x00000004
     1431#define CRYPT_DONT_CACHE_RESULT              0x00000008
     1432#define CRYPT_ASYNC_RETRIEVAL                0x00000010
     1433#define CRYPT_STICKY_CACHE_RETRIEVAL         0x00001000
     1434#define CRYPT_LDAP_SCOPE_BASE_ONLY_RETRIEVAL 0x00002000
     1435#define CRYPT_OFFLINE_CHECK_RETRIEVAL        0x00004000
     1436#define CRYPT_LDAP_INSERT_ENTRY_ATTRIBUTE    0x00008000
     1437#define CRYPT_LDAP_SIGN_RETRIEVAL            0x00010000
     1438#define CRYPT_NO_AUTH_RETRIEVAL              0x00020000
     1439#define CRYPT_LDAP_AREC_EXCLUSIVE_RETRIEVAL  0x00040000
     1440#define CRYPT_AIA_RETRIEVAL                  0x00080000
     1441
     1442#define CRYPT_VERIFY_CONTEXT_SIGNATURE      0x00000020
     1443#define CRYPT_VERIFY_DATA_HASH              0x00000040
     1444#define CRYPT_KEEP_TIME_VALID               0x00000080
     1445#define CRYPT_DONT_VERIFY_SIGNATURE         0x00000100
     1446#define CRYPT_DONT_CHECK_TIME_VALIDITY      0x00000200
     1447#define CRYPT_CHECK_FRESHNESS_TIME_VALIDITY 0x00000400
     1448#define CRYPT_ACCUMULATIVE_TIMEOUT          0x00000800
     1449
     1450typedef BOOL (*WINAPI PFN_CRYPT_CANCEL_RETRIEVAL)(DWORD dwFlags, void *pvArg);
     1451
     1452typedef struct _CERT_CRL_CONTEXT_PAIR
     1453{
     1454    PCCERT_CONTEXT pCertContext;
     1455    PCCRL_CONTEXT  pCrlContext;
     1456} CERT_CRL_CONTEXT_PAIR, *PCERT_CRL_CONTEXT_PAIR;
     1457typedef const CERT_CRL_CONTEXT_PAIR *PCCERT_CRL_CONTEXT_PAIR;
     1458
     1459#define TIME_VALID_OID_GET_OBJECT_FUNC   "TimeValidDllGetObject"
     1460
     1461#define TIME_VALID_OID_GET_CTL                    ((LPCSTR)1)
     1462#define TIME_VALID_OID_GET_CRL                    ((LPCSTR)2)
     1463#define TIME_VALID_OID_GET_CRL_FROM_CERT          ((LPCSTR)3)
     1464#define TIME_VALID_OID_GET_FRESHEST_CRL_FROM_CERT ((LPCSTR)4)
     1465#define TIME_VALID_OID_GET_FRESHEST_CRL_FROM_CRL  ((LPCSTR)5)
     1466
     1467#define TIME_VALID_OID_FLUSH_OBJECT_FUNC "TimeValidDllFlushObject"
     1468
     1469#define TIME_VALID_OID_FLUSH_CTL                    ((LPCSTR)1)
     1470#define TIME_VALID_OID_FLUSH_CRL                    ((LPCSTR)2)
     1471#define TIME_VALID_OID_FLUSH_CRL_FROM_CERT          ((LPCSTR)3)
     1472#define TIME_VALID_OID_FLUSH_FRESHEST_CRL_FROM_CERT ((LPCSTR)4)
     1473#define TIME_VALID_OID_FLUSH_FRESHEST_CRL_FROM_CRL  ((LPCSTR)5)
     1474
     1475/* OID group IDs */
     1476#define CRYPT_HASH_ALG_OID_GROUP_ID     1
     1477#define CRYPT_ENCRYPT_ALG_OID_GROUP_ID  2
     1478#define CRYPT_PUBKEY_ALG_OID_GROUP_ID   3
     1479#define CRYPT_SIGN_ALG_OID_GROUP_ID     4
     1480#define CRYPT_RDN_ATTR_OID_GROUP_ID     5
     1481#define CRYPT_EXT_OR_ATTR_OID_GROUP_ID  6
     1482#define CRYPT_ENHKEY_USAGE_OID_GROUP_ID 7
     1483#define CRYPT_POLICY_OID_GROUP_ID       8
     1484#define CRYPT_TEMPLATE_OID_GROUP_ID     9
     1485#define CRYPT_LAST_OID_GROUP_ID         9
     1486
     1487#define CRYPT_FIRST_ALG_OID_GROUP_ID CRYPT_HASH_ALG_OID_GROUP_ID
     1488#define CRYPT_LAST_ALG_OID_GROUP_ID  CRYPT_SIGN_ALG_OID_GROUP_ID
     1489
     1490#define CRYPT_OID_INHIBIT_SIGNATURE_FORMAT_FLAG  0x1
     1491#define CRYPT_OID_USE_PUBKEY_PARA_FOR_PKCS7_FLAG 0x2
     1492#define CRYPT_OID_NO_NULL_ALGORITHM_PARA_FLAG    0x4
     1493
     1494#define CRYPT_OID_INFO_OID_KEY   1
     1495#define CRYPT_OID_INFO_NAME_KEY  2
     1496#define CRYPT_OID_INFO_ALGID_KEY 3
     1497#define CRYPT_OID_INFO_SIGN_KEY  4
     1498
     1499/* Algorithm IDs */
     1500
    71501#define GET_ALG_CLASS(x)                (x & (7 << 13))
    81502#define GET_ALG_TYPE(x)                 (x & (15 << 9))
    91503#define GET_ALG_SID(x)                  (x & (511))
    101504
     1505/* Algorithm Classes */
    111506#define ALG_CLASS_ANY                   (0)
    121507#define ALG_CLASS_SIGNATURE             (1 << 13)
     
    151510#define ALG_CLASS_HASH                  (4 << 13)
    161511#define ALG_CLASS_KEY_EXCHANGE          (5 << 13)
    17 
     1512#define ALG_CLASS_ALL                   (7 << 13)
     1513/* Algorithm types */
    181514#define ALG_TYPE_ANY                    (0)
    191515#define ALG_TYPE_DSS                    (1 << 9)
     
    211517#define ALG_TYPE_BLOCK                  (3 << 9)
    221518#define ALG_TYPE_STREAM                 (4 << 9)
    23 
     1519#define ALG_TYPE_DH                     (5 << 9)
     1520#define ALG_TYPE_SECURECHANNEL          (6 << 9)
     1521
     1522/* SIDs */
    241523#define ALG_SID_ANY                     (0)
    25 
     1524/* RSA SIDs */
    261525#define ALG_SID_RSA_ANY                 0
    271526#define ALG_SID_RSA_PKCS                1
     
    291528#define ALG_SID_RSA_ENTRUST             3
    301529#define ALG_SID_RSA_PGP                 4
    31 
     1530/* DSS SIDs */
    321531#define ALG_SID_DSS_ANY                 0
    331532#define ALG_SID_DSS_PKCS                1
    341533#define ALG_SID_DSS_DMS                 2
    351534
     1535/* DES SIDs */
    361536#define ALG_SID_DES                     1
    37 #define ALG_SID_3DES                    3
    38 #define ALG_SID_DESX                    4
    39 #define ALG_SID_IDEA                    5
    40 #define ALG_SID_CAST                    6
    41 #define ALG_SID_SAFERSK64               7
    42 #define ALD_SID_SAFERSK128              8
    43 
    44 #define CRYPT_MODE_CBCI                 6
    45 #define CRYPT_MODE_CFBP                 7
    46 #define CRYPT_MODE_OFBP                 8
    47 #define CRYPT_MODE_CBCOFM               9
    48 #define CRYPT_MODE_CBCOFMI              10
    49 
     1537#define ALG_SID_3DES                    3
     1538#define ALG_SID_DESX                    4
     1539#define ALG_SID_IDEA                    5
     1540#define ALG_SID_CAST                    6
     1541#define ALG_SID_SAFERSK64               7
     1542#define ALG_SID_SAFERSK128              8
     1543#define ALG_SID_3DES_112                9
     1544#define ALG_SID_CYLINK_MEK             12
     1545#define ALG_SID_RC5                    13
     1546#define ALG_SID_AES_128                14
     1547#define ALG_SID_AES_192                15
     1548#define ALG_SID_AES_256                16
     1549#define ALG_SID_AES                    17
     1550/* Diffie-Hellmans SIDs */
     1551#define ALG_SID_DH_SANDF                1
     1552#define ALG_SID_DH_EPHEM                2
     1553#define ALG_SID_AGREED_KEY_ANY          3
     1554#define ALG_SID_KEA                     4
     1555/* RC2 SIDs */
     1556#define ALG_SID_RC4                     1
    501557#define ALG_SID_RC2                     2
    51 
    52 #define ALG_SID_RC4                     1
    531558#define ALG_SID_SEAL                    2
    54 
     1559/* Hash SIDs */
    551560#define ALG_SID_MD2                     1
    561561#define ALG_SID_MD4                     2
    571562#define ALG_SID_MD5                     3
    581563#define ALG_SID_SHA                     4
     1564#define ALG_SID_SHA1                    ALG_SID_SHA
    591565#define ALG_SID_MAC                     5
    60 #define ALG_SID_RIPEMD                  6
    61 #define ALG_SID_RIPEMD160               7
    62 #define ALG_SID_SSL3SHAMD5              8
    63 #define ALG_SID_EXAMPLE                 80
    64 
    65 #undef ALGIDDEF
    66 #define ALGIDDEF
    67 typedef unsigned int ALG_ID;
    68 
    69 #define CALG_MD2        (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD2)
    70 #define CALG_MD4        (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD4)
    71 #define CALG_MD5        (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD5)
    72 #define CALG_SHA        (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA)
    73 #define CALG_MAC        (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MAC)
    74 #define CALG_RSA_SIGN   (ALG_CLASS_SIGNATURE | ALG_TYPE_RSA | ALG_SID_RSA_ANY)
    75 #define CALG_DSS_SIGN   (ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_DSS_ANY)
    76 #define CALG_RSA_KEYX   (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_RSA|ALG_SID_RSA_ANY)
    77 #define CALG_DES        (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_DES)
    78 #define CALG_RC2        (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_RC2)
    79 #define CALG_RC4        (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_STREAM|ALG_SID_RC4)
    80 #define CALG_SEAL       (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_STREAM|ALG_SID_SEAL)
    81 
    82 #define CRYPT_VERIFYCONTEXT     0xF0000000
    83 #define CRYPT_NEWKEYSET         0x8
    84 #define CRYPT_DELETEKEYSET      0x10
    85 
    86 #define CRYPT_EXPORTABLE        0x00000001
    87 #define CRYPT_USER_PROTECTED    0x00000002
    88 #define CRYPT_CREATE_SALT       0x00000004
    89 #define CRYPT_UPDATE_KEY        0x00000008
    90 
    91 #define SIMPLEBLOB              0x1
    92 #define PUBLICKEYBLOB           0x6
    93 #define PRIVATEKEYBLOB          0x7
    94 
     1566#define ALG_SID_RIPEMD                  6
     1567#define ALG_SID_RIPEMD160               7
     1568#define ALG_SID_SSL3SHAMD5              8
     1569#define ALG_SID_HMAC                    9
     1570#define ALG_SID_TLS1PRF                10
     1571#define ALG_SID_HASH_REPLACE_OWF       11
     1572#define ALG_SID_SHA_256                12
     1573#define ALG_SID_SHA_384                13
     1574#define ALG_SID_SHA_512                14
     1575/* SCHANNEL SIDs */
     1576#define ALG_SID_SSL3_MASTER             1
     1577#define ALG_SID_SCHANNEL_MASTER_HASH    2
     1578#define ALG_SID_SCHANNEL_MAC_KEY        3
     1579#define ALG_SID_PCT1_MASTER             4
     1580#define ALG_SID_SSL2_MASTER             5
     1581#define ALG_SID_TLS1_MASTER             6
     1582#define ALG_SID_SCHANNEL_ENC_KEY        7
     1583#define ALG_SID_EXAMPLE                80
     1584
     1585/* Algorithm Definitions */
     1586#define CALG_MD2                  (ALG_CLASS_HASH         | ALG_TYPE_ANY           | ALG_SID_MD2)
     1587#define CALG_MD4                  (ALG_CLASS_HASH         | ALG_TYPE_ANY           | ALG_SID_MD4)
     1588#define CALG_MD5                  (ALG_CLASS_HASH         | ALG_TYPE_ANY           | ALG_SID_MD5)
     1589#define CALG_SHA                  (ALG_CLASS_HASH         | ALG_TYPE_ANY           | ALG_SID_SHA)
     1590#define CALG_SHA1 CALG_SHA
     1591#define CALG_MAC                  (ALG_CLASS_HASH         | ALG_TYPE_ANY           | ALG_SID_MAC)
     1592#define CALG_SSL3_SHAMD5          (ALG_CLASS_HASH         | ALG_TYPE_ANY           | ALG_SID_SSL3SHAMD5)
     1593#define CALG_HMAC                 (ALG_CLASS_HASH         | ALG_TYPE_ANY           | ALG_SID_HMAC)
     1594#define CALG_TLS1PRF              (ALG_CLASS_HASH         | ALG_TYPE_ANY           | ALG_SID_TLS1PRF)
     1595#define CALG_HASH_REPLACE_OWF     (ALG_CLASS_HASH         | ALG_TYPE_ANY           | ALG_SID_HASH_REPLACE_OWF)
     1596#define CALG_SHA_256              (ALG_CLASS_HASH         | ALG_TYPE_ANY           | ALG_SID_SHA_256)
     1597#define CALG_SHA_384              (ALG_CLASS_HASH         | ALG_TYPE_ANY           | ALG_SID_SHA_384)
     1598#define CALG_SHA_512              (ALG_CLASS_HASH         | ALG_TYPE_ANY           | ALG_SID_SHA_512)
     1599#define CALG_RSA_SIGN             (ALG_CLASS_SIGNATURE    | ALG_TYPE_RSA           | ALG_SID_RSA_ANY)
     1600#define CALG_DSS_SIGN             (ALG_CLASS_SIGNATURE    | ALG_TYPE_DSS           | ALG_SID_DSS_ANY)
     1601#define CALG_NO_SIGN              (ALG_CLASS_SIGNATURE    | ALG_TYPE_ANY           | ALG_SID_ANY)
     1602#define CALG_DH_SF                (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH            | ALG_SID_DH_SANDF)
     1603#define CALG_DH_EPHEM             (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH            | ALG_SID_DH_EPHEM)
     1604#define CALG_RSA_KEYX             (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_RSA           | ALG_SID_RSA_ANY)
     1605#define CALG_DES                  (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK         | ALG_SID_DES)
     1606#define CALG_RC2                  (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK         | ALG_SID_RC2)
     1607#define CALG_3DES                 (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK         | ALG_SID_3DES)
     1608#define CALG_3DES_112             (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK         | ALG_SID_3DES_112)
     1609#define CALG_AES_128              (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK         | ALG_SID_AES_128)
     1610#define CALG_AES_192              (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK         | ALG_SID_AES_192)
     1611#define CALG_AES_256              (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK         | ALG_SID_AES_256)
     1612#define CALG_AES                  (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK         | ALG_SID_AES)
     1613#define CALG_RC4                  (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM        | ALG_SID_RC4)
     1614#define CALG_SEAL                 (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM        | ALG_SID_SEAL)
     1615#define CALG_RC5                  (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM        | ALG_SID_RC5)
     1616#define CALG_SSL3_MASTER          (ALG_CLASS_MSG_ENCRYPT  | ALG_TYPE_SECURECHANNEL | ALG_SID_SSL3_MASTER)
     1617#define CALG_SCHANNEL_MASTER_HASH (ALG_CLASS_MSG_ENCRYPT  | ALG_TYPE_SECURECHANNEL | ALG_SID_SCHANNEL_MASTER_HASH)
     1618#define CALG_SCHANNEL_MAC_KEY     (ALG_CLASS_MSG_ENCRYPT  | ALG_TYPE_SECURECHANNEL | ALG_SID_SCHANNEL_MAC_KEY)
     1619#define CALG_SCHANNEL_ENC_KEY     (ALG_CLASS_MSG_ENCRYPT  | ALG_TYPE_SECURECHANNEL | ALG_SID_SCHANNEL_ENC_KEY)
     1620#define CALG_PCT1_MASTER          (ALG_CLASS_MSG_ENCRYPT  | ALG_TYPE_SECURECHANNEL | ALG_SID_PCT1_MASTER)
     1621#define CALG_SSL2_MASTER          (ALG_CLASS_MSG_ENCRYPT  | ALG_TYPE_SECURECHANNEL | ALG_SID_SSL2_MASTER)
     1622#define CALG_TLS1_MASTER          (ALG_CLASS_MSG_ENCRYPT  | ALG_TYPE_SECURECHANNEL | ALG_SID_TLS1_MASTER)
     1623
     1624
     1625/* Protocol Flags */
     1626#define CRYPT_FLAG_PCT1    0x0001
     1627#define CRYPT_FLAG_SSL2    0x0002
     1628#define CRYPT_FLAG_SSL3    0x0004
     1629#define CRYPT_FLAG_TLS1    0x0008
     1630#define CRYPT_FLAG_IPSEC   0x0010
     1631#define CRYPT_FLAG_SIGNING 0x0020
     1632
     1633/* Provider names */
     1634#define MS_DEF_PROV_A                            "Microsoft Base Cryptographic Provider v1.0"
     1635#if defined(__GNUC__)
     1636# define MS_DEF_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
     1637        'B','a','s','e',' ','C','r','y','p','t','o','g','r','a','p','h','i','c',' ', \
     1638        'P','r','o','v','i','d','e','r',' ','v','1','.','0',0 }
     1639#elif defined(_MSC_VER)
     1640# define MS_DEF_PROV_W      L"Microsoft Base Cryptographic Provider v1.0"
     1641#else
     1642static const WCHAR MS_DEF_PROV_W[] =             { 'M','i','c','r','o','s','o','f','t',' ',
     1643        'B','a','s','e',' ','C','r','y','p','t','o','g','r','a','p','h','i','c',' ',
     1644        'P','r','o','v','i','d','e','r',' ','v','1','.','0',0 };
     1645#endif
     1646#define MS_DEF_PROV                              WINELIB_NAME_AW(MS_DEF_PROV_)
     1647
     1648#define MS_ENHANCED_PROV_A                       "Microsoft Enhanced Cryptographic Provider v1.0"
     1649#if defined(__GNUC__)
     1650# define MS_ENHANCED_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
     1651        'E','n','h','a','n','c','e','d',' ','C','r','y','p','t','o','g','r','a','p','h','i','c',' ', \
     1652        'P','r','o','v','i','d','e','r',' ','v','1','.','0',0 }
     1653#elif defined(_MSC_VER)
     1654# define MS_ENHANCED_PROV_W     L"Microsoft Enhanced Cryptographic Provider v1.0"
     1655#else
     1656static const WCHAR MS_ENHANCED_PROV_W[] =        { 'M','i','c','r','o','s','o','f','t',' ',
     1657        'E','n','h','a','n','c','e','d',' ','C','r','y','p','t','o','g','r','a','p','h','i','c',' ',
     1658        'P','r','o','v','i','d','e','r',' ','v','1','.','0',0 };
     1659#endif
     1660#define MS_ENHANCED_PROV                         WINELIB_NAME_AW(MS_ENHANCED_PROV_)
     1661
     1662#define MS_STRONG_PROV_A                         "Microsoft Strong Cryptographic Provider"
     1663#if defined(__GNUC__)
     1664# define MS_STRONG_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
     1665        'S','t','r','o','n','g',' ','C','r','y','p','t','o','g','r','a','p','h','i','c',' ', \
     1666        'P','r','o','v','i','d','e','r',0 }
     1667#elif defined(_MSC_VER)
     1668# define MS_STRONG_PROV_W     L"Microsoft Strong Cryptographic Provider"
     1669#else
     1670static const WCHAR MS_STRONG_PROV_W[] =          { 'M','i','c','r','o','s','o','f','t',' ',
     1671        'S','t','r','o','n','g',' ','C','r','y','p','t','o','g','r','a','p','h','i','c',' ',
     1672        'P','r','o','v','i','d','e','r',0 };
     1673#endif
     1674#define MS_STRONG_PROV                           WINELIB_NAME_AW(MS_STRONG_PROV_)
     1675
     1676#define MS_DEF_RSA_SIG_PROV_A                    "Microsoft RSA Signature Cryptographic Provider"
     1677#if defined(__GNUC__)
     1678# define MS_DEF_RSA_SIG_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
     1679        'R','S','A',' ','S','i','g','n','a','t','u','r','e',' ', \
     1680        'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
     1681#elif defined(_MSC_VER)
     1682# define MS_DEF_RSA_SIG_PROV_W      L"Microsoft RSA Signature Cryptographic Provider"
     1683#else
     1684static const WCHAR MS_DEF_RSA_SIG_PROV_W[] =     { 'M','i','c','r','o','s','o','f','t',' ',
     1685        'R','S','A',' ','S','i','g','n','a','t','u','r','e',' ',
     1686        'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
     1687#endif
     1688#define MS_DEF_RSA_SIG_PROV                      WINELIB_NAME_AW(MS_DEF_RSA_SIG_PROV_)
     1689
     1690#define MS_DEF_RSA_SCHANNEL_PROV_A               "Microsoft RSA SChannel Cryptographic Provider"
     1691#if defined(__GNUC__)
     1692# define MS_DEF_RSA_SCHANNEL_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
     1693        'R','S','A',' ','S','C','h','a','n','n','e','l',' ', \
     1694        'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
     1695#elif defined(_MSC_VER)
     1696# define MS_DEF_RSA_SCHANNEL_PROV_W     L"Microsoft RSA SChannel Cryptographic Provider"
     1697#else
     1698static const WCHAR MS_DEF_RSA_SCHANNEL_PROV_W[] = { 'M','i','c','r','o','s','o','f','t',' ',
     1699        'R','S','A',' ','S','C','h','a','n','n','e','l',' ',
     1700        'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
     1701#endif
     1702#define MS_DEF_RSA_SCHANNEL_PROV                 WINELIB_NAME_AW(MS_DEF_RSA_SCHANNEL_PROV_)
     1703
     1704#define MS_DEF_DSS_PROV_A                        "Microsoft Base DSS Cryptographic Provider"
     1705#if defined(__GNUC__)
     1706# define MS_DEF_DSS_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
     1707        'B','a','s','e',' ','D','S','S',' ', \
     1708        'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
     1709#elif defined(_MSC_VER)
     1710# define MS_DEF_DSS_PROV_W     L"Microsoft Base DSS Cryptographic Provider"
     1711#else
     1712static const WCHAR MS_DEF_DSS_PROV_W[] =         { 'M','i','c','r','o','s','o','f','t',' ',
     1713        'B','a','s','e',' ','D','S','S',' ',
     1714        'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
     1715#endif
     1716#define MS_DEF_DSS_PROV                          WINELIB_NAME_AW(MS_DEF_DSS_PROV_)
     1717
     1718#define MS_DEF_DSS_DH_PROV_A                     "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider"
     1719#if defined(__GNUC__)
     1720# define MS_DEF_DSS_DH_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
     1721        'B','a','s','e',' ','D','S','S',' ','a','n','d',' ', \
     1722        'D','i','f','f','i','e','-','H','e','l','l','m','a','n',' ', \
     1723        'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
     1724#elif defined(_MSC_VER)
     1725# define MS_DEF_DSS_DH_PROV_W     L"Microsoft Base DSS and Diffie-Hellman Cryptographic Provider"
     1726#else
     1727static const WCHAR MS_DEF_DSS_DH_PROV_W[] =      { 'M','i','c','r','o','s','o','f','t',' ',
     1728        'B','a','s','e',' ','D','S','S',' ','a','n','d',' ',
     1729        'D','i','f','f','i','e','-','H','e','l','l','m','a','n',' ',
     1730        'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
     1731#endif
     1732#define MS_DEF_DSS_DH_PROV                       WINELIB_NAME_AW(MS_DEF_DSS_DH_PROV_)
     1733
     1734#define MS_ENH_DSS_DH_PROV_A                     "Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider"
     1735#if defined(__GNUC__)
     1736# define MS_ENH_DSS_DH_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
     1737        'E','n','h','a','n','c','e','d',' ','D','S','S',' ','a','n','d',' ', \
     1738        'D','i','f','f','i','e','-','H','e','l','l','m','a','n',' ', \
     1739        'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
     1740#elif defined(_MSC_VER)
     1741# define MS_ENH_DSS_DH_PROV_W     L"Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider"
     1742#else
     1743static const WCHAR MS_ENH_DSS_DH_PROV_W[] =      { 'M','i','c','r','o','s','o','f','t',' ',
     1744        'E','n','h','a','n','c','e','d',' ','D','S','S',' ','a','n','d',' ',
     1745        'D','i','f','f','i','e','-','H','e','l','l','m','a','n',' ',
     1746        'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
     1747#endif
     1748#define MS_ENH_DSS_DH_PROV                       WINELIB_NAME_AW(MS_ENH_DSS_DH_PROV_)
     1749
     1750#define MS_DEF_DH_SCHANNEL_PROV_A                "Microsoft DH SChannel Cryptographic Provider"
     1751#if defined(__GNUC__)
     1752# define MS_DEF_DH_SCHANNEL_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
     1753        'D','H',' ','S','C','h','a','n','n','e','l',' ', \
     1754        'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
     1755#elif defined(_MSC_VER)
     1756# define MS_DEF_DH_SCHANNEL_PROV_W     L"Microsoft DH SChannel Cryptographic Provider"
     1757#else
     1758static const WCHAR MS_DEF_DH_SCHANNEL_PROV_W[] = { 'M','i','c','r','o','s','o','f','t',' ',
     1759        'D','H',' ','S','C','h','a','n','n','e','l',' ',
     1760        'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
     1761#endif
     1762#define MS_DEF_DH_SCHANNEL_PROV                  WINELIB_NAME_AW(MS_DEF_DH_SCHANNEL_PROV_)
     1763
     1764#define MS_SCARD_PROV_A                          "Microsoft Base Smart Card Cryptographic Provider"
     1765#if defined(__GNUC__)
     1766# define MS_SCARD_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
     1767        'B','a','s','e',' ','S','m','a','r','t',' ','C','a','r','d',' ', \
     1768        'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
     1769#elif defined(_MSC_VER)
     1770# define MS_SCARD_PROV_W     L"Microsoft Base Smart Card Cryptographic Provider"
     1771#else
     1772static const WCHAR MS_SCARD_PROV_W[] =           { 'M','i','c','r','o','s','o','f','t',' ',
     1773        'B','a','s','e',' ','S','m','a','r','t',' ','C','a','r','d',' ',
     1774        'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
     1775#endif
     1776#define MS_SCARD_PROV                            WINELIB_NAME_AW(MS_SCARD_PROV_)
     1777
     1778#define MS_ENH_RSA_AES_PROV_A                          "Microsoft Enhanced RSA and AES Cryptographic Provider"
     1779#if defined(__GNUC__)
     1780# define MS_ENH_RSA_AES_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
     1781        'E','n','h','a','n','c','e','d',' ','R','S','A',' ','a','n','d',' ','A','E','S',' ',\
     1782        'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
     1783#elif defined(_MSC_VER)
     1784# define MS_ENH_RSA_AES_PROV_W     L"Microsoft Enhanced RSA and AES Cryptographic Provider"
     1785#else
     1786static const WCHAR MS_ENH_RSA_AES_PROV_W[] =           { 'M','i','c','r','o','s','o','f','t',' ',
     1787        'E','n','h','a','n','c','e','d',' ','R','S','A',' ','a','n','d',' ','A','E','S',' ',
     1788        'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
     1789#endif
     1790#define MS_ENH_RSA_AES_PROV                            WINELIB_NAME_AW(MS_ENH_RSA_AES_PROV_)
     1791
     1792/* Key Specs*/
    951793#define AT_KEYEXCHANGE          1
    961794#define AT_SIGNATURE            2
    971795
    98 #define CRYPT_USERDATA          1
    99 
     1796/* Provider Types */
     1797#define PROV_RSA_FULL             1
     1798#define PROV_RSA_SIG              2
     1799#define PROV_DSS                  3
     1800#define PROV_FORTEZZA             4
     1801#define PROV_MS_EXCHANGE          5
     1802#define PROV_SSL                  6
     1803#define PROV_RSA_SCHANNEL         12
     1804#define PROV_DSS_DH               13
     1805#define PROV_EC_ECDSA_SIG         14
     1806#define PROV_EC_ECNRA_SIG         15
     1807#define PROV_EC_ECDSA_FULL        16
     1808#define PROV_EC_ECNRA_FULL        17
     1809#define PROV_DH_SCHANNEL          18
     1810#define PROV_SPYRUS_LYNKS         20
     1811#define PROV_RNG                  21
     1812#define PROV_INTEL_SEC            22
     1813#define PROV_REPLACE_OWF          23
     1814#define PROV_RSA_AES              24
     1815
     1816/* FLAGS Section */
     1817
     1818#define CRYPT_FIRST             1
     1819#define CRYPT_NEXT              2
     1820
     1821#define CRYPT_IMPL_HARDWARE     1
     1822#define CRYPT_IMPL_SOFTWARE     2
     1823#define CRYPT_IMPL_MIXED        3
     1824#define CRYPT_IMPL_UNKNOWN      4
     1825
     1826/* CryptAcquireContext */
     1827#define CRYPT_VERIFYCONTEXT       0xF0000000
     1828#define CRYPT_NEWKEYSET           0x00000008
     1829#define CRYPT_DELETEKEYSET        0x00000010
     1830#define CRYPT_MACHINE_KEYSET      0x00000020
     1831#define CRYPT_SILENT              0x00000040
     1832
     1833/* Crypt{Get|Set}Provider */
     1834#define CRYPT_MACHINE_DEFAULT     0x00000001
     1835#define CRYPT_USER_DEFAULT        0x00000002
     1836#define CRYPT_DELETE_DEFAULT      0x00000004
     1837
     1838/* Crypt{Get/Set}ProvParam */
     1839#define PP_CLIENT_HWND          1
     1840#define PP_ENUMALGS             1
     1841#define PP_ENUMCONTAINERS       2
     1842#define PP_IMPTYPE              3
     1843#define PP_NAME                 4
     1844#define PP_VERSION              5
     1845#define PP_CONTAINER            6
     1846#define PP_CHANGE_PASSWORD      7
     1847#define PP_KEYSET_SEC_DESCR     8
     1848#define PP_KEY_TYPE_SUBTYPE     10
     1849#define PP_CONTEXT_INFO         11
     1850#define PP_KEYEXCHANGE_KEYSIZE  12
     1851#define PP_SIGNATURE_KEYSIZE    13
     1852#define PP_KEYEXCHANGE_ALG      14
     1853#define PP_SIGNATURE_ALG        15
     1854#define PP_PROVTYPE             16
     1855#define PP_KEYSTORAGE           17
     1856#define PP_SYM_KEYSIZE          19
     1857#define PP_SESSION_KEYSIZE      20
     1858#define PP_UI_PROMPT            21
     1859#define PP_ENUMALGS_EX          22
     1860#define PP_DELETEKEY            24
     1861#define PP_ENUMMANDROOTS        25
     1862#define PP_ENUMELECTROOTS       26
     1863#define PP_KEYSET_TYPE          27
     1864#define PP_ADMIN_PIN            31
     1865#define PP_KEYEXCHANGE_PIN      32
     1866#define PP_SIGNATURE_PIN        33
     1867#define PP_SIG_KEYSIZE_INC      34
     1868#define PP_KEYX_KEYSIZE_INC     35
     1869#define PP_UNIQUE_CONTAINER     36
     1870#define PP_SGC_INFO             37
     1871#define PP_USE_HARDWARE_RNG     38
     1872#define PP_KEYSPEC              39
     1873#define PP_ENUMEX_SIGNING_PROT  40
     1874#define PP_CRYPT_COUNT_KEY_USE  41
     1875#define PP_USER_CERTSTORE       42
     1876#define PP_SMARTCARD_READER     43
     1877#define PP_SMARTCARD_GUID       45
     1878#define PP_ROOT_CERTSTORE       46
     1879
     1880/* Values returned by CryptGetProvParam of PP_KEYSTORAGE */
     1881#define CRYPT_SEC_DESCR         0x00000001
     1882#define CRYPT_PSTORE            0x00000002
     1883#define CRYPT_UI_PROMPT         0x00000004
     1884
     1885/* Crypt{Get/Set}KeyParam */
    1001886#define KP_IV                   1
    1011887#define KP_SALT                 2
     
    1061892#define KP_ALGID                7
    1071893#define KP_BLOCKLEN             8
    108 
    109 #define PKCS5_PADDING           1
    110 
     1894#define KP_KEYLEN               9
     1895#define KP_SALT_EX              10
     1896#define KP_P                    11
     1897#define KP_G                    12
     1898#define KP_Q                    13
     1899#define KP_X                    14
     1900#define KP_Y                    15
     1901#define KP_RA                   16
     1902#define KP_RB                   17
     1903#define KP_INFO                 18
     1904#define KP_EFFECTIVE_KEYLEN     19
     1905#define KP_SCHANNEL_ALG         20
     1906#define KP_CLIENT_RANDOM        21
     1907#define KP_SERVER_RANDOM        22
     1908#define KP_RP                   23
     1909#define KP_PRECOMP_MD5          24
     1910#define KP_PRECOMP_SHA          25
     1911#define KP_CERTIFICATE          26
     1912#define KP_CLEAR_KEY            27
     1913#define KP_PUB_EX_LEN           28
     1914#define KP_PUB_EX_VAL           29
     1915#define KP_KEYVAL               30
     1916#define KP_ADMIN_PIN            31
     1917#define KP_KEYEXCHANGE_PIN      32
     1918#define KP_SIGNATURE_PIN        33
     1919#define KP_PREHASH              34
     1920#define KP_ROUNDS               35
     1921#define KP_OAEP_PARAMS          36
     1922#define KP_CMS_KEY_INFO         37
     1923#define KP_CMS_DH_KEY_INFO      38
     1924#define KP_PUB_PARAMS           39
     1925#define KP_VERIFY_PARAMS        40
     1926#define KP_HIGHEST_VERSION      41
     1927#define KP_GET_USE_COUNT        42
     1928
     1929/* Values for KP_PADDING */
     1930#define PKCS5_PADDING  1
     1931#define RANDOM_PADDING 2
     1932#define ZERO_PADDING   3
     1933
     1934/* CryptSignHash/CryptVerifySignature */
     1935#define CRYPT_NOHASHOID         0x00000001
     1936#define CRYPT_TYPE2_FORMAT      0x00000002
     1937#define CRYPT_X931_FORMAT       0x00000004
     1938
     1939/* Crypt{Get,Set}HashParam */
     1940#define HP_ALGID                0x0001
     1941#define HP_HASHVAL              0x0002
     1942#define HP_HASHSIZE             0x0004
     1943#define HP_HMAC_INFO            0x0005
     1944#define HP_TLS1PRF_LABEL        0x0006
     1945#define HP_TLS1PRF_SEED         0x0007
     1946
     1947/* Crypt{Get,Set}KeyParam */
    1111948#define CRYPT_MODE_CBC          1
    1121949#define CRYPT_MODE_ECB          2
    1131950#define CRYPT_MODE_OFB          3
    1141951#define CRYPT_MODE_CFB          4
    115 #define CRYPT_MODE_CTS          5
    116 
    117 #define CRYPT_ENCRYPT           0x0001
     1952
     1953#define CRYPT_ENCRYPT           0x0001
    1181954#define CRYPT_DECRYPT           0x0002
    1191955#define CRYPT_EXPORT            0x0004
     
    1221958#define CRYPT_MAC               0x0020
    1231959
    124 #define HP_ALGID                0x0001
    125 #define HP_HASHVAL              0x0002
    126 #define HP_HASHSIZE             0x0004
    127 
    128 
    129 #define CRYPT_FAILED            FALSE
    130 #define CRYPT_SUCCEED           TRUE
    131 
    132 #define RCRYPT_SUCCEEDED(rt)     ((rt) == CRYPT_SUCCEED)
    133 #define RCRYPT_FAILED(rt)        ((rt) == CRYPT_FAILED)
    134 
    135 #define PP_ENUMALGS             1
    136 #define PP_ENUMCONTAINERS       2
    137 #define PP_IMPTYPE              3
    138 #define PP_NAME                 4
    139 #define PP_VERSION              5
    140 #define PP_CONTAINER            6
    141 
    142 #define CRYPT_FIRST             1
    143 #define CRYPT_NEXT              2
    144 
    145 #define CRYPT_IMPL_HARDWARE     1
    146 #define CRYPT_IMPL_SOFTWARE     2
    147 #define CRYPT_IMPL_MIXED        3
    148 #define CRYPT_IMPL_UNKNOWN      4
    149 
    150 #define PP_CLIENT_HWND          1
    151 
    152 #define PROV_RSA_FULL           1
    153 #define PROV_RSA_SIG            2
    154 #define PROV_DSS                3
    155 #define PROV_FORTEZZA           4
    156 #define PROV_MS_EXCHANGE        5
    157 #define PROV_SSL                6
    158 
    159 #define PROV_STT_MER            7
    160 #define PROV_STT_ACQ            8
    161 #define PROV_STT_BRND           9
    162 #define PROV_STT_ROOT           10
    163 #define PROV_STT_ISS            11
    164 
    165 #define MAXUIDLEN               64
     1960/* Crypt*Key */
     1961#define CRYPT_EXPORTABLE        0x00000001
     1962#define CRYPT_USER_PROTECTED    0x00000002
     1963#define CRYPT_CREATE_SALT       0x00000004
     1964#define CRYPT_UPDATE_KEY        0x00000008
     1965#define CRYPT_NO_SALT           0x00000010
     1966#define CRYPT_PREGEN            0x00000040
     1967#define CRYPT_SERVER            0x00000400
     1968#define CRYPT_ARCHIVABLE        0x00004000
     1969
     1970/* CryptExportKey */
     1971#define CRYPT_SSL2_FALLBACK     0x00000002
     1972#define CRYPT_DESTROYKEY        0x00000004
     1973#define CRYPT_OAEP              0x00000040
     1974
     1975/* CryptHashSessionKey */
     1976#define CRYPT_LITTLE_ENDIAN     0x00000001
     1977
     1978/* Crypt{Protect,Unprotect}Data PROMPTSTRUCT flags */
     1979#define CRYPTPROTECT_PROMPT_ON_PROTECT    0x0001
     1980#define CRYPTPROTECT_PROMPT_ON_UNPROTECT  0x0002
     1981/* Crypt{Protect,Unprotect}Data flags */
     1982#define CRYPTPROTECT_UI_FORBIDDEN       0x0001
     1983#define CRYPTPROTECT_LOCAL_MACHINE      0x0004
     1984#define CRYPTPROTECT_AUDIT              0x0010
     1985#define CRYPTPROTECT_VERIFY_PROTECTION  0x0040
     1986
     1987/* Blob Types */
     1988#define SIMPLEBLOB              0x1
     1989#define PUBLICKEYBLOB           0x6
     1990#define PRIVATEKEYBLOB          0x7
     1991#define PLAINTEXTKEYBLOB        0x8
     1992#define OPAQUEKEYBLOB           0x9
     1993#define PUBLICKEYBLOBEX         0xA
     1994#define SYMMETRICWRAPKEYBLOB    0xB
    1661995
    1671996#define CUR_BLOB_VERSION        2
    1681997
    169 typedef struct _VTableProvStruc {
    170     DWORD   Version;
    171     FARPROC FuncVerifyImage;
    172     FARPROC FuncReturnhWnd;
    173 } VTableProvStruc, *PVTableProvStruc;
    174 
    175 typedef unsigned long HCRYPTPROV;
    176 typedef unsigned long HCRYPTKEY;
    177 typedef unsigned long HCRYPTHASH;
    178 
    179 typedef struct _PROV_ENUMALGS {
    180     ALG_ID    aiAlgid;
    181     DWORD     dwBitLen;
    182     DWORD     dwNameLen;
    183     CHAR      szName[20];
    184 } PROV_ENUMALGS;
    185 
    186 typedef struct _PUBLICKEYSTRUC {
    187         BYTE    bType;
    188         BYTE    bVersion;
    189         WORD    reserved;
    190         ALG_ID  aiKeyAlg;
    191 } PUBLICKEYSTRUC;
    192 
    193 typedef struct _RSAPUBKEY {
    194         DWORD   magic;
    195         DWORD   bitlen;
    196         DWORD   pubexp;
    197 } RSAPUBKEY;
     1998/* cert store provider types */
     1999#define CERT_STORE_PROV_MSG                  ((LPCSTR)1)
     2000#define CERT_STORE_PROV_MEMORY               ((LPCSTR)2)
     2001#define CERT_STORE_PROV_FILE                 ((LPCSTR)3)
     2002#define CERT_STORE_PROV_REG                  ((LPCSTR)4)
     2003#define CERT_STORE_PROV_PKCS7                ((LPCSTR)5)
     2004#define CERT_STORE_PROV_SERIALIZED           ((LPCSTR)6)
     2005#define CERT_STORE_PROV_FILENAME_A           ((LPCSTR)7)
     2006#define CERT_STORE_PROV_FILENAME_W           ((LPCSTR)8)
     2007#define CERT_STORE_PROV_SYSTEM_A             ((LPCSTR)9)
     2008#define CERT_STORE_PROV_SYSTEM_W             ((LPCSTR)10)
     2009#define CERT_STORE_PROV_SYSTEM               CERT_STORE_PROV_SYSTEM_W
     2010#define CERT_STORE_PROV_COLLECTION           ((LPCSTR)11)
     2011#define CERT_STORE_PROV_SYSTEM_REGISTRY_A    ((LPCSTR)12)
     2012#define CERT_STORE_PROV_SYSTEM_REGISTRY_W    ((LPCSTR)13)
     2013#define CERT_STORE_PROV_SYSTEM_REGISTRY      CERT_STORE_PROV_SYSTEM_REGISTRY_W
     2014#define CERT_STORE_PROV_PHYSICAL_W           ((LPCSTR)14)
     2015#define CERT_STORE_PROV_PHYSICAL             CERT_STORE_PROV_PHYSICAL_W
     2016#define CERT_STORE_PROV_SMART_CARD_W         ((LPCSTR)15)
     2017#define CERT_STORE_PROV_SMART_CARD           CERT_STORE_PROV_SMART_CARD_W
     2018#define CERT_STORE_PROV_LDAP_W               ((LPCSTR)16)
     2019#define CERT_STORE_PROV_LDAP                 CERT_STORE_PROV_LDAP_W
     2020
     2021#define sz_CERT_STORE_PROV_MEMORY            "Memory"
     2022#define sz_CERT_STORE_PROV_FILENAME_W        "File"
     2023#define sz_CERT_STORE_PROV_FILENAME          sz_CERT_STORE_PROV_FILENAME_W
     2024#define sz_CERT_STORE_PROV_SYSTEM_W          "System"
     2025#define sz_CERT_STORE_PROV_SYSTEM            sz_CERT_STORE_PROV_SYSTEM_W
     2026#define sz_CERT_STORE_PROV_PKCS7             "PKCS7"
     2027#define sz_CERT_STORE_PROV_SERIALIZED        "Serialized"
     2028#define sz_CERT_STORE_PROV_COLLECTION        "Collection"
     2029#define sz_CERT_STORE_PROV_SYSTEM_REGISTRY_W "SystemRegistry"
     2030#define sz_CERT_STORE_PROV_SYSTEM_REGISTRY   sz_CERT_STORE_PROV_SYSTEM_REGISTRY_W
     2031#define sz_CERT_STORE_PROV_PHYSICAL_W        "Physical"
     2032#define sz_CERT_STORE_PROV_PHYSICAL          sz_CERT_STORE_PROV_PHYSICAL_W
     2033#define sz_CERT_STORE_PROV_SMART_CARD_W      "SmartCard"
     2034#define sz_CERT_STORE_PROV_SMART_CARD        sz_CERT_STORE_PROV_SMART_CARD_W
     2035#define sz_CERT_STORE_PROV_LDAP_W            "Ldap"
     2036#define sz_CERT_STORE_PROV_LDAP              sz_CERT_STORE_PROV_LDAP_W
     2037
     2038/* types for CertOpenStore dwEncodingType */
     2039#define CERT_ENCODING_TYPE_MASK 0x0000ffff
     2040#define CMSG_ENCODING_TYPE_MASK 0xffff0000
     2041#define GET_CERT_ENCODING_TYPE(x) ((x) & CERT_ENCODING_TYPE_MASK)
     2042#define GET_CMSG_ENCODING_TYPE(x) ((x) & CMSG_ENCODING_TYPE_MASK)
     2043
     2044#define CRYPT_ASN_ENCODING  0x00000001
     2045#define CRYPT_NDR_ENCODING  0x00000002
     2046#define X509_ASN_ENCODING   0x00000001
     2047#define X509_NDR_ENCODING   0x00000002
     2048#define PKCS_7_ASN_ENCODING 0x00010000
     2049#define PKCS_7_NDR_ENCODING 0x00020000
     2050
     2051/* system store locations */
     2052#define CERT_SYSTEM_STORE_LOCATION_MASK  0x00ff0000
     2053#define CERT_SYSTEM_STORE_LOCATION_SHIFT 16
     2054
     2055/* system store location ids */
     2056/* hkcu */
     2057#define CERT_SYSTEM_STORE_CURRENT_USER_ID               1
     2058/* hklm */
     2059#define CERT_SYSTEM_STORE_LOCAL_MACHINE_ID              2
     2060/* hklm\Software\Microsoft\Cryptography\Services */
     2061#define CERT_SYSTEM_STORE_CURRENT_SERVICE_ID            4
     2062#define CERT_SYSTEM_STORE_SERVICES_ID                   5
     2063/* HKEY_USERS */
     2064#define CERT_SYSTEM_STORE_USERS_ID                      6
     2065/* hkcu\Software\Policies\Microsoft\SystemCertificates */
     2066#define CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY_ID  7
     2067/* hklm\Software\Policies\Microsoft\SystemCertificates */
     2068#define CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY_ID 8
     2069/* hklm\Software\Microsoft\EnterpriseCertificates */
     2070#define CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE_ID   9
     2071
     2072/* system store location values */
     2073#define CERT_SYSTEM_STORE_CURRENT_USER \
     2074 (CERT_SYSTEM_STORE_CURRENT_USER_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
     2075#define CERT_SYSTEM_STORE_LOCAL_MACHINE \
     2076 (CERT_SYSTEM_STORE_LOCAL_MACHINE_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
     2077#define CERT_SYSTEM_STORE_CURRENT_SERVICE \
     2078 (CERT_SYSTEM_STORE_CURRENT_SERVICE_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
     2079#define CERT_SYSTEM_STORE_SERVICES \
     2080 (CERT_SYSTEM_STORE_SERVICES_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
     2081#define CERT_SYSTEM_STORE_USERS \
     2082 (CERT_SYSTEM_STORE_USERS_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
     2083#define CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY \
     2084 (CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
     2085#define CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY \
     2086 (CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
     2087#define CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE \
     2088 (CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
     2089
     2090#if defined(__GNUC__)
     2091#define CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH (const WCHAR[])\
     2092 {'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t',\
     2093  '\\','S','y','s','t','e','m','C','e','r','t','i','f','i','c','a','t','e','s',\
     2094  0 }
     2095#define CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH (const WCHAR[])\
     2096 {'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\',\
     2097  'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r',\
     2098  't','i','f','i','c','a','t','e','s',0 }
     2099#elif defined(_MSC_VER)
     2100#define CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH \
     2101 L"Software\\Microsoft\\SystemCertificates"
     2102#define CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH \
     2103 L"Software\\Policies\\Microsoft\\SystemCertificates"
     2104#else
     2105static const WCHAR CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH[] =
     2106 {'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\',
     2107  'S','y','s','t','e','m','C','e','r','t','i','f','i','c','a','t','e','s',0 };
     2108static const WCHAR CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH[] =
     2109 {'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\',
     2110  'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r',
     2111  't','i','f','i','c','a','t','e','s',0 };
     2112#endif
     2113
     2114#if defined(__GNUC__)
     2115#define CERT_EFSBLOB_REGPATH (const WCHAR[])\
     2116{'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\',\
     2117 'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r',\
     2118 't','i','f','i','c','a','t','e','s','\\','E','F','S',0 }
     2119#define CERT_EFSBLOB_VALUE_NAME (const WCHAR[]) {'E','F','S','B','l','o','b',0 }
     2120#elif defined(_MSC_VER)
     2121#define CERT_EFSBLOB_REGPATH CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"\\EFS"
     2122#define CERT_EFSBLOB_VALUE_NAME L"EFSBlob"
     2123#else
     2124static const WCHAR CERT_EFSBLOB_REGPATH[] =
     2125 {'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\',
     2126  'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r',
     2127  't','i','f','i','c','a','t','e','s','\\','E','F','S',0 };
     2128static const CERT_EFSBLOB_VALUE_NAME[] = { 'E','F','S','B','l','o','b',0 };
     2129#endif
     2130
     2131#if defined(__GNUC__)
     2132#define CERT_PROT_ROOT_FLAGS_REGPATH (const WCHAR[])\
     2133{'\\','R','o','o','t','\\','P','r','o','t','e','c','t','e','d','R','o','o','t',\
     2134 's',0 }
     2135#define CERT_PROT_ROOT_FLAGS_VALUE_NAME (const WCHAR[])\
     2136{'F','l','a','g','s',0 }
     2137#elif defined(_MSC_VER)
     2138#define CERT_PROT_ROOT_FLAGS_REGPATH L"\\Root\\ProtectedRoots"
     2139#define CERT_PROT_ROOT_FLAGS_VALUE_NAME L"Flags"
     2140#else
     2141static const WCHAR CERT_PROT_ROOT_FLAGS_REGPATH[] =
     2142 { '\\','R','o','o','t','\\','P','r','o','t','e','c','t','e','d','R','o','o',
     2143   't','s',0 };
     2144static const WCHAR CERT_PROT_ROOT_FLAGS_VALUE_NAME[] = {'F','l','a','g','s',0 };
     2145#endif
     2146
     2147#define CERT_PROT_ROOT_DISABLE_CURRENT_USER_FLAG                0x01
     2148#define CERT_PROT_ROOT_INHIBIT_ADD_AT_INIT_FLAG                 0x02
     2149#define CERT_PROT_ROOT_INHIBIT_PURGE_LM_FLAG                    0x04
     2150#define CERT_PROT_ROOT_DISABLE_LM_AUTH_FLAG                     0x08
     2151#define CERT_PROT_ROOT_DISABLE_NT_AUTH_REQUIRED_FLAG            0x10
     2152#define CERT_PROT_ROOT_DISABLE_NOT_DEFINED_NAME_CONSTRAINT_FLAG 0x20
     2153
     2154#if defined(__GNUC__)
     2155#define CERT_TRUST_PUB_SAFER_GROUP_POLICY_REGPATH (const WCHAR[])\
     2156{'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\',\
     2157 'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r',\
     2158 't','i','f','i','c','a','t','e','s','\\','T','r','u','s','t','e','d',\
     2159 'P','u','b','l','i','s','h','e','r','\\','S','a','f','e','r',0 }
     2160#elif defined(_MSC_VER)
     2161#define CERT_TRUST_PUB_SAFER_GROUP_POLICY_REGPATH \
     2162 CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"\\TrustedPublisher\\Safer"
     2163#else
     2164static const WCHAR CERT_TRUST_PUB_SAFER_GROUP_POLICY_REGPATH[] =
     2165 {'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\',
     2166  'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r',
     2167  't','i','f','i','c','a','t','e','s','\\','T','r','u','s','t','e','d',
     2168  'P','u','b','l','i','s','h','e','r','\\','S','a','f','e','r',0 };
     2169#endif
     2170
     2171#if defined(__GNUC__)
     2172#define CERT_TRUST_PUB_SAFER_LOCAL_MACHINE_REGPATH (const WCHAR[])\
     2173{'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\',\
     2174 'S','y','s','t','e','m','C','e','r','t','i','f','i','c','a','t','e','s','\\',\
     2175 'T','r','u','s','t','e','d','P','u','b','l','i','s','h','e','r','\\',\
     2176 'S','a','f','e','r',0 }
     2177#define CERT_TRUST_PUB_AUTHENTICODE_FLAGS_VALUE_NAME (const WCHAR[])\
     2178{'A','u','t','h','e','n','t','i','c','o','d','e','F','l','a','g','s',0 };
     2179#elif defined(_MSC_VER)
     2180#define CERT_TRUST_PUB_SAFER_LOCAL_MACHINE_REGPATH \
     2181 CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH L"\\TrustedPublisher\\Safer"
     2182#define CERT_TRUST_PUB_AUTHENTICODE_FLAGS_VALUE_NAME L"AuthenticodeFlags"
     2183#else
     2184static const WCHAR CERT_TRUST_PUB_SAFER_LOCAL_MACHINE_REGPATH[] =
     2185 {'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\',
     2186  'S','y','s','t','e','m','C','e','r','t','i','f','i','c','a','t','e','s','\\',
     2187  'T','r','u','s','t','e','d','P','u','b','l','i','s','h','e','r','\\',
     2188  'S','a','f','e','r',0 };
     2189static const WCHAR CERT_TRUST_PUB_AUTHENTICODE_FLAGS_VALUE_NAME[] =
     2190 { 'A','u','t','h','e','n','t','i','c','o','d','e','F','l','a','g','s',0 };
     2191#endif
     2192
     2193#define CERT_TRUST_PUB_ALLOW_END_USER_TRUST         0x00000000
     2194#define CERT_TRUST_PUB_ALLOW_MACHINE_ADMIN_TRUST    0x00000001
     2195#define CERT_TRUST_PUB_ALLOW_ENTERPRISE_ADMIN_TRUST 0x00000002
     2196#define CERT_TRUST_PUB_ALLOW_TRUST_MASK             0x00000003
     2197#define CERT_TRUST_PUB_CHECK_PUBLISHER_REV_FLAG     0x00000100
     2198#define CERT_TRUST_PUB_CHECK_TIMESTAMP_REV_FLAG     0x00000200
     2199
     2200/* flags for CertOpenStore dwFlags */
     2201#define CERT_STORE_NO_CRYPT_RELEASE_FLAG            0x00000001
     2202#define CERT_STORE_SET_LOCALIZED_NAME_FLAG          0x00000002
     2203#define CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG 0x00000004
     2204#define CERT_STORE_DELETE_FLAG                      0x00000010
     2205#define CERT_STORE_UNSAFE_PHYSICAL_FLAG             0x00000020
     2206#define CERT_STORE_SHARE_STORE_FLAG                 0x00000040
     2207#define CERT_STORE_SHARE_CONTEXT_FLAG               0x00000080
     2208#define CERT_STORE_MANIFOLD_FLAG                    0x00000100
     2209#define CERT_STORE_ENUM_ARCHIVED_FLAG               0x00000200
     2210#define CERT_STORE_UPDATE_KEYID_FLAG                0x00000400
     2211#define CERT_STORE_BACKUP_RESTORE_FLAG              0x00000800
     2212#define CERT_STORE_MAXIMUM_ALLOWED_FLAG             0x00001000
     2213#define CERT_STORE_CREATE_NEW_FLAG                  0x00002000
     2214#define CERT_STORE_OPEN_EXISTING_FLAG               0x00004000
     2215#define CERT_STORE_READONLY_FLAG                    0x00008000
     2216
     2217#define CERT_REGISTRY_STORE_REMOTE_FLAG      0x00010000
     2218#define CERT_REGISTRY_STORE_SERIALIZED_FLAG  0x00020000
     2219#define CERT_REGISTRY_STORE_ROAMING_FLAG     0x00040000
     2220#define CERT_REGISTRY_STORE_MY_IE_DIRTY_FLAG 0x00080000
     2221#define CERT_REGISTRY_STORE_LM_GPT_FLAG      0x01000000
     2222#define CERT_REGISTRY_STORE_CLIENT_GPT_FLAG  0x80000000
     2223
     2224#define CERT_FILE_STORE_COMMIT_ENABLE_FLAG 0x00010000
     2225
     2226/* CertCloseStore dwFlags */
     2227#define CERT_CLOSE_STORE_FORCE_FLAG 0x00000001
     2228#define CERT_CLOSE_STORE_CHECK_FLAG 0x00000002
     2229
     2230/* dwAddDisposition */
     2231#define CERT_STORE_ADD_NEW                                 1
     2232#define CERT_STORE_ADD_USE_EXISTING                        2
     2233#define CERT_STORE_ADD_REPLACE_EXISTING                    3
     2234#define CERT_STORE_ADD_ALWAYS                              4
     2235#define CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES 5
     2236#define CERT_STORE_ADD_NEWER                               6
     2237#define CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES            7
     2238
     2239/* Installable OID function defs */
     2240#define CRYPT_OID_OPEN_STORE_PROV_FUNC     "CertDllOpenStoreProv"
     2241#define CRYPT_OID_ENCODE_OBJECT_FUNC       "CryptDllEncodeObject"
     2242#define CRYPT_OID_DECODE_OBJECT_FUNC       "CryptDllDecodeObject"
     2243#define CRYPT_OID_ENCODE_OBJECT_EX_FUNC    "CryptDllEncodeObjectEx"
     2244#define CRYPT_OID_DECODE_OBJECT_EX_FUNC    "CryptDllDecodeObjectEx"
     2245#define CRYPT_OID_CREATE_COM_OBJECT_FUNC   "CryptDllCreateComObject"
     2246#define CRYPT_OID_VERIFY_REVOCATION_FUNC   "CertDllVerifyRevocation"
     2247#define CRYPT_OID_VERIFY_CTL_USAGE_FUNC    "CertDllVerifyCTLUsage"
     2248#define CRYPT_OID_FORMAT_OBJECT_FUNC       "CryptDllFormatObject"
     2249#define CRYPT_OID_FIND_OID_INFO_FUNC       "CryptDllFindOIDInfo"
     2250#define CRYPT_OID_FIND_LOCALIZED_NAME_FUNC "CryptDllFindLocalizedName"
     2251#define CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_FUNC  "CryptDllExportPublicKeyInfoEx"
     2252#define CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_FUNC  "CryptDllImportPublicKeyInfoEx"
     2253#define CRYPT_OID_EXPORT_PRIVATE_KEY_INFO_FUNC "CryptDllExportPrivateKeyInfoEx"
     2254#define CRYPT_OID_IMPORT_PRIVATE_KEY_INFO_FUNC "CryptDllImportPrivateKeyInfoEx"
     2255#define CRYPT_OID_VERIFY_CERTIFICATE_CHAIN_POLICY_FUNC \
     2256 "CertDllVerifyCertificateChainPolicy"
     2257#define URL_OID_GET_OBJECT_URL_FUNC    "UrlDllGetObjectUrl"
     2258#define TIME_VALID_OID_GET_OBJECT_FUNC "TimeValidDllGetObject"
     2259
     2260#define CRYPT_OID_REGPATH "Software\\Microsoft\\Cryptography\\OID"
     2261#define CRYPT_OID_REG_ENCODING_TYPE_PREFIX "EncodingType "
     2262#if defined(__GNUC__)
     2263# define CRYPT_OID_REG_DLL_VALUE_NAME (const WCHAR []){ 'D','l','l',0 }
     2264# define CRYPT_OID_REG_FUNC_NAME_VALUE_NAME \
     2265 (const WCHAR []){ 'F','u','n','c','N','a','m','e',0 }
     2266# define CRYPT_OID_REG_FLAGS_VALUE_NAME \
     2267 (const WCHAR []){ 'C','r','y','p','t','F','l','a','g','s',0 }
     2268#elif defined(_MSC_VER)
     2269# define CRYPT_OID_REG_DLL_VALUE_NAME       L"Dll"
     2270# define CRYPT_OID_REG_FUNC_NAME_VALUE_NAME L"FuncName"
     2271# define CRYPT_OID_REG_FLAGS_VALUE_NAME     L"CryptFlags"
     2272#else
     2273static const WCHAR CRYPT_OID_REG_DLL_VALUE_NAME[] = { 'D','l','l',0 };
     2274static const WCHAR CRYPT_OID_REG_FUNC_NAME_VALUE_NAME[] =
     2275 { 'F','u','n','c','N','a','m','e',0 };
     2276static const WCHAR CRYPT_OID_REG_FLAGS_VALUE_NAME[] =
     2277 { 'C','r','y','p','t','F','l','a','g','s',0 };
     2278#endif
     2279#define CRYPT_OID_REG_FUNC_NAME_VALUE_NAME_A "FuncName"
     2280#define CRYPT_DEFAULT_OID                    "DEFAULT"
     2281
     2282#define CRYPT_INSTALL_OID_FUNC_BEFORE_FLAG 1
     2283
     2284#define CRYPT_GET_INSTALLED_OID_FUNC_FLAG  0x1
     2285
     2286#define CRYPT_REGISTER_FIRST_INDEX 0
     2287#define CRYPT_REGISTER_LAST_INDEX  0xffffffff
     2288
     2289/* values for CERT_STORE_PROV_INFO's dwStoreProvFlags */
     2290#define CERT_STORE_PROV_EXTERNAL_FLAG        0x1
     2291#define CERT_STORE_PROV_DELETED_FLAG         0x2
     2292#define CERT_STORE_PROV_NO_PERSIST_FLAG      0x4
     2293#define CERT_STORE_PROV_SYSTEM_STORE_FLAG    0x8
     2294#define CERT_STORE_PROV_LM_SYSTEM_STORE_FLAG 0x10
     2295
     2296/* function indices */
     2297#define CERT_STORE_PROV_CLOSE_FUNC             0
     2298#define CERT_STORE_PROV_READ_CERT_FUNC         1
     2299#define CERT_STORE_PROV_WRITE_CERT_FUNC        2
     2300#define CERT_STORE_PROV_DELETE_CERT_FUNC       3
     2301#define CERT_STORE_PROV_SET_CERT_PROPERTY_FUNC 4
     2302#define CERT_STORE_PROV_READ_CRL_FUNC          5
     2303#define CERT_STORE_PROV_WRITE_CRL_FUNC         6
     2304#define CERT_STORE_PROV_DELETE_CRL_FUNC        7
     2305#define CERT_STORE_PROV_SET_CRL_PROPERTY_FUNC  8
     2306#define CERT_STORE_PROV_READ_CTL_FUNC          9
     2307#define CERT_STORE_PROV_WRITE_CTL_FUNC         10
     2308#define CERT_STORE_PROV_DELETE_CTL_FUNC        11
     2309#define CERT_STORE_PROV_SET_CTL_PROPERTY_FUNC  12
     2310#define CERT_STORE_PROV_CONTROL_FUNC           13
     2311#define CERT_STORE_PROV_FIND_CERT_FUNC         14
     2312#define CERT_STORE_PROV_FREE_FIND_CERT_FUNC    15
     2313#define CERT_STORE_PROV_GET_CERT_PROPERTY_FUNC 16
     2314#define CERT_STORE_PROV_FIND_CRL_FUNC          17
     2315#define CERT_STORE_PROV_FREE_FIND_CRL_FUNC     18
     2316#define CERT_STORE_PROV_GET_CRL_PROPERTY_FUNC  19
     2317#define CERT_STORE_PROV_FIND_CTL_FUNC          20
     2318#define CERT_STORE_PROV_FREE_FIND_CTL_FUNC     21
     2319#define CERT_STORE_PROV_GET_CTL_PROPERTY_FUNC  22
     2320
     2321/* physical store dwFlags, also used by CertAddStoreToCollection as
     2322 * dwUpdateFlags
     2323 */
     2324#define CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG                  0x1
     2325#define CERT_PHYSICAL_STORE_OPEN_DISABLE_FLAG                0x2
     2326#define CERT_PHYSICAL_STORE_REMOVE_OPEN_DISABLE_FLAG         0x4
     2327#define CERT_PHYSICAL_STORE_INSERT_COMPUTER_NAME_ENABLE_FLAG 0x8
     2328
     2329/* dwFlag values for CertEnumPhysicalStore callback */
     2330#define CERT_PHYSICAL_STORE_PREDEFINED_ENUM_FLAG 0x1
     2331
     2332/* predefined store names */
     2333#if defined(__GNUC__)
     2334# define CERT_PHYSICAL_STORE_DEFAULT_NAME (const WCHAR[])\
     2335 {'.','D','e','f','a','u','l','t','0'}
     2336# define CERT_PHYSICAL_STORE_GROUP_POLICY_NAME (const WCHAR[])\
     2337 {'.','G','r','o','u','p','P','o','l','i','c','y',0}
     2338# define CERT_PHYSICAL_STORE_LOCAL_MACHINE_NAME (const WCHAR[])\
     2339 {'.','L','o','c','a','l','M','a','c','h','i','n','e',0}
     2340# define CERT_PHYSICAL_STORE_DS_USER_CERTIFICATE_NAME (const WCHAR[])\
     2341 {'.','U','s','e','r','C','e','r','t','i','f','i','c','a','t','e',0}
     2342# define CERT_PHYSICAL_STORE_LOCAL_MACHINE_GROUP_POLICY_NAME (const WCHAR[])\
     2343 {'.','L','o','c','a','l','M','a','c','h','i','n','e','G','r','o','u','p',\
     2344 'P','o','l','i','c','y',0}
     2345# define CERT_PHYSICAL_STORE_ENTERPRISE_NAME (const WCHAR[])\
     2346 {'.','E','n','t','e','r','p','r','i','s','e',0}
     2347# define CERT_PHYSICAL_STORE_AUTH_ROOT_NAME (const WCHAR[])\
     2348 {'.','A','u','t','h','R','o','o','t',0}
     2349#elif defined(_MSC_VER)
     2350# define CERT_PHYSICAL_STORE_DEFAULT_NAME \
     2351 L".Default"
     2352# define CERT_PHYSICAL_STORE_GROUP_POLICY_NAME \
     2353 L".GroupPolicy"
     2354# define CERT_PHYSICAL_STORE_LOCAL_MACHINE_NAME \
     2355 L".LocalMachine"
     2356# define CERT_PHYSICAL_STORE_DS_USER_CERTIFICATE_NAME \
     2357 L".UserCertificate"
     2358# define CERT_PHYSICAL_STORE_LOCAL_MACHINE_GROUP_POLICY_NAME \
     2359 L".LocalMachineGroupPolicy"
     2360# define CERT_PHYSICAL_STORE_ENTERPRISE_NAME \
     2361 L".Enterprise"
     2362# define CERT_PHYSICAL_STORE_AUTH_ROOT_NAME \
     2363 L".AuthRoot"
     2364#else
     2365static const WCHAR CERT_PHYSICAL_STORE_DEFAULT_NAME[] =
     2366 {'.','D','e','f','a','u','l','t','0'};
     2367static const WCHAR CERT_PHYSICAL_STORE_GROUP_POLICY_NAME[] =
     2368 {'.','G','r','o','u','p','P','o','l','i','c','y',0};
     2369static const WCHAR CERT_PHYSICAL_STORE_LOCAL_MACHINE_NAME[] =
     2370 {'.','L','o','c','a','l','M','a','c','h','i','n','e',0};
     2371static const WCHAR CERT_PHYSICAL_STORE_DS_USER_CERTIFICATE_NAME[] =
     2372 {'.','U','s','e','r','C','e','r','t','i','f','i','c','a','t','e',0};
     2373static const WCHAR CERT_PHYSICAL_STORE_LOCAL_MACHINE_GROUP_POLICY_NAME[] =
     2374 {'.','L','o','c','a','l','M','a','c','h','i','n','e','G','r','o','u','p',
     2375 'P','o','l','i','c','y',0};
     2376static const WCHAR CERT_PHYSICAL_STORE_ENTERPRISE_NAME[] =
     2377 {'.','E','n','t','e','r','p','r','i','s','e',0};
     2378static const WCHAR CERT_PHYSICAL_STORE_AUTH_ROOT_NAME[] =
     2379 {'.','A','u','t','h','R','o','o','t',0};
     2380#endif
     2381
     2382/* cert system store flags */
     2383#define CERT_SYSTEM_STORE_MASK 0xffff0000
     2384#define CERT_SYSTEM_STORE_RELOCATE_FLAG 0x80000000
     2385
     2386/* CertFindChainInStore dwFindType types */
     2387#define CERT_CHAIN_FIND_BY_ISSUER 1
     2388
     2389/* CertSaveStore dwSaveAs values */
     2390#define CERT_STORE_SAVE_AS_STORE 1
     2391#define CERT_STORE_SAVE_AS_PKCS7 2
     2392/* CertSaveStore dwSaveTo values */
     2393#define CERT_STORE_SAVE_TO_FILE       1
     2394#define CERT_STORE_SAVE_TO_MEMORY     2
     2395#define CERT_STORE_SAVE_TO_FILENAME_A 3
     2396#define CERT_STORE_SAVE_TO_FILENAME_W 4
     2397#define CERT_STORE_SAVE_TO_FILENAME   CERT_STORE_SAVE_TO_FILENAME_W
     2398
     2399/* CERT_INFO versions/flags */
     2400#define CERT_V1 0
     2401#define CERT_V2 1
     2402#define CERT_V3 2
     2403#define CERT_INFO_VERSION_FLAG                 1
     2404#define CERT_INFO_SERIAL_NUMBER_FLAG           2
     2405#define CERT_INFO_SIGNATURE_ALGORITHM_FLAG     3
     2406#define CERT_INFO_ISSUER_FLAG                  4
     2407#define CERT_INFO_NOT_BEFORE_FLAG              5
     2408#define CERT_INFO_NOT_AFTER_FLAG               6
     2409#define CERT_INFO_SUBJECT_FLAG                 7
     2410#define CERT_INFO_SUBJECT_PUBLIC_KEY_INFO_FLAG 8
     2411#define CERT_INFO_ISSUER_UNIQUE_ID_FLAG        9
     2412#define CERT_INFO_SUBJECT_UNIQUE_ID_FLAG       10
     2413#define CERT_INFO_EXTENSION_FLAG               11
     2414
     2415/* CERT_REQUEST_INFO versions */
     2416#define CERT_REQUEST_V1 0
     2417
     2418/* CERT_KEYGEN_REQUEST_INFO versions */
     2419#define CERT_KEYGEN_REQUEST_V1 0
     2420
     2421/* CRL versions */
     2422#define CRL_V1 0
     2423#define CRL_V2 1
     2424
     2425/* CTL versions */
     2426#define CTL_V1 0
     2427
     2428/* Certificate, CRL, CTL property IDs */
     2429#define CERT_KEY_PROV_HANDLE_PROP_ID               1
     2430#define CERT_KEY_PROV_INFO_PROP_ID                 2
     2431#define CERT_SHA1_HASH_PROP_ID                     3
     2432#define CERT_HASH_PROP_ID                          CERT_SHA1_HASH_PROP_ID
     2433#define CERT_MD5_HASH_PROP_ID                      4
     2434#define CERT_KEY_CONTEXT_PROP_ID                   5
     2435#define CERT_KEY_SPEC_PROP_ID                      6
     2436#define CERT_IE30_RESERVED_PROP_ID                 7
     2437#define CERT_PUBKEY_HASH_RESERVED_PROP_ID          8
     2438#define CERT_ENHKEY_USAGE_PROP_ID                  9
     2439#define CERT_CTL_USAGE_PROP_ID                     CERT_ENHKEY_USAGE_PROP_ID
     2440#define CERT_NEXT_UPDATE_LOCATION_PROP_ID          10
     2441#define CERT_FRIENDLY_NAME_PROP_ID                 11
     2442#define CERT_PVK_FILE_PROP_ID                      12
     2443#define CERT_DESCRIPTION_PROP_ID                   13
     2444#define CERT_ACCESS_STATE_PROP_ID                  14
     2445#define CERT_SIGNATURE_HASH_PROP_ID                15
     2446#define CERT_SMART_CARD_DATA_PROP_ID               16
     2447#define CERT_EFS_PROP_ID                           17
     2448#define CERT_FORTEZZA_DATA_PROP                    18
     2449#define CERT_ARCHIVED_PROP_ID                      19
     2450#define CERT_KEY_IDENTIFIER_PROP_ID                20
     2451#define CERT_AUTO_ENROLL_PROP_ID                   21
     2452#define CERT_PUBKEY_ALG_PARA_PROP_ID               22
     2453#define CERT_CROSS_CERT_DIST_POINTS_PROP_ID        23
     2454#define CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID    24
     2455#define CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID   25
     2456#define CERT_ENROLLMENT_PROP_ID                    26
     2457#define CERT_DATE_STAMP_PROP_ID                    27
     2458#define CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID 28
     2459#define CERT_SUBJECT_NAME_MD5_HASH_PROP_ID         29
     2460#define CERT_EXTENDED_ERROR_INFO_PROP_ID           30
     2461/* 31    -- unused?
     2462   32    -- cert prop id
     2463   33    -- CRL prop id
     2464   34    -- CTL prop id
     2465   35    -- KeyId prop id
     2466   36-63 -- reserved
     2467 */
     2468#define CERT_RENEWAL_PROP_ID                       64
     2469#define CERT_ARCHIVED_KEY_HASH_PROP_ID             65
     2470#define CERT_AUTO_ENROLL_RETRY_PROP_ID             66
     2471#define CERT_AIA_URL_RETRIEVED_PROP_ID             67
     2472#define CERT_AUTHORITY_INFO_ACCESS_PROP_ID         68
     2473#define CERT_BACKED_UP_PROP_ID                     69
     2474#define CERT_OCSP_RESPONSE_PROP_ID                 70
     2475#define CERT_REQUEST_ORIGINATOR_PROP_ID            71
     2476#define CERT_SOURCE_LOCATION_PROP_ID               72
     2477#define CERT_SOURCE_URL_PROP_ID                    73
     2478#define CERT_NEW_KEY_PROP_ID                       74
     2479#define CERT_OCSP_CACHE_PREFIX_PROP_ID             75
     2480#define CERT_SMART_CARD_ROOT_INFO_PROP_ID          76
     2481#define CERT_NO_AUTO_EXPIRE_CHECK_PROP_ID          77
     2482#define CERT_NCRYPT_KEY_HANDLE_PROP_ID             78
     2483#define CERT_HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_PROP_ID 79
     2484#define CERT_SUBJECT_INFO_ACCESS_PROP_ID           80
     2485#define CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID 81
     2486#define CERT_CA_DISABLE_CRL_PROP_ID                82
     2487#define CERT_ROOT_PROGRAM_CERT_POLICIES_PROP_ID    83
     2488#define CERT_ROOT_PROGRAM_NAME_CONSTRAINTS_PROP_ID 84
     2489
     2490#define CERT_FIRST_RESERVED_PROP_ID                85
     2491#define CERT_LAST_RESERVED_PROP_ID                 0x00007fff
     2492#define CERT_FIRST_USER_PROP_ID                    0x00008000
     2493#define CERT_LAST_USER_PROP_ID                     0x0000ffff
     2494
     2495#define IS_CERT_HASH_PROP_ID(x) \
     2496 ((x) == CERT_SHA1_HASH_PROP_ID || (x) == CERT_MD5_HASH_PROP_ID || \
     2497  (x) == CERT_SIGNATURE_HASH_PROP_ID)
     2498
     2499#define IS_PUBKEY_HASH_PROP_ID(x) \
     2500 ((x) == CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID || \
     2501  (x) == CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID)
     2502
     2503#define IS_CHAIN_HASH_PROP_ID(x) \
     2504 ((x) == CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID || \
     2505  (x) == CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID || \
     2506  (x) == CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID || \
     2507  (x) == CERT_SUBJECT_NAME_MD5_HASH_PROP_ID)
     2508
     2509/* access state flags */
     2510#define CERT_ACCESS_STATE_WRITE_PERSIST_FLAG   0x1
     2511#define CERT_ACCESS_STATE_SYSTEM_STORE_FLAG    0x2
     2512#define CERT_ACCESS_STATE_LM_SYSTEM_STORE_FLAG 0x4
     2513
     2514/* CertSetCertificateContextProperty flags */
     2515#define CERT_SET_PROPERTY_INHIBIT_PERSIST_FLAG      0x40000000
     2516#define CERT_SET_PROPERTY_IGNORE_PERSIST_ERROR_FLAG 0x80000000
     2517
     2518/* CERT_RDN attribute dwValueType types */
     2519#define CERT_RDN_TYPE_MASK 0x000000ff
     2520#define CERT_RDN_ANY_TYPE         0
     2521#define CERT_RDN_ENCODED_BLOB     1
     2522#define CERT_RDN_OCTET_STRING     2
     2523#define CERT_RDN_NUMERIC_STRING   3
     2524#define CERT_RDN_PRINTABLE_STRING 4
     2525#define CERT_RDN_TELETEX_STRING   5
     2526#define CERT_RDN_T61_STRING       5
     2527#define CERT_RDN_VIDEOTEX_STRING  6
     2528#define CERT_RDN_IA5_STRING       7
     2529#define CERT_RDN_GRAPHIC_STRING   8
     2530#define CERT_RDN_VISIBLE_STRING   9
     2531#define CERT_RDN_ISO646_STRING    9
     2532#define CERT_RDN_GENERAL_STRING   10
     2533#define CERT_RDN_UNIVERSAL_STRING 11
     2534#define CERT_RDN_INT4_STRING      11
     2535#define CERT_RDN_BMP_STRING       12
     2536#define CERT_RDN_UNICODE_STRING   12
     2537#define CERT_RDN_UTF8_STRING      13
     2538
     2539/* CERT_RDN attribute dwValueType flags */
     2540#define CERT_RDN_FLAGS_MASK 0xff000000
     2541#define CERT_RDN_ENABLE_T61_UNICODE_FLAG  0x80000000
     2542#define CERT_RDN_DISABLE_CHECK_TYPE_FLAG  0x4000000
     2543#define CERT_RDN_ENABLE_UTF8_UNICODE_FLAG 0x2000000
     2544#define CERT_RDN_DISABLE_IE4_UTF8_FLAG    0x0100000
     2545
     2546#define IS_CERT_RDN_CHAR_STRING(x) \
     2547 (((x) & CERT_RDN_TYPE_MASK) >= CERT_RDN_NUMERIC_STRING)
     2548
     2549/* CertIsRDNAttrsInCertificateName flags */
     2550#define CERT_UNICODE_IS_RDN_ATTRS_FLAG          0x1
     2551#define CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG 0x2
     2552
     2553/* CRL reason codes */
     2554#define CRL_REASON_UNSPECIFIED            0
     2555#define CRL_REASON_KEY_COMPROMISE         1
     2556#define CRL_REASON_CA_COMPROMISE          2
     2557#define CRL_REASON_AFFILIATION_CHANGED    3
     2558#define CRL_REASON_SUPERSEDED             4
     2559#define CRL_REASON_CESSATION_OF_OPERATION 5
     2560#define CRL_REASON_CERTIFICATE_HOLD       6
     2561#define CRL_REASON_REMOVE_FROM_CRL        8
     2562
     2563/* CertControlStore control types */
     2564#define CERT_STORE_CTRL_RESYNC        1
     2565#define CERT_STORE_CTRL_NOTIFY_CHANGE 2
     2566#define CERT_STORE_CTRL_COMMIT        3
     2567#define CERT_STORE_CTRL_AUTO_RESYNC   4
     2568#define CERT_STORE_CTRL_CANCEL_NOTIFY 5
     2569
     2570#define CERT_STORE_CTRL_COMMIT_FORCE_FLAG 0x1
     2571#define CERT_STORE_CTRL_COMMIT_CLEAR_FLAG 0x2
     2572
     2573/* cert store properties */
     2574#define CERT_STORE_LOCALIZED_NAME_PROP_ID 0x1000
     2575
     2576/* CertCreateContext flags */
     2577#define CERT_CREATE_CONTEXT_NOCOPY_FLAG       0x1
     2578#define CERT_CREATE_CONTEXT_SORTED_FLAG       0x2
     2579#define CERT_CREATE_CONTEXT_NO_HCRYPTMSG_FLAG 0x4
     2580#define CERT_CREATE_CONTEXT_NO_ENTRY_FLAG     0x8
     2581
     2582#define CERT_COMPARE_MASK                   0xffff
     2583#define CERT_COMPARE_SHIFT                  16
     2584#define CERT_COMPARE_ANY                    0
     2585#define CERT_COMPARE_SHA1_HASH              1
     2586#define CERT_COMPARE_HASH                   CERT_COMPARE_SHA1_HASH
     2587#define CERT_COMPARE_NAME                   2
     2588#define CERT_COMPARE_ATTR                   3
     2589#define CERT_COMPARE_MD5_HASH               4
     2590#define CERT_COMPARE_PROPERTY               5
     2591#define CERT_COMPARE_PUBLIC_KEY             6
     2592#define CERT_COMPARE_NAME_STR_A             7
     2593#define CERT_COMPARE_NAME_STR_W             8
     2594#define CERT_COMPARE_KEY_SPEC               9
     2595#define CERT_COMPARE_ENHKEY_USAGE           10
     2596#define CERT_COMPARE_CTL_USAGE              CERT_COMPARE_ENHKEY_USAGE
     2597#define CERT_COMPARE_SUBJECT_CERT           11
     2598#define CERT_COMPARE_ISSUER_OF              12
     2599#define CERT_COMPARE_EXISTING               13
     2600#define CERT_COMPARE_SIGNATURE_HASH         14
     2601#define CERT_COMPARE_KEY_IDENTIFIER         15
     2602#define CERT_COMPARE_CERT_ID                16
     2603#define CERT_COMPARE_CROSS_CERT_DIST_POINTS 17
     2604#define CERT_COMPARE_PUBKEY_MD5_HASH        18
     2605
     2606/* values of dwFindType for CertFind*InStore */
     2607#define CERT_FIND_ANY \
     2608 (CERT_COMPARE_ANY << CERT_COMPARE_SHIFT)
     2609#define CERT_FIND_SHA1_HASH \
     2610 (CERT_COMPARE_SHA1_HASH << CERT_COMPARE_SHIFT)
     2611#define CERT_FIND_MD5_HASH \
     2612 (CERT_COMPARE_MD5_HASH << CERT_COMPARE_SHIFT)
     2613#define CERT_FIND_SIGNATURE_HASH \
     2614 (CERT_COMPARE_SIGNATURE_HASH << CERT_COMPARE_SHIFT)
     2615#define CERT_FIND_KEY_IDENTIFIER \
     2616 (CERT_COMPARE_KEY_IDENTIFIER << CERT_COMPARE_SHIFT)
     2617#define CERT_FIND_HASH CERT_FIND_SHA1_HASH
     2618#define CERT_FIND_PROPERTY \
     2619 (CERT_COMPARE_PROPERTY << CERT_COMPARE_SHIFT)
     2620#define CERT_FIND_PUBLIC_KEY \
     2621 (CERT_COMPARE_PUBLIC_KEY << CERT_COMPARE_SHIFT)
     2622#define CERT_FIND_SUBJECT_NAME \
     2623 (CERT_COMPARE_NAME << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)
     2624#define CERT_FIND_SUBJECT_ATTR \
     2625 (CERT_COMPARE_ATTR << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)
     2626#define CERT_FIND_ISSUER_NAME \
     2627 (CERT_COMPARE_NAME << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)
     2628#define CERT_FIND_ISSUER_ATTR \
     2629 (CERT_COMPARE_ATTR << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)
     2630#define CERT_FIND_SUBJECT_STR_A \
     2631 (CERT_COMPARE_NAME_STR_A << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)
     2632#define CERT_FIND_SUBJECT_STR_W \
     2633 (CERT_COMPARE_NAME_STR_W << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)
     2634#define CERT_FIND_SUBJECT_STR CERT_FIND_SUBJECT_STR_W
     2635#define CERT_FIND_ISSUER_STR_A \
     2636 (CERT_COMPARE_NAME_STR_A << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)
     2637#define CERT_FIND_ISSUER_STR_W \
     2638 (CERT_COMPARE_NAME_STR_W << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)
     2639#define CERT_FIND_ISSUER_STR CERT_FIND_ISSUER_STR_W
     2640#define CERT_FIND_KEY_SPEC \
     2641 (CERT_COMPARE_KEY_SPEC << CERT_COMPARE_SHIFT)
     2642#define CERT_FIND_ENHKEY_USAGE \
     2643 (CERT_COMPARE_ENHKEY_USAGE << CERT_COMPARE_SHIFT)
     2644#define CERT_FIND_CTL_USAGE CERT_FIND_ENHKEY_USAGE
     2645#define CERT_FIND_SUBJECT_CERT \
     2646 (CERT_COMPARE_SUBJECT_CERT << CERT_COMPARE_SHIFT)
     2647#define CERT_FIND_ISSUER_OF \
     2648 (CERT_COMPARE_ISSUER_OF << CERT_COMPARE_SHIFT)
     2649#define CERT_FIND_EXISTING \
     2650 (CERT_COMPARE_EXISTING << CERT_COMPARE_SHIFT)
     2651#define CERT_FIND_CERT_ID \
     2652 (CERT_COMPARE_CERT_ID << CERT_COMPARE_SHIFT)
     2653#define CERT_FIND_CROSS_CERT_DIST_POINTS \
     2654 (CERT_COMPARE_CROSS_CERT_DIST_POINTS << CERT_COMPARE_SHIFT)
     2655#define CERT_FIND_PUBKEY_MD5_HASH \
     2656 (CERT_COMPARE_PUBKEY_MD5_HASH << CERT_COMPARE_SHIFT)
     2657
     2658#define CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG  0x1
     2659#define CERT_FIND_OPTIONAL_CTL_USAGE_FLAG     0x1
     2660#define CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG  0x2
     2661#define CERT_FIND_EXT_ONLY_CTL_USAGE_FLAG     0x2
     2662#define CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG 0x4
     2663#define CERT_FIND_PROP_ONLY_CTL_USAGE_FLAG    0x4
     2664#define CERT_FIND_NO_ENHKEY_USAGE_FLAG        0x8
     2665#define CERT_FIND_NO_CTL_USAGE_FLAG           0x8
     2666#define CERT_FIND_OR_ENHKEY_USAGE_FLAG        0x10
     2667#define CERT_FIND_OR_CTL_USAGE_FLAG           0x10
     2668#define CERT_FIND_VALID_ENHKEY_USAGE_FLAG     0x20
     2669#define CERT_FIND_VALID_CTL_USAGE_FLAG        0x20
     2670
     2671#define CRL_FIND_ANY        0
     2672#define CRL_FIND_ISSUED_BY  1
     2673#define CRL_FIND_EXISTING   2
     2674#define CRL_FIND_ISSUED_FOR 3
     2675
     2676#define CRL_FIND_ISSUED_BY_AKI_FLAG       0x1
     2677#define CRL_FIND_ISSUED_BY_SIGNATURE_FLAG 0x2
     2678#define CRL_FIND_ISSUED_BY_DELTA_FLAG     0x4
     2679#define CRL_FIND_ISSUED_BY_BASE_FLAG      0x8
     2680
     2681typedef struct _CRL_FIND_ISSUED_FOR_PARA
     2682{
     2683    PCCERT_CONTEXT pSubjectCert;
     2684    PCCERT_CONTEXT pIssuerCert;
     2685} CRL_FIND_ISSUED_FOR_PARA, *PCRL_FIND_ISSUED_FOR_PARA;
     2686
     2687#define CTL_FIND_ANY       0
     2688#define CTL_FIND_SHA1_HASH 1
     2689#define CTL_FIND_MD5_HASH  2
     2690#define CTL_FIND_USAGE     3
     2691#define CTL_FIND_SUBJECT   4
     2692#define CTL_FIND_EXISTING  5
     2693
     2694typedef struct _CTL_FIND_USAGE_PARA
     2695{
     2696    DWORD           cbSize;
     2697    CTL_USAGE       SubjectUsage;
     2698    CRYPT_DATA_BLOB ListIdentifier;
     2699    PCERT_INFO      pSigner;
     2700} CTL_FIND_USAGE_PARA, *PCTL_FIND_USAGE_PARA;
     2701
     2702#define CTL_FIND_NO_LIST_ID_CBDATA 0xffffffff
     2703#define CTL_FIND_NO_SIGNER_PTR     ((PCERT_INFO)-1)
     2704#define CTL_FIND_SAME_USAGE_FLAG   0x00000001
     2705
     2706typedef struct _CTL_FIND_SUBJECT_PARA
     2707{
     2708    DWORD                cbSize;
     2709    PCTL_FIND_USAGE_PARA pUsagePara;
     2710    DWORD                dwSubjectType;
     2711    void                *pvSubject;
     2712} CTL_FIND_SUBJECT_PARA, *PCTL_FIND_SUBJECT_PARA;
     2713
     2714/* PFN_CERT_STORE_PROV_WRITE_CERT dwFlags values */
     2715#define CERT_STORE_PROV_WRITE_ADD_FLAG 0x1
     2716
     2717/* CertAddSerializedElementToStore context types */
     2718#define CERT_STORE_CERTIFICATE_CONTEXT 1
     2719#define CERT_STORE_CRL_CONTEXT         2
     2720#define CERT_STORE_CTL_CONTEXT         3
     2721#define CERT_STORE_ALL_CONTEXT_FLAG    ~0U
     2722#define CERT_STORE_CERTIFICATE_CONTEXT_FLAG \
     2723                                    (1 << CERT_STORE_CERTIFICATE_CONTEXT)
     2724#define CERT_STORE_CRL_CONTEXT_FLAG (1 << CERT_STORE_CRL_CONTEXT)
     2725#define CERT_STORE_CTL_CONTEXT_FLAG (1 << CERT_STORE_CTL_CONTEXT)
     2726
     2727/* CryptBinaryToString/CryptStringToBinary flags */
     2728#define CRYPT_STRING_BASE64HEADER        0x00000000
     2729#define CRYPT_STRING_BASE64              0x00000001
     2730#define CRYPT_STRING_BINARY              0x00000002
     2731#define CRYPT_STRING_BASE64REQUESTHEADER 0x00000003
     2732#define CRYPT_STRING_HEX                 0x00000004
     2733#define CRYPT_STRING_HEXASCII            0x00000005
     2734#define CRYPT_STRING_BASE64_ANY          0x00000006
     2735#define CRYPT_STRING_ANY                 0x00000007
     2736#define CRYPT_STRING_HEX_ANY             0x00000008
     2737#define CRYPT_STRING_BASE64X509CRLHEADER 0x00000009
     2738#define CRYPT_STRING_HEXADDR             0x0000000a
     2739#define CRYPT_STRING_HEXASCIIADDR        0x0000000b
     2740#define CRYPT_STRING_NOCR                0x80000000
     2741
     2742/* OIDs */
     2743#define szOID_RSA                           "1.2.840.113549"
     2744#define szOID_PKCS                          "1.2.840.113549.1"
     2745#define szOID_RSA_HASH                      "1.2.840.113549.2"
     2746#define szOID_RSA_ENCRYPT                   "1.2.840.113549.3"
     2747#define szOID_PKCS_1                        "1.2.840.113549.1.1"
     2748#define szOID_PKCS_2                        "1.2.840.113549.1.2"
     2749#define szOID_PKCS_3                        "1.2.840.113549.1.3"
     2750#define szOID_PKCS_4                        "1.2.840.113549.1.4"
     2751#define szOID_PKCS_5                        "1.2.840.113549.1.5"
     2752#define szOID_PKCS_6                        "1.2.840.113549.1.6"
     2753#define szOID_PKCS_7                        "1.2.840.113549.1.7"
     2754#define szOID_PKCS_8                        "1.2.840.113549.1.8"
     2755#define szOID_PKCS_9                        "1.2.840.113549.1.9"
     2756#define szOID_PKCS_10                       "1.2.840.113549.1.10"
     2757#define szOID_PKCS_11                       "1.2.840.113549.1.12"
     2758#define szOID_RSA_RSA                       "1.2.840.113549.1.1.1"
     2759#define CERT_RSA_PUBLIC_KEY_OBJID           szOID_RSA_RSA
     2760#define CERT_DEFAULT_OID_PUBLIC_KEY_SIGN    szOID_RSA_RSA
     2761#define CERT_DEFAULT_OID_PUBLIC_KEY_XCHG    szOID_RSA_RSA
     2762#define szOID_RSA_MD2RSA                    "1.2.840.113549.1.1.2"
     2763#define szOID_RSA_MD4RSA                    "1.2.840.113549.1.1.3"
     2764#define szOID_RSA_MD5RSA                    "1.2.840.113549.1.1.4"
     2765#define szOID_RSA_SHA1RSA                   "1.2.840.113549.1.1.5"
     2766#define szOID_RSA_SET0AEP_RSA               "1.2.840.113549.1.1.6"
     2767#define szOID_RSA_DH                        "1.2.840.113549.1.3.1"
     2768#define szOID_RSA_data                      "1.2.840.113549.1.7.1"
     2769#define szOID_RSA_signedData                "1.2.840.113549.1.7.2"
     2770#define szOID_RSA_envelopedData             "1.2.840.113549.1.7.3"
     2771#define szOID_RSA_signEnvData               "1.2.840.113549.1.7.4"
     2772#define szOID_RSA_digestedData              "1.2.840.113549.1.7.5"
     2773#define szOID_RSA_hashedData                "1.2.840.113549.1.7.5"
     2774#define szOID_RSA_encryptedData             "1.2.840.113549.1.7.6"
     2775#define szOID_RSA_emailAddr                 "1.2.840.113549.1.9.1"
     2776#define szOID_RSA_unstructName              "1.2.840.113549.1.9.2"
     2777#define szOID_RSA_contentType               "1.2.840.113549.1.9.3"
     2778#define szOID_RSA_messageDigest             "1.2.840.113549.1.9.4"
     2779#define szOID_RSA_signingTime               "1.2.840.113549.1.9.5"
     2780#define szOID_RSA_counterSign               "1.2.840.113549.1.9.6"
     2781#define szOID_RSA_challengePwd              "1.2.840.113549.1.9.7"
     2782#define szOID_RSA_unstructAddr              "1.2.840.113549.1.9.9"
     2783#define szOID_RSA_extCertAttrs              "1.2.840.113549.1.9.9"
     2784#define szOID_RSA_certExtensions            "1.2.840.113549.1.9.14"
     2785#define szOID_RSA_SMIMECapabilities         "1.2.840.113549.1.9.15"
     2786#define szOID_RSA_preferSignedData          "1.2.840.113549.1.9.15.1"
     2787#define szOID_RSA_SMIMEalg                  "1.2.840.113549.1.9.16.3"
     2788#define szOID_RSA_SMIMEalgESDH              "1.2.840.113549.1.9.16.3.5"
     2789#define szOID_RSA_SMIMEalgCMS3DESwrap       "1.2.840.113549.1.9.16.3.6"
     2790#define szOID_RSA_SMIMEalgCMSRC2wrap        "1.2.840.113549.1.9.16.3.7"
     2791#define szOID_RSA_MD2                       "1.2.840.113549.2.2"
     2792#define szOID_RSA_MD4                       "1.2.840.113549.2.4"
     2793#define szOID_RSA_MD5                       "1.2.840.113549.2.5"
     2794#define szOID_RSA_RC2CBC                    "1.2.840.113549.3.2"
     2795#define szOID_RSA_RC4                       "1.2.840.113549.3.4"
     2796#define szOID_RSA_DES_EDE3_CBC              "1.2.840.113549.3.7"
     2797#define szOID_RSA_RC5_CBCPad                "1.2.840.113549.3.9"
     2798#define szOID_ANSI_X942                     "1.2.840.10046"
     2799#define szOID_ANSI_X942_DH                  "1.2.840.10046.2.1"
     2800#define szOID_X957                          "1.2.840.10040"
     2801#define szOID_X957_DSA                      "1.2.840.10040.4.1"
     2802#define szOID_X957_SHA1DSA                  "1.2.840.10040.4.3"
     2803#define szOID_DS                            "2.5"
     2804#define szOID_DSALG                         "2.5.8"
     2805#define szOID_DSALG_CRPT                    "2.5.8.1"
     2806#define szOID_DSALG_HASH                    "2.5.8.2"
     2807#define szOID_DSALG_SIGN                    "2.5.8.3"
     2808#define szOID_DSALG_RSA                     "2.5.8.1.1"
     2809#define szOID_OIW                           "1.3.14"
     2810#define szOID_OIWSEC                        "1.3.14.3.2"
     2811#define szOID_OIWSEC_md4RSA                 "1.3.14.3.2.2"
     2812#define szOID_OIWSEC_md5RSA                 "1.3.14.3.2.3"
     2813#define szOID_OIWSEC_md4RSA2                "1.3.14.3.2.4"
     2814#define szOID_OIWSEC_desECB                 "1.3.14.3.2.6"
     2815#define szOID_OIWSEC_desCBC                 "1.3.14.3.2.7"
     2816#define szOID_OIWSEC_desOFB                 "1.3.14.3.2.8"
     2817#define szOID_OIWSEC_desCFB                 "1.3.14.3.2.9"
     2818#define szOID_OIWSEC_desMAC                 "1.3.14.3.2.10"
     2819#define szOID_OIWSEC_rsaSign                "1.3.14.3.2.11"
     2820#define szOID_OIWSEC_dsa                    "1.3.14.3.2.12"
     2821#define szOID_OIWSEC_shaDSA                 "1.3.14.3.2.13"
     2822#define szOID_OIWSEC_mdc2RSA                "1.3.14.3.2.14"
     2823#define szOID_OIWSEC_shaRSA                 "1.3.14.3.2.15"
     2824#define szOID_OIWSEC_dhCommMod              "1.3.14.3.2.16"
     2825#define szOID_OIWSEC_desEDE                 "1.3.14.3.2.17"
     2826#define szOID_OIWSEC_sha                    "1.3.14.3.2.18"
     2827#define szOID_OIWSEC_mdc2                   "1.3.14.3.2.19"
     2828#define szOID_OIWSEC_dsaComm                "1.3.14.3.2.20"
     2829#define szOID_OIWSEC_dsaCommSHA             "1.3.14.3.2.21"
     2830#define szOID_OIWSEC_rsaXchg                "1.3.14.3.2.22"
     2831#define szOID_OIWSEC_keyHashSeal            "1.3.14.3.2.23"
     2832#define szOID_OIWSEC_md2RSASign             "1.3.14.3.2.24"
     2833#define szOID_OIWSEC_md5RSASign             "1.3.14.3.2.25"
     2834#define szOID_OIWSEC_sha1                   "1.3.14.3.2.26"
     2835#define szOID_OIWSEC_dsaSHA1                "1.3.14.3.2.27"
     2836#define szOID_OIWSEC_dsaCommSHA1            "1.3.14.3.2.28"
     2837#define szOID_OIWSEC_sha1RSASign            "1.3.14.3.2.29"
     2838#define szOID_OIWDIR                        "1.3.14.7.2"
     2839#define szOID_OIWDIR_CRPT                   "1.3.14.7.2.1"
     2840#define szOID_OIWDIR_HASH                   "1.3.14.7.2.2"
     2841#define szOID_OIWDIR_SIGN                   "1.3.14.7.2.3"
     2842#define szOID_OIWDIR_md2                    "1.3.14.7.2.2.1"
     2843#define szOID_OIWDIR_md2RSA                 "1.3.14.7.2.3.1"
     2844#define szOID_INFOSEC                       "2.16.840.1.101.2.1"
     2845#define szOID_INFOSEC_sdnsSignature         "2.16.840.1.101.2.1.1.1"
     2846#define szOID_INFOSEC_mosaicSignature       "2.16.840.1.101.2.1.1.2"
     2847#define szOID_INFOSEC_sdnsConfidentiality   "2.16.840.1.101.2.1.1.3"
     2848#define szOID_INFOSEC_mosaicConfidentiality "2.16.840.1.101.2.1.1.4"
     2849#define szOID_INFOSEC_sdnsIntegrity         "2.16.840.1.101.2.1.1.5"
     2850#define szOID_INFOSEC_mosaicIntegrity       "2.16.840.1.101.2.1.1.6"
     2851#define szOID_INFOSEC_sdnsTokenProtection   "2.16.840.1.101.2.1.1.7"
     2852#define szOID_INFOSEC_mosaicTokenProtection "2.16.840.1.101.2.1.1.8"
     2853#define szOID_INFOSEC_sdnsKeyManagement     "2.16.840.1.101.2.1.1.9"
     2854#define szOID_INFOSEC_mosaicKeyManagement   "2.16.840.1.101.2.1.1.10"
     2855#define szOID_INFOSEC_sdnsKMandSig          "2.16.840.1.101.2.1.1.11"
     2856#define szOID_INFOSEC_mosaicKMandSig        "2.16.840.1.101.2.1.1.12"
     2857#define szOID_INFOSEC_SuiteASignature       "2.16.840.1.101.2.1.1.13"
     2858#define szOID_INFOSEC_SuiteAConfidentiality "2.16.840.1.101.2.1.1.14"
     2859#define szOID_INFOSEC_SuiteAIntegrity       "2.16.840.1.101.2.1.1.15"
     2860#define szOID_INFOSEC_SuiteATokenProtection "2.16.840.1.101.2.1.1.16"
     2861#define szOID_INFOSEC_SuiteAKeyManagement   "2.16.840.1.101.2.1.1.17"
     2862#define szOID_INFOSEC_SuiteAKMandSig        "2.16.840.1.101.2.1.1.18"
     2863#define szOID_INFOSEC_mosaicUpdatedSig      "2.16.840.1.101.2.1.1.19"
     2864#define szOID_INFOSEC_mosaicKMandUpdSig     "2.16.840.1.101.2.1.1.20"
     2865#define szOID_INFOSEC_mosaicUpdateInteg     "2.16.840.1.101.2.1.1.21"
     2866#define szOID_COMMON_NAME                   "2.5.4.3"
     2867#define szOID_SUR_NAME                      "2.5.4.4"
     2868#define szOID_DEVICE_SERIAL_NUMBER          "2.5.4.5"
     2869#define szOID_COUNTRY_NAME                  "2.5.4.6"
     2870#define szOID_LOCALITY_NAME                 "2.5.4.7"
     2871#define szOID_STATE_OR_PROVINCE_NAME        "2.5.4.8"
     2872#define szOID_STREET_ADDRESS                "2.5.4.9"
     2873#define szOID_ORGANIZATION_NAME             "2.5.4.10"
     2874#define szOID_ORGANIZATIONAL_UNIT_NAME      "2.5.4.11"
     2875#define szOID_TITLE                         "2.5.4.12"
     2876#define szOID_DESCRIPTION                   "2.5.4.13"
     2877#define szOID_SEARCH_GUIDE                  "2.5.4.14"
     2878#define szOID_BUSINESS_CATEGORY             "2.5.4.15"
     2879#define szOID_POSTAL_ADDRESS                "2.5.4.16"
     2880#define szOID_POSTAL_CODE                   "2.5.4.17"
     2881#define szOID_POST_OFFICE_BOX               "2.5.4.18"
     2882#define szOID_PHYSICAL_DELIVERY_OFFICE_NAME "2.5.4.19"
     2883#define szOID_TELEPHONE_NUMBER              "2.5.4.20"
     2884#define szOID_TELEX_NUMBER                  "2.5.4.21"
     2885#define szOID_TELETEXT_TERMINAL_IDENTIFIER  "2.5.4.22"
     2886#define szOID_FACSIMILE_TELEPHONE_NUMBER    "2.5.4.23"
     2887#define szOID_X21_ADDRESS                   "2.5.4.24"
     2888#define szOID_INTERNATIONAL_ISDN_NUMBER     "2.5.4.25"
     2889#define szOID_REGISTERED_ADDRESS            "2.5.4.26"
     2890#define szOID_DESTINATION_INDICATOR         "2.5.4.27"
     2891#define szOID_PREFERRED_DELIVERY_METHOD     "2.5.4.28"
     2892#define szOID_PRESENTATION_ADDRESS          "2.5.4.29"
     2893#define szOID_SUPPORTED_APPLICATION_CONTEXT "2.5.4.30"
     2894#define szOID_MEMBER                        "2.5.4.31"
     2895#define szOID_OWNER                         "2.5.4.32"
     2896#define szOID_ROLE_OCCUPANT                 "2.5.4.33"
     2897#define szOID_SEE_ALSO                      "2.5.4.34"
     2898#define szOID_USER_PASSWORD                 "2.5.4.35"
     2899#define szOID_USER_CERTIFICATE              "2.5.4.36"
     2900#define szOID_CA_CERTIFICATE                "2.5.4.37"
     2901#define szOID_AUTHORITY_REVOCATION_LIST     "2.5.4.38"
     2902#define szOID_CERTIFICATE_REVOCATION_LIST   "2.5.4.39"
     2903#define szOID_CROSS_CERTIFICATE_PAIR        "2.5.4.40"
     2904#define szOID_GIVEN_NAME                    "2.5.4.42"
     2905#define szOID_INITIALS                      "2.5.4.43"
     2906#define szOID_DN_QUALIFIER                  "2.5.4.46"
     2907#define szOID_AUTHORITY_KEY_IDENTIFIER      "2.5.29.1"
     2908#define szOID_KEY_ATTRIBUTES                "2.5.29.2"
     2909#define szOID_CERT_POLICIES_95              "2.5.29.3"
     2910#define szOID_KEY_USAGE_RESTRICTION         "2.5.29.4"
     2911#define szOID_LEGACY_POLICY_MAPPINGS        "2.5.29.5"
     2912#define szOID_SUBJECT_ALT_NAME              "2.5.29.7"
     2913#define szOID_ISSUER_ALT_NAME               "2.5.29.8"
     2914#define szOID_SUBJECT_DIR_ATTRS             "2.5.29.9"
     2915#define szOID_BASIC_CONSTRAINTS             "2.5.29.10"
     2916#define szOID_SUBJECT_KEY_IDENTIFIER        "2.5.29.14"
     2917#define szOID_KEY_USAGE                     "2.5.29.15"
     2918#define szOID_PRIVATEKEY_USAGE_PERIOD       "2.5.29.16"
     2919#define szOID_SUBJECT_ALT_NAME2             "2.5.29.17"
     2920#define szOID_ISSUER_ALT_NAME2              "2.5.29.18"
     2921#define szOID_BASIC_CONSTRAINTS2            "2.5.29.19"
     2922#define szOID_CRL_NUMBER                    "2.5.29.20"
     2923#define szOID_CRL_REASON_CODE               "2.5.29.21"
     2924#define szOID_REASON_CODE_HOLD              "2.5.29.23"
     2925#define szOID_DELTA_CRL_INDICATOR           "2.5.29.27"
     2926#define szOID_ISSUING_DIST_POINT            "2.5.29.28"
     2927#define szOID_NAME_CONSTRAINTS              "2.5.29.30"
     2928#define szOID_CRL_DIST_POINTS               "2.5.29.31"
     2929#define szOID_CERT_POLICIES                 "2.5.29.32"
     2930#define szOID_ANY_CERT_POLICY               "2.5.29.32.0"
     2931#define szOID_POLICY_MAPPINGS               "2.5.29.33"
     2932#define szOID_AUTHORITY_KEY_IDENTIFIER2     "2.5.29.35"
     2933#define szOID_POLICY_CONSTRAINTS            "2.5.29.36"
     2934#define szOID_ENHANCED_KEY_USAGE            "2.5.29.37"
     2935#define szOID_FRESHEST_CRL                  "2.5.29.46"
     2936#define szOID_DOMAIN_COMPONENT              "0.9.2342.19200300.100.1.25"
     2937#define szOID_PKCS_12_FRIENDLY_NAME_ATTR     "1.2.840.113549.1.9.20"
     2938#define szOID_PKCS_12_LOCAL_KEY_ID           "1.2.840.113549.1.9.21"
     2939#define szOID_CERT_EXTENSIONS                "1.3.6.1.4.1.311.2.1.14"
     2940#define szOID_NEXT_UPDATE_LOCATION           "1.3.6.1.4.1.311.10.2"
     2941#define szOID_KP_CTL_USAGE_SIGNING           "1.3.6.1.4.1.311.10.3.1"
     2942#define szOID_KP_TIME_STAMP_SIGNING          "1.3.6.1.4.1.311.10.3.2"
     2943#ifndef szOID_SERVER_GATED_CRYPTO
     2944#define szOID_SERVER_GATED_CRYPTO            "1.3.6.1.4.1.311.10.3.3"
     2945#endif
     2946#ifndef szOID_SGC_NETSCAPE
     2947#define szOID_SGC_NETSCAPE                   "2.16.840.1.113730.4.1"
     2948#endif
     2949#define szOID_KP_EFS                         "1.3.6.1.4.1.311.10.3.4"
     2950#define szOID_EFS_RECOVERY                   "1.3.6.1.4.1.311.10.3.4.1"
     2951#define szOID_WHQL_CRYPTO                    "1.3.6.1.4.1.311.10.3.5"
     2952#define szOID_NT5_CRYPTO                     "1.3.6.1.4.1.311.10.3.6"
     2953#define szOID_OEM_WHQL_CRYPTO                "1.3.6.1.4.1.311.10.3.7"
     2954#define szOID_EMBEDDED_NT_CRYPTO             "1.3.6.1.4.1.311.10.3.8"
     2955#define szOID_ROOT_LIST_SIGNER               "1.3.6.1.4.1.311.10.3.9"
     2956#define szOID_KP_QUALIFIED_SUBORDINATION     "1.3.6.1.4.1.311.10.3.10"
     2957#define szOID_KP_KEY_RECOVERY                "1.3.6.1.4.1.311.10.3.11"
     2958#define szOID_KP_DOCUMENT_SIGNING            "1.3.6.1.4.1.311.10.3.12"
     2959#define szOID_KP_LIFETIME_SIGNING            "1.3.6.1.4.1.311.10.3.13"
     2960#define szOID_KP_MOBILE_DEVICE_SOFTWARE      "1.3.6.1.4.1.311.10.3.14"
     2961#define szOID_YESNO_TRUST_ATTR               "1.3.6.1.4.1.311.10.4.1"
     2962#ifndef szOID_DRM
     2963#define szOID_DRM                            "1.3.6.1.4.1.311.10.5.1"
     2964#endif
     2965#ifndef szOID_DRM_INDIVIDUALIZATION
     2966#define szOID_DRM_INDIVIDUALIZATION          "1.3.6.1.4.1.311.10.5.2"
     2967#endif
     2968#ifndef szOID_LICENSES
     2969#define szOID_LICENSES                       "1.3.6.1.4.1.311.10.6.1"
     2970#endif
     2971#ifndef szOID_LICENSE_SERVER
     2972#define szOID_LICENSE_SERVER                 "1.3.6.1.4.1.311.10.6.2"
     2973#endif
     2974#define szOID_REMOVE_CERTIFICATE             "1.3.6.1.4.1.311.10.8.1"
     2975#define szOID_CROSS_CERT_DIST_POINTS         "1.3.6.1.4.1.311.10.9.1"
     2976#define szOID_CTL                            "1.3.6.1.4.1.311.10.1"
     2977#define szOID_SORTED_CTL                     "1.3.6.1.4.1.311.10.1.1"
     2978#define szOID_ANY_APPLICATION_POLICY         "1.3.6.1.4.1.311.10.12.1"
     2979#define szOID_RENEWAL_CERTIFICATE            "1.3.6.1.4.1.311.13.1"
     2980#define szOID_ENROLLMENT_NAME_VALUE_PAIR     "1.3.6.1.4.1.311.13.2.1"
     2981#define szOID_ENROLLMENT_CSP_PROVIDER        "1.3.6.1.4.1.311.13.2.2"
     2982#define szOID_OS_VERSION                     "1.3.6.1.4.1.311.13.2.3"
     2983#define szOID_PKCS_12_KEY_PROVIDER_NAME_ATTR "1.3.6.1.4.1.311.17.1"
     2984#define szOID_LOCAL_MACHINE_KEYSET           "1.3.6.1.4.1.311.17.2"
     2985#define szOID_AUTO_ENROLL_CTL_USAGE          "1.3.6.1.4.1.311.20.1"
     2986#define szOID_ENROLL_CERTTYPE_EXTENSION      "1.3.6.1.4.1.311.20.2"
     2987#define szOID_ENROLLMENT_AGENT               "1.3.6.1.4.1.311.20.2.1"
     2988#define szOID_KP_SMARTCARD_LOGON             "1.3.6.1.4.1.311.20.2.2"
     2989#define szOID_CERT_MANIFOLD                  "1.3.6.1.4.1.311.20.3"
     2990#ifndef szOID_CERTSRV_CA_VERSION
     2991#define szOID_CERTSRV_CA_VERSION             "1.3.6.1.4.1.311.21.1"
     2992#endif
     2993#define szOID_CERTSRV_PREVIOUS_CERT_HASH     "1.3.6.1.4.1.311.21.2"
     2994#define szOID_CRL_VIRTUAL_BASE               "1.3.6.1.4.1.311.21.3"
     2995#define szOID_CRL_NEXT_PUBLISH               "1.3.6.1.4.1.311.21.4"
     2996#define szOID_KP_CA_EXCHANGE                 "1.3.6.1.4.1.311.21.5"
     2997#define szOID_KP_KEY_RECOVERY_AGENT          "1.3.6.1.4.1.311.21.6"
     2998#define szOID_CERTIFICATE_TEMPLATE           "1.3.6.1.4.1.311.21.7"
     2999#define szOID_ENTERPRISE_OID_ROOT            "1.3.6.1.4.1.311.21.8"
     3000#define szOID_RDN_DUMMY_SIGNER               "1.3.6.1.4.1.311.21.9"
     3001#define szOID_APPLICATION_CERT_POLICIES      "1.3.6.1.4.1.311.21.10"
     3002#define szOID_APPLICATION_POLICY_MAPPINGS    "1.3.6.1.4.1.311.21.11"
     3003#define szOID_APPLICATION_POLICY_CONSTRAINTS "1.3.6.1.4.1.311.21.12"
     3004#define szOID_ARCHIVED_KEY_ATTR              "1.3.6.1.4.1.311.21.13"
     3005#define szOID_CRL_SELF_CDP                   "1.3.6.1.4.1.311.21.14"
     3006#define szOID_REQUIRE_CERT_CHAIN_POLICY      "1.3.6.1.4.1.311.21.15"
     3007#define szOID_ARCHIVED_KEY_CERT_HASH         "1.3.6.1.4.1.311.21.16"
     3008#define szOID_ISSUED_CERT_HASH               "1.3.6.1.4.1.311.21.17"
     3009#define szOID_DS_EMAIL_REPLICATION           "1.3.6.1.4.1.311.21.19"
     3010#define szOID_REQUEST_CLIENT_INFO            "1.3.6.1.4.1.311.21.20"
     3011#define szOID_ENCRYPTED_KEY_HASH             "1.3.6.1.4.1.311.21.21"
     3012#define szOID_CERTSRV_CROSSCA_VERSION        "1.3.6.1.4.1.311.21.22"
     3013#define szOID_KEYID_RDN                      "1.3.6.1.4.1.311.10.7.1"
     3014#define szOID_PKIX                           "1.3.6.1.5.5.7"
     3015#define szOID_PKIX_PE                        "1.3.6.1.5.5.7.1"
     3016#define szOID_AUTHORITY_INFO_ACCESS          "1.3.6.1.5.5.7.1.1"
     3017#define szOID_PKIX_POLICY_QUALIFIER_CPS      "1.3.6.1.5.5.7.2.1"
     3018#define szOID_PKIX_POLICY_QUALIFIER_USERNOTICE "1.3.6.1.5.5.7.2.2"
     3019#define szOID_PKIX_KP                        "1.3.6.1.5.5.7.3"
     3020#define szOID_PKIX_KP_SERVER_AUTH            "1.3.6.1.5.5.7.3.1"
     3021#define szOID_PKIX_KP_CLIENT_AUTH            "1.3.6.1.5.5.7.3.2"
     3022#define szOID_PKIX_KP_CODE_SIGNING           "1.3.6.1.5.5.7.3.3"
     3023#define szOID_PKIX_KP_EMAIL_PROTECTION       "1.3.6.1.5.5.7.3.4"
     3024#define szOID_PKIX_KP_IPSEC_END_SYSTEM       "1.3.6.1.5.5.7.3.5"
     3025#define szOID_PKIX_KP_IPSEC_TUNNEL           "1.3.6.1.5.5.7.3.6"
     3026#define szOID_PKIX_KP_IPSEC_USER             "1.3.6.1.5.5.7.3.7"
     3027#define szOID_PKIX_KP_TIMESTAMP_SIGNING      "1.3.6.1.5.5.7.3.8"
     3028#define szOID_PKIX_NO_SIGNATURE              "1.3.6.1.5.5.7.6.2"
     3029#define szOID_CMC                            "1.3.6.1.5.5.7.7"
     3030#define szOID_CMC_STATUS_INFO                "1.3.6.1.5.5.7.7.1"
     3031#define szOID_CMC_IDENTIFICATION             "1.3.6.1.5.5.7.7.2"
     3032#define szOID_CMC_IDENTITY_PROOF             "1.3.6.1.5.5.7.7.3"
     3033#define szOID_CMC_DATA_RETURN                "1.3.6.1.5.5.7.7.4"
     3034#define szOID_CMC_TRANSACTION_ID             "1.3.6.1.5.5.7.7.5"
     3035#define szOID_CMC_SENDER_NONCE               "1.3.6.1.5.5.7.7.6"
     3036#define szOID_CMC_RECIPIENT_NONCE            "1.3.6.1.5.5.7.7.7"
     3037#define szOID_CMC_ADD_EXTENSIONS             "1.3.6.1.5.5.7.7.8"
     3038#define szOID_CMC_ENCRYPTED_POP              "1.3.6.1.5.5.7.7.9"
     3039#define szOID_CMC_DECRYPTED_POP              "1.3.6.1.5.5.7.7.10"
     3040#define szOID_CMC_LRA_POP_WITNESS            "1.3.6.1.5.5.7.7.11"
     3041#define szOID_CMC_GET_CERT                   "1.3.6.1.5.5.7.7.15"
     3042#define szOID_CMC_GET_CRL                    "1.3.6.1.5.5.7.7.16"
     3043#define szOID_CMC_REVOKE_REQUEST             "1.3.6.1.5.5.7.7.17"
     3044#define szOID_CMC_REG_INFO                   "1.3.6.1.5.5.7.7.18"
     3045#define szOID_CMC_RESPONSE_INFO              "1.3.6.1.5.5.7.7.19"
     3046#define szOID_CMC_QUERY_PENDING              "1.3.6.1.5.5.7.7.21"
     3047#define szOID_CMC_ID_POP_LINK_RANDOM         "1.3.6.1.5.5.7.7.22"
     3048#define szOID_CMC_ID_POP_LINK_WITNESS        "1.3.6.1.5.5.7.7.23"
     3049#define szOID_CT_PKI_DATA                    "1.3.6.1.5.5.7.12.2"
     3050#define szOID_CT_PKI_RESPONSE                "1.3.6.1.5.5.7.12.3"
     3051#define szOID_PKIX_ACC_DESCR                 "1.3.6.1.5.5.7.48"
     3052#define szOID_PKIX_OCSP                      "1.3.6.1.5.5.7.48.1"
     3053#define szOID_PKIX_CA_ISSUERS                "1.3.6.1.5.5.7.48.2"
     3054#define szOID_IPSEC_KP_IKE_INTERMEDIATE      "1.3.6.1.5.5.8.2.2"
     3055
     3056#ifndef szOID_SERIALIZED
     3057#define szOID_SERIALIZED                     "1.3.6.1.4.1.311.10.3.3.1"
     3058#endif
     3059
     3060#define szOID_AUTO_ENROLL_CTL_USAGE          "1.3.6.1.4.1.311.20.1"
     3061#define szOID_ENROLL_CERTTYPE_EXTENSION      "1.3.6.1.4.1.311.20.2"
     3062#define szOID_ENROLLMENT_AGENT               "1.3.6.1.4.1.311.20.2.1"
     3063#ifndef szOID_KP_SMARTCARD_LOGON
     3064#define szOID_KP_SMARTCARD_LOGON             "1.3.6.1.4.1.311.20.2.2"
     3065#endif
     3066#ifndef szOID_NT_PRINCIPAL_NAME
     3067#define szOID_NT_PRINCIPAL_NAME              "1.3.6.1.4.1.311.20.2.3"
     3068#endif
     3069#define szOID_CERT_MANIFOLD                  "1.3.6.1.4.1.311.20.3"
     3070
     3071#ifndef szOID_CERTSRV_CA_VERSION
     3072#define szOID_CERTSRV_CA_VERSION             "1.3.6.1.4.1.311.21.1"
     3073#endif
     3074
     3075#ifndef szOID_PRODUCT_UPDATE
     3076#define szOID_PRODUCT_UPDATE                 "1.3.6.1.4.1.311.31.1"
     3077#endif
     3078
     3079#define szOID_NETSCAPE                       "2.16.840.1.113730"
     3080#define szOID_NETSCAPE_CERT_EXTENSION        "2.16.840.1.113730.1"
     3081#define szOID_NETSCAPE_CERT_TYPE             "2.16.840.1.113730.1.1"
     3082#define szOID_NETSCAPE_BASE_URL              "2.16.840.1.113730.1.2"
     3083#define szOID_NETSCAPE_REVOCATION_URL        "2.16.840.1.113730.1.3"
     3084#define szOID_NETSCAPE_CA_REVOCATION_URL     "2.16.840.1.113730.1.4"
     3085#define szOID_NETSCAPE_CERT_RENEWAL_URL      "2.16.840.1.113730.1.7"
     3086#define szOID_NETSCAPE_CA_POLICY_URL         "2.16.840.1.113730.1.8"
     3087#define szOID_NETSCAPE_SSL_SERVER_NAME       "2.16.840.1.113730.1.12"
     3088#define szOID_NETSCAPE_COMMENT               "2.16.840.1.113730.1.13"
     3089#define szOID_NETSCAPE_DATA_TYPE             "2.16.840.1.113730.2"
     3090#define szOID_NETSCAPE_CERT_SEQUENCE         "2.16.840.1.113730.2.5"
     3091
     3092/* Bits for szOID_NETSCAPE_CERT_TYPE */
     3093#define NETSCAPE_SSL_CLIENT_AUTH_CERT_TYPE 0x80
     3094#define NETSCAPE_SSL_SERVER_AUTH_CERT_TYPE 0x40
     3095#define NETSCAPE_SMIME_CERT_TYPE           0x20
     3096#define NETSCAPE_SIGN_CERT_TYPE            0x10
     3097#define NETSCAPE_SSL_CA_CERT_TYPE          0x04
     3098#define NETSCAPE_SMIME_CA_CERT_TYPE        0x02
     3099#define NETSCAPE_SIGN_CA_CERT_TYPE         0x01
     3100
     3101#define CRYPT_ENCODE_DECODE_NONE             0
     3102#define X509_CERT                            ((LPCSTR)1)
     3103#define X509_CERT_TO_BE_SIGNED               ((LPCSTR)2)
     3104#define X509_CERT_CRL_TO_BE_SIGNED           ((LPCSTR)3)
     3105#define X509_CERT_REQUEST_TO_BE_SIGNED       ((LPCSTR)4)
     3106#define X509_EXTENSIONS                      ((LPCSTR)5)
     3107#define X509_NAME_VALUE                      ((LPCSTR)6)
     3108#define X509_ANY_STRING                      X509_NAME_VALUE
     3109#define X509_NAME                            ((LPCSTR)7)
     3110#define X509_PUBLIC_KEY_INFO                 ((LPCSTR)8)
     3111#define X509_AUTHORITY_KEY_ID                ((LPCSTR)9)
     3112#define X509_KEY_ATTRIBUTES                  ((LPCSTR)10)
     3113#define X509_KEY_USAGE_RESTRICTION           ((LPCSTR)11)
     3114#define X509_ALTERNATE_NAME                  ((LPCSTR)12)
     3115#define X509_BASIC_CONSTRAINTS               ((LPCSTR)13)
     3116#define X509_KEY_USAGE                       ((LPCSTR)14)
     3117#define X509_BASIC_CONSTRAINTS2              ((LPCSTR)15)
     3118#define X509_CERT_POLICIES                   ((LPCSTR)16)
     3119#define PKCS_UTC_TIME                        ((LPCSTR)17)
     3120#define PKCS_TIME_REQUEST                    ((LPCSTR)18)
     3121#define RSA_CSP_PUBLICKEYBLOB                ((LPCSTR)19)
     3122#define X509_UNICODE_NAME                    ((LPCSTR)20)
     3123#define X509_KEYGEN_REQUEST_TO_BE_SIGNED     ((LPCSTR)21)
     3124#define PKCS_ATTRIBUTE                       ((LPCSTR)22)
     3125#define PKCS_CONTENT_INFO_SEQUENCE_OF_ANY    ((LPCSTR)23)
     3126#define X509_UNICODE_NAME_VALUE              ((LPCSTR)24)
     3127#define X509_UNICODE_ANY_STRING              X509_UNICODE_NAME_VALUE
     3128#define X509_OCTET_STRING                    ((LPCSTR)25)
     3129#define X509_BITS                            ((LPCSTR)26)
     3130#define X509_INTEGER                         ((LPCSTR)27)
     3131#define X509_MULTI_BYTE_INTEGER              ((LPCSTR)28)
     3132#define X509_ENUMERATED                      ((LPCSTR)29)
     3133#define X509_CRL_REASON_CODE                 X509_ENUMERATED
     3134#define X509_CHOICE_OF_TIME                  ((LPCSTR)30)
     3135#define X509_AUTHORITY_KEY_ID2               ((LPCSTR)31)
     3136#define X509_AUTHORITY_INFO_ACCESS           ((LPCSTR)32)
     3137#define PKCS_CONTENT_INFO                    ((LPCSTR)33)
     3138#define X509_SEQUENCE_OF_ANY                 ((LPCSTR)34)
     3139#define X509_CRL_DIST_POINTS                 ((LPCSTR)35)
     3140#define X509_ENHANCED_KEY_USAGE              ((LPCSTR)36)
     3141#define PKCS_CTL                             ((LPCSTR)37)
     3142#define X509_MULTI_BYTE_UINT                 ((LPCSTR)38)
     3143#define X509_DSS_PUBLICKEY                   X509_MULTI_BYTE_UINT
     3144#define X509_DSS_PARAMETERS                  ((LPCSTR)39)
     3145#define X509_DSS_SIGNATURE                   ((LPCSTR)40)
     3146#define PKCS_RC2_CBC_PARAMETERS              ((LPCSTR)41)
     3147#define PKCS_SMIME_CAPABILITIES              ((LPCSTR)42)
     3148#define PKCS_RSA_PRIVATE_KEY                 ((LPCSTR)43)
     3149#define PKCS_PRIVATE_KEY_INFO                ((LPCSTR)44)
     3150#define PKCS_ENCRYPTED_PRIVATE_KEY_INFO      ((LPCSTR)45)
     3151#define X509_PKIX_POLICY_QUALIFIER_USERNOTICE ((LPCSTR)46)
     3152#define X509_DH_PUBLICKEY                    X509_MULTI_BYTE_UINT
     3153#define X509_DH_PARAMETERS                   ((LPCSTR)47)
     3154#define PKCS_ATTRIBUTES                      ((LPCSTR)48)
     3155#define PKCS_SORTED_CTL                      ((LPCSTR)49)
     3156#define X942_DH_PARAMETERS                   ((LPCSTR)50)
     3157#define X509_BITS_WITHOUT_TRAILING_ZEROES    ((LPCSTR)51)
     3158#define X942_OTHER_INFO                      ((LPCSTR)52)
     3159#define X509_CERT_PAIR                       ((LPCSTR)53)
     3160#define X509_ISSUING_DIST_POINT              ((LPCSTR)54)
     3161#define X509_NAME_CONSTRAINTS                ((LPCSTR)55)
     3162#define X509_POLICY_MAPPINGS                 ((LPCSTR)56)
     3163#define X509_POLICY_CONSTRAINTS              ((LPCSTR)57)
     3164#define X509_CROSS_CERT_DIST_POINTS          ((LPCSTR)58)
     3165#define CMC_DATA                             ((LPCSTR)59)
     3166#define CMC_RESPONSE                         ((LPCSTR)60)
     3167#define CMC_STATUS                           ((LPCSTR)61)
     3168#define CMC_ADD_EXTENSIONS                   ((LPCSTR)62)
     3169#define CMC_ADD_ATTRIBUTES                   ((LPCSTR)63)
     3170#define X509_CERTIFICATE_TEMPLATE            ((LPCSTR)64)
     3171#define PKCS7_SIGNER_INFO                    ((LPCSTR)500)
     3172#define CMS_SIGNER_INFO                      ((LPCSTR)501)
     3173
     3174/* encode/decode flags */
     3175#define CRYPT_ENCODE_NO_SIGNATURE_BYTE_REVERSAL_FLAG           0x00008
     3176#define CRYPT_ENCODE_ALLOC_FLAG                                0x08000
     3177#define CRYPT_SORTED_CTL_ENCODE_HASHED_SUBJECT_IDENTIFIER_FLAG 0x10000
     3178#define CRYPT_UNICODE_NAME_ENCODE_ENABLE_T61_UNICODE_FLAG \
     3179 CERT_RDN_ENABLE_T61_UNICODE_FLAG
     3180#define CRYPT_UNICODE_NAME_ENCODE_ENABLE_UTF8_UNICODE_FLAG \
     3181 CERT_RDN_ENABLE_UTF8_UNICODE_FLAG
     3182#define CRYPT_UNICODE_NAME_ENCODE_DISABLE_CHECK_TYPE_FLAG \
     3183 CERT_RDN_DISABLE_CHECK_TYPE_FLAG
     3184
     3185#define CRYPT_DECODE_NOCOPY_FLAG                               0x00001
     3186#define CRYPT_DECODE_TO_BE_SIGNED_FLAG                         0x00002
     3187#define CRYPT_DECODE_SHARE_OID_STRING_FLAG                     0x00004
     3188#define CRYPT_DECODE_NO_SIGNATURE_BYTE_REVERSAL_FLAG           0x00008
     3189#define CRYPT_DECODE_ALLOC_FLAG                                0x08000
     3190#define CRYPT_UNICODE_NAME_DECODE_DISABLE_IE4_UTF8_FLAG \
     3191 CERT_RDN_DISABLE_IE4_UTF8_FLAG
     3192
     3193#define CERT_STORE_SIGNATURE_FLAG     0x00000001
     3194#define CERT_STORE_TIME_VALIDITY_FLAG 0x00000002
     3195#define CERT_STORE_REVOCATION_FLAG    0x00000004
     3196#define CERT_STORE_NO_CRL_FLAG        0x00010000
     3197#define CERT_STORE_NO_ISSUER_FLAG     0x00020000
     3198
     3199#define CERT_STORE_BASE_CRL_FLAG  0x00000100
     3200#define CERT_STORE_DELTA_CRL_FLAG 0x00000200
     3201
     3202/* subject types for CryptVerifyCertificateSignatureEx */
     3203#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_BLOB 1
     3204#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_CERT 2
     3205#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_CRL  3
     3206
     3207/* issuer types for CryptVerifyCertificateSignatureEx */
     3208#define CRYPT_VERIFY_CERT_SIGN_ISSUER_PUBKEY 1
     3209#define CRYPT_VERIFY_CERT_SIGN_ISSUER_CERT   2
     3210#define CRYPT_VERIFY_CERT_SIGN_ISSUER_CHAIN  3
     3211#define CRYPT_VERIFY_CERT_SIGN_ISSUER_NULL   4
     3212
     3213#define CRYPT_GET_URL_FROM_PROPERTY         0x00000001
     3214#define CRYPT_GET_URL_FROM_EXTENSION        0x00000002
     3215#define CRYPT_GET_URL_FROM_UNAUTH_ATTRIBUTE 0x00000004
     3216#define CRYPT_GET_URL_FROM_AUTH_ATTRIBUTE   0x00000008
     3217
     3218/* Certificate name string types and flags */
     3219#define CERT_SIMPLE_NAME_STR 1
     3220#define CERT_OID_NAME_STR    2
     3221#define CERT_X500_NAME_STR   3
     3222#define CERT_NAME_STR_SEMICOLON_FLAG           0x40000000
     3223#define CERT_NAME_STR_NO_PLUS_FLAG             0x20000000
     3224#define CERT_NAME_STR_NO_QUOTING_FLAG          0x10000000
     3225#define CERT_NAME_STR_CRLF_FLAG                0x08000000
     3226#define CERT_NAME_STR_COMMA_FLAG               0x04000000
     3227#define CERT_NAME_STR_REVERSE_FLAG             0x02000000
     3228#define CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG 0x00040000
     3229#define CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG  0x00020000
     3230#define CERT_NAME_STR_DISABLE_IE4_UTF8_FLAG    0x00010000
     3231
     3232#define CERT_NAME_EMAIL_TYPE            1
     3233#define CERT_NAME_RDN_TYPE              2
     3234#define CERT_NAME_ATTR_TYPE             3
     3235#define CERT_NAME_SIMPLE_DISPLAY_TYPE   4
     3236#define CERT_NAME_FRIENDLY_DISPLAY_TYPE 5
     3237#define CERT_NAME_DNS_TYPE              6
     3238#define CERT_NAME_URL_TYPE              7
     3239#define CERT_NAME_UPN_TYPE              8
     3240
     3241#define CERT_NAME_ISSUER_FLAG           0x00000001
     3242#define CERT_NAME_DISABLE_IE4_UTF8_FLAG 0x00010000
     3243
     3244/* CryptFormatObject flags */
     3245#define CRYPT_FORMAT_STR_MULTI_LINE 0x0001
     3246#define CRYPT_FORMAT_STR_NO_HEX     0x0010
     3247
     3248#define CRYPT_FORMAT_SIMPLE        0x0001
     3249#define CRYPT_FORMAT_X509          0x0002
     3250#define CRYPT_FORMAT_OID           0x0004
     3251#define CRYPT_FORMAT_RDN_SEMICOLON 0x0100
     3252#define CRYPT_FORMAT_RDN_CRLF      0x0200
     3253#define CRYPT_FORMAT_RDN_UNQUOTE   0x0400
     3254#define CRYPT_FORMAT_RDN_REVERSE   0x0800
     3255
     3256#define CRYPT_FORMAT_COMMA     0x1000
     3257#define CRYPT_FORMAT_SEMICOLON CRYPT_FORMAT_RDN_SEMICOLON
     3258#define CRYPT_FORMAT_CRLF      CRYPT_FORMAT_RDN_CRLF
     3259
     3260/* CryptQueryObject types and flags */
     3261#define CERT_QUERY_OBJECT_FILE 1
     3262#define CERT_QUERY_OBJECT_BLOB 2
     3263
     3264#define CERT_QUERY_CONTENT_CERT               1
     3265#define CERT_QUERY_CONTENT_CTL                2
     3266#define CERT_QUERY_CONTENT_CRL                3
     3267#define CERT_QUERY_CONTENT_SERIALIZED_STORE   4
     3268#define CERT_QUERY_CONTENT_SERIALIZED_CERT    5
     3269#define CERT_QUERY_CONTENT_SERIALIZED_CTL     6
     3270#define CERT_QUERY_CONTENT_SERIALIZED_CRL     7
     3271#define CERT_QUERY_CONTENT_PKCS7_SIGNED       8
     3272#define CERT_QUERY_CONTENT_PKCS7_UNSIGNED     9
     3273#define CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED 10
     3274#define CERT_QUERY_CONTENT_PKCS10             11
     3275#define CERT_QUERY_CONTENT_PFX                12
     3276#define CERT_QUERY_CONTENT_CERT_PAIR          13
     3277
     3278#define CERT_QUERY_CONTENT_FLAG_CERT      (1 << CERT_QUERY_CONTENT_CERT)
     3279#define CERT_QUERY_CONTENT_FLAG_CTL       (1 << CERT_QUERY_CONTENT_CTL)
     3280#define CERT_QUERY_CONTENT_FLAG_CRL       (1 << CERT_QUERY_CONTENT_CRL)
     3281#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE \
     3282 (1 << CERT_QUERY_CONTENT_SERIALIZED_STORE)
     3283#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT \
     3284 (1 << CERT_QUERY_CONTENT_SERIALIZED_CERT)
     3285#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL \
     3286 (1 << CERT_QUERY_CONTENT_SERIALIZED_CTL)
     3287#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL \
     3288 (1 << CERT_QUERY_CONTENT_SERIALIZED_CRL)
     3289#define CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED \
     3290 (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED)
     3291#define CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED \
     3292 (1 << CERT_QUERY_CONTENT_PKCS7_UNSIGNED)
     3293#define CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED \
     3294 (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED)
     3295#define CERT_QUERY_CONTENT_FLAG_PKCS10    (1 << CERT_QUERY_CONTENT_PKCS10)
     3296#define CERT_QUERY_CONTENT_FLAG_PFX       (1 << CERT_QUERY_CONTENT_PFX)
     3297#define CERT_QUERY_CONTENT_FLAG_CERT_PAIR (1 << CERT_QUERY_CONTENT_CERT_PAIR)
     3298
     3299#define CERT_QUERY_CONTENT_FLAG_ALL \
     3300 CERT_QUERY_CONTENT_FLAG_CERT | \
     3301 CERT_QUERY_CONTENT_FLAG_CTL | \
     3302 CERT_QUERY_CONTENT_FLAG_CRL | \
     3303 CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE | \
     3304 CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT | \
     3305 CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL | \
     3306 CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL | \
     3307 CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | \
     3308 CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED | \
     3309 CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED | \
     3310 CERT_QUERY_CONTENT_FLAG_PKCS10 | \
     3311 CERT_QUERY_CONTENT_FLAG_PFX | \
     3312 CERT_QUERY_CONTENT_FLAG_CERT_PAIR
     3313
     3314#define CERT_QUERY_FORMAT_BINARY                1
     3315#define CERT_QUERY_FORMAT_BASE64_ENCODED        2
     3316#define CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED 3
     3317
     3318#define CERT_QUERY_FORMAT_FLAG_BINARY (1 << CERT_QUERY_FORMAT_BINARY)
     3319#define CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED \
     3320 (1 << CERT_QUERY_FORMAT_BASE64_ENCODED)
     3321#define CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED \
     3322 (1 << CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED)
     3323
     3324#define CERT_QUERY_FORMAT_FLAG_ALL \
     3325 CERT_QUERY_FORMAT_FLAG_BINARY | \
     3326 CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED | \
     3327 CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED \
     3328
     3329#define CERT_SET_KEY_PROV_HANDLE_PROP_ID 0x00000001
     3330#define CERT_SET_KEY_CONTEXT_PROP_ID     0x00000001
     3331
     3332#define CERT_CREATE_SELFSIGN_NO_SIGN     1
     3333#define CERT_CREATE_SELFSIGN_NO_KEY_INFO 2
     3334
     3335/* flags for CryptAcquireCertificatePrivateKey */
     3336#define CRYPT_ACQUIRE_CACHE_FLAG         0x00000001
     3337#define CRYPT_ACQUIRE_USE_PROV_INFO_FLAG 0x00000002
     3338#define CRYPT_ACQUIRE_COMPARE_KEY_FLAG   0x00000004
     3339#define CRYPT_ACQUIRE_SILENT_FLAG        0x00000040
     3340
     3341/* Chain engines and chains */
     3342typedef HANDLE HCERTCHAINENGINE;
     3343#define HCCE_CURRENT_USER  ((HCERTCHAINENGINE)NULL)
     3344#define HCCE_LOCAL_MACHINE ((HCERTCHAINENGINE)1)
     3345
     3346#define CERT_CHAIN_CACHE_END_CERT           0x00000001
     3347#define CERT_CHAIN_THREAD_STORE_SYNC        0x00000002
     3348#define CERT_CHAIN_CACHE_ONLY_URL_RETRIEVAL 0x00000004
     3349#define CERT_CHAIN_USE_LOCAL_MACHINE_STORE  0x00000008
     3350#define CERT_CHAIN_ENABLE_CACHE_AUTO_UPDATE 0x00000010
     3351#define CERT_CHAIN_ENABLE_SHARE_STORE       0x00000020
     3352
     3353typedef struct _CERT_CHAIN_ENGINE_CONFIG
     3354{
     3355    DWORD       cbSize;
     3356    HCERTSTORE  hRestrictedRoot;
     3357    HCERTSTORE  hRestrictedTrust;
     3358    HCERTSTORE  hRestrictedOther;
     3359    DWORD       cAdditionalStore;
     3360    HCERTSTORE *rghAdditionalStore;
     3361    DWORD       dwFlags;
     3362    DWORD       dwUrlRetrievalTimeout;
     3363    DWORD       MaximumCachedCertificates;
     3364    DWORD       CycleDetectionModulus;
     3365} CERT_CHAIN_ENGINE_CONFIG, *PCERT_CHAIN_ENGINE_CONFIG;
     3366
     3367/* message-related definitions */
     3368
     3369typedef BOOL (*WINAPI PFN_CMSG_STREAM_OUTPUT)(const void *pvArg, BYTE *pbData,
     3370 DWORD cbData, BOOL fFinal);
     3371
     3372#define CMSG_INDEFINITE_LENGTH 0xffffffff
     3373
     3374typedef struct _CMSG_STREAM_INFO
     3375{
     3376    DWORD cbContent;
     3377    PFN_CMSG_STREAM_OUTPUT pfnStreamOutput;
     3378    void *pvArg;
     3379} CMSG_STREAM_INFO, *PCMSG_STREAM_INFO;
     3380
     3381typedef struct _CERT_ISSUER_SERIAL_NUMBER
     3382{
     3383    CERT_NAME_BLOB     Issuer;
     3384    CRYPT_INTEGER_BLOB SerialNumber;
     3385} CERT_ISSUER_SERIAL_NUMBER, *PCERT_ISSUER_SERIAL_NUMBER;
     3386
     3387typedef struct _CERT_ID
     3388{
     3389    DWORD dwIdChoice;
     3390    union {
     3391        CERT_ISSUER_SERIAL_NUMBER IssuerSerialNumber;
     3392        CRYPT_HASH_BLOB           KeyId;
     3393        CRYPT_HASH_BLOB           HashId;
     3394    } DUMMYUNIONNAME;
     3395} CERT_ID, *PCERT_ID;
     3396
     3397#define CERT_ID_ISSUER_SERIAL_NUMBER 1
     3398#define CERT_ID_KEY_IDENTIFIER       2
     3399#define CERT_ID_SHA1_HASH            3
     3400
     3401#undef CMSG_DATA /* may be defined by sys/socket.h */
     3402#define CMSG_DATA                 1
     3403#define CMSG_SIGNED               2
     3404#define CMSG_ENVELOPED            3
     3405#define CMSG_SIGNED_AND_ENVELOPED 4
     3406#define CMSG_HASHED               5
     3407#define CMSG_ENCRYPTED            6
     3408
     3409#define CMSG_ALL_FLAGS                 ~0U
     3410#define CMSG_DATA_FLAG                 (1 << CMSG_DATA)
     3411#define CMSG_SIGNED_FLAG               (1 << CMSG_SIGNED)
     3412#define CMSG_ENVELOPED_FLAG            (1 << CMSG_ENVELOPED)
     3413#define CMSG_SIGNED_AND_ENVELOPED_FLAG (1 << CMSG_SIGNED_AND_ENVELOPED)
     3414#define CMSG_ENCRYPTED_FLAG            (1 << CMSG_ENCRYPTED)
     3415
     3416typedef struct _CMSG_SIGNER_ENCODE_INFO
     3417{
     3418    DWORD                      cbSize;
     3419    PCERT_INFO                 pCertInfo;
     3420    HCRYPTPROV                 hCryptProv;
     3421    DWORD                      dwKeySpec;
     3422    CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
     3423    void                      *pvHashAuxInfo;
     3424    DWORD                      cAuthAttr;
     3425    PCRYPT_ATTRIBUTE           rgAuthAttr;
     3426    DWORD                      cUnauthAttr;
     3427    PCRYPT_ATTRIBUTE           rgUnauthAttr;
     3428#ifdef CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS
     3429    CERT_ID                    SignerId;
     3430    CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
     3431    void                      *pvHashEncryptionAuxInfo;
     3432#endif
     3433} CMSG_SIGNER_ENCODE_INFO, *PCMSG_SIGNER_ENCODE_INFO;
     3434
     3435typedef struct _CMSG_SIGNED_ENCODE_INFO
     3436{
     3437    DWORD                    cbSize;
     3438    DWORD                    cSigners;
     3439    PCMSG_SIGNER_ENCODE_INFO rgSigners;
     3440    DWORD                    cCertEncoded;
     3441    PCERT_BLOB               rgCertEncoded;
     3442    DWORD                    cCrlEncoded;
     3443    PCRL_BLOB                rgCrlEncoded;
     3444#ifdef CMSG_SIGNED_ENCODE_INFO_HAS_CMS_FIELDS
     3445    DWORD                    cAttrCertEncoded;
     3446    PCERT_BLOB               rgAttrCertEncoded;
     3447#endif
     3448} CMSG_SIGNED_ENCODE_INFO, *PCMSG_SIGNED_ENCODE_INFO;
     3449
     3450typedef struct _CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO
     3451{
     3452    DWORD                      cbSize;
     3453    CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm;
     3454    void                      *pvKeyEncryptionAuxInfo;
     3455    HCRYPTPROV_LEGACY          hCryptProv;
     3456    CRYPT_BIT_BLOB             RecipientPublicKey;
     3457    CERT_ID                    RecipientId;
     3458} CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO, *PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO;
     3459
     3460typedef struct _CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO
     3461{
     3462    DWORD                       cbSize;
     3463    CRYPT_BIT_BLOB              RecipientPublicKey;
     3464    CERT_ID                     RecipientId;
     3465    FILETIME                    Date;
     3466    PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr;
     3467} CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO,
     3468 *PCMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO;
     3469
     3470typedef struct _CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO
     3471{
     3472    DWORD                      cbSize;
     3473    CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm;
     3474    void                      *pvKeyEncryptionAuxInfo;
     3475    CRYPT_ALGORITHM_IDENTIFIER KeyWrapAlgorithm;
     3476    void                      *pvKeyWrapAuxInfo;
     3477    HCRYPTPROV_LEGACY          hCryptProv;
     3478    DWORD                      dwKeySpec;
     3479    DWORD                      dwKeyChoice;
     3480    union {
     3481        PCRYPT_ALGORITHM_IDENTIFIER pEphemeralAlgorithm;
     3482        PCERT_ID                    pSenderId;
     3483    } DUMMYUNIONNAME;
     3484    CRYPT_DATA_BLOB            UserKeyingMaterial;
     3485    DWORD                      cRecipientEncryptedKeys;
     3486    PCMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO *rgpRecipientEncryptedKeys;
     3487} CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO, *PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO;
     3488
     3489#define CMSG_KEY_AGREE_EPHEMERAL_KEY_CHOICE 1
     3490#define CMSG_KEY_AGREE_STATIC_KEY_CHOICE    2
     3491
     3492typedef struct _CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO
     3493{
     3494    DWORD                       cbSize;
     3495    CRYPT_ALGORITHM_IDENTIFIER  KeyEncryptionAlgorithm;
     3496    void                       *pvKeyEncryptionAuxInfo;
     3497    HCRYPTPROV                  hCryptProv;
     3498    DWORD                       dwKeyChoice;
     3499    union {
     3500        HCRYPTKEY hKeyEncryptionKey;
     3501        void     *pvKeyEncryptionKey;
     3502    } DUMMYUNIONNAME;
     3503    CRYPT_DATA_BLOB             KeyId;
     3504    FILETIME                    Date;
     3505    PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr;
     3506} CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO, *PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO;
     3507
     3508#define CMSG_MAIL_LIST_HANDLE_KEY_CHOICE 1
     3509
     3510typedef struct _CMSG_RECIPIENT_ENCODE_INFO
     3511{
     3512    DWORD dwRecipientChoice;
     3513    union {
     3514        PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO pKeyTrans;
     3515        PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO pKeyAgree;
     3516        PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO pMailList;
     3517    } DUMMYUNIONNAME;
     3518} CMSG_RECIPIENT_ENCODE_INFO, *PCMSG_RECIPIENT_ENCODE_INFO;
     3519
     3520#define CMSG_KEY_TRANS_RECIPIENT 1
     3521#define CMSG_KEY_AGREE_RECIPIENT 2
     3522#define CMSG_MAIL_LIST_RECIPIENT 3
     3523
     3524typedef struct _CMSG_ENVELOPED_ENCODE_INFO
     3525{
     3526    DWORD                       cbSize;
     3527    HCRYPTPROV_LEGACY           hCryptProv;
     3528    CRYPT_ALGORITHM_IDENTIFIER  ContentEncryptionAlgorithm;
     3529    void                       *pvEncryptionAuxInfo;
     3530    DWORD                       cRecipients;
     3531    PCERT_INFO                 *rgpRecipientCert;
     3532#ifdef CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS
     3533    PCMSG_RECIPIENT_ENCODE_INFO rgCmsRecipients;
     3534    DWORD                       cCertEncoded;
     3535    PCERT_BLOB                  rgCertEncoded;
     3536    DWORD                       cCrlEncoded;
     3537    PCRL_BLOB                   rgCrlEncoded;
     3538    DWORD                       cAttrCertEncoded;
     3539    PCERT_BLOB                  rgAttrCertEncoded;
     3540    DWORD                       cUnprotectedAttr;
     3541    PCRYPT_ATTRIBUTE            rgUnprotectedAttr;
     3542#endif
     3543} CMSG_ENVELOPED_ENCODE_INFO, *PCMSG_ENVELOPED_ENCODE_INFO;
     3544
     3545typedef struct _CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO
     3546{
     3547    DWORD                      cbSize;
     3548    CMSG_SIGNED_ENCODE_INFO    SignedInfo;
     3549    CMSG_ENVELOPED_ENCODE_INFO EnvelopedInfo;
     3550} CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO,
     3551 *PCMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO;
     3552
     3553typedef struct _CMSG_HASHED_ENCODE_INFO
     3554{
     3555    DWORD                      cbSize;
     3556    HCRYPTPROV_LEGACY          hCryptProv;
     3557    CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
     3558    void                      *pvHashAuxInfo;
     3559} CMSG_HASHED_ENCODE_INFO, *PCMSG_HASHED_ENCODE_INFO;
     3560
     3561typedef struct _CMSG_ENCRYPTED_ENCODE_INFO
     3562{
     3563    DWORD                      cbSize;
     3564    CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm;
     3565    void                      *pvEncryptionAuxInfo;
     3566} CMSG_ENCRYPTED_ENCODE_INFO, *PCMSG_ENCRYPTED_ENCODE_INFO;
     3567
     3568#define CMSG_BARE_CONTENT_FLAG             0x00000001
     3569#define CMSG_LENGTH_ONLY_FLAG              0x00000002
     3570#define CMSG_DETACHED_FLAG                 0x00000004
     3571#define CMSG_AUTHENTICATED_ATTRIBUTES_FLAG 0x00000008
     3572#define CMSG_CONTENTS_OCTETS_FLAG          0x00000010
     3573#define CMSG_MAX_LENGTH_FLAG               0x00000020
     3574#define CMSG_CMS_ENCAPSULATED_CONTENT_FLAG 0x00000040
     3575#define CMSG_CRYPT_RELEASE_CONTEXT_FLAG    0x00008000
     3576
     3577#define CMSG_CTRL_VERIFY_SIGNATURE       1
     3578#define CMSG_CTRL_DECRYPT                2
     3579#define CMSG_CTRL_VERIFY_HASH            5
     3580#define CMSG_CTRL_ADD_SIGNER             6
     3581#define CMSG_CTRL_DEL_SIGNER             7
     3582#define CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR 8
     3583#define CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR 9
     3584#define CMSG_CTRL_ADD_CERT               10
     3585#define CMSG_CTRL_DEL_CERT               11
     3586#define CMSG_CTRL_ADD_CRL                12
     3587#define CMSG_CTRL_DEL_CRL                13
     3588#define CMSG_CTRL_ADD_ATTR_CERT          14
     3589#define CMSG_CTRL_DEL_ATTR_CERT          15
     3590#define CMSG_CTRL_KEY_TRANS_DECRYPT      16
     3591#define CMSG_CTRL_KEY_AGREE_DECRYPT      17
     3592#define CMSG_CTRL_MAIL_LIST_DECRYPT      18
     3593#define CMSG_CTRL_VERIFY_SIGNATURE_EX    19
     3594#define CMSG_CTRL_ADD_CMS_SIGNER_INFO    20
     3595
     3596typedef struct _CMSG_CTRL_DECRYPT_PARA
     3597{
     3598    DWORD      cbSize;
     3599    HCRYPTPROV hCryptProv;
     3600    DWORD      dwKeySpec;
     3601    DWORD      dwRecipientIndex;
     3602} CMSG_CTRL_DECRYPT_PARA, *PCMSG_CTRL_DECRYPT_PARA;
     3603
     3604typedef struct _CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA
     3605{
     3606    DWORD           cbSize;
     3607    DWORD           dwSignerIndex;
     3608    CRYPT_DATA_BLOB blob;
     3609} CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA,
     3610 *PCMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA;
     3611
     3612typedef struct _CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA
     3613{
     3614    DWORD           cbSize;
     3615    DWORD           dwSignerIndex;
     3616    DWORD           dwUnauthAttrIndex;
     3617} CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA,
     3618 *PCMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA;
     3619
     3620typedef struct _CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA {
     3621    DWORD      cbSize;
     3622    HCRYPTPROV hCryptProv;
     3623    DWORD      dwSignerIndex;
     3624    DWORD      dwSignerType;
     3625    void      *pvSigner;
     3626} CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA, *PCMSG_CTRL_VERIFY_SIGNATURE_EX_PARA;
     3627
     3628#define CMSG_VERIFY_SIGNER_PUBKEY 1
     3629#define CMSG_VERIFY_SIGNER_CERT   2
     3630#define CMSG_VERIFY_SIGNER_CHAIN  3
     3631#define CMSG_VERIFY_SIGNER_NULL   4
     3632
     3633#define CMSG_TYPE_PARAM                  1
     3634#define CMSG_CONTENT_PARAM               2
     3635#define CMSG_BARE_CONTENT_PARAM          3
     3636#define CMSG_INNER_CONTENT_TYPE_PARAM    4
     3637#define CMSG_SIGNER_COUNT_PARAM          5
     3638#define CMSG_SIGNER_INFO_PARAM           6
     3639#define CMSG_SIGNER_CERT_INFO_PARAM      7
     3640#define CMSG_SIGNER_HASH_ALGORITHM_PARAM 8
     3641#define CMSG_SIGNER_AUTH_ATTR_PARAM      9
     3642#define CMSG_SIGNER_UNAUTH_ATTR_PARAM    10
     3643#define CMSG_CERT_COUNT_PARAM            11
     3644#define CMSG_CERT_PARAM                  12
     3645#define CMSG_CRL_COUNT_PARAM             13
     3646#define CMSG_CRL_PARAM                   14
     3647#define CMSG_ENVELOPE_ALGORITHM_PARAM    15
     3648#define CMSG_RECIPIENT_COUNT_PARAM       17
     3649#define CMSG_RECIPIENT_INDEX_PARAM       18
     3650#define CMSG_RECIPIENT_INFO_PARAM        19
     3651#define CMSG_HASH_ALGORITHM_PARAM        20
     3652#define CMSG_HASH_DATA_PARAM             21
     3653#define CMSG_COMPUTED_HASH_PARAM         22
     3654#define CMSG_ENCRYPT_PARAM               26
     3655#define CMSG_ENCRYPTED_DIGEST            27
     3656#define CMSG_ENCODED_SIGNER              28
     3657#define CMSG_ENCODED_MESSAGE             29
     3658#define CMSG_VERSION_PARAM               30
     3659#define CMSG_ATTR_CERT_COUNT_PARAM       31
     3660#define CMSG_ATTR_CERT_PARAM             32
     3661#define CMSG_CMS_RECIPIENT_COUNT_PARAM   33
     3662#define CMSG_CMS_RECIPIENT_INDEX_PARAM   34
     3663#define CMSG_CMS_RECIPIENT_ENCRYPTED_KEY_INDEX_PARAM 35
     3664#define CMSG_CMS_RECIPIENT_INFO_PARAM    36
     3665#define CMSG_UNPROTECTED_ATTR_PARAM      37
     3666#define CMSG_SIGNER_CERT_ID_PARAM        38
     3667#define CMSG_CMS_SIGNER_INFO_PARAM       39
     3668
     3669typedef struct _CMSG_CMS_SIGNER_INFO {
     3670    DWORD                      dwVersion;
     3671    CERT_ID                    SignerId;
     3672    CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
     3673    CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
     3674    CRYPT_DATA_BLOB            EncryptedHash;
     3675    CRYPT_ATTRIBUTES           AuthAttrs;
     3676    CRYPT_ATTRIBUTES           UnauthAttrs;
     3677} CMSG_CMS_SIGNER_INFO, *PCMSG_CMS_SIGNER_INFO;
     3678
     3679typedef CRYPT_ATTRIBUTES CMSG_ATTR, *PCMSG_ATTR;
     3680
     3681#define CMSG_SIGNED_DATA_V1               1
     3682#define CMSG_SIGNED_DATA_V3               3
     3683#define CMSG_SIGNED_DATA_PKCS_1_5_VERSION CMSG_SIGNED_DATA_V1
     3684#define CMSG_SIGNED_DATA_CMS_VERSION      CMSG_SIGNED_DATA_V3
     3685
     3686#define CMSG_SIGNER_INFO_V1               1
     3687#define CMSG_SIGNER_INFO_V3               3
     3688#define CMSG_SIGNER_INFO_PKCS_1_5_VERSION CMSG_SIGNER_INFO_V1
     3689#define CMSG_SIGNER_INFO_CMS_VERSION      CMSG_SIGNER_INFO_V3
     3690
     3691#define CMSG_HASHED_DATA_V0               0
     3692#define CMSG_HASHED_DATA_V2               2
     3693#define CMSG_HASHED_DATA_PKCS_1_5_VERSION CMSG_HASHED_DATA_V0
     3694#define CMSG_HASHED_DATA_CMS_VERSION      CMSG_HASHED_DATA_V2
     3695
     3696#define CMSG_ENVELOPED_DATA_V0               0
     3697#define CMSG_ENVELOPED_DATA_V2               2
     3698#define CMSG_ENVELOPED_DATA_PKCS_1_5_VERSION CMSG_ENVELOPED_DATA_V0
     3699#define CMSG_ENVELOPED_DATA_CMS_VERSION      CMSG_ENVELOPED_DATA_V2
     3700
     3701typedef struct _CMSG_KEY_TRANS_RECIPIENT_INFO {
     3702    DWORD                      dwVersion;
     3703    CERT_ID                    RecipientId;
     3704    CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm;
     3705    CRYPT_DATA_BLOB            EncryptedKey;
     3706} CMSG_KEY_TRANS_RECIPIENT_INFO, *PCMSG_KEY_TRANS_RECIPIENT_INFO;
     3707
     3708typedef struct _CMSG_RECIPIENT_ENCRYPTED_KEY_INFO {
     3709    CERT_ID                     RecipientId;
     3710    CRYPT_DATA_BLOB             EncryptedKey;
     3711    PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr;
     3712} CMSG_RECIPIENT_ENCRYPTED_KEY_INFO, *PCMSG_RECIPIENT_ENCRYPTED_KEY_INFO;
     3713
     3714typedef struct _CMSG_KEY_AGREE_RECIPIENT_INFO {
     3715    DWORD                               dwVersion;
     3716    DWORD                               dwOriginatorChoice;
     3717    union {
     3718        CERT_ID              OriginatorCertId;
     3719        CERT_PUBLIC_KEY_INFO OriginatorPublicKeyInfo;
     3720    } DUMMYUNIONNAME;
     3721    CRYPT_ALGORITHM_IDENTIFIER          UserKeyingMaterial;
     3722    DWORD                               cRecipientEncryptedKeys;
     3723    PCMSG_RECIPIENT_ENCRYPTED_KEY_INFO *rgpRecipientEncryptedKeys;
     3724} CMSG_KEY_AGREE_RECIPIENT_INFO, *PCMSG_KEY_AGREE_RECIPIENT_INFO;
     3725
     3726#define CMSG_KEY_AGREE_ORIGINATOR_CERT       1
     3727#define CMSG_KEY_AGREE_ORIGINATOR_PUBLIC_KEY 2
     3728
     3729typedef struct _CMSG_MAIL_LIST_RECIPIENT_INFO {
     3730    DWORD                       dwVersion;
     3731    CRYPT_DATA_BLOB             KeyId;
     3732    CRYPT_ALGORITHM_IDENTIFIER  KeyEncryptionAlgorithm;
     3733    CRYPT_DATA_BLOB             EncryptedKey;
     3734    FILETIME                    Date;
     3735    PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr;
     3736} CMSG_MAIL_LIST_RECIPIENT_INFO, *PCMSG_MAIL_LIST_RECIPIENT_INFO;
     3737
     3738typedef struct _CMSG_CMS_RECIPIENT_INFO {
     3739    DWORD dwRecipientChoice;
     3740    union {
     3741        PCMSG_KEY_TRANS_RECIPIENT_INFO pKeyTrans;
     3742        PCMSG_KEY_AGREE_RECIPIENT_INFO pKeyAgree;
     3743        PCMSG_MAIL_LIST_RECIPIENT_INFO pMailList;
     3744    } DUMMYUNIONNAME;
     3745} CMSG_CMS_RECIPIENT_INFO, *PCMSG_CMS_RECIPIENT_INFO;
     3746
     3747#define CMSG_ENVELOPED_RECIPIENT_V0     0
     3748#define CMSG_ENVELOPED_RECIPIENT_V2     2
     3749#define CMSG_ENVELOPED_RECIPIENT_V3     3
     3750#define CMSG_ENVELOPED_RECIPIENT_V4     4
     3751#define CMSG_KEY_TRANS_PKCS_1_5_VERSION CMSG_ENVELOPED_RECIPIENT_V0
     3752#define CMSG_KEY_TRANS_CMS_VERSION      CMSG_ENVELOPED_RECIPIENT_V2
     3753#define CMSG_KEY_AGREE_VERSION          CMSG_ENVELOPED_RECIPIENT_V3
     3754#define CMSG_MAIL_LIST_VERSION          CMSG_ENVELOPED_RECIPIENT_V4
     3755
     3756/* CryptMsgGetAndVerifySigner flags */
     3757#define CMSG_TRUSTED_SIGNER_FLAG   0x1
     3758#define CMSG_SIGNER_ONLY_FLAG      0x2
     3759#define CMSG_USE_SIGNER_INDEX_FLAG 0x4
     3760
     3761/* CryptMsgSignCTL flags */
     3762#define CMSG_CMS_ENCAPSULATED_CTL_FLAG 0x00008000
     3763
     3764/* CryptMsgEncodeAndSignCTL flags */
     3765#define CMSG_ENCODED_SORTED_CTL_FLAG               0x1
     3766#define CMSG_ENCODE_HASHED_SUBJECT_IDENTIFIER_FLAG 0x2
    1983767
    1993768/* function declarations */
    200 
    201 BOOL WINAPI CryptAcquireContextA(HCRYPTPROV *phProv, LPCSTR pszContainer,
    202                                  LPCSTR pszProvider, DWORD dwProvType,
    203                                  DWORD dwFlags);
    204 BOOL WINAPI CryptAcquireContextW(HCRYPTPROV *phProv, LPCWSTR pszContainer,
    205                                  LPCWSTR pszProvider, DWORD dwProvType,
    206                                  DWORD dwFlags);
    207 #define     CryptAcquireContext WINELIB_NAME_AW(CryptAcquireContext)
    208 
    209 BOOL WINAPI CryptReleaseContext(HCRYPTPROV hProv, DWORD dwFlags);
    210 BOOL WINAPI CryptGenKey(HCRYPTPROV hProv, ALG_ID Algid, DWORD dwFlags,
    211                         HCRYPTKEY *phKey);
    212 BOOL WINAPI CryptDeriveKey(HCRYPTPROV hProv, ALG_ID Algid, HCRYPTHASH hBaseData,
    213                            DWORD dwFlags, HCRYPTKEY *phKey);
    214 BOOL WINAPI CryptDestroyKey(HCRYPTKEY hKey);
    215 BOOL WINAPI CryptSetKeyParam(HCRYPTKEY hKey,DWORD dwParam,BYTE *pbData,DWORD dwFlags);
    216 BOOL WINAPI CryptGetKeyParam(HCRYPTKEY hKey, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen, DWORD dwFlags);
    217 BOOL WINAPI CryptSetHashParam(HCRYPTHASH hHash, DWORD dwParam, BYTE *pbData, DWORD dwFlags);
    218 BOOL WINAPI CryptGetHashParam(HCRYPTHASH hHash, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen,DWORD dwFlags);
    219 BOOL WINAPI CryptSetProvParam(HCRYPTPROV hProv, DWORD dwParam, BYTE *pbData,DWORD dwFlags);
    220 BOOL WINAPI CryptGetProvParam(HCRYPTPROV hProv, DWORD dwParam, BYTE *pbData,DWORD *pdwDataLen,
    221                               DWORD dwFlags);
    222 BOOL WINAPI CryptGenRandom(HCRYPTPROV hProv, DWORD dwLen, BYTE *pbBuffer);
    223 BOOL WINAPI CryptGetUserKey(HCRYPTPROV hProv, DWORD dwKeySpec, HCRYPTKEY *phUserKey);
    224 BOOL WINAPI CryptExportKey(HCRYPTKEY hKey,HCRYPTKEY hExpKey, DWORD dwBlobType, DWORD dwFlags,
    225                            BYTE *pbData, DWORD *pdwDataLen);
    226 BOOL WINAPI CryptImportKey(HCRYPTPROV hProv,CONST BYTE *pbData, DWORD dwDataLen,
    227                            HCRYPTKEY hPubKey, DWORD dwFlags,HCRYPTKEY *phKey);
    228 BOOL WINAPI CryptEncrypt(HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final,
    229                          DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen,
    230                          DWORD dwBufLen);
    231 BOOL WINAPI CryptDecrypt(HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final, DWORD dwFlags,
    232                          BYTE *pbData, DWORD *pdwDataLen);
    233 BOOL WINAPI CryptCreateHash(HCRYPTPROV hProv, ALG_ID Algid, HCRYPTKEY hKey, DWORD dwFlags,
    234                             HCRYPTHASH *phHash);
    235 BOOL WINAPI CryptHashData(HCRYPTHASH hHash, CONST BYTE *pbData, DWORD dwDataLen,
    236                           DWORD dwFlags);
    237 BOOL WINAPI CryptHashSessionKey(HCRYPTHASH hHash, HCRYPTKEY hKey, DWORD dwFlags);
    238 BOOL WINAPI CryptDestroyHash(HCRYPTHASH hHash);
    239 BOOL WINAPI CryptSignHashA(HCRYPTHASH hHash, DWORD dwKeySpec, LPCSTR sDescription,
    240                            DWORD dwFlags, BYTE *pbSignature, DWORD *pdwSigLen);
    241 BOOL WINAPI CryptSignHashW(HCRYPTHASH hHash, DWORD dwKeySpec, LPCWSTR sDescription,
    242                            DWORD dwFlags, BYTE *pbSignature, DWORD *pdwSigLen);
    243 #define     CryptSignHash WINELIB_NAME_AW(CryptSignHash)
    244 
    245 BOOL WINAPI CryptVerifySignatureA(HCRYPTHASH hHash, CONST BYTE *pbSignature, DWORD dwSigLen,
    246                                   HCRYPTKEY hPubKey, LPCSTR sDescription, DWORD dwFlags);
    247 BOOL WINAPI CryptVerifySignatureW(HCRYPTHASH hHash, CONST BYTE *pbSignature, DWORD dwSigLen,
    248                                   HCRYPTKEY hPubKey, LPCWSTR sDescription, DWORD dwFlags);
    249 #define     CryptVerifySignature WINELIB_NAME_AW(CryptVerifySignature)
    250 
    251 BOOL WINAPI CryptSetProviderA(LPCSTR pszProvName, DWORD dwProvType);
    252 BOOL WINAPI CryptSetProviderW(LPCWSTR pszProvName, DWORD dwProvType);
    253 #define     CryptSetProvider WINELIB_NAME_AW(CryptSetProvider)
    254 
     3769/* advapi32.dll */
     3770WINADVAPI BOOL WINAPI CryptAcquireContextA(HCRYPTPROV *, LPCSTR, LPCSTR, DWORD, DWORD);
     3771WINADVAPI BOOL WINAPI CryptAcquireContextW (HCRYPTPROV *, LPCWSTR, LPCWSTR, DWORD, DWORD);
     3772#define               CryptAcquireContext WINELIB_NAME_AW(CryptAcquireContext)
     3773WINADVAPI BOOL WINAPI CryptGenRandom (HCRYPTPROV, DWORD, BYTE *);
     3774WINADVAPI BOOL WINAPI CryptContextAddRef (HCRYPTPROV, DWORD *, DWORD);
     3775WINADVAPI BOOL WINAPI CryptCreateHash (HCRYPTPROV, ALG_ID, HCRYPTKEY, DWORD, HCRYPTHASH *);
     3776WINADVAPI BOOL WINAPI CryptDecrypt (HCRYPTKEY, HCRYPTHASH, BOOL, DWORD, BYTE *, DWORD *);
     3777WINADVAPI BOOL WINAPI CryptDeriveKey (HCRYPTPROV, ALG_ID, HCRYPTHASH, DWORD, HCRYPTKEY *);
     3778WINADVAPI BOOL WINAPI CryptDestroyHash (HCRYPTHASH);
     3779WINADVAPI BOOL WINAPI CryptDestroyKey (HCRYPTKEY);
     3780WINADVAPI BOOL WINAPI CryptDuplicateKey (HCRYPTKEY, DWORD *, DWORD, HCRYPTKEY *);
     3781WINADVAPI BOOL WINAPI CryptDuplicateHash (HCRYPTHASH, DWORD *, DWORD, HCRYPTHASH *);
     3782WINADVAPI BOOL WINAPI CryptEncrypt (HCRYPTKEY, HCRYPTHASH, BOOL, DWORD, BYTE *, DWORD *, DWORD);
     3783WINADVAPI BOOL WINAPI CryptEnumProvidersA (DWORD, DWORD *, DWORD, DWORD *, LPSTR, DWORD *);
     3784WINADVAPI BOOL WINAPI CryptEnumProvidersW (DWORD, DWORD *, DWORD, DWORD *, LPWSTR, DWORD *);
     3785#define               CryptEnumProviders WINELIB_NAME_AW(CryptEnumProviders)
     3786WINADVAPI BOOL WINAPI CryptEnumProviderTypesA (DWORD, DWORD *, DWORD, DWORD *, LPSTR, DWORD *);
     3787WINADVAPI BOOL WINAPI CryptEnumProviderTypesW (DWORD, DWORD *, DWORD, DWORD *, LPWSTR, DWORD *);
     3788#define               CryptEnumProviderTypes WINELIB_NAME_AW(CryptEnumProviderTypes)
     3789WINADVAPI BOOL WINAPI CryptExportKey (HCRYPTKEY, HCRYPTKEY, DWORD, DWORD, BYTE *, DWORD *);
     3790WINADVAPI BOOL WINAPI CryptGenKey (HCRYPTPROV, ALG_ID, DWORD, HCRYPTKEY *);
     3791WINADVAPI BOOL WINAPI CryptGetKeyParam (HCRYPTKEY, DWORD, BYTE *, DWORD *, DWORD);
     3792WINADVAPI BOOL WINAPI CryptGetHashParam (HCRYPTHASH, DWORD, BYTE *, DWORD *, DWORD);
     3793WINADVAPI BOOL WINAPI CryptGetProvParam (HCRYPTPROV, DWORD, BYTE *, DWORD *, DWORD);
     3794WINADVAPI BOOL WINAPI CryptGetDefaultProviderA (DWORD, DWORD *, DWORD, LPSTR, DWORD *);
     3795WINADVAPI BOOL WINAPI CryptGetDefaultProviderW (DWORD, DWORD *, DWORD, LPWSTR, DWORD *);
     3796#define               CryptGetDefaultProvider WINELIB_NAME_AW(CryptGetDefaultProvider)
     3797WINADVAPI BOOL WINAPI CryptGetUserKey (HCRYPTPROV, DWORD, HCRYPTKEY *);
     3798WINADVAPI BOOL WINAPI CryptHashData (HCRYPTHASH, CONST BYTE *, DWORD, DWORD);
     3799WINADVAPI BOOL WINAPI CryptHashSessionKey (HCRYPTHASH, HCRYPTKEY, DWORD);
     3800WINADVAPI BOOL WINAPI CryptImportKey (HCRYPTPROV, CONST BYTE *, DWORD, HCRYPTKEY, DWORD, HCRYPTKEY *);
     3801WINADVAPI BOOL WINAPI CryptReleaseContext (HCRYPTPROV, ULONG_PTR);
     3802//WINADVAPI BOOL WINAPI CryptSetHashParam (HCRYPTHASH, DWORD, CONST BYTE *, DWORD);
     3803//BOOL WINAPI CryptSetKeyParam (HCRYPTKEY, DWORD, CONST BYTE *, DWORD);
     3804WINADVAPI BOOL WINAPI CryptSetProviderA (LPCSTR, DWORD);
     3805WINADVAPI BOOL WINAPI CryptSetProviderW (LPCWSTR, DWORD);
     3806#define               CryptSetProvider WINELIB_NAME_AW(CryptSetProvider)
     3807WINADVAPI BOOL WINAPI CryptSetProviderExA (LPCSTR, DWORD, DWORD *, DWORD);
     3808WINADVAPI BOOL WINAPI CryptSetProviderExW (LPCWSTR, DWORD, DWORD *, DWORD);
     3809#define               CryptSetProviderEx WINELIB_NAME_AW(CryptSetProviderEx)
     3810//WINADVAPI BOOL WINAPI CryptSetProvParam (HCRYPTPROV, DWORD, CONST BYTE *, DWORD);
     3811WINADVAPI BOOL WINAPI CryptSignHashA (HCRYPTHASH, DWORD, LPCSTR, DWORD, BYTE *, DWORD *);
     3812WINADVAPI BOOL WINAPI CryptSignHashW (HCRYPTHASH, DWORD, LPCWSTR, DWORD, BYTE *, DWORD *);
     3813#define               CryptSignHash WINELIB_NAME_AW(CryptSignHash)
     3814WINADVAPI BOOL WINAPI CryptVerifySignatureA (HCRYPTHASH, CONST BYTE *, DWORD, HCRYPTKEY, LPCSTR, DWORD);
     3815WINADVAPI BOOL WINAPI CryptVerifySignatureW (HCRYPTHASH, CONST BYTE *, DWORD, HCRYPTKEY, LPCWSTR, DWORD);
     3816#define               CryptVerifySignature WINELIB_NAME_AW(CryptVerifySignature)
     3817
     3818/* crypt32.dll functions */
     3819LPVOID WINAPI CryptMemAlloc(ULONG cbSize);
     3820LPVOID WINAPI CryptMemRealloc(LPVOID pv, ULONG cbSize);
     3821VOID   WINAPI CryptMemFree(LPVOID pv);
     3822
     3823BOOL WINAPI CryptBinaryToStringA(const BYTE *pbBinary,
     3824 DWORD cbBinary, DWORD dwFlags, LPSTR pszString, DWORD *pcchString);
     3825BOOL WINAPI CryptBinaryToStringW(const BYTE *pbBinary,
     3826 DWORD cbBinary, DWORD dwFlags, LPWSTR pszString, DWORD *pcchString);
     3827#define CryptBinaryToString WINELIB_NAME_AW(CryptBinaryToString)
     3828
     3829BOOL WINAPI CryptStringToBinaryA(LPCSTR pszString,
     3830 DWORD cchString, DWORD dwFlags, BYTE *pbBinary, DWORD *pcbBinary,
     3831 DWORD *pdwSkip, DWORD *pdwFlags);
     3832BOOL WINAPI CryptStringToBinaryW(LPCWSTR pszString,
     3833 DWORD cchString, DWORD dwFlags, BYTE *pbBinary, DWORD *pcbBinary,
     3834 DWORD *pdwSkip, DWORD *pdwFlags);
     3835#define CryptStringToBinary WINELIB_NAME_AW(CryptStringToBinary)
     3836
     3837BOOL WINAPI CryptCreateAsyncHandle(DWORD dwFlags, PHCRYPTASYNC phAsync);
     3838BOOL WINAPI CryptSetAsyncParam(HCRYPTASYNC hAsync, LPSTR pszParamOid,
     3839 LPVOID pvParam, PFN_CRYPT_ASYNC_PARAM_FREE_FUNC pfnFree);
     3840BOOL WINAPI CryptGetAsyncParam(HCRYPTASYNC hAsync, LPSTR pszParamOid,
     3841 LPVOID *ppvParam, PFN_CRYPT_ASYNC_PARAM_FREE_FUNC *ppfnFree);
     3842BOOL WINAPI CryptCloseAsyncHandle(HCRYPTASYNC hAsync);
     3843
     3844BOOL WINAPI CryptRegisterDefaultOIDFunction(DWORD,LPCSTR,DWORD,LPCWSTR);
     3845BOOL WINAPI CryptRegisterOIDFunction(DWORD,LPCSTR,LPCSTR,LPCWSTR,LPCSTR);
     3846BOOL WINAPI CryptGetOIDFunctionValue(DWORD dwEncodingType, LPCSTR pszFuncName,
     3847                                     LPCSTR pszOID, LPCWSTR szValueName, DWORD *pdwValueType,
     3848                                     BYTE *pbValueData, DWORD *pcbValueData);
     3849BOOL WINAPI CryptSetOIDFunctionValue(DWORD dwEncodingType, LPCSTR pszFuncName,
     3850                                     LPCSTR pszOID, LPCWSTR pwszValueName, DWORD dwValueType,
     3851                                     const BYTE *pbValueData, DWORD cbValueData);
     3852BOOL WINAPI CryptUnregisterDefaultOIDFunction(DWORD,LPCSTR,LPCWSTR);
     3853BOOL WINAPI CryptUnregisterOIDFunction(DWORD,LPCSTR,LPCSTR);
     3854BOOL WINAPI CryptEnumOIDFunction(DWORD dwEncodingType, LPCSTR pszFuncName,
     3855 LPCSTR pszOID, DWORD dwFlags, void *pvArg,
     3856 PFN_CRYPT_ENUM_OID_FUNC pfnEnumOIDFunc);
     3857HCRYPTOIDFUNCSET WINAPI CryptInitOIDFunctionSet(LPCSTR,DWORD);
     3858BOOL WINAPI CryptGetDefaultOIDDllList(HCRYPTOIDFUNCSET hFuncSet,
     3859 DWORD dwEncodingType, LPWSTR pwszDllList, DWORD *pcchDllList);
     3860BOOL WINAPI CryptGetDefaultOIDFunctionAddress(HCRYPTOIDFUNCSET hFuncSet,
     3861 DWORD dwEncodingType, LPCWSTR pwszDll, DWORD dwFlags, void **ppvFuncAddr,
     3862 HCRYPTOIDFUNCADDR *phFuncAddr);
     3863BOOL WINAPI CryptGetOIDFunctionAddress(HCRYPTOIDFUNCSET hFuncSet,
     3864 DWORD dwEncodingType, LPCSTR pszOID, DWORD dwFlags, void **ppvFuncAddr,
     3865 HCRYPTOIDFUNCADDR *phFuncAddr);
     3866BOOL WINAPI CryptFreeOIDFunctionAddress(HCRYPTOIDFUNCADDR hFuncAddr,
     3867 DWORD dwFlags);
     3868BOOL WINAPI CryptInstallOIDFunctionAddress(HMODULE hModule,
     3869 DWORD dwEncodingType, LPCSTR pszFuncName, DWORD cFuncEntry,
     3870 const CRYPT_OID_FUNC_ENTRY rgFuncEntry[], DWORD dwFlags);
     3871BOOL WINAPI CryptInstallDefaultContext(HCRYPTPROV hCryptProv,
     3872 DWORD dwDefaultType, const void *pvDefaultPara, DWORD dwFlags,
     3873 void *pvReserved, HCRYPTDEFAULTCONTEXT *phDefaultContext);
     3874BOOL WINAPI CryptUninstallDefaultContext(HCRYPTDEFAULTCONTEXT hDefaultContext,
     3875 DWORD dwFlags, void *pvReserved);
     3876
     3877BOOL WINAPI CryptEnumOIDInfo(DWORD dwGroupId, DWORD dwFlags, void *pvArg,
     3878 PFN_CRYPT_ENUM_OID_INFO pfnEnumOIDInfo);
     3879PCCRYPT_OID_INFO WINAPI CryptFindOIDInfo(DWORD dwKeyType, void *pvKey,
     3880 DWORD dwGroupId);
     3881BOOL WINAPI CryptRegisterOIDInfo(PCCRYPT_OID_INFO pInfo, DWORD dwFlags);
     3882BOOL WINAPI CryptUnregisterOIDInfo(PCCRYPT_OID_INFO pInfo);
     3883
     3884LPCSTR WINAPI CertAlgIdToOID(DWORD dwAlgId);
     3885DWORD WINAPI CertOIDToAlgId(LPCSTR pszObjId);
     3886
     3887/* cert store functions */
     3888HCERTSTORE WINAPI CertOpenStore(LPCSTR lpszStoreProvider, DWORD dwEncodingType,
     3889 HCRYPTPROV_LEGACY hCryptProv, DWORD dwFlags, const void *pvPara);
     3890
     3891HCERTSTORE WINAPI CertOpenSystemStoreA(HCRYPTPROV_LEGACY hProv,
     3892 LPCSTR szSubSystemProtocol);
     3893HCERTSTORE WINAPI CertOpenSystemStoreW(HCRYPTPROV_LEGACY hProv,
     3894 LPCWSTR szSubSystemProtocol);
     3895#define CertOpenSystemStore WINELIB_NAME_AW(CertOpenSystemStore)
     3896
     3897PCCERT_CONTEXT WINAPI CertEnumCertificatesInStore(HCERTSTORE hCertStore,
     3898 PCCERT_CONTEXT pPrev);
     3899
     3900PCCRL_CONTEXT WINAPI CertEnumCRLsInStore(HCERTSTORE hCertStore,
     3901 PCCRL_CONTEXT pPrev);
     3902
     3903PCCTL_CONTEXT WINAPI CertEnumCTLsInStore(HCERTSTORE hCertStore,
     3904 PCCTL_CONTEXT pPrev);
     3905
     3906BOOL WINAPI CertEnumSystemStoreLocation(DWORD dwFlags, void *pvArg,
     3907 PFN_CERT_ENUM_SYSTEM_STORE_LOCATION pfnEnum);
     3908
     3909BOOL WINAPI CertEnumSystemStore(DWORD dwFlags, void *pvSystemStoreLocationPara,
     3910 void *pvArg, PFN_CERT_ENUM_SYSTEM_STORE pfnEnum);
     3911
     3912BOOL WINAPI CertEnumPhysicalStore(const void *pvSystemStore, DWORD dwFlags,
     3913 void *pvArg, PFN_CERT_ENUM_PHYSICAL_STORE pfnEnum);
     3914
     3915BOOL WINAPI CertSaveStore(HCERTSTORE hCertStore, DWORD dwMsgAndCertEncodingType,
     3916             DWORD dwSaveAs, DWORD dwSaveTo, void* pvSaveToPara, DWORD dwFlags);
     3917
     3918BOOL WINAPI CertAddStoreToCollection(HCERTSTORE hCollectionStore,
     3919 HCERTSTORE hSiblingStore, DWORD dwUpdateFlags, DWORD dwPriority);
     3920
     3921void WINAPI CertRemoveStoreFromCollection(HCERTSTORE hCollectionStore,
     3922 HCERTSTORE hSiblingStore);
     3923
     3924BOOL WINAPI CertCreateCertificateChainEngine(PCERT_CHAIN_ENGINE_CONFIG pConfig,
     3925 HCERTCHAINENGINE *phChainEngine);
     3926
     3927BOOL WINAPI CertResyncCertificateChainEngine(HCERTCHAINENGINE hChainEngine);
     3928
     3929VOID WINAPI CertFreeCertificateChainEngine(HCERTCHAINENGINE hChainEngine);
     3930
     3931BOOL WINAPI CertGetCertificateChain(HCERTCHAINENGINE hChainEngine,
     3932 PCCERT_CONTEXT pCertContext, LPFILETIME pTime, HCERTSTORE hAdditionalStore,
     3933 PCERT_CHAIN_PARA pChainPara, DWORD dwFlags, LPVOID pvReserved,
     3934 PCCERT_CHAIN_CONTEXT *ppChainContext);
     3935
     3936PCCERT_CHAIN_CONTEXT WINAPI CertDuplicateCertificateChain(
     3937 PCCERT_CHAIN_CONTEXT pChainContext);
     3938
     3939VOID WINAPI CertFreeCertificateChain(PCCERT_CHAIN_CONTEXT pChainContext);
     3940
     3941PCCERT_CHAIN_CONTEXT WINAPI CertFindChainInStore(HCERTSTORE hCertStore,
     3942 DWORD dwCertEncodingType, DWORD dwFindFlags, DWORD dwFindType,
     3943 const void *pvFindPara, PCCERT_CHAIN_CONTEXT pPrevChainContext);
     3944
     3945BOOL WINAPI CertVerifyCertificateChainPolicy(LPCSTR szPolicyOID,
     3946 PCCERT_CHAIN_CONTEXT pChainContext, PCERT_CHAIN_POLICY_PARA pPolicyPara,
     3947 PCERT_CHAIN_POLICY_STATUS pPolicyStatus);
     3948
     3949DWORD WINAPI CertEnumCertificateContextProperties(PCCERT_CONTEXT pCertContext,
     3950 DWORD dwPropId);
     3951
     3952BOOL WINAPI CertGetCertificateContextProperty(PCCERT_CONTEXT pCertContext,
     3953 DWORD dwPropId, void *pvData, DWORD *pcbData);
     3954
     3955BOOL WINAPI CertSetCertificateContextProperty(PCCERT_CONTEXT pCertContext,
     3956 DWORD dwPropId, DWORD dwFlags, const void *pvData);
     3957
     3958DWORD WINAPI CertEnumCRLContextProperties(PCCRL_CONTEXT pCRLContext,
     3959 DWORD dwPropId);
     3960
     3961BOOL WINAPI CertGetCRLContextProperty(PCCRL_CONTEXT pCRLContext,
     3962 DWORD dwPropId, void *pvData, DWORD *pcbData);
     3963
     3964BOOL WINAPI CertSetCRLContextProperty(PCCRL_CONTEXT pCRLContext,
     3965 DWORD dwPropId, DWORD dwFlags, const void *pvData);
     3966
     3967DWORD WINAPI CertEnumCTLContextProperties(PCCTL_CONTEXT pCTLContext,
     3968 DWORD dwPropId);
     3969
     3970BOOL WINAPI CertEnumSubjectInSortedCTL(PCCTL_CONTEXT pCTLContext,
     3971 void **ppvNextSubject, PCRYPT_DER_BLOB pSubjectIdentifier,
     3972 PCRYPT_DER_BLOB pEncodedAttributes);
     3973
     3974BOOL WINAPI CertGetCTLContextProperty(PCCTL_CONTEXT pCTLContext,
     3975 DWORD dwPropId, void *pvData, DWORD *pcbData);
     3976
     3977BOOL WINAPI CertSetCTLContextProperty(PCCTL_CONTEXT pCTLContext,
     3978 DWORD dwPropId, DWORD dwFlags, const void *pvData);
     3979
     3980BOOL WINAPI CertGetStoreProperty(HCERTSTORE hCertStore, DWORD dwPropId,
     3981 void *pvData, DWORD *pcbData);
     3982
     3983BOOL WINAPI CertSetStoreProperty(HCERTSTORE hCertStore, DWORD dwPropId,
     3984 DWORD dwFlags, const void *pvData);
     3985
     3986BOOL WINAPI CertControlStore(HCERTSTORE hCertStore, DWORD dwFlags,
     3987 DWORD dwCtrlType, void const *pvCtrlPara);
     3988
     3989HCERTSTORE WINAPI CertDuplicateStore(HCERTSTORE hCertStore);
     3990
     3991BOOL WINAPI CertCloseStore( HCERTSTORE hCertStore, DWORD dwFlags );
     3992
     3993BOOL WINAPI CertFreeCertificateContext( PCCERT_CONTEXT pCertContext );
     3994
     3995BOOL WINAPI CertFreeCRLContext( PCCRL_CONTEXT pCrlContext );
     3996
     3997BOOL WINAPI CertFreeCTLContext( PCCTL_CONTEXT pCtlContext );
     3998
     3999BOOL WINAPI CertAddCertificateContextToStore(HCERTSTORE hCertStore,
     4000 PCCERT_CONTEXT pCertContext, DWORD dwAddDisposition,
     4001 PCCERT_CONTEXT *ppStoreContext);
     4002
     4003BOOL WINAPI CertAddCRLContextToStore( HCERTSTORE hCertStore,
     4004 PCCRL_CONTEXT pCrlContext, DWORD dwAddDisposition,
     4005 PCCRL_CONTEXT *ppStoreContext );
     4006
     4007BOOL WINAPI CertAddCTLContextToStore( HCERTSTORE hCertStore,
     4008 PCCTL_CONTEXT pCtlContext, DWORD dwAddDisposition,
     4009 PCCTL_CONTEXT *ppStoreContext );
     4010
     4011BOOL WINAPI CertAddCertificateLinkToStore(HCERTSTORE hCertStore,
     4012 PCCERT_CONTEXT pCertContext, DWORD dwAddDisposition,
     4013 PCCERT_CONTEXT *ppStoreContext);
     4014
     4015BOOL WINAPI CertAddCRLLinkToStore(HCERTSTORE hCertStore,
     4016 PCCRL_CONTEXT pCrlContext, DWORD dwAddDisposition,
     4017 PCCRL_CONTEXT *ppStoreContext);
     4018
     4019BOOL WINAPI CertAddCTLLinkToStore(HCERTSTORE hCertStore,
     4020 PCCTL_CONTEXT pCtlContext, DWORD dwAddDisposition,
     4021 PCCTL_CONTEXT *ppStoreContext);
     4022
     4023BOOL WINAPI CertAddEncodedCertificateToStore(HCERTSTORE hCertStore,
     4024 DWORD dwCertEncodingType, const BYTE *pbCertEncoded, DWORD cbCertEncoded,
     4025 DWORD dwAddDisposition, PCCERT_CONTEXT *ppCertContext);
     4026
     4027BOOL WINAPI CertAddEncodedCRLToStore(HCERTSTORE hCertStore,
     4028 DWORD dwCertEncodingType, const BYTE *pbCrlEncoded, DWORD cbCrlEncoded,
     4029 DWORD dwAddDisposition, PCCRL_CONTEXT *ppCrlContext);
     4030
     4031BOOL WINAPI CertAddEncodedCTLToStore(HCERTSTORE hCertStore,
     4032 DWORD dwMsgAndCertEncodingType, const BYTE *pbCtlEncoded, DWORD cbCtlEncoded,
     4033 DWORD dwAddDisposition, PCCTL_CONTEXT *ppCtlContext);
     4034
     4035BOOL WINAPI CertAddSerializedElementToStore(HCERTSTORE hCertStore,
     4036 const BYTE *pbElement, DWORD cbElement, DWORD dwAddDisposition, DWORD dwFlags,
     4037 DWORD dwContextTypeFlags, DWORD *pdwContentType, const void **ppvContext);
     4038
     4039BOOL WINAPI CertCompareCertificate(DWORD dwCertEncodingType,
     4040 PCERT_INFO pCertId1, PCERT_INFO pCertId2);
     4041BOOL WINAPI CertCompareCertificateName(DWORD dwCertEncodingType,
     4042 PCERT_NAME_BLOB pCertName1, PCERT_NAME_BLOB pCertName2);
     4043BOOL WINAPI CertCompareIntegerBlob(PCRYPT_INTEGER_BLOB pInt1,
     4044 PCRYPT_INTEGER_BLOB pInt2);
     4045BOOL WINAPI CertComparePublicKeyInfo(DWORD dwCertEncodingType,
     4046 PCERT_PUBLIC_KEY_INFO pPublicKey1, PCERT_PUBLIC_KEY_INFO pPublicKey2);
     4047DWORD WINAPI CertGetPublicKeyLength(DWORD dwCertEncodingType,
     4048 PCERT_PUBLIC_KEY_INFO pPublicKey);
     4049
     4050const void * WINAPI CertCreateContext(DWORD dwContextType, DWORD dwEncodingType,
     4051 const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags,
     4052 PCERT_CREATE_CONTEXT_PARA pCreatePara);
     4053
     4054PCCERT_CONTEXT WINAPI CertCreateCertificateContext(DWORD dwCertEncodingType,
     4055 const BYTE *pbCertEncoded, DWORD cbCertEncoded);
     4056
     4057PCCRL_CONTEXT WINAPI CertCreateCRLContext( DWORD dwCertEncodingType,
     4058  const BYTE* pbCrlEncoded, DWORD cbCrlEncoded);
     4059
     4060PCCTL_CONTEXT WINAPI CertCreateCTLContext(DWORD dwMsgAndCertEncodingType,
     4061 const BYTE *pbCtlEncoded, DWORD cbCtlEncoded);
     4062
     4063PCCERT_CONTEXT WINAPI CertCreateSelfSignCertificate(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hProv,
     4064 PCERT_NAME_BLOB pSubjectIssuerBlob, DWORD dwFlags,
     4065 PCRYPT_KEY_PROV_INFO pKeyProvInfo,
     4066 PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, LPSYSTEMTIME pStartTime,
     4067 LPSYSTEMTIME pEndTime, PCERT_EXTENSIONS pExtensions);
     4068
     4069BOOL WINAPI CertDeleteCertificateFromStore(PCCERT_CONTEXT pCertContext);
     4070
     4071BOOL WINAPI CertDeleteCRLFromStore(PCCRL_CONTEXT pCrlContext);
     4072
     4073BOOL WINAPI CertDeleteCTLFromStore(PCCTL_CONTEXT pCtlContext);
     4074
     4075PCCERT_CONTEXT WINAPI CertDuplicateCertificateContext(
     4076 PCCERT_CONTEXT pCertContext);
     4077
     4078PCCRL_CONTEXT WINAPI CertDuplicateCRLContext(PCCRL_CONTEXT pCrlContext);
     4079
     4080PCCTL_CONTEXT WINAPI CertDuplicateCTLContext(PCCTL_CONTEXT pCtlContext);
     4081
     4082PCCERT_CONTEXT WINAPI CertFindCertificateInStore( HCERTSTORE hCertStore,
     4083 DWORD dwCertEncodingType, DWORD dwFindFlags, DWORD dwFindType,
     4084 const void *pvFindPara, PCCERT_CONTEXT pPrevCertContext );
     4085
     4086PCCRL_CONTEXT WINAPI CertFindCRLInStore(HCERTSTORE hCertStore,
     4087 DWORD dwCertEncodingType, DWORD dwFindFlags, DWORD dwFindType,
     4088 const void *pvFindPara, PCCRL_CONTEXT pPrevCrlContext);
     4089
     4090PCCTL_CONTEXT WINAPI CertFindCTLInStore(HCERTSTORE hCertStore,
     4091 DWORD dwCertEncodingType, DWORD dwFindFlags, DWORD dwFindType,
     4092 const void *pvFindPara, PCCTL_CONTEXT pPrevCtlContext);
     4093
     4094PCCERT_CONTEXT WINAPI CertGetIssuerCertificateFromStore(HCERTSTORE hCertStore,
     4095 PCCERT_CONTEXT pSubjectContext, PCCERT_CONTEXT pPrevIssuerContext,
     4096 DWORD *pdwFlags);
     4097
     4098PCCERT_CONTEXT WINAPI CertGetSubjectCertificateFromStore(HCERTSTORE hCertStore,
     4099 DWORD dwCertEncodingType, PCERT_INFO pCertId);
     4100
     4101PCCRL_CONTEXT WINAPI CertGetCRLFromStore(HCERTSTORE hCertStore,
     4102 PCCERT_CONTEXT pIssuerContext, PCCRL_CONTEXT pPrevCrlContext, DWORD *pdwFlags);
     4103
     4104BOOL WINAPI CertSerializeCertificateStoreElement(PCCERT_CONTEXT pCertContext,
     4105 DWORD dwFlags, BYTE *pbElement, DWORD *pcbElement);
     4106
     4107BOOL WINAPI CertSerializeCRLStoreElement(PCCRL_CONTEXT pCrlContext,
     4108 DWORD dwFlags, BYTE *pbElement, DWORD *pcbElement);
     4109
     4110BOOL WINAPI CertSerializeCTLStoreElement(PCCTL_CONTEXT pCtlContext,
     4111 DWORD dwFlags, BYTE *pbElement, DWORD *pcbElement);
     4112
     4113BOOL WINAPI CertGetEnhancedKeyUsage(PCCERT_CONTEXT pCertContext, DWORD dwFlags,
     4114 PCERT_ENHKEY_USAGE pUsage, DWORD *pcbUsage);
     4115BOOL WINAPI CertSetEnhancedKeyUsage(PCCERT_CONTEXT pCertContext,
     4116 PCERT_ENHKEY_USAGE pUsage);
     4117BOOL WINAPI CertAddEnhancedKeyUsageIdentifier(PCCERT_CONTEXT pCertContext,
     4118 LPCSTR pszUsageIdentifer);
     4119BOOL WINAPI CertRemoveEnhancedKeyUsageIdentifier(PCCERT_CONTEXT pCertContext,
     4120 LPCSTR pszUsageIdentifer);
     4121BOOL WINAPI CertGetValidUsages(DWORD cCerts, PCCERT_CONTEXT *rghCerts,
     4122 int *cNumOIDs, LPSTR *rghOIDs, DWORD *pcbOIDs);
     4123
     4124BOOL WINAPI CryptEncodeObject(DWORD dwCertEncodingType, LPCSTR lpszStructType,
     4125 const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded);
     4126BOOL WINAPI CryptEncodeObjectEx(DWORD dwCertEncodingType, LPCSTR lpszStructType,
     4127 const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara,
     4128 void *pvEncoded, DWORD *pcbEncoded);
     4129
     4130BOOL WINAPI CryptDecodeObject(DWORD dwCertEncodingType, LPCSTR lpszStructType,
     4131 const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo,
     4132 DWORD *pcbStructInfo);
     4133BOOL WINAPI CryptDecodeObjectEx(DWORD dwCertEncodingType, LPCSTR lpszStructType,
     4134 const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags,
     4135 PCRYPT_DECODE_PARA pDecodePara, void *pvStructInfo, DWORD *pcbStructInfo);
     4136
     4137BOOL WINAPI CryptFormatObject(DWORD dwCertEncodingType, DWORD dwFormatType,
     4138 DWORD dwFormatStrType, void *pFormatStruct, LPCSTR lpszStructType,
     4139 const BYTE *pbEncoded, DWORD cbEncoded, void *pbFormat, DWORD *pcbFormat);
     4140
     4141BOOL WINAPI CryptHashCertificate(HCRYPTPROV_LEGACY hCryptProv, ALG_ID Algid,
     4142 DWORD dwFlags, const BYTE *pbEncoded, DWORD cbEncoded, BYTE *pbComputedHash,
     4143 DWORD *pcbComputedHash);
     4144
     4145BOOL WINAPI CryptHashPublicKeyInfo(HCRYPTPROV_LEGACY hCryptProv, ALG_ID Algid,
     4146 DWORD dwFlags, DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo,
     4147 BYTE *pbComputedHash, DWORD *pcbComputedHash);
     4148
     4149BOOL WINAPI CryptHashToBeSigned(HCRYPTPROV_LEGACY hCryptProv, DWORD dwCertEncodingType,
     4150 const BYTE *pbEncoded, DWORD cbEncoded, BYTE *pbComputedHash,
     4151 DWORD *pcbComputedHash);
     4152
     4153BOOL WINAPI CryptQueryObject(DWORD dwObjectType, const void* pvObject,
     4154 DWORD dwExpectedContentTypeFlags, DWORD dwExpectedFormatTypeFlags,
     4155 DWORD dwFlags, DWORD* pdwMsgAndCertEncodingType, DWORD* pdwContentType,
     4156 DWORD* pdwFormatType, HCERTSTORE* phCertStore, HCRYPTMSG* phMsg,
     4157 const void** ppvContext);
     4158
     4159BOOL WINAPI CryptSignCertificate(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProv, DWORD dwKeySpec,
     4160 DWORD dwCertEncodingType, const BYTE *pbEncodedToBeSigned,
     4161 DWORD cbEncodedToBeSigned, PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,
     4162 const void *pvHashAuxInfo, BYTE *pbSignature, DWORD *pcbSignature);
     4163
     4164BOOL WINAPI CryptSignAndEncodeCertificate(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProv,
     4165 DWORD dwKeySpec, DWORD dwCertEncodingType, LPCSTR lpszStructType,
     4166 const void *pvStructInfo, PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,
     4167 const void *pvHashAuxInfo, BYTE *pbEncoded, DWORD *pcbEncoded);
     4168
     4169BOOL WINAPI CryptVerifyCertificateSignature(HCRYPTPROV_LEGACY hCryptProv,
     4170 DWORD dwCertEncodingType, const BYTE *pbEncoded, DWORD cbEncoded,
     4171 PCERT_PUBLIC_KEY_INFO pPublicKey);
     4172
     4173BOOL WINAPI CryptVerifyCertificateSignatureEx(HCRYPTPROV_LEGACY hCryptProv,
     4174 DWORD dwCertEncodingType, DWORD dwSubjectType, void *pvSubject,
     4175 DWORD dwIssuerType, void *pvIssuer, DWORD dwFlags, void *pvReserved);
     4176
     4177PCRYPT_ATTRIBUTE WINAPI CertFindAttribute(LPCSTR pszObjId, DWORD cAttr,
     4178 CRYPT_ATTRIBUTE rgAttr[]);
     4179PCERT_EXTENSION WINAPI CertFindExtension(LPCSTR pszObjId, DWORD cExtensions,
     4180 CERT_EXTENSION rgExtensions[]);
     4181PCERT_RDN_ATTR WINAPI CertFindRDNAttr(LPCSTR pszObjId, PCERT_NAME_INFO pName);
     4182
     4183BOOL WINAPI CertFindSubjectInSortedCTL(PCRYPT_DATA_BLOB pSubjectIdentifier,
     4184 PCCTL_CONTEXT pCtlContext, DWORD dwFlags, void *pvReserved,
     4185 PCRYPT_DER_BLOB pEncodedAttributes);
     4186
     4187BOOL WINAPI CertIsRDNAttrsInCertificateName(DWORD dwCertEncodingType,
     4188 DWORD dwFlags, PCERT_NAME_BLOB pCertName, PCERT_RDN pRDN);
     4189
     4190BOOL WINAPI CertIsValidCRLForCertificate(PCCERT_CONTEXT pCert,
     4191 PCCRL_CONTEXT pCrl, DWORD dwFlags, void *pvReserved);
     4192BOOL WINAPI CertFindCertificateInCRL(PCCERT_CONTEXT pCert,
     4193 PCCRL_CONTEXT pCrlContext, DWORD dwFlags, void *pvReserved,
     4194 PCRL_ENTRY *ppCrlEntry);
     4195BOOL WINAPI CertVerifyCRLRevocation(DWORD dwCertEncodingType,
     4196 PCERT_INFO pCertId, DWORD cCrlInfo, PCRL_INFO rgpCrlInfo[]);
     4197
     4198BOOL WINAPI CertVerifySubjectCertificateContext(PCCERT_CONTEXT pSubject,
     4199 PCCERT_CONTEXT pIssuer, DWORD *pdwFlags);
     4200
     4201LONG WINAPI CertVerifyCRLTimeValidity(LPFILETIME pTimeToVerify,
     4202 PCRL_INFO pCrlInfo);
     4203LONG WINAPI CertVerifyTimeValidity(LPFILETIME pTimeToVerify,
     4204 PCERT_INFO pCertInfo);
     4205BOOL WINAPI CertVerifyValidityNesting(PCERT_INFO pSubjectInfo,
     4206 PCERT_INFO pIssuerInfo);
     4207
     4208BOOL WINAPI CertVerifyCTLUsage(DWORD dwEncodingType, DWORD dwSubjectType,
     4209 void *pvSubject, PCTL_USAGE pSubjectUsage, DWORD dwFlags,
     4210 PCTL_VERIFY_USAGE_PARA pVerifyUsagePara,
     4211 PCTL_VERIFY_USAGE_STATUS pVerifyUsageStatus);
     4212
     4213BOOL WINAPI CertVerifyRevocation(DWORD dwEncodingType, DWORD dwRevType,
     4214 DWORD cContext, PVOID rgpvContext[], DWORD dwFlags,
     4215 PCERT_REVOCATION_PARA pRevPara, PCERT_REVOCATION_STATUS pRevStatus);
     4216
     4217BOOL WINAPI CryptExportPublicKeyInfo(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProv, DWORD dwKeySpec,
     4218 DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, DWORD *pcbInfo);
     4219BOOL WINAPI CryptExportPublicKeyInfoEx(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProv, DWORD dwKeySpec,
     4220 DWORD dwCertEncodingType, LPSTR pszPublicKeyObjId, DWORD dwFlags,
     4221 void *pvAuxInfo, PCERT_PUBLIC_KEY_INFO pInfo, DWORD *pcbInfo);
     4222BOOL WINAPI CryptImportPublicKeyInfo(HCRYPTPROV hCryptProv,
     4223 DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, HCRYPTKEY *phKey);
     4224BOOL WINAPI CryptImportPublicKeyInfoEx(HCRYPTPROV hCryptProv,
     4225 DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, ALG_ID aiKeyAlg,
     4226 DWORD dwFlags, void *pvAuxInfo, HCRYPTKEY *phKey);
     4227
     4228BOOL WINAPI CryptAcquireCertificatePrivateKey(PCCERT_CONTEXT pCert,
     4229 DWORD dwFlags, void *pvReserved, HCRYPTPROV_OR_NCRYPT_KEY_HANDLE *phCryptProv, DWORD *pdwKeySpec,
     4230 BOOL *pfCallerFreeProv);
     4231
     4232BOOL WINAPI CryptProtectData( DATA_BLOB* pDataIn, LPCWSTR szDataDescr,
     4233 DATA_BLOB* pOptionalEntropy, PVOID pvReserved,
     4234 CRYPTPROTECT_PROMPTSTRUCT* pPromptStruct, DWORD dwFlags, DATA_BLOB* pDataOut );
     4235
     4236BOOL WINAPI CryptUnprotectData( DATA_BLOB* pDataIn, LPWSTR* ppszDataDescr,
     4237 DATA_BLOB* pOptionalEntropy, PVOID pvReserved,
     4238 CRYPTPROTECT_PROMPTSTRUCT* pPromptStruct, DWORD dwFlags, DATA_BLOB* pDataOut );
     4239
     4240DWORD WINAPI CertGetNameStringA(PCCERT_CONTEXT pCertContext, DWORD dwType,
     4241 DWORD dwFlags, void *pvTypePara, LPSTR pszNameString, DWORD cchNameString);
     4242DWORD WINAPI CertGetNameStringW(PCCERT_CONTEXT pCertContext, DWORD dwType,
     4243 DWORD dwFlags, void *pvTypePara, LPWSTR pszNameString, DWORD cchNameString);
     4244#define CertGetNameString WINELIB_NAME_AW(CertGetNameString)
     4245
     4246DWORD WINAPI CertRDNValueToStrA(DWORD dwValueType, PCERT_RDN_VALUE_BLOB pValue,
     4247 LPSTR psz, DWORD csz);
     4248DWORD WINAPI CertRDNValueToStrW(DWORD dwValueType, PCERT_RDN_VALUE_BLOB pValue,
     4249 LPWSTR psz, DWORD csz);
     4250#define CertRDNValueToStr WINELIB_NAME_AW(CertRDNValueToStr)
     4251
     4252DWORD WINAPI CertNameToStrA(DWORD dwCertEncodingType, PCERT_NAME_BLOB pName,
     4253 DWORD dwStrType, LPSTR psz, DWORD csz);
     4254DWORD WINAPI CertNameToStrW(DWORD dwCertEncodingType, PCERT_NAME_BLOB pName,
     4255 DWORD dwStrType, LPWSTR psz, DWORD csz);
     4256#define CertNameToStr WINELIB_NAME_AW(CertNameToStr)
     4257
     4258BOOL WINAPI CertStrToNameA(DWORD dwCertEncodingType, LPCSTR pszX500,
     4259 DWORD dwStrType, void *pvReserved, BYTE *pbEncoded, DWORD *pcbEncoded,
     4260 LPCSTR *ppszError);
     4261BOOL WINAPI CertStrToNameW(DWORD dwCertEncodingType, LPCWSTR pszX500,
     4262 DWORD dwStrType, void *pvReserved, BYTE *pbEncoded, DWORD *pcbEncoded,
     4263 LPCWSTR *ppszError);
     4264#define CertStrToName WINELIB_NAME_AW(CertStrToName)
     4265
     4266DWORD WINAPI CryptMsgCalculateEncodedLength(DWORD dwMsgEncodingType,
     4267 DWORD dwFlags, DWORD dwMsgType, const void *pvMsgEncodeInfo,
     4268 LPSTR pszInnerContentObjID, DWORD cbData);
     4269
     4270BOOL WINAPI CryptMsgClose(HCRYPTMSG hCryptMsg);
     4271
     4272BOOL WINAPI CryptMsgControl(HCRYPTMSG hCryptMsg, DWORD dwFlags,
     4273 DWORD dwCtrlType, const void *pvCtrlPara);
     4274
     4275BOOL WINAPI CryptMsgCountersign(HCRYPTMSG hCryptMsg, DWORD dwIndex,
     4276 DWORD dwCountersigners, PCMSG_SIGNER_ENCODE_INFO rgCountersigners);
     4277
     4278BOOL WINAPI CryptMsgCountersignEncoded(DWORD dwEncodingType, PBYTE pbSignerInfo,
     4279 DWORD cbSignerInfo, DWORD cCountersigners,
     4280 PCMSG_SIGNER_ENCODE_INFO rgCountersigners, PBYTE pbCountersignature,
     4281 PDWORD pcbCountersignature);
     4282
     4283HCRYPTMSG WINAPI CryptMsgDuplicate(HCRYPTMSG hCryptMsg);
     4284
     4285BOOL WINAPI CryptMsgEncodeAndSignCTL(DWORD dwMsgEncodingType,
     4286 PCTL_INFO pCtlInfo, PCMSG_SIGNED_ENCODE_INFO pSignInfo, DWORD dwFlags,
     4287 BYTE *pbEncoded, DWORD *pcbEncoded);
     4288
     4289BOOL WINAPI CryptMsgGetAndVerifySigner(HCRYPTMSG hCryptMsg, DWORD cSignerStore,
     4290 HCERTSTORE *rghSignerStore, DWORD dwFlags, PCCERT_CONTEXT *ppSigner,
     4291 DWORD *pdwSignerIndex);
     4292
     4293BOOL WINAPI CryptMsgGetParam(HCRYPTMSG hCryptMsg, DWORD dwParamType,
     4294 DWORD dwIndex, void *pvData, DWORD *pcbData);
     4295
     4296HCRYPTMSG WINAPI CryptMsgOpenToDecode(DWORD dwMsgEncodingType, DWORD dwFlags,
     4297 DWORD dwMsgType, HCRYPTPROV_LEGACY hCryptProv, PCERT_INFO pRecipientInfo,
     4298 PCMSG_STREAM_INFO pStreamInfo);
     4299
     4300HCRYPTMSG WINAPI CryptMsgOpenToEncode(DWORD dwMsgEncodingType, DWORD dwFlags,
     4301 DWORD dwMsgType, const void *pvMsgEncodeInfo, LPSTR pszInnerContentObjID,
     4302 PCMSG_STREAM_INFO pStreamInfo);
     4303
     4304BOOL WINAPI CryptMsgSignCTL(DWORD dwMsgEncodingType, BYTE *pbCtlContent,
     4305 DWORD cbCtlContent, PCMSG_SIGNED_ENCODE_INFO pSignInfo, DWORD dwFlags,
     4306 BYTE *pbEncoded, DWORD *pcbEncoded);
     4307
     4308BOOL WINAPI CryptMsgUpdate(HCRYPTMSG hCryptMsg, const BYTE *pbData,
     4309 DWORD cbData, BOOL fFinal);
     4310
     4311BOOL WINAPI CryptMsgVerifyCountersignatureEncoded(HCRYPTPROV_LEGACY hCryptProv,
     4312 DWORD dwEncodingType, PBYTE pbSignerInfo, DWORD cbSignerInfo,
     4313 PBYTE pbSignerInfoCountersignature, DWORD cbSignerInfoCountersignature,
     4314 PCERT_INFO pciCountersigner);
     4315
     4316BOOL WINAPI CryptMsgVerifyCountersignatureEncodedEx(HCRYPTPROV_LEGACY hCryptProv,
     4317 DWORD dwEncodingType, PBYTE pbSignerInfo, DWORD cbSignerInfo,
     4318 PBYTE pbSignerInfoCountersignature, DWORD cbSignerInfoCountersignature,
     4319 DWORD dwSignerType, void *pvSigner, DWORD dwFlags, void *pvReserved);
     4320
     4321BOOL WINAPI CryptSignMessage(PCRYPT_SIGN_MESSAGE_PARA pSignPara,
     4322 BOOL fDetachedSignature, DWORD cToBeSigned, const BYTE *rgpbToBeSigned[],
     4323 DWORD rgcbToBeSigned[], BYTE *pbSignedBlob, DWORD *pcbSignedBlob);
     4324BOOL WINAPI CryptSignMessageWithKey(PCRYPT_KEY_SIGN_MESSAGE_PARA pSignPara,
     4325 const BYTE *pbToBeSigned, DWORD cbToBeSigned, BYTE *pbSignedBlob,
     4326 DWORD *pcbSignedBlob);
     4327
     4328BOOL WINAPI CryptVerifyMessageSignature(PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara,
     4329 DWORD dwSignerIndex, const BYTE* pbSignedBlob, DWORD cbSignedBlob,
     4330 BYTE* pbDecoded, DWORD* pcbDecoded, PCCERT_CONTEXT* ppSignerCert);
     4331BOOL WINAPI CryptVerifyMessageSignatureWithKey(
     4332 PCRYPT_KEY_VERIFY_MESSAGE_PARA pVerifyPara,
     4333 PCERT_PUBLIC_KEY_INFO pPublicKeyInfo, const BYTE *pbSignedBlob,
     4334 DWORD cbSignedBlob, BYTE *pbDecoded, DWORD *pcbDecoded);
     4335
     4336BOOL WINAPI CryptVerifyDetachedMessageSignature(
     4337 PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara, DWORD dwSignerIndex,
     4338 const BYTE *pbDetachedSignBlob, DWORD cbDetachedSignBlob, DWORD cToBeSigned,
     4339 const BYTE *rgpbToBeSigned[], DWORD rgcbToBeSigned[],
     4340 PCCERT_CONTEXT *ppSignerCert);
     4341LONG WINAPI CryptGetMessageSignerCount(DWORD dwMsgEncodingType,
     4342 const BYTE *pbSignedBlob, DWORD cbSignedBlob);
     4343
     4344BOOL WINAPI CryptEncryptMessage(PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara,
     4345 DWORD cRecipientCert, PCCERT_CONTEXT rgpRecipientCert[],
     4346 const BYTE *pbToBeEncrypted, DWORD cbToBeEncrypted, BYTE *pbEncryptedBlob,
     4347 DWORD *pcbEncryptedBlob);
     4348BOOL WINAPI CryptDecryptMessage(PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara,
     4349 const BYTE *pbEncryptedBlob, DWORD cbEncryptedBlob, BYTE *pbDecrypted,
     4350 DWORD *pcbDecrypted, PCCERT_CONTEXT *ppXchgCert);
     4351
     4352BOOL WINAPI CryptSignAndEncryptMessage(PCRYPT_SIGN_MESSAGE_PARA pSignPara,
     4353 PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara, DWORD cRecipientCert,
     4354 PCCERT_CONTEXT rgpRecipientCert[], const BYTE *pbToBeSignedAndEncrypted,
     4355 DWORD cbToBeSignedAndEncrypted, BYTE *pbSignedAndEncryptedBlob,
     4356 DWORD *pcbSignedAndEncryptedBlob);
     4357BOOL WINAPI CryptDecryptAndVerifyMessageSignature(
     4358 PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara,
     4359 PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara, DWORD dwSignerIndex,
     4360 const BYTE *pbEncryptedBlob, DWORD cbEncryptedBlob, BYTE *pbDecrypted,
     4361 DWORD *pcbDecrypted, PCCERT_CONTEXT *ppXchgCert, PCCERT_CONTEXT *ppSignerCert);
     4362
     4363HCERTSTORE WINAPI CryptGetMessageCertificates(DWORD dwMsgAndCertEncodingType,
     4364 HCRYPTPROV_LEGACY hCryptProv, DWORD dwFlags, const BYTE *pbSignedBlob,
     4365 DWORD cbSignedBlob);
     4366
     4367BOOL WINAPI CryptDecodeMessage(DWORD dwMsgTypeFlags,
     4368 PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara,
     4369 PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara, DWORD dwSignerIndex,
     4370 const BYTE *pbEncodedBlob, DWORD cbEncodedBlob, DWORD dwPrevInnerContentType,
     4371 DWORD *pdwMsgType, DWORD *pdwInnerContentType, BYTE *pbDecoded,
     4372 DWORD *pcbDecoded, PCCERT_CONTEXT *ppXchgCert, PCCERT_CONTEXT *ppSignerCert);
     4373
     4374BOOL WINAPI CryptHashMessage(PCRYPT_HASH_MESSAGE_PARA pHashPara,
     4375 BOOL fDetachedHash, DWORD cToBeHashed, const BYTE *rgpbToBeHashed[],
     4376 DWORD rgcbToBeHashed[], BYTE *pbHashedBlob, DWORD *pcbHashedBlob,
     4377 BYTE *pbComputedHash, DWORD *pcbComputedHash);
     4378BOOL WINAPI CryptVerifyMessageHash(PCRYPT_HASH_MESSAGE_PARA pHashPara,
     4379 BYTE *pbHashedBlob, DWORD cbHashedBlob, BYTE *pbToBeHashed,
     4380 DWORD *pcbToBeHashed, BYTE *pbComputedHash, DWORD *pcbComputedHash);
     4381BOOL WINAPI CryptVerifyDetachedMessageHash(PCRYPT_HASH_MESSAGE_PARA pHashPara,
     4382 BYTE *pbDetachedHashBlob, DWORD cbDetachedHashBlob, DWORD cToBeHashed,
     4383 const BYTE *rgpbToBeHashed[], DWORD rgcbToBeHashed[], BYTE *pbComputedHash,
     4384 DWORD *pcbComputedHash);
     4385
     4386/* cryptnet.dll functions */
     4387BOOL WINAPI CryptCancelAsyncRetrieval(HCRYPTASYNC hAsyncRetrieval);
     4388
     4389BOOL WINAPI CryptGetObjectUrl(LPCSTR pszUrlOid, LPVOID pvPara, DWORD dwFlags,
     4390 PCRYPT_URL_ARRAY pUrlArray, DWORD *pcbUrlArray, PCRYPT_URL_INFO pUrlInfo,
     4391 DWORD *pcbUrlInfo, LPVOID pvReserved);
     4392
     4393BOOL WINAPI CryptGetTimeValidObject(LPCSTR pszTimeValidOid, void *pvPara,
     4394 PCCERT_CONTEXT pIssuer, LPFILETIME pftValidFor, DWORD dwFlags, DWORD dwTimeout,
     4395 void **ppvObject, PCRYPT_CREDENTIALS pCredentials, void *pvReserved);
     4396
     4397BOOL WINAPI CryptFlushTimeValidObject(LPCSTR pszFlushTimeValidOid, void *pvPara,
     4398 PCCERT_CONTEXT pIssuer, DWORD dwFlags, void *pvReserved);
     4399
     4400BOOL WINAPI CryptInstallCancelRetrieval(PFN_CRYPT_CANCEL_RETRIEVAL pfnCancel,
     4401 const void *pvArg, DWORD dwFlags, void *pvReserved);
     4402
     4403BOOL WINAPI CryptUninstallCancelRetrieval(DWORD dwFlags, void *pvReserved);
     4404
     4405BOOL WINAPI CryptRetrieveObjectByUrlA(LPCSTR pszURL, LPCSTR pszObjectOid,
     4406 DWORD dwRetrievalFlags, DWORD dwTimeout, LPVOID *ppvObject,
     4407 HCRYPTASYNC hAsyncRetrieve, PCRYPT_CREDENTIALS pCredentials, LPVOID pvVerify,
     4408 PCRYPT_RETRIEVE_AUX_INFO pAuxInfo);
     4409BOOL WINAPI CryptRetrieveObjectByUrlW(LPCWSTR pszURL, LPCSTR pszObjectOid,
     4410 DWORD dwRetrievalFlags, DWORD dwTimeout, LPVOID *ppvObject,
     4411 HCRYPTASYNC hAsyncRetrieve, PCRYPT_CREDENTIALS pCredentials, LPVOID pvVerify,
     4412 PCRYPT_RETRIEVE_AUX_INFO pAuxInfo);
     4413#define CryptRetrieveObjectByUrl WINELIB_NAME_AW(CryptRetrieveObjectByUrl)
     4414
     4415#ifdef __cplusplus
     4416}
    2554417#endif
     4418
     4419#endif
  • trunk/include/win/wine/exception.h

    r9673 r21314  
    5757#if 1
    5858#define __TRY if(1)
     59#define __EXCEPT_PAGE_FAULT else
    5960#define __EXCEPT(func) else
    6061//#define __FINALLY(func) __finally { (func)(!AbnormalTermination()); }
  • trunk/include/win/wine/obj_oleaut.h

    r7914 r21314  
    155155                float fltVal;
    156156                double dblVal;
     157                ULONGLONG ullVal;
    157158                VARIANT_BOOL boolVal;
    158159                SCODE scode;
     
    175176                float* pfltVal;
    176177                double* pdblVal;
     178                ULONGLONG* pullVal;
    177179                VARIANT_BOOL* pboolVal;
    178180                SCODE* pscode;
  • trunk/include/win/wine/port.h

    r8544 r21314  
    1 #ifndef __WINE_PORT_H
    2 #define __WINE_PORT_H
     1/*
     2 * Wine porting definitions
     3 *
     4 * Copyright 1996 Alexandre Julliard
     5 *
     6 * This library is free software; you can redistribute it and/or
     7 * modify it under the terms of the GNU Lesser General Public
     8 * License as published by the Free Software Foundation; either
     9 * version 2.1 of the License, or (at your option) any later version.
     10 *
     11 * This library is distributed in the hope that it will be useful,
     12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
     13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     14 * Lesser General Public License for more details.
     15 *
     16 * You should have received a copy of the GNU Lesser General Public
     17 * License along with this library; if not, write to the Free Software
     18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
     19 */
     20
     21#ifndef __WINE_WINE_PORT_H
     22#define __WINE_WINE_PORT_H
    323
    424
    525
    6 #endif /* __WINE_PORT_H */
     26struct option;
     27
     28#ifndef HAVE_STRUCT_OPTION_NAME
     29struct option
     30{
     31    const char *name;
     32    int has_arg;
     33    int *flag;
     34    int val;
     35};
     36#endif
     37
     38#endif /* !defined(__WINE_WINE_PORT_H) */
  • trunk/include/win/winerror.h

    r9683 r21314  
     1/*
     2 * Copyright (C) the Wine project
     3 *
     4 * This library is free software; you can redistribute it and/or
     5 * modify it under the terms of the GNU Lesser General Public
     6 * License as published by the Free Software Foundation; either
     7 * version 2.1 of the License, or (at your option) any later version.
     8 *
     9 * This library is distributed in the hope that it will be useful,
     10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
     11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     12 * Lesser General Public License for more details.
     13 *
     14 * You should have received a copy of the GNU Lesser General Public
     15 * License along with this library; if not, write to the Free Software
     16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
     17 */
     18
    119#ifndef __WINE_WINERROR_H
    220#define __WINE_WINERROR_H
    321
    4 
    5 #define FACILITY_NULL      0
    6 #define FACILITY_RPC       1
    7 #define FACILITY_DISPATCH  2
    8 #define FACILITY_STORAGE   3
    9 #define FACILITY_ITF            4
    10 #define FACILITY_WIN32          7
    11 #define FACILITY_WINDOWS   8
    12 #define FACILITY_SSPI      9
    13 #define FACILITY_CONTROL   10
    14 #define FACILITY_CERT      11
    15 #define FACILITY_INTERNET  12
     22#define FACILITY_NULL                         0
     23#define FACILITY_RPC                          1
     24#define FACILITY_DISPATCH                     2
     25#define FACILITY_STORAGE                      3
     26#define FACILITY_ITF                          4
     27#define FACILITY_WIN32                        7
     28#define FACILITY_WINDOWS                      8
     29#define FACILITY_SSPI                         9
     30#define FACILITY_SECURITY                     FACILITY_SSPI
     31#define FACILITY_CONTROL                     10
     32#define FACILITY_CERT                        11
     33#define FACILITY_INTERNET                    12
     34#define FACILITY_MEDIASERVER                 13
     35#define FACILITY_MSMQ                        14
     36#define FACILITY_SETUPAPI                    15
     37#define FACILITY_SCARD                       16
     38#define FACILITY_COMPLUS                     17
     39#define FACILITY_AAF                         18
     40#define FACILITY_URT                         19
     41#define FACILITY_ACS                         20
     42#define FACILITY_DPLAY                       21
     43#define FACILITY_UMI                         22
     44#define FACILITY_SXS                         23
     45#define FACILITY_WINDOWS_CE                  24
     46#define FACILITY_HTTP                        25
     47#define FACILITY_COMMONLOG                   26
     48#define FACILITY_USERMODE_FILTER_MANAGER     31
     49#define FACILITY_BACKGROUNDCOPY              32
     50#define FACILITY_CONFIGURATION               33
     51#define FACILITY_STATE_MANAGEMENT            34
     52#define FACILITY_METADIRECTORY               35
     53#define FACILITY_WINDOWSUPDATE               36
     54#define FACILITY_DIRECTORYSERVICE            37
     55#define FACILITY_GRAPHICS                    38
     56#define FACILITY_SHELL                       39
     57#define FACILITY_TPM_SERVICES                40
     58#define FACILITY_TPM_SOFTWARE                41
     59#define FACILITY_PLA                         48
     60#define FACILITY_FVE                         49
     61#define FACILITY_WINDOWS_DEFENDER            80
    1662
    1763#define SEVERITY_SUCCESS    0
    1864#define SEVERITY_ERROR      1
     65
    1966
    2067#define MAKE_HRESULT(sev,fac,code) \
     
    2471#define SUCCEEDED(stat) ((HRESULT)(stat)>=0)
    2572#define FAILED(stat) ((HRESULT)(stat)<0)
     73#define IS_ERROR(stat) (((unsigned long)(stat)>>31) == SEVERITY_ERROR)
    2674
    2775#define HRESULT_CODE(hr) ((hr) & 0xFFFF)
     
    3179#define SCODE_FACILITY(sc)  (((sc) >> 16) & 0x1FFF)
    3280
    33 /* ERROR_UNKNOWN is a placeholder for error conditions which haven't
    34  * been tested yet so we're not exactly sure what will be returned.
    35  * All instances of ERROR_UNKNOWN should be tested under Win95/NT
    36  * and replaced.
    37  */
    38 
    39 #define ERROR_UNKNOWN                                      99999
     81#define HRESULT_SEVERITY(hr)    (((hr) >> 31) & 0x1)
     82#define SCODE_SEVERITY(sc)      (((sc) >> 31) & 0x1)
     83
     84#define HRESULT_FROM_WIN32(x)   ((HRESULT)(x) > 0 ? ((HRESULT) (((x) & 0x0000FFFF) | (FACILITY_WIN32 << 16) | 0x80000000)) : (HRESULT)(x) )
     85
     86#define FACILITY_NT_BIT         0x10000000
     87#define HRESULT_FROM_NT(x)      ((HRESULT) ((x) | FACILITY_NT_BIT))
     88
     89/* SCODE <-> HRESULT functions */
     90/* This macros is obsolete and should not be used in new apps. */
     91#define GetScode(hr)         ((SCODE)(hr))
     92/* This macros is obsolete and should not be used in new apps. */
     93#define ResultFromScode(sc)  ((HRESULT)(sc))
    4094
    4195#define NO_ERROR                                           0
     
    232286#define ERROR_DISK_TOO_FRAGMENTED                          302
    233287#define ERROR_MR_MID_NOT_FOUND                             317
     288#define ERROR_SCOPE_NOT_FOUND                              318
     289#define ERROR_FAIL_NOACTION_REBOOT                         350
     290#define ERROR_FAIL_SHUTDOWN                                351
     291#define ERROR_FAIL_RESTART                                 352
     292#define ERROR_MAX_SESSIONS_REACHED                         353
    234293#define ERROR_INVALID_ADDRESS                              487
     294#define ERROR_USER_PROFILE_LOAD                            500
    235295#define ERROR_ARITHMETIC_OVERFLOW                          534
    236296#define ERROR_PIPE_CONNECTED                               535
     
    426486#define ERROR_SMARTCARD_SUBSYSTEM_FAILURE                  1264
    427487#define ERROR_DOWNGRADE_DETECTED                           1265
    428 #define SEC_E_SMARTCARD_CERT_REVOKED                       1266
    429 #define SEC_E_ISSUING_CA_UNTRUSTED                         1267
    430 #define SEC_E_REVOCATION_OFFLINE_C                         1268
    431 #define SEC_E_PKINIT_CLIENT_FAILURE                        1269
    432 #define SEC_E_SMARTCARD_CERT_EXPIRED                       1270
     488#define ERROR_MACHINE_LOCKED                               1271
     489#define ERROR_CALLBACK_SUPPLIED_INVALID_DATA               1273
     490#define ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED             1274
    433491#define ERROR_DRIVER_BLOCKED                               1275
    434492#define ERROR_INVALID_IMPORT_OF_NON_DLL                    1276
     
    639697#define ERROR_INSTALL_REMOTE_DISALLOWED                    1640
    640698#define ERROR_SUCCESS_REBOOT_INITIATED                     1641
     699#define ERROR_UNKNOWN_PATCH                                1647
    641700#define RPC_S_INVALID_STRING_BINDING                       1700
    642701#define RPC_S_WRONG_KIND_OF_BINDING                        1701
     
    800859#define RPC_S_GRP_ELT_NOT_ADDED                            1928
    801860#define RPC_S_GRP_ELT_NOT_REMOVED                          1929
     861#define ERROR_KM_DRIVER_BLOCKED                            1930
    802862#define ERROR_CONTEXT_EXPIRED                              1931
     863#define ERROR_PER_USER_TRUST_QUOTA_EXCEEDED                1932
     864#define ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED                1933
     865#define ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED             1934
     866#define ERROR_AUTHENTICATION_FIREWALL_FAILED               1935
     867#define ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED             1936
    803868#define ERROR_INVALID_PIXEL_FORMAT                         2000
    804869#define ERROR_BAD_DRIVER                                   2001
     
    839904#define ERROR_SUCCESS_RESTART_REQUIRED                     3011
    840905#define ERROR_PRINTER_NOT_FOUND                            3012
     906#define ERROR_PRINTER_DRIVER_WARNED                        3013
     907#define ERROR_PRINTER_DRIVER_BLOCKED                       3014
    841908#define ERROR_WINS_INTERNAL                                4000
    842909#define ERROR_CAN_NOT_DEL_LOCAL_WINS                       4001
     
    14821549#define ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET              14011
    14831550
    1484 #define ERROR_AUDITING_DISABLED                            0xC0090001L
    1485 #define ERROR_ALL_SIDS_FILTERED                            0xC0090002L
    1486 
    14871551/* HRESULT values for OLE, SHELL and other Interface stuff */
    14881552/* the codes 4000-40ff are reserved for OLE */
    14891553#undef NOERROR  /* arpa/nameser_compat.h defines this */
    1490 #define NOERROR                                            0L
    1491 #define S_OK                                               ((HRESULT)0L)
    1492 #define S_FALSE                                            ((HRESULT)1L)
    1493 
    1494 #define E_PENDING                                          0x8000000AL
    1495 
    1496 
    1497 #define E_NOTIMPL                                          0x80004001L
    1498 #define E_NOINTERFACE                                      0x80004002L
    1499 #define E_POINTER                                          0x80004003L
    1500 #define E_ABORT                                            0x80004004L
    1501 #define E_FAIL                                             0x80004005L
    1502 /* FIXME: E_UNSPEC is not a standard value but it is used by
    1503  * FileMoniker, IOleLink and DoDragDrop as a return value.
    1504  */
     1554
     1555#ifdef RC_INVOKED
     1556#define _HRESULT_TYPEDEF_(x) (x)
     1557#else
     1558#define _HRESULT_TYPEDEF_(x) ((HRESULT)x)
     1559#endif
     1560
     1561#define NOERROR                                            _HRESULT_TYPEDEF_(0L)
     1562#define S_OK                                               _HRESULT_TYPEDEF_(0L)
     1563#define SEC_E_OK                                           _HRESULT_TYPEDEF_(0L)
     1564#define S_FALSE                                            _HRESULT_TYPEDEF_(1L)
     1565
     1566#define E_PENDING                                          _HRESULT_TYPEDEF_(0x8000000AL)
     1567
     1568
     1569#define E_NOTIMPL                                          _HRESULT_TYPEDEF_(0x80004001L)
     1570#define E_NOINTERFACE                                      _HRESULT_TYPEDEF_(0x80004002L)
     1571#define E_POINTER                                          _HRESULT_TYPEDEF_(0x80004003L)
     1572#define E_ABORT                                            _HRESULT_TYPEDEF_(0x80004004L)
     1573#define E_FAIL                                             _HRESULT_TYPEDEF_(0x80004005L)
     1574
     1575
     1576#define CO_E_INIT_TLS                                      _HRESULT_TYPEDEF_(0x80004006L)
     1577#define CO_E_INIT_SHARED_ALLOCATOR                         _HRESULT_TYPEDEF_(0x80004007L)
     1578#define CO_E_INIT_MEMORY_ALLOCATOR                         _HRESULT_TYPEDEF_(0x80004008L)
     1579#define CO_E_INIT_CLASS_CACHE                              _HRESULT_TYPEDEF_(0x80004009L)
     1580#define CO_E_INIT_RPC_CHANNEL                              _HRESULT_TYPEDEF_(0x8000400AL)
     1581#define CO_E_INIT_TLS_SET_CHANNEL_CONTROL                  _HRESULT_TYPEDEF_(0x8000400BL)
     1582#define CO_E_INIT_TLS_CHANNEL_CONTROL                      _HRESULT_TYPEDEF_(0x8000400CL)
     1583#define CO_E_INIT_UNACCEPTED_USER_ALLOCATOR                _HRESULT_TYPEDEF_(0x8000400DL)
     1584#define CO_E_INIT_SCM_MUTEX_EXISTS                         _HRESULT_TYPEDEF_(0x8000400EL)
     1585#define CO_E_INIT_SCM_FILE_MAPPING_EXISTS                  _HRESULT_TYPEDEF_(0x8000400FL)
     1586#define CO_E_INIT_SCM_MAP_VIEW_OF_FILE                     _HRESULT_TYPEDEF_(0x80004010L)
     1587#define CO_E_INIT_SCM_EXEC_FAILURE                         _HRESULT_TYPEDEF_(0x80004011L)
     1588#define CO_E_INIT_ONLY_SINGLE_THREADED                     _HRESULT_TYPEDEF_(0x80004012L)
     1589#define CO_E_CANT_REMOTE                                   _HRESULT_TYPEDEF_(0x80004013L)
     1590#define CO_E_BAD_SERVER_NAME                               _HRESULT_TYPEDEF_(0x80004014L)
     1591#define CO_E_WRONG_SERVER_IDENTITY                         _HRESULT_TYPEDEF_(0x80004015L)
     1592#define CO_E_OLE1DDE_DISABLED                              _HRESULT_TYPEDEF_(0x80004016L)
     1593#define CO_E_RUNAS_SYNTAX                                  _HRESULT_TYPEDEF_(0x80004017L)
     1594#define CO_E_CREATEPROCESS_FAILURE                         _HRESULT_TYPEDEF_(0x80004018L)
     1595#define CO_E_RUNAS_CREATEPROCESS_FAILURE                   _HRESULT_TYPEDEF_(0x80004019L)
     1596#define CO_E_RUNAS_LOGON_FAILURE                           _HRESULT_TYPEDEF_(0x8000401AL)
     1597#define CO_E_LAUNCH_PERMISSION_DENIED                      _HRESULT_TYPEDEF_(0x8000401BL)
     1598#define CO_E_START_SERVICE_FAILURE                         _HRESULT_TYPEDEF_(0x8000401CL)
     1599#define CO_E_REMOTE_COMMUNICATION_FAILURE                  _HRESULT_TYPEDEF_(0x8000401DL)
     1600#define CO_E_SERVER_START_TIMEOUT                          _HRESULT_TYPEDEF_(0x8000401EL)
     1601#define CO_E_CLSREG_INCONSISTENT                           _HRESULT_TYPEDEF_(0x8000401FL)
     1602#define CO_E_IIDREG_INCONSISTENT                           _HRESULT_TYPEDEF_(0x80004020L)
     1603#define CO_E_NOT_SUPPORTED                                 _HRESULT_TYPEDEF_(0x80004021L)
     1604#define CO_E_RELOAD_DLL                                    _HRESULT_TYPEDEF_(0x80004022L)
     1605#define CO_E_MSI_ERROR                                     _HRESULT_TYPEDEF_(0x80004023L)
     1606#define CO_E_ATTEMPT_TO_CREATE_OUTSIDE_CLIENT_CONTEXT      _HRESULT_TYPEDEF_(0x80004024L)
     1607#define CO_E_SERVER_PAUSED                                 _HRESULT_TYPEDEF_(0x80004025L)
     1608#define CO_E_SERVER_NOT_PAUSED                             _HRESULT_TYPEDEF_(0x80004026L)
     1609#define CO_E_CLASS_DISABLED                                _HRESULT_TYPEDEF_(0x80004027L)
     1610#define CO_E_CLRNOTAVAILABLE                               _HRESULT_TYPEDEF_(0x80004028L)
     1611#define CO_E_ASYNC_WORK_REJECTED                           _HRESULT_TYPEDEF_(0x80004029L)
     1612#define CO_E_SERVER_INIT_TIMEOUT                           _HRESULT_TYPEDEF_(0x8000402AL)
     1613#define CO_E_NO_SECCTX_IN_ACTIVATE                         _HRESULT_TYPEDEF_(0x8000402BL)
     1614#define CO_E_TRACKER_CONFIG                                _HRESULT_TYPEDEF_(0x80004030L)
     1615#define CO_E_THREADPOOL_CONFIG                             _HRESULT_TYPEDEF_(0x80004031L)
     1616#define CO_E_SXS_CONFIG                                    _HRESULT_TYPEDEF_(0x80004032L)
     1617#define CO_E_MALFORMED_SPN                                 _HRESULT_TYPEDEF_(0x80004033L)
     1618
     1619#define E_UNEXPECTED                                       _HRESULT_TYPEDEF_(0x8000FFFFL)
     1620
     1621#define RPC_E_CALL_REJECTED                                _HRESULT_TYPEDEF_(0x80010001L)
     1622#define RPC_E_CALL_CANCELED                                _HRESULT_TYPEDEF_(0x80010002L)
     1623#define RPC_E_CANTPOST_INSENDCALL                          _HRESULT_TYPEDEF_(0x80010003L)
     1624#define RPC_E_CANTCALLOUT_INASYNCCALL                      _HRESULT_TYPEDEF_(0x80010004L)
     1625#define RPC_E_CANTCALLOUT_INEXTERNALCALL                   _HRESULT_TYPEDEF_(0x80010005L)
     1626#define RPC_E_CONNECTION_TERMINATED                        _HRESULT_TYPEDEF_(0x80010006L)
     1627#define RPC_E_SERVER_DIED                                  _HRESULT_TYPEDEF_(0x80010007L)
     1628#define RPC_E_CLIENT_DIED                                  _HRESULT_TYPEDEF_(0x80010008L)
     1629#define RPC_E_INVALID_DATAPACKET                           _HRESULT_TYPEDEF_(0x80010009L)
     1630#define RPC_E_CANTTRANSMIT_CALL                            _HRESULT_TYPEDEF_(0x8001000AL)
     1631#define RPC_E_CLIENT_CANTMARSHAL_DATA                      _HRESULT_TYPEDEF_(0x8001000BL)
     1632#define RPC_E_CLIENT_CANTUNMARSHAL_DATA                    _HRESULT_TYPEDEF_(0x8001000CL)
     1633#define RPC_E_SERVER_CANTMARSHAL_DATA                      _HRESULT_TYPEDEF_(0x8001000DL)
     1634#define RPC_E_SERVER_CANTUNMARSHAL_DATA                    _HRESULT_TYPEDEF_(0x8001000EL)
     1635#define RPC_E_INVALID_DATA                                 _HRESULT_TYPEDEF_(0x8001000FL)
     1636#define RPC_E_INVALID_PARAMETER                            _HRESULT_TYPEDEF_(0x80010010L)
     1637#define RPC_E_CANTCALLOUT_AGAIN                            _HRESULT_TYPEDEF_(0x80010011L)
     1638#define RPC_E_SERVER_DIED_DNE                              _HRESULT_TYPEDEF_(0x80010012L)
     1639#define RPC_E_SYS_CALL_FAILED                              _HRESULT_TYPEDEF_(0x80010100L)
     1640#define RPC_E_OUT_OF_RESOURCES                             _HRESULT_TYPEDEF_(0x80010101L)
     1641#define RPC_E_ATTEMPTED_MULTITHREAD                        _HRESULT_TYPEDEF_(0x80010102L)
     1642#define RPC_E_NOT_REGISTERED                               _HRESULT_TYPEDEF_(0x80010103L)
     1643#define RPC_E_FAULT                                        _HRESULT_TYPEDEF_(0x80010104L)
     1644#define RPC_E_SERVERFAULT                                  _HRESULT_TYPEDEF_(0x80010105L)
     1645#define RPC_E_CHANGED_MODE                                 _HRESULT_TYPEDEF_(0x80010106L)
     1646#define RPC_E_INVALIDMETHOD                                _HRESULT_TYPEDEF_(0x80010107L)
     1647#define RPC_E_DISCONNECTED                                 _HRESULT_TYPEDEF_(0x80010108L)
     1648#define RPC_E_RETRY                                        _HRESULT_TYPEDEF_(0x80010109L)
     1649#define RPC_E_SERVERCALL_RETRYLATER                        _HRESULT_TYPEDEF_(0x8001010AL)
     1650#define RPC_E_SERVERCALL_REJECTED                          _HRESULT_TYPEDEF_(0x8001010BL)
     1651#define RPC_E_INVALID_CALLDATA                             _HRESULT_TYPEDEF_(0x8001010CL)
     1652#define RPC_E_CANTCALLOUT_ININPUTSYNCCALL                  _HRESULT_TYPEDEF_(0x8001010DL)
     1653#define RPC_E_WRONG_THREAD                                 _HRESULT_TYPEDEF_(0x8001010EL)
     1654#define RPC_E_THREAD_NOT_INIT                              _HRESULT_TYPEDEF_(0x8001010FL)
     1655#define RPC_E_VERSION_MISMATCH                             _HRESULT_TYPEDEF_(0x80010110L)
     1656#define RPC_E_INVALID_HEADER                               _HRESULT_TYPEDEF_(0x80010111L)
     1657#define RPC_E_INVALID_EXTENSION                            _HRESULT_TYPEDEF_(0x80010112L)
     1658#define RPC_E_INVALID_IPID                                 _HRESULT_TYPEDEF_(0x80010113L)
     1659#define RPC_E_INVALID_OBJECT                               _HRESULT_TYPEDEF_(0x80010114L)
     1660#define RPC_S_CALLPENDING                                  _HRESULT_TYPEDEF_(0x80010115L)
     1661#define RPC_S_WAITONTIMER                                  _HRESULT_TYPEDEF_(0x80010116L)
     1662#define RPC_E_CALL_COMPLETE                                _HRESULT_TYPEDEF_(0x80010117L)
     1663#define RPC_E_UNSECURE_CALL                                _HRESULT_TYPEDEF_(0x80010118L)
     1664#define RPC_E_TOO_LATE                                     _HRESULT_TYPEDEF_(0x80010119L)
     1665#define RPC_E_NO_GOOD_SECURITY_PACKAGES                    _HRESULT_TYPEDEF_(0x8001011AL)
     1666#define RPC_E_ACCESS_DENIED                                _HRESULT_TYPEDEF_(0x8001011BL)
     1667#define RPC_E_REMOTE_DISABLED                              _HRESULT_TYPEDEF_(0x8001011CL)
     1668#define RPC_E_INVALID_OBJREF                               _HRESULT_TYPEDEF_(0x8001011DL)
     1669#define RPC_E_NO_CONTEXT                                   _HRESULT_TYPEDEF_(0x8001011EL)
     1670#define RPC_E_TIMEOUT                                      _HRESULT_TYPEDEF_(0x8001011FL)
     1671#define RPC_E_NO_SYNC                                      _HRESULT_TYPEDEF_(0x80010120L)
     1672#define RPC_E_UNEXPECTED                                   _HRESULT_TYPEDEF_(0x8001FFFFL)
     1673
     1674#define DISP_E_UNKNOWNINTERFACE                            _HRESULT_TYPEDEF_(0x80020001L)
     1675#define DISP_E_MEMBERNOTFOUND                              _HRESULT_TYPEDEF_(0x80020003L)
     1676#define DISP_E_PARAMNOTFOUND                               _HRESULT_TYPEDEF_(0x80020004L)
     1677#define DISP_E_TYPEMISMATCH                                _HRESULT_TYPEDEF_(0x80020005L)
     1678#define DISP_E_UNKNOWNNAME                                 _HRESULT_TYPEDEF_(0x80020006L)
     1679#define DISP_E_NONAMEDARGS                                 _HRESULT_TYPEDEF_(0x80020007L)
     1680#define DISP_E_BADVARTYPE                                  _HRESULT_TYPEDEF_(0x80020008L)
     1681#define DISP_E_EXCEPTION                                   _HRESULT_TYPEDEF_(0x80020009L)
     1682#define DISP_E_OVERFLOW                                    _HRESULT_TYPEDEF_(0x8002000AL)
     1683#define DISP_E_BADINDEX                                    _HRESULT_TYPEDEF_(0x8002000BL)
     1684#define DISP_E_UNKNOWNLCID                                 _HRESULT_TYPEDEF_(0x8002000CL)
     1685#define DISP_E_ARRAYISLOCKED                               _HRESULT_TYPEDEF_(0x8002000DL)
     1686#define DISP_E_BADPARAMCOUNT                               _HRESULT_TYPEDEF_(0x8002000EL)
     1687#define DISP_E_PARAMNOTOPTIONAL                            _HRESULT_TYPEDEF_(0x8002000FL)
     1688#define DISP_E_BADCALLEE                                   _HRESULT_TYPEDEF_(0x80020010L)
     1689#define DISP_E_NOTACOLLECTION                              _HRESULT_TYPEDEF_(0x80020011L)
     1690#define DISP_E_DIVBYZERO                                   _HRESULT_TYPEDEF_(0x80020012L)
     1691
     1692#define TYPE_E_BUFFERTOOSMALL                              _HRESULT_TYPEDEF_(0x80028016L)
     1693#define TYPE_E_FIELDNOTFOUND                               _HRESULT_TYPEDEF_(0x80028017L)
     1694#define TYPE_E_INVDATAREAD                                 _HRESULT_TYPEDEF_(0x80028018L)
     1695#define TYPE_E_UNSUPFORMAT                                 _HRESULT_TYPEDEF_(0x80028019L)
     1696#define TYPE_E_REGISTRYACCESS                              _HRESULT_TYPEDEF_(0x8002801CL)
     1697#define TYPE_E_LIBNOTREGISTERED                            _HRESULT_TYPEDEF_(0x8002801DL)
     1698#define TYPE_E_UNDEFINEDTYPE                               _HRESULT_TYPEDEF_(0x80028027L)
     1699#define TYPE_E_QUALIFIEDNAMEDISALLOWED                     _HRESULT_TYPEDEF_(0x80028028L)
     1700#define TYPE_E_INVALIDSTATE                                _HRESULT_TYPEDEF_(0x80028029L)
     1701#define TYPE_E_WRONGTYPEKIND                               _HRESULT_TYPEDEF_(0x8002802AL)
     1702#define TYPE_E_ELEMENTNOTFOUND                             _HRESULT_TYPEDEF_(0x8002802BL)
     1703#define TYPE_E_AMBIGUOUSNAME                               _HRESULT_TYPEDEF_(0x8002802CL)
     1704#define TYPE_E_NAMECONFLICT                                _HRESULT_TYPEDEF_(0x8002802DL)
     1705#define TYPE_E_UNKNOWNLCID                                 _HRESULT_TYPEDEF_(0x8002802EL)
     1706#define TYPE_E_DLLFUNCTIONNOTFOUND                         _HRESULT_TYPEDEF_(0x8002802FL)
     1707#define TYPE_E_BADMODULEKIND                               _HRESULT_TYPEDEF_(0x800288BDL)
     1708#define TYPE_E_SIZETOOBIG                                  _HRESULT_TYPEDEF_(0x800288C5L)
     1709#define TYPE_E_DUPLICATEID                                 _HRESULT_TYPEDEF_(0x800288C6L)
     1710#define TYPE_E_INVALIDID                                   _HRESULT_TYPEDEF_(0x800288CFL)
     1711#define TYPE_E_TYPEMISMATCH                                _HRESULT_TYPEDEF_(0x80028CA0L)
     1712#define TYPE_E_OUTOFBOUNDS                                 _HRESULT_TYPEDEF_(0x80028CA1L)
     1713#define TYPE_E_IOERROR                                     _HRESULT_TYPEDEF_(0x80028CA2L)
     1714#define TYPE_E_CANTCREATETMPFILE                           _HRESULT_TYPEDEF_(0x80028CA3L)
     1715#define TYPE_E_CANTLOADLIBRARY                             _HRESULT_TYPEDEF_(0x80029C4AL)
     1716#define TYPE_E_INCONSISTENTPROPFUNCS                       _HRESULT_TYPEDEF_(0x80029C83L)
     1717#define TYPE_E_CIRCULARTYPE                                _HRESULT_TYPEDEF_(0x80029C84L)
     1718
     1719#define STG_S_CONVERTED                                    _HRESULT_TYPEDEF_(0x00030200L)
     1720#define STG_S_BLOCK                                        _HRESULT_TYPEDEF_(0x00030201L)
     1721#define STG_S_RETRYNOW                                     _HRESULT_TYPEDEF_(0x00030202L)
     1722#define STG_S_MONITORING                                   _HRESULT_TYPEDEF_(0x00030203L)
     1723#define STG_S_MULTIPLEOPENS                                _HRESULT_TYPEDEF_(0x00030204L)
     1724#define STG_S_CONSOLIDATIONFAILED                          _HRESULT_TYPEDEF_(0x00030205L)
     1725#define STG_S_CANNOTCONSOLIDATE                            _HRESULT_TYPEDEF_(0x00030206L)
     1726
     1727#define STG_E_INVALIDFUNCTION                              _HRESULT_TYPEDEF_(0x80030001L)
     1728#define STG_E_FILENOTFOUND                                 _HRESULT_TYPEDEF_(0x80030002L)
     1729#define STG_E_PATHNOTFOUND                                 _HRESULT_TYPEDEF_(0x80030003L)
     1730#define STG_E_TOOMANYOPENFILES                             _HRESULT_TYPEDEF_(0x80030004L)
     1731#define STG_E_ACCESSDENIED                                 _HRESULT_TYPEDEF_(0x80030005L)
     1732#define STG_E_INVALIDHANDLE                                _HRESULT_TYPEDEF_(0x80030006L)
     1733#define STG_E_INSUFFICIENTMEMORY                           _HRESULT_TYPEDEF_(0x80030008L)
     1734#define STG_E_INVALIDPOINTER                               _HRESULT_TYPEDEF_(0x80030009L)
     1735#define STG_E_NOMOREFILES                                  _HRESULT_TYPEDEF_(0x80030012L)
     1736#define STG_E_DISKISWRITEPROTECTED                         _HRESULT_TYPEDEF_(0x80030013L)
     1737#define STG_E_SEEKERROR                                    _HRESULT_TYPEDEF_(0x80030019L)
     1738#define STG_E_WRITEFAULT                                   _HRESULT_TYPEDEF_(0x8003001DL)
     1739#define STG_E_READFAULT                                    _HRESULT_TYPEDEF_(0x8003001EL)
     1740#define STG_E_SHAREVIOLATION                               _HRESULT_TYPEDEF_(0x80030020L)
     1741#define STG_E_LOCKVIOLATION                                _HRESULT_TYPEDEF_(0x80030021L)
     1742#define STG_E_FILEALREADYEXISTS                            _HRESULT_TYPEDEF_(0x80030050L)
     1743#define STG_E_INVALIDPARAMETER                             _HRESULT_TYPEDEF_(0x80030057L)
     1744#define STG_E_MEDIUMFULL                                   _HRESULT_TYPEDEF_(0x80030070L)
     1745#define STG_E_ABNORMALAPIEXIT                              _HRESULT_TYPEDEF_(0x800300FAL)
     1746#define STG_E_INVALIDHEADER                                _HRESULT_TYPEDEF_(0x800300FBL)
     1747#define STG_E_INVALIDNAME                                  _HRESULT_TYPEDEF_(0x800300FCL)
     1748#define STG_E_UNKNOWN                                      _HRESULT_TYPEDEF_(0x800300FDL)
     1749#define STG_E_UNIMPLEMENTEDFUNCTION                        _HRESULT_TYPEDEF_(0x800300FEL)
     1750#define STG_E_INVALIDFLAG                                  _HRESULT_TYPEDEF_(0x800300FFL)
     1751#define STG_E_INUSE                                        _HRESULT_TYPEDEF_(0x80030100L)
     1752#define STG_E_NOTCURRENT                                   _HRESULT_TYPEDEF_(0x80030101L)
     1753#define STG_E_REVERTED                                     _HRESULT_TYPEDEF_(0x80030102L)
     1754#define STG_E_CANTSAVE                                     _HRESULT_TYPEDEF_(0x80030103L)
     1755#define STG_E_OLDFORMAT                                    _HRESULT_TYPEDEF_(0x80030104L)
     1756#define STG_E_OLDDLL                                       _HRESULT_TYPEDEF_(0x80030105L)
     1757#define STG_E_SHAREREQUIRED                                _HRESULT_TYPEDEF_(0x80030106L)
     1758#define STG_E_NOTFILEBASEDSTORAGE                          _HRESULT_TYPEDEF_(0x80030107L)
     1759#define STG_E_EXTANTMARSHALLINGS                           _HRESULT_TYPEDEF_(0x80030108L)
     1760#define STG_E_DOCFILECORRUPT                               _HRESULT_TYPEDEF_(0x80030109L)
     1761
     1762#define STG_E_STATUS_COPY_PROTECTION_FAILURE               _HRESULT_TYPEDEF_(0x80030305L)
     1763#define STG_E_CSS_AUTHENTICATION_FAILURE                   _HRESULT_TYPEDEF_(0x80030306L)
     1764#define STG_E_CSS_KEY_NOT_PRESENT                          _HRESULT_TYPEDEF_(0x80030307L)
     1765#define STG_E_CSS_KEY_NOT_ESTABLISHED                      _HRESULT_TYPEDEF_(0x80030308L)
     1766#define STG_E_CSS_SCRAMBLED_SECTOR                         _HRESULT_TYPEDEF_(0x80030309L)
     1767#define STG_E_CSS_REGION_MISMATCH                          _HRESULT_TYPEDEF_(0x8003030AL)
     1768#define STG_E_RESETS_EXHAUSTED                             _HRESULT_TYPEDEF_(0x8003030BL)
     1769
     1770#define OLE_S_FIRST                                        _HRESULT_TYPEDEF_(0x00040000L)
     1771#define OLE_S_USEREG                                       _HRESULT_TYPEDEF_(0x00040000L)
     1772#define OLE_S_STATIC                                       _HRESULT_TYPEDEF_(0x00040001L)
     1773#define OLE_S_MAC_CLIPFORMAT                               _HRESULT_TYPEDEF_(0x00040002L)
     1774#define OLE_S_LAST                                         _HRESULT_TYPEDEF_(0x000400FFL)
     1775
     1776#define OLE_E_FIRST                                        _HRESULT_TYPEDEF_(0x80040000L)
     1777#define OLE_E_OLEVERB                                      _HRESULT_TYPEDEF_(0x80040000L)
     1778#define OLE_E_ADVF                                         _HRESULT_TYPEDEF_(0x80040001L)
     1779#define OLE_E_ENUM_NOMORE                                  _HRESULT_TYPEDEF_(0x80040002L)
     1780#define OLE_E_ADVISENOTSUPPORTED                           _HRESULT_TYPEDEF_(0x80040003L)
     1781#define OLE_E_NOCONNECTION                                 _HRESULT_TYPEDEF_(0x80040004L)
     1782#define OLE_E_NOTRUNNING                                   _HRESULT_TYPEDEF_(0x80040005L)
     1783#define OLE_E_NOCACHE                                      _HRESULT_TYPEDEF_(0x80040006L)
     1784#define OLE_E_BLANK                                        _HRESULT_TYPEDEF_(0x80040007L)
     1785#define OLE_E_CLASSDIFF                                    _HRESULT_TYPEDEF_(0x80040008L)
     1786#define OLE_E_CANT_GETMONIKER                              _HRESULT_TYPEDEF_(0x80040009L)
     1787#define OLE_E_CANT_BINDTOSOURCE                            _HRESULT_TYPEDEF_(0x8004000AL)
     1788#define OLE_E_STATIC                                       _HRESULT_TYPEDEF_(0x8004000BL)
     1789#define OLE_E_PROMPTSAVECANCELLED                          _HRESULT_TYPEDEF_(0x8004000CL)
     1790#define OLE_E_INVALIDRECT                                  _HRESULT_TYPEDEF_(0x8004000DL)
     1791#define OLE_E_WRONGCOMPOBJ                                 _HRESULT_TYPEDEF_(0x8004000EL)
     1792#define OLE_E_INVALIDHWND                                  _HRESULT_TYPEDEF_(0x8004000FL)
     1793#define OLE_E_NOT_INPLACEACTIVE                            _HRESULT_TYPEDEF_(0x80040010L)
     1794#define OLE_E_CANTCONVERT                                  _HRESULT_TYPEDEF_(0x80040011L)
     1795#define OLE_E_NOSTORAGE                                    _HRESULT_TYPEDEF_(0x80040012L)
     1796#define DV_E_FORMATETC                                     _HRESULT_TYPEDEF_(0x80040064L)
     1797#define DV_E_DVTARGETDEVICE                                _HRESULT_TYPEDEF_(0x80040065L)
     1798#define DV_E_STGMEDIUM                                     _HRESULT_TYPEDEF_(0x80040066L)
     1799#define DV_E_STATDATA                                      _HRESULT_TYPEDEF_(0x80040067L)
     1800#define DV_E_LINDEX                                        _HRESULT_TYPEDEF_(0x80040068L)
     1801#define DV_E_TYMED                                         _HRESULT_TYPEDEF_(0x80040069L)
     1802#define DV_E_CLIPFORMAT                                    _HRESULT_TYPEDEF_(0x8004006AL)
     1803#define DV_E_DVASPECT                                      _HRESULT_TYPEDEF_(0x8004006BL)
     1804#define DV_E_DVTARGETDEVICE_SIZE                           _HRESULT_TYPEDEF_(0x8004006CL)
     1805#define DV_E_NOIVIEWOBJECT                                 _HRESULT_TYPEDEF_(0x8004006DL)
     1806#define OLE_E_LAST                                         _HRESULT_TYPEDEF_(0x800400FFL)
     1807
     1808#define DRAGDROP_S_FIRST                                   _HRESULT_TYPEDEF_(0x00040100L)
     1809#define DRAGDROP_S_DROP                                    _HRESULT_TYPEDEF_(0x00040100L)
     1810#define DRAGDROP_S_CANCEL                                  _HRESULT_TYPEDEF_(0x00040101L)
     1811#define DRAGDROP_S_USEDEFAULTCURSORS                       _HRESULT_TYPEDEF_(0x00040102L)
     1812#define DRAGDROP_S_LAST                                    _HRESULT_TYPEDEF_(0x0004010FL)
     1813
     1814#define DRAGDROP_E_FIRST                                   _HRESULT_TYPEDEF_(0x80040100L)
     1815#define DRAGDROP_E_NOTREGISTERED                           _HRESULT_TYPEDEF_(0x80040100L)
     1816#define DRAGDROP_E_ALREADYREGISTERED                       _HRESULT_TYPEDEF_(0x80040101L)
     1817#define DRAGDROP_E_INVALIDHWND                             _HRESULT_TYPEDEF_(0x80040102L)
     1818#define DRAGDROP_E_LAST                                    _HRESULT_TYPEDEF_(0x8004010FL)
     1819
     1820
     1821#define CLASSFACTORY_S_FIRST                               _HRESULT_TYPEDEF_(0x00040110L)
     1822#define CLASSFACTORY_S_LAST                                _HRESULT_TYPEDEF_(0x0004011FL)
     1823
     1824#define CLASSFACTORY_E_FIRST                               _HRESULT_TYPEDEF_(0x80040110L)
     1825#define CLASS_E_NOAGGREGATION                              _HRESULT_TYPEDEF_(0x80040110L)
     1826#define CLASS_E_CLASSNOTAVAILABLE                          _HRESULT_TYPEDEF_(0x80040111L)
     1827#define CLASS_E_NOTLICENSED                                _HRESULT_TYPEDEF_(0x80040112L)
     1828#define CLASSFACTORY_E_LAST                                _HRESULT_TYPEDEF_(0x8004011FL)
     1829
     1830#define MARSHAL_S_FIRST                                    _HRESULT_TYPEDEF_(0x00040120L)
     1831#define MARSHAL_S_LAST                                     _HRESULT_TYPEDEF_(0x0004012FL)
     1832
     1833#define MARSHAL_E_FIRST                                    _HRESULT_TYPEDEF_(0x80040120L)
     1834#define MARSHAL_E_LAST                                     _HRESULT_TYPEDEF_(0x8004012FL)
     1835
     1836#define DATA_S_FIRST                                       _HRESULT_TYPEDEF_(0x00040130L)
     1837#define DATA_S_SAMEFORMATETC                               _HRESULT_TYPEDEF_(0x00040130L)
     1838#define DATA_S_LAST                                        _HRESULT_TYPEDEF_(0x0004013FL)
     1839
     1840#define DATA_E_FIRST                                       _HRESULT_TYPEDEF_(0x80040130L)
     1841#define DATA_E_LAST                                        _HRESULT_TYPEDEF_(0x8004013FL)
     1842
     1843#define VIEW_S_FIRST                                       _HRESULT_TYPEDEF_(0x00040140L)
     1844#define VIEW_S_ALREADY_FROZEN                              _HRESULT_TYPEDEF_(0x00040140L)
     1845#define VIEW_S_LAST                                        _HRESULT_TYPEDEF_(0x0004014FL)
     1846
     1847#define VIEW_E_FIRST                                       _HRESULT_TYPEDEF_(0x80040140L)
     1848#define VIEW_E_DRAW                                        _HRESULT_TYPEDEF_(0x80040140L)
     1849#define VIEW_E_LAST                                        _HRESULT_TYPEDEF_(0x8004014FL)
     1850
     1851#define REGDB_S_FIRST                                      _HRESULT_TYPEDEF_(0x00040150L)
     1852#define REGDB_S_LAST                                       _HRESULT_TYPEDEF_(0x0004015FL)
     1853
     1854#define REGDB_E_FIRST                                      _HRESULT_TYPEDEF_(0x80040150L)
     1855#define REGDB_E_READREGDB                                  _HRESULT_TYPEDEF_(0x80040150L)
     1856#define REGDB_E_WRITEREGDB                                 _HRESULT_TYPEDEF_(0x80040151L)
     1857#define REGDB_E_KEYMISSING                                 _HRESULT_TYPEDEF_(0x80040152L)
     1858#define REGDB_E_INVALIDVALUE                               _HRESULT_TYPEDEF_(0x80040153L)
     1859#define REGDB_E_CLASSNOTREG                                _HRESULT_TYPEDEF_(0x80040154L)
     1860#define REGDB_E_IIDNOTREG                                  _HRESULT_TYPEDEF_(0x80040155L)
     1861#define REGDB_E_LAST                                       _HRESULT_TYPEDEF_(0x8004015FL)
     1862
     1863#define CAT_E_FIRST                                        _HRESULT_TYPEDEF_(0x80040160L)
     1864#define CAT_E_CATIDNOEXIST                                 _HRESULT_TYPEDEF_(0x80040160L)
     1865#define CAT_E_NODESCRIPTION                                _HRESULT_TYPEDEF_(0x80040161L)
     1866#define CAT_E_LAST                                         _HRESULT_TYPEDEF_(0x80040161L)
     1867
     1868#define CACHE_S_FIRST                                      _HRESULT_TYPEDEF_(0x00040170L)
     1869#define CACHE_S_FORMATETC_NOTSUPPORTED                     _HRESULT_TYPEDEF_(0x00040170L)
     1870#define CACHE_S_SAMECACHE                                  _HRESULT_TYPEDEF_(0x00040171L)
     1871#define CACHE_S_SOMECACHES_NOTUPDATED                      _HRESULT_TYPEDEF_(0x00040172L)
     1872#define CACHE_S_LAST                                       _HRESULT_TYPEDEF_(0x0004017FL)
     1873
     1874#define CACHE_E_FIRST                                      _HRESULT_TYPEDEF_(0x80040170L)
     1875#define CACHE_E_NOCACHE_UPDATED                            _HRESULT_TYPEDEF_(0x80040170L)
     1876#define CACHE_E_LAST                                       _HRESULT_TYPEDEF_(0x8004017FL)
     1877
     1878#define OLEOBJ_S_FIRST                                     _HRESULT_TYPEDEF_(0x00040180L)
     1879#define OLEOBJ_S_INVALIDVERB                               _HRESULT_TYPEDEF_(0x00040180L)
     1880#define OLEOBJ_S_CANNOT_DOVERB_NOW                         _HRESULT_TYPEDEF_(0x00040181L)
     1881#define OLEOBJ_S_INVALIDHWND                               _HRESULT_TYPEDEF_(0x00040182L)
     1882#define OLEOBJ_S_LAST                                      _HRESULT_TYPEDEF_(0x0004018FL)
     1883
     1884#define OLEOBJ_E_FIRST                                     _HRESULT_TYPEDEF_(0x80040180L)
     1885#define OLEOBJ_E_NOVERBS                                   _HRESULT_TYPEDEF_(0x80040180L)
     1886#define OLEOBJ_E_INVALIDVERB                               _HRESULT_TYPEDEF_(0x80040181L)
     1887#define OLEOBJ_E_LAST                                      _HRESULT_TYPEDEF_(0x8004018FL)
     1888
     1889#define CLIENTSITE_S_FIRST                                 _HRESULT_TYPEDEF_(0x00040190L)
     1890#define CLIENTSITE_S_LAST                                  _HRESULT_TYPEDEF_(0x0004019FL)
     1891
     1892#define CLIENTSITE_E_FIRST                                 _HRESULT_TYPEDEF_(0x80040190L)
     1893#define CLIENTSITE_E_LAST                                  _HRESULT_TYPEDEF_(0x8004019FL)
     1894
     1895#define INPLACE_S_FIRST                                    _HRESULT_TYPEDEF_(0x000401A0L)
     1896#define INPLACE_S_TRUNCATED                                _HRESULT_TYPEDEF_(0x000401A0L)
     1897#define INPLACE_S_LAST                                     _HRESULT_TYPEDEF_(0x000401AFL)
     1898
     1899#define INPLACE_E_FIRST                                    _HRESULT_TYPEDEF_(0x800401A0L)
     1900#define INPLACE_E_NOTUNDOABLE                              _HRESULT_TYPEDEF_(0x800401A0L)
     1901#define INPLACE_E_NOTOOLSPACE                              _HRESULT_TYPEDEF_(0x800401A1L)
     1902#define INPLACE_E_LAST                                     _HRESULT_TYPEDEF_(0x800401AFL)
     1903
     1904#define ENUM_S_FIRST                                       _HRESULT_TYPEDEF_(0x000401B0L)
     1905#define ENUM_S_LAST                                        _HRESULT_TYPEDEF_(0x000401BFL)
     1906
     1907#define ENUM_E_FIRST                                       _HRESULT_TYPEDEF_(0x800401B0L)
     1908#define ENUM_E_LAST                                        _HRESULT_TYPEDEF_(0x800401BFL)
     1909
     1910#define CONVERT10_S_FIRST                                  _HRESULT_TYPEDEF_(0x000401C0L)
     1911#define CONVERT10_S_NO_PRESENTATION                        _HRESULT_TYPEDEF_(0x000401C0L)
     1912#define CONVERT10_S_LAST                                   _HRESULT_TYPEDEF_(0x000401CFL)
     1913
     1914#define CONVERT10_E_FIRST                                  _HRESULT_TYPEDEF_(0x800401C0L)
     1915#define CONVERT10_E_OLESTREAM_GET                          _HRESULT_TYPEDEF_(0x800401C0L)
     1916#define CONVERT10_E_OLESTREAM_PUT                          _HRESULT_TYPEDEF_(0x800401C1L)
     1917#define CONVERT10_E_OLESTREAM_FMT                          _HRESULT_TYPEDEF_(0x800401C2L)
     1918#define CONVERT10_E_OLESTREAM_BITMAP_TO_DIB                _HRESULT_TYPEDEF_(0x800401C3L)
     1919#define CONVERT10_E_STG_FMT                                _HRESULT_TYPEDEF_(0x800401C4L)
     1920#define CONVERT10_E_STG_NO_STD_STREAM                      _HRESULT_TYPEDEF_(0x800401C5L)
     1921#define CONVERT10_E_STG_DIB_TO_BITMAP                      _HRESULT_TYPEDEF_(0x800401C6L)
     1922#define CONVERT10_E_LAST                                   _HRESULT_TYPEDEF_(0x800401CFL)
     1923
     1924#define CLIPBRD_S_FIRST                                    _HRESULT_TYPEDEF_(0x000401D0L)
     1925#define CLIPBRD_S_LAST                                     _HRESULT_TYPEDEF_(0x000401DFL)
     1926
     1927#define CLIPBRD_E_FIRST                                    _HRESULT_TYPEDEF_(0x800401D0L)
     1928#define CLIPBRD_E_LAST                                     _HRESULT_TYPEDEF_(0x800401DFL)
     1929#define CLIPBRD_E_CANT_OPEN                                _HRESULT_TYPEDEF_(0x800401D0L)
     1930#define CLIPBRD_E_CANT_EMPTY                               _HRESULT_TYPEDEF_(0x800401D1L)
     1931#define CLIPBRD_E_CANT_SET                                 _HRESULT_TYPEDEF_(0x800401D2L)
     1932#define CLIPBRD_E_BAD_DATA                                 _HRESULT_TYPEDEF_(0x800401D3L)
     1933#define CLIPBRD_E_CANT_CLOSE                               _HRESULT_TYPEDEF_(0x800401D4L)
     1934
     1935#define MK_S_FIRST                                         _HRESULT_TYPEDEF_(0x000401E0L)
     1936#define MK_S_REDUCED_TO_SELF                               _HRESULT_TYPEDEF_(0x000401E2L)
     1937#define MK_S_ME                                            _HRESULT_TYPEDEF_(0x000401E4L)
     1938#define MK_S_HIM                                           _HRESULT_TYPEDEF_(0x000401E5L)
     1939#define MK_S_US                                            _HRESULT_TYPEDEF_(0x000401E6L)
     1940#define MK_S_MONIKERALREADYREGISTERED                      _HRESULT_TYPEDEF_(0x000401E7L)
     1941#define MK_S_LAST                                          _HRESULT_TYPEDEF_(0x000401EFL)
     1942
     1943#define MK_E_FIRST                                         _HRESULT_TYPEDEF_(0x800401E0L)
     1944#define MK_E_CONNECTMANUALLY                               _HRESULT_TYPEDEF_(0x800401E0L)
     1945#define MK_E_EXCEEDEDDEADLINE                              _HRESULT_TYPEDEF_(0x800401E1L)
     1946#define MK_E_NEEDGENERIC                                   _HRESULT_TYPEDEF_(0x800401E2L)
     1947#define MK_E_UNAVAILABLE                                   _HRESULT_TYPEDEF_(0x800401E3L)
     1948#define MK_E_SYNTAX                                        _HRESULT_TYPEDEF_(0x800401E4L)
     1949#define MK_E_NOOBJECT                                      _HRESULT_TYPEDEF_(0x800401E5L)
     1950#define MK_E_INVALIDEXTENSION                              _HRESULT_TYPEDEF_(0x800401E6L)
     1951#define MK_E_INTERMEDIATEINTERFACENOTSUPPORTED             _HRESULT_TYPEDEF_(0x800401E7L)
     1952#define MK_E_NOTBINDABLE                                   _HRESULT_TYPEDEF_(0x800401E8L)
     1953#define MK_E_NOTBOUND                                      _HRESULT_TYPEDEF_(0x800401E9L)
     1954#define MK_E_CANTOPENFILE                                  _HRESULT_TYPEDEF_(0x800401EAL)
     1955#define MK_E_MUSTBOTHERUSER                                _HRESULT_TYPEDEF_(0x800401EBL)
     1956#define MK_E_NOINVERSE                                     _HRESULT_TYPEDEF_(0x800401ECL)
     1957#define MK_E_NOSTORAGE                                     _HRESULT_TYPEDEF_(0x800401EDL)
     1958#define MK_E_NOPREFIX                                      _HRESULT_TYPEDEF_(0x800401EEL)
     1959#define MK_E_ENUMERATION_FAILED                            _HRESULT_TYPEDEF_(0x800401EFL)
     1960#define MK_E_LAST                                          _HRESULT_TYPEDEF_(0x800401EFL)
     1961
     1962#define CO_S_FIRST                                         _HRESULT_TYPEDEF_(0x000401F0L)
     1963#define CO_S_LAST                                          _HRESULT_TYPEDEF_(0x000401FFL)
     1964
     1965#define CO_E_FIRST                                         _HRESULT_TYPEDEF_(0x800401F0L)
     1966#define CO_E_NOTINITIALIZED                                _HRESULT_TYPEDEF_(0x800401F0L)
     1967#define CO_E_ALREADYINITIALIZED                            _HRESULT_TYPEDEF_(0x800401F1L)
     1968#define CO_E_CANTDETERMINECLASS                            _HRESULT_TYPEDEF_(0x800401F2L)
     1969#define CO_E_CLASSSTRING                                   _HRESULT_TYPEDEF_(0x800401F3L)
     1970#define CO_E_IIDSTRING                                     _HRESULT_TYPEDEF_(0x800401F4L)
     1971#define CO_E_APPNOTFOUND                                   _HRESULT_TYPEDEF_(0x800401F5L)
     1972#define CO_E_APPSINGLEUSE                                  _HRESULT_TYPEDEF_(0x800401F6L)
     1973#define CO_E_ERRORINAPP                                    _HRESULT_TYPEDEF_(0x800401F7L)
     1974#define CO_E_DLLNOTFOUND                                   _HRESULT_TYPEDEF_(0x800401F8L)
     1975#define CO_E_ERRORINDLL                                    _HRESULT_TYPEDEF_(0x800401F9L)
     1976#define CO_E_WRONGOSFORAPP                                 _HRESULT_TYPEDEF_(0x800401FAL)
     1977#define CO_E_OBJNOTREG                                     _HRESULT_TYPEDEF_(0x800401FBL)
     1978#define CO_E_OBJISREG                                      _HRESULT_TYPEDEF_(0x800401FCL)
     1979#define CO_E_OBJNOTCONNECTED                               _HRESULT_TYPEDEF_(0x800401FDL)
     1980#define CO_E_APPDIDNTREG                                   _HRESULT_TYPEDEF_(0x800401FEL)
     1981#define CO_E_RELEASED                                      _HRESULT_TYPEDEF_(0x800401FFL)
     1982#define CO_E_LAST                                          _HRESULT_TYPEDEF_(0x800401FFL)
     1983#define CO_E_FAILEDTOIMPERSONATE                           _HRESULT_TYPEDEF_(0x80040200L)
     1984#define CO_E_FAILEDTOGETSECCTX                             _HRESULT_TYPEDEF_(0x80040201L)
     1985#define CO_E_FAILEDTOOPENTHREADTOKEN                       _HRESULT_TYPEDEF_(0x80040202L)
     1986#define CO_E_FAILEDTOGETTOKENINFO                          _HRESULT_TYPEDEF_(0x80040203L)
     1987#define CO_E_TRUSTEEDOESNTMATCHCLIENT                      _HRESULT_TYPEDEF_(0x80040204L)
     1988#define CO_E_FAILEDTOQUERYCLIENTBLANKET                    _HRESULT_TYPEDEF_(0x80040205L)
     1989#define CO_E_FAILEDTOSETDACL                               _HRESULT_TYPEDEF_(0x80040206L)
     1990#define CO_E_ACCESSCHECKFAILED                             _HRESULT_TYPEDEF_(0x80040207L)
     1991#define CO_E_NETACCESSAPIFAILED                            _HRESULT_TYPEDEF_(0x80040208L)
     1992#define CO_E_WRONGTRUSTEENAMESYNTAX                        _HRESULT_TYPEDEF_(0x80040209L)
     1993#define CO_E_INVALIDSID                                    _HRESULT_TYPEDEF_(0x8004020AL)
     1994#define CO_E_CONVERSIONFAILED                              _HRESULT_TYPEDEF_(0x8004020BL)
     1995#define CO_E_NOMATCHINGSIDFOUND                            _HRESULT_TYPEDEF_(0x8004020CL)
     1996#define CO_E_LOOKUPACCSIDFAILED                            _HRESULT_TYPEDEF_(0x8004020DL)
     1997#define CO_E_NOMATCHINGNAMEFOUND                           _HRESULT_TYPEDEF_(0x8004020EL)
     1998#define CO_E_LOOKUPACCNAMEFAILED                           _HRESULT_TYPEDEF_(0x8004020FL)
     1999#define CO_E_SETSERLHNDLFAILED                             _HRESULT_TYPEDEF_(0x80040210L)
     2000#define CO_E_FAILEDTOGETWINDIR                             _HRESULT_TYPEDEF_(0x80040211L)
     2001#define CO_E_PATHTOOLONG                                   _HRESULT_TYPEDEF_(0x80040212L)
     2002#define CO_E_FAILEDTOGENUUID                               _HRESULT_TYPEDEF_(0x80040213L)
     2003#define CO_E_FAILEDTOCREATEFILE                            _HRESULT_TYPEDEF_(0x80040214L)
     2004#define CO_E_FAILEDTOCLOSEHANDLE                           _HRESULT_TYPEDEF_(0x80040215L)
     2005#define CO_E_EXCEEDSYSACLLIMIT                             _HRESULT_TYPEDEF_(0x80040216L)
     2006#define CO_E_ACESINWRONGORDER                              _HRESULT_TYPEDEF_(0x80040217L)
     2007#define CO_E_INCOMPATIBLESTREAMVERSION                     _HRESULT_TYPEDEF_(0x80040218L)
     2008#define CO_E_FAILEDTOOPENPROCESSTOKEN                      _HRESULT_TYPEDEF_(0x80040219L)
     2009#define CO_E_DECODEFAILED                                  _HRESULT_TYPEDEF_(0x8004021AL)
     2010#define CO_E_ACNOTINITIALIZED                              _HRESULT_TYPEDEF_(0x8004021BL)
     2011
     2012/* Task Scheduler Service Error Codes */
     2013#define SCHED_S_TASK_READY                                 _HRESULT_TYPEDEF_(0x00041300L)
     2014#define SCHED_S_TASK_RUNNING                               _HRESULT_TYPEDEF_(0x00041301L)
     2015#define SCHED_S_TASK_DISABLED                              _HRESULT_TYPEDEF_(0x00041302L)
     2016#define SCHED_S_TASK_HAS_NOT_RUN                           _HRESULT_TYPEDEF_(0x00041303L)
     2017#define SCHED_S_TASK_NO_MORE_RUNS                          _HRESULT_TYPEDEF_(0x00041304L)
     2018#define SCHED_S_TASK_NOT_SCHEDULED                         _HRESULT_TYPEDEF_(0x00041305L)
     2019#define SCHED_S_TASK_TERMINATED                            _HRESULT_TYPEDEF_(0x00041306L)
     2020#define SCHED_S_TASK_NO_VALID_TRIGGERS                     _HRESULT_TYPEDEF_(0x00041307L)
     2021#define SCHED_S_EVENT_TRIGGER                              _HRESULT_TYPEDEF_(0x00041308L)
     2022#define SCHED_E_TRIGGER_NOT_FOUND                          _HRESULT_TYPEDEF_(0x80041309L)
     2023#define SCHED_E_TASK_NOT_READY                             _HRESULT_TYPEDEF_(0x8004130AL)
     2024#define SCHED_E_TASK_NOT_RUNNING                           _HRESULT_TYPEDEF_(0x8004130BL)
     2025#define SCHED_E_SERVICE_NOT_INSTALLED                      _HRESULT_TYPEDEF_(0x8004130CL)
     2026#define SCHED_E_CANNOT_OPEN_TASK                           _HRESULT_TYPEDEF_(0x8004130DL)
     2027#define SCHED_E_INVALID_TASK                               _HRESULT_TYPEDEF_(0x8004130EL)
     2028#define SCHED_E_ACCOUNT_INFORMATION_NOT_SET                _HRESULT_TYPEDEF_(0x8004130FL)
     2029#define SCHED_E_ACCOUNT_NAME_NOT_FOUND                     _HRESULT_TYPEDEF_(0x80041310L)
     2030#define SCHED_E_ACCOUNT_DBASE_CORRUPT                      _HRESULT_TYPEDEF_(0x80041311L)
     2031#define SCHED_E_NO_SECURITY_SERVICES                       _HRESULT_TYPEDEF_(0x80041312L)
     2032#define SCHED_E_UNKNOWN_OBJECT_VERSION                     _HRESULT_TYPEDEF_(0x80041313L)
     2033#define SCHED_E_UNSUPPORTED_ACCOUNT_OPTION                 _HRESULT_TYPEDEF_(0x80041314L)
     2034#define SCHED_E_SERVICE_NOT_RUNNING                        _HRESULT_TYPEDEF_(0x80041315L)
     2035#define SCHED_E_UNEXPECTEDNODE                             _HRESULT_TYPEDEF_(0x80041316L)
     2036#define SCHED_E_NAMESPACE                                  _HRESULT_TYPEDEF_(0x80041317L)
     2037#define SCHED_E_INVALIDVALUE                               _HRESULT_TYPEDEF_(0x80041318L)
     2038#define SCHED_E_MISSINGNODE                                _HRESULT_TYPEDEF_(0x80041319L)
     2039#define SCHED_E_MALFORMEDXML                               _HRESULT_TYPEDEF_(0x8004131AL)
     2040#define SCHED_S_SOME_TRIGGERS_FAILED                       _HRESULT_TYPEDEF_(0x0004131BL)
     2041#define SCHED_S_BATCH_LOGON_PROBLEM                        _HRESULT_TYPEDEF_(0x0004131CL)
     2042#define SCHED_E_TOO_MANY_NODES                             _HRESULT_TYPEDEF_(0x8004131DL)
     2043#define SCHED_E_PAST_END_BOUNDARY                          _HRESULT_TYPEDEF_(0x8004131EL)
     2044#define SCHED_E_ALREADY_RUNNING                            _HRESULT_TYPEDEF_(0x8004131FL)
     2045#define SCHED_E_USER_NOT_LOGGED_ON                         _HRESULT_TYPEDEF_(0x80041320L)
     2046#define SCHED_E_INVALID_TASK_HASH                          _HRESULT_TYPEDEF_(0x80041321L)
     2047#define SCHED_E_SERVICE_NOT_AVAILABLE                      _HRESULT_TYPEDEF_(0x80041322L)
     2048#define SCHED_E_SERVICE_TOO_BUSY                           _HRESULT_TYPEDEF_(0x80041323L)
     2049#define SCHED_E_TASK_ATTEMPTED                             _HRESULT_TYPEDEF_(0x80041324L)
     2050#define SCHED_S_TASK_QUEUED                                _HRESULT_TYPEDEF_(0x00041325L)
     2051#define SCHED_E_TASK_DISABLED                              _HRESULT_TYPEDEF_(0x80041326L)
     2052#define SCHED_E_TASK_NOT_V1_COMPAT                         _HRESULT_TYPEDEF_(0x80041327L)
     2053#define SCHED_E_START_ON_DEMAND                            _HRESULT_TYPEDEF_(0x80041328L)
     2054
     2055#define E_ACCESSDENIED                                     _HRESULT_TYPEDEF_(0x80070005L)
     2056#define E_HANDLE                                           _HRESULT_TYPEDEF_(0x80070006L)
     2057#define E_OUTOFMEMORY                                      _HRESULT_TYPEDEF_(0x8007000EL)
     2058#define E_INVALIDARG                                       _HRESULT_TYPEDEF_(0x80070057L)
     2059
     2060#define CO_S_NOTALLINTERFACES                              _HRESULT_TYPEDEF_(0x00080012L)
     2061
     2062#define CO_E_CLASS_CREATE_FAILED                           _HRESULT_TYPEDEF_(0x80080001L)
     2063#define CO_E_SCM_ERROR                                     _HRESULT_TYPEDEF_(0x80080002L)
     2064#define CO_E_SCM_RPC_FAILURE                               _HRESULT_TYPEDEF_(0x80080003L)
     2065#define CO_E_BAD_PATH                                      _HRESULT_TYPEDEF_(0x80080004L)
     2066#define CO_E_SERVER_EXEC_FAILURE                           _HRESULT_TYPEDEF_(0x80080005L)
     2067#define CO_E_OBJSRV_RPC_FAILURE                            _HRESULT_TYPEDEF_(0x80080006L)
     2068#define MK_E_NO_NORMALIZED                                 _HRESULT_TYPEDEF_(0x80080007L)
     2069#define CO_E_SERVER_STOPPING                               _HRESULT_TYPEDEF_(0x80080008L)
     2070#define MEM_E_INVALID_ROOT                                 _HRESULT_TYPEDEF_(0x80080009L)
     2071#define MEM_E_INVALID_LINK                                 _HRESULT_TYPEDEF_(0x80080010L)
     2072#define MEM_E_INVALID_SIZE                                 _HRESULT_TYPEDEF_(0x80080011L)
     2073
     2074/*Cryptographic Error Codes */
     2075#define NTE_BAD_UID                                        _HRESULT_TYPEDEF_(0x80090001L)
     2076#define NTE_BAD_HASH                                       _HRESULT_TYPEDEF_(0x80090002L)
     2077#define NTE_BAD_KEY                                        _HRESULT_TYPEDEF_(0x80090003L)
     2078#define NTE_BAD_LEN                                        _HRESULT_TYPEDEF_(0x80090004L)
     2079#define NTE_BAD_DATA                                       _HRESULT_TYPEDEF_(0x80090005L)
     2080#define NTE_BAD_SIGNATURE                                  _HRESULT_TYPEDEF_(0x80090006L)
     2081#define NTE_BAD_VER                                        _HRESULT_TYPEDEF_(0x80090007L)
     2082#define NTE_BAD_ALGID                                      _HRESULT_TYPEDEF_(0x80090008L)
     2083#define NTE_BAD_FLAGS                                      _HRESULT_TYPEDEF_(0x80090009L)
     2084#define NTE_BAD_TYPE                                       _HRESULT_TYPEDEF_(0x8009000AL)
     2085#define NTE_BAD_KEY_STATE                                  _HRESULT_TYPEDEF_(0x8009000BL)
     2086#define NTE_BAD_HASH_STATE                                 _HRESULT_TYPEDEF_(0x8009000CL)
     2087#define NTE_NO_KEY                                         _HRESULT_TYPEDEF_(0x8009000DL)
     2088#define NTE_NO_MEMORY                                      _HRESULT_TYPEDEF_(0x8009000EL)
     2089#define NTE_EXISTS                                         _HRESULT_TYPEDEF_(0x8009000FL)
     2090#define NTE_PERM                                           _HRESULT_TYPEDEF_(0x80090010L)
     2091#define NTE_NOT_FOUND                                      _HRESULT_TYPEDEF_(0x80090011L)
     2092#define NTE_DOUBLE_ENCRYPT                                 _HRESULT_TYPEDEF_(0x80090012L)
     2093#define NTE_BAD_PROVIDER                                   _HRESULT_TYPEDEF_(0x80090013L)
     2094#define NTE_BAD_PROV_TYPE                                  _HRESULT_TYPEDEF_(0x80090014L)
     2095#define NTE_BAD_PUBLIC_KEY                                 _HRESULT_TYPEDEF_(0x80090015L)
     2096#define NTE_BAD_KEYSET                                     _HRESULT_TYPEDEF_(0x80090016L)
     2097#define NTE_PROV_TYPE_NOT_DEF                              _HRESULT_TYPEDEF_(0x80090017L)
     2098#define NTE_PROV_TYPE_ENTRY_BAD                            _HRESULT_TYPEDEF_(0x80090018L)
     2099#define NTE_KEYSET_NOT_DEF                                 _HRESULT_TYPEDEF_(0x80090019L)
     2100#define NTE_KEYSET_ENTRY_BAD                               _HRESULT_TYPEDEF_(0x8009001AL)
     2101#define NTE_PROV_TYPE_NO_MATCH                             _HRESULT_TYPEDEF_(0x8009001BL)
     2102#define NTE_SIGNATURE_FILE_BAD                             _HRESULT_TYPEDEF_(0x8009001CL)
     2103#define NTE_PROVIDER_DLL_FAIL                              _HRESULT_TYPEDEF_(0x8009001DL)
     2104#define NTE_PROV_DLL_NOT_FOUND                             _HRESULT_TYPEDEF_(0x8009001EL)
     2105#define NTE_BAD_KEYSET_PARAM                               _HRESULT_TYPEDEF_(0x8009001FL)
     2106#define NTE_FAIL                                           _HRESULT_TYPEDEF_(0x80090020L)
     2107#define NTE_SYS_ERR                                        _HRESULT_TYPEDEF_(0x80090021L)
     2108#define NTE_OP_OK                                          _HRESULT_TYPEDEF_(0)
     2109
     2110#define SEC_E_INSUFFICIENT_MEMORY                          _HRESULT_TYPEDEF_(0x80090300L)
     2111#define SEC_E_INVALID_HANDLE                               _HRESULT_TYPEDEF_(0x80090301L)
     2112#define SEC_E_UNSUPPORTED_FUNCTION                         _HRESULT_TYPEDEF_(0x80090302L)
     2113#define SEC_E_TARGET_UNKNOWN                               _HRESULT_TYPEDEF_(0x80090303L)
     2114#define SEC_E_INTERNAL_ERROR                               _HRESULT_TYPEDEF_(0x80090304L)
     2115#define SEC_E_SECPKG_NOT_FOUND                             _HRESULT_TYPEDEF_(0x80090305L)
     2116#define SEC_E_NOT_OWNER                                    _HRESULT_TYPEDEF_(0x80090306L)
     2117#define SEC_E_CANNOT_INSTALL                               _HRESULT_TYPEDEF_(0x80090307L)
     2118#define SEC_E_INVALID_TOKEN                                _HRESULT_TYPEDEF_(0x80090308L)
     2119#define SEC_E_CANNOT_PACK                                  _HRESULT_TYPEDEF_(0x80090309L)
     2120#define SEC_E_QOP_NOT_SUPPORTED                            _HRESULT_TYPEDEF_(0x8009030AL)
     2121#define SEC_E_NO_IMPERSONATION                             _HRESULT_TYPEDEF_(0x8009030BL)
     2122#define SEC_E_LOGON_DENIED                                 _HRESULT_TYPEDEF_(0x8009030CL)
     2123#define SEC_E_UNKNOWN_CREDENTIALS                          _HRESULT_TYPEDEF_(0x8009030DL)
     2124#define SEC_E_NO_CREDENTIALS                               _HRESULT_TYPEDEF_(0x8009030EL)
     2125#define SEC_E_MESSAGE_ALTERED                              _HRESULT_TYPEDEF_(0x8009030FL)
     2126#define SEC_E_OUT_OF_SEQUENCE                              _HRESULT_TYPEDEF_(0x80090310L)
     2127#define SEC_E_NO_AUTHENTICATING_AUTHORITY                  _HRESULT_TYPEDEF_(0x80090311L)
     2128#define SEC_I_CONTINUE_NEEDED                              _HRESULT_TYPEDEF_(0x00090312L)
     2129#define SEC_I_COMPLETE_NEEDED                              _HRESULT_TYPEDEF_(0x00090313L)
     2130#define SEC_I_COMPLETE_AND_CONTINUE                        _HRESULT_TYPEDEF_(0x00090314L)
     2131#define SEC_E_BAD_PKGID                                    _HRESULT_TYPEDEF_(0x80090316L)
     2132#define SEC_E_CONTEXT_EXPIRED                              _HRESULT_TYPEDEF_(0x80090317L)
     2133#define SEC_E_INCOMPLETE_MESSAGE                           _HRESULT_TYPEDEF_(0x80090318L)
     2134#define SEC_E_INCOMPLETE_CREDENTIALS                       _HRESULT_TYPEDEF_(0x80090320L)
     2135#define SEC_E_BUFFER_TOO_SMALL                             _HRESULT_TYPEDEF_(0x80090321L)
     2136#define SEC_E_WRONG_PRINCIPAL                              _HRESULT_TYPEDEF_(0x80090322L)
     2137#define SEC_E_TIME_SKEW                                    _HRESULT_TYPEDEF_(0x80090324L)
     2138#define SEC_E_UNTRUSTED_ROOT                               _HRESULT_TYPEDEF_(0x80090325L)
     2139#define SEC_E_ILLEGAL_MESSAGE                              _HRESULT_TYPEDEF_(0x80090326L)
     2140#define SEC_E_CERT_UNKNOWN                                 _HRESULT_TYPEDEF_(0x80090327L)
     2141#define SEC_E_CERT_EXPIRED                                 _HRESULT_TYPEDEF_(0x80090328L)
     2142#define SEC_E_ENCRYPT_FAILURE                              _HRESULT_TYPEDEF_(0x80090329L)
     2143#define SEC_E_DECRYPT_FAILURE                              _HRESULT_TYPEDEF_(0x80090330L)
     2144#define SEC_E_ALGORITHM_MISMATCH                           _HRESULT_TYPEDEF_(0x80090331L)
     2145#define SEC_E_SECURITY_QOS_FAILED                          _HRESULT_TYPEDEF_(0x80090332L)
     2146#define SEC_E_UNFINISHED_CONTEXT_DELETED                   _HRESULT_TYPEDEF_(0x80090333L)
     2147#define SEC_E_NO_TGT_REPLY                                 _HRESULT_TYPEDEF_(0x80090334L)
     2148#define SEC_E_NO_IP_ADDRESSES                              _HRESULT_TYPEDEF_(0x80090335L)
     2149#define SEC_E_WRONG_CREDENTIAL_HANDLE                      _HRESULT_TYPEDEF_(0x80090336L)
     2150#define SEC_E_CRYPTO_SYSTEM_INVALID                        _HRESULT_TYPEDEF_(0x80090337L)
     2151#define SEC_E_MAX_REFERRALS_EXCEEDED                       _HRESULT_TYPEDEF_(0x80090338L)
     2152#define SEC_E_MUST_BE_KDC                                  _HRESULT_TYPEDEF_(0x80090339L)
     2153#define SEC_E_STRONG_CRYPTO_NOT_SUPPORTED                  _HRESULT_TYPEDEF_(0x8009033AL)
     2154#define SEC_E_TOO_MANY_PRINCIPALS                          _HRESULT_TYPEDEF_(0x8009033BL)
     2155#define SEC_E_NO_PA_DATA                                   _HRESULT_TYPEDEF_(0x8009033CL)
     2156#define SEC_E_PKINIT_NAME_MISMATCH                         _HRESULT_TYPEDEF_(0x8009033DL)
     2157#define SEC_E_SMARTCARD_LOGON_REQUIRED                     _HRESULT_TYPEDEF_(0x8009033EL)
     2158#define SEC_E_SHUTDOWN_IN_PROGRESS                         _HRESULT_TYPEDEF_(0x8009033FL)
     2159#define SEC_E_KDC_INVALID_REQUEST                          _HRESULT_TYPEDEF_(0x80090340L)
     2160#define SEC_E_KDC_UNABLE_TO_REFER                          _HRESULT_TYPEDEF_(0x80090341L)
     2161#define SEC_E_KDC_UNKNOWN_ETYPE                            _HRESULT_TYPEDEF_(0x80090342L)
     2162#define SEC_E_UNSUPPORTED_PREAUTH                          _HRESULT_TYPEDEF_(0x80090343L)
     2163#define SEC_E_DELEGATION_REQUIRED                          _HRESULT_TYPEDEF_(0x80090345L)
     2164#define SEC_E_BAD_BINDINGS                                 _HRESULT_TYPEDEF_(0x80090346L)
     2165#define SEC_E_MULTIPLE_ACCOUNTS                            _HRESULT_TYPEDEF_(0x80090347L)
     2166#define SEC_E_NO_KERB_KEY                                  _HRESULT_TYPEDEF_(0x80090348L)
     2167#define SEC_E_CERT_WRONG_USAGE                             _HRESULT_TYPEDEF_(0x80090349L)
     2168#define SEC_E_DOWNGRADE_DETECTED                           _HRESULT_TYPEDEF_(0x80090350L)
     2169#define SEC_E_SMARTCARD_CERT_REVOKED                       _HRESULT_TYPEDEF_(0x80090351L)
     2170#define SEC_E_ISSUING_CA_UNTRUSTED                         _HRESULT_TYPEDEF_(0x80090352L)
     2171#define SEC_E_REVOCATION_OFFLINE_C                         _HRESULT_TYPEDEF_(0x80090353L)
     2172#define SEC_E_PKINIT_CLIENT_FAILURE                        _HRESULT_TYPEDEF_(0x80090354L)
     2173#define SEC_E_SMARTCARD_CERT_EXPIRED                       _HRESULT_TYPEDEF_(0x80090355L)
     2174#define SEC_E_NO_S4U_PROT_SUPPORT                          _HRESULT_TYPEDEF_(0x80090356L)
     2175#define SEC_E_CROSSREALM_DELEGATION_FAILURE                _HRESULT_TYPEDEF_(0x80090357L)
     2176#define SEC_E_REVOCATION_OFFLINE_KDC                       _HRESULT_TYPEDEF_(0x80090358L)
     2177#define SEC_E_ISSUING_CA_UNTRUSTED_KDC                     _HRESULT_TYPEDEF_(0x80090359L)
     2178#define SEC_E_KDC_CERT_EXPIRED                             _HRESULT_TYPEDEF_(0x8009035AL)
     2179#define SEC_E_KDC_CERT_REVOKED                             _HRESULT_TYPEDEF_(0x8009035BL)
     2180
     2181#define CRYPT_E_MSG_ERROR                                  _HRESULT_TYPEDEF_(0x80091001L)
     2182#define CRYPT_E_UNKNOWN_ALGO                               _HRESULT_TYPEDEF_(0x80091002L)
     2183#define CRYPT_E_OID_FORMAT                                 _HRESULT_TYPEDEF_(0x80091003L)
     2184#define CRYPT_E_INVALID_MSG_TYPE                           _HRESULT_TYPEDEF_(0x80091004L)
     2185#define CRYPT_E_UNEXPECTED_ENCODING                        _HRESULT_TYPEDEF_(0x80091005L)
     2186#define CRYPT_E_AUTH_ATTR_MISSING                          _HRESULT_TYPEDEF_(0x80091006L)
     2187#define CRYPT_E_HASH_VALUE                                 _HRESULT_TYPEDEF_(0x80091007L)
     2188#define CRYPT_E_INVALID_INDEX                              _HRESULT_TYPEDEF_(0x80091008L)
     2189#define CRYPT_E_ALREADY_DECRYPTED                          _HRESULT_TYPEDEF_(0x80091009L)
     2190#define CRYPT_E_NOT_DECRYPTED                              _HRESULT_TYPEDEF_(0x8009100AL)
     2191#define CRYPT_E_RECIPIENT_NOT_FOUND                        _HRESULT_TYPEDEF_(0x8009100BL)
     2192#define CRYPT_E_CONTROL_TYPE                               _HRESULT_TYPEDEF_(0x8009100CL)
     2193#define CRYPT_E_ISSUER_SERIALNUMBER                        _HRESULT_TYPEDEF_(0x8009100DL)
     2194#define CRYPT_E_SIGNER_NOT_FOUND                           _HRESULT_TYPEDEF_(0x8009100EL)
     2195#define CRYPT_E_ATTRIBUTES_MISSING                         _HRESULT_TYPEDEF_(0x8009100FL)
     2196#define CRYPT_E_STREAM_MSG_NOT_READY                       _HRESULT_TYPEDEF_(0x80091010L)
     2197#define CRYPT_E_STREAM_INSUFFICIENT_DATA                   _HRESULT_TYPEDEF_(0x80091011L)
     2198#define CRYPT_I_NEW_PROTECTION_REQUIRED                    _HRESULT_TYPEDEF_(0x80091012L)
     2199
     2200#define CRYPT_E_BAD_LEN                                    _HRESULT_TYPEDEF_(0x80092001L)
     2201#define CRYPT_E_BAD_ENCODE                                 _HRESULT_TYPEDEF_(0x80092002L)
     2202#define CRYPT_E_FILE_ERROR                                 _HRESULT_TYPEDEF_(0x80092003L)
     2203#define CRYPT_E_NOT_FOUND                                  _HRESULT_TYPEDEF_(0x80092004L)
     2204#define CRYPT_E_EXISTS                                     _HRESULT_TYPEDEF_(0x80092005L)
     2205#define CRYPT_E_NO_PROVIDER                                _HRESULT_TYPEDEF_(0x80092006L)
     2206#define CRYPT_E_SELF_SIGNED                                _HRESULT_TYPEDEF_(0x80092007L)
     2207#define CRYPT_E_DELETED_PREV                               _HRESULT_TYPEDEF_(0x80092008L)
     2208#define CRYPT_E_NO_MATCH                                   _HRESULT_TYPEDEF_(0x80092009L)
     2209#define CRYPT_E_UNEXPECTED_MSG_TYPE                        _HRESULT_TYPEDEF_(0x8009200AL)
     2210#define CRYPT_E_NO_KEY_PROPERTY                            _HRESULT_TYPEDEF_(0x8009200BL)
     2211#define CRYPT_E_NO_DECRYPT_CERT                            _HRESULT_TYPEDEF_(0x8009200CL)
     2212#define CRYPT_E_BAD_MSG                                    _HRESULT_TYPEDEF_(0x8009200DL)
     2213#define CRYPT_E_NO_SIGNER                                  _HRESULT_TYPEDEF_(0x8009200EL)
     2214#define CRYPT_E_PENDING_CLOSE                              _HRESULT_TYPEDEF_(0x8009200FL)
     2215#define CRYPT_E_REVOKED                                    _HRESULT_TYPEDEF_(0x80092010L)
     2216#define CRYPT_E_NO_REVOCATION_DLL                          _HRESULT_TYPEDEF_(0x80092011L)
     2217#define CRYPT_E_NO_REVOCATION_CHECK                        _HRESULT_TYPEDEF_(0x80092012L)
     2218#define CRYPT_E_REVOCATION_OFFLINE                         _HRESULT_TYPEDEF_(0x80092013L)
     2219#define CRYPT_E_NOT_IN_REVOCATION_DATABASE                 _HRESULT_TYPEDEF_(0x80092014L)
     2220#define CRYPT_E_INVALID_NUMERIC_STRING                     _HRESULT_TYPEDEF_(0x80092020L)
     2221#define CRYPT_E_INVALID_PRINTABLE_STRING                   _HRESULT_TYPEDEF_(0x80092021L)
     2222#define CRYPT_E_INVALID_IA5_STRING                         _HRESULT_TYPEDEF_(0x80092022L)
     2223#define CRYPT_E_INVALID_X500_STRING                        _HRESULT_TYPEDEF_(0x80092023L)
     2224#define CRYPT_E_NOT_CHAR_STRING                            _HRESULT_TYPEDEF_(0x80092024L)
     2225#define CRYPT_E_FILERESIZED                                _HRESULT_TYPEDEF_(0x80092025L)
     2226#define CRYPT_E_SECURITY_SETTINGS                          _HRESULT_TYPEDEF_(0x80092026L)
     2227#define CRYPT_E_NO_VERIFY_USAGE_DLL                        _HRESULT_TYPEDEF_(0x80092027L)
     2228#define CRYPT_E_NO_VERIFY_USAGE_CHECK                      _HRESULT_TYPEDEF_(0x80092028L)
     2229#define CRYPT_E_VERIFY_USAGE_OFFLINE                       _HRESULT_TYPEDEF_(0x80092029L)
     2230#define CRYPT_E_NOT_IN_CTL                                 _HRESULT_TYPEDEF_(0x8009202AL)
     2231#define CRYPT_E_NO_TRUSTED_SIGNER                          _HRESULT_TYPEDEF_(0x8009202BL)
     2232#define CRYPT_E_MISSING_PUBKEY_PARA                        _HRESULT_TYPEDEF_(0x8009202CL)
     2233#define CRYPT_E_OSS_ERROR                                  _HRESULT_TYPEDEF_(0x80093000L)
     2234#define OSS_MORE_BUF                                       _HRESULT_TYPEDEF_(0x80093001L)
     2235#define OSS_NEGATIVE_UINTEGER                              _HRESULT_TYPEDEF_(0x80093002L)
     2236#define OSS_PDU_RANGE                                      _HRESULT_TYPEDEF_(0x80093003L)
     2237#define OSS_MORE_INPUT                                     _HRESULT_TYPEDEF_(0x80093004L)
     2238#define OSS_DATA_ERROR                                     _HRESULT_TYPEDEF_(0x80093005L)
     2239#define OSS_BAD_ARG                                        _HRESULT_TYPEDEF_(0x80093006L)
     2240#define OSS_BAD_VERSION                                    _HRESULT_TYPEDEF_(0x80093007L)
     2241#define OSS_OUT_MEMORY                                     _HRESULT_TYPEDEF_(0x80093008L)
     2242#define OSS_PDU_MISMATCH                                   _HRESULT_TYPEDEF_(0x80093009L)
     2243#define OSS_LIMITED                                        _HRESULT_TYPEDEF_(0x8009300AL)
     2244#define OSS_BAD_PTR                                        _HRESULT_TYPEDEF_(0x8009300BL)
     2245#define OSS_BAD_TIME                                       _HRESULT_TYPEDEF_(0x8009300CL)
     2246#define OSS_INDEFINITE_NOT_SUPPORTED                       _HRESULT_TYPEDEF_(0x8009300DL)
     2247#define OSS_MEM_ERROR                                      _HRESULT_TYPEDEF_(0x8009300EL)
     2248#define OSS_BAD_TABLE                                      _HRESULT_TYPEDEF_(0x8009300FL)
     2249#define OSS_TOO_LONG                                       _HRESULT_TYPEDEF_(0x80093010L)
     2250#define OSS_CONSTRAINT_VIOLATED                            _HRESULT_TYPEDEF_(0x80093011L)
     2251#define OSS_FATAL_ERROR                                    _HRESULT_TYPEDEF_(0x80093012L)
     2252#define OSS_ACCESS_SERIALIZATION_ERROR                     _HRESULT_TYPEDEF_(0x80093013L)
     2253#define OSS_NULL_TBL                                       _HRESULT_TYPEDEF_(0x80093014L)
     2254#define OSS_NULL_FCN                                       _HRESULT_TYPEDEF_(0x80093015L)
     2255#define OSS_BAD_ENCRULES                                   _HRESULT_TYPEDEF_(0x80093016L)
     2256#define OSS_UNAVAIL_ENCRULES                               _HRESULT_TYPEDEF_(0x80093017L)
     2257#define OSS_CANT_OPEN_TRACE_WINDOW                         _HRESULT_TYPEDEF_(0x80093018L)
     2258#define OSS_UNIMPLEMENTED                                  _HRESULT_TYPEDEF_(0x80093019L)
     2259#define OSS_OID_DLL_NOT_LINKED                             _HRESULT_TYPEDEF_(0x8009301AL)
     2260#define OSS_CANT_OPEN_TRACE_FILE                           _HRESULT_TYPEDEF_(0x8009301BL)
     2261#define OSS_TRACE_FILE_ALREADY_OPEN                        _HRESULT_TYPEDEF_(0x8009301CL)
     2262#define OSS_TABLE_MISMATCH                                 _HRESULT_TYPEDEF_(0x8009301DL)
     2263#define OSS_TYPE_NOT_SUPPORTED                             _HRESULT_TYPEDEF_(0x8009301EL)
     2264#define OSS_REAL_DLL_NOT_LINKED                            _HRESULT_TYPEDEF_(0x8009301FL)
     2265#define OSS_REAL_CODE_NOT_LINKED                           _HRESULT_TYPEDEF_(0x80093020L)
     2266#define OSS_OUT_OF_RANGE                                   _HRESULT_TYPEDEF_(0x80093021L)
     2267#define OSS_COPIER_DLL_NOT_LINKED                          _HRESULT_TYPEDEF_(0x80093022L)
     2268#define OSS_CONSTRAINT_DLL_NOT_LINKED                      _HRESULT_TYPEDEF_(0x80093023L)
     2269#define OSS_COMPARATOR_DLL_NOT_LINKED                      _HRESULT_TYPEDEF_(0x80093024L)
     2270#define OSS_COMPARATOR_CODE_NOT_LINKED                     _HRESULT_TYPEDEF_(0x80093025L)
     2271#define OSS_MEM_MGR_DLL_NOT_LINKED                         _HRESULT_TYPEDEF_(0x80093026L)
     2272#define OSS_PDV_DLL_NOT_LINKED                             _HRESULT_TYPEDEF_(0x80093027L)
     2273#define OSS_PDV_CODE_NOT_LINKED                            _HRESULT_TYPEDEF_(0x80093028L)
     2274#define OSS_API_DLL_NOT_LINKED                             _HRESULT_TYPEDEF_(0x80093029L)
     2275#define OSS_BERDER_DLL_NOT_LINKED                          _HRESULT_TYPEDEF_(0x8009302AL)
     2276#define OSS_PER_DLL_NOT_LINKED                             _HRESULT_TYPEDEF_(0x8009302BL)
     2277#define OSS_OPEN_TYPE_ERROR                                _HRESULT_TYPEDEF_(0x8009302CL)
     2278#define OSS_MUTEX_NOT_CREATED                              _HRESULT_TYPEDEF_(0x8009302DL)
     2279#define OSS_CANT_CLOSE_TRACE_FILE                          _HRESULT_TYPEDEF_(0x8009302EL)
     2280#define CRYPT_E_ASN1_ERROR                                 _HRESULT_TYPEDEF_(0x80093100L)
     2281#define CRYPT_E_ASN1_INTERNAL                              _HRESULT_TYPEDEF_(0x80093101L)
     2282#define CRYPT_E_ASN1_EOD                                   _HRESULT_TYPEDEF_(0x80093102L)
     2283#define CRYPT_E_ASN1_CORRUPT                               _HRESULT_TYPEDEF_(0x80093103L)
     2284#define CRYPT_E_ASN1_LARGE                                 _HRESULT_TYPEDEF_(0x80093104L)
     2285#define CRYPT_E_ASN1_CONSTRAINT                            _HRESULT_TYPEDEF_(0x80093105L)
     2286#define CRYPT_E_ASN1_MEMORY                                _HRESULT_TYPEDEF_(0x80093106L)
     2287#define CRYPT_E_ASN1_OVERFLOW                              _HRESULT_TYPEDEF_(0x80093107L)
     2288#define CRYPT_E_ASN1_BADPDU                                _HRESULT_TYPEDEF_(0x80093108L)
     2289#define CRYPT_E_ASN1_BADARGS                               _HRESULT_TYPEDEF_(0x80093109L)
     2290#define CRYPT_E_ASN1_BADREAL                               _HRESULT_TYPEDEF_(0x8009310AL)
     2291#define CRYPT_E_ASN1_BADTAG                                _HRESULT_TYPEDEF_(0x8009310BL)
     2292#define CRYPT_E_ASN1_CHOICE                                _HRESULT_TYPEDEF_(0x8009310CL)
     2293#define CRYPT_E_ASN1_RULE                                  _HRESULT_TYPEDEF_(0x8009310DL)
     2294#define CRYPT_E_ASN1_UTF8                                  _HRESULT_TYPEDEF_(0x8009310EL)
     2295#define CRYPT_E_ASN1_PDU_TYPE                              _HRESULT_TYPEDEF_(0x80093133L)
     2296#define CRYPT_E_ASN1_NYI                                   _HRESULT_TYPEDEF_(0x80093134L)
     2297#define CRYPT_E_ASN1_EXTENDED                              _HRESULT_TYPEDEF_(0x80093201L)
     2298#define CRYPT_E_ASN1_NOEOD                                 _HRESULT_TYPEDEF_(0x80093202L)
     2299
     2300#define TRUST_E_SYSTEM_ERROR                               _HRESULT_TYPEDEF_(0x80096001L)
     2301#define TRUST_E_NO_SIGNER_CERT                             _HRESULT_TYPEDEF_(0x80096002L)
     2302#define TRUST_E_COUNTER_SIGNER                             _HRESULT_TYPEDEF_(0x80096003L)
     2303#define TRUST_E_CERT_SIGNATURE                             _HRESULT_TYPEDEF_(0x80096004L)
     2304#define TRUST_E_TIME_STAMP                                 _HRESULT_TYPEDEF_(0x80096005L)
     2305#define TRUST_E_BAD_DIGEST                                 _HRESULT_TYPEDEF_(0x80096010L)
     2306#define TRUST_E_BASIC_CONSTRAINTS                          _HRESULT_TYPEDEF_(0x80096019L)
     2307#define TRUST_E_FINANCIAL_CRITERIA                         _HRESULT_TYPEDEF_(0x8009601EL)
     2308#define TRUST_E_PROVIDER_UNKNOWN                           _HRESULT_TYPEDEF_(0x800B0001L)
     2309#define TRUST_E_ACTION_UNKNOWN                             _HRESULT_TYPEDEF_(0x800B0002L)
     2310#define TRUST_E_SUBJECT_FORM_UNKNOWN                       _HRESULT_TYPEDEF_(0x800B0003L)
     2311#define TRUST_E_SUBJECT_NOT_TRUSTED                        _HRESULT_TYPEDEF_(0x800B0004L)
     2312#define TRUST_E_NOSIGNATURE                                _HRESULT_TYPEDEF_(0x800B0100L)
     2313#define CERT_E_EXPIRED                                     _HRESULT_TYPEDEF_(0x800B0101)
     2314#define CERT_E_VALIDITYPERIODNESTING                       _HRESULT_TYPEDEF_(0x800B0102)
     2315#define CERT_E_ROLE                                        _HRESULT_TYPEDEF_(0x800B0103)
     2316#define CERT_E_PATHLENCONST                                _HRESULT_TYPEDEF_(0x800B0104)
     2317#define CERT_E_CRITICAL                                    _HRESULT_TYPEDEF_(0x800B0105)
     2318#define CERT_E_PURPOSE                                     _HRESULT_TYPEDEF_(0x800B0106)
     2319#define CERT_E_ISSUERCHAINING                              _HRESULT_TYPEDEF_(0x800B0107)
     2320#define CERT_E_MALFORMED                                   _HRESULT_TYPEDEF_(0x800B0108)
     2321#define CERT_E_UNTRUSTEDROOT                               _HRESULT_TYPEDEF_(0x800B0109)
     2322#define CERT_E_CHAINING                                    _HRESULT_TYPEDEF_(0x800B010A)
     2323#define TRUST_E_FAIL                                       _HRESULT_TYPEDEF_(0x800B010B)
     2324#define CERT_E_REVOKED                                     _HRESULT_TYPEDEF_(0x800B010C)
     2325#define CERT_E_UNTRUSTEDTESTROOT                           _HRESULT_TYPEDEF_(0x800B010D)
     2326#define CERT_E_REVOCATION_FAILURE                          _HRESULT_TYPEDEF_(0x800B010E)
     2327#define CERT_E_CN_NO_MATCH                                 _HRESULT_TYPEDEF_(0x800B010F)
     2328#define CERT_E_WRONG_USAGE                                 _HRESULT_TYPEDEF_(0x800B0110)
     2329#define TRUST_E_EXPLICIT_DISTRUST                          _HRESULT_TYPEDEF_(0x800B0111)
     2330#define CERT_E_UNTRUSTEDCA                                 _HRESULT_TYPEDEF_(0x800B0112)
     2331#define CERT_E_INVALID_POLICY                              _HRESULT_TYPEDEF_(0x800B0113)
     2332#define CERT_E_INVALID_NAME                                _HRESULT_TYPEDEF_(0x800B0114)
     2333
     2334#define SPAPI_E_EXPECTED_SECTION_NAME                      _HRESULT_TYPEDEF_(0x800F0000L)
     2335#define SPAPI_E_BAD_SECTION_NAME_LINE                      _HRESULT_TYPEDEF_(0x800F0001L)
     2336#define SPAPI_E_SECTION_NAME_TOO_LONG                      _HRESULT_TYPEDEF_(0x800F0002L)
     2337#define SPAPI_E_GENERAL_SYNTAX                             _HRESULT_TYPEDEF_(0x800F0003L)
     2338#define SPAPI_E_WRONG_INF_STYLE                            _HRESULT_TYPEDEF_(0x800F0100L)
     2339#define SPAPI_E_SECTION_NOT_FOUND                          _HRESULT_TYPEDEF_(0x800F0101L)
     2340#define SPAPI_E_LINE_NOT_FOUND                             _HRESULT_TYPEDEF_(0x800F0102L)
     2341#define SPAPI_E_NO_BACKUP                                  _HRESULT_TYPEDEF_(0x800F0103L)
     2342#define SPAPI_E_NO_ASSOCIATED_CLASS                        _HRESULT_TYPEDEF_(0x800F0200L)
     2343#define SPAPI_E_CLASS_MISMATCH                             _HRESULT_TYPEDEF_(0x800F0201L)
     2344#define SPAPI_E_DUPLICATE_FOUND                            _HRESULT_TYPEDEF_(0x800F0202L)
     2345#define SPAPI_E_NO_DRIVER_SELECTED                         _HRESULT_TYPEDEF_(0x800F0203L)
     2346#define SPAPI_E_KEY_DOES_NOT_EXIST                         _HRESULT_TYPEDEF_(0x800F0204L)
     2347#define SPAPI_E_INVALID_DEVINST_NAME                       _HRESULT_TYPEDEF_(0x800F0205L)
     2348#define SPAPI_E_INVALID_CLASS                              _HRESULT_TYPEDEF_(0x800F0206L)
     2349#define SPAPI_E_DEVINST_ALREADY_EXISTS                     _HRESULT_TYPEDEF_(0x800F0207L)
     2350#define SPAPI_E_DEVINFO_NOT_REGISTERED                     _HRESULT_TYPEDEF_(0x800F0208L)
     2351#define SPAPI_E_INVALID_REG_PROPERTY                       _HRESULT_TYPEDEF_(0x800F0209L)
     2352#define SPAPI_E_NO_INF                                     _HRESULT_TYPEDEF_(0x800F020AL)
     2353#define SPAPI_E_NO_SUCH_DEVINST                            _HRESULT_TYPEDEF_(0x800F020BL)
     2354#define SPAPI_E_CANT_LOAD_CLASS_ICON                       _HRESULT_TYPEDEF_(0x800F020CL)
     2355#define SPAPI_E_INVALID_CLASS_INSTALLER                    _HRESULT_TYPEDEF_(0x800F020DL)
     2356#define SPAPI_E_DI_DO_DEFAULT                              _HRESULT_TYPEDEF_(0x800F020EL)
     2357#define SPAPI_E_DI_NOFILECOPY                              _HRESULT_TYPEDEF_(0x800F020FL)
     2358#define SPAPI_E_INVALID_HWPROFILE                          _HRESULT_TYPEDEF_(0x800F0210L)
     2359#define SPAPI_E_NO_DEVICE_SELECTED                         _HRESULT_TYPEDEF_(0x800F0211L)
     2360#define SPAPI_E_DEVINFO_LIST_LOCKED                        _HRESULT_TYPEDEF_(0x800F0212L)
     2361#define SPAPI_E_DEVINFO_DATA_LOCKED                        _HRESULT_TYPEDEF_(0x800F0213L)
     2362#define SPAPI_E_DI_BAD_PATH                                _HRESULT_TYPEDEF_(0x800F0214L)
     2363#define SPAPI_E_NO_CLASSINSTALL_PARAMS                     _HRESULT_TYPEDEF_(0x800F0215L)
     2364#define SPAPI_E_FILEQUEUE_LOCKED                           _HRESULT_TYPEDEF_(0x800F0216L)
     2365#define SPAPI_E_BAD_SERVICE_INSTALLSECT                    _HRESULT_TYPEDEF_(0x800F0217L)
     2366#define SPAPI_E_NO_CLASS_DRIVER_LIST                       _HRESULT_TYPEDEF_(0x800F0218L)
     2367#define SPAPI_E_NO_ASSOCIATED_SERVICE                      _HRESULT_TYPEDEF_(0x800F0219L)
     2368#define SPAPI_E_NO_DEFAULT_DEVICE_INTERFACE                _HRESULT_TYPEDEF_(0x800F021AL)
     2369#define SPAPI_E_DEVICE_INTERFACE_ACTIVE                    _HRESULT_TYPEDEF_(0x800F021BL)
     2370#define SPAPI_E_DEVICE_INTERFACE_REMOVED                   _HRESULT_TYPEDEF_(0x800F021CL)
     2371#define SPAPI_E_BAD_INTERFACE_INSTALLSECT                  _HRESULT_TYPEDEF_(0x800F021DL)
     2372#define SPAPI_E_NO_SUCH_INTERFACE_CLASS                    _HRESULT_TYPEDEF_(0x800F021EL)
     2373#define SPAPI_E_INVALID_REFERENCE_STRING                   _HRESULT_TYPEDEF_(0x800F021FL)
     2374#define SPAPI_E_INVALID_MACHINENAME                        _HRESULT_TYPEDEF_(0x800F0220L)
     2375#define SPAPI_E_REMOTE_COMM_FAILURE                        _HRESULT_TYPEDEF_(0x800F0221L)
     2376#define SPAPI_E_MACHINE_UNAVAILABLE                        _HRESULT_TYPEDEF_(0x800F0222L)
     2377#define SPAPI_E_NO_CONFIGMGR_SERVICES                      _HRESULT_TYPEDEF_(0x800F0223L)
     2378#define SPAPI_E_INVALID_PROPPAGE_PROVIDER                  _HRESULT_TYPEDEF_(0x800F0224L)
     2379#define SPAPI_E_NO_SUCH_DEVICE_INTERFACE                   _HRESULT_TYPEDEF_(0x800F0225L)
     2380#define SPAPI_E_DI_POSTPROCESSING_REQUIRED                 _HRESULT_TYPEDEF_(0x800F0226L)
     2381#define SPAPI_E_INVALID_COINSTALLER                        _HRESULT_TYPEDEF_(0x800F0227L)
     2382#define SPAPI_E_NO_COMPAT_DRIVERS                          _HRESULT_TYPEDEF_(0x800F0228L)
     2383#define SPAPI_E_NO_DEVICE_ICON                             _HRESULT_TYPEDEF_(0x800F0229L)
     2384#define SPAPI_E_INVALID_INF_LOGCONFIG                      _HRESULT_TYPEDEF_(0x800F022AL)
     2385#define SPAPI_E_DI_DONT_INSTALL                            _HRESULT_TYPEDEF_(0x800F022BL)
     2386#define SPAPI_E_INVALID_FILTER_DRIVER                      _HRESULT_TYPEDEF_(0x800F022CL)
     2387#define SPAPI_E_NON_WINDOWS_NT_DRIVER                      _HRESULT_TYPEDEF_(0x800F022DL)
     2388#define SPAPI_E_NON_WINDOWS_DRIVER                         _HRESULT_TYPEDEF_(0x800F022EL)
     2389#define SPAPI_E_NO_CATALOG_FOR_OEM_INF                     _HRESULT_TYPEDEF_(0x800F022FL)
     2390#define SPAPI_E_DEVINSTALL_QUEUE_NONNATIVE                 _HRESULT_TYPEDEF_(0x800F0230L)
     2391#define SPAPI_E_NOT_DISABLEABLE                            _HRESULT_TYPEDEF_(0x800F0231L)
     2392#define SPAPI_E_CANT_REMOVE_DEVINST                        _HRESULT_TYPEDEF_(0x800F0232L)
     2393#define SPAPI_E_INVALID_TARGET                             _HRESULT_TYPEDEF_(0x800F0233L)
     2394#define SPAPI_E_DRIVER_NONNATIVE                           _HRESULT_TYPEDEF_(0x800F0234L)
     2395#define SPAPI_E_IN_WOW64                                   _HRESULT_TYPEDEF_(0x800F0235L)
     2396#define SPAPI_E_SET_SYSTEM_RESTORE_POINT                   _HRESULT_TYPEDEF_(0x800F0236L)
     2397#define SPAPI_E_INCORRECTLY_COPIED_INF                     _HRESULT_TYPEDEF_(0x800F0237L)
     2398#define SPAPI_E_SCE_DISABLED                               _HRESULT_TYPEDEF_(0x800F0238L)
     2399#define SPAPI_E_ERROR_NOT_INSTALLED                        _HRESULT_TYPEDEF_(0x800F1000L)
     2400
     2401/* Smart card management error codes */
     2402#define SCARD_S_SUCCESS                                    NO_ERROR
     2403#define SCARD_F_INTERNAL_ERROR                             _HRESULT_TYPEDEF_(0x80100001L)
     2404#define SCARD_E_CANCELLED                                  _HRESULT_TYPEDEF_(0x80100002L)
     2405#define SCARD_E_INVALID_HANDLE                             _HRESULT_TYPEDEF_(0x80100003L)
     2406#define SCARD_E_INVALID_PARAMETER                          _HRESULT_TYPEDEF_(0x80100004L)
     2407#define SCARD_E_INVALID_TARGET                             _HRESULT_TYPEDEF_(0x80100005L)
     2408#define SCARD_E_NO_MEMORY                                  _HRESULT_TYPEDEF_(0x80100006L)
     2409#define SCARD_F_WAITED_TOO_LONG                            _HRESULT_TYPEDEF_(0x80100007L)
     2410#define SCARD_E_INSUFFICIENT_BUFFER                        _HRESULT_TYPEDEF_(0x80100008L)
     2411#define SCARD_E_UNKNOWN_READER                             _HRESULT_TYPEDEF_(0x80100009L)
     2412#define SCARD_E_TIMEOUT                                    _HRESULT_TYPEDEF_(0x8010000AL)
     2413#define SCARD_E_SHARING_VIOLATION                          _HRESULT_TYPEDEF_(0x8010000BL)
     2414#define SCARD_E_NO_SMARTCARD                               _HRESULT_TYPEDEF_(0x8010000CL)
     2415#define SCARD_E_UNKNOWN_CARD                               _HRESULT_TYPEDEF_(0x8010000DL)
     2416#define SCARD_E_CANT_DISPOSE                               _HRESULT_TYPEDEF_(0x8010000EL)
     2417#define SCARD_E_PROTO_MISMATCH                             _HRESULT_TYPEDEF_(0x8010000FL)
     2418#define SCARD_E_NOT_READY                                  _HRESULT_TYPEDEF_(0x80100010L)
     2419#define SCARD_E_INVALID_VALUE                              _HRESULT_TYPEDEF_(0x80100011L)
     2420#define SCARD_E_SYSTEM_CANCELLED                           _HRESULT_TYPEDEF_(0x80100012L)
     2421#define SCARD_F_COMM_ERROR                                 _HRESULT_TYPEDEF_(0x80100013L)
     2422#define SCARD_F_UNKNOWN_ERROR                              _HRESULT_TYPEDEF_(0x80100014L)
     2423#define SCARD_E_INVALID_ATR                                _HRESULT_TYPEDEF_(0x80100015L)
     2424#define SCARD_E_NOT_TRANSACTED                             _HRESULT_TYPEDEF_(0x80100016L)
     2425#define SCARD_E_READER_UNAVAILABLE                         _HRESULT_TYPEDEF_(0x80100017L)
     2426#define SCARD_P_SHUTDOWN                                   _HRESULT_TYPEDEF_(0x80100018L)
     2427#define SCARD_E_PCI_TOO_SMALL                              _HRESULT_TYPEDEF_(0x80100019L)
     2428#define SCARD_E_READER_UNSUPPORTED                         _HRESULT_TYPEDEF_(0x8010001AL)
     2429#define SCARD_E_DUPLICATE_READER                           _HRESULT_TYPEDEF_(0x8010001BL)
     2430#define SCARD_E_CARD_UNSUPPORTED                           _HRESULT_TYPEDEF_(0x8010001CL)
     2431#define SCARD_E_NO_SERVICE                                 _HRESULT_TYPEDEF_(0x8010001DL)
     2432#define SCARD_E_SERVICE_STOPPED                            _HRESULT_TYPEDEF_(0x8010001EL)
     2433#define SCARD_E_UNEXPECTED                                 _HRESULT_TYPEDEF_(0x8010001FL)
     2434#define SCARD_E_ICC_INSTALLATION                           _HRESULT_TYPEDEF_(0x80100020L)
     2435#define SCARD_E_ICC_CREATEORDER                            _HRESULT_TYPEDEF_(0x80100021L)
     2436#define SCARD_E_UNSUPPORTED_FEATURE                        _HRESULT_TYPEDEF_(0x80100022L)
     2437#define SCARD_E_DIR_NOT_FOUND                              _HRESULT_TYPEDEF_(0x80100023L)
     2438#define SCARD_E_FILE_NOT_FOUND                             _HRESULT_TYPEDEF_(0x80100024L)
     2439#define SCARD_E_NO_DIR                                     _HRESULT_TYPEDEF_(0x80100025L)
     2440#define SCARD_E_NO_FILE                                    _HRESULT_TYPEDEF_(0x80100026L)
     2441#define SCARD_E_NO_ACCESS                                  _HRESULT_TYPEDEF_(0x80100027L)
     2442#define SCARD_E_WRITE_TOO_MANY                             _HRESULT_TYPEDEF_(0x80100028L)
     2443#define SCARD_E_BAD_SEEK                                   _HRESULT_TYPEDEF_(0x80100029L)
     2444#define SCARD_E_INVALID_CHV                                _HRESULT_TYPEDEF_(0x8010002AL)
     2445#define SCARD_E_UNKNOWN_RES_MNG                            _HRESULT_TYPEDEF_(0x8010002BL)
     2446#define SCARD_E_NO_SUCH_CERTIFICATE                        _HRESULT_TYPEDEF_(0x8010002CL)
     2447#define SCARD_E_CERTIFICATE_UNAVAILABLE                    _HRESULT_TYPEDEF_(0x8010002DL)
     2448#define SCARD_E_NO_READERS_AVAILABLE                       _HRESULT_TYPEDEF_(0x8010002EL)
     2449#define SCARD_E_COMM_DATA_LOST                             _HRESULT_TYPEDEF_(0x8010002FL)
     2450#define SCARD_E_NO_KEY_CONTAINER                           _HRESULT_TYPEDEF_(0x80100030L)
     2451#define SCARD_E_SERVER_TOO_BUSY                            _HRESULT_TYPEDEF_(0x80100031L)
     2452#define SCARD_W_UNSUPPORTED_CARD                           _HRESULT_TYPEDEF_(0x80100065L)
     2453#define SCARD_W_UNRESPONSIVE_CARD                          _HRESULT_TYPEDEF_(0x80100066L)
     2454#define SCARD_W_UNPOWERED_CARD                             _HRESULT_TYPEDEF_(0x80100067L)
     2455#define SCARD_W_RESET_CARD                                 _HRESULT_TYPEDEF_(0x80100068L)
     2456#define SCARD_W_REMOVED_CARD                               _HRESULT_TYPEDEF_(0x80100069L)
     2457#define SCARD_W_SECURITY_VIOLATION                         _HRESULT_TYPEDEF_(0x8010006AL)
     2458#define SCARD_W_WRONG_CHV                                  _HRESULT_TYPEDEF_(0x8010006BL)
     2459#define SCARD_W_CHV_BLOCKED                                _HRESULT_TYPEDEF_(0x8010006CL)
     2460#define SCARD_W_EOF                                        _HRESULT_TYPEDEF_(0x8010006DL)
     2461#define SCARD_W_CANCELLED_BY_USER                          _HRESULT_TYPEDEF_(0x8010006EL)
     2462#define SCARD_W_CARD_NOT_AUTHENTICATED                     _HRESULT_TYPEDEF_(0x8010006FL)
     2463#define SCARD_W_CACHE_ITEM_NOT_FOUND                       _HRESULT_TYPEDEF_(0x80100070L)
     2464#define SCARD_W_CACHE_ITEM_STALE                           _HRESULT_TYPEDEF_(0x80100071L)
     2465#define SCARD_W_CACHE_ITEM_TOO_BIG                         _HRESULT_TYPEDEF_(0x80100072L)
     2466
     2467#define ERROR_AUDITING_DISABLED                            _HRESULT_TYPEDEF_(0xC0090001L)
     2468#define ERROR_ALL_SIDS_FILTERED                            _HRESULT_TYPEDEF_(0xC0090002L)
     2469
     2470/* Obtained from lcc-win32 include files */
     2471#define GDI_ERROR                       0xffffffff
     2472#define ERROR_UNKNOWN                                      99999
    15052473#define E_UNSPEC                                           E_FAIL
    1506 
    1507 
    1508 #define CO_E_INIT_TLS                                      0x80004006L
    1509 #define CO_E_INIT_SHARED_ALLOCATOR                         0x80004007L
    1510 #define CO_E_INIT_MEMORY_ALLOCATOR                         0x80004008L
    1511 #define CO_E_INIT_CLASS_CACHE                              0x80004009L
    1512 #define CO_E_INIT_RPC_CHANNEL                              0x8000400AL
    1513 #define CO_E_INIT_TLS_SET_CHANNEL_CONTROL                  0x8000400BL
    1514 #define CO_E_INIT_TLS_CHANNEL_CONTROL                      0x8000400CL
    1515 #define CO_E_INIT_UNACCEPTED_USER_ALLOCATOR                0x8000400DL
    1516 #define CO_E_INIT_SCM_MUTEX_EXISTS                         0x8000400EL
    1517 #define CO_E_INIT_SCM_FILE_MAPPING_EXISTS                  0x8000400FL
    1518 #define CO_E_INIT_SCM_MAP_VIEW_OF_FILE                     0x80004010L
    1519 #define CO_E_INIT_SCM_EXEC_FAILURE                         0x80004011L
    1520 #define CO_E_INIT_ONLY_SINGLE_THREADED                     0x80004012L
    1521 
    1522 #define E_UNEXPECTED                                       0x8000FFFFL
    1523 
    1524 #define RPC_E_CALL_REJECTED                                0x80010001L
    1525 #define RPC_E_CALL_CANCELED                                0x80010002L
    1526 #define RPC_E_CANTPOST_INSENDCALL                          0x80010003L
    1527 #define RPC_E_CANTCALLOUT_INASYNCCALL                      0x80010004L
    1528 #define RPC_E_CANTCALLOUT_INEXTERNALCALL                   0x80010005L
    1529 #define RPC_E_CONNECTION_TERMINATED                        0x80010006L
    1530 #define RPC_E_SERVER_DIED                                  0x80010007L
    1531 #define RPC_E_CLIENT_DIED                                  0x80010008L
    1532 #define RPC_E_INVALID_DATAPACKET                           0x80010009L
    1533 #define RPC_E_CANTTRANSMIT_CALL                            0x8001000AL
    1534 #define RPC_E_CLIENT_CANTMARSHAL_DATA                      0x8001000BL
    1535 #define RPC_E_CLIENT_CANTUNMARSHAL_DATA                    0x8001000CL
    1536 #define RPC_E_SERVER_CANTMARSHAL_DATA                      0x8001000DL
    1537 #define RPC_E_SERVER_CANTUNMARSHAL_DATA                    0x8001000EL
    1538 #define RPC_E_INVALID_DATA                                 0x8001000FL
    1539 #define RPC_E_INVALID_PARAMETER                            0x80010010L
    1540 #define RPC_E_CANTCALLOUT_AGAIN                            0x80010011L
    1541 #define RPC_E_SERVER_DIED_DNE                              0x80010012L
    1542 #define RPC_E_SYS_CALL_FAILED                              0x80010100L
    1543 #define RPC_E_OUT_OF_RESOURCES                             0x80010101L
    1544 #define RPC_E_ATTEMPTED_MULTITHREAD                        0x80010102L
    1545 #define RPC_E_NOT_REGISTERED                               0x80010103L
    1546 #define RPC_E_FAULT                                        0x80010104L
    1547 #define RPC_E_SERVERFAULT                                  0x80010105L
    1548 #define RPC_E_CHANGED_MODE                                 0x80010106L
    1549 #define RPC_E_INVALIDMETHOD                                0x80010107L
    1550 #define RPC_E_DISCONNECTED                                 0x80010108L
    1551 #define RPC_E_RETRY                                        0x80010109L
    1552 #define RPC_E_SERVERCALL_RETRYLATER                        0x8001010AL
    1553 #define RPC_E_SERVERCALL_REJECTED                          0x8001010BL
    1554 #define RPC_E_INVALID_CALLDATA                             0x8001010CL
    1555 #define RPC_E_CANTCALLOUT_ININPUTSYNCCALL                  0x8001010DL
    1556 #define RPC_E_WRONG_THREAD                                 0x8001010EL
    1557 #define RPC_E_THREAD_NOT_INIT                              0x8001010FL
    1558 #define RPC_E_VERSION_MISMATCH                             0x80010110L
    1559 #define RPC_E_INVALID_HEADER                               0x80010111L
    1560 #define RPC_E_INVALID_EXTENSION                            0x80010112L
    1561 #define RPC_E_INVALID_IPID                                 0x80010113L
    1562 #define RPC_E_INVALID_OBJECT                               0x80010114L
    1563 #define RPC_S_CALLPENDING                                  0x80010115L
    1564 #define RPC_S_WAITONTIMER                                  0x80010116L
    1565 #define RPC_E_CALL_COMPLETE                                0x80010117L
    1566 #define RPC_E_UNSECURE_CALL                                0x80010118L
    1567 #define RPC_E_TOO_LATE                                     0x80010119L
    1568 #define RPC_E_NO_GOOD_SECURITY_PACKAGES                    0x8001011AL
    1569 #define RPC_E_ACCESS_DENIED                                0x8001011BL
    1570 #define RPC_E_REMOTE_DISABLED                              0x8001011CL
    1571 #define RPC_E_INVALID_OBJREF                               0x8001011DL
    1572 #define RPC_E_NO_CONTEXT                                   0x8001011EL
    1573 #define RPC_E_TIMEOUT                                      0x8001011FL
    1574 #define RPC_E_NO_SYNC                                      0x80010120L
    1575 #define RPC_E_UNEXPECTED                                   0x8001FFFFL
    1576 
    1577 #define DISP_E_UNKNOWNINTERFACE                            0x80020001L
    1578 #define DISP_E_MEMBERNOTFOUND                              0x80020003L
    1579 #define DISP_E_PARAMNOTFOUND                               0x80020004L
    1580 #define DISP_E_TYPEMISMATCH                                0x80020005L
    1581 #define DISP_E_UNKNOWNNAME                                 0x80020006L
    1582 #define DISP_E_NONAMEDARGS                                 0x80020007L
    1583 #define DISP_E_BADVARTYPE                                  0x80020008L
    1584 #define DISP_E_EXCEPTION                                   0x80020009L
    1585 #define DISP_E_OVERFLOW                                    0x8002000AL
    1586 #define DISP_E_BADINDEX                                    0x8002000BL
    1587 #define DISP_E_UNKNOWNLCID                                 0x8002000CL
    1588 #define DISP_E_ARRAYISLOCKED                               0x8002000DL
    1589 #define DISP_E_BADPARAMCOUNT                               0x8002000EL
    1590 #define DISP_E_PARAMNOTOPTIONAL                            0x8002000FL
    1591 #define DISP_E_BADCALLEE                                   0x80020010L
    1592 #define DISP_E_NOTACOLLECTION                              0x80020011L
    1593 #define DISP_E_DIVBYZERO                                   0x80020012L
    1594 
    1595 #define TYPE_E_BUFFERTOOSMALL                              0x80028016L
    1596 #define TYPE_E_FIELDNOTFOUND                               0x80028017L
    1597 #define TYPE_E_INVDATAREAD                                 0x80028018L
    1598 #define TYPE_E_UNSUPFORMAT                                 0x80028019L
    1599 #define TYPE_E_REGISTRYACCESS                              0x8002801CL
    1600 #define TYPE_E_LIBNOTREGISTERED                            0x8002801DL
    1601 #define TYPE_E_UNDEFINEDTYPE                               0x80028027L
    1602 #define TYPE_E_QUALIFIEDNAMEDISALLOWED                     0x80028028L
    1603 #define TYPE_E_INVALIDSTATE                                0x80028029L
    1604 #define TYPE_E_WRONGTYPEKIND                               0x8002802AL
    1605 #define TYPE_E_ELEMENTNOTFOUND                             0x8002802BL
    1606 #define TYPE_E_AMBIGUOUSNAME                               0x8002802CL
    1607 #define TYPE_E_NAMECONFLICT                                0x8002802DL
    1608 #define TYPE_E_UNKNOWNLCID                                 0x8002802EL
    1609 #define TYPE_E_DLLFUNCTIONNOTFOUND                         0x8002802FL
    1610 #define TYPE_E_BADMODULEKIND                               0x800288BDL
    1611 #define TYPE_E_SIZETOOBIG                                  0x800288C5L
    1612 #define TYPE_E_DUPLICATEID                                 0x800288C6L
    1613 #define TYPE_E_INVALIDID                                   0x800288CFL
    1614 #define TYPE_E_TYPEMISMATCH                                0x80028CA0L
    1615 #define TYPE_E_OUTOFBOUNDS                                 0x80028CA1L
    1616 #define TYPE_E_IOERROR                                     0x80028CA2L
    1617 #define TYPE_E_CANTCREATETMPFILE                           0x80028CA3L
    1618 #define TYPE_E_CANTLOADLIBRARY                             0x80029C4AL
    1619 #define TYPE_E_INCONSISTENTPROPFUNCS                       0x80029C83L
    1620 #define TYPE_E_CIRCULARTYPE                                0x80029C84L
    1621 
    1622 #define STG_S_CONVERTED                                    0x00030200L
    1623 #define STG_S_BLOCK                                        0x00030201L
    1624 #define STG_S_RETRYNOW                                     0x00030202L
    1625 #define STG_S_MONITORING                                   0x00030203L
    1626 #define STG_S_MULTIPLEOPENS                                0x00030204L
    1627 #define STG_S_CONSOLIDATIONFAILED                          0x00030205L
    1628 #define STG_S_CANNOTCONSOLIDATE                            0x00030206L
    1629 
    1630 #define STG_E_INVALIDFUNCTION                              0x80030001L
    1631 #define STG_E_FILENOTFOUND                                 0x80030002L
    1632 #define STG_E_PATHNOTFOUND                                 0x80030003L
    1633 #define STG_E_TOOMANYOPENFILES                             0x80030004L
    1634 #define STG_E_ACCESSDENIED                                 0x80030005L
    1635 #define STG_E_INVALIDHANDLE                                0x80030006L
    1636 #define STG_E_INSUFFICIENTMEMORY                           0x80030008L
    1637 #define STG_E_INVALIDPOINTER                               0x80030009L
    1638 #define STG_E_NOMOREFILES                                  0x80030012L
    1639 #define STG_E_DISKISWRITEPROTECTED                         0x80030013L
    1640 #define STG_E_SEEKERROR                                    0x80030019L
    1641 #define STG_E_WRITEFAULT                                   0x8003001DL
    1642 #define STG_E_READFAULT                                    0x8003001EL
    1643 #define STG_E_SHAREVIOLATION                               0x80030020L
    1644 #define STG_E_LOCKVIOLATION                                0x80030021L
    1645 #define STG_E_FILEALREADYEXISTS                            0x80030050L
    1646 #define STG_E_INVALIDPARAMETER                             0x80030057L
    1647 #define STG_E_MEDIUMFULL                                   0x80030070L
    1648 #define STG_E_ABNORMALAPIEXIT                              0x800300FAL
    1649 #define STG_E_INVALIDHEADER                                0x800300FBL
    1650 #define STG_E_INVALIDNAME                                  0x800300FCL
    1651 #define STG_E_UNKNOWN                                      0x800300FDL
    1652 #define STG_E_UNIMPLEMENTEDFUNCTION                        0x800300FEL
    1653 #define STG_E_INVALIDFLAG                                  0x800300FFL
    1654 #define STG_E_INUSE                                        0x80030100L
    1655 #define STG_E_NOTCURRENT                                   0x80030101L
    1656 #define STG_E_REVERTED                                     0x80030102L
    1657 #define STG_E_CANTSAVE                                     0x80030103L
    1658 #define STG_E_OLDFORMAT                                    0x80030104L
    1659 #define STG_E_OLDDLL                                       0x80030105L
    1660 #define STG_E_SHAREREQUIRED                                0x80030106L
    1661 #define STG_E_NOTFILEBASEDSTORAGE                          0x80030107L
    1662 #define STG_E_EXTANTMARSHALLINGS                           0x80030108L
    1663 
    1664 #define STG_E_STATUS_COPY_PROTECTION_FAILURE               0x80030305L
    1665 #define STG_E_CSS_AUTHENTICATION_FAILURE                   0x80030306L
    1666 #define STG_E_CSS_KEY_NOT_PRESENT                          0x80030307L
    1667 #define STG_E_CSS_KEY_NOT_ESTABLISHED                      0x80030308L
    1668 #define STG_E_CSS_SCRAMBLED_SECTOR                         0x80030309L
    1669 #define STG_E_CSS_REGION_MISMATCH                          0x8003030AL
    1670 #define STG_E_RESETS_EXHAUSTED                             0x8003030BL
    1671 
    1672 #define OLE_S_FIRST                                        0x00040000L
    1673 #define OLE_S_USEREG                                       0x00040000L
    1674 #define OLE_S_STATIC                                       0x00040001L
    1675 #define OLE_S_MAC_CLIPFORMAT                               0x00040002L
    1676 #define OLE_S_LAST                                         0x000400FFL
    1677 
    1678 #define OLE_E_FIRST                                        0x80040000L
    1679 #define OLE_E_OLEVERB                                      0x80040000L
    1680 #define OLE_E_ADVF                                         0x80040001L
    1681 #define OLE_E_ENUM_NOMORE                                  0x80040002L
    1682 #define OLE_E_ADVISENOTSUPPORTED                           0x80040003L
    1683 #define OLE_E_NOCONNECTION                                 0x80040004L
    1684 #define OLE_E_NOTRUNNING                                   0x80040005L
    1685 #define OLE_E_NOCACHE                                      0x80040006L
    1686 #define OLE_E_BLANK                                        0x80040007L
    1687 #define OLE_E_CLASSDIFF                                    0x80040008L
    1688 #define OLE_E_CANT_GETMONIKER                              0x80040009L
    1689 #define OLE_E_CANT_BINDTOSOURCE                            0x8004000AL
    1690 #define OLE_E_STATIC                                       0x8004000BL
    1691 #define OLE_E_PROMPTSAVECANCELLED                          0x8004000CL
    1692 #define OLE_E_INVALIDRECT                                  0x8004000DL
    1693 #define OLE_E_WRONGCOMPOBJ                                 0x8004000EL
    1694 #define OLE_E_INVALIDHWND                                  0x8004000FL
    1695 #define OLE_E_NOT_INPLACEACTIVE                            0x80040010L
    1696 #define OLE_E_CANTCONVERT                                  0x80040011L
    1697 #define OLE_E_NOSTORAGE                                    0x80040012L
    1698 #define DV_E_FORMATETC                                     0x80040064L
    1699 #define DV_E_DVTARGETDEVICE                                0x80040065L
    1700 #define DV_E_STGMEDIUM                                     0x80040066L
    1701 #define DV_E_STATDATA                                      0x80040067L
    1702 #define DV_E_LINDEX                                        0x80040068L
    1703 #define DV_E_TYMED                                         0x80040069L
    1704 #define DV_E_CLIPFORMAT                                    0x8004006AL
    1705 #define DV_E_DVASPECT                                      0x8004006BL
    1706 #define DV_E_DVTARGETDEVICE_SIZE                           0x8004006CL
    1707 #define DV_E_NOIVIEWOBJECT                                 0x8004006DL
    1708 #define OLE_E_LAST                                         0x800400FFL
    1709 
    1710 #define DRAGDROP_S_FIRST                                   0x00040100L
    1711 #define DRAGDROP_S_DROP                                    0x00040100L
    1712 #define DRAGDROP_S_CANCEL                                  0x00040101L
    1713 #define DRAGDROP_S_USEDEFAULTCURSORS                       0x00040102L
    1714 #define DRAGDROP_S_LAST                                    0x0004010FL
    1715 
    1716 #define DRAGDROP_E_FIRST                                   0x80040100L
    1717 #define DRAGDROP_E_NOTREGISTERED                           0x80040100L
    1718 #define DRAGDROP_E_ALREADYREGISTERED                       0x80040101L
    1719 #define DRAGDROP_E_INVALIDHWND                             0x80040102L
    1720 #define DRAGDROP_E_LAST                                    0x8004010FL
    1721 
    1722 
    1723 #define CLASSFACTORY_S_FIRST                               0x00040110L
    1724 #define CLASSFACTORY_S_LAST                                0x0004011FL
    1725 
    1726 #define CLASSFACTORY_E_FIRST                               0x80040110L
    1727 #define CLASS_E_NOAGGREGATION                              0x80040110L
    1728 #define CLASS_E_CLASSNOTAVAILABLE                          0x80040111L
    1729 #define CLASS_E_NOTLICENSED                                0x80040112L
    1730 #define CLASSFACTORY_E_LAST                                0x8004011FL
    1731 
    1732 #define MARSHAL_S_FIRST                                    0x00040120L
    1733 #define MARSHAL_S_LAST                                     0x0004012FL
    1734 
    1735 #define MARSHAL_E_FIRST                                    0x80040120L
    1736 #define MARSHAL_E_LAST                                     0x8004012FL
    1737 
    1738 #define DATA_S_FIRST                                       0x00040130L
    1739 #define DATA_S_SAMEFORMATETC                               0x00040130L
    1740 #define DATA_S_LAST                                        0x0004013FL
    1741 
    1742 #define DATA_E_FIRST                                       0x80040130L
    1743 #define DATA_E_LAST                                        0x8004013FL
    1744 
    1745 #define VIEW_S_FIRST                                       0x00040140L
    1746 #define VIEW_S_ALREADY_FROZEN                              0x00040140L
    1747 #define VIEW_S_LAST                                        0x0004014FL
    1748 
    1749 #define VIEW_E_FIRST                                       0x80040140L
    1750 #define VIEW_E_DRAW                                        0x80040140L
    1751 #define VIEW_E_LAST                                        0x8004014FL
    1752 
    1753 #define REGDB_S_FIRST                                      0x00040150L
    1754 #define REGDB_S_LAST                                       0x0004015FL
    1755 
    1756 #define REGDB_E_FIRST                                      0x80040150L
    1757 #define REGDB_E_READREGDB                                  0x80040150L
    1758 #define REGDB_E_WRITEREGDB                                 0x80040151L
    1759 #define REGDB_E_KEYMISSING                                 0x80040152L
    1760 #define REGDB_E_INVALIDVALUE                               0x80040153L
    1761 #define REGDB_E_CLASSNOTREG                                0x80040154L
    1762 #define REGDB_E_IIDNOTREG                                  0x80040155L
    1763 #define REGDB_E_LAST                                       0x8004015FL
    1764 
    1765 #define CAT_E_FIRST                                        0x80040160L
    1766 #define CAT_E_CATIDNOEXIST                                 0x80040160L
    1767 #define CAT_E_NODESCRIPTION                                0x80040161L
    1768 #define CAT_E_LAST                                         0x80040161L
    1769 
    1770 #define CACHE_S_FIRST                                      0x00040170L
    1771 #define CACHE_S_FORMATETC_NOTSUPPORTED                     0x00040170L
    1772 #define CACHE_S_SAMECACHE                                  0x00040171L
    1773 #define CACHE_S_SOMECACHES_NOTUPDATED                      0x00040172L
    1774 #define CACHE_S_LAST                                       0x0004017FL
    1775 
    1776 #define CACHE_E_FIRST                                      0x80040170L
    1777 #define CACHE_E_NOCACHE_UPDATED                            0x80040170L
    1778 #define CACHE_E_LAST                                       0x8004017FL
    1779 
    1780 #define OLEOBJ_S_FIRST                                     0x00040180L
    1781 #define OLEOBJ_S_INVALIDVERB                               0x00040180L
    1782 #define OLEOBJ_S_CANNOT_DOVERB_NOW                         0x00040181L
    1783 #define OLEOBJ_S_INVALIDHWND                               0x00040182L
    1784 #define OLEOBJ_S_LAST                                      0x0004018FL
    1785 
    1786 #define OLEOBJ_E_FIRST                                     0x80040180L
    1787 #define OLEOBJ_E_NOVERBS                                   0x80040180L
    1788 #define OLEOBJ_E_INVALIDVERB                               0x80040181L
    1789 #define OLEOBJ_E_LAST                                      0x8004018FL
    1790 
    1791 #define CLIENTSITE_S_FIRST                                 0x00040190L
    1792 #define CLIENTSITE_S_LAST                                  0x0004019FL
    1793 
    1794 #define CLIENTSITE_E_FIRST                                 0x80040190L
    1795 #define CLIENTSITE_E_LAST                                  0x8004019FL
    1796 
    1797 #define INPLACE_S_FIRST                                    0x000401A0L
    1798 #define INPLACE_S_TRUNCATED                                0x000401A0L
    1799 #define INPLACE_S_LAST                                     0x000401AFL
    1800 
    1801 #define INPLACE_E_FIRST                                    0x800401A0L
    1802 #define INPLACE_E_NOTUNDOABLE                              0x800401A0L
    1803 #define INPLACE_E_NOTOOLSPACE                              0x800401A1L
    1804 #define INPLACE_E_LAST                                     0x800401AFL
    1805 
    1806 #define ENUM_S_FIRST                                       0x000401B0L
    1807 #define ENUM_S_LAST                                        0x000401BFL
    1808 
    1809 #define ENUM_E_FIRST                                       0x800401B0L
    1810 #define ENUM_E_LAST                                        0x800401BFL
    1811 
    1812 #define CONVERT10_S_FIRST                                  0x000401C0L
    1813 #define CONVERT10_S_NO_PRESENTATION                        0x000401C0L
    1814 #define CONVERT10_S_LAST                                   0x000401CFL
    1815 
    1816 #define CONVERT10_E_FIRST                                  0x800401C0L
    1817 #define CONVERT10_E_OLESTREAM_GET                          0x800401C0L
    1818 #define CONVERT10_E_OLESTREAM_PUT                          0x800401C1L
    1819 #define CONVERT10_E_OLESTREAM_FMT                          0x800401C2L
    1820 #define CONVERT10_E_OLESTREAM_BITMAP_TO_DIB                0x800401C3L
    1821 #define CONVERT10_E_STG_FMT                                0x800401C4L
    1822 #define CONVERT10_E_STG_NO_STD_STREAM                      0x800401C5L
    1823 #define CONVERT10_E_STG_DIB_TO_BITMAP                      0x800401C6L
    1824 #define CONVERT10_E_LAST                                   0x800401CFL
    1825 
    1826 #define CLIPBRD_S_FIRST                                    0x000401D0L
    1827 #define CLIPBRD_S_LAST                                     0x000401DFL
    1828 
    1829 #define CLIPBRD_E_FIRST                                    0x800401D0L
    1830 #define CLIPBRD_E_LAST                                     0x800401DFL
    1831 #define CLIPBRD_E_CANT_OPEN                                0x800401D0L
    1832 #define CLIPBRD_E_CANT_EMPTY                               0x800401D1L
    1833 #define CLIPBRD_E_CANT_SET                                 0x800401D2L
    1834 #define CLIPBRD_E_BAD_DATA                                 0x800401D3L
    1835 #define CLIPBRD_E_CANT_CLOSE                               0x800401D4L
    1836 
    1837 #define MK_S_FIRST                                         0x000401E0L
    1838 #define MK_S_REDUCED_TO_SELF                               0x000401E2L
    1839 #define MK_S_ME                                            0x000401E4L
    1840 #define MK_S_HIM                                           0x000401E5L
    1841 #define MK_S_US                                            0x000401E6L
    1842 #define MK_S_MONIKERALREADYREGISTERED                      0x000401E7L
    1843 #define MK_S_LAST                                          0x000401EFL
    1844 
    1845 #define MK_E_FIRST                                         0x800401E0L
    1846 #define MK_E_CONNECTMANUALLY                               0x800401E0L
    1847 #define MK_E_EXCEEDEDDEADLINE                              0x800401E1L
    1848 #define MK_E_NEEDGENERIC                                   0x800401E2L
    1849 #define MK_E_UNAVAILABLE                                   0x800401E3L
    1850 #define MK_E_SYNTAX                                        0x800401E4L
    1851 #define MK_E_NOOBJECT                                      0x800401E5L
    1852 #define MK_E_INVALIDEXTENSION                              0x800401E6L
    1853 #define MK_E_INTERMEDIATEINTERFACENOTSUPPORTED             0x800401E7L
    1854 #define MK_E_NOTBINDABLE                                   0x800401E8L
    1855 #define MK_E_NOTBOUND                                      0x800401E9L
    1856 #define MK_E_CANTOPENFILE                                  0x800401EAL
    1857 #define MK_E_MUSTBOTHERUSER                                0x800401EBL
    1858 #define MK_E_NOINVERSE                                     0x800401ECL
    1859 #define MK_E_NOSTORAGE                                     0x800401EDL
    1860 #define MK_E_NOPREFIX                                      0x800401EEL
    1861 #define MK_E_ENUMERATION_FAILED                            0x800401EFL
    1862 #define MK_E_LAST                                          0x800401EFL
    1863 
    1864 #define CO_S_FIRST                                         0x000401F0L
    1865 #define CO_S_LAST                                          0x000401FFL
    1866 
    1867 #define CO_E_FIRST                                         0x800401F0L
    1868 #define CO_E_NOTINITIALIZED                                0x800401F0L
    1869 #define CO_E_ALREADYINITIALIZED                            0x800401F1L
    1870 #define CO_E_CANTDETERMINECLASS                            0x800401F2L
    1871 #define CO_E_CLASSSTRING                                   0x800401F3L
    1872 #define CO_E_IIDSTRING                                     0x800401F4L
    1873 #define CO_E_APPNOTFOUND                                   0x800401F5L
    1874 #define CO_E_APPSINGLEUSE                                  0x800401F6L
    1875 #define CO_E_ERRORINAPP                                    0x800401F7L
    1876 #define CO_E_DLLNOTFOUND                                   0x800401F8L
    1877 #define CO_E_ERRORINDLL                                    0x800401F9L
    1878 #define CO_E_WRONGOSFORAPP                                 0x800401FAL
    1879 #define CO_E_OBJNOTREG                                     0x800401FBL
    1880 #define CO_E_OBJISREG                                      0x800401FCL
    1881 #define CO_E_OBJNOTCONNECTED                               0x800401FDL
    1882 #define CO_E_APPDIDNTREG                                   0x800401FEL
    1883 #define CO_E_RELEASED                                      0x800401FFL
    1884 #define CO_E_LAST                                          0x800401FFL
    1885 #define CO_E_FAILEDTOIMPERSONATE                           0x80040200L
    1886 #define CO_E_FAILEDTOGETSECCTX                             0x80040201L
    1887 #define CO_E_FAILEDTOOPENTHREADTOKEN                       0x80040202L
    1888 #define CO_E_FAILEDTOGETTOKENINFO                          0x80040203L
    1889 #define CO_E_TRUSTEEDOESNTMATCHCLIENT                      0x80040204L
    1890 #define CO_E_FAILEDTOQUERYCLIENTBLANKET                    0x80040205L
    1891 #define CO_E_FAILEDTOSETDACL                               0x80040206L
    1892 #define CO_E_ACCESSCHECKFAILED                             0x80040207L
    1893 #define CO_E_NETACCESSAPIFAILED                            0x80040208L
    1894 #define CO_E_WRONGTRUSTEENAMESYNTAX                        0x80040209L
    1895 #define CO_E_INVALIDSID                                    0x8004020AL
    1896 #define CO_E_CONVERSIONFAILED                              0x8004020BL
    1897 #define CO_E_NOMATCHINGSIDFOUND                            0x8004020CL
    1898 #define CO_E_LOOKUPACCSIDFAILED                            0x8004020DL
    1899 #define CO_E_NOMATCHINGNAMEFOUND                           0x8004020EL
    1900 #define CO_E_LOOKUPACCNAMEFAILED                           0x8004020FL
    1901 #define CO_E_SETSERLHNDLFAILED                             0x80040210L
    1902 #define CO_E_FAILEDTOGETWINDIR                             0x80040211L
    1903 #define CO_E_PATHTOOLONG                                   0x80040212L
    1904 #define CO_E_FAILEDTOGENUUID                               0x80040213L
    1905 #define CO_E_FAILEDTOCREATEFILE                            0x80040214L
    1906 #define CO_E_FAILEDTOCLOSEHANDLE                           0x80040215L
    1907 #define CO_E_EXCEEDSYSACLLIMIT                             0x80040216L
    1908 #define CO_E_ACESINWRONGORDER                              0x80040217L
    1909 #define CO_E_INCOMPATIBLESTREAMVERSION                     0x80040218L
    1910 #define CO_E_FAILEDTOOPENPROCESSTOKEN                      0x80040219L
    1911 #define CO_E_DECODEFAILED                                  0x8004021AL
    1912 #define CO_E_ACNOTINITIALIZED                              0x8004021BL
    1913 
    1914 #define E_ACCESSDENIED                                     0x80070005L
    1915 #define E_HANDLE                                           0x80070006L
    1916 #define E_OUTOFMEMORY                                      0x8007000EL
    1917 #define E_INVALIDARG                                       0x80070057L
    1918 
    1919 /* For IKsPropertySets */
    1920 #define E_PROP_ID_UNSUPPORTED                              0x80070490L
    1921 #define E_PROP_SET_UNSUPPORTED                             0x80070492L
    1922 
    1923 #define CO_S_NOTALLINTERFACES                              0x00080012L
    1924 
    1925 #define CO_E_CLASS_CREATE_FAILED                           0x80080001L
    1926 #define CO_E_SCM_ERROR                                     0x80080002L
    1927 #define CO_E_SCM_RPC_FAILURE                               0x80080003L
    1928 #define CO_E_BAD_PATH                                      0x80080004L
    1929 #define CO_E_SERVER_EXEC_FAILURE                           0x80080005L
    1930 #define CO_E_OBJSRV_RPC_FAILURE                            0x80080006L
    1931 #define MK_E_NO_NORMALIZED                                 0x80080007L
    1932 #define CO_E_SERVER_STOPPING                               0x80080008L
    1933 #define MEM_E_INVALID_ROOT                                 0x80080009L
    1934 #define MEM_E_INVALID_LINK                                 0x80080010L
    1935 #define MEM_E_INVALID_SIZE                                 0x80080011L
    1936 
    1937 /*Cryptographic Error Codes */
    1938 #define NTE_BAD_UID                                        0x80090001L
    1939 #define NTE_BAD_HASH                                       0x80090002L
    1940 #define NTE_BAD_KEY                                        0x80090003L
    1941 #define NTE_BAD_LEN                                        0x80090004L
    1942 #define NTE_BAD_DATA                                       0x80090005L
    1943 #define NTE_BAD_SIGNATURE                                  0x80090006L
    1944 #define NTE_BAD_VER                                        0x80090007L
    1945 #define NTE_BAD_ALGID                                      0x80090008L
    1946 #define NTE_BAD_FLAGS                                      0x80090009L
    1947 #define NTE_BAD_TYPE                                       0x8009000AL
    1948 #define NTE_BAD_KEY_STATE                                  0x8009000BL
    1949 #define NTE_BAD_HASH_STATE                                 0x8009000CL
    1950 #define NTE_NO_KEY                                         0x8009000DL
    1951 #define NTE_NO_MEMORY                                      0x8009000EL
    1952 #define NTE_EXISTS                                         0x8009000FL
    1953 #define NTE_PERM                                           0x80090010L
    1954 #define NTE_NOT_FOUND                                      0x80090011L
    1955 #define NTE_DOUBLE_ENCRYPT                                 0x80090012L
    1956 #define NTE_BAD_PROVIDER                                   0x80090013L
    1957 #define NTE_BAD_PROV_TYPE                                  0x80090014L
    1958 #define NTE_BAD_PUBLIC_KEY                                 0x80090015L
    1959 #define NTE_BAD_KEYSET                                     0x80090016L
    1960 #define NTE_PROV_TYPE_NOT_DEF                              0x80090017L
    1961 #define NTE_PROV_TYPE_ENTRY_BAD                            0x80090018L
    1962 #define NTE_KEYSET_NOT_DEF                                 0x80090019L
    1963 #define NTE_KEYSET_ENTRY_BAD                               0x8009001AL
    1964 #define NTE_PROV_TYPE_NO_MATCH                             0x8009001BL
    1965 #define NTE_SIGNATURE_FILE_BAD                             0x8009001CL
    1966 #define NTE_PROVIDER_DLL_FAIL                              0x8009001DL
    1967 #define NTE_PROV_DLL_NOT_FOUND                             0x8009001EL
    1968 #define NTE_BAD_KEYSET_PARAM                               0x8009001FL
    1969 #define NTE_FAIL                                           0x80090020L
    1970 #define NTE_SYS_ERR                                        0x80090021L
    1971 #define NTE_OP_OK                                          0
    1972 
    1973 #define SEC_E_INSUFFICIENT_MEMORY                          0x80090300L
    1974 #define SEC_E_INVALID_HANDLE                               0x80090301L
    1975 #define SEC_E_UNSUPPORTED_FUNCTION                         0x80090302L
    1976 #define SEC_E_TARGET_UNKNOWN                               0x80090303L
    1977 #define SEC_E_INTERNAL_ERROR                               0x80090304L
    1978 #define SEC_E_SECPKG_NOT_FOUND                             0x80090305L
    1979 #define SEC_E_NOT_OWNER                                    0x80090306L
    1980 #define SEC_E_CANNOT_INSTALL                               0x80090307L
    1981 #define SEC_E_INVALID_TOKEN                                0x80090308L
    1982 #define SEC_E_CANNOT_PACK                                  0x80090309L
    1983 #define SEC_E_QOP_NOT_SUPPORTED                            0x8009030AL
    1984 #define SEC_E_NO_IMPERSONATION                             0x8009030BL
    1985 #define SEC_E_LOGON_DENIED                                 0x8009030CL
    1986 #define SEC_E_UNKNOWN_CREDENTIALS                          0x8009030DL
    1987 #define SEC_E_NO_CREDENTIALS                               0x8009030EL
    1988 #define SEC_E_MESSAGE_ALTERED                              0x8009030FL
    1989 #define SEC_E_OUT_OF_SEQUENCE                              0x80090310L
    1990 #define SEC_E_NO_AUTHENTICATING_AUTHORITY                  0x80090311L
    1991 #define SEC_E_BAD_PKGID                                    0x80090316L
    1992 #define SEC_E_CONTEXT_EXPIRED                              0x80090317L
    1993 #define SEC_E_INCOMPLETE_MESSAGE                           0x80090318L
    1994 #define SEC_E_INCOMPLETE_CREDENTIALS                       0x80090320L
    1995 #define SEC_E_BUFFER_TOO_SMALL                             0x80090321L
    1996 #define SEC_E_WRONG_PRINCIPAL                              0x80090322L
    1997 #define SEC_E_UNTRUSTED_ROOT                               0x80090325L
    1998 #define SEC_E_ILLEGAL_MESSAGE                              0x80090326L
    1999 #define SEC_E_CERT_UNKNOWN                                 0x80090327L
    2000 #define SEC_E_CERT_EXPIRED                                 0x80090328L
    2001 #define SEC_E_ENCRYPT_FAILURE                              0x80090329L
    2002 #define SEC_E_DECRYPT_FAILURE                              0x80090330L
    2003 #define SEC_E_ALGORITHM_MISMATCH                           0x80090331L
    2004 #define SEC_E_UNFINISHED_CONTEXT_DELETED                   0x80090333L
    2005 #define SEC_E_NO_TGT_REPLY                                 0x80090334L
    2006 #define SEC_E_NO_IP_ADDRESSES                              0x80090335L
    2007 #define SEC_E_WRONG_CREDENTIAL_HANDLE                      0x80090336L
    2008 #define SEC_E_CRYPTO_SYSTEM_INVALID                        0x80090337L
    2009 #define SEC_E_MAX_REFERRALS_EXCEEDED                       0x80090338L
    2010 #define SEC_E_MUST_BE_KDC                                  0x80090339L
    2011 #define SEC_E_STRONG_CRYPTO_NOT_SUPPORTED                  0x8009033AL
    2012 #define SEC_E_TOO_MANY_PRINCIPALS                          0x8009033BL
    2013 #define SEC_E_NO_PA_DATA                                   0x8009033CL
    2014 #define SEC_E_PKINIT_NAME_MISMATCH                         0x8009033DL
    2015 #define SEC_E_SMARTCARD_LOGON_REQUIRED                     0x8009033EL
    2016 #define SEC_E_KDC_INVALID_REQUEST                          0x80090340L
    2017 #define SEC_E_KDC_UNABLE_TO_REFER                          0x80090341L
    2018 #define SEC_E_KDC_UNKNOWN_ETYPE                            0x80090342L
    2019 #define SEC_E_UNSUPPORTED_PREAUTH                          0x80090343L
    2020 #define SEC_E_BAD_BINDINGS                                 0x80090346L
    2021 #define SEC_E_MULTIPLE_ACCOUNTS                            0x80090347L
    2022 #define SEC_E_NO_KERB_KEY                                  0x80090348L
    2023 
    2024 #define CRYPT_E_REVOKED                                    0x80092010L
    2025 #define CRYPT_E_NO_REVOCATION_CHECK                        0x80092012L
    2026 #define CRYPT_E_REVOCATION_OFFLINE                         0x80092013L
    2027 #define TRUST_E_CERT_SIGNATURE                             0x80096004L
    2028 
    2029 /* Smart card management error codes */
    2030 #define SCARD_E_NO_SMARTCARD                               0x8010000CL
    2031 #define SCARD_E_NO_SUCH_CERTIFICATE                        0x8010002CL
    2032 #define SCARD_E_COMM_DATA_LOST                             0x8010002FL
    2033 
    2034 #define SCARD_W_WRONG_CHV                                  0x8010006BL
    2035 #define SCARD_W_CHV_BLOCKED                                0x8010006CL
    2036 #define SCARD_W_CARD_NOT_AUTHENTICATED                     0x8010006FL
    2037 
    2038 /* Obtained from lcc-win32 include files */
    2039 #define GDI_ERROR                       0xffffffff
    2040 
    20412474#endif  /* __WINE_WINERROR_H */
  • trunk/include/win/winreg.h

    r9973 r21314  
    7373#define KEY_NOTIFY              0x00000010
    7474#define KEY_CREATE_LINK         0x00000020
     75
     76/*
     77 * RegGetValue() restrictions
     78 */
     79
     80#define RRF_RT_REG_NONE         (1 << 0)
     81#define RRF_RT_REG_SZ           (1 << 1)
     82#define RRF_RT_REG_EXPAND_SZ    (1 << 2)
     83#define RRF_RT_REG_BINARY       (1 << 3)
     84#define RRF_RT_REG_DWORD        (1 << 4)
     85#define RRF_RT_REG_MULTI_SZ     (1 << 5)
     86#define RRF_RT_REG_QWORD        (1 << 6)
     87#define RRF_RT_DWORD            (RRF_RT_REG_BINARY | RRF_RT_REG_DWORD)
     88#define RRF_RT_QWORD            (RRF_RT_REG_BINARY | RRF_RT_REG_QWORD)
     89#define RRF_RT_ANY              0xffff
     90#define RRF_NOEXPAND            (1 << 28)
     91#define RRF_ZEROONFAILURE       (1 << 29)
    7592
    7693#define KEY_READ                (STANDARD_RIGHTS_READ|  \
     
    205222#define     RegQueryMultipleValues WINELIB_NAME_AW(RegQueryMultipleValues)
    206223
     224typedef LONG LSTATUS;
     225
    207226#endif  /* __WINE_WINREG_H */
  • trunk/include/win/winternl.h

    r9399 r21314  
    44#include <ntddk.h>
    55
     6#define InitializeObjectAttributes(p,n,a,r,s) \
     7    do { \
     8        (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
     9        (p)->RootDirectory = r; \
     10        (p)->Attributes = a; \
     11        (p)->ObjectName = n; \
     12        (p)->SecurityDescriptor = s; \
     13        (p)->SecurityQualityOfService = NULL; \
     14    } while (0)
     15
     16
    617
    718#endif /* __WINE_WINTERNL_H__ */
  • trunk/include/win/winuser.h

    r21301 r21314  
    32973297
    32983298#define DEVICE_NOTIFY_WINDOW_HANDLE     0x00000000
     3299
     3300/* used for GetWindowInfo() */
     3301
     3302#define WS_ACTIVECAPTION    0x0001
     3303
     3304typedef struct tagWINDOWINFO {
     3305    DWORD cbSize;
     3306    RECT  rcWindow;
     3307    RECT  rcClient;
     3308    DWORD dwStyle;
     3309    DWORD dwExStyle;
     3310    DWORD dwWindowStatus;
     3311    UINT  cxWindowBorders;
     3312    UINT  cyWindowBorders;
     3313    ATOM  atomWindowType;
     3314    WORD  wCreatorVersion;
     3315} WINDOWINFO, *PWINDOWINFO, *LPWINDOWINFO;
     3316
    32993317
    33003318#include "poppack.h"
Note: See TracChangeset for help on using the changeset viewer.