master
  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
 11extern "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
888typedef enum EnrollmentDisplayStatus {
889  DisplayNo    = 0,
890  DisplayYes   = 1 
891} EnrollmentDisplayStatus;
892
893typedef 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
903typedef 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*/