Home | History | Annotate | Download | only in include
      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 #ifndef _INC_CERTENROLL
      7 #define _INC_CERTENROLL
      8 
      9 #if (_WIN32_WINNT >= 0x0600)
     10 #ifdef __cplusplus
     11 extern "C" {
     12 #endif
     13 
     14   typedef enum AlgorithmFlags {
     15     AlgorithmFlagsNone   = 0x00000000,
     16     AlgorithmFlagsWrap   = 0x00000001
     17   } AlgorithmFlags;
     18 
     19   typedef enum AlgorithmOperationFlags {
     20     XCN_NCRYPT_NO_OPERATION                      = 0,
     21     XCN_NCRYPT_CIPHER_OPERATION                  = 0x1,
     22     XCN_NCRYPT_HASH_OPERATION                    = 0x2,
     23     XCN_NCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION   = 0x4,
     24     XCN_NCRYPT_SECRET_AGREEMENT_OPERATION        = 0x8,
     25     XCN_NCRYPT_SIGNATURE_OPERATION               = 0x10,
     26     XCN_NCRYPT_RNG_OPERATION                     = 0x20,
     27     XCN_NCRYPT_ANY_ASYMMETRIC_OPERATION          = ( ( 0x4 | 0x8 )  | 0x10 ),
     28     XCN_NCRYPT_PREFER_SIGNATURE_ONLY_OPERATION   = 0x00200000,
     29     XCN_NCRYPT_PREFER_NON_SIGNATURE_OPERATION    = 0x00400000,
     30     XCN_NCRYPT_EXACT_MATCH_OPERATION             = 0x00800000,
     31     XCN_NCRYPT_PREFERENCE_MASK_OPERATION         = 0x00e00000
     32   } AlgorithmOperationFlags;
     33 
     34   typedef enum AlgorithmType {
     35     XCN_BCRYPT_UNKNOWN_INTERFACE                 = 0,
     36     XCN_BCRYPT_SIGNATURE_INTERFACE               = 0x5,
     37     XCN_BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE   = 0x3,
     38     XCN_BCRYPT_CIPHER_INTERFACE                  = 0x1,
     39     XCN_BCRYPT_HASH_INTERFACE                    = 0x2,
     40     XCN_BCRYPT_SECRET_AGREEMENT_INTERFACE        = 0x4,
     41     XCN_BCRYPT_RNG_INTERFACE                     = 0x6
     42   } AlgorithmType;
     43 
     44   typedef enum AlternativeNameType {
     45     XCN_CERT_ALT_NAME_UNKNOWN               = 0,
     46     XCN_CERT_ALT_NAME_OTHER_NAME            = 1,
     47     XCN_CERT_ALT_NAME_RFC822_NAME           = 2,
     48     XCN_CERT_ALT_NAME_DNS_NAME              = 3,
     49     XCN_CERT_ALT_NAME_DIRECTORY_NAME        = 5,
     50     XCN_CERT_ALT_NAME_URL                   = 7,
     51     XCN_CERT_ALT_NAME_IP_ADDRESS            = 8,
     52     XCN_CERT_ALT_NAME_REGISTERED_ID         = 9,
     53     XCN_CERT_ALT_NAME_GUID                  = 10,
     54     XCN_CERT_ALT_NAME_USER_PRINCIPLE_NAME   = 11
     55   } AlternativeNameType;
     56 
     57   typedef enum CERTENROLL_PROPERTYID {
     58     XCN_PROPERTYID_NONE                              = 0,
     59     XCN_CERT_KEY_PROV_HANDLE_PROP_ID                 = 1,
     60     XCN_CERT_KEY_PROV_INFO_PROP_ID                   = 2,
     61     XCN_CERT_SHA1_HASH_PROP_ID                       = 3,
     62     XCN_CERT_MD5_HASH_PROP_ID                        = 4,
     63     XCN_CERT_HASH_PROP_ID                            = 3,
     64     XCN_CERT_KEY_CONTEXT_PROP_ID                     = 5,
     65     XCN_CERT_KEY_SPEC_PROP_ID                        = 6,
     66     XCN_CERT_IE30_RESERVED_PROP_ID                   = 7,
     67     XCN_CERT_PUBKEY_HASH_RESERVED_PROP_ID            = 8,
     68     XCN_CERT_ENHKEY_USAGE_PROP_ID                    = 9,
     69     XCN_CERT_CTL_USAGE_PROP_ID                       = 9,
     70     XCN_CERT_NEXT_UPDATE_LOCATION_PROP_ID            = 10,
     71     XCN_CERT_FRIENDLY_NAME_PROP_ID                   = 11,
     72     XCN_CERT_PVK_FILE_PROP_ID                        = 12,
     73     XCN_CERT_DESCRIPTION_PROP_ID                     = 13,
     74     XCN_CERT_ACCESS_STATE_PROP_ID                    = 14,
     75     XCN_CERT_SIGNATURE_HASH_PROP_ID                  = 15,
     76     XCN_CERT_SMART_CARD_DATA_PROP_ID                 = 16,
     77     XCN_CERT_EFS_PROP_ID                             = 17,
     78     XCN_CERT_FORTEZZA_DATA_PROP_ID                   = 18,
     79     XCN_CERT_ARCHIVED_PROP_ID                        = 19,
     80     XCN_CERT_KEY_IDENTIFIER_PROP_ID                  = 20,
     81     XCN_CERT_AUTO_ENROLL_PROP_ID                     = 21,
     82     XCN_CERT_PUBKEY_ALG_PARA_PROP_ID                 = 22,
     83     XCN_CERT_CROSS_CERT_DIST_POINTS_PROP_ID          = 23,
     84     XCN_CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID      = 24,
     85     XCN_CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID     = 25,
     86     XCN_CERT_ENROLLMENT_PROP_ID                      = 26,
     87     XCN_CERT_DATE_STAMP_PROP_ID                      = 27,
     88     XCN_CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID   = 28,
     89     XCN_CERT_SUBJECT_NAME_MD5_HASH_PROP_ID           = 29,
     90     XCN_CERT_EXTENDED_ERROR_INFO_PROP_ID             = 30,
     91     XCN_CERT_RENEWAL_PROP_ID                         = 64,
     92     XCN_CERT_ARCHIVED_KEY_HASH_PROP_ID               = 65,
     93     XCN_CERT_AUTO_ENROLL_RETRY_PROP_ID               = 66,
     94     XCN_CERT_AIA_URL_RETRIEVED_PROP_ID               = 67,
     95     XCN_CERT_AUTHORITY_INFO_ACCESS_PROP_ID           = 68,
     96     XCN_CERT_BACKED_UP_PROP_ID                       = 69,
     97     XCN_CERT_OCSP_RESPONSE_PROP_ID                   = 70,
     98     XCN_CERT_REQUEST_ORIGINATOR_PROP_ID              = 71,
     99     XCN_CERT_SOURCE_LOCATION_PROP_ID                 = 72,
    100     XCN_CERT_SOURCE_URL_PROP_ID                      = 73,
    101     XCN_CERT_NEW_KEY_PROP_ID                         = 74,
    102     XCN_CERT_FIRST_RESERVED_PROP_ID                  = 87,
    103     XCN_CERT_LAST_RESERVED_PROP_ID                   = 0x7fff,
    104     XCN_CERT_FIRST_USER_PROP_ID                      = 0x8000,
    105     XCN_CERT_LAST_USER_PROP_ID                       = 0xffff,
    106     XCN_CERT_STORE_LOCALIZED_NAME_PROP_ID            = 0x1000,
    107     XCN_CERT_CEP_PROP_ID                             = 87
    108   } CERTENROLL_PROPERTYID;
    109 
    110   typedef enum CERTENROLL_OBJECTID {
    111     XCN_OID_NONE                                         = 0,
    112     XCN_OID_RSA                                          = 1,
    113     XCN_OID_PKCS                                         = 2,
    114     XCN_OID_RSA_HASH                                     = 3,
    115     XCN_OID_RSA_ENCRYPT                                  = 4,
    116     XCN_OID_PKCS_1                                       = 5,
    117     XCN_OID_PKCS_2                                       = 6,
    118     XCN_OID_PKCS_3                                       = 7,
    119     XCN_OID_PKCS_4                                       = 8,
    120     XCN_OID_PKCS_5                                       = 9,
    121     XCN_OID_PKCS_6                                       = 10,
    122     XCN_OID_PKCS_7                                       = 11,
    123     XCN_OID_PKCS_8                                       = 12,
    124     XCN_OID_PKCS_9                                       = 13,
    125     XCN_OID_PKCS_10                                      = 14,
    126     XCN_OID_PKCS_12                                      = 15,
    127     XCN_OID_RSA_RSA                                      = 16,
    128     XCN_OID_RSA_MD2RSA                                   = 17,
    129     XCN_OID_RSA_MD4RSA                                   = 18,
    130     XCN_OID_RSA_MD5RSA                                   = 19,
    131     XCN_OID_RSA_SHA1RSA                                  = 20,
    132     XCN_OID_RSA_SETOAEP_RSA                              = 21,
    133     XCN_OID_RSA_DH                                       = 22,
    134     XCN_OID_RSA_data                                     = 23,
    135     XCN_OID_RSA_signedData                               = 24,
    136     XCN_OID_RSA_envelopedData                            = 25,
    137     XCN_OID_RSA_signEnvData                              = 26,
    138     XCN_OID_RSA_digestedData                             = 27,
    139     XCN_OID_RSA_hashedData                               = 28,
    140     XCN_OID_RSA_encryptedData                            = 29,
    141     XCN_OID_RSA_emailAddr                                = 30,
    142     XCN_OID_RSA_unstructName                             = 31,
    143     XCN_OID_RSA_contentType                              = 32,
    144     XCN_OID_RSA_messageDigest                            = 33,
    145     XCN_OID_RSA_signingTime                              = 34,
    146     XCN_OID_RSA_counterSign                              = 35,
    147     XCN_OID_RSA_challengePwd                             = 36,
    148     XCN_OID_RSA_unstructAddr                             = 37,
    149     XCN_OID_RSA_extCertAttrs                             = 38,
    150     XCN_OID_RSA_certExtensions                           = 39,
    151     XCN_OID_RSA_SMIMECapabilities                        = 40,
    152     XCN_OID_RSA_preferSignedData                         = 41,
    153     XCN_OID_RSA_SMIMEalg                                 = 42,
    154     XCN_OID_RSA_SMIMEalgESDH                             = 43,
    155     XCN_OID_RSA_SMIMEalgCMS3DESwrap                      = 44,
    156     XCN_OID_RSA_SMIMEalgCMSRC2wrap                       = 45,
    157     XCN_OID_RSA_MD2                                      = 46,
    158     XCN_OID_RSA_MD4                                      = 47,
    159     XCN_OID_RSA_MD5                                      = 48,
    160     XCN_OID_RSA_RC2CBC                                   = 49,
    161     XCN_OID_RSA_RC4                                      = 50,
    162     XCN_OID_RSA_DES_EDE3_CBC                             = 51,
    163     XCN_OID_RSA_RC5_CBCPad                               = 52,
    164     XCN_OID_ANSI_X942                                    = 53,
    165     XCN_OID_ANSI_X942_DH                                 = 54,
    166     XCN_OID_X957                                         = 55,
    167     XCN_OID_X957_DSA                                     = 56,
    168     XCN_OID_X957_SHA1DSA                                 = 57,
    169     XCN_OID_DS                                           = 58,
    170     XCN_OID_DSALG                                        = 59,
    171     XCN_OID_DSALG_CRPT                                   = 60,
    172     XCN_OID_DSALG_HASH                                   = 61,
    173     XCN_OID_DSALG_SIGN                                   = 62,
    174     XCN_OID_DSALG_RSA                                    = 63,
    175     XCN_OID_OIW                                          = 64,
    176     XCN_OID_OIWSEC                                       = 65,
    177     XCN_OID_OIWSEC_md4RSA                                = 66,
    178     XCN_OID_OIWSEC_md5RSA                                = 67,
    179     XCN_OID_OIWSEC_md4RSA2                               = 68,
    180     XCN_OID_OIWSEC_desECB                                = 69,
    181     XCN_OID_OIWSEC_desCBC                                = 70,
    182     XCN_OID_OIWSEC_desOFB                                = 71,
    183     XCN_OID_OIWSEC_desCFB                                = 72,
    184     XCN_OID_OIWSEC_desMAC                                = 73,
    185     XCN_OID_OIWSEC_rsaSign                               = 74,
    186     XCN_OID_OIWSEC_dsa                                   = 75,
    187     XCN_OID_OIWSEC_shaDSA                                = 76,
    188     XCN_OID_OIWSEC_mdc2RSA                               = 77,
    189     XCN_OID_OIWSEC_shaRSA                                = 78,
    190     XCN_OID_OIWSEC_dhCommMod                             = 79,
    191     XCN_OID_OIWSEC_desEDE                                = 80,
    192     XCN_OID_OIWSEC_sha                                   = 81,
    193     XCN_OID_OIWSEC_mdc2                                  = 82,
    194     XCN_OID_OIWSEC_dsaComm                               = 83,
    195     XCN_OID_OIWSEC_dsaCommSHA                            = 84,
    196     XCN_OID_OIWSEC_rsaXchg                               = 85,
    197     XCN_OID_OIWSEC_keyHashSeal                           = 86,
    198     XCN_OID_OIWSEC_md2RSASign                            = 87,
    199     XCN_OID_OIWSEC_md5RSASign                            = 88,
    200     XCN_OID_OIWSEC_sha1                                  = 89,
    201     XCN_OID_OIWSEC_dsaSHA1                               = 90,
    202     XCN_OID_OIWSEC_dsaCommSHA1                           = 91,
    203     XCN_OID_OIWSEC_sha1RSASign                           = 92,
    204     XCN_OID_OIWDIR                                       = 93,
    205     XCN_OID_OIWDIR_CRPT                                  = 94,
    206     XCN_OID_OIWDIR_HASH                                  = 95,
    207     XCN_OID_OIWDIR_SIGN                                  = 96,
    208     XCN_OID_OIWDIR_md2                                   = 97,
    209     XCN_OID_OIWDIR_md2RSA                                = 98,
    210     XCN_OID_INFOSEC                                      = 99,
    211     XCN_OID_INFOSEC_sdnsSignature                        = 100,
    212     XCN_OID_INFOSEC_mosaicSignature                      = 101,
    213     XCN_OID_INFOSEC_sdnsConfidentiality                  = 102,
    214     XCN_OID_INFOSEC_mosaicConfidentiality                = 103,
    215     XCN_OID_INFOSEC_sdnsIntegrity                        = 104,
    216     XCN_OID_INFOSEC_mosaicIntegrity                      = 105,
    217     XCN_OID_INFOSEC_sdnsTokenProtection                  = 106,
    218     XCN_OID_INFOSEC_mosaicTokenProtection                = 107,
    219     XCN_OID_INFOSEC_sdnsKeyManagement                    = 108,
    220     XCN_OID_INFOSEC_mosaicKeyManagement                  = 109,
    221     XCN_OID_INFOSEC_sdnsKMandSig                         = 110,
    222     XCN_OID_INFOSEC_mosaicKMandSig                       = 111,
    223     XCN_OID_INFOSEC_SuiteASignature                      = 112,
    224     XCN_OID_INFOSEC_SuiteAConfidentiality                = 113,
    225     XCN_OID_INFOSEC_SuiteAIntegrity                      = 114,
    226     XCN_OID_INFOSEC_SuiteATokenProtection                = 115,
    227     XCN_OID_INFOSEC_SuiteAKeyManagement                  = 116,
    228     XCN_OID_INFOSEC_SuiteAKMandSig                       = 117,
    229     XCN_OID_INFOSEC_mosaicUpdatedSig                     = 118,
    230     XCN_OID_INFOSEC_mosaicKMandUpdSig                    = 119,
    231     XCN_OID_INFOSEC_mosaicUpdatedInteg                   = 120,
    232     XCN_OID_COMMON_NAME                                  = 121,
    233     XCN_OID_SUR_NAME                                     = 122,
    234     XCN_OID_DEVICE_SERIAL_NUMBER                         = 123,
    235     XCN_OID_COUNTRY_NAME                                 = 124,
    236     XCN_OID_LOCALITY_NAME                                = 125,
    237     XCN_OID_STATE_OR_PROVINCE_NAME                       = 126,
    238     XCN_OID_STREET_ADDRESS                               = 127,
    239     XCN_OID_ORGANIZATION_NAME                            = 128,
    240     XCN_OID_ORGANIZATIONAL_UNIT_NAME                     = 129,
    241     XCN_OID_TITLE                                        = 130,
    242     XCN_OID_DESCRIPTION                                  = 131,
    243     XCN_OID_SEARCH_GUIDE                                 = 132,
    244     XCN_OID_BUSINESS_CATEGORY                            = 133,
    245     XCN_OID_POSTAL_ADDRESS                               = 134,
    246     XCN_OID_POSTAL_CODE                                  = 135,
    247     XCN_OID_POST_OFFICE_BOX                              = 136,
    248     XCN_OID_PHYSICAL_DELIVERY_OFFICE_NAME                = 137,
    249     XCN_OID_TELEPHONE_NUMBER                             = 138,
    250     XCN_OID_TELEX_NUMBER                                 = 139,
    251     XCN_OID_TELETEXT_TERMINAL_IDENTIFIER                 = 140,
    252     XCN_OID_FACSIMILE_TELEPHONE_NUMBER                   = 141,
    253     XCN_OID_X21_ADDRESS                                  = 142,
    254     XCN_OID_INTERNATIONAL_ISDN_NUMBER                    = 143,
    255     XCN_OID_REGISTERED_ADDRESS                           = 144,
    256     XCN_OID_DESTINATION_INDICATOR                        = 145,
    257     XCN_OID_PREFERRED_DELIVERY_METHOD                    = 146,
    258     XCN_OID_PRESENTATION_ADDRESS                         = 147,
    259     XCN_OID_SUPPORTED_APPLICATION_CONTEXT                = 148,
    260     XCN_OID_MEMBER                                       = 149,
    261     XCN_OID_OWNER                                        = 150,
    262     XCN_OID_ROLE_OCCUPANT                                = 151,
    263     XCN_OID_SEE_ALSO                                     = 152,
    264     XCN_OID_USER_PASSWORD                                = 153,
    265     XCN_OID_USER_CERTIFICATE                             = 154,
    266     XCN_OID_CA_CERTIFICATE                               = 155,
    267     XCN_OID_AUTHORITY_REVOCATION_LIST                    = 156,
    268     XCN_OID_CERTIFICATE_REVOCATION_LIST                  = 157,
    269     XCN_OID_CROSS_CERTIFICATE_PAIR                       = 158,
    270     XCN_OID_GIVEN_NAME                                   = 159,
    271     XCN_OID_INITIALS                                     = 160,
    272     XCN_OID_DN_QUALIFIER                                 = 161,
    273     XCN_OID_DOMAIN_COMPONENT                             = 162,
    274     XCN_OID_PKCS_12_FRIENDLY_NAME_ATTR                   = 163,
    275     XCN_OID_PKCS_12_LOCAL_KEY_ID                         = 164,
    276     XCN_OID_PKCS_12_KEY_PROVIDER_NAME_ATTR               = 165,
    277     XCN_OID_LOCAL_MACHINE_KEYSET                         = 166,
    278     XCN_OID_PKCS_12_EXTENDED_ATTRIBUTES                  = 167,
    279     XCN_OID_KEYID_RDN                                    = 168,
    280     XCN_OID_AUTHORITY_KEY_IDENTIFIER                     = 169,
    281     XCN_OID_KEY_ATTRIBUTES                               = 170,
    282     XCN_OID_CERT_POLICIES_95                             = 171,
    283     XCN_OID_KEY_USAGE_RESTRICTION                        = 172,
    284     XCN_OID_SUBJECT_ALT_NAME                             = 173,
    285     XCN_OID_ISSUER_ALT_NAME                              = 174,
    286     XCN_OID_BASIC_CONSTRAINTS                            = 175,
    287     XCN_OID_KEY_USAGE                                    = 176,
    288     XCN_OID_PRIVATEKEY_USAGE_PERIOD                      = 177,
    289     XCN_OID_BASIC_CONSTRAINTS2                           = 178,
    290     XCN_OID_CERT_POLICIES                                = 179,
    291     XCN_OID_ANY_CERT_POLICY                              = 180,
    292     XCN_OID_AUTHORITY_KEY_IDENTIFIER2                    = 181,
    293     XCN_OID_SUBJECT_KEY_IDENTIFIER                       = 182,
    294     XCN_OID_SUBJECT_ALT_NAME2                            = 183,
    295     XCN_OID_ISSUER_ALT_NAME2                             = 184,
    296     XCN_OID_CRL_REASON_CODE                              = 185,
    297     XCN_OID_REASON_CODE_HOLD                             = 186,
    298     XCN_OID_CRL_DIST_POINTS                              = 187,
    299     XCN_OID_ENHANCED_KEY_USAGE                           = 188,
    300     XCN_OID_CRL_NUMBER                                   = 189,
    301     XCN_OID_DELTA_CRL_INDICATOR                          = 190,
    302     XCN_OID_ISSUING_DIST_POINT                           = 191,
    303     XCN_OID_FRESHEST_CRL                                 = 192,
    304     XCN_OID_NAME_CONSTRAINTS                             = 193,
    305     XCN_OID_POLICY_MAPPINGS                              = 194,
    306     XCN_OID_LEGACY_POLICY_MAPPINGS                       = 195,
    307     XCN_OID_POLICY_CONSTRAINTS                           = 196,
    308     XCN_OID_RENEWAL_CERTIFICATE                          = 197,
    309     XCN_OID_ENROLLMENT_NAME_VALUE_PAIR                   = 198,
    310     XCN_OID_ENROLLMENT_CSP_PROVIDER                      = 199,
    311     XCN_OID_OS_VERSION                                   = 200,
    312     XCN_OID_ENROLLMENT_AGENT                             = 201,
    313     XCN_OID_PKIX                                         = 202,
    314     XCN_OID_PKIX_PE                                      = 203,
    315     XCN_OID_AUTHORITY_INFO_ACCESS                        = 204,
    316     XCN_OID_BIOMETRIC_EXT                                = 205,
    317     XCN_OID_LOGOTYPE_EXT                                 = 206,
    318     XCN_OID_CERT_EXTENSIONS                              = 207,
    319     XCN_OID_NEXT_UPDATE_LOCATION                         = 208,
    320     XCN_OID_REMOVE_CERTIFICATE                           = 209,
    321     XCN_OID_CROSS_CERT_DIST_POINTS                       = 210,
    322     XCN_OID_CTL                                          = 211,
    323     XCN_OID_SORTED_CTL                                   = 212,
    324     XCN_OID_SERIALIZED                                   = 213,
    325     XCN_OID_NT_PRINCIPAL_NAME                            = 214,
    326     XCN_OID_PRODUCT_UPDATE                               = 215,
    327     XCN_OID_ANY_APPLICATION_POLICY                       = 216,
    328     XCN_OID_AUTO_ENROLL_CTL_USAGE                        = 217,
    329     XCN_OID_ENROLL_CERTTYPE_EXTENSION                    = 218,
    330     XCN_OID_CERT_MANIFOLD                                = 219,
    331     XCN_OID_CERTSRV_CA_VERSION                           = 220,
    332     XCN_OID_CERTSRV_PREVIOUS_CERT_HASH                   = 221,
    333     XCN_OID_CRL_VIRTUAL_BASE                             = 222,
    334     XCN_OID_CRL_NEXT_PUBLISH                             = 223,
    335     XCN_OID_KP_CA_EXCHANGE                               = 224,
    336     XCN_OID_KP_KEY_RECOVERY_AGENT                        = 225,
    337     XCN_OID_CERTIFICATE_TEMPLATE                         = 226,
    338     XCN_OID_ENTERPRISE_OID_ROOT                          = 227,
    339     XCN_OID_RDN_DUMMY_SIGNER                             = 228,
    340     XCN_OID_APPLICATION_CERT_POLICIES                    = 229,
    341     XCN_OID_APPLICATION_POLICY_MAPPINGS                  = 230,
    342     XCN_OID_APPLICATION_POLICY_CONSTRAINTS               = 231,
    343     XCN_OID_ARCHIVED_KEY_ATTR                            = 232,
    344     XCN_OID_CRL_SELF_CDP                                 = 233,
    345     XCN_OID_REQUIRE_CERT_CHAIN_POLICY                    = 234,
    346     XCN_OID_ARCHIVED_KEY_CERT_HASH                       = 235,
    347     XCN_OID_ISSUED_CERT_HASH                             = 236,
    348     XCN_OID_DS_EMAIL_REPLICATION                         = 237,
    349     XCN_OID_REQUEST_CLIENT_INFO                          = 238,
    350     XCN_OID_ENCRYPTED_KEY_HASH                           = 239,
    351     XCN_OID_CERTSRV_CROSSCA_VERSION                      = 240,
    352     XCN_OID_NTDS_REPLICATION                             = 241,
    353     XCN_OID_SUBJECT_DIR_ATTRS                            = 242,
    354     XCN_OID_PKIX_KP                                      = 243,
    355     XCN_OID_PKIX_KP_SERVER_AUTH                          = 244,
    356     XCN_OID_PKIX_KP_CLIENT_AUTH                          = 245,
    357     XCN_OID_PKIX_KP_CODE_SIGNING                         = 246,
    358     XCN_OID_PKIX_KP_EMAIL_PROTECTION                     = 247,
    359     XCN_OID_PKIX_KP_IPSEC_END_SYSTEM                     = 248,
    360     XCN_OID_PKIX_KP_IPSEC_TUNNEL                         = 249,
    361     XCN_OID_PKIX_KP_IPSEC_USER                           = 250,
    362     XCN_OID_PKIX_KP_TIMESTAMP_SIGNING                    = 251,
    363     XCN_OID_PKIX_KP_OCSP_SIGNING                         = 252,
    364     XCN_OID_PKIX_OCSP_NOCHECK                            = 253,
    365     XCN_OID_IPSEC_KP_IKE_INTERMEDIATE                    = 254,
    366     XCN_OID_KP_CTL_USAGE_SIGNING                         = 255,
    367     XCN_OID_KP_TIME_STAMP_SIGNING                        = 256,
    368     XCN_OID_SERVER_GATED_CRYPTO                          = 257,
    369     XCN_OID_SGC_NETSCAPE                                 = 258,
    370     XCN_OID_KP_EFS                                       = 259,
    371     XCN_OID_EFS_RECOVERY                                 = 260,
    372     XCN_OID_WHQL_CRYPTO                                  = 261,
    373     XCN_OID_NT5_CRYPTO                                   = 262,
    374     XCN_OID_OEM_WHQL_CRYPTO                              = 263,
    375     XCN_OID_EMBEDDED_NT_CRYPTO                           = 264,
    376     XCN_OID_ROOT_LIST_SIGNER                             = 265,
    377     XCN_OID_KP_QUALIFIED_SUBORDINATION                   = 266,
    378     XCN_OID_KP_KEY_RECOVERY                              = 267,
    379     XCN_OID_KP_DOCUMENT_SIGNING                          = 268,
    380     XCN_OID_KP_LIFETIME_SIGNING                          = 269,
    381     XCN_OID_KP_MOBILE_DEVICE_SOFTWARE                    = 270,
    382     XCN_OID_KP_SMART_DISPLAY                             = 271,
    383     XCN_OID_KP_CSP_SIGNATURE                             = 272,
    384     XCN_OID_DRM                                          = 273,
    385     XCN_OID_DRM_INDIVIDUALIZATION                        = 274,
    386     XCN_OID_LICENSES                                     = 275,
    387     XCN_OID_LICENSE_SERVER                               = 276,
    388     XCN_OID_KP_SMARTCARD_LOGON                           = 277,
    389     XCN_OID_YESNO_TRUST_ATTR                             = 278,
    390     XCN_OID_PKIX_POLICY_QUALIFIER_CPS                    = 279,
    391     XCN_OID_PKIX_POLICY_QUALIFIER_USERNOTICE             = 280,
    392     XCN_OID_CERT_POLICIES_95_QUALIFIER1                  = 281,
    393     XCN_OID_PKIX_ACC_DESCR                               = 282,
    394     XCN_OID_PKIX_OCSP                                    = 283,
    395     XCN_OID_PKIX_CA_ISSUERS                              = 284,
    396     XCN_OID_VERISIGN_PRIVATE_6_9                         = 285,
    397     XCN_OID_VERISIGN_ONSITE_JURISDICTION_HASH            = 286,
    398     XCN_OID_VERISIGN_BITSTRING_6_13                      = 287,
    399     XCN_OID_VERISIGN_ISS_STRONG_CRYPTO                   = 288,
    400     XCN_OID_NETSCAPE                                     = 289,
    401     XCN_OID_NETSCAPE_CERT_EXTENSION                      = 290,
    402     XCN_OID_NETSCAPE_CERT_TYPE                           = 291,
    403     XCN_OID_NETSCAPE_BASE_URL                            = 292,
    404     XCN_OID_NETSCAPE_REVOCATION_URL                      = 293,
    405     XCN_OID_NETSCAPE_CA_REVOCATION_URL                   = 294,
    406     XCN_OID_NETSCAPE_CERT_RENEWAL_URL                    = 295,
    407     XCN_OID_NETSCAPE_CA_POLICY_URL                       = 296,
    408     XCN_OID_NETSCAPE_SSL_SERVER_NAME                     = 297,
    409     XCN_OID_NETSCAPE_COMMENT                             = 298,
    410     XCN_OID_NETSCAPE_DATA_TYPE                           = 299,
    411     XCN_OID_NETSCAPE_CERT_SEQUENCE                       = 300,
    412     XCN_OID_CT_PKI_DATA                                  = 301,
    413     XCN_OID_CT_PKI_RESPONSE                              = 302,
    414     XCN_OID_PKIX_NO_SIGNATURE                            = 303,
    415     XCN_OID_CMC                                          = 304,
    416     XCN_OID_CMC_STATUS_INFO                              = 305,
    417     XCN_OID_CMC_IDENTIFICATION                           = 306,
    418     XCN_OID_CMC_IDENTITY_PROOF                           = 307,
    419     XCN_OID_CMC_DATA_RETURN                              = 308,
    420     XCN_OID_CMC_TRANSACTION_ID                           = 309,
    421     XCN_OID_CMC_SENDER_NONCE                             = 310,
    422     XCN_OID_CMC_RECIPIENT_NONCE                          = 311,
    423     XCN_OID_CMC_ADD_EXTENSIONS                           = 312,
    424     XCN_OID_CMC_ENCRYPTED_POP                            = 313,
    425     XCN_OID_CMC_DECRYPTED_POP                            = 314,
    426     XCN_OID_CMC_LRA_POP_WITNESS                          = 315,
    427     XCN_OID_CMC_GET_CERT                                 = 316,
    428     XCN_OID_CMC_GET_CRL                                  = 317,
    429     XCN_OID_CMC_REVOKE_REQUEST                           = 318,
    430     XCN_OID_CMC_REG_INFO                                 = 319,
    431     XCN_OID_CMC_RESPONSE_INFO                            = 320,
    432     XCN_OID_CMC_QUERY_PENDING                            = 321,
    433     XCN_OID_CMC_ID_POP_LINK_RANDOM                       = 322,
    434     XCN_OID_CMC_ID_POP_LINK_WITNESS                      = 323,
    435     XCN_OID_CMC_ID_CONFIRM_CERT_ACCEPTANCE               = 324,
    436     XCN_OID_CMC_ADD_ATTRIBUTES                           = 325,
    437     XCN_OID_LOYALTY_OTHER_LOGOTYPE                       = 326,
    438     XCN_OID_BACKGROUND_OTHER_LOGOTYPE                    = 327,
    439     XCN_OID_PKIX_OCSP_BASIC_SIGNED_RESPONSE              = 328,
    440     XCN_OID_PKCS_7_DATA                                  = 329,
    441     XCN_OID_PKCS_7_SIGNED                                = 330,
    442     XCN_OID_PKCS_7_ENVELOPED                             = 331,
    443     XCN_OID_PKCS_7_SIGNEDANDENVELOPED                    = 332,
    444     XCN_OID_PKCS_7_DIGESTED                              = 333,
    445     XCN_OID_PKCS_7_ENCRYPTED                             = 334,
    446     XCN_OID_PKCS_9_CONTENT_TYPE                          = 335,
    447     XCN_OID_PKCS_9_MESSAGE_DIGEST                        = 336,
    448     XCN_OID_CERT_PROP_ID_PREFIX                          = 337,
    449     XCN_OID_CERT_KEY_IDENTIFIER_PROP_ID                  = 338,
    450     XCN_OID_CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID   = 339,
    451     XCN_OID_CERT_SUBJECT_NAME_MD5_HASH_PROP_ID           = 340,
    452     XCN_OID_CERT_MD5_HASH_PROP_ID                        = 341,
    453     XCN_OID_RSA_SHA256RSA                                = 342,
    454     XCN_OID_RSA_SHA384RSA                                = 343,
    455     XCN_OID_RSA_SHA512RSA                                = 344,
    456     XCN_OID_NIST_sha256                                  = 345,
    457     XCN_OID_NIST_sha384                                  = 346,
    458     XCN_OID_NIST_sha512                                  = 347,
    459     XCN_OID_RSA_MGF1                                     = 348,
    460     XCN_OID_ECC_PUBLIC_KEY                               = 349,
    461     XCN_OID_RSA_SSA_PSS                                  = 353,
    462     XCN_OID_ECDSA_SHA1                                   = 354,
    463     XCN_OID_ECDSA_SPECIFIED                              = 354
    464   } CERTENROLL_OBJECTID;
    465 
    466   typedef enum EnrollmentCAProperty {
    467     CAPropCommonName           = 1,
    468     CAPropDistinguishedName    = 2,
    469     CAPropSanitizedName        = 3,
    470     CAPropSanitizedShortName   = 4,
    471     CAPropDNSName              = 5,
    472     CAPropCertificateTypes     = 6,
    473     CAPropCertificate          = 7,
    474     CAPropDescription          = 8,
    475     CAPropWebServers           = 9,
    476     CAPropSiteName             = 10,
    477     CAPropSecurity             = 11,
    478     CAPropRenewalOnly          = 12
    479   } EnrollmentCAProperty;
    480 
    481   typedef enum EncodingType {
    482     XCN_CRYPT_STRING_BASE64HEADER          = 0,
    483     XCN_CRYPT_STRING_BASE64                = 0x1,
    484     XCN_CRYPT_STRING_BINARY                = 0x2,
    485     XCN_CRYPT_STRING_BASE64REQUESTHEADER   = 0x3,
    486     XCN_CRYPT_STRING_HEX                   = 0x4,
    487     XCN_CRYPT_STRING_HEXASCII              = 0x5,
    488     XCN_CRYPT_STRING_BASE64_ANY            = 0x6,
    489     XCN_CRYPT_STRING_ANY                   = 0x7,
    490     XCN_CRYPT_STRING_HEX_ANY               = 0x8,
    491     XCN_CRYPT_STRING_BASE64X509CRLHEADER   = 0x9,
    492     XCN_CRYPT_STRING_HEXADDR               = 0xa,
    493     XCN_CRYPT_STRING_HEXASCIIADDR          = 0xb,
    494     XCN_CRYPT_STRING_HEXRAW                = 0xc,
    495     XCN_CRYPT_STRING_NOCRLF                = 0x40000000,
    496     XCN_CRYPT_STRING_NOCR                  = 0x80000000
    497   } EncodingType;
    498 
    499   typedef enum CommitTemplateFlags {
    500     CommitFlagSaveTemplateGenerateOID     = 1,
    501     CommitFlagSaveTemplateUseCurrentOID   = 2,
    502     CommitFlagSaveTemplateOverwrite       = 3,
    503     CommitFlagDeleteTemplate              = 4
    504   } CommitTemplateFlags;
    505 
    506   typedef enum EnrollmentDisplayStatus {
    507     DisplayNo    = 0,
    508     DisplayYes   = 1
    509   } EnrollmentDisplayStatus;
    510 
    511   typedef enum EnrollmentEnrollStatus {
    512     Enrolled                             = 0x00000001,
    513     EnrollPended                         = 0x00000002,
    514     EnrollUIDeferredEnrollmentRequired   = 0x00000004,
    515     EnrollError                          = 0x00000010,
    516     EnrollUnknown                        = 0x00000020,
    517     EnrollSkipped                        = 0x00000040,
    518     EnrollDenied                         = 0x00000100
    519   } EnrollmentEnrollStatus;
    520 
    521 #if (_WIN32_WINNT >= 0x0601)
    522   enum EnrollmentPolicyFlags {
    523     DisableGroupPolicyList   = 0x2,
    524     DisableUserServerList    = 0x4
    525   };
    526 
    527   typedef enum EnrollmentPolicyServerPropertyFlags {
    528     DefaultNone           = 0x00000000,
    529     DefaultPolicyServer   = 0x00000001
    530   } EnrollmentPolicyServerPropertyFlags;
    531 
    532 #endif /*(_WIN32_WINNT >= 0x0601)*/
    533 
    534   typedef enum EnrollmentSelectionStatus {
    535     SelectedNo    = 0,
    536     SelectedYes   = 1
    537   } EnrollmentSelectionStatus;
    538 
    539 #if (_WIN32_WINNT >= 0x0601)
    540 
    541   typedef enum EnrollmentTemplateProperty {
    542     TemplatePropCommonName              = 1,
    543     TemplatePropFriendlyName            = 2,
    544     TemplatePropEKUs                    = 3,
    545     TemplatePropCryptoProviders         = 4,
    546     TemplatePropMajorRevision           = 5,
    547     TemplatePropDescription             = 6,
    548     TemplatePropKeySpec                 = 7,
    549     TemplatePropSchemaVersion           = 8,
    550     TemplatePropMinorRevision           = 9,
    551     TemplatePropRASignatureCount        = 10,
    552     TemplatePropMinimumKeySize          = 11,
    553     TemplatePropOID                     = 12,
    554     TemplatePropSupersede               = 13,
    555     TemplatePropRACertificatePolicies   = 14,
    556     TemplatePropRAEKUs                  = 15,
    557     TemplatePropCertificatePolicies     = 16,
    558     TemplatePropV1ApplicationPolicy     = 17,
    559     TemplatePropAsymmetricAlgorithm     = 18,
    560     TemplatePropKeySecurityDescriptor   = 19,
    561     TemplatePropSymmetricAlgorithm      = 20,
    562     TemplatePropSymmetricKeyLength      = 21,
    563     TemplatePropHashAlgorithm           = 22,
    564     TemplatePropEnrollmentFlags         = 23,
    565     TemplatePropSubjectNameFlags        = 24,
    566     TemplatePropPrivateKeyFlags         = 25,
    567     TemplatePropGeneralFlags            = 26,
    568     TemplatePropSecurityDescriptor      = 27,
    569     TemplatePropExtensions              = 28,
    570     TemplatePropValidityPeriod          = 29,
    571     TemplatePropRenewalPeriod           = 30
    572   } EnrollmentTemplateProperty;
    573 #endif /*(_WIN32_WINNT >= 0x0601)*/
    574 
    575   typedef enum InnerRequestLevel {
    576     LevelInnermost   = 0,
    577     LevelNext        = 1
    578   } InnerRequestLevel;
    579 
    580   typedef enum InstallResponseRestrictionFlags {
    581     AllowNone                   = 0x00000000,
    582     AllowNoOutstandingRequest   = 0x00000001,
    583     AllowUntrustedCertificate   = 0x00000002,
    584     AllowUntrustedRoot          = 0x00000004
    585   } InstallResponseRestrictionFlags;
    586 
    587   typedef enum KeyIdentifierHashAlgorithm {
    588     SKIHashDefault    = 0,
    589     SKIHashSha1       = 1,
    590     SKIHashCapiSha1   = 2
    591   } KeyIdentifierHashAlgorithm;
    592 
    593   typedef enum ObjectIdGroupId {
    594     XCN_CRYPT_ANY_GROUP_ID                 = 0,
    595     XCN_CRYPT_HASH_ALG_OID_GROUP_ID        = 1,
    596     XCN_CRYPT_ENCRYPT_ALG_OID_GROUP_ID     = 2,
    597     XCN_CRYPT_PUBKEY_ALG_OID_GROUP_ID      = 3,
    598     XCN_CRYPT_SIGN_ALG_OID_GROUP_ID        = 4,
    599     XCN_CRYPT_RDN_ATTR_OID_GROUP_ID        = 5,
    600     XCN_CRYPT_EXT_OR_ATTR_OID_GROUP_ID     = 6,
    601     XCN_CRYPT_ENHKEY_USAGE_OID_GROUP_ID    = 7,
    602     XCN_CRYPT_POLICY_OID_GROUP_ID          = 8,
    603     XCN_CRYPT_TEMPLATE_OID_GROUP_ID        = 9,
    604     XCN_CRYPT_LAST_OID_GROUP_ID            = 9,
    605     XCN_CRYPT_FIRST_ALG_OID_GROUP_ID       = 1,
    606     XCN_CRYPT_LAST_ALG_OID_GROUP_ID        = 4,
    607     XCN_CRYPT_OID_DISABLE_SEARCH_DS_FLAG   = 0x80000000,
    608     XCN_CRYPT_KEY_LENGTH_MASK              = 0xffff0000
    609   } ObjectIdGroupId;
    610 
    611   typedef enum ObjectIdPublicKeyFlags {
    612     XCN_CRYPT_OID_INFO_PUBKEY_ANY                = 0,
    613     XCN_CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG      = 0x80000000,
    614     XCN_CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG   = 0x40000000
    615   } ObjectIdPublicKeyFlags;
    616 
    617   typedef enum PFXExportOptions {
    618     PFXExportEEOnly          = 0,
    619     PFXExportChainNoRoot     = 1,
    620     PFXExportChainWithRoot   = 2
    621   } PFXExportOptions;
    622 
    623   typedef enum Pkcs10AllowedSignatureTypes {
    624     AllowedKeySignature    = 0x1,
    625     AllowedNullSignature   = 0x2
    626   } Pkcs10AllowedSignatureTypes;
    627 
    628   typedef enum PolicyQualifierType {
    629     PolicyQualifierTypeUnknown      = 0,
    630     PolicyQualifierTypeUrl          = 1,
    631     PolicyQualifierTypeUserNotice   = 2
    632   } PolicyQualifierType;
    633 
    634   typedef enum PolicyServerUrlFlags {
    635     PsfNone                    = 0,
    636     PsfLocationGroupPolicy     = 1,
    637     PsfLocationRegistry        = 2,
    638     PsfUseClientId             = 4,
    639     PsfAutoEnrollmentEnabled   = 16,
    640     PsfAllowUnTrustedCA        = 32
    641   } PolicyServerUrlFlags;
    642 
    643 #if (_WIN32_WINNT >= 0x0601)
    644 
    645   typedef enum PolicyServerUrlPropertyID {
    646     PsPolicyID       = 0,
    647     PsFriendlyName   = 1
    648   } PolicyServerUrlPropertyID;
    649 
    650 #endif /*(_WIN32_WINNT >= 0x0601)*/
    651 
    652   typedef enum RequestClientInfoClientId {
    653     ClientIdNone             = 0,
    654     ClientIdXEnroll2003      = 1,
    655     ClientIdAutoEnroll2003   = 2,
    656     ClientIdWizard2003       = 3,
    657     ClientIdCertReq2003      = 4,
    658     ClientIdDefaultRequest   = 5,
    659     ClientIdAutoEnroll       = 6,
    660     ClientIdRequestWizard    = 7,
    661     ClientIdEOBO             = 8,
    662     ClientIdCertReq          = 9,
    663     ClientIdTest             = 10,
    664     ClientIdUserStart        = 1000
    665   } RequestClientInfoClientId;
    666 
    667 #if (_WIN32_WINNT >= 0x0601)
    668 
    669   typedef enum WebEnrollmentFlags {
    670     EnrollPrompt   = 0x00000001
    671   } WebEnrollmentFlags;
    672 
    673 #endif /*(_WIN32_WINNT >= 0x0601)*/
    674 
    675   typedef enum WebSecurityLevel {
    676     LevelUnsafe   = 0,
    677     LevelSafe     = 1
    678   } WebSecurityLevel;
    679 
    680   typedef enum X500NameFlags {
    681     XCN_CERT_NAME_STR_NONE                        = 0,
    682     XCN_CERT_SIMPLE_NAME_STR                      = 1,
    683     XCN_CERT_OID_NAME_STR                         = 2,
    684     XCN_CERT_X500_NAME_STR                        = 3,
    685     XCN_CERT_XML_NAME_STR                         = 4,
    686     XCN_CERT_NAME_STR_SEMICOLON_FLAG              = 0x40000000,
    687     XCN_CERT_NAME_STR_NO_PLUS_FLAG                = 0x20000000,
    688     XCN_CERT_NAME_STR_NO_QUOTING_FLAG             = 0x10000000,
    689     XCN_CERT_NAME_STR_CRLF_FLAG                   = 0x8000000,
    690     XCN_CERT_NAME_STR_COMMA_FLAG                  = 0x4000000,
    691     XCN_CERT_NAME_STR_REVERSE_FLAG                = 0x2000000,
    692     XCN_CERT_NAME_STR_DISABLE_IE4_UTF8_FLAG       = 0x10000,
    693     XCN_CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG     = 0x20000,
    694     XCN_CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG    = 0x40000,
    695     XCN_CERT_NAME_STR_FORCE_UTF8_DIR_STR_FLAG     = 0x80000,
    696     XCN_CERT_NAME_STR_DISABLE_UTF8_DIR_STR_FLAG   = 0x100000
    697   } X500NameFlags;
    698 
    699   typedef enum X509CertificateEnrollmentContext {
    700     ContextUser                        = 0x1,
    701     ContextMachine                     = 0x2,
    702     ContextAdministratorForceMachine   = 0x3
    703   } X509CertificateEnrollmentContext;
    704 
    705 #if (_WIN32_WINNT >= 0x0601)
    706 
    707   typedef enum X509CertificateTemplateEnrollmentFlag {
    708     EnrollmentIncludeSymmetricAlgorithms                  = CT_FLAG_INCLUDE_SYMMETRIC_ALGORITHMS,
    709     EnrollmentPendAllRequests                             = CT_FLAG_PEND_ALL_REQUESTS,
    710     EnrollmentPublishToKRAContainer                       = CT_FLAG_PUBLISH_TO_KRA_CONTAINER,
    711     EnrollmentPublishToDS                                 = CT_FLAG_PUBLISH_TO_DS,
    712     EnrollmentAutoEnrollmentCheckUserDSCertificate        = CT_FLAG_AUTO_ENROLLMENT_CHECK_USER_DS_CERTIFICATE,
    713     EnrollmentAutoEnrollment                              = CT_FLAG_AUTO_ENROLLMENT,
    714     EnrollmentDomainAuthenticationNotRequired             = CT_FLAG_DOMAIN_AUTHENTICATION_NOT_REQUIRED,
    715     EnrollmentPreviousApprovalValidateReenrollment        = CT_FLAG_PREVIOUS_APPROVAL_VALIDATE_REENROLLMENT,
    716     EnrollmentUserInteractionRequired                     = CT_FLAG_USER_INTERACTION_REQUIRED,
    717     EnrollmentAddTemplateName                             = CT_FLAG_ADD_TEMPLATE_NAME,
    718     EnrollmentRemoveInvalidCertificateFromPersonalStore   = CT_FLAG_REMOVE_INVALID_CERTIFICATE_FROM_PERSONAL_STORE,
    719     EnrollmentAllowEnrollOnBehalfOf                       = CT_FLAG_ALLOW_ENROLL_ON_BEHALF_OF,
    720     EnrollmentAddOCSPNoCheck                              = CT_FLAG_ADD_OCSP_NOCHECK,
    721     EnrollmentReuseKeyOnFullSmartCard                     = CT_FLAG_ENABLE_KEY_REUSE_ON_NT_TOKEN_KEYSET_STORAGE_FULL,
    722     EnrollmentNoRevocationInfoInCerts                     = CT_FLAG_NOREVOCATIONINFOINISSUEDCERTS,
    723     EnrollmentIncludeBasicConstraintsForEECerts           = CT_FLAG_INCLUDE_BASIC_CONSTRAINTS_FOR_EE_CERTS
    724   } X509CertificateTemplateEnrollmentFlag;
    725 
    726   typedef enum X509CertificateTemplateGeneralFlag {
    727     GeneralMachineType    = CT_FLAG_MACHINE_TYPE,
    728     GeneralCA             = CT_FLAG_IS_CA,
    729     GeneralCrossCA        = CT_FLAG_IS_CROSS_CA,
    730     GeneralDefault        = CT_FLAG_IS_DEFAULT,
    731     GeneralModified       = CT_FLAG_IS_MODIFIED,
    732     GeneralDonotPersist   = CT_FLAG_DONOTPERSISTINDB
    733   } X509CertificateTemplateGeneralFlag;
    734 
    735   typedef enum X509CertificateTemplatePrivateKeyFlag {
    736     PrivateKeyRequireArchival                      = CT_FLAG_REQUIRE_PRIVATE_KEY_ARCHIVAL,
    737     PrivateKeyExportable                           = CT_FLAG_EXPORTABLE_KEY,
    738     PrivateKeyRequireStrongKeyProtection           = CT_FLAG_STRONG_KEY_PROTECTION_REQUIRED,
    739     PrivateKeyRequireAlternateSignatureAlgorithm   = CT_FLAG_REQUIRE_ALTERNATE_SIGNATURE_ALGORITHM
    740   } X509CertificateTemplatePrivateKeyFlag;
    741 
    742   typedef enum X509CertificateTemplateSubjectNameFlag {
    743     SubjectNameEnrolleeSupplies                    = CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT,
    744     SubjectNameRequireDirectoryPath                = CT_FLAG_SUBJECT_REQUIRE_DIRECTORY_PATH,
    745     SubjectNameRequireCommonName                   = CT_FLAG_SUBJECT_REQUIRE_COMMON_NAME,
    746     SubjectNameRequireEmail                        = CT_FLAG_SUBJECT_REQUIRE_EMAIL,
    747     SubjectNameRequireDNS                          = CT_FLAG_SUBJECT_REQUIRE_DNS_AS_CN,
    748     SubjectNameAndAlternativeNameOldCertSupplies   = CT_FLAG_OLD_CERT_SUPPLIES_SUBJECT_AND_ALT_NAME,
    749     SubjectAlternativeNameEnrolleeSupplies         = CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT_ALT_NAME,
    750     SubjectAlternativeNameRequireDirectoryGUID     = CT_FLAG_SUBJECT_ALT_REQUIRE_DIRECTORY_GUID,
    751     SubjectAlternativeNameRequireUPN               = CT_FLAG_SUBJECT_ALT_REQUIRE_UPN,
    752     SubjectAlternativeNameRequireEmail             = CT_FLAG_SUBJECT_ALT_REQUIRE_EMAIL,
    753     SubjectAlternativeNameRequireSPN               = CT_FLAG_SUBJECT_ALT_REQUIRE_SPN,
    754     SubjectAlternativeNameRequireDNS               = CT_FLAG_SUBJECT_ALT_REQUIRE_DNS,
    755     SubjectAlternativeNameRequireDomainDNS         = CT_FLAG_SUBJECT_ALT_REQUIRE_DOMAIN_DNS
    756   } X509CertificateTemplateSubjectNameFlag;
    757 
    758   typedef enum X509EnrollmentPolicyExportFlags {
    759     ExportTemplates   = 0x1,
    760     ExportOIDs        = 0x2,
    761     ExportCAs         = 0x4
    762   } X509EnrollmentPolicyExportFlags;
    763 
    764   typedef enum X509EnrollmentPolicyLoadOption {
    765     LoadOptionDefault                = 0,
    766     LoadOptionCacheOnly              = 1,
    767     LoadOptionReload                 = 2,
    768     LoadOptionRegisterForADChanges   = 4
    769   } X509EnrollmentPolicyLoadOption;
    770 
    771 
    772 #endif /*(_WIN32_WINNT >= 0x0601)*/
    773 
    774   typedef enum X509KeySpec {
    775     XCN_AT_NONE          = 0,
    776     XCN_AT_KEYEXCHANGE   = 1,
    777     XCN_AT_SIGNATURE     = 2
    778   } X509KeySpec;
    779 
    780   typedef enum X509KeyUsageFlags {
    781     XCN_CERT_NO_KEY_USAGE                  = 0,
    782     XCN_CERT_DIGITAL_SIGNATURE_KEY_USAGE   = 0x80,
    783     XCN_CERT_NON_REPUDIATION_KEY_USAGE     = 0x40,
    784     XCN_CERT_KEY_ENCIPHERMENT_KEY_USAGE    = 0x20,
    785     XCN_CERT_DATA_ENCIPHERMENT_KEY_USAGE   = 0x10,
    786     XCN_CERT_KEY_AGREEMENT_KEY_USAGE       = 0x8,
    787     XCN_CERT_KEY_CERT_SIGN_KEY_USAGE       = 0x4,
    788     XCN_CERT_OFFLINE_CRL_SIGN_KEY_USAGE    = 0x2,
    789     XCN_CERT_CRL_SIGN_KEY_USAGE            = 0x2,
    790     XCN_CERT_ENCIPHER_ONLY_KEY_USAGE       = 0x1,
    791     XCN_CERT_DECIPHER_ONLY_KEY_USAGE       = ( 0x80 << 8 )
    792   } X509KeyUsageFlags;
    793 
    794   typedef enum X509PrivateKeyExportFlags {
    795     XCN_NCRYPT_ALLOW_EXPORT_NONE                = 0,
    796     XCN_NCRYPT_ALLOW_EXPORT_FLAG                = 0x1,
    797     XCN_NCRYPT_ALLOW_PLAINTEXT_EXPORT_FLAG      = 0x2,
    798     XCN_NCRYPT_ALLOW_ARCHIVING_FLAG             = 0x4,
    799     XCN_NCRYPT_ALLOW_PLAINTEXT_ARCHIVING_FLAG   = 0x8
    800   } X509PrivateKeyExportFlags;
    801 
    802   typedef enum X509PrivateKeyProtection {
    803     XCN_NCRYPT_UI_NO_PROTECTION_FLAG           = 0,
    804     XCN_NCRYPT_UI_PROTECT_KEY_FLAG             = 0x1,
    805     XCN_NCRYPT_UI_FORCE_HIGH_PROTECTION_FLAG   = 0x2
    806   } X509PrivateKeyProtection;
    807 
    808   typedef enum X509RequestType {
    809     TypeAny           = 0,
    810     TypePkcs10        = 1,
    811     TypePkcs7         = 2,
    812     TypeCmc           = 3,
    813     TypeCertificate   = 4
    814   } X509RequestType;
    815 
    816   typedef enum X509RequestInheritOptions {
    817     InheritDefault                  = 0x00000000,
    818     InheritNewDefaultKey            = 0x00000001,
    819     InheritNewSimilarKey            = 0x00000002,
    820     InheritPrivateKey               = 0x00000003,
    821     InheritPublicKey                = 0x00000004,
    822     InheritKeyMask                  = 0x0000000f,
    823     InheritNone                     = 0x00000010,
    824     InheritRenewalCertificateFlag   = 0x00000020,
    825     InheritTemplateFlag             = 0x00000040,
    826     InheritSubjectFlag              = 0x00000080,
    827     InheritExtensionsFlag           = 0x00000100,
    828     InheritSubjectAltNameFlag       = 0x00000200,
    829     InheritValidityPeriodFlag       = 0x00000400
    830   } X509RequestInheritOptions;
    831 
    832   typedef enum X509ProviderType {
    833     XCN_PROV_NONE            = 0,
    834     XCN_PROV_RSA_FULL        = 1,
    835     XCN_PROV_RSA_SIG         = 2,
    836     XCN_PROV_DSS             = 3,
    837     XCN_PROV_FORTEZZA        = 4,
    838     XCN_PROV_MS_EXCHANGE     = 5,
    839     XCN_PROV_SSL             = 6,
    840     XCN_PROV_RSA_SCHANNEL    = 12,
    841     XCN_PROV_DSS_DH          = 13,
    842     XCN_PROV_EC_ECDSA_SIG    = 14,
    843     XCN_PROV_EC_ECNRA_SIG    = 15,
    844     XCN_PROV_EC_ECDSA_FULL   = 16,
    845     XCN_PROV_EC_ECNRA_FULL   = 17,
    846     XCN_PROV_DH_SCHANNEL     = 18,
    847     XCN_PROV_SPYRUS_LYNKS    = 20,
    848     XCN_PROV_RNG             = 21,
    849     XCN_PROV_INTEL_SEC       = 22,
    850     XCN_PROV_REPLACE_OWF     = 23,
    851     XCN_PROV_RSA_AES         = 24
    852   } X509ProviderType;
    853 
    854   typedef enum X509PrivateKeyVerify {
    855     VerifyNone              = 0,
    856     VerifySilent            = 1,
    857     VerifySmartCardNone     = 2,
    858     VerifySmartCardSilent   = 3,
    859     VerifyAllowUI           = 4
    860   } X509PrivateKeyVerify;
    861 
    862   typedef enum X509PrivateKeyUsageFlags {
    863     XCN_NCRYPT_ALLOW_USAGES_NONE          = 0,
    864     XCN_NCRYPT_ALLOW_DECRYPT_FLAG         = 0x1,
    865     XCN_NCRYPT_ALLOW_SIGNING_FLAG         = 0x2,
    866     XCN_NCRYPT_ALLOW_KEY_AGREEMENT_FLAG   = 0x4,
    867     XCN_NCRYPT_ALLOW_ALL_USAGES           = 0xffffff
    868   } X509PrivateKeyUsageFlags;
    869 
    870   typedef enum EncodingType {
    871   XCN_CRYPT_STRING_BASE64HEADER          = 0,
    872   XCN_CRYPT_STRING_BASE64                = 0x1,
    873   XCN_CRYPT_STRING_BINARY                = 0x2,
    874   XCN_CRYPT_STRING_BASE64REQUESTHEADER   = 0x3,
    875   XCN_CRYPT_STRING_HEX                   = 0x4,
    876   XCN_CRYPT_STRING_HEXASCII              = 0x5,
    877   XCN_CRYPT_STRING_BASE64_ANY            = 0x6,
    878   XCN_CRYPT_STRING_ANY                   = 0x7,
    879   XCN_CRYPT_STRING_HEX_ANY               = 0x8,
    880   XCN_CRYPT_STRING_BASE64X509CRLHEADER   = 0x9,
    881   XCN_CRYPT_STRING_HEXADDR               = 0xa,
    882   XCN_CRYPT_STRING_HEXASCIIADDR          = 0xb,
    883   XCN_CRYPT_STRING_HEXRAW                = 0xc,
    884   XCN_CRYPT_STRING_NOCRLF                = 0x40000000,
    885   XCN_CRYPT_STRING_NOCR                  = 0x80000000
    886 } EncodingType;
    887 
    888 typedef enum EnrollmentDisplayStatus {
    889   DisplayNo    = 0,
    890   DisplayYes   = 1
    891 } EnrollmentDisplayStatus;
    892 
    893 typedef enum EnrollmentEnrollStatus {
    894   Enrolled                             = 0x00000001,
    895   EnrollPended                         = 0x00000002,
    896   EnrollUIDeferredEnrollmentRequired   = 0x00000004,
    897   EnrollError                          = 0x00000010,
    898   EnrollUnknown                        = 0x00000020,
    899   EnrollSkipped                        = 0x00000040,
    900   EnrollDenied                         = 0x00000100
    901 } EnrollmentEnrollStatus;
    902 
    903 typedef enum EnrollmentSelectionStatus {
    904   SelectedNo    = 0,
    905   SelectedYes   = 1
    906 } EnrollmentSelectionStatus;
    907 
    908 #ifdef __cplusplus
    909 }
    910 #endif
    911 #endif /*(_WIN32_WINNT >= 0x0600)*/
    912 #endif /*_INC_CERTENROLL*/
    913