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