ReactOS 0.4.15-dev-7958-gcd0bb1a
wincrypt.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2002 Travis Michielsen
3 * Copyright (C) 2004-2005 Juan Lang
4 * Copyright (C) 2007 Vijay Kiran Kamuju
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 */
20
21#ifndef __WINE_WINCRYPT_H
22#define __WINE_WINCRYPT_H
23
24#include <specstrings.h>
25
26#ifdef __cplusplus
27extern "C" {
28#endif
29
30#ifdef _MSC_VER
31#pragma warning(push)
32#pragma warning(disable:4201)
33#endif
34
35#include <bcrypt.h>
36/* FIXME: #include <ncrypt.h> */
37
38#ifdef _ADVAPI32_
39# define WINADVAPI
40#else
41# define WINADVAPI DECLSPEC_IMPORT
42#endif
43
44/* some typedefs for function parameters */
45typedef unsigned int ALG_ID;
51typedef void *HCERTSTORE;
52typedef void *HCRYPTMSG;
53typedef void *HCERTSTOREPROV;
54typedef void *HCRYPTOIDFUNCSET;
55typedef void *HCRYPTOIDFUNCADDR;
57
58/* CSP Structs */
59
60typedef struct _PROV_ENUMALGS {
66
67typedef struct _PROV_ENUMALGS_EX {
78
79#define SCHANNEL_MAC_KEY 0
80#define SCHANNEL_ENC_KEY 1
81
82typedef struct _SCHANNEL_ALG {
89
90
91#define CRYPT_IPSEC_HMAC_KEY 0x0100
92
93typedef struct _HMAC_INFO {
100
101typedef struct _CRYPTOAPI_BLOB {
117
124
129
134
135typedef struct _PUBLICKEYSTRUC {
141
142typedef struct _RSAPUBKEY {
147
148typedef struct _PUBKEY {
152
153typedef struct _DSSSEED {
157
158typedef struct _PUBKEYVER3 {
165
166typedef struct _PRIVKEYVER3 {
174
175typedef struct _KEY_TYPE_SUBTYPE {
180
182 unsigned char SerialNumber[8];
184 unsigned char CertLabel[36];
186
187typedef struct _CMS_DH_KEY_INFO {
194
195typedef struct _CRYPT_BIT_BLOB {
200
201typedef struct _CRYPT_KEY_PROV_PARAM {
207
208typedef struct _CRYPT_KEY_PROV_INFO {
217
218typedef struct _CERT_KEY_CONTEXT {
223
224typedef struct _CERT_PUBLIC_KEY_INFO {
228
229typedef struct _CERT_EXTENSION {
234
235typedef struct _CERT_EXTENSIONS {
239
240typedef struct _CERT_INFO {
254
255typedef struct _CERT_RDN_ATTR {
260
261typedef struct _CERT_RDN {
265
266typedef struct _CERT_NAME_INFO {
270
271typedef struct _CERT_NAME_VALUE {
275
280
286
291
297
298typedef struct _CERT_ECC_SIGNATURE {
302
303/* byte 0 */
304#define CERT_DIGITAL_SIGNATURE_KEY_USAGE 0x80
305#define CERT_NON_REPUDIATION_KEY_USAGE 0x40
306#define CERT_KEY_ENCIPHERMENT_KEY_USAGE 0x20
307#define CERT_DATA_ENCIPHERMENT_KEY_USAGE 0x10
308#define CERT_KEY_AGREEMENT_KEY_USAGE 0x08
309#define CERT_KEY_CERT_SIGN_KEY_USAGE 0x04
310#define CERT_OFFLINE_CRL_SIGN_KEY_USAGE 0x02
311#define CERT_CRL_SIGN_KEY_USAGE 0x02
312#define CERT_ENCIPHER_ONLY_KEY_USAGE 0x01
313/* byte 1 */
314#define CERT_DECIPHER_ONLY_KEY_USAGE 0x80
315
316typedef struct _CERT_POLICY_ID {
320
326
327typedef struct _CERT_OTHER_NAME {
331
332typedef struct _CERT_ALT_NAME_ENTRY {
334 union {
344
345#define CERT_ALT_NAME_OTHER_NAME 1
346#define CERT_ALT_NAME_RFC822_NAME 2
347#define CERT_ALT_NAME_DNS_NAME 3
348#define CERT_ALT_NAME_X400_ADDRESS 4
349#define CERT_ALT_NAME_DIRECTORY_NAME 5
350#define CERT_ALT_NAME_EDI_PARTY_NAME 6
351#define CERT_ALT_NAME_URL 7
352#define CERT_ALT_NAME_IP_ADDRESS 8
353#define CERT_ALT_NAME_REGISTERED_ID 9
354
355typedef struct _CERT_ALT_NAME_INFO {
359
360#define CERT_ALT_NAME_ENTRY_ERR_INDEX_MASK 0xff
361#define CERT_ALT_NAME_ENTRY_ERR_INDEX_SHIFT 16
362#define CERT_ALT_NAME_VALUE_ERR_INDEX_MASK 0x0000ffff
363#define CERT_ALT_NAME_VALUE_ERR_INDEX_SHIFT 0
364#define GET_CERT_ALT_NAME_ENTRY_ERR_INDEX(x) \
365 (((x) >> CERT_ALT_NAME_ENTRY_ERR_INDEX_SHIFT) & \
366 CERT_ALT_NAME_ENTRY_ERR_INDEX_MASK)
367#define GET_CERT_ALT_NAME_VALUE_ERR_INDEX(x) \
368 ((x) & CERT_ALT_NAME_VALUE_ERR_INDEX_MASK)
369
377
378#define CERT_CA_SUBJECT_FLAG 0x80
379#define CERT_END_ENTITY_SUBJECT_FLAG 0x40
380
386
391
392typedef struct _CERT_POLICY_INFO {
397
398typedef struct _CERT_POLICIES_INFO {
402
409
414
415typedef struct _CPS_URLS {
420
428
429typedef struct _CERT_POLICY_MAPPING {
433
438
445
451
452typedef struct _CRYPT_CONTENT_INFO {
456
461
467
472
477
478typedef struct _CERT_CONTEXT {
486
487typedef struct _CRL_ENTRY {
493
494typedef struct _CRL_INFO {
505
506typedef struct _CRL_DIST_POINT_NAME {
508 union {
512
513#define CRL_DIST_POINT_NO_NAME 0
514#define CRL_DIST_POINT_FULL_NAME 1
515#define CRL_DIST_POINT_ISSUER_RDN_NAME 2
516
517typedef struct _CRL_DIST_POINT {
522
523#define CRL_REASON_UNUSED_FLAG 0x80
524#define CRL_REASON_KEY_COMPROMISE_FLAG 0x40
525#define CRL_REASON_CA_COMPROMISE_FLAG 0x20
526#define CRL_REASON_AFFILIATION_CHANGED_FLAG 0x10
527#define CRL_REASON_SUPERSEDED_FLAG 0x08
528#define CRL_REASON_CESSATION_OF_OPERATION_FLAG 0x04
529#define CRL_REASON_CERTIFICATE_HOLD_FLAG 0x02
530
531typedef struct _CRL_DIST_POINTS_INFO {
535
536#define CRL_DIST_POINT_ERR_INDEX_MASK 0x7f
537#define CRL_DIST_POINT_ERR_INDEX_SHIFT 24
538#define GET_CRL_DIST_POINT_ERR_INDEX(x) \
539 (((x) >> CRL_DIST_POINT_ERR_INDEX_SHIFT) & CRL_DIST_POINT_ERR_INDEX_MASK)
540
541#define CRL_DIST_POINT_ERR_CRL_ISSUER_BIT 0x80000000L
542#define IS_CRL_DIST_POINT_ERR_CRL_ISSUER(x) \
543 ((x) & CRL_DIST_POINT_ERR_CRL_ISSUER_BIT)
544
550
551#define CROSS_CERT_DIST_POINT_ERR_INDEX_MASK 0xff
552#define CROSS_CERT_DIST_POINT_ERR_INDEX_SHIFT 24
553#define GET_CROSS_CERT_DIST_POINT_ERR_INDEX(x) \
554 (((x) >> CROSS_CERT_DIST_POINT_ERR_INDEX_SHIFT) & \
555 CROSS_CERT_DIST_POINT_ERR_INDEX_MASK)
556
557typedef struct _CERT_PAIR {
561
569
570typedef struct _CERT_GENERAL_SUBTREE {
576
583
584#define CERT_EXCLUDED_SUBTREE_BIT 0x80000000L
585#define IS_CERT_EXCLUDED_SUBTREE(x) ((x) & CERT_EXCLUDED_SUBTREE_BIT)
586
587typedef struct _CRYPT_ATTRIBUTE {
592
593typedef struct _CRYPT_ATTRIBUTES {
597
598typedef struct _CERT_REQUEST_INFO {
605
611
617
618typedef struct _CRL_CONTEXT {
626
627#define SORTED_CTL_EXT_FLAGS_OFFSET (0*4)
628#define SORTED_CTL_EXT_COUNT_OFFSET (1*4)
629#define SORTED_CTL_EXT_MAX_COLLISION_OFFSET (2*4)
630#define SORTED_CTL_EXT_HASH_BUCKET_OFFSET (3*4)
631
632#define SORTED_CTL_EXT_HASHED_SUBJECT_IDENTIFIER_FLAG 0x1
633
634typedef struct _CERT_DSS_PARAMETERS {
639
640#define CERT_DSS_R_LEN 20
641#define CERT_DSS_S_LEN 20
642#define CERT_DSS_SIGNATURE_LEN (CERT_DSS_R_LEN + CERT_DSS_S_LEN)
643
644#define CERT_MAX_ENCODED_DSS_SIGNATURE_LEN (2 + 2*(2 + 20 +1))
645
646typedef struct _CERT_DH_PARAMETERS {
650
655
663
664#define CRYPT_X942_COUNTER_BYTE_LENGTH 4
665#define CRYPT_X942_KEY_LENGTH_BYTE_LENGTH 4
666#define CRYPT_X942_PUB_INFO_BYTE_LENGTH (512/8)
667
674
680
681#define CRYPT_RC2_40BIT_VERSION 160
682#define CRYPT_RC2_56BIT_VERSION 52
683#define CRYPT_RC2_64BIT_VERSION 120
684#define CRYPT_RC2_128BIT_VERSION 58
685
690
695
696typedef struct _VTableProvStruc {
698#ifdef WINE_STRICT_PROTOTYPES
701#else
704#endif
710
717
718typedef struct _CTL_USAGE {
722
723typedef struct _CTL_ENTRY {
728
729typedef struct _CTL_INFO {
742
743typedef struct _CTL_CONTEXT {
754
762
767
768typedef struct _CMSG_SIGNER_INFO {
778
779#define CMSG_VERIFY_SIGNER_PUBKEY 1
780#define CMSG_VERIFY_SIGNER_CERT 2
781#define CMSG_VERIFY_SIGNER_CHAIN 3
782#define CMSG_VERIFY_SIGNER_NULL 4
783
791
792typedef struct _CERT_REVOCATION_INFO {
801
802typedef struct _CERT_REVOCATION_PARA {
809#ifdef CERT_REVOCATION_PARA_HAS_EXTRA_FIELDS
810 DWORD dwUrlRetrievalTimeout;
811 BOOL fCheckFreshnessTime;
812 DWORD dwFreshnessTime;
813 LPFILETIME pftCurrentTime;
815#endif
817
818#define CERT_CONTEXT_REVOCATION_TYPE 1
819#define CERT_VERIFY_REV_CHAIN_FLAG 0x00000001
820#define CERT_VERIFY_CACHE_ONLY_BASED_REVOCATION 0x00000002
821#define CERT_VERIFY_REV_ACCUMULATIVE_TIMEOUT_FLAG 0x00000004
822
831
841
842#define CERT_VERIFY_INHIBIT_CTL_UPDATE_FLAG 0x1
843#define CERT_VERIFY_TRUSTED_SIGNERS_FLAG 0x2
844#define CERT_VERIFY_NO_TIME_CHECK_FLAG 0x4
845#define CERT_VERIFY_ALLOW_MORE_USAGE_FLAG 0x8
846#define CERT_VERIFY_UPDATED_CTL_FLAG 0x1
847
848typedef struct _CERT_CHAIN {
853
862
863typedef struct _CERT_TRUST_LIST_INFO {
868
869#define CERT_TRUST_NO_ERROR 0x00000000
870#define CERT_TRUST_IS_NOT_TIME_VALID 0x00000001
871#define CERT_TRUST_IS_NOT_TIME_NESTED 0x00000002
872#define CERT_TRUST_IS_REVOKED 0x00000004
873#define CERT_TRUST_IS_NOT_SIGNATURE_VALID 0x00000008
874#define CERT_TRUST_IS_NOT_VALID_FOR_USAGE 0x00000010
875#define CERT_TRUST_IS_UNTRUSTED_ROOT 0x00000020
876#define CERT_TRUST_REVOCATION_STATUS_UNKNOWN 0x00000040
877#define CERT_TRUST_IS_CYCLIC 0x00000080
878#define CERT_TRUST_INVALID_EXTENSION 0x00000100
879#define CERT_TRUST_INVALID_POLICY_CONSTRAINTS 0x00000200
880#define CERT_TRUST_INVALID_BASIC_CONSTRAINTS 0x00000400
881#define CERT_TRUST_INVALID_NAME_CONSTRAINTS 0x00000800
882#define CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT 0x00001000
883#define CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT 0x00002000
884#define CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT 0x00004000
885#define CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT 0x00008000
886#define CERT_TRUST_IS_OFFLINE_REVOCATION 0x01000000
887#define CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY 0x02000000
888#define CERT_TRUST_IS_EXPLICIT_DISTRUST 0x04000000
889#define CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT 0x08000000
890
891#define CERT_TRUST_IS_PARTIAL_CHAIN 0x00010000
892#define CERT_TRUST_CTL_IS_NOT_TIME_VALID 0x00020000
893#define CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID 0x00040000
894#define CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE 0x00080000
895
896#define CERT_TRUST_HAS_EXACT_MATCH_ISSUER 0x00000001
897#define CERT_TRUST_HAS_KEY_MATCH_ISSUER 0x00000002
898#define CERT_TRUST_HAS_NAME_MATCH_ISSUER 0x00000004
899#define CERT_TRUST_IS_SELF_SIGNED 0x00000008
900
901#define CERT_TRUST_HAS_PREFERRED_ISSUER 0x00000100
902#define CERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY 0x00000200
903#define CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS 0x00000400
904#define CERT_TRUST_IS_PEER_TRUSTED 0x00000800
905#define CERT_TRUST_HAS_CRL_VALIDITY_EXTENDED 0x00001000
906
907#define CERT_TRUST_IS_COMPLEX_CHAIN 0x00010000
908
909typedef struct _CERT_TRUST_STATUS {
913
914typedef struct _CERT_CHAIN_ELEMENT {
923
924typedef struct _CERT_SIMPLE_CHAIN {
933
936
946};
947
953
961
962#define CERT_CHAIN_POLICY_BASE ((LPCSTR)1)
963#define CERT_CHAIN_POLICY_AUTHENTICODE ((LPCSTR)2)
964#define CERT_CHAIN_POLICY_AUTHENTICODE_TS ((LPCSTR)3)
965#define CERT_CHAIN_POLICY_SSL ((LPCSTR)4)
966#define CERT_CHAIN_POLICY_BASIC_CONSTRAINTS ((LPCSTR)5)
967#define CERT_CHAIN_POLICY_NT_AUTH ((LPCSTR)6)
968#define CERT_CHAIN_POLICY_MICROSOFT_ROOT ((LPCSTR)7)
969
970#define CERT_CHAIN_POLICY_IGNORE_NOT_TIME_VALID_FLAG 0x00000001
971#define CERT_CHAIN_POLICY_IGNORE_CTL_NOT_TIME_VALID_FLAG 0x00000002
972#define CERT_CHAIN_POLICY_IGNORE_NOT_TIME_NESTED_FLAG 0x00000004
973#define CERT_CHAIN_POLICY_IGNORE_INVALID_BASIC_CONSTRAINTS_FLAG 0x00000008
974
975#define CERT_CHAIN_POLICY_IGNORE_ALL_NOT_TIME_VALID_FLAGS ( \
976 CERT_CHAIN_POLICY_IGNORE_NOT_TIME_VALID_FLAG \
977 CERT_CHAIN_POLICY_IGNORE_CTL_NOT_TIME_VALID_FLAG \
978 CERT_CHAIN_POLICY_IGNORE_NOT_TIME_NESTED_FLAG )
979
980#define CERT_CHAIN_POLICY_ALLOW_UNKNOWN_CA_FLAG 0x00000010
981#define CERT_CHAIN_POLICY_IGNORE_WRONG_USAGE_FLAG 0x00000020
982#define CERT_CHAIN_POLICY_IGNORE_INVALID_NAME_FLAG 0x00000040
983#define CERT_CHAIN_POLICY_IGNORE_INVALID_POLICY_FLAG 0x00000080
984
985#define CERT_CHAIN_POLICY_IGNORE_END_REV_UNKNOWN_FLAG 0x00000100
986#define CERT_CHAIN_POLICY_IGNORE_CTL_SIGNER_REV_UNKNOWN_FLAG 0x00000200
987#define CERT_CHAIN_POLICY_IGNORE_CA_REV_UNKNOWN_FLAG 0x00000400
988#define CERT_CHAIN_POLICY_IGNORE_ROOT_REV_UNKNOWN_FLAG 0x00000800
989
990#define CERT_CHAIN_POLICY_IGNORE_ALL_REV_UNKNOWN_FLAGS ( \
991 CERT_CHAIN_POLICY_IGNORE_END_REV_UNKNOWN_FLAG \
992 CERT_CHAIN_POLICY_IGNORE_CTL_SIGNER_REV_UNKNOWN_FLAG \
993 CERT_CHAIN_POLICY_IGNORE_CA_REV_UNKNOWN_FLAG \
994 CERT_CHAIN_POLICY_IGNORE_ROOT_REV_UNKNOWN_FLAG )
995
996#define CERT_CHAIN_POLICY_IGNORE_PEER_TRUST_FLAG 0x00001000
997#define CERT_CHAIN_POLICY_IGNORE_NOT_SUPPORTED_CRITICAL_EXT_FLAG 0x00002000
998#define CERT_CHAIN_POLICY_TRUST_TESTROOT_FLAG 0x00004000
999#define CERT_CHAIN_POLICY_ALLOW_TESTROOT_FLAG 0x00008000
1000#define MICROSOFT_ROOT_CERT_CHAIN_POLICY_ENABLE_TEST_ROOT_FLAG 0x00010000
1001
1008
1014
1021
1023 union {
1032
1033/* Values for HTTPSPolicyCallbackData's dwAuthType */
1034#define AUTHTYPE_CLIENT 1
1035#define AUTHTYPE_SERVER 2
1036/* Values for HTTPSPolicyCallbackData's fdwChecks are defined in wininet.h */
1037
1038#define BASIC_CONSTRAINTS_CERT_CHAIN_POLICY_CA_FLAG 0x80000000
1039#define BASIC_CONSTRAINTS_CERT_CHAIN_POLICY_END_ENTITY_FLAG 0x40000000
1040
1041#define MICROSOFT_ROOT_CERT_CHAIN_POLICY_ENABLE_TEST_ROOT_FLAG 0x00010000
1042
1043#define USAGE_MATCH_TYPE_AND 0x00000000
1044#define USAGE_MATCH_TYPE_OR 0x00000001
1045
1046typedef struct _CERT_USAGE_MATCH {
1050
1051typedef struct _CTL_USAGE_MATCH {
1055
1056#define CERT_CHAIN_REVOCATION_CHECK_END_CERT 0x10000000
1057#define CERT_CHAIN_REVOCATION_CHECK_CHAIN 0x20000000
1058#define CERT_CHAIN_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT 0x40000000
1059#define CERT_CHAIN_REVOCATION_CHECK_CACHE_ONLY 0x80000000
1060
1061#define CERT_CHAIN_REVOCATION_ACCUMULATIVE_TIMEOUT 0x08000000
1062
1063#define CERT_CHAIN_DISABLE_PASS1_QUALITY_FILTERING 0x00000040
1064#define CERT_CHAIN_RETURN_LOWER_QUALITY_CONTEXTS 0x00000080
1065#define CERT_CHAIN_DISABLE_AUTH_ROOT_AUTO_UPDATE 0x00000100
1066#define CERT_CHAIN_TIMESTAMP_TIME 0x00000200
1067
1068typedef struct _CERT_CHAIN_PARA {
1071#ifdef CERT_CHAIN_PARA_HAS_EXTRA_FIELDS
1072 CERT_USAGE_MATCH RequestedIssuancePolicy;
1073 DWORD dwUrlRetrievalTimeout;
1074 BOOL fCheckRevocationFreshnessTime;
1075 DWORD dwRevocationFreshnessTime;
1076 LPFILETIME pftCacheResync;
1077#endif
1079
1083
1093
1095 union {
1099 union {
1105
1106typedef BOOL
1108 _In_ LPCWSTR pwszStoreLocation,
1110 _Reserved_ void *pvReserved,
1111 _Inout_opt_ void *pvArg);
1112
1113typedef BOOL
1115 _In_ const void *pvSystemStore,
1117 _In_ PCERT_SYSTEM_STORE_INFO pStoreInfo,
1118 _Reserved_ void *pvReserved,
1119 _Inout_opt_ void *pvArg);
1120
1121typedef BOOL
1123 _In_ const void *pvSystemStore,
1125 _In_ LPCWSTR pwszStoreName,
1127 _Reserved_ void *pvReserved,
1128 _Inout_opt_ void *pvArg);
1129
1130/* Encode/decode object */
1131typedef LPVOID (__WINE_ALLOC_SIZE(1) WINAPI *PFN_CRYPT_ALLOC)(_In_ size_t cbsize);
1133
1134typedef struct _CRYPT_ENCODE_PARA {
1136 PFN_CRYPT_ALLOC pfnAlloc;
1139
1140typedef struct _CRYPT_DECODE_PARA {
1142 PFN_CRYPT_ALLOC pfnAlloc;
1145
1154
1155typedef BOOL
1157 _In_ LPCSTR lpszStoreProvider,
1159 _In_opt_ HCRYPTPROV_LEGACY hCryptProv,
1161 _In_opt_ const void *pvPara,
1162 _In_ HCERTSTORE hCertStore,
1163 _Inout_ PCERT_STORE_PROV_INFO pStoreProvInfo);
1164
1165typedef void
1167 _Inout_opt_ HCERTSTOREPROV hStoreProv,
1169
1170typedef
1171_Success_(return != 0)
1172BOOL
1173(WINAPI *PFN_CERT_STORE_PROV_READ_CERT)(
1174 _Inout_ HCERTSTOREPROV hStoreProv,
1178
1179typedef BOOL
1181 _Inout_ HCERTSTOREPROV hStoreProv,
1184
1185typedef BOOL
1187 _Inout_ HCERTSTOREPROV hStoreProv,
1190
1191typedef BOOL
1193 _Inout_ HCERTSTOREPROV hStoreProv,
1197 _In_opt_ const void *pvData);
1198
1199typedef
1200_Success_(return != 0)
1201BOOL
1202(WINAPI *PFN_CERT_STORE_PROV_READ_CRL)(
1203 _Inout_ HCERTSTOREPROV hStoreProv,
1207
1208typedef BOOL
1210 _Inout_ HCERTSTOREPROV hStoreProv,
1213
1214typedef BOOL
1216 _Inout_ HCERTSTOREPROV hStoreProv,
1219
1220typedef BOOL
1222 _Inout_ HCERTSTOREPROV hStoreProv,
1226 _In_opt_ const void *pvData);
1227
1228typedef
1229_Success_(return != 0)
1230BOOL
1231(WINAPI *PFN_CERT_STORE_PROV_READ_CTL)(
1232 _Inout_ HCERTSTOREPROV hStoreProv,
1236
1237typedef BOOL
1239 _Inout_ HCERTSTOREPROV hStoreProv,
1242
1243typedef BOOL
1245 _Inout_ HCERTSTOREPROV hStoreProv,
1248
1249typedef BOOL
1251 _Inout_ HCERTSTOREPROV hStoreProv,
1255 _In_opt_ const void *pvData);
1256
1257typedef BOOL
1259 _Inout_ HCERTSTOREPROV hStoreProv,
1261 _In_ DWORD dwCtrlType,
1262 _In_opt_ void const *pvCtrlPara);
1263
1269 const void *pvFindPara;
1273
1274typedef
1275_Success_(return != 0)
1276BOOL
1277(WINAPI *PFN_CERT_STORE_PROV_FIND_CERT)(
1278 _Inout_ HCERTSTOREPROV hStoreProv,
1284
1285typedef BOOL
1287 _Inout_ HCERTSTOREPROV hStoreProv,
1289 _In_ void *pvStoreProvFindInfo,
1291
1292typedef BOOL
1294 _Inout_ HCERTSTOREPROV hStoreProv,
1300
1301typedef
1302_Success_(return != 0)
1303BOOL
1304(WINAPI *PFN_CERT_STORE_PROV_FIND_CRL)(
1305 _Inout_ HCERTSTOREPROV hStoreProv,
1311
1312typedef BOOL
1314 _Inout_ HCERTSTOREPROV hStoreProv,
1316 _In_ void *pvStoreProvFindInfo,
1318
1319typedef BOOL
1321 _Inout_ HCERTSTOREPROV hStoreProv,
1327
1328typedef
1329_Success_(return != 0)
1330BOOL
1331(WINAPI *PFN_CERT_STORE_PROV_FIND_CTL)(
1332 _In_ HCERTSTOREPROV hStoreProv,
1338
1339typedef BOOL
1341 _Inout_ HCERTSTOREPROV hStoreProv,
1347
1351 void *pvFree;
1353
1358
1359typedef BOOL
1362 _In_ LPCSTR pszFuncName,
1364 _In_ DWORD cValue,
1365 _In_reads_(cValue) const DWORD rgdwValueType[],
1366 _In_reads_(cValue) LPCWSTR const rgpwszValueName[],
1367 _In_reads_(cValue) const BYTE * const rgpbValueData[],
1368 _In_reads_(cValue) const DWORD rgcbValueData[],
1369 _Inout_opt_ void *pvArg);
1370
1371#define CRYPT_MATCH_ANY_ENCODING_TYPE 0xffffffff
1372
1373#define CALG_OID_INFO_CNG_ONLY 0xffffffff
1374#define CALG_OID_INFO_PARAMETERS 0xfffffffe
1375
1376#if defined(__GNUC__)
1377#define CRYPT_OID_INFO_HASH_PARAMETERS_ALGORITHM (const WCHAR []){'C','r','y','p','t','O','I','D','I','n','f','o','H','a','s','h','P','a','r','a','m','e','t','e','r','s',0}
1378#define CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM (const WCHAR []){'C','r','y','p','t','O','I','D','I','n','f','o','E','C','C','P','a','r','a','m','e','t','e','r','s',0}
1379#define CRYPT_OID_INFO_MGF1_PARAMETERS_ALGORITHM (const WCHAR []){'C','r','y','p','t','O','I','D','I','n','f','o','M','g','f','1','P','a','r','a','m','e','t','e','r','s',0}
1380#define CRYPT_OID_INFO_NO_SIGN_ALGORITHM (const WCHAR []){'C','r','y','p','t','O','I','D','I','n','f','o','N','o','S','i','g','n',0}
1381#define CRYPT_OID_INFO_OAEP_PARAMETERS_ALGORITHM (const WCHAR []){'C','r','y','p','t','O','I','D','I','n','f','o','O','A','E','P','P','a','r','a','m','e','t','e','r','s',0}
1382#define CRYPT_OID_INFO_ECC_WRAP_PARAMETERS_ALGORITHM (const WCHAR []){'C','r','y','p','t','O','I','D','I','n','f','o','E','C','C','W','r','a','p','P','a','r','a','m','e','t','e','r','s',0}
1383#define CRYPT_OID_INFO_NO_PARAMETERS_ALGORITHM (const WCHAR []){'C','r','y','p','t','O','I','D','I','n','f','o','N','o','P','a','r','a','m','e','t','e','r','s',0}
1384#elif defined(_MSC_VER)
1385#define CRYPT_OID_INFO_HASH_PARAMETERS_ALGORITHM L"CryptOIDInfoHashParameters"
1386#define CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM L"CryptOIDInfoECCParameters"
1387#define CRYPT_OID_INFO_MGF1_PARAMETERS_ALGORITHM L"CryptOIDInfoMgf1Parameters"
1388#define CRYPT_OID_INFO_NO_SIGN_ALGORITHM L"CryptOIDInfoNoSign"
1389#define CRYPT_OID_INFO_OAEP_PARAMETERS_ALGORITHM L"CryptOIDInfoOAEPParameters"
1390#define CRYPT_OID_INFO_ECC_WRAP_PARAMETERS_ALGORITHM L"CryptOIDInfoECCWrapParameters"
1391#define CRYPT_OID_INFO_NO_PARAMETERS_ALGORITHM L"CryptOIDInfoNoParameters"
1392#else
1393static const WCHAR CRYPT_OID_INFO_HASH_PARAMETERS_ALGORITHM[] = {'C','r','y','p','t','O','I','D','I','n','f','o','H','a','s','h','P','a','r','a','m','e','t','e','r','s',0};
1394static const WCHAR CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM[] = {'C','r','y','p','t','O','I','D','I','n','f','o','E','C','C','P','a','r','a','m','e','t','e','r','s',0};
1395static const WCHAR CRYPT_OID_INFO_MGF1_PARAMETERS_ALGORITHM[] = {'C','r','y','p','t','O','I','D','I','n','f','o','M','g','f','1','P','a','r','a','m','e','t','e','r','s',0};
1396static const WCHAR CRYPT_OID_INFO_NO_SIGN_ALGORITHM[] = {'C','r','y','p','t','O','I','D','I','n','f','o','N','o','S','i','g','n',0};
1397static const WCHAR CRYPT_OID_INFO_OAEP_PARAMETERS_ALGORITHM[] = {'C','r','y','p','t','O','I','D','I','n','f','o','O','A','E','P','P','a','r','a','m','e','t','e','r','s',0};
1398static const WCHAR CRYPT_OID_INFO_ECC_WRAP_PARAMETERS_ALGORITHM[] = {'C','r','y','p','t','O','I','D','I','n','f','o','E','C','C','W','r','a','p','P','a','r','a','m','e','t','e','r','s',0};
1399static const WCHAR CRYPT_OID_INFO_NO_PARAMETERS_ALGORITHM[] = {'C','r','y','p','t','O','I','D','I','n','f','o','N','o','P','a','r','a','m','e','t','e','r','s',0};
1400#endif
1401
1402typedef struct _CRYPT_OID_INFO {
1407 union {
1413#ifdef CRYPT_OID_INFO_HAS_EXTRA_FIELDS
1414 LPCWSTR pwszCNGAlgid;
1415 LPCWSTR pwszCNGExtraAlgid;
1416#endif
1419
1420typedef BOOL
1422 _In_ PCCRYPT_OID_INFO pInfo,
1423 _Inout_opt_ void *pvArg);
1424
1441#ifdef CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS
1442 CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
1443 void * pvHashEncryptionAuxInfo;
1444#endif
1446
1447#define CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAG 0x00000001
1448#define CRYPT_MESSAGE_ENCAPSULATED_CONTENT_OUT_FLAG 0x00000002
1449#define CRYPT_MESSAGE_KEYID_SIGNER_FLAG 0x00000004
1450#define CRYPT_MESSAGE_SILENT_KEYSET_FLAG 0x00000008
1451
1454 _Inout_opt_ void *pvGetArg,
1456 _In_ PCERT_INFO pSignerId,
1457 _In_ HCERTSTORE hMsgCertStore);
1458
1464 void * pvGetArg;
1466
1476
1477#define CRYPT_MESSAGE_KEYID_RECIPIENT_FLAG 0x00000004
1478
1484#ifdef CRYPT_DECRYPT_MESSAGE_PARA_HAS_EXTRA_FIELDS
1485 DWORD dwFlags;
1486#endif
1488
1496
1505
1511
1512typedef struct _CRYPT_URL_ARRAY {
1516
1517typedef struct _CRYPT_URL_INFO {
1523
1524#define URL_OID_CERTIFICATE_ISSUER ((LPCSTR)1)
1525#define URL_OID_CERTIFICATE_CRL_DIST_POINT ((LPCSTR)2)
1526#define URL_OID_CTL_ISSUER ((LPCSTR)3)
1527#define URL_OID_CTL_NEXT_UPDATE ((LPCSTR)4)
1528#define URL_OID_CRL_ISSUER ((LPCSTR)5)
1529#define URL_OID_CERTIFICATE_FRESHEST_CRL ((LPCSTR)6)
1530#define URL_OID_CRL_FRESHEST_CRL ((LPCSTR)7)
1531#define URL_OID_CROSS_CERT_DIST_POINT ((LPCSTR)8)
1532#define URL_OID_CERTIFICATE_OCSP ((LPCSTR)9)
1533#define URL_OID_CERTIFICATE_OCSP_AND_CRL_DIST_POINT ((LPCSTR)10)
1534#define URL_OID_CERTIFICATE_CRL_DIST_POINT_AND_OCSP ((LPCSTR)11)
1535#define URL_OID_CROSS_CERT_SUBJECT_INFO_ACCESS ((LPCSTR)12)
1536
1537#define URL_OID_GET_OBJECT_URL_FUNC "UrlDllGetObjectUrl"
1538
1540
1541typedef void
1543 _In_ LPSTR pszParamOid,
1544 _In_ LPVOID pvParam);
1545
1546#define CRYPT_PARAM_ASYNC_RETRIEVAL_COMPLETION ((LPCSTR)1)
1547#define CRYPT_PARAM_CANCEL_ASYNC_RETRIEVAL ((LPCSTR)2)
1548
1549typedef void
1551 _Inout_opt_ void *pvCompletion,
1552 _In_ DWORD dwCompletionCode,
1553 _In_ LPCSTR pszURL,
1555 _In_ void *pvObject);
1556
1561
1562typedef BOOL
1565
1566typedef struct _CRYPT_BLOB_ARRAY
1567{
1571
1572typedef struct _CRYPT_CREDENTIALS {
1577
1578#define CREDENTIAL_OID_PASSWORD_CREDENTIALS_A ((LPCSTR)1)
1579#define CREDENTIAL_OID_PASSWORD_CREDENTIALS_W ((LPCSTR)2)
1580#define CREDENTIAL_OID_PASSWORD_CREDENTIALS \
1581 WINELIB_NAME_AW(CREDENTIAL_OID_PASSWORD_CREDENTIALS_)
1582
1588
1594#define CRYPT_PASSWORD_CREDENTIALS WINELIB_NAME_AW(CRYPT_PASSWORD_CREDENTIALS)
1595#define PCRYPT_PASSWORD_CREDENTIALS WINELIB_NAME_AW(PCRYPT_PASSWORD_CREDENTIALS)
1596
1602
1603typedef void
1607 _Inout_opt_ void *pvFreeContext);
1608
1609#define SCHEME_OID_RETRIEVE_ENCODED_OBJECT_FUNC \
1610 "SchemeDllRetrieveEncodedObject"
1611#define SCHEME_OID_RETRIEVE_ENCODED_OBJECTW_FUNC \
1612 "SchemeDllRetrieveEncodedObjectW"
1613/* The signature of SchemeDllRetrieveEncodedObjectW is:
1614BOOL WINAPI SchemeDllRetrieveEncodedObjectW(LPCWSTR pwszUrl,
1615 LPCSTR pszObjectOid, DWORD dwRetrievalFlags, DWORD dwTimeout,
1616 PCRYPT_BLOB_ARRAY pObject, PFN_FREE_ENCODED_OBJECT_FUNC *ppfnFreeObject,
1617 void **ppvFreeContext, HCRYPTASYNC hAsyncRetrieve,
1618 PCRYPT_CREDENTIALS pCredentials, PCRYPT_RETRIEVE_AUX_INFO pAuxInfo);
1619 */
1620
1621#define CONTEXT_OID_CREATE_OBJECT_CONTEXT_FUNC "ContextDllCreateObjectContext"
1622/* The signature of ContextDllCreateObjectContext is:
1623BOOL WINAPI ContextDllCreateObjectContext(LPCSTR pszObjectOid,
1624 DWORD dwRetrievalFlags, PCRYPT_BLOB_ARRAY pObject, void **ppvContxt);
1625 */
1626
1627#define CONTEXT_OID_CERTIFICATE ((LPCSTR)1)
1628#define CONTEXT_OID_CRL ((LPCSTR)2)
1629#define CONTEXT_OID_CTL ((LPCSTR)3)
1630#define CONTEXT_OID_PKCS7 ((LPCSTR)4)
1631#define CONTEXT_OID_CAPI2_ANY ((LPCSTR)5)
1632
1633#define CRYPT_RETRIEVE_MULTIPLE_OBJECTS 0x00000001
1634#define CRYPT_CACHE_ONLY_RETRIEVAL 0x00000002
1635#define CRYPT_WIRE_ONLY_RETRIEVAL 0x00000004
1636#define CRYPT_DONT_CACHE_RESULT 0x00000008
1637#define CRYPT_ASYNC_RETRIEVAL 0x00000010
1638#define CRYPT_STICKY_CACHE_RETRIEVAL 0x00001000
1639#define CRYPT_LDAP_SCOPE_BASE_ONLY_RETRIEVAL 0x00002000
1640#define CRYPT_OFFLINE_CHECK_RETRIEVAL 0x00004000
1641#define CRYPT_LDAP_INSERT_ENTRY_ATTRIBUTE 0x00008000
1642#define CRYPT_LDAP_SIGN_RETRIEVAL 0x00010000
1643#define CRYPT_NO_AUTH_RETRIEVAL 0x00020000
1644#define CRYPT_LDAP_AREC_EXCLUSIVE_RETRIEVAL 0x00040000
1645#define CRYPT_AIA_RETRIEVAL 0x00080000
1646
1647#define CRYPT_VERIFY_CONTEXT_SIGNATURE 0x00000020
1648#define CRYPT_VERIFY_DATA_HASH 0x00000040
1649#define CRYPT_KEEP_TIME_VALID 0x00000080
1650#define CRYPT_DONT_VERIFY_SIGNATURE 0x00000100
1651#define CRYPT_DONT_CHECK_TIME_VALIDITY 0x00000200
1652#define CRYPT_CHECK_FRESHNESS_TIME_VALIDITY 0x00000400
1653#define CRYPT_ACCUMULATIVE_TIMEOUT 0x00000800
1654
1655typedef BOOL
1658 _Inout_opt_ void *pvArg);
1659
1661{
1666
1667#define TIME_VALID_OID_GET_OBJECT_FUNC "TimeValidDllGetObject"
1668
1669#define TIME_VALID_OID_GET_CTL ((LPCSTR)1)
1670#define TIME_VALID_OID_GET_CRL ((LPCSTR)2)
1671#define TIME_VALID_OID_GET_CRL_FROM_CERT ((LPCSTR)3)
1672#define TIME_VALID_OID_GET_FRESHEST_CRL_FROM_CERT ((LPCSTR)4)
1673#define TIME_VALID_OID_GET_FRESHEST_CRL_FROM_CRL ((LPCSTR)5)
1674
1675#define TIME_VALID_OID_FLUSH_OBJECT_FUNC "TimeValidDllFlushObject"
1676
1677#define TIME_VALID_OID_FLUSH_CTL ((LPCSTR)1)
1678#define TIME_VALID_OID_FLUSH_CRL ((LPCSTR)2)
1679#define TIME_VALID_OID_FLUSH_CRL_FROM_CERT ((LPCSTR)3)
1680#define TIME_VALID_OID_FLUSH_FRESHEST_CRL_FROM_CERT ((LPCSTR)4)
1681#define TIME_VALID_OID_FLUSH_FRESHEST_CRL_FROM_CRL ((LPCSTR)5)
1682
1683/* OID group IDs */
1684#define CRYPT_HASH_ALG_OID_GROUP_ID 1
1685#define CRYPT_ENCRYPT_ALG_OID_GROUP_ID 2
1686#define CRYPT_PUBKEY_ALG_OID_GROUP_ID 3
1687#define CRYPT_SIGN_ALG_OID_GROUP_ID 4
1688#define CRYPT_RDN_ATTR_OID_GROUP_ID 5
1689#define CRYPT_EXT_OR_ATTR_OID_GROUP_ID 6
1690#define CRYPT_ENHKEY_USAGE_OID_GROUP_ID 7
1691#define CRYPT_POLICY_OID_GROUP_ID 8
1692#define CRYPT_TEMPLATE_OID_GROUP_ID 9
1693#define CRYPT_LAST_OID_GROUP_ID 9
1694
1695#define CRYPT_FIRST_ALG_OID_GROUP_ID CRYPT_HASH_ALG_OID_GROUP_ID
1696#define CRYPT_LAST_ALG_OID_GROUP_ID CRYPT_SIGN_ALG_OID_GROUP_ID
1697
1698#define CRYPT_OID_INHIBIT_SIGNATURE_FORMAT_FLAG 0x1
1699#define CRYPT_OID_USE_PUBKEY_PARA_FOR_PKCS7_FLAG 0x2
1700#define CRYPT_OID_NO_NULL_ALGORITHM_PARA_FLAG 0x4
1701
1702#define CRYPT_OID_INFO_OID_KEY 1
1703#define CRYPT_OID_INFO_NAME_KEY 2
1704#define CRYPT_OID_INFO_ALGID_KEY 3
1705#define CRYPT_OID_INFO_SIGN_KEY 4
1706
1707/* Algorithm IDs */
1708
1709#define GET_ALG_CLASS(x) (x & (7 << 13))
1710#define GET_ALG_TYPE(x) (x & (15 << 9))
1711#define GET_ALG_SID(x) (x & (511))
1712
1713/* Algorithm Classes */
1714#define ALG_CLASS_ANY (0)
1715#define ALG_CLASS_SIGNATURE (1 << 13)
1716#define ALG_CLASS_MSG_ENCRYPT (2 << 13)
1717#define ALG_CLASS_DATA_ENCRYPT (3 << 13)
1718#define ALG_CLASS_HASH (4 << 13)
1719#define ALG_CLASS_KEY_EXCHANGE (5 << 13)
1720#define ALG_CLASS_ALL (7 << 13)
1721/* Algorithm types */
1722#define ALG_TYPE_ANY (0)
1723#define ALG_TYPE_DSS (1 << 9)
1724#define ALG_TYPE_RSA (2 << 9)
1725#define ALG_TYPE_BLOCK (3 << 9)
1726#define ALG_TYPE_STREAM (4 << 9)
1727#define ALG_TYPE_DH (5 << 9)
1728#define ALG_TYPE_SECURECHANNEL (6 << 9)
1729#define ALG_TYPE_DH_EPHEM (7 << 9) /* FIXME: find the real TYPE name */
1730
1731/* SIDs */
1732#define ALG_SID_ANY (0)
1733/* RSA SIDs */
1734#define ALG_SID_RSA_ANY 0
1735#define ALG_SID_RSA_PKCS 1
1736#define ALG_SID_RSA_MSATWORK 2
1737#define ALG_SID_RSA_ENTRUST 3
1738#define ALG_SID_RSA_PGP 4
1739/* DSS SIDs */
1740#define ALG_SID_DSS_ANY 0
1741#define ALG_SID_DSS_PKCS 1
1742#define ALG_SID_DSS_DMS 2
1743#define ALG_SID_ECDSA 3
1744
1745/* DES SIDs */
1746#define ALG_SID_DES 1
1747#define ALG_SID_3DES 3
1748#define ALG_SID_DESX 4
1749#define ALG_SID_IDEA 5
1750#define ALG_SID_CAST 6
1751#define ALG_SID_SAFERSK64 7
1752#define ALG_SID_SAFERSK128 8
1753#define ALG_SID_3DES_112 9
1754#define ALG_SID_CYLINK_MEK 12
1755#define ALG_SID_RC5 13
1756#define ALG_SID_AES_128 14
1757#define ALG_SID_AES_192 15
1758#define ALG_SID_AES_256 16
1759#define ALG_SID_AES 17
1760/* Fortezza */
1761#define ALG_SID_SKIPJACK 10
1762#define ALG_SID_TEK 11
1763/* Diffie-Hellman SIDs */
1764#define ALG_SID_DH_SANDF 1
1765#define ALG_SID_DH_EPHEM 2
1766#define ALG_SID_AGREED_KEY_ANY 3
1767#define ALG_SID_KEA 4
1768#define ALG_SID_ECDH 5
1769#define ALG_SID_ECDH_EPHEM 6 /* FIXME: find the real SID name */
1770/* RC2 SIDs */
1771#define ALG_SID_RC4 1
1772#define ALG_SID_RC2 2
1773#define ALG_SID_SEAL 2
1774/* Hash SIDs */
1775#define ALG_SID_MD2 1
1776#define ALG_SID_MD4 2
1777#define ALG_SID_MD5 3
1778#define ALG_SID_SHA 4
1779#define ALG_SID_SHA1 ALG_SID_SHA
1780#define ALG_SID_MAC 5
1781#define ALG_SID_RIPEMD 6
1782#define ALG_SID_RIPEMD160 7
1783#define ALG_SID_SSL3SHAMD5 8
1784#define ALG_SID_HMAC 9
1785#define ALG_SID_TLS1PRF 10
1786#define ALG_SID_HASH_REPLACE_OWF 11
1787#define ALG_SID_SHA_256 12
1788#define ALG_SID_SHA_384 13
1789#define ALG_SID_SHA_512 14
1790/* SCHANNEL SIDs */
1791#define ALG_SID_SSL3_MASTER 1
1792#define ALG_SID_SCHANNEL_MASTER_HASH 2
1793#define ALG_SID_SCHANNEL_MAC_KEY 3
1794#define ALG_SID_PCT1_MASTER 4
1795#define ALG_SID_SSL2_MASTER 5
1796#define ALG_SID_TLS1_MASTER 6
1797#define ALG_SID_SCHANNEL_ENC_KEY 7
1798#define ALG_SID_EXAMPLE 80
1799
1800#define ALG_SID_ECMQV 1
1801
1802/* Algorithm Definitions */
1803#define CALG_MD2 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD2)
1804#define CALG_MD4 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD4)
1805#define CALG_MD5 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD5)
1806#define CALG_SHA (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA)
1807#define CALG_SHA1 CALG_SHA
1808#define CALG_MAC (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MAC)
1809#define CALG_SSL3_SHAMD5 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SSL3SHAMD5)
1810#define CALG_HMAC (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_HMAC)
1811#define CALG_TLS1PRF (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_TLS1PRF)
1812#define CALG_HASH_REPLACE_OWF (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_HASH_REPLACE_OWF)
1813#define CALG_SHA_256 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_256)
1814#define CALG_SHA_384 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_384)
1815#define CALG_SHA_512 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_512)
1816#define CALG_RSA_SIGN (ALG_CLASS_SIGNATURE | ALG_TYPE_RSA | ALG_SID_RSA_ANY)
1817#define CALG_DSS_SIGN (ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_DSS_ANY)
1818#define CALG_NO_SIGN (ALG_CLASS_SIGNATURE | ALG_TYPE_ANY | ALG_SID_ANY)
1819#define CALG_DH_SF (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH | ALG_SID_DH_SANDF)
1820#define CALG_DH_EPHEM (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH | ALG_SID_DH_EPHEM)
1821#define CALG_AGREEDKEY_ANY (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH | ALG_SID_AGREED_KEY_ANY)
1822#define CALG_KEA_KEYX (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH | ALG_SID_KEA)
1823#define CALG_HUGHES_MD5 (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_ANY | ALG_SID_MD5)
1824#define CALG_RSA_KEYX (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_RSA | ALG_SID_RSA_ANY)
1825#define CALG_ECDH (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH | ALG_SID_ECDH)
1826#define CALG_ECDH_EPHEM (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH_EPHEM | ALG_SID_ECDH_EPHEM) /* FIXME: find the original TYPE and SID names */
1827#define CALG_ECMQV (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_ANY | ALG_SID_ECMQV)
1828#define CALG_DES (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_DES)
1829#define CALG_RC2 (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_RC2)
1830#define CALG_3DES (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_3DES)
1831#define CALG_3DES_112 (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_3DES_112)
1832#define CALG_DESX (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_DESX)
1833#define CALG_AES_128 (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_128)
1834#define CALG_AES_192 (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_192)
1835#define CALG_AES_256 (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_256)
1836#define CALG_AES (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES)
1837#define CALG_RC4 (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM | ALG_SID_RC4)
1838#define CALG_SEAL (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM | ALG_SID_SEAL)
1839#define CALG_RC5 (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM | ALG_SID_RC5)
1840#define CALG_SKIPJACK (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_SKIPJACK)
1841#define CALG_TEK (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_TEK)
1842#define CALG_CYLINK_MEK (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_CYLINK_MEK)
1843#define CALG_SSL3_MASTER (ALG_CLASS_MSG_ENCRYPT | ALG_TYPE_SECURECHANNEL | ALG_SID_SSL3_MASTER)
1844#define CALG_SCHANNEL_MASTER_HASH (ALG_CLASS_MSG_ENCRYPT | ALG_TYPE_SECURECHANNEL | ALG_SID_SCHANNEL_MASTER_HASH)
1845#define CALG_SCHANNEL_MAC_KEY (ALG_CLASS_MSG_ENCRYPT | ALG_TYPE_SECURECHANNEL | ALG_SID_SCHANNEL_MAC_KEY)
1846#define CALG_SCHANNEL_ENC_KEY (ALG_CLASS_MSG_ENCRYPT | ALG_TYPE_SECURECHANNEL | ALG_SID_SCHANNEL_ENC_KEY)
1847#define CALG_PCT1_MASTER (ALG_CLASS_MSG_ENCRYPT | ALG_TYPE_SECURECHANNEL | ALG_SID_PCT1_MASTER)
1848#define CALG_SSL2_MASTER (ALG_CLASS_MSG_ENCRYPT | ALG_TYPE_SECURECHANNEL | ALG_SID_SSL2_MASTER)
1849#define CALG_TLS1_MASTER (ALG_CLASS_MSG_ENCRYPT | ALG_TYPE_SECURECHANNEL | ALG_SID_TLS1_MASTER)
1850#define CALG_ECDSA (ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_ECDSA)
1851/* Protocol Flags */
1852#define CRYPT_FLAG_PCT1 0x0001
1853#define CRYPT_FLAG_SSL2 0x0002
1854#define CRYPT_FLAG_SSL3 0x0004
1855#define CRYPT_FLAG_TLS1 0x0008
1856#define CRYPT_FLAG_IPSEC 0x0010
1857#define CRYPT_FLAG_SIGNING 0x0020
1858
1859/* Provider names */
1860#define MS_DEF_PROV_A "Microsoft Base Cryptographic Provider v1.0"
1861#if defined(__GNUC__)
1862# define MS_DEF_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
1863 'B','a','s','e',' ','C','r','y','p','t','o','g','r','a','p','h','i','c',' ', \
1864 'P','r','o','v','i','d','e','r',' ','v','1','.','0',0 }
1865#elif defined(_MSC_VER)
1866# define MS_DEF_PROV_W L"Microsoft Base Cryptographic Provider v1.0"
1867#else
1868static const WCHAR MS_DEF_PROV_W[] = { 'M','i','c','r','o','s','o','f','t',' ',
1869 'B','a','s','e',' ','C','r','y','p','t','o','g','r','a','p','h','i','c',' ',
1870 'P','r','o','v','i','d','e','r',' ','v','1','.','0',0 };
1871#endif
1872#define MS_DEF_PROV WINELIB_NAME_AW(MS_DEF_PROV_)
1873
1874#define MS_ENHANCED_PROV_A "Microsoft Enhanced Cryptographic Provider v1.0"
1875#if defined(__GNUC__)
1876# define MS_ENHANCED_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
1877 'E','n','h','a','n','c','e','d',' ','C','r','y','p','t','o','g','r','a','p','h','i','c',' ', \
1878 'P','r','o','v','i','d','e','r',' ','v','1','.','0',0 }
1879#elif defined(_MSC_VER)
1880# define MS_ENHANCED_PROV_W L"Microsoft Enhanced Cryptographic Provider v1.0"
1881#else
1882static const WCHAR MS_ENHANCED_PROV_W[] = { 'M','i','c','r','o','s','o','f','t',' ',
1883 'E','n','h','a','n','c','e','d',' ','C','r','y','p','t','o','g','r','a','p','h','i','c',' ',
1884 'P','r','o','v','i','d','e','r',' ','v','1','.','0',0 };
1885#endif
1886#define MS_ENHANCED_PROV WINELIB_NAME_AW(MS_ENHANCED_PROV_)
1887
1888#define MS_STRONG_PROV_A "Microsoft Strong Cryptographic Provider"
1889#if defined(__GNUC__)
1890# define MS_STRONG_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
1891 'S','t','r','o','n','g',' ','C','r','y','p','t','o','g','r','a','p','h','i','c',' ', \
1892 'P','r','o','v','i','d','e','r',0 }
1893#elif defined(_MSC_VER)
1894# define MS_STRONG_PROV_W L"Microsoft Strong Cryptographic Provider"
1895#else
1896static const WCHAR MS_STRONG_PROV_W[] = { 'M','i','c','r','o','s','o','f','t',' ',
1897 'S','t','r','o','n','g',' ','C','r','y','p','t','o','g','r','a','p','h','i','c',' ',
1898 'P','r','o','v','i','d','e','r',0 };
1899#endif
1900#define MS_STRONG_PROV WINELIB_NAME_AW(MS_STRONG_PROV_)
1901
1902#define MS_DEF_RSA_SIG_PROV_A "Microsoft RSA Signature Cryptographic Provider"
1903#if defined(__GNUC__)
1904# define MS_DEF_RSA_SIG_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
1905 'R','S','A',' ','S','i','g','n','a','t','u','r','e',' ', \
1906 'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
1907#elif defined(_MSC_VER)
1908# define MS_DEF_RSA_SIG_PROV_W L"Microsoft RSA Signature Cryptographic Provider"
1909#else
1910static const WCHAR MS_DEF_RSA_SIG_PROV_W[] = { 'M','i','c','r','o','s','o','f','t',' ',
1911 'R','S','A',' ','S','i','g','n','a','t','u','r','e',' ',
1912 'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
1913#endif
1914#define MS_DEF_RSA_SIG_PROV WINELIB_NAME_AW(MS_DEF_RSA_SIG_PROV_)
1915
1916#define MS_DEF_RSA_SCHANNEL_PROV_A "Microsoft RSA SChannel Cryptographic Provider"
1917#if defined(__GNUC__)
1918# define MS_DEF_RSA_SCHANNEL_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
1919 'R','S','A',' ','S','C','h','a','n','n','e','l',' ', \
1920 'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
1921#elif defined(_MSC_VER)
1922# define MS_DEF_RSA_SCHANNEL_PROV_W L"Microsoft RSA SChannel Cryptographic Provider"
1923#else
1924static const WCHAR MS_DEF_RSA_SCHANNEL_PROV_W[] = { 'M','i','c','r','o','s','o','f','t',' ',
1925 'R','S','A',' ','S','C','h','a','n','n','e','l',' ',
1926 'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
1927#endif
1928#define MS_DEF_RSA_SCHANNEL_PROV WINELIB_NAME_AW(MS_DEF_RSA_SCHANNEL_PROV_)
1929
1930#define MS_DEF_DSS_PROV_A "Microsoft Base DSS Cryptographic Provider"
1931#if defined(__GNUC__)
1932# define MS_DEF_DSS_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
1933 'B','a','s','e',' ','D','S','S',' ', \
1934 'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
1935#elif defined(_MSC_VER)
1936# define MS_DEF_DSS_PROV_W L"Microsoft Base DSS Cryptographic Provider"
1937#else
1938static const WCHAR MS_DEF_DSS_PROV_W[] = { 'M','i','c','r','o','s','o','f','t',' ',
1939 'B','a','s','e',' ','D','S','S',' ',
1940 'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
1941#endif
1942#define MS_DEF_DSS_PROV WINELIB_NAME_AW(MS_DEF_DSS_PROV_)
1943
1944#define MS_DEF_DSS_DH_PROV_A "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider"
1945#if defined(__GNUC__)
1946# define MS_DEF_DSS_DH_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
1947 'B','a','s','e',' ','D','S','S',' ','a','n','d',' ', \
1948 'D','i','f','f','i','e','-','H','e','l','l','m','a','n',' ', \
1949 'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
1950#elif defined(_MSC_VER)
1951# define MS_DEF_DSS_DH_PROV_W L"Microsoft Base DSS and Diffie-Hellman Cryptographic Provider"
1952#else
1953static const WCHAR MS_DEF_DSS_DH_PROV_W[] = { 'M','i','c','r','o','s','o','f','t',' ',
1954 'B','a','s','e',' ','D','S','S',' ','a','n','d',' ',
1955 'D','i','f','f','i','e','-','H','e','l','l','m','a','n',' ',
1956 'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
1957#endif
1958#define MS_DEF_DSS_DH_PROV WINELIB_NAME_AW(MS_DEF_DSS_DH_PROV_)
1959
1960#define MS_ENH_DSS_DH_PROV_A "Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider"
1961#if defined(__GNUC__)
1962# define MS_ENH_DSS_DH_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
1963 'E','n','h','a','n','c','e','d',' ','D','S','S',' ','a','n','d',' ', \
1964 'D','i','f','f','i','e','-','H','e','l','l','m','a','n',' ', \
1965 'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
1966#elif defined(_MSC_VER)
1967# define MS_ENH_DSS_DH_PROV_W L"Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider"
1968#else
1969static const WCHAR MS_ENH_DSS_DH_PROV_W[] = { 'M','i','c','r','o','s','o','f','t',' ',
1970 'E','n','h','a','n','c','e','d',' ','D','S','S',' ','a','n','d',' ',
1971 'D','i','f','f','i','e','-','H','e','l','l','m','a','n',' ',
1972 'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
1973#endif
1974#define MS_ENH_DSS_DH_PROV WINELIB_NAME_AW(MS_ENH_DSS_DH_PROV_)
1975
1976#define MS_DEF_DH_SCHANNEL_PROV_A "Microsoft DH SChannel Cryptographic Provider"
1977#if defined(__GNUC__)
1978# define MS_DEF_DH_SCHANNEL_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
1979 'D','H',' ','S','C','h','a','n','n','e','l',' ', \
1980 'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
1981#elif defined(_MSC_VER)
1982# define MS_DEF_DH_SCHANNEL_PROV_W L"Microsoft DH SChannel Cryptographic Provider"
1983#else
1984static const WCHAR MS_DEF_DH_SCHANNEL_PROV_W[] = { 'M','i','c','r','o','s','o','f','t',' ',
1985 'D','H',' ','S','C','h','a','n','n','e','l',' ',
1986 'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
1987#endif
1988#define MS_DEF_DH_SCHANNEL_PROV WINELIB_NAME_AW(MS_DEF_DH_SCHANNEL_PROV_)
1989
1990#define MS_SCARD_PROV_A "Microsoft Base Smart Card Cryptographic Provider"
1991#if defined(__GNUC__)
1992# define MS_SCARD_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
1993 'B','a','s','e',' ','S','m','a','r','t',' ','C','a','r','d',' ', \
1994 'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
1995#elif defined(_MSC_VER)
1996# define MS_SCARD_PROV_W L"Microsoft Base Smart Card Cryptographic Provider"
1997#else
1998static const WCHAR MS_SCARD_PROV_W[] = { 'M','i','c','r','o','s','o','f','t',' ',
1999 'B','a','s','e',' ','S','m','a','r','t',' ','C','a','r','d',' ',
2000 'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
2001#endif
2002#define MS_SCARD_PROV WINELIB_NAME_AW(MS_SCARD_PROV_)
2003
2004#define MS_ENH_RSA_AES_PROV_A "Microsoft Enhanced RSA and AES Cryptographic Provider"
2005#if defined(__GNUC__)
2006# define MS_ENH_RSA_AES_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
2007 'E','n','h','a','n','c','e','d',' ','R','S','A',' ','a','n','d',' ','A','E','S',' ',\
2008 'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
2009#elif defined(_MSC_VER)
2010# define MS_ENH_RSA_AES_PROV_W L"Microsoft Enhanced RSA and AES Cryptographic Provider"
2011#else
2012static const WCHAR MS_ENH_RSA_AES_PROV_W[] = { 'M','i','c','r','o','s','o','f','t',' ',
2013 'E','n','h','a','n','c','e','d',' ','R','S','A',' ','a','n','d',' ','A','E','S',' ',
2014 'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
2015#endif
2016#define MS_ENH_RSA_AES_PROV WINELIB_NAME_AW(MS_ENH_RSA_AES_PROV_)
2017
2018#define MS_ENH_RSA_AES_PROV_XP_A "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)"
2019#if defined(__GNUC__)
2020# define MS_ENH_RSA_AES_PROV_XP_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \
2021 'E','n','h','a','n','c','e','d',' ','R','S','A',' ','a','n','d',' ','A','E','S',' ',\
2022 'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',' ',\
2023 '(','P','r','o','t','o','t','y','p','e',')',0 }
2024#elif defined(_MSC_VER)
2025# define MS_ENH_RSA_AES_PROV_XP_W L"Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)"
2026#else
2027static const WCHAR MS_ENH_RSA_AES_PROV_XP_W[] = { 'M','i','c','r','o','s','o','f','t',' ',
2028 'E','n','h','a','n','c','e','d',' ','R','S','A',' ','a','n','d',' ','A','E','S',' ',
2029 'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',' ',
2030 '(','P','r','o','t','o','t','y','p','e',')',0 };
2031#endif
2032#define MS_ENH_RSA_AES_PROV_XP WINELIB_NAME_AW(MS_ENH_RSA_AES_PROV_XP_)
2033
2034/* Key Specs*/
2035#define AT_KEYEXCHANGE 1
2036#define AT_SIGNATURE 2
2037
2038/* Provider Types */
2039#define PROV_RSA_FULL 1
2040#define PROV_RSA_SIG 2
2041#define PROV_DSS 3
2042#define PROV_FORTEZZA 4
2043#define PROV_MS_EXCHANGE 5
2044#define PROV_SSL 6
2045#define PROV_RSA_SCHANNEL 12
2046#define PROV_DSS_DH 13
2047#define PROV_EC_ECDSA_SIG 14
2048#define PROV_EC_ECNRA_SIG 15
2049#define PROV_EC_ECDSA_FULL 16
2050#define PROV_EC_ECNRA_FULL 17
2051#define PROV_DH_SCHANNEL 18
2052#define PROV_SPYRUS_LYNKS 20
2053#define PROV_RNG 21
2054#define PROV_INTEL_SEC 22
2055#define PROV_REPLACE_OWF 23
2056#define PROV_RSA_AES 24
2057
2058/* FLAGS Section */
2059
2060#define CRYPT_FIRST 1
2061#define CRYPT_NEXT 2
2062
2063#define CRYPT_IMPL_HARDWARE 1
2064#define CRYPT_IMPL_SOFTWARE 2
2065#define CRYPT_IMPL_MIXED 3
2066#define CRYPT_IMPL_UNKNOWN 4
2067
2068/* CryptAcquireContext */
2069#define CRYPT_VERIFYCONTEXT 0xF0000000
2070#define CRYPT_NEWKEYSET 0x00000008
2071#define CRYPT_DELETEKEYSET 0x00000010
2072#define CRYPT_MACHINE_KEYSET 0x00000020
2073#define CRYPT_SILENT 0x00000040
2074
2075/* Crypt{Get|Set}Provider */
2076#define CRYPT_MACHINE_DEFAULT 0x00000001
2077#define CRYPT_USER_DEFAULT 0x00000002
2078#define CRYPT_DELETE_DEFAULT 0x00000004
2079
2080/* Crypt{Get/Set}ProvParam */
2081#define PP_CLIENT_HWND 1
2082#define PP_ENUMALGS 1
2083#define PP_ENUMCONTAINERS 2
2084#define PP_IMPTYPE 3
2085#define PP_NAME 4
2086#define PP_VERSION 5
2087#define PP_CONTAINER 6
2088#define PP_CHANGE_PASSWORD 7
2089#define PP_KEYSET_SEC_DESCR 8
2090#define PP_KEY_TYPE_SUBTYPE 10
2091#define PP_CONTEXT_INFO 11
2092#define PP_KEYEXCHANGE_KEYSIZE 12
2093#define PP_SIGNATURE_KEYSIZE 13
2094#define PP_KEYEXCHANGE_ALG 14
2095#define PP_SIGNATURE_ALG 15
2096#define PP_PROVTYPE 16
2097#define PP_KEYSTORAGE 17
2098#define PP_SYM_KEYSIZE 19
2099#define PP_SESSION_KEYSIZE 20
2100#define PP_UI_PROMPT 21
2101#define PP_ENUMALGS_EX 22
2102#define PP_DELETEKEY 24
2103#define PP_ENUMMANDROOTS 25
2104#define PP_ENUMELECTROOTS 26
2105#define PP_KEYSET_TYPE 27
2106#define PP_ADMIN_PIN 31
2107#define PP_KEYEXCHANGE_PIN 32
2108#define PP_SIGNATURE_PIN 33
2109#define PP_SIG_KEYSIZE_INC 34
2110#define PP_KEYX_KEYSIZE_INC 35
2111#define PP_UNIQUE_CONTAINER 36
2112#define PP_SGC_INFO 37
2113#define PP_USE_HARDWARE_RNG 38
2114#define PP_KEYSPEC 39
2115#define PP_ENUMEX_SIGNING_PROT 40
2116#define PP_CRYPT_COUNT_KEY_USE 41
2117#define PP_USER_CERTSTORE 42
2118#define PP_SMARTCARD_READER 43
2119#define PP_SMARTCARD_GUID 45
2120#define PP_ROOT_CERTSTORE 46
2121
2122/* Values returned by CryptGetProvParam of PP_KEYSTORAGE */
2123#define CRYPT_SEC_DESCR 0x00000001
2124#define CRYPT_PSTORE 0x00000002
2125#define CRYPT_UI_PROMPT 0x00000004
2126
2127/* Crypt{Get/Set}KeyParam */
2128#define KP_IV 1
2129#define KP_SALT 2
2130#define KP_PADDING 3
2131#define KP_MODE 4
2132#define KP_MODE_BITS 5
2133#define KP_PERMISSIONS 6
2134#define KP_ALGID 7
2135#define KP_BLOCKLEN 8
2136#define KP_KEYLEN 9
2137#define KP_SALT_EX 10
2138#define KP_P 11
2139#define KP_G 12
2140#define KP_Q 13
2141#define KP_X 14
2142#define KP_Y 15
2143#define KP_RA 16
2144#define KP_RB 17
2145#define KP_INFO 18
2146#define KP_EFFECTIVE_KEYLEN 19
2147#define KP_SCHANNEL_ALG 20
2148#define KP_CLIENT_RANDOM 21
2149#define KP_SERVER_RANDOM 22
2150#define KP_RP 23
2151#define KP_PRECOMP_MD5 24
2152#define KP_PRECOMP_SHA 25
2153#define KP_CERTIFICATE 26
2154#define KP_CLEAR_KEY 27
2155#define KP_PUB_EX_LEN 28
2156#define KP_PUB_EX_VAL 29
2157#define KP_KEYVAL 30
2158#define KP_ADMIN_PIN 31
2159#define KP_KEYEXCHANGE_PIN 32
2160#define KP_SIGNATURE_PIN 33
2161#define KP_PREHASH 34
2162#define KP_ROUNDS 35
2163#define KP_OAEP_PARAMS 36
2164#define KP_CMS_KEY_INFO 37
2165#define KP_CMS_DH_KEY_INFO 38
2166#define KP_PUB_PARAMS 39
2167#define KP_VERIFY_PARAMS 40
2168#define KP_HIGHEST_VERSION 41
2169#define KP_GET_USE_COUNT 42
2170
2171/* Values for KP_PADDING */
2172#define PKCS5_PADDING 1
2173#define RANDOM_PADDING 2
2174#define ZERO_PADDING 3
2175
2176/* CryptSignHash/CryptVerifySignature */
2177#define CRYPT_NOHASHOID 0x00000001
2178#define CRYPT_TYPE2_FORMAT 0x00000002
2179#define CRYPT_X931_FORMAT 0x00000004
2180
2181/* Crypt{Get,Set}HashParam */
2182#define HP_ALGID 0x0001
2183#define HP_HASHVAL 0x0002
2184#define HP_HASHSIZE 0x0004
2185#define HP_HMAC_INFO 0x0005
2186#define HP_TLS1PRF_LABEL 0x0006
2187#define HP_TLS1PRF_SEED 0x0007
2188
2189/* Crypt{Get,Set}KeyParam */
2190#define CRYPT_MODE_CBC 1
2191#define CRYPT_MODE_ECB 2
2192#define CRYPT_MODE_OFB 3
2193#define CRYPT_MODE_CFB 4
2194
2195#define CRYPT_ENCRYPT 0x0001
2196#define CRYPT_DECRYPT 0x0002
2197#define CRYPT_EXPORT 0x0004
2198#define CRYPT_READ 0x0008
2199#define CRYPT_WRITE 0x0010
2200#define CRYPT_MAC 0x0020
2201#define CRYPT_EXPORT_KEY 0x0040
2202#define CRYPT_IMPORT_KEY 0x0080
2203#define CRYPT_ARCHIVE 0x0100
2204
2205/* Crypt*Key */
2206#define CRYPT_EXPORTABLE 0x00000001
2207#define CRYPT_USER_PROTECTED 0x00000002
2208#define CRYPT_CREATE_SALT 0x00000004
2209#define CRYPT_UPDATE_KEY 0x00000008
2210#define CRYPT_NO_SALT 0x00000010
2211#define CRYPT_PREGEN 0x00000040
2212#define CRYPT_SERVER 0x00000400
2213#define CRYPT_ARCHIVABLE 0x00004000
2214
2215/* CryptExportKey */
2216#define CRYPT_SSL2_FALLBACK 0x00000002
2217#define CRYPT_DESTROYKEY 0x00000004
2218#define CRYPT_OAEP 0x00000040
2219
2220/* CryptHashSessionKey */
2221#define CRYPT_LITTLE_ENDIAN 0x00000001
2222
2223/* Crypt{Protect,Unprotect}Data PROMPTSTRUCT flags */
2224#define CRYPTPROTECT_PROMPT_ON_PROTECT 0x0001
2225#define CRYPTPROTECT_PROMPT_ON_UNPROTECT 0x0002
2226/* Crypt{Protect,Unprotect}Data flags */
2227#define CRYPTPROTECT_UI_FORBIDDEN 0x0001
2228#define CRYPTPROTECT_LOCAL_MACHINE 0x0004
2229#define CRYPTPROTECT_AUDIT 0x0010
2230#define CRYPTPROTECT_VERIFY_PROTECTION 0x0040
2231
2232/* Crypt{Protect,Unprotect}Memory */
2233#define CRYPTPROTECTMEMORY_BLOCK_SIZE 16
2234#define CRYPTPROTECTMEMORY_SAME_PROCESS 0x0000
2235#define CRYPTPROTECTMEMORY_CROSS_PROCESS 0x0001
2236#define CRYPTPROTECTMEMORY_SAME_LOGON 0x0002
2237
2238/* Blob Types */
2239#define SIMPLEBLOB 0x1
2240#define PUBLICKEYBLOB 0x6
2241#define PRIVATEKEYBLOB 0x7
2242#define PLAINTEXTKEYBLOB 0x8
2243#define OPAQUEKEYBLOB 0x9
2244#define PUBLICKEYBLOBEX 0xA
2245#define SYMMETRICWRAPKEYBLOB 0xB
2246
2247#define CUR_BLOB_VERSION 2
2248
2249/* cert store provider types */
2250#define CERT_STORE_PROV_MSG ((LPCSTR)1)
2251#define CERT_STORE_PROV_MEMORY ((LPCSTR)2)
2252#define CERT_STORE_PROV_FILE ((LPCSTR)3)
2253#define CERT_STORE_PROV_REG ((LPCSTR)4)
2254#define CERT_STORE_PROV_PKCS7 ((LPCSTR)5)
2255#define CERT_STORE_PROV_SERIALIZED ((LPCSTR)6)
2256#define CERT_STORE_PROV_FILENAME_A ((LPCSTR)7)
2257#define CERT_STORE_PROV_FILENAME_W ((LPCSTR)8)
2258#define CERT_STORE_PROV_SYSTEM_A ((LPCSTR)9)
2259#define CERT_STORE_PROV_SYSTEM_W ((LPCSTR)10)
2260#define CERT_STORE_PROV_SYSTEM CERT_STORE_PROV_SYSTEM_W
2261#define CERT_STORE_PROV_COLLECTION ((LPCSTR)11)
2262#define CERT_STORE_PROV_SYSTEM_REGISTRY_A ((LPCSTR)12)
2263#define CERT_STORE_PROV_SYSTEM_REGISTRY_W ((LPCSTR)13)
2264#define CERT_STORE_PROV_SYSTEM_REGISTRY CERT_STORE_PROV_SYSTEM_REGISTRY_W
2265#define CERT_STORE_PROV_PHYSICAL_W ((LPCSTR)14)
2266#define CERT_STORE_PROV_PHYSICAL CERT_STORE_PROV_PHYSICAL_W
2267#define CERT_STORE_PROV_SMART_CARD_W ((LPCSTR)15)
2268#define CERT_STORE_PROV_SMART_CARD CERT_STORE_PROV_SMART_CARD_W
2269#define CERT_STORE_PROV_LDAP_W ((LPCSTR)16)
2270#define CERT_STORE_PROV_LDAP CERT_STORE_PROV_LDAP_W
2271
2272#define sz_CERT_STORE_PROV_MEMORY "Memory"
2273#define sz_CERT_STORE_PROV_FILENAME_W "File"
2274#define sz_CERT_STORE_PROV_FILENAME sz_CERT_STORE_PROV_FILENAME_W
2275#define sz_CERT_STORE_PROV_SYSTEM_W "System"
2276#define sz_CERT_STORE_PROV_SYSTEM sz_CERT_STORE_PROV_SYSTEM_W
2277#define sz_CERT_STORE_PROV_PKCS7 "PKCS7"
2278#define sz_CERT_STORE_PROV_SERIALIZED "Serialized"
2279#define sz_CERT_STORE_PROV_COLLECTION "Collection"
2280#define sz_CERT_STORE_PROV_SYSTEM_REGISTRY_W "SystemRegistry"
2281#define sz_CERT_STORE_PROV_SYSTEM_REGISTRY sz_CERT_STORE_PROV_SYSTEM_REGISTRY_W
2282#define sz_CERT_STORE_PROV_PHYSICAL_W "Physical"
2283#define sz_CERT_STORE_PROV_PHYSICAL sz_CERT_STORE_PROV_PHYSICAL_W
2284#define sz_CERT_STORE_PROV_SMART_CARD_W "SmartCard"
2285#define sz_CERT_STORE_PROV_SMART_CARD sz_CERT_STORE_PROV_SMART_CARD_W
2286#define sz_CERT_STORE_PROV_LDAP_W "Ldap"
2287#define sz_CERT_STORE_PROV_LDAP sz_CERT_STORE_PROV_LDAP_W
2288
2289/* types for CertOpenStore dwEncodingType */
2290#define CERT_ENCODING_TYPE_MASK 0x0000ffff
2291#define CMSG_ENCODING_TYPE_MASK 0xffff0000
2292#define GET_CERT_ENCODING_TYPE(x) ((x) & CERT_ENCODING_TYPE_MASK)
2293#define GET_CMSG_ENCODING_TYPE(x) ((x) & CMSG_ENCODING_TYPE_MASK)
2294
2295#define CRYPT_ASN_ENCODING 0x00000001
2296#define CRYPT_NDR_ENCODING 0x00000002
2297#define X509_ASN_ENCODING 0x00000001
2298#define X509_NDR_ENCODING 0x00000002
2299#define PKCS_7_ASN_ENCODING 0x00010000
2300#define PKCS_7_NDR_ENCODING 0x00020000
2301
2302/* system store locations */
2303#define CERT_SYSTEM_STORE_LOCATION_MASK 0x00ff0000
2304#define CERT_SYSTEM_STORE_LOCATION_SHIFT 16
2305
2306/* system store location ids */
2307/* hkcu */
2308#define CERT_SYSTEM_STORE_CURRENT_USER_ID 1
2309/* hklm */
2310#define CERT_SYSTEM_STORE_LOCAL_MACHINE_ID 2
2311/* hklm\Software\Microsoft\Cryptography\Services */
2312#define CERT_SYSTEM_STORE_CURRENT_SERVICE_ID 4
2313#define CERT_SYSTEM_STORE_SERVICES_ID 5
2314/* HKEY_USERS */
2315#define CERT_SYSTEM_STORE_USERS_ID 6
2316/* hkcu\Software\Policies\Microsoft\SystemCertificates */
2317#define CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY_ID 7
2318/* hklm\Software\Policies\Microsoft\SystemCertificates */
2319#define CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY_ID 8
2320/* hklm\Software\Microsoft\EnterpriseCertificates */
2321#define CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE_ID 9
2322
2323/* system store location values */
2324#define CERT_SYSTEM_STORE_CURRENT_USER \
2325 (CERT_SYSTEM_STORE_CURRENT_USER_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
2326#define CERT_SYSTEM_STORE_LOCAL_MACHINE \
2327 (CERT_SYSTEM_STORE_LOCAL_MACHINE_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
2328#define CERT_SYSTEM_STORE_CURRENT_SERVICE \
2329 (CERT_SYSTEM_STORE_CURRENT_SERVICE_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
2330#define CERT_SYSTEM_STORE_SERVICES \
2331 (CERT_SYSTEM_STORE_SERVICES_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
2332#define CERT_SYSTEM_STORE_USERS \
2333 (CERT_SYSTEM_STORE_USERS_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
2334#define CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY \
2335 (CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
2336#define CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY \
2337 (CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
2338#define CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE \
2339 (CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
2340
2341#if defined(__GNUC__)
2342#define CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH (const WCHAR[])\
2343 {'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t',\
2344 '\\','S','y','s','t','e','m','C','e','r','t','i','f','i','c','a','t','e','s',\
2345 0 }
2346#define CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH (const WCHAR[])\
2347 {'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\',\
2348 'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r',\
2349 't','i','f','i','c','a','t','e','s',0 }
2350#elif defined(_MSC_VER)
2351#define CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH \
2352 L"Software\\Microsoft\\SystemCertificates"
2353#define CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH \
2354 L"Software\\Policies\\Microsoft\\SystemCertificates"
2355#else
2357 {'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\',
2358 'S','y','s','t','e','m','C','e','r','t','i','f','i','c','a','t','e','s',0 };
2360 {'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\',
2361 'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r',
2362 't','i','f','i','c','a','t','e','s',0 };
2363#endif
2364
2365#if defined(__GNUC__)
2366#define CERT_EFSBLOB_REGPATH (const WCHAR[])\
2367{'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\',\
2368 'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r',\
2369 't','i','f','i','c','a','t','e','s','\\','E','F','S',0 }
2370#define CERT_EFSBLOB_VALUE_NAME (const WCHAR[]) {'E','F','S','B','l','o','b',0 }
2371#elif defined(_MSC_VER)
2372#define CERT_EFSBLOB_REGPATH CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"\\EFS"
2373#define CERT_EFSBLOB_VALUE_NAME L"EFSBlob"
2374#else
2376 {'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\',
2377 'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r',
2378 't','i','f','i','c','a','t','e','s','\\','E','F','S',0 };
2379static const CERT_EFSBLOB_VALUE_NAME[] = { 'E','F','S','B','l','o','b',0 };
2380#endif
2381
2382#if defined(__GNUC__)
2383#define CERT_PROT_ROOT_FLAGS_REGPATH (const WCHAR[])\
2384{'\\','R','o','o','t','\\','P','r','o','t','e','c','t','e','d','R','o','o','t',\
2385 's',0 }
2386#define CERT_PROT_ROOT_FLAGS_VALUE_NAME (const WCHAR[])\
2387{'F','l','a','g','s',0 }
2388#elif defined(_MSC_VER)
2389#define CERT_PROT_ROOT_FLAGS_REGPATH L"\\Root\\ProtectedRoots"
2390#define CERT_PROT_ROOT_FLAGS_VALUE_NAME L"Flags"
2391#else
2393 { '\\','R','o','o','t','\\','P','r','o','t','e','c','t','e','d','R','o','o',
2394 't','s',0 };
2395static const WCHAR CERT_PROT_ROOT_FLAGS_VALUE_NAME[] = {'F','l','a','g','s',0 };
2396#endif
2397
2398#define CERT_PROT_ROOT_DISABLE_CURRENT_USER_FLAG 0x01
2399#define CERT_PROT_ROOT_INHIBIT_ADD_AT_INIT_FLAG 0x02
2400#define CERT_PROT_ROOT_INHIBIT_PURGE_LM_FLAG 0x04
2401#define CERT_PROT_ROOT_DISABLE_LM_AUTH_FLAG 0x08
2402#define CERT_PROT_ROOT_DISABLE_NT_AUTH_REQUIRED_FLAG 0x10
2403#define CERT_PROT_ROOT_DISABLE_NOT_DEFINED_NAME_CONSTRAINT_FLAG 0x20
2404
2405#if defined(__GNUC__)
2406#define CERT_TRUST_PUB_SAFER_GROUP_POLICY_REGPATH (const WCHAR[])\
2407{'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\',\
2408 'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r',\
2409 't','i','f','i','c','a','t','e','s','\\','T','r','u','s','t','e','d',\
2410 'P','u','b','l','i','s','h','e','r','\\','S','a','f','e','r',0 }
2411#elif defined(_MSC_VER)
2412#define CERT_TRUST_PUB_SAFER_GROUP_POLICY_REGPATH \
2413 CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"\\TrustedPublisher\\Safer"
2414#else
2416 {'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\',
2417 'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r',
2418 't','i','f','i','c','a','t','e','s','\\','T','r','u','s','t','e','d',
2419 'P','u','b','l','i','s','h','e','r','\\','S','a','f','e','r',0 };
2420#endif
2421
2422#if defined(__GNUC__)
2423#define CERT_TRUST_PUB_SAFER_LOCAL_MACHINE_REGPATH (const WCHAR[])\
2424{'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\',\
2425 'S','y','s','t','e','m','C','e','r','t','i','f','i','c','a','t','e','s','\\',\
2426 'T','r','u','s','t','e','d','P','u','b','l','i','s','h','e','r','\\',\
2427 'S','a','f','e','r',0 }
2428#define CERT_TRUST_PUB_AUTHENTICODE_FLAGS_VALUE_NAME (const WCHAR[])\
2429{'A','u','t','h','e','n','t','i','c','o','d','e','F','l','a','g','s',0 };
2430#elif defined(_MSC_VER)
2431#define CERT_TRUST_PUB_SAFER_LOCAL_MACHINE_REGPATH \
2432 CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH L"\\TrustedPublisher\\Safer"
2433#define CERT_TRUST_PUB_AUTHENTICODE_FLAGS_VALUE_NAME L"AuthenticodeFlags"
2434#else
2436 {'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\',
2437 'S','y','s','t','e','m','C','e','r','t','i','f','i','c','a','t','e','s','\\',
2438 'T','r','u','s','t','e','d','P','u','b','l','i','s','h','e','r','\\',
2439 'S','a','f','e','r',0 };
2441 { 'A','u','t','h','e','n','t','i','c','o','d','e','F','l','a','g','s',0 };
2442#endif
2443
2444#define CERT_TRUST_PUB_ALLOW_END_USER_TRUST 0x00000000
2445#define CERT_TRUST_PUB_ALLOW_MACHINE_ADMIN_TRUST 0x00000001
2446#define CERT_TRUST_PUB_ALLOW_ENTERPRISE_ADMIN_TRUST 0x00000002
2447#define CERT_TRUST_PUB_ALLOW_TRUST_MASK 0x00000003
2448#define CERT_TRUST_PUB_CHECK_PUBLISHER_REV_FLAG 0x00000100
2449#define CERT_TRUST_PUB_CHECK_TIMESTAMP_REV_FLAG 0x00000200
2450
2451/* flags for CertOpenStore dwFlags */
2452#define CERT_STORE_NO_CRYPT_RELEASE_FLAG 0x00000001
2453#define CERT_STORE_SET_LOCALIZED_NAME_FLAG 0x00000002
2454#define CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG 0x00000004
2455#define CERT_STORE_DELETE_FLAG 0x00000010
2456#define CERT_STORE_UNSAFE_PHYSICAL_FLAG 0x00000020
2457#define CERT_STORE_SHARE_STORE_FLAG 0x00000040
2458#define CERT_STORE_SHARE_CONTEXT_FLAG 0x00000080
2459#define CERT_STORE_MANIFOLD_FLAG 0x00000100
2460#define CERT_STORE_ENUM_ARCHIVED_FLAG 0x00000200
2461#define CERT_STORE_UPDATE_KEYID_FLAG 0x00000400
2462#define CERT_STORE_BACKUP_RESTORE_FLAG 0x00000800
2463#define CERT_STORE_MAXIMUM_ALLOWED_FLAG 0x00001000
2464#define CERT_STORE_CREATE_NEW_FLAG 0x00002000
2465#define CERT_STORE_OPEN_EXISTING_FLAG 0x00004000
2466#define CERT_STORE_READONLY_FLAG 0x00008000
2467
2468#define CERT_REGISTRY_STORE_REMOTE_FLAG 0x00010000
2469#define CERT_REGISTRY_STORE_SERIALIZED_FLAG 0x00020000
2470#define CERT_REGISTRY_STORE_ROAMING_FLAG 0x00040000
2471#define CERT_REGISTRY_STORE_MY_IE_DIRTY_FLAG 0x00080000
2472#define CERT_REGISTRY_STORE_LM_GPT_FLAG 0x01000000
2473#define CERT_REGISTRY_STORE_CLIENT_GPT_FLAG 0x80000000
2474
2475#define CERT_FILE_STORE_COMMIT_ENABLE_FLAG 0x00010000
2476
2477/* CertCloseStore dwFlags */
2478#define CERT_CLOSE_STORE_FORCE_FLAG 0x00000001
2479#define CERT_CLOSE_STORE_CHECK_FLAG 0x00000002
2480
2481/* dwAddDisposition */
2482#define CERT_STORE_ADD_NEW 1
2483#define CERT_STORE_ADD_USE_EXISTING 2
2484#define CERT_STORE_ADD_REPLACE_EXISTING 3
2485#define CERT_STORE_ADD_ALWAYS 4
2486#define CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES 5
2487#define CERT_STORE_ADD_NEWER 6
2488#define CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES 7
2489
2490/* Installable OID function defs */
2491#define CRYPT_OID_OPEN_STORE_PROV_FUNC "CertDllOpenStoreProv"
2492#define CRYPT_OID_ENCODE_OBJECT_FUNC "CryptDllEncodeObject"
2493#define CRYPT_OID_DECODE_OBJECT_FUNC "CryptDllDecodeObject"
2494#define CRYPT_OID_ENCODE_OBJECT_EX_FUNC "CryptDllEncodeObjectEx"
2495#define CRYPT_OID_DECODE_OBJECT_EX_FUNC "CryptDllDecodeObjectEx"
2496#define CRYPT_OID_CREATE_COM_OBJECT_FUNC "CryptDllCreateComObject"
2497#define CRYPT_OID_VERIFY_REVOCATION_FUNC "CertDllVerifyRevocation"
2498#define CRYPT_OID_VERIFY_CTL_USAGE_FUNC "CertDllVerifyCTLUsage"
2499#define CRYPT_OID_FORMAT_OBJECT_FUNC "CryptDllFormatObject"
2500#define CRYPT_OID_FIND_OID_INFO_FUNC "CryptDllFindOIDInfo"
2501#define CRYPT_OID_FIND_LOCALIZED_NAME_FUNC "CryptDllFindLocalizedName"
2502#define CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_FUNC "CryptDllExportPublicKeyInfoEx"
2503#define CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_FUNC "CryptDllImportPublicKeyInfoEx"
2504#define CRYPT_OID_EXPORT_PRIVATE_KEY_INFO_FUNC "CryptDllExportPrivateKeyInfoEx"
2505#define CRYPT_OID_IMPORT_PRIVATE_KEY_INFO_FUNC "CryptDllImportPrivateKeyInfoEx"
2506#define CRYPT_OID_VERIFY_CERTIFICATE_CHAIN_POLICY_FUNC \
2507 "CertDllVerifyCertificateChainPolicy"
2508#define CRYPT_OID_CONVERT_PUBLIC_KEY_INFO_FUNC "CryptDllConvertPublicKeyInfo"
2509#define URL_OID_GET_OBJECT_URL_FUNC "UrlDllGetObjectUrl"
2510#define TIME_VALID_OID_GET_OBJECT_FUNC "TimeValidDllGetObject"
2511#define CMSG_OID_GEN_CONTENT_ENCRYPT_KEY_FUNC "CryptMsgDllGenContentEncryptKey"
2512#define CMSG_OID_EXPORT_KEY_TRANS_FUNC "CryptMsgDllExportKeyTrans"
2513#define CMSG_OID_IMPORT_KEY_TRANS_FUNC "CryptMsgDllImportKeyTrans"
2514
2515#define CRYPT_OID_REGPATH "Software\\Microsoft\\Cryptography\\OID"
2516#define CRYPT_OID_REG_ENCODING_TYPE_PREFIX "EncodingType "
2517#if defined(__GNUC__)
2518# define CRYPT_OID_REG_DLL_VALUE_NAME (const WCHAR []){ 'D','l','l',0 }
2519# define CRYPT_OID_REG_FUNC_NAME_VALUE_NAME \
2520 (const WCHAR []){ 'F','u','n','c','N','a','m','e',0 }
2521# define CRYPT_OID_REG_FLAGS_VALUE_NAME \
2522 (const WCHAR []){ 'C','r','y','p','t','F','l','a','g','s',0 }
2523#elif defined(_MSC_VER)
2524# define CRYPT_OID_REG_DLL_VALUE_NAME L"Dll"
2525# define CRYPT_OID_REG_FUNC_NAME_VALUE_NAME L"FuncName"
2526# define CRYPT_OID_REG_FLAGS_VALUE_NAME L"CryptFlags"
2527#else
2528static const WCHAR CRYPT_OID_REG_DLL_VALUE_NAME[] = { 'D','l','l',0 };
2530 { 'F','u','n','c','N','a','m','e',0 };
2532 { 'C','r','y','p','t','F','l','a','g','s',0 };
2533#endif
2534#define CRYPT_OID_REG_FUNC_NAME_VALUE_NAME_A "FuncName"
2535#define CRYPT_DEFAULT_OID "DEFAULT"
2536
2537#define CRYPT_INSTALL_OID_FUNC_BEFORE_FLAG 1
2538#define CRYPT_INSTALL_OID_INFO_BEFORE_FLAG 1
2539
2540#define CRYPT_GET_INSTALLED_OID_FUNC_FLAG 0x1
2541
2542#define CRYPT_REGISTER_FIRST_INDEX 0
2543#define CRYPT_REGISTER_LAST_INDEX 0xffffffff
2544
2545/* values for CERT_STORE_PROV_INFO's dwStoreProvFlags */
2546#define CERT_STORE_PROV_EXTERNAL_FLAG 0x1
2547#define CERT_STORE_PROV_DELETED_FLAG 0x2
2548#define CERT_STORE_PROV_NO_PERSIST_FLAG 0x4
2549#define CERT_STORE_PROV_SYSTEM_STORE_FLAG 0x8
2550#define CERT_STORE_PROV_LM_SYSTEM_STORE_FLAG 0x10
2551
2552/* function indices */
2553#define CERT_STORE_PROV_CLOSE_FUNC 0
2554#define CERT_STORE_PROV_READ_CERT_FUNC 1
2555#define CERT_STORE_PROV_WRITE_CERT_FUNC 2
2556#define CERT_STORE_PROV_DELETE_CERT_FUNC 3
2557#define CERT_STORE_PROV_SET_CERT_PROPERTY_FUNC 4
2558#define CERT_STORE_PROV_READ_CRL_FUNC 5
2559#define CERT_STORE_PROV_WRITE_CRL_FUNC 6
2560#define CERT_STORE_PROV_DELETE_CRL_FUNC 7
2561#define CERT_STORE_PROV_SET_CRL_PROPERTY_FUNC 8
2562#define CERT_STORE_PROV_READ_CTL_FUNC 9
2563#define CERT_STORE_PROV_WRITE_CTL_FUNC 10
2564#define CERT_STORE_PROV_DELETE_CTL_FUNC 11
2565#define CERT_STORE_PROV_SET_CTL_PROPERTY_FUNC 12
2566#define CERT_STORE_PROV_CONTROL_FUNC 13
2567#define CERT_STORE_PROV_FIND_CERT_FUNC 14
2568#define CERT_STORE_PROV_FREE_FIND_CERT_FUNC 15
2569#define CERT_STORE_PROV_GET_CERT_PROPERTY_FUNC 16
2570#define CERT_STORE_PROV_FIND_CRL_FUNC 17
2571#define CERT_STORE_PROV_FREE_FIND_CRL_FUNC 18
2572#define CERT_STORE_PROV_GET_CRL_PROPERTY_FUNC 19
2573#define CERT_STORE_PROV_FIND_CTL_FUNC 20
2574#define CERT_STORE_PROV_FREE_FIND_CTL_FUNC 21
2575#define CERT_STORE_PROV_GET_CTL_PROPERTY_FUNC 22
2576
2577/* physical store dwFlags, also used by CertAddStoreToCollection as
2578 * dwUpdateFlags
2579 */
2580#define CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG 0x1
2581#define CERT_PHYSICAL_STORE_OPEN_DISABLE_FLAG 0x2
2582#define CERT_PHYSICAL_STORE_REMOVE_OPEN_DISABLE_FLAG 0x4
2583#define CERT_PHYSICAL_STORE_INSERT_COMPUTER_NAME_ENABLE_FLAG 0x8
2584
2585/* dwFlag values for CertEnumPhysicalStore callback */
2586#define CERT_PHYSICAL_STORE_PREDEFINED_ENUM_FLAG 0x1
2587
2588/* predefined store names */
2589#if defined(__GNUC__)
2590# define CERT_PHYSICAL_STORE_DEFAULT_NAME (const WCHAR[])\
2591 {'.','D','e','f','a','u','l','t','0'}
2592# define CERT_PHYSICAL_STORE_GROUP_POLICY_NAME (const WCHAR[])\
2593 {'.','G','r','o','u','p','P','o','l','i','c','y',0}
2594# define CERT_PHYSICAL_STORE_LOCAL_MACHINE_NAME (const WCHAR[])\
2595 {'.','L','o','c','a','l','M','a','c','h','i','n','e',0}
2596# define CERT_PHYSICAL_STORE_DS_USER_CERTIFICATE_NAME (const WCHAR[])\
2597 {'.','U','s','e','r','C','e','r','t','i','f','i','c','a','t','e',0}
2598# define CERT_PHYSICAL_STORE_LOCAL_MACHINE_GROUP_POLICY_NAME (const WCHAR[])\
2599 {'.','L','o','c','a','l','M','a','c','h','i','n','e','G','r','o','u','p',\
2600 'P','o','l','i','c','y',0}
2601# define CERT_PHYSICAL_STORE_ENTERPRISE_NAME (const WCHAR[])\
2602 {'.','E','n','t','e','r','p','r','i','s','e',0}
2603# define CERT_PHYSICAL_STORE_AUTH_ROOT_NAME (const WCHAR[])\
2604 {'.','A','u','t','h','R','o','o','t',0}
2605#elif defined(_MSC_VER)
2606# define CERT_PHYSICAL_STORE_DEFAULT_NAME \
2607 L".Default"
2608# define CERT_PHYSICAL_STORE_GROUP_POLICY_NAME \
2609 L".GroupPolicy"
2610# define CERT_PHYSICAL_STORE_LOCAL_MACHINE_NAME \
2611 L".LocalMachine"
2612# define CERT_PHYSICAL_STORE_DS_USER_CERTIFICATE_NAME \
2613 L".UserCertificate"
2614# define CERT_PHYSICAL_STORE_LOCAL_MACHINE_GROUP_POLICY_NAME \
2615 L".LocalMachineGroupPolicy"
2616# define CERT_PHYSICAL_STORE_ENTERPRISE_NAME \
2617 L".Enterprise"
2618# define CERT_PHYSICAL_STORE_AUTH_ROOT_NAME \
2619 L".AuthRoot"
2620#else
2622 {'.','D','e','f','a','u','l','t','0'};
2624 {'.','G','r','o','u','p','P','o','l','i','c','y',0};
2626 {'.','L','o','c','a','l','M','a','c','h','i','n','e',0};
2628 {'.','U','s','e','r','C','e','r','t','i','f','i','c','a','t','e',0};
2630 {'.','L','o','c','a','l','M','a','c','h','i','n','e','G','r','o','u','p',
2631 'P','o','l','i','c','y',0};
2633 {'.','E','n','t','e','r','p','r','i','s','e',0};
2635 {'.','A','u','t','h','R','o','o','t',0};
2636#endif
2637
2638/* cert system store flags */
2639#define CERT_SYSTEM_STORE_MASK 0xffff0000
2640#define CERT_SYSTEM_STORE_RELOCATE_FLAG 0x80000000
2641
2642/* CertFindChainInStore dwFindType types */
2643#define CERT_CHAIN_FIND_BY_ISSUER 1
2644
2645/* CertSaveStore dwSaveAs values */
2646#define CERT_STORE_SAVE_AS_STORE 1
2647#define CERT_STORE_SAVE_AS_PKCS7 2
2648/* CertSaveStore dwSaveTo values */
2649#define CERT_STORE_SAVE_TO_FILE 1
2650#define CERT_STORE_SAVE_TO_MEMORY 2
2651#define CERT_STORE_SAVE_TO_FILENAME_A 3
2652#define CERT_STORE_SAVE_TO_FILENAME_W 4
2653#define CERT_STORE_SAVE_TO_FILENAME CERT_STORE_SAVE_TO_FILENAME_W
2654
2655/* CERT_INFO versions/flags */
2656#define CERT_V1 0
2657#define CERT_V2 1
2658#define CERT_V3 2
2659#define CERT_INFO_VERSION_FLAG 1
2660#define CERT_INFO_SERIAL_NUMBER_FLAG 2
2661#define CERT_INFO_SIGNATURE_ALGORITHM_FLAG 3
2662#define CERT_INFO_ISSUER_FLAG 4
2663#define CERT_INFO_NOT_BEFORE_FLAG 5
2664#define CERT_INFO_NOT_AFTER_FLAG 6
2665#define CERT_INFO_SUBJECT_FLAG 7
2666#define CERT_INFO_SUBJECT_PUBLIC_KEY_INFO_FLAG 8
2667#define CERT_INFO_ISSUER_UNIQUE_ID_FLAG 9
2668#define CERT_INFO_SUBJECT_UNIQUE_ID_FLAG 10
2669#define CERT_INFO_EXTENSION_FLAG 11
2670
2671/* CERT_REQUEST_INFO versions */
2672#define CERT_REQUEST_V1 0
2673
2674/* CERT_KEYGEN_REQUEST_INFO versions */
2675#define CERT_KEYGEN_REQUEST_V1 0
2676
2677/* CRL versions */
2678#define CRL_V1 0
2679#define CRL_V2 1
2680
2681/* CTL versions */
2682#define CTL_V1 0
2683
2684/* Certificate, CRL, CTL property IDs */
2685#define CERT_KEY_PROV_HANDLE_PROP_ID 1
2686#define CERT_KEY_PROV_INFO_PROP_ID 2
2687#define CERT_SHA1_HASH_PROP_ID 3
2688#define CERT_HASH_PROP_ID CERT_SHA1_HASH_PROP_ID
2689#define CERT_MD5_HASH_PROP_ID 4
2690#define CERT_KEY_CONTEXT_PROP_ID 5
2691#define CERT_KEY_SPEC_PROP_ID 6
2692#define CERT_IE30_RESERVED_PROP_ID 7
2693#define CERT_PUBKEY_HASH_RESERVED_PROP_ID 8
2694#define CERT_ENHKEY_USAGE_PROP_ID 9
2695#define CERT_CTL_USAGE_PROP_ID CERT_ENHKEY_USAGE_PROP_ID
2696#define CERT_NEXT_UPDATE_LOCATION_PROP_ID 10
2697#define CERT_FRIENDLY_NAME_PROP_ID 11
2698#define CERT_PVK_FILE_PROP_ID 12
2699#define CERT_DESCRIPTION_PROP_ID 13
2700#define CERT_ACCESS_STATE_PROP_ID 14
2701#define CERT_SIGNATURE_HASH_PROP_ID 15
2702#define CERT_SMART_CARD_DATA_PROP_ID 16
2703#define CERT_EFS_PROP_ID 17
2704#define CERT_FORTEZZA_DATA_PROP 18
2705#define CERT_ARCHIVED_PROP_ID 19
2706#define CERT_KEY_IDENTIFIER_PROP_ID 20
2707#define CERT_AUTO_ENROLL_PROP_ID 21
2708#define CERT_PUBKEY_ALG_PARA_PROP_ID 22
2709#define CERT_CROSS_CERT_DIST_POINTS_PROP_ID 23
2710#define CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID 24
2711#define CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID 25
2712#define CERT_ENROLLMENT_PROP_ID 26
2713#define CERT_DATE_STAMP_PROP_ID 27
2714#define CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID 28
2715#define CERT_SUBJECT_NAME_MD5_HASH_PROP_ID 29
2716#define CERT_EXTENDED_ERROR_INFO_PROP_ID 30
2717/* 31 -- unused?
2718 32 -- cert prop id
2719 33 -- CRL prop id
2720 34 -- CTL prop id
2721 35 -- KeyId prop id
2722 36-63 -- reserved
2723 */
2724#define CERT_RENEWAL_PROP_ID 64
2725#define CERT_ARCHIVED_KEY_HASH_PROP_ID 65
2726#define CERT_AUTO_ENROLL_RETRY_PROP_ID 66
2727#define CERT_AIA_URL_RETRIEVED_PROP_ID 67
2728#define CERT_AUTHORITY_INFO_ACCESS_PROP_ID 68
2729#define CERT_BACKED_UP_PROP_ID 69
2730#define CERT_OCSP_RESPONSE_PROP_ID 70
2731#define CERT_REQUEST_ORIGINATOR_PROP_ID 71
2732#define CERT_SOURCE_LOCATION_PROP_ID 72
2733#define CERT_SOURCE_URL_PROP_ID 73
2734#define CERT_NEW_KEY_PROP_ID 74
2735#define CERT_OCSP_CACHE_PREFIX_PROP_ID 75
2736#define CERT_SMART_CARD_ROOT_INFO_PROP_ID 76
2737#define CERT_NO_AUTO_EXPIRE_CHECK_PROP_ID 77
2738#define CERT_NCRYPT_KEY_HANDLE_PROP_ID 78
2739#define CERT_HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_PROP_ID 79
2740#define CERT_SUBJECT_INFO_ACCESS_PROP_ID 80
2741#define CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID 81
2742#define CERT_CA_DISABLE_CRL_PROP_ID 82
2743#define CERT_ROOT_PROGRAM_CERT_POLICIES_PROP_ID 83
2744#define CERT_ROOT_PROGRAM_NAME_CONSTRAINTS_PROP_ID 84
2745
2746#define CERT_FIRST_RESERVED_PROP_ID 85
2747#define CERT_LAST_RESERVED_PROP_ID 0x00007fff
2748#define CERT_FIRST_USER_PROP_ID 0x00008000
2749#define CERT_LAST_USER_PROP_ID 0x0000ffff
2750
2751#define IS_CERT_HASH_PROP_ID(x) \
2752 ((x) == CERT_SHA1_HASH_PROP_ID || (x) == CERT_MD5_HASH_PROP_ID || \
2753 (x) == CERT_SIGNATURE_HASH_PROP_ID)
2754
2755#define IS_PUBKEY_HASH_PROP_ID(x) \
2756 ((x) == CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID || \
2757 (x) == CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID)
2758
2759#define IS_CHAIN_HASH_PROP_ID(x) \
2760 ((x) == CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID || \
2761 (x) == CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID || \
2762 (x) == CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID || \
2763 (x) == CERT_SUBJECT_NAME_MD5_HASH_PROP_ID)
2764
2765/* access state flags */
2766#define CERT_ACCESS_STATE_WRITE_PERSIST_FLAG 0x1
2767#define CERT_ACCESS_STATE_SYSTEM_STORE_FLAG 0x2
2768#define CERT_ACCESS_STATE_LM_SYSTEM_STORE_FLAG 0x4
2769
2770/* CertSetCertificateContextProperty flags */
2771#define CERT_SET_PROPERTY_INHIBIT_PERSIST_FLAG 0x40000000
2772#define CERT_SET_PROPERTY_IGNORE_PERSIST_ERROR_FLAG 0x80000000
2773
2774/* CERT_RDN attribute dwValueType types */
2775#define CERT_RDN_TYPE_MASK 0x000000ff
2776#define CERT_RDN_ANY_TYPE 0
2777#define CERT_RDN_ENCODED_BLOB 1
2778#define CERT_RDN_OCTET_STRING 2
2779#define CERT_RDN_NUMERIC_STRING 3
2780#define CERT_RDN_PRINTABLE_STRING 4
2781#define CERT_RDN_TELETEX_STRING 5
2782#define CERT_RDN_T61_STRING 5
2783#define CERT_RDN_VIDEOTEX_STRING 6
2784#define CERT_RDN_IA5_STRING 7
2785#define CERT_RDN_GRAPHIC_STRING 8
2786#define CERT_RDN_VISIBLE_STRING 9
2787#define CERT_RDN_ISO646_STRING 9
2788#define CERT_RDN_GENERAL_STRING 10
2789#define CERT_RDN_UNIVERSAL_STRING 11
2790#define CERT_RDN_INT4_STRING 11
2791#define CERT_RDN_BMP_STRING 12
2792#define CERT_RDN_UNICODE_STRING 12
2793#define CERT_RDN_UTF8_STRING 13
2794
2795/* CERT_RDN attribute dwValueType flags */
2796#define CERT_RDN_FLAGS_MASK 0xff000000
2797#define CERT_RDN_ENABLE_T61_UNICODE_FLAG 0x80000000
2798#define CERT_RDN_DISABLE_CHECK_TYPE_FLAG 0x4000000
2799#define CERT_RDN_ENABLE_UTF8_UNICODE_FLAG 0x2000000
2800#define CERT_RDN_DISABLE_IE4_UTF8_FLAG 0x0100000
2801
2802#define IS_CERT_RDN_CHAR_STRING(x) \
2803 (((x) & CERT_RDN_TYPE_MASK) >= CERT_RDN_NUMERIC_STRING)
2804
2805/* CertIsRDNAttrsInCertificateName flags */
2806#define CERT_UNICODE_IS_RDN_ATTRS_FLAG 0x1
2807#define CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG 0x2
2808
2809/* CRL reason codes */
2810#define CRL_REASON_UNSPECIFIED 0
2811#define CRL_REASON_KEY_COMPROMISE 1
2812#define CRL_REASON_CA_COMPROMISE 2
2813#define CRL_REASON_AFFILIATION_CHANGED 3
2814#define CRL_REASON_SUPERSEDED 4
2815#define CRL_REASON_CESSATION_OF_OPERATION 5
2816#define CRL_REASON_CERTIFICATE_HOLD 6
2817#define CRL_REASON_REMOVE_FROM_CRL 8
2818
2819/* CertControlStore control types */
2820#define CERT_STORE_CTRL_RESYNC 1
2821#define CERT_STORE_CTRL_NOTIFY_CHANGE 2
2822#define CERT_STORE_CTRL_COMMIT 3
2823#define CERT_STORE_CTRL_AUTO_RESYNC 4
2824#define CERT_STORE_CTRL_CANCEL_NOTIFY 5
2825
2826#define CERT_STORE_CTRL_COMMIT_FORCE_FLAG 0x1
2827#define CERT_STORE_CTRL_COMMIT_CLEAR_FLAG 0x2
2828
2829/* cert store properties */
2830#define CERT_STORE_LOCALIZED_NAME_PROP_ID 0x1000
2831
2832/* CertCreateContext flags */
2833#define CERT_CREATE_CONTEXT_NOCOPY_FLAG 0x1
2834#define CERT_CREATE_CONTEXT_SORTED_FLAG 0x2
2835#define CERT_CREATE_CONTEXT_NO_HCRYPTMSG_FLAG 0x4
2836#define CERT_CREATE_CONTEXT_NO_ENTRY_FLAG 0x8
2837
2838#define CERT_COMPARE_MASK 0xffff
2839#define CERT_COMPARE_SHIFT 16
2840#define CERT_COMPARE_ANY 0
2841#define CERT_COMPARE_SHA1_HASH 1
2842#define CERT_COMPARE_HASH CERT_COMPARE_SHA1_HASH
2843#define CERT_COMPARE_NAME 2
2844#define CERT_COMPARE_ATTR 3
2845#define CERT_COMPARE_MD5_HASH 4
2846#define CERT_COMPARE_PROPERTY 5
2847#define CERT_COMPARE_PUBLIC_KEY 6
2848#define CERT_COMPARE_NAME_STR_A 7
2849#define CERT_COMPARE_NAME_STR_W 8
2850#define CERT_COMPARE_KEY_SPEC 9
2851#define CERT_COMPARE_ENHKEY_USAGE 10
2852#define CERT_COMPARE_CTL_USAGE CERT_COMPARE_ENHKEY_USAGE
2853#define CERT_COMPARE_SUBJECT_CERT 11
2854#define CERT_COMPARE_ISSUER_OF 12
2855#define CERT_COMPARE_EXISTING 13
2856#define CERT_COMPARE_SIGNATURE_HASH 14
2857#define CERT_COMPARE_KEY_IDENTIFIER 15
2858#define CERT_COMPARE_CERT_ID 16
2859#define CERT_COMPARE_CROSS_CERT_DIST_POINTS 17
2860#define CERT_COMPARE_PUBKEY_MD5_HASH 18
2861
2862/* values of dwFindType for CertFind*InStore */
2863#define CERT_FIND_ANY \
2864 (CERT_COMPARE_ANY << CERT_COMPARE_SHIFT)
2865#define CERT_FIND_SHA1_HASH \
2866 (CERT_COMPARE_SHA1_HASH << CERT_COMPARE_SHIFT)
2867#define CERT_FIND_MD5_HASH \
2868 (CERT_COMPARE_MD5_HASH << CERT_COMPARE_SHIFT)
2869#define CERT_FIND_SIGNATURE_HASH \
2870 (CERT_COMPARE_SIGNATURE_HASH << CERT_COMPARE_SHIFT)
2871#define CERT_FIND_KEY_IDENTIFIER \
2872 (CERT_COMPARE_KEY_IDENTIFIER << CERT_COMPARE_SHIFT)
2873#define CERT_FIND_HASH CERT_FIND_SHA1_HASH
2874#define CERT_FIND_PROPERTY \
2875 (CERT_COMPARE_PROPERTY << CERT_COMPARE_SHIFT)
2876#define CERT_FIND_PUBLIC_KEY \
2877 (CERT_COMPARE_PUBLIC_KEY << CERT_COMPARE_SHIFT)
2878#define CERT_FIND_SUBJECT_NAME \
2879 (CERT_COMPARE_NAME << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)
2880#define CERT_FIND_SUBJECT_ATTR \
2881 (CERT_COMPARE_ATTR << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)
2882#define CERT_FIND_ISSUER_NAME \
2883 (CERT_COMPARE_NAME << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)
2884#define CERT_FIND_ISSUER_ATTR \
2885 (CERT_COMPARE_ATTR << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)
2886#define CERT_FIND_SUBJECT_STR_A \
2887 (CERT_COMPARE_NAME_STR_A << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)
2888#define CERT_FIND_SUBJECT_STR_W \
2889 (CERT_COMPARE_NAME_STR_W << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)
2890#define CERT_FIND_SUBJECT_STR CERT_FIND_SUBJECT_STR_W
2891#define CERT_FIND_ISSUER_STR_A \
2892 (CERT_COMPARE_NAME_STR_A << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)
2893#define CERT_FIND_ISSUER_STR_W \
2894 (CERT_COMPARE_NAME_STR_W << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)
2895#define CERT_FIND_ISSUER_STR CERT_FIND_ISSUER_STR_W
2896#define CERT_FIND_KEY_SPEC \
2897 (CERT_COMPARE_KEY_SPEC << CERT_COMPARE_SHIFT)
2898#define CERT_FIND_ENHKEY_USAGE \
2899 (CERT_COMPARE_ENHKEY_USAGE << CERT_COMPARE_SHIFT)
2900#define CERT_FIND_CTL_USAGE CERT_FIND_ENHKEY_USAGE
2901#define CERT_FIND_SUBJECT_CERT \
2902 (CERT_COMPARE_SUBJECT_CERT << CERT_COMPARE_SHIFT)
2903#define CERT_FIND_ISSUER_OF \
2904 (CERT_COMPARE_ISSUER_OF << CERT_COMPARE_SHIFT)
2905#define CERT_FIND_EXISTING \
2906 (CERT_COMPARE_EXISTING << CERT_COMPARE_SHIFT)
2907#define CERT_FIND_CERT_ID \
2908 (CERT_COMPARE_CERT_ID << CERT_COMPARE_SHIFT)
2909#define CERT_FIND_CROSS_CERT_DIST_POINTS \
2910 (CERT_COMPARE_CROSS_CERT_DIST_POINTS << CERT_COMPARE_SHIFT)
2911#define CERT_FIND_PUBKEY_MD5_HASH \
2912 (CERT_COMPARE_PUBKEY_MD5_HASH << CERT_COMPARE_SHIFT)
2913
2914#define CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG 0x1
2915#define CERT_FIND_OPTIONAL_CTL_USAGE_FLAG 0x1
2916#define CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG 0x2
2917#define CERT_FIND_EXT_ONLY_CTL_USAGE_FLAG 0x2
2918#define CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG 0x4
2919#define CERT_FIND_PROP_ONLY_CTL_USAGE_FLAG 0x4
2920#define CERT_FIND_NO_ENHKEY_USAGE_FLAG 0x8
2921#define CERT_FIND_NO_CTL_USAGE_FLAG 0x8
2922#define CERT_FIND_OR_ENHKEY_USAGE_FLAG 0x10
2923#define CERT_FIND_OR_CTL_USAGE_FLAG 0x10
2924#define CERT_FIND_VALID_ENHKEY_USAGE_FLAG 0x20
2925#define CERT_FIND_VALID_CTL_USAGE_FLAG 0x20
2926
2927#define CRL_FIND_ANY 0
2928#define CRL_FIND_ISSUED_BY 1
2929#define CRL_FIND_EXISTING 2
2930#define CRL_FIND_ISSUED_FOR 3
2931
2932#define CRL_FIND_ISSUED_BY_AKI_FLAG 0x1
2933#define CRL_FIND_ISSUED_BY_SIGNATURE_FLAG 0x2
2934#define CRL_FIND_ISSUED_BY_DELTA_FLAG 0x4
2935#define CRL_FIND_ISSUED_BY_BASE_FLAG 0x8
2936
2938{
2942
2943#define CTL_FIND_ANY 0
2944#define CTL_FIND_SHA1_HASH 1
2945#define CTL_FIND_MD5_HASH 2
2946#define CTL_FIND_USAGE 3
2947#define CTL_FIND_SUBJECT 4
2948#define CTL_FIND_EXISTING 5
2949
2951{
2957
2958#define CTL_FIND_NO_LIST_ID_CBDATA 0xffffffff
2959#define CTL_FIND_NO_SIGNER_PTR ((PCERT_INFO)-1)
2960#define CTL_FIND_SAME_USAGE_FLAG 0x00000001
2961
2963{
2969
2970/* PFN_CERT_STORE_PROV_WRITE_CERT dwFlags values */
2971#define CERT_STORE_PROV_WRITE_ADD_FLAG 0x1
2972
2973/* CertAddSerializedElementToStore context types */
2974#define CERT_STORE_CERTIFICATE_CONTEXT 1
2975#define CERT_STORE_CRL_CONTEXT 2
2976#define CERT_STORE_CTL_CONTEXT 3
2977#define CERT_STORE_ALL_CONTEXT_FLAG ~0U
2978#define CERT_STORE_CERTIFICATE_CONTEXT_FLAG \
2979 (1 << CERT_STORE_CERTIFICATE_CONTEXT)
2980#define CERT_STORE_CRL_CONTEXT_FLAG (1 << CERT_STORE_CRL_CONTEXT)
2981#define CERT_STORE_CTL_CONTEXT_FLAG (1 << CERT_STORE_CTL_CONTEXT)
2982
2983/* CryptBinaryToString/CryptStringToBinary flags */
2984#define CRYPT_STRING_BASE64HEADER 0x00000000
2985#define CRYPT_STRING_BASE64 0x00000001
2986#define CRYPT_STRING_BINARY 0x00000002
2987#define CRYPT_STRING_BASE64REQUESTHEADER 0x00000003
2988#define CRYPT_STRING_HEX 0x00000004
2989#define CRYPT_STRING_HEXASCII 0x00000005
2990#define CRYPT_STRING_BASE64_ANY 0x00000006
2991#define CRYPT_STRING_ANY 0x00000007
2992#define CRYPT_STRING_HEX_ANY 0x00000008
2993#define CRYPT_STRING_BASE64X509CRLHEADER 0x00000009
2994#define CRYPT_STRING_HEXADDR 0x0000000a
2995#define CRYPT_STRING_HEXASCIIADDR 0x0000000b
2996#define CRYPT_STRING_NOCRLF 0x40000000
2997#define CRYPT_STRING_NOCR 0x80000000
2998
2999/* OIDs */
3000#define szOID_RSA "1.2.840.113549"
3001#define szOID_PKCS "1.2.840.113549.1"
3002#define szOID_RSA_HASH "1.2.840.113549.2"
3003#define szOID_RSA_ENCRYPT "1.2.840.113549.3"
3004#define szOID_PKCS_1 "1.2.840.113549.1.1"
3005#define szOID_PKCS_2 "1.2.840.113549.1.2"
3006#define szOID_PKCS_3 "1.2.840.113549.1.3"
3007#define szOID_PKCS_4 "1.2.840.113549.1.4"
3008#define szOID_PKCS_5 "1.2.840.113549.1.5"
3009#define szOID_PKCS_6 "1.2.840.113549.1.6"
3010#define szOID_PKCS_7 "1.2.840.113549.1.7"
3011#define szOID_PKCS_8 "1.2.840.113549.1.8"
3012#define szOID_PKCS_9 "1.2.840.113549.1.9"
3013#define szOID_PKCS_10 "1.2.840.113549.1.10"
3014#define szOID_PKCS_11 "1.2.840.113549.1.12"
3015#define szOID_RSA_RSA "1.2.840.113549.1.1.1"
3016#define CERT_RSA_PUBLIC_KEY_OBJID szOID_RSA_RSA
3017#define CERT_DEFAULT_OID_PUBLIC_KEY_SIGN szOID_RSA_RSA
3018#define CERT_DEFAULT_OID_PUBLIC_KEY_XCHG szOID_RSA_RSA
3019#define szOID_RSA_MD2RSA "1.2.840.113549.1.1.2"
3020#define szOID_RSA_MD4RSA "1.2.840.113549.1.1.3"
3021#define szOID_RSA_MD5RSA "1.2.840.113549.1.1.4"
3022#define szOID_RSA_SHA1RSA "1.2.840.113549.1.1.5"
3023#define szOID_RSA_SET0AEP_RSA "1.2.840.113549.1.1.6"
3024#define szOID_RSA_SHA256RSA "1.2.840.113549.1.1.11"
3025#define szOID_RSA_SHA384RSA "1.2.840.113549.1.1.12"
3026#define szOID_RSA_SHA512RSA "1.2.840.113549.1.1.13"
3027#define szOID_RSA_DH "1.2.840.113549.1.3.1"
3028#define szOID_RSA_data "1.2.840.113549.1.7.1"
3029#define szOID_RSA_signedData "1.2.840.113549.1.7.2"
3030#define szOID_RSA_envelopedData "1.2.840.113549.1.7.3"
3031#define szOID_RSA_signEnvData "1.2.840.113549.1.7.4"
3032#define szOID_RSA_digestedData "1.2.840.113549.1.7.5"
3033#define szOID_RSA_hashedData "1.2.840.113549.1.7.5"
3034#define szOID_RSA_encryptedData "1.2.840.113549.1.7.6"
3035#define szOID_RSA_emailAddr "1.2.840.113549.1.9.1"
3036#define szOID_RSA_unstructName "1.2.840.113549.1.9.2"
3037#define szOID_RSA_contentType "1.2.840.113549.1.9.3"
3038#define szOID_RSA_messageDigest "1.2.840.113549.1.9.4"
3039#define szOID_RSA_signingTime "1.2.840.113549.1.9.5"
3040#define szOID_RSA_counterSign "1.2.840.113549.1.9.6"
3041#define szOID_RSA_challengePwd "1.2.840.113549.1.9.7"
3042#define szOID_RSA_unstructAddr "1.2.840.113549.1.9.9"
3043#define szOID_RSA_extCertAttrs "1.2.840.113549.1.9.9"
3044#define szOID_RSA_certExtensions "1.2.840.113549.1.9.14"
3045#define szOID_RSA_SMIMECapabilities "1.2.840.113549.1.9.15"
3046#define szOID_RSA_preferSignedData "1.2.840.113549.1.9.15.1"
3047#define szOID_RSA_SMIMEalg "1.2.840.113549.1.9.16.3"
3048#define szOID_RSA_SMIMEalgESDH "1.2.840.113549.1.9.16.3.5"
3049#define szOID_RSA_SMIMEalgCMS3DESwrap "1.2.840.113549.1.9.16.3.6"
3050#define szOID_RSA_SMIMEalgCMSRC2wrap "1.2.840.113549.1.9.16.3.7"
3051#define szOID_RSA_MD2 "1.2.840.113549.2.2"
3052#define szOID_RSA_MD4 "1.2.840.113549.2.4"
3053#define szOID_RSA_MD5 "1.2.840.113549.2.5"
3054#define szOID_RSA_RC2CBC "1.2.840.113549.3.2"
3055#define szOID_RSA_RC4 "1.2.840.113549.3.4"
3056#define szOID_RSA_DES_EDE3_CBC "1.2.840.113549.3.7"
3057#define szOID_RSA_RC5_CBCPad "1.2.840.113549.3.9"
3058#define szOID_ANSI_X942 "1.2.840.10046"
3059#define szOID_ANSI_X942_DH "1.2.840.10046.2.1"
3060#define szOID_X957 "1.2.840.10040"
3061#define szOID_X957_DSA "1.2.840.10040.4.1"
3062#define szOID_X957_SHA1DSA "1.2.840.10040.4.3"
3063#define szOID_ECC_PUBLIC_KEY "1.2.840.10045.2.1"
3064#define szOID_ECC_CURVE_P256 "1.2.840.10045.3.1.7"
3065#define szOID_ECDSA_SPECIFIED "1.2.840.10045.4.3"
3066#define szOID_ECDSA_SHA256 "1.2.840.10045.4.3.2"
3067#define szOID_ECDSA_SHA384 "1.2.840.10045.4.3.3"
3068#define szOID_ECDSA_SHA512 "1.2.840.10045.4.3.4"
3069#define szOID_DS "2.5"
3070#define szOID_DSALG "2.5.8"
3071#define szOID_DSALG_CRPT "2.5.8.1"
3072#define szOID_DSALG_HASH "2.5.8.2"
3073#define szOID_DSALG_SIGN "2.5.8.3"
3074#define szOID_DSALG_RSA "2.5.8.1.1"
3075#define szOID_OIW "1.3.14"
3076#define szOID_OIWSEC "1.3.14.3.2"
3077#define szOID_OIWSEC_md4RSA "1.3.14.3.2.2"
3078#define szOID_OIWSEC_md5RSA "1.3.14.3.2.3"
3079#define szOID_OIWSEC_md4RSA2 "1.3.14.3.2.4"
3080#define szOID_OIWSEC_desECB "1.3.14.3.2.6"
3081#define szOID_OIWSEC_desCBC "1.3.14.3.2.7"
3082#define szOID_OIWSEC_desOFB "1.3.14.3.2.8"
3083#define szOID_OIWSEC_desCFB "1.3.14.3.2.9"
3084#define szOID_OIWSEC_desMAC "1.3.14.3.2.10"
3085#define szOID_OIWSEC_rsaSign "1.3.14.3.2.11"
3086#define szOID_OIWSEC_dsa "1.3.14.3.2.12"
3087#define szOID_OIWSEC_shaDSA "1.3.14.3.2.13"
3088#define szOID_OIWSEC_mdc2RSA "1.3.14.3.2.14"
3089#define szOID_OIWSEC_shaRSA "1.3.14.3.2.15"
3090#define szOID_OIWSEC_dhCommMod "1.3.14.3.2.16"
3091#define szOID_OIWSEC_desEDE "1.3.14.3.2.17"
3092#define szOID_OIWSEC_sha "1.3.14.3.2.18"
3093#define szOID_OIWSEC_mdc2 "1.3.14.3.2.19"
3094#define szOID_OIWSEC_dsaComm "1.3.14.3.2.20"
3095#define szOID_OIWSEC_dsaCommSHA "1.3.14.3.2.21"
3096#define szOID_OIWSEC_rsaXchg "1.3.14.3.2.22"
3097#define szOID_OIWSEC_keyHashSeal "1.3.14.3.2.23"
3098#define szOID_OIWSEC_md2RSASign "1.3.14.3.2.24"
3099#define szOID_OIWSEC_md5RSASign "1.3.14.3.2.25"
3100#define szOID_OIWSEC_sha1 "1.3.14.3.2.26"
3101#define szOID_OIWSEC_dsaSHA1 "1.3.14.3.2.27"
3102#define szOID_OIWSEC_dsaCommSHA1 "1.3.14.3.2.28"
3103#define szOID_OIWSEC_sha1RSASign "1.3.14.3.2.29"
3104#define szOID_OIWDIR "1.3.14.7.2"
3105#define szOID_OIWDIR_CRPT "1.3.14.7.2.1"
3106#define szOID_OIWDIR_HASH "1.3.14.7.2.2"
3107#define szOID_OIWDIR_SIGN "1.3.14.7.2.3"
3108#define szOID_OIWDIR_md2 "1.3.14.7.2.2.1"
3109#define szOID_OIWDIR_md2RSA "1.3.14.7.2.3.1"
3110#define szOID_ECC_CURVE_P384 "1.3.132.0.34"
3111#define szOID_ECC_CURVE_P521 "1.3.132.0.35"
3112#define szOID_INFOSEC "2.16.840.1.101.2.1"
3113#define szOID_INFOSEC_sdnsSignature "2.16.840.1.101.2.1.1.1"
3114#define szOID_INFOSEC_mosaicSignature "2.16.840.1.101.2.1.1.2"
3115#define szOID_INFOSEC_sdnsConfidentiality "2.16.840.1.101.2.1.1.3"
3116#define szOID_INFOSEC_mosaicConfidentiality "2.16.840.1.101.2.1.1.4"
3117#define szOID_INFOSEC_sdnsIntegrity "2.16.840.1.101.2.1.1.5"
3118#define szOID_INFOSEC_mosaicIntegrity "2.16.840.1.101.2.1.1.6"
3119#define szOID_INFOSEC_sdnsTokenProtection "2.16.840.1.101.2.1.1.7"
3120#define szOID_INFOSEC_mosaicTokenProtection "2.16.840.1.101.2.1.1.8"
3121#define szOID_INFOSEC_sdnsKeyManagement "2.16.840.1.101.2.1.1.9"
3122#define szOID_INFOSEC_mosaicKeyManagement "2.16.840.1.101.2.1.1.10"
3123#define szOID_INFOSEC_sdnsKMandSig "2.16.840.1.101.2.1.1.11"
3124#define szOID_INFOSEC_mosaicKMandSig "2.16.840.1.101.2.1.1.12"
3125#define szOID_INFOSEC_SuiteASignature "2.16.840.1.101.2.1.1.13"
3126#define szOID_INFOSEC_SuiteAConfidentiality "2.16.840.1.101.2.1.1.14"
3127#define szOID_INFOSEC_SuiteAIntegrity "2.16.840.1.101.2.1.1.15"
3128#define szOID_INFOSEC_SuiteATokenProtection "2.16.840.1.101.2.1.1.16"
3129#define szOID_INFOSEC_SuiteAKeyManagement "2.16.840.1.101.2.1.1.17"
3130#define szOID_INFOSEC_SuiteAKMandSig "2.16.840.1.101.2.1.1.18"
3131#define szOID_INFOSEC_mosaicUpdatedSig "2.16.840.1.101.2.1.1.19"
3132#define szOID_INFOSEC_mosaicKMandUpdSig "2.16.840.1.101.2.1.1.20"
3133#define szOID_INFOSEC_mosaicUpdateInteg "2.16.840.1.101.2.1.1.21"
3134#define szOID_COMMON_NAME "2.5.4.3"
3135#define szOID_SUR_NAME "2.5.4.4"
3136#define szOID_DEVICE_SERIAL_NUMBER "2.5.4.5"
3137#define szOID_COUNTRY_NAME "2.5.4.6"
3138#define szOID_LOCALITY_NAME "2.5.4.7"
3139#define szOID_STATE_OR_PROVINCE_NAME "2.5.4.8"
3140#define szOID_STREET_ADDRESS "2.5.4.9"
3141#define szOID_ORGANIZATION_NAME "2.5.4.10"
3142#define szOID_ORGANIZATIONAL_UNIT_NAME "2.5.4.11"
3143#define szOID_TITLE "2.5.4.12"
3144#define szOID_DESCRIPTION "2.5.4.13"
3145#define szOID_SEARCH_GUIDE "2.5.4.14"
3146#define szOID_BUSINESS_CATEGORY "2.5.4.15"
3147#define szOID_POSTAL_ADDRESS "2.5.4.16"
3148#define szOID_POSTAL_CODE "2.5.4.17"
3149#define szOID_POST_OFFICE_BOX "2.5.4.18"
3150#define szOID_PHYSICAL_DELIVERY_OFFICE_NAME "2.5.4.19"
3151#define szOID_TELEPHONE_NUMBER "2.5.4.20"
3152#define szOID_TELEX_NUMBER "2.5.4.21"
3153#define szOID_TELETEXT_TERMINAL_IDENTIFIER "2.5.4.22"
3154#define szOID_FACSIMILE_TELEPHONE_NUMBER "2.5.4.23"
3155#define szOID_X21_ADDRESS "2.5.4.24"
3156#define szOID_INTERNATIONAL_ISDN_NUMBER "2.5.4.25"
3157#define szOID_REGISTERED_ADDRESS "2.5.4.26"
3158#define szOID_DESTINATION_INDICATOR "2.5.4.27"
3159#define szOID_PREFERRED_DELIVERY_METHOD "2.5.4.28"
3160#define szOID_PRESENTATION_ADDRESS "2.5.4.29"
3161#define szOID_SUPPORTED_APPLICATION_CONTEXT "2.5.4.30"
3162#define szOID_MEMBER "2.5.4.31"
3163#define szOID_OWNER "2.5.4.32"
3164#define szOID_ROLE_OCCUPANT "2.5.4.33"
3165#define szOID_SEE_ALSO "2.5.4.34"
3166#define szOID_USER_PASSWORD "2.5.4.35"
3167#define szOID_USER_CERTIFICATE "2.5.4.36"
3168#define szOID_CA_CERTIFICATE "2.5.4.37"
3169#define szOID_AUTHORITY_REVOCATION_LIST "2.5.4.38"
3170#define szOID_CERTIFICATE_REVOCATION_LIST "2.5.4.39"
3171#define szOID_CROSS_CERTIFICATE_PAIR "2.5.4.40"
3172#define szOID_GIVEN_NAME "2.5.4.42"
3173#define szOID_INITIALS "2.5.4.43"
3174#define szOID_DN_QUALIFIER "2.5.4.46"
3175#define szOID_AUTHORITY_KEY_IDENTIFIER "2.5.29.1"
3176#define szOID_KEY_ATTRIBUTES "2.5.29.2"
3177#define szOID_CERT_POLICIES_95 "2.5.29.3"
3178#define szOID_KEY_USAGE_RESTRICTION "2.5.29.4"
3179#define szOID_LEGACY_POLICY_MAPPINGS "2.5.29.5"
3180#define szOID_SUBJECT_ALT_NAME "2.5.29.7"
3181#define szOID_ISSUER_ALT_NAME "2.5.29.8"
3182#define szOID_SUBJECT_DIR_ATTRS "2.5.29.9"
3183#define szOID_BASIC_CONSTRAINTS "2.5.29.10"
3184#define szOID_SUBJECT_KEY_IDENTIFIER "2.5.29.14"
3185#define szOID_KEY_USAGE "2.5.29.15"
3186#define szOID_PRIVATEKEY_USAGE_PERIOD "2.5.29.16"
3187#define szOID_SUBJECT_ALT_NAME2 "2.5.29.17"
3188#define szOID_ISSUER_ALT_NAME2 "2.5.29.18"
3189#define szOID_BASIC_CONSTRAINTS2 "2.5.29.19"
3190#define szOID_CRL_NUMBER "2.5.29.20"
3191#define szOID_CRL_REASON_CODE "2.5.29.21"
3192#define szOID_REASON_CODE_HOLD "2.5.29.23"
3193#define szOID_DELTA_CRL_INDICATOR "2.5.29.27"
3194#define szOID_ISSUING_DIST_POINT "2.5.29.28"
3195#define szOID_NAME_CONSTRAINTS "2.5.29.30"
3196#define szOID_CRL_DIST_POINTS "2.5.29.31"
3197#define szOID_CERT_POLICIES "2.5.29.32"
3198#define szOID_ANY_CERT_POLICY "2.5.29.32.0"
3199#define szOID_POLICY_MAPPINGS "2.5.29.33"
3200#define szOID_AUTHORITY_KEY_IDENTIFIER2 "2.5.29.35"
3201#define szOID_POLICY_CONSTRAINTS "2.5.29.36"
3202#define szOID_ENHANCED_KEY_USAGE "2.5.29.37"
3203#define szOID_FRESHEST_CRL "2.5.29.46"
3204#define szOID_INHIBIT_ANY_POLICY "2.5.29.54"
3205#define szOID_DOMAIN_COMPONENT "0.9.2342.19200300.100.1.25"
3206#define szOID_PKCS_12_FRIENDLY_NAME_ATTR "1.2.840.113549.1.9.20"
3207#define szOID_PKCS_12_LOCAL_KEY_ID "1.2.840.113549.1.9.21"
3208#define szOID_CERT_EXTENSIONS "1.3.6.1.4.1.311.2.1.14"
3209#define szOID_NEXT_UPDATE_LOCATION "1.3.6.1.4.1.311.10.2"
3210#define szOID_KP_CTL_USAGE_SIGNING "1.3.6.1.4.1.311.10.3.1"
3211#define szOID_KP_TIME_STAMP_SIGNING "1.3.6.1.4.1.311.10.3.2"
3212#ifndef szOID_SERVER_GATED_CRYPTO
3213#define szOID_SERVER_GATED_CRYPTO "1.3.6.1.4.1.311.10.3.3"
3214#endif
3215#ifndef szOID_SGC_NETSCAPE
3216#define szOID_SGC_NETSCAPE "2.16.840.1.113730.4.1"
3217#endif
3218#define szOID_KP_EFS "1.3.6.1.4.1.311.10.3.4"
3219#define szOID_EFS_RECOVERY "1.3.6.1.4.1.311.10.3.4.1"
3220#define szOID_WHQL_CRYPTO "1.3.6.1.4.1.311.10.3.5"
3221#define szOID_NT5_CRYPTO "1.3.6.1.4.1.311.10.3.6"
3222#define szOID_OEM_WHQL_CRYPTO "1.3.6.1.4.1.311.10.3.7"
3223#define szOID_EMBEDDED_NT_CRYPTO "1.3.6.1.4.1.311.10.3.8"
3224#define szOID_ROOT_LIST_SIGNER "1.3.6.1.4.1.311.10.3.9"
3225#define szOID_KP_QUALIFIED_SUBORDINATION "1.3.6.1.4.1.311.10.3.10"
3226#define szOID_KP_KEY_RECOVERY "1.3.6.1.4.1.311.10.3.11"
3227#define szOID_KP_DOCUMENT_SIGNING "1.3.6.1.4.1.311.10.3.12"
3228#define szOID_KP_LIFETIME_SIGNING "1.3.6.1.4.1.311.10.3.13"
3229#define szOID_KP_MOBILE_DEVICE_SOFTWARE "1.3.6.1.4.1.311.10.3.14"
3230#define szOID_YESNO_TRUST_ATTR "1.3.6.1.4.1.311.10.4.1"
3231#ifndef szOID_DRM
3232#define szOID_DRM "1.3.6.1.4.1.311.10.5.1"
3233#endif
3234#ifndef szOID_DRM_INDIVIDUALIZATION
3235#define szOID_DRM_INDIVIDUALIZATION "1.3.6.1.4.1.311.10.5.2"
3236#endif
3237#ifndef szOID_LICENSES
3238#define szOID_LICENSES "1.3.6.1.4.1.311.10.6.1"
3239#endif
3240#ifndef szOID_LICENSE_SERVER
3241#define szOID_LICENSE_SERVER "1.3.6.1.4.1.311.10.6.2"
3242#endif
3243#define szOID_REMOVE_CERTIFICATE "1.3.6.1.4.1.311.10.8.1"
3244#define szOID_CROSS_CERT_DIST_POINTS "1.3.6.1.4.1.311.10.9.1"
3245#define szOID_CTL "1.3.6.1.4.1.311.10.1"
3246#define szOID_SORTED_CTL "1.3.6.1.4.1.311.10.1.1"
3247#define szOID_ANY_APPLICATION_POLICY "1.3.6.1.4.1.311.10.12.1"
3248#define szOID_RENEWAL_CERTIFICATE "1.3.6.1.4.1.311.13.1"
3249#define szOID_ENROLLMENT_NAME_VALUE_PAIR "1.3.6.1.4.1.311.13.2.1"
3250#define szOID_ENROLLMENT_CSP_PROVIDER "1.3.6.1.4.1.311.13.2.2"
3251#define szOID_OS_VERSION "1.3.6.1.4.1.311.13.2.3"
3252#define szOID_PKCS_12_KEY_PROVIDER_NAME_ATTR "1.3.6.1.4.1.311.17.1"
3253#define szOID_LOCAL_MACHINE_KEYSET "1.3.6.1.4.1.311.17.2"
3254#define szOID_AUTO_ENROLL_CTL_USAGE "1.3.6.1.4.1.311.20.1"
3255#define szOID_ENROLL_CERTTYPE_EXTENSION "1.3.6.1.4.1.311.20.2"
3256#define szOID_ENROLLMENT_AGENT "1.3.6.1.4.1.311.20.2.1"
3257#ifndef szOID_KP_SMARTCARD_LOGON
3258#define szOID_KP_SMARTCARD_LOGON "1.3.6.1.4.1.311.20.2.2"
3259#endif
3260#ifndef szOID_NT_PRINCIPAL_NAME
3261#define szOID_NT_PRINCIPAL_NAME "1.3.6.1.4.1.311.20.2.3"
3262#endif
3263#define szOID_CERT_MANIFOLD "1.3.6.1.4.1.311.20.3"
3264#ifndef szOID_CERTSRV_CA_VERSION
3265#define szOID_CERTSRV_CA_VERSION "1.3.6.1.4.1.311.21.1"
3266#endif
3267#define szOID_CERTSRV_PREVIOUS_CERT_HASH "1.3.6.1.4.1.311.21.2"
3268#define szOID_CRL_VIRTUAL_BASE "1.3.6.1.4.1.311.21.3"
3269#define szOID_CRL_NEXT_PUBLISH "1.3.6.1.4.1.311.21.4"
3270#define szOID_KP_CA_EXCHANGE "1.3.6.1.4.1.311.21.5"
3271#define szOID_KP_KEY_RECOVERY_AGENT "1.3.6.1.4.1.311.21.6"
3272#define szOID_CERTIFICATE_TEMPLATE "1.3.6.1.4.1.311.21.7"
3273#define szOID_ENTERPRISE_OID_ROOT "1.3.6.1.4.1.311.21.8"
3274#define szOID_RDN_DUMMY_SIGNER "1.3.6.1.4.1.311.21.9"
3275#define szOID_APPLICATION_CERT_POLICIES "1.3.6.1.4.1.311.21.10"
3276#define szOID_APPLICATION_POLICY_MAPPINGS "1.3.6.1.4.1.311.21.11"
3277#define szOID_APPLICATION_POLICY_CONSTRAINTS "1.3.6.1.4.1.311.21.12"
3278#define szOID_ARCHIVED_KEY_ATTR "1.3.6.1.4.1.311.21.13"
3279#define szOID_CRL_SELF_CDP "1.3.6.1.4.1.311.21.14"
3280#define szOID_REQUIRE_CERT_CHAIN_POLICY "1.3.6.1.4.1.311.21.15"
3281#define szOID_ARCHIVED_KEY_CERT_HASH "1.3.6.1.4.1.311.21.16"
3282#define szOID_ISSUED_CERT_HASH "1.3.6.1.4.1.311.21.17"
3283#define szOID_DS_EMAIL_REPLICATION "1.3.6.1.4.1.311.21.19"
3284#define szOID_REQUEST_CLIENT_INFO "1.3.6.1.4.1.311.21.20"
3285#define szOID_ENCRYPTED_KEY_HASH "1.3.6.1.4.1.311.21.21"
3286#define szOID_CERTSRV_CROSSCA_VERSION "1.3.6.1.4.1.311.21.22"
3287#define szOID_KEYID_RDN "1.3.6.1.4.1.311.10.7.1"
3288#define szOID_PKIX "1.3.6.1.5.5.7"
3289#define szOID_PKIX_PE "1.3.6.1.5.5.7.1"
3290#define szOID_AUTHORITY_INFO_ACCESS "1.3.6.1.5.5.7.1.1"
3291#define szOID_PKIX_POLICY_QUALIFIER_CPS "1.3.6.1.5.5.7.2.1"
3292#define szOID_PKIX_POLICY_QUALIFIER_USERNOTICE "1.3.6.1.5.5.7.2.2"
3293#define szOID_PKIX_KP "1.3.6.1.5.5.7.3"
3294#define szOID_PKIX_KP_SERVER_AUTH "1.3.6.1.5.5.7.3.1"
3295#define szOID_PKIX_KP_CLIENT_AUTH "1.3.6.1.5.5.7.3.2"
3296#define szOID_PKIX_KP_CODE_SIGNING "1.3.6.1.5.5.7.3.3"
3297#define szOID_PKIX_KP_EMAIL_PROTECTION "1.3.6.1.5.5.7.3.4"
3298#define szOID_PKIX_KP_IPSEC_END_SYSTEM "1.3.6.1.5.5.7.3.5"
3299#define szOID_PKIX_KP_IPSEC_TUNNEL "1.3.6.1.5.5.7.3.6"
3300#define szOID_PKIX_KP_IPSEC_USER "1.3.6.1.5.5.7.3.7"
3301#define szOID_PKIX_KP_TIMESTAMP_SIGNING "1.3.6.1.5.5.7.3.8"
3302#define szOID_PKIX_NO_SIGNATURE "1.3.6.1.5.5.7.6.2"
3303#define szOID_CMC "1.3.6.1.5.5.7.7"
3304#define szOID_CMC_STATUS_INFO "1.3.6.1.5.5.7.7.1"
3305#define szOID_CMC_IDENTIFICATION "1.3.6.1.5.5.7.7.2"
3306#define szOID_CMC_IDENTITY_PROOF "1.3.6.1.5.5.7.7.3"
3307#define szOID_CMC_DATA_RETURN "1.3.6.1.5.5.7.7.4"
3308#define szOID_CMC_TRANSACTION_ID "1.3.6.1.5.5.7.7.5"
3309#define szOID_CMC_SENDER_NONCE "1.3.6.1.5.5.7.7.6"
3310#define szOID_CMC_RECIPIENT_NONCE "1.3.6.1.5.5.7.7.7"
3311#define szOID_CMC_ADD_EXTENSIONS "1.3.6.1.5.5.7.7.8"
3312#define szOID_CMC_ENCRYPTED_POP "1.3.6.1.5.5.7.7.9"
3313#define szOID_CMC_DECRYPTED_POP "1.3.6.1.5.5.7.7.10"
3314#define szOID_CMC_LRA_POP_WITNESS "1.3.6.1.5.5.7.7.11"
3315#define szOID_CMC_GET_CERT "1.3.6.1.5.5.7.7.15"
3316#define szOID_CMC_GET_CRL "1.3.6.1.5.5.7.7.16"
3317#define szOID_CMC_REVOKE_REQUEST "1.3.6.1.5.5.7.7.17"
3318#define szOID_CMC_REG_INFO "1.3.6.1.5.5.7.7.18"
3319#define szOID_CMC_RESPONSE_INFO "1.3.6.1.5.5.7.7.19"
3320#define szOID_CMC_QUERY_PENDING "1.3.6.1.5.5.7.7.21"
3321#define szOID_CMC_ID_POP_LINK_RANDOM "1.3.6.1.5.5.7.7.22"
3322#define szOID_CMC_ID_POP_LINK_WITNESS "1.3.6.1.5.5.7.7.23"
3323#define szOID_CT_PKI_DATA "1.3.6.1.5.5.7.12.2"
3324#define szOID_CT_PKI_RESPONSE "1.3.6.1.5.5.7.12.3"
3325#define szOID_PKIX_ACC_DESCR "1.3.6.1.5.5.7.48"
3326#define szOID_PKIX_OCSP "1.3.6.1.5.5.7.48.1"
3327#define szOID_PKIX_CA_ISSUERS "1.3.6.1.5.5.7.48.2"
3328#define szOID_IPSEC_KP_IKE_INTERMEDIATE "1.3.6.1.5.5.8.2.2"
3329
3330#ifndef szOID_SERIALIZED
3331#define szOID_SERIALIZED "1.3.6.1.4.1.311.10.3.3.1"
3332#endif
3333
3334#ifndef szOID_PRODUCT_UPDATE
3335#define szOID_PRODUCT_UPDATE "1.3.6.1.4.1.311.31.1"
3336#endif
3337
3338#define szOID_NETSCAPE "2.16.840.1.113730"
3339#define szOID_NETSCAPE_CERT_EXTENSION "2.16.840.1.113730.1"
3340#define szOID_NETSCAPE_CERT_TYPE "2.16.840.1.113730.1.1"
3341#define szOID_NETSCAPE_BASE_URL "2.16.840.1.113730.1.2"
3342#define szOID_NETSCAPE_REVOCATION_URL "2.16.840.1.113730.1.3"
3343#define szOID_NETSCAPE_CA_REVOCATION_URL "2.16.840.1.113730.1.4"
3344#define szOID_NETSCAPE_CERT_RENEWAL_URL "2.16.840.1.113730.1.7"
3345#define szOID_NETSCAPE_CA_POLICY_URL "2.16.840.1.113730.1.8"
3346#define szOID_NETSCAPE_SSL_SERVER_NAME "2.16.840.1.113730.1.12"
3347#define szOID_NETSCAPE_COMMENT "2.16.840.1.113730.1.13"
3348#define szOID_NETSCAPE_DATA_TYPE "2.16.840.1.113730.2"
3349#define szOID_NETSCAPE_CERT_SEQUENCE "2.16.840.1.113730.2.5"
3350
3351#define szOID_NIST_sha256 "2.16.840.1.101.3.4.2.1"
3352#define szOID_NIST_sha384 "2.16.840.1.101.3.4.2.2"
3353#define szOID_NIST_sha512 "2.16.840.1.101.3.4.2.3"
3354
3355/* Bits for szOID_NETSCAPE_CERT_TYPE */
3356#define NETSCAPE_SSL_CLIENT_AUTH_CERT_TYPE 0x80
3357#define NETSCAPE_SSL_SERVER_AUTH_CERT_TYPE 0x40
3358#define NETSCAPE_SMIME_CERT_TYPE 0x20
3359#define NETSCAPE_SIGN_CERT_TYPE 0x10
3360#define NETSCAPE_SSL_CA_CERT_TYPE 0x04
3361#define NETSCAPE_SMIME_CA_CERT_TYPE 0x02
3362#define NETSCAPE_SIGN_CA_CERT_TYPE 0x01
3363
3364#define CRYPT_ENCODE_DECODE_NONE 0
3365#define X509_CERT ((LPCSTR)1)
3366#define X509_CERT_TO_BE_SIGNED ((LPCSTR)2)
3367#define X509_CERT_CRL_TO_BE_SIGNED ((LPCSTR)3)
3368#define X509_CERT_REQUEST_TO_BE_SIGNED ((LPCSTR)4)
3369#define X509_EXTENSIONS ((LPCSTR)5)
3370#define X509_NAME_VALUE ((LPCSTR)6)
3371#define X509_ANY_STRING X509_NAME_VALUE
3372#define X509_NAME ((LPCSTR)7)
3373#define X509_PUBLIC_KEY_INFO ((LPCSTR)8)
3374#define X509_AUTHORITY_KEY_ID ((LPCSTR)9)
3375#define X509_KEY_ATTRIBUTES ((LPCSTR)10)
3376#define X509_KEY_USAGE_RESTRICTION ((LPCSTR)11)
3377#define X509_ALTERNATE_NAME ((LPCSTR)12)
3378#define X509_BASIC_CONSTRAINTS ((LPCSTR)13)
3379#define X509_KEY_USAGE ((LPCSTR)14)
3380#define X509_BASIC_CONSTRAINTS2 ((LPCSTR)15)
3381#define X509_CERT_POLICIES ((LPCSTR)16)
3382#define PKCS_UTC_TIME ((LPCSTR)17)
3383#define PKCS_TIME_REQUEST ((LPCSTR)18)
3384#define RSA_CSP_PUBLICKEYBLOB ((LPCSTR)19)
3385#define X509_UNICODE_NAME ((LPCSTR)20)
3386#define X509_KEYGEN_REQUEST_TO_BE_SIGNED ((LPCSTR)21)
3387#define PKCS_ATTRIBUTE ((LPCSTR)22)
3388#define PKCS_CONTENT_INFO_SEQUENCE_OF_ANY ((LPCSTR)23)
3389#define X509_UNICODE_NAME_VALUE ((LPCSTR)24)
3390#define X509_UNICODE_ANY_STRING X509_UNICODE_NAME_VALUE
3391#define X509_OCTET_STRING ((LPCSTR)25)
3392#define X509_BITS ((LPCSTR)26)
3393#define X509_INTEGER ((LPCSTR)27)
3394#define X509_MULTI_BYTE_INTEGER ((LPCSTR)28)
3395#define X509_ENUMERATED ((LPCSTR)29)
3396#define X509_CRL_REASON_CODE X509_ENUMERATED
3397#define X509_CHOICE_OF_TIME ((LPCSTR)30)
3398#define X509_AUTHORITY_KEY_ID2 ((LPCSTR)31)
3399#define X509_AUTHORITY_INFO_ACCESS ((LPCSTR)32)
3400#define PKCS_CONTENT_INFO ((LPCSTR)33)
3401#define X509_SEQUENCE_OF_ANY ((LPCSTR)34)
3402#define X509_CRL_DIST_POINTS ((LPCSTR)35)
3403#define X509_ENHANCED_KEY_USAGE ((LPCSTR)36)
3404#define PKCS_CTL ((LPCSTR)37)
3405#define X509_MULTI_BYTE_UINT ((LPCSTR)38)
3406#define X509_DSS_PUBLICKEY X509_MULTI_BYTE_UINT
3407#define X509_DSS_PARAMETERS ((LPCSTR)39)
3408#define X509_DSS_SIGNATURE ((LPCSTR)40)
3409#define PKCS_RC2_CBC_PARAMETERS ((LPCSTR)41)
3410#define PKCS_SMIME_CAPABILITIES ((LPCSTR)42)
3411#define PKCS_RSA_PRIVATE_KEY ((LPCSTR)43)
3412#define PKCS_PRIVATE_KEY_INFO ((LPCSTR)44)
3413#define PKCS_ENCRYPTED_PRIVATE_KEY_INFO ((LPCSTR)45)
3414#define X509_PKIX_POLICY_QUALIFIER_USERNOTICE ((LPCSTR)46)
3415#define X509_DH_PUBLICKEY X509_MULTI_BYTE_UINT
3416#define X509_DH_PARAMETERS ((LPCSTR)47)
3417#define X509_ECC_SIGNATURE ((LPCSTR)47)
3418#define PKCS_ATTRIBUTES ((LPCSTR)48)
3419#define PKCS_SORTED_CTL ((LPCSTR)49)
3420#define X942_DH_PARAMETERS ((LPCSTR)50)
3421#define X509_BITS_WITHOUT_TRAILING_ZEROES ((LPCSTR)51)
3422#define X942_OTHER_INFO ((LPCSTR)52)
3423#define X509_CERT_PAIR ((LPCSTR)53)
3424#define X509_ISSUING_DIST_POINT ((LPCSTR)54)
3425#define X509_NAME_CONSTRAINTS ((LPCSTR)55)
3426#define X509_POLICY_MAPPINGS ((LPCSTR)56)
3427#define X509_POLICY_CONSTRAINTS ((LPCSTR)57)
3428#define X509_CROSS_CERT_DIST_POINTS ((LPCSTR)58)
3429#define CMC_DATA ((LPCSTR)59)
3430#define CMC_RESPONSE ((LPCSTR)60)
3431#define CMC_STATUS ((LPCSTR)61)
3432#define CMC_ADD_EXTENSIONS ((LPCSTR)62)
3433#define CMC_ADD_ATTRIBUTES ((LPCSTR)63)
3434#define X509_CERTIFICATE_TEMPLATE ((LPCSTR)64)
3435#define X509_OBJECT_IDENTIFIER ((LPCSTR)73)
3436#define PKCS7_SIGNER_INFO ((LPCSTR)500)
3437#define CMS_SIGNER_INFO ((LPCSTR)501)
3438
3439/* encode/decode flags */
3440#define CRYPT_ENCODE_NO_SIGNATURE_BYTE_REVERSAL_FLAG 0x00008
3441#define CRYPT_ENCODE_ALLOC_FLAG 0x08000
3442#define CRYPT_SORTED_CTL_ENCODE_HASHED_SUBJECT_IDENTIFIER_FLAG 0x10000
3443#define CRYPT_UNICODE_NAME_ENCODE_ENABLE_T61_UNICODE_FLAG \
3444 CERT_RDN_ENABLE_T61_UNICODE_FLAG
3445#define CRYPT_UNICODE_NAME_ENCODE_ENABLE_UTF8_UNICODE_FLAG \
3446 CERT_RDN_ENABLE_UTF8_UNICODE_FLAG
3447#define CRYPT_UNICODE_NAME_ENCODE_DISABLE_CHECK_TYPE_FLAG \
3448 CERT_RDN_DISABLE_CHECK_TYPE_FLAG
3449
3450#define CRYPT_DECODE_NOCOPY_FLAG 0x00001
3451#define CRYPT_DECODE_TO_BE_SIGNED_FLAG 0x00002
3452#define CRYPT_DECODE_SHARE_OID_STRING_FLAG 0x00004
3453#define CRYPT_DECODE_NO_SIGNATURE_BYTE_REVERSAL_FLAG 0x00008
3454#define CRYPT_DECODE_ALLOC_FLAG 0x08000
3455#define CRYPT_UNICODE_NAME_DECODE_DISABLE_IE4_UTF8_FLAG \
3456 CERT_RDN_DISABLE_IE4_UTF8_FLAG
3457
3458#define CERT_STORE_SIGNATURE_FLAG 0x00000001
3459#define CERT_STORE_TIME_VALIDITY_FLAG 0x00000002
3460#define CERT_STORE_REVOCATION_FLAG 0x00000004
3461#define CERT_STORE_NO_CRL_FLAG 0x00010000
3462#define CERT_STORE_NO_ISSUER_FLAG 0x00020000
3463
3464#define CERT_STORE_BASE_CRL_FLAG 0x00000100
3465#define CERT_STORE_DELTA_CRL_FLAG 0x00000200
3466
3467/* subject types for CryptVerifyCertificateSignatureEx */
3468#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_BLOB 1
3469#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_CERT 2
3470#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_CRL 3
3471
3472/* issuer types for CryptVerifyCertificateSignatureEx */
3473#define CRYPT_VERIFY_CERT_SIGN_ISSUER_PUBKEY 1
3474#define CRYPT_VERIFY_CERT_SIGN_ISSUER_CERT 2
3475#define CRYPT_VERIFY_CERT_SIGN_ISSUER_CHAIN 3
3476#define CRYPT_VERIFY_CERT_SIGN_ISSUER_NULL 4
3477
3478#define CRYPT_GET_URL_FROM_PROPERTY 0x00000001
3479#define CRYPT_GET_URL_FROM_EXTENSION 0x00000002
3480#define CRYPT_GET_URL_FROM_UNAUTH_ATTRIBUTE 0x00000004
3481#define CRYPT_GET_URL_FROM_AUTH_ATTRIBUTE 0x00000008
3482
3483/* Certificate name string types and flags */
3484#define CERT_SIMPLE_NAME_STR 1
3485#define CERT_OID_NAME_STR 2
3486#define CERT_X500_NAME_STR 3
3487#define CERT_NAME_STR_SEMICOLON_FLAG 0x40000000
3488#define CERT_NAME_STR_NO_PLUS_FLAG 0x20000000
3489#define CERT_NAME_STR_NO_QUOTING_FLAG 0x10000000
3490#define CERT_NAME_STR_CRLF_FLAG 0x08000000
3491#define CERT_NAME_STR_COMMA_FLAG 0x04000000
3492#define CERT_NAME_STR_REVERSE_FLAG 0x02000000
3493#define CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG 0x00040000
3494#define CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG 0x00020000
3495#define CERT_NAME_STR_DISABLE_IE4_UTF8_FLAG 0x00010000
3496
3497#define CERT_NAME_EMAIL_TYPE 1
3498#define CERT_NAME_RDN_TYPE 2
3499#define CERT_NAME_ATTR_TYPE 3
3500#define CERT_NAME_SIMPLE_DISPLAY_TYPE 4
3501#define CERT_NAME_FRIENDLY_DISPLAY_TYPE 5
3502#define CERT_NAME_DNS_TYPE 6
3503#define CERT_NAME_URL_TYPE 7
3504#define CERT_NAME_UPN_TYPE 8
3505
3506#define CERT_NAME_ISSUER_FLAG 0x00000001
3507#define CERT_NAME_DISABLE_IE4_UTF8_FLAG 0x00010000
3508
3509/* CryptFormatObject flags */
3510#define CRYPT_FORMAT_STR_MULTI_LINE 0x0001
3511#define CRYPT_FORMAT_STR_NO_HEX 0x0010
3512
3513#define CRYPT_FORMAT_SIMPLE 0x0001
3514#define CRYPT_FORMAT_X509 0x0002
3515#define CRYPT_FORMAT_OID 0x0004
3516#define CRYPT_FORMAT_RDN_SEMICOLON 0x0100
3517#define CRYPT_FORMAT_RDN_CRLF 0x0200
3518#define CRYPT_FORMAT_RDN_UNQUOTE 0x0400
3519#define CRYPT_FORMAT_RDN_REVERSE 0x0800
3520
3521#define CRYPT_FORMAT_COMMA 0x1000
3522#define CRYPT_FORMAT_SEMICOLON CRYPT_FORMAT_RDN_SEMICOLON
3523#define CRYPT_FORMAT_CRLF CRYPT_FORMAT_RDN_CRLF
3524
3525/* CryptQueryObject types and flags */
3526#define CERT_QUERY_OBJECT_FILE 1
3527#define CERT_QUERY_OBJECT_BLOB 2
3528
3529#define CERT_QUERY_CONTENT_CERT 1
3530#define CERT_QUERY_CONTENT_CTL 2
3531#define CERT_QUERY_CONTENT_CRL 3
3532#define CERT_QUERY_CONTENT_SERIALIZED_STORE 4
3533#define CERT_QUERY_CONTENT_SERIALIZED_CERT 5
3534#define CERT_QUERY_CONTENT_SERIALIZED_CTL 6
3535#define CERT_QUERY_CONTENT_SERIALIZED_CRL 7
3536#define CERT_QUERY_CONTENT_PKCS7_SIGNED 8
3537#define CERT_QUERY_CONTENT_PKCS7_UNSIGNED 9
3538#define CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED 10
3539#define CERT_QUERY_CONTENT_PKCS10 11
3540#define CERT_QUERY_CONTENT_PFX 12
3541#define CERT_QUERY_CONTENT_CERT_PAIR 13
3542
3543#define CERT_QUERY_CONTENT_FLAG_CERT (1 << CERT_QUERY_CONTENT_CERT)
3544#define CERT_QUERY_CONTENT_FLAG_CTL (1 << CERT_QUERY_CONTENT_CTL)
3545#define CERT_QUERY_CONTENT_FLAG_CRL (1 << CERT_QUERY_CONTENT_CRL)
3546#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE \
3547 (1 << CERT_QUERY_CONTENT_SERIALIZED_STORE)
3548#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT \
3549 (1 << CERT_QUERY_CONTENT_SERIALIZED_CERT)
3550#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL \
3551 (1 << CERT_QUERY_CONTENT_SERIALIZED_CTL)
3552#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL \
3553 (1 << CERT_QUERY_CONTENT_SERIALIZED_CRL)
3554#define CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED \
3555 (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED)
3556#define CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED \
3557 (1 << CERT_QUERY_CONTENT_PKCS7_UNSIGNED)
3558#define CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED \
3559 (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED)
3560#define CERT_QUERY_CONTENT_FLAG_PKCS10 (1 << CERT_QUERY_CONTENT_PKCS10)
3561#define CERT_QUERY_CONTENT_FLAG_PFX (1 << CERT_QUERY_CONTENT_PFX)
3562#define CERT_QUERY_CONTENT_FLAG_CERT_PAIR (1 << CERT_QUERY_CONTENT_CERT_PAIR)
3563
3564#define CERT_QUERY_CONTENT_FLAG_ALL \
3565 CERT_QUERY_CONTENT_FLAG_CERT | \
3566 CERT_QUERY_CONTENT_FLAG_CTL | \
3567 CERT_QUERY_CONTENT_FLAG_CRL | \
3568 CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE | \
3569 CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT | \
3570 CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL | \
3571 CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL | \
3572 CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | \
3573 CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED | \
3574 CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED | \
3575 CERT_QUERY_CONTENT_FLAG_PKCS10 | \
3576 CERT_QUERY_CONTENT_FLAG_PFX | \
3577 CERT_QUERY_CONTENT_FLAG_CERT_PAIR
3578
3579#define CERT_QUERY_FORMAT_BINARY 1
3580#define CERT_QUERY_FORMAT_BASE64_ENCODED 2
3581#define CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED 3
3582
3583#define CERT_QUERY_FORMAT_FLAG_BINARY (1 << CERT_QUERY_FORMAT_BINARY)
3584#define CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED \
3585 (1 << CERT_QUERY_FORMAT_BASE64_ENCODED)
3586#define CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED \
3587 (1 << CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED)
3588
3589#define CERT_QUERY_FORMAT_FLAG_ALL \
3590 CERT_QUERY_FORMAT_FLAG_BINARY | \
3591 CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED | \
3592 CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED \
3593
3594#define CERT_SET_KEY_PROV_HANDLE_PROP_ID 0x00000001
3595#define CERT_SET_KEY_CONTEXT_PROP_ID 0x00000001
3596
3597#define CERT_CREATE_SELFSIGN_NO_SIGN 1
3598#define CERT_CREATE_SELFSIGN_NO_KEY_INFO 2
3599
3600/* flags for CryptAcquireCertificatePrivateKey */
3601#define CRYPT_ACQUIRE_CACHE_FLAG 0x00000001
3602#define CRYPT_ACQUIRE_USE_PROV_INFO_FLAG 0x00000002
3603#define CRYPT_ACQUIRE_COMPARE_KEY_FLAG 0x00000004
3604#define CRYPT_ACQUIRE_SILENT_FLAG 0x00000040
3605
3606/* flags for CryptFindCertificateKeyProvInfo */
3607#define CRYPT_FIND_USER_KEYSET_FLAG 0x00000001
3608#define CRYPT_FIND_MACHINE_KEYSET_FLAG 0x00000002
3609#define CRYPT_FIND_SILENT_KEYSET_FLAG 0x00000040
3610
3611/* Chain engines and chains */
3613#define HCCE_CURRENT_USER ((HCERTCHAINENGINE)NULL)
3614#define HCCE_LOCAL_MACHINE ((HCERTCHAINENGINE)1)
3615
3616#define CERT_CHAIN_CACHE_END_CERT 0x00000001
3617#define CERT_CHAIN_THREAD_STORE_SYNC 0x00000002
3618#define CERT_CHAIN_CACHE_ONLY_URL_RETRIEVAL 0x00000004
3619#define CERT_CHAIN_USE_LOCAL_MACHINE_STORE 0x00000008
3620#define CERT_CHAIN_ENABLE_CACHE_AUTO_UPDATE 0x00000010
3621#define CERT_CHAIN_ENABLE_SHARE_STORE 0x00000020
3622
3624{
3638
3639/* message-related definitions */
3640
3641typedef BOOL
3643 _In_opt_ const void *pvArg,
3645 _In_ DWORD cbData,
3646 _In_ BOOL fFinal);
3647
3648#define CMSG_INDEFINITE_LENGTH 0xffffffff
3649
3650typedef struct _CMSG_STREAM_INFO
3651{
3654 void *pvArg;
3656
3658{
3662
3663typedef struct _CERT_ID
3664{
3666 union {
3672
3673#define CERT_ID_ISSUER_SERIAL_NUMBER 1
3674#define CERT_ID_KEY_IDENTIFIER 2
3675#define CERT_ID_SHA1_HASH 3
3676
3677#ifndef USE_WC_PREFIX
3678#undef CMSG_DATA /* may be defined by sys/socket.h */
3679#define CMSG_DATA 1
3680#define CMSG_SIGNED 2
3681#define CMSG_ENVELOPED 3
3682#define CMSG_SIGNED_AND_ENVELOPED 4
3683#define CMSG_HASHED 5
3684#define CMSG_ENCRYPTED 6
3685
3686#define CMSG_ALL_FLAGS ~0U
3687#define CMSG_DATA_FLAG (1 << CMSG_DATA)
3688#define CMSG_SIGNED_FLAG (1 << CMSG_SIGNED)
3689#define CMSG_ENVELOPED_FLAG (1 << CMSG_ENVELOPED)
3690#define CMSG_SIGNED_AND_ENVELOPED_FLAG (1 << CMSG_SIGNED_AND_ENVELOPED)
3691#define CMSG_ENCRYPTED_FLAG (1 << CMSG_ENCRYPTED)
3692#else
3693#define WC_CMSG_DATA 1
3694#define WC_CMSG_SIGNED 2
3695#define WC_CMSG_ENVELOPED 3
3696#define WC_CMSG_SIGNED_AND_ENVELOPED 4
3697#define WC_CMSG_HASHED 5
3698#define WC_CMSG_ENCRYPTED 6
3699
3700#define WC_CMSG_ALL_FLAGS ~0U
3701#define WC_CMSG_DATA_FLAG (1 << WC_CMSG_DATA)
3702#define WC_CMSG_SIGNED_FLAG (1 << WC_CMSG_SIGNED)
3703#define WC_CMSG_ENVELOPED_FLAG (1 << WC_CMSG_ENVELOPED)
3704#define WC_CMSG_SIGNED_AND_ENVELOPED_FLAG (1 << WC_CMSG_SIGNED_AND_ENVELOPED)
3705#define WC_CMSG_ENCRYPTED_FLAG (1 << WC_CMSG_ENCRYPTED)
3706#endif
3707
3709{
3720#ifdef CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS
3721 CERT_ID SignerId;
3722 CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
3723 void *pvHashEncryptionAuxInfo;
3724#endif
3726
3728{
3736#ifdef CMSG_SIGNED_ENCODE_INFO_HAS_CMS_FIELDS
3737 DWORD cAttrCertEncoded;
3738 PCERT_BLOB rgAttrCertEncoded;
3739#endif
3741
3743{
3751
3753{
3761
3763{
3772 union {
3780
3781#define CMSG_KEY_AGREE_EPHEMERAL_KEY_CHOICE 1
3782#define CMSG_KEY_AGREE_STATIC_KEY_CHOICE 2
3783
3785{
3791 union {
3799
3800#define CMSG_MAIL_LIST_HANDLE_KEY_CHOICE 1
3801
3803{
3805 union {
3811
3812#define CMSG_KEY_TRANS_RECIPIENT 1
3813#define CMSG_KEY_AGREE_RECIPIENT 2
3814#define CMSG_MAIL_LIST_RECIPIENT 3
3815
3817{
3824#ifdef CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS
3825 PCMSG_RECIPIENT_ENCODE_INFO rgCmsRecipients;
3826 DWORD cCertEncoded;
3827 PCERT_BLOB rgCertEncoded;
3828 DWORD cCrlEncoded;
3829 PCRL_BLOB rgCrlEncoded;
3830 DWORD cAttrCertEncoded;
3831 PCERT_BLOB rgAttrCertEncoded;
3832 DWORD cUnprotectedAttr;
3833 PCRYPT_ATTRIBUTE rgUnprotectedAttr;
3834#endif
3836
3838{
3844
3846{
3852
3854{
3859
3860#define CMSG_BARE_CONTENT_FLAG 0x00000001
3861#define CMSG_LENGTH_ONLY_FLAG 0x00000002
3862#define CMSG_DETACHED_FLAG 0x00000004
3863#define CMSG_AUTHENTICATED_ATTRIBUTES_FLAG 0x00000008
3864#define CMSG_CONTENTS_OCTETS_FLAG 0x00000010
3865#define CMSG_MAX_LENGTH_FLAG 0x00000020
3866#define CMSG_CMS_ENCAPSULATED_CONTENT_FLAG 0x00000040
3867#define CMSG_CRYPT_RELEASE_CONTEXT_FLAG 0x00008000
3868
3869#define CMSG_CTRL_VERIFY_SIGNATURE 1
3870#define CMSG_CTRL_DECRYPT 2
3871#define CMSG_CTRL_VERIFY_HASH 5
3872#define CMSG_CTRL_ADD_SIGNER 6
3873#define CMSG_CTRL_DEL_SIGNER 7
3874#define CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR 8
3875#define CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR 9
3876#define CMSG_CTRL_ADD_CERT 10
3877#define CMSG_CTRL_DEL_CERT 11
3878#define CMSG_CTRL_ADD_CRL 12
3879#define CMSG_CTRL_DEL_CRL 13
3880#define CMSG_CTRL_ADD_ATTR_CERT 14
3881#define CMSG_CTRL_DEL_ATTR_CERT 15
3882#define CMSG_CTRL_KEY_TRANS_DECRYPT 16
3883#define CMSG_CTRL_KEY_AGREE_DECRYPT 17
3884#define CMSG_CTRL_MAIL_LIST_DECRYPT 18
3885#define CMSG_CTRL_VERIFY_SIGNATURE_EX 19
3886#define CMSG_CTRL_ADD_CMS_SIGNER_INFO 20
3887
3889{
3895
3897{
3903
3905{
3911
3919
3920#define CMSG_VERIFY_SIGNER_PUBKEY 1
3921#define CMSG_VERIFY_SIGNER_CERT 2
3922#define CMSG_VERIFY_SIGNER_CHAIN 3
3923#define CMSG_VERIFY_SIGNER_NULL 4
3924
3925#define CMSG_TYPE_PARAM 1
3926#define CMSG_CONTENT_PARAM 2
3927#define CMSG_BARE_CONTENT_PARAM 3
3928#define CMSG_INNER_CONTENT_TYPE_PARAM 4
3929#define CMSG_SIGNER_COUNT_PARAM 5
3930#define CMSG_SIGNER_INFO_PARAM 6
3931#define CMSG_SIGNER_CERT_INFO_PARAM 7
3932#define CMSG_SIGNER_HASH_ALGORITHM_PARAM 8
3933#define CMSG_SIGNER_AUTH_ATTR_PARAM 9
3934#define CMSG_SIGNER_UNAUTH_ATTR_PARAM 10
3935#define CMSG_CERT_COUNT_PARAM 11
3936#define CMSG_CERT_PARAM 12
3937#define CMSG_CRL_COUNT_PARAM 13
3938#define CMSG_CRL_PARAM 14
3939#define CMSG_ENVELOPE_ALGORITHM_PARAM 15
3940#define CMSG_RECIPIENT_COUNT_PARAM 17
3941#define CMSG_RECIPIENT_INDEX_PARAM 18
3942#define CMSG_RECIPIENT_INFO_PARAM 19
3943#define CMSG_HASH_ALGORITHM_PARAM 20
3944#define CMSG_HASH_DATA_PARAM 21
3945#define CMSG_COMPUTED_HASH_PARAM 22
3946#define CMSG_ENCRYPT_PARAM 26
3947#define CMSG_ENCRYPTED_DIGEST 27
3948#define CMSG_ENCODED_SIGNER 28
3949#define CMSG_ENCODED_MESSAGE 29
3950#define CMSG_VERSION_PARAM 30
3951#define CMSG_ATTR_CERT_COUNT_PARAM 31
3952#define CMSG_ATTR_CERT_PARAM 32
3953#define CMSG_CMS_RECIPIENT_COUNT_PARAM 33
3954#define CMSG_CMS_RECIPIENT_INDEX_PARAM 34
3955#define CMSG_CMS_RECIPIENT_ENCRYPTED_KEY_INDEX_PARAM 35
3956#define CMSG_CMS_RECIPIENT_INFO_PARAM 36
3957#define CMSG_UNPROTECTED_ATTR_PARAM 37
3958#define CMSG_SIGNER_CERT_ID_PARAM 38
3959#define CMSG_CMS_SIGNER_INFO_PARAM 39
3960
3970
3972
3973#define CMSG_SIGNED_DATA_V1 1
3974#define CMSG_SIGNED_DATA_V3 3
3975#define CMSG_SIGNED_DATA_PKCS_1_5_VERSION CMSG_SIGNED_DATA_V1
3976#define CMSG_SIGNED_DATA_CMS_VERSION CMSG_SIGNED_DATA_V3
3977
3978#define CMSG_SIGNER_INFO_V1 1
3979#define CMSG_SIGNER_INFO_V3 3
3980#define CMSG_SIGNER_INFO_PKCS_1_5_VERSION CMSG_SIGNER_INFO_V1
3981#define CMSG_SIGNER_INFO_CMS_VERSION CMSG_SIGNER_INFO_V3
3982
3983#define CMSG_HASHED_DATA_V0 0
3984#define CMSG_HASHED_DATA_V2 2
3985#define CMSG_HASHED_DATA_PKCS_1_5_VERSION CMSG_HASHED_DATA_V0
3986#define CMSG_HASHED_DATA_CMS_VERSION CMSG_HASHED_DATA_V2
3987
3988#define CMSG_ENVELOPED_DATA_V0 0
3989#define CMSG_ENVELOPED_DATA_V2 2
3990#define CMSG_ENVELOPED_DATA_PKCS_1_5_VERSION CMSG_ENVELOPED_DATA_V0
3991#define CMSG_ENVELOPED_DATA_CMS_VERSION CMSG_ENVELOPED_DATA_V2
3992
3999
4005
4009 union {
4017
4018#define CMSG_KEY_AGREE_ORIGINATOR_CERT 1
4019#define CMSG_KEY_AGREE_ORIGINATOR_PUBLIC_KEY 2
4020
4029
4032 union {
4038
4039#define CMSG_ENVELOPED_RECIPIENT_V0 0
4040#define CMSG_ENVELOPED_RECIPIENT_V2 2
4041#define CMSG_ENVELOPED_RECIPIENT_V3 3
4042#define CMSG_ENVELOPED_RECIPIENT_V4 4
4043#define CMSG_KEY_TRANS_PKCS_1_5_VERSION CMSG_ENVELOPED_RECIPIENT_V0
4044#define CMSG_KEY_TRANS_CMS_VERSION CMSG_ENVELOPED_RECIPIENT_V2
4045#define CMSG_KEY_AGREE_VERSION CMSG_ENVELOPED_RECIPIENT_V3
4046#define CMSG_MAIL_LIST_VERSION CMSG_ENVELOPED_RECIPIENT_V4
4047
4048typedef void * (WINAPI *PFN_CMSG_ALLOC)(_In_ size_t cb);
4049typedef void (WINAPI *PFN_CMSG_FREE)(_Inout_ void *pv);
4050
4064
4072
4080
4086
4090 union {
4091 void *pvInfo;
4093 char *pszOID;
4096
4097typedef BOOL
4099 _Inout_ PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo,
4101 _Reserved_ void *pvReserved);
4102
4103typedef BOOL
4105 _In_ PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo,
4106 _In_ PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO pKeyTransEncodeInfo,
4107 _Inout_ PCMSG_KEY_TRANS_ENCRYPT_INFO pKeyTransEncryptInfo,
4109 _Reserved_ void *pvReserved);
4110
4111typedef BOOL
4113 _In_ PCRYPT_ALGORITHM_IDENTIFIER pContentEncryptionAlgorithm,
4114 _In_ PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA pKeyTransDecryptPara,
4116 _Reserved_ void *pvReserved,
4117 _Out_ HCRYPTKEY *phContentEncryptKey);
4118
4119/* CryptMsgGetAndVerifySigner flags */
4120#define CMSG_TRUSTED_SIGNER_FLAG 0x1
4121#define CMSG_SIGNER_ONLY_FLAG 0x2
4122#define CMSG_USE_SIGNER_INDEX_FLAG 0x4
4123
4124/* CryptMsgSignCTL flags */
4125#define CMSG_CMS_ENCAPSULATED_CTL_FLAG 0x00008000
4126
4127/* CryptMsgEncodeAndSignCTL flags */
4128#define CMSG_ENCODED_SORTED_CTL_FLAG 0x1
4129#define CMSG_ENCODE_HASHED_SUBJECT_IDENTIFIER_FLAG 0x2
4130
4131/* PFXImportCertStore flags */
4132#define CRYPT_USER_KEYSET 0x00001000
4133#define PKCS12_IMPORT_RESERVED_MASK 0xffff0000
4134/* PFXExportCertStore flags */
4135#define REPORT_NO_PRIVATE_KEY 0x00000001
4136#define REPORT_NOT_ABLE_TO_EXPORT_PRIVATE_KEY 0x00000002
4137#define EXPORT_PRIVATE_KEYS 0x00000004
4138#define PKCS12_EXPORT_RESERVED_MASK 0xffff0000
4139
4140#define CRYPT_USERDATA 0x00000001
4141
4142/* function declarations */
4143/* advapi32.dll */
4145BOOL
4146WINAPI
4148 _Out_ HCRYPTPROV *,
4151 _In_ DWORD,
4152 _In_ DWORD);
4153
4155BOOL
4156WINAPI
4158 _Out_ HCRYPTPROV *,
4161 _In_ DWORD,
4162 _In_ DWORD);
4163
4164#define CryptAcquireContext WINELIB_NAME_AW(CryptAcquireContext)
4165
4167BOOL
4168WINAPI
4171 _In_ DWORD dwLen,
4172 _Inout_updates_bytes_(dwLen) BYTE *pbBuffer);
4173
4175BOOL
4176WINAPI
4179 _Reserved_ DWORD *,
4180 _In_ DWORD);
4181
4183BOOL
4184WINAPI
4187 _In_ ALG_ID,
4189 _In_ DWORD,
4190 _Out_ HCRYPTHASH *);
4191
4192_Success_(return != 0)
4194BOOL
4195WINAPI
4203
4205BOOL
4206WINAPI
4209 _In_ ALG_ID,
4211 _In_ DWORD,
4212 _Out_ HCRYPTKEY *);
4213
4216
4218BOOL
4219WINAPI
4222 _Reserved_ DWORD *,
4223 _In_ DWORD,
4224 _Out_ HCRYPTKEY *);
4225
4227BOOL
4228WINAPI
4231 _Reserved_ DWORD *,
4232 _In_ DWORD,
4233 _Out_ HCRYPTHASH *);
4234
4235_Success_(return != 0)
4237BOOL
4238WINAPI
4242 _In_ BOOL Final,
4247
4248_Success_(return != 0)
4250BOOL
4251WINAPI
4253 _In_ DWORD dwIndex,
4259
4260_Success_(return != 0)
4262BOOL
4263WINAPI
4265 _In_ DWORD dwIndex,
4271
4272#define CryptEnumProviders WINELIB_NAME_AW(CryptEnumProviders)
4273
4274_Success_(return != 0)
4276BOOL
4277WINAPI
4279 _In_ DWORD dwIndex,
4285
4286_Success_(return != 0)
4288BOOL
4289WINAPI
4291 _In_ DWORD dwIndex,
4297
4298#define CryptEnumProviderTypes WINELIB_NAME_AW(CryptEnumProviderTypes)
4299
4301BOOL
4302WINAPI
4305 _In_ HCRYPTKEY hExpKey,
4306 _In_ DWORD dwBlobType,
4310
4312BOOL
4313WINAPI
4316 _In_ ALG_ID,
4317 _In_ DWORD,
4318 _Out_ HCRYPTKEY *);
4319
4321BOOL
4322WINAPI
4325 _In_ DWORD dwParam,
4329
4331BOOL
4332WINAPI
4335 _In_ DWORD dwParam,
4339
4341BOOL
4342WINAPI
4345 _In_ DWORD dwParam,
4349
4350_Success_(return != 0)
4352BOOL
4353WINAPI
4355 _In_ DWORD dwProvType,
4360
4361_Success_(return != 0)
4363BOOL
4364WINAPI
4366 _In_ DWORD dwProvType,
4371
4372#define CryptGetDefaultProvider WINELIB_NAME_AW(CryptGetDefaultProvider)
4373
4375
4377BOOL
4378WINAPI
4381 _In_reads_bytes_(dwDataLen) CONST BYTE *pbData,
4382 _In_ DWORD dwDataLen,
4384
4386
4388BOOL
4389WINAPI
4392 _In_reads_bytes_(dwDataLen) CONST BYTE *pbData,
4393 _In_ DWORD dwDataLen,
4394 _In_ HCRYPTKEY hPubKey,
4396 _Out_ HCRYPTKEY *phKey);
4397
4399
4401BOOL
4402WINAPI
4405 _In_ DWORD,
4406 _In_ CONST BYTE *,
4407 _In_ DWORD);
4408
4410BOOL
4411WINAPI
4414 _In_ DWORD,
4415 _In_ CONST BYTE *,
4416 _In_ DWORD);
4417
4420
4421#define CryptSetProvider WINELIB_NAME_AW(CryptSetProvider)
4422
4424BOOL
4425WINAPI
4427 _In_ LPCSTR,
4428 _In_ DWORD,
4429 _Reserved_ DWORD *,
4430 _In_ DWORD);
4431
4433BOOL
4434WINAPI
4436 _In_ LPCWSTR,
4437 _In_ DWORD,
4438 _Reserved_ DWORD *,
4439 _In_ DWORD);
4440
4441#define CryptSetProviderEx WINELIB_NAME_AW(CryptSetProviderEx)
4442
4444
4446BOOL
4447WINAPI
4450 _In_ DWORD dwKeySpec,
4453 _Out_writes_bytes_to_opt_(*pdwSigLen, *pdwSigLen) BYTE *pbSignature,
4454 _Inout_ DWORD *pdwSigLen);
4455
4457BOOL
4458WINAPI
4461 _In_ DWORD dwKeySpec,
4464 _Out_writes_bytes_to_opt_(*pdwSigLen, *pdwSigLen) BYTE *pbSignature,
4465 _Inout_ DWORD *pdwSigLen);
4466
4467#define CryptSignHash WINELIB_NAME_AW(CryptSignHash)
4468
4470BOOL
4471WINAPI
4474 _In_reads_bytes_(dwSigLen) CONST BYTE *pbSignature,
4475 _In_ DWORD dwSigLen,
4476 _In_ HCRYPTKEY hPubKey,
4479
4481BOOL
4482WINAPI
4485 _In_reads_bytes_(dwSigLen) CONST BYTE *pbSignature,
4486 _In_ DWORD dwSigLen,
4487 _In_ HCRYPTKEY hPubKey,
4490
4491#define CryptVerifySignature WINELIB_NAME_AW(CryptVerifySignature)
4492
4493/* crypt32.dll functions */
4497
4498_Success_(return != 0)
4499BOOL
4500WINAPI
4507
4508_Success_(return != 0)
4509BOOL
4510WINAPI
4517
4518#define CryptBinaryToString WINELIB_NAME_AW(CryptBinaryToString)
4519
4520BOOL
4521WINAPI
4523 _In_reads_(cchString) LPCSTR pszString,
4524 _In_ DWORD cchString,
4526 _Out_writes_bytes_to_opt_(*pcbBinary, *pcbBinary) BYTE *pbBinary,
4527 _Inout_ DWORD *pcbBinary,
4528 _Out_opt_ DWORD *pdwSkip,
4529 _Out_opt_ DWORD *pdwFlags);
4530
4531BOOL
4532WINAPI
4534 _In_reads_(cchString) LPCWSTR pszString,
4535 _In_ DWORD cchString,
4537 _Out_writes_bytes_to_opt_(*pcbBinary, *pcbBinary) BYTE *pbBinary,
4538 _Inout_ DWORD *pcbBinary,
4539 _Out_opt_ DWORD *pdwSkip,
4540 _Out_opt_ DWORD *pdwFlags);
4541
4542#define CryptStringToBinary WINELIB_NAME_AW(CryptStringToBinary)
4543
4544BOOL
4545WINAPI
4548 _Out_ PHCRYPTASYNC phAsync);
4549
4550BOOL
4551WINAPI
4553 _In_ HCRYPTASYNC hAsync,
4554 _In_ LPSTR pszParamOid,
4555 _In_opt_ LPVOID pvParam,
4557
4558BOOL
4559WINAPI
4561 _In_ HCRYPTASYNC hAsync,
4562 _In_ LPSTR pszParamOid,
4565
4566BOOL
4567WINAPI
4569 _In_ DWORD,
4570 _In_ LPCSTR,
4571 _In_ DWORD,
4572 _In_ LPCWSTR);
4573
4574BOOL
4575WINAPI
4577 _In_ DWORD,
4578 _In_ LPCSTR,
4579 _In_ LPCSTR,
4582
4583BOOL
4584WINAPI
4587 _In_ LPCSTR pszFuncName,
4590 _Out_opt_ DWORD *pdwValueType,
4591 _Out_writes_bytes_to_opt_(*pcbValueData, *pcbValueData) BYTE *pbValueData,
4592 _Inout_opt_ DWORD *pcbValueData);
4593
4594BOOL
4595WINAPI
4598 _In_ LPCSTR pszFuncName,
4601 _In_ DWORD dwValueType,
4602 _In_reads_bytes_opt_(cbValueData) const BYTE *pbValueData,
4603 _In_ DWORD cbValueData);
4604
4607
4608BOOL
4609WINAPI
4612 _In_opt_ LPCSTR pszFuncName,
4615 _Inout_opt_ void *pvArg,
4616 __callback PFN_CRYPT_ENUM_OID_FUNC pfnEnumOIDFunc);
4617
4619
4620_Success_(return != 0)
4621BOOL
4622WINAPI
4624 _In_ HCRYPTOIDFUNCSET hFuncSet,
4628
4629_Success_(return != 0)
4630BOOL
4631WINAPI
4633 _In_ HCRYPTOIDFUNCSET hFuncSet,
4639
4640_Success_(return != 0)
4641BOOL
4642WINAPI
4644 _In_ HCRYPTOIDFUNCSET hFuncSet,
4648 _Outptr_ void **ppvFuncAddr,
4650
4651BOOL
4652WINAPI
4654 _In_ HCRYPTOIDFUNCADDR hFuncAddr,
4656
4657BOOL
4658WINAPI
4662 _In_ LPCSTR pszFuncName,
4663 _In_ DWORD cFuncEntry,
4664 _In_reads_(cFuncEntry) const CRYPT_OID_FUNC_ENTRY rgFuncEntry[],
4666
4667BOOL
4668WINAPI
4670 _In_ HCRYPTPROV hCryptProv,
4671 _In_ DWORD dwDefaultType,
4672 _In_opt_ const void *pvDefaultPara,
4674 _Reserved_ void *pvReserved,
4675 _Out_ HCRYPTDEFAULTCONTEXT *phDefaultContext);
4676
4677BOOL
4678WINAPI
4680 _In_opt_ HCRYPTDEFAULTCONTEXT hDefaultContext,
4682 _Reserved_ void *pvReserved);
4683
4684BOOL
4685WINAPI
4687 _In_ DWORD dwGroupId,
4689 _Inout_opt_ void *pvArg,
4690 __callback PFN_CRYPT_ENUM_OID_INFO pfnEnumOIDInfo);
4691
4693WINAPI
4695 _In_ DWORD dwKeyType,
4696 _In_ void *pvKey,
4697 _In_ DWORD dwGroupId);
4698
4701
4703
4706
4707/* cert store functions */
4710WINAPI
4712 _In_ LPCSTR lpszStoreProvider,
4714 _In_opt_ HCRYPTPROV_LEGACY hCryptProv,
4716 _In_opt_ const void *pvPara);
4717
4719WINAPI
4722 _In_ LPCSTR szSubsystemProtocol);
4723
4725WINAPI
4728 _In_ LPCWSTR szSubSystemProtocol);
4729
4730#define CertOpenSystemStore WINELIB_NAME_AW(CertOpenSystemStore)
4731
4733WINAPI
4735 _In_ HCERTSTORE hCertStore,
4736 _In_opt_ PCCERT_CONTEXT pPrev);
4737
4739WINAPI
4741 _In_ HCERTSTORE hCertStore,
4743
4745WINAPI
4747 _In_ HCERTSTORE hCertStore,
4749
4750BOOL
4751WINAPI
4754 _Inout_opt_ void *pvArg,
4756
4757BOOL
4758WINAPI
4761 _In_opt_ void *pvSystemStoreLocationPara,
4762 _Inout_opt_ void *pvArg,
4764
4765BOOL
4766WINAPI
4768 _In_ const void *pvSystemStore,
4771 _Reserved_ void *pvReserved);
4772
4773BOOL
4774WINAPI
4776 _In_ const void *pvSystemStore,
4778
4779BOOL
4780WINAPI
4782 _In_ const void *pvSystemStore,
4784 _Inout_opt_ void *pvArg,
4786
4787BOOL
4788WINAPI
4790 _In_ const void *pvSystemStore,
4792 _In_ LPCWSTR pwszStoreName,
4794 _Reserved_ void *pvReserved);
4795
4796BOOL
4797WINAPI
4799 _In_ HCERTSTORE hCertStore,
4801 _In_ DWORD dwSaveAs,
4802 _In_ DWORD dwSaveTo,
4803 _Inout_ void *pvSaveToPara,
4805
4806BOOL
4807WINAPI
4809 _In_ HCERTSTORE hCollectionStore,
4810 _In_opt_ HCERTSTORE hSiblingStore,
4811 _In_ DWORD dwUpdateFlags,
4812 _In_ DWORD dwPriority);
4813
4814void
4815WINAPI
4817 _In_ HCERTSTORE hCollectionStore,
4818 _In_ HCERTSTORE hSiblingStore);
4819
4820_Success_(return != 0)
4821BOOL
4822WINAPI
4826
4828
4830
4831_Success_(return != 0)
4832BOOL
4833WINAPI
4835 _In_opt_ HCERTCHAINENGINE hChainEngine,
4843
4845WINAPI
4847 _In_ PCCERT_CHAIN_CONTEXT pChainContext);
4848
4850
4852WINAPI
4854 _In_ HCERTSTORE hCertStore,
4856 _In_ DWORD dwFindFlags,
4857 _In_ DWORD dwFindType,
4858 _In_opt_ const void *pvFindPara,
4859 _In_opt_ PCCERT_CHAIN_CONTEXT pPrevChainContext);
4860
4861BOOL
4862WINAPI
4864 _In_ LPCSTR pszPolicyOID,
4865 _In_ PCCERT_CHAIN_CONTEXT pChainContext,
4866 _In_ PCERT_CHAIN_POLICY_PARA pPolicyPara,
4867 _Inout_ PCERT_CHAIN_POLICY_STATUS pPolicyStatus);
4868
4869DWORD
4870WINAPI
4874
4875BOOL
4876WINAPI
4882
4883BOOL
4884WINAPI
4889 _In_opt_ const void *pvData);
4890
4891DWORD
4892WINAPI
4894 _In_ PCCRL_CONTEXT pCRLContext,
4896
4897BOOL
4898WINAPI
4904
4905BOOL
4906WINAPI
4911 _In_opt_ const void *pvData);
4912
4913DWORD
4914WINAPI
4916 _In_ PCCTL_CONTEXT pCTLContext,
4918
4919BOOL
4920WINAPI
4923 _Inout_ void **ppvNextSubject,
4924 _Out_opt_ PCRYPT_DER_BLOB pSubjectIdentifier,
4925 _Out_opt_ PCRYPT_DER_BLOB pEncodedAttributes);
4926
4927BOOL
4928WINAPI
4934
4935BOOL
4936WINAPI
4941 _In_opt_ const void *pvData);
4942
4943_Success_(return != 0)
4944BOOL
4945WINAPI
4947 _In_ HCERTSTORE hCertStore,
4951
4952BOOL
4953WINAPI
4955 _In_ HCERTSTORE hCertStore,
4958 _In_opt_ const void *pvData);
4959
4960BOOL
4961WINAPI
4963 _In_ HCERTSTORE hCertStore,
4965 _In_ DWORD dwCtrlType,
4966 _In_opt_ void const *pvCtrlPara);
4967
4969
4971
4973
4975
4977
4978_Success_(return != 0)
4979BOOL
4980WINAPI
4982 _In_opt_ HCERTSTORE hCertStore,
4986
4987_Success_(return != 0)
4988BOOL
4989WINAPI
4991 _In_opt_ HCERTSTORE hCertStore,
4995
4996_Success_(return != 0)
4997BOOL
4998WINAPI
5000 _In_opt_ HCERTSTORE hCertStore,
5004
5005_Success_(return != 0)
5006BOOL
5007WINAPI
5009 _In_ HCERTSTORE hCertStore,
5013
5014_Success_(return != 0)
5015BOOL
5016WINAPI
5017CertAddCRLLinkToStore(
5018 _In_ HCERTSTORE hCertStore,
5022
5023_Success_(return != 0)
5024BOOL
5025WINAPI
5026CertAddCTLLinkToStore(
5027 _In_ HCERTSTORE hCertStore,
5031
5032_Success_(return != 0)
5033BOOL
5034WINAPI
5036 _In_opt_ HCERTSTORE hCertStore,
5042
5043BOOL
5044WINAPI
5046 _In_ LPCSTR szCertStoreName,
5047 _In_reads_bytes_(cbCertEncoded) const BYTE *pbCertEncoded,
5049
5050BOOL
5051WINAPI
5053 _In_ LPCWSTR szCertStoreName,
5054 _In_reads_bytes_(cbCertEncoded) const BYTE *pbCertEncoded,
5056
5057#define CertAddEncodedCertificateToSystemStore \
5058 WINELIB_NAME_AW(CertAddEncodedCertificateToSystemStore)
5059
5060_Success_(return != 0)
5061BOOL
5062WINAPI
5064 _In_opt_ HCERTSTORE hCertStore,
5070
5071_Success_(return != 0)
5072BOOL
5073WINAPI
5075 _In_opt_ HCERTSTORE hCertStore,
5081
5082_Success_(return != 0)
5083BOOL
5084WINAPI
5086 _In_opt_ HCERTSTORE hCertStore,
5094
5095BOOL
5096WINAPI
5099 _In_ PCERT_INFO pCertId1,
5100 _In_ PCERT_INFO pCertId2);
5101
5102BOOL
5103WINAPI
5106 _In_ PCERT_NAME_BLOB pCertName1,
5107 _In_ PCERT_NAME_BLOB pCertName2);
5108
5109BOOL
5110WINAPI
5114
5115BOOL
5116WINAPI
5119 _In_ PCERT_PUBLIC_KEY_INFO pPublicKey1,
5120 _In_ PCERT_PUBLIC_KEY_INFO pPublicKey2);
5121
5122DWORD
5123WINAPI
5126 _In_ PCERT_PUBLIC_KEY_INFO pPublicKey);
5127
5128const void *
5129WINAPI
5131 _In_ DWORD dwContextType,
5134 _In_ DWORD cbEncoded,
5137
5139WINAPI
5142 _In_reads_bytes_(cbCertEncoded) const BYTE *pbCertEncoded,
5144
5146WINAPI
5149 _In_reads_bytes_(cbCrlEncoded) const BYTE *pbCrlEncoded,
5151
5153WINAPI
5156 _In_reads_bytes_(cbCtlEncoded) const BYTE *pbCtlEncoded,
5158
5160WINAPI
5163 _In_ PCERT_NAME_BLOB pSubjectIssuerBlob,
5165 _In_opt_ PCRYPT_KEY_PROV_INFO pKeyProvInfo,
5166 _In_opt_ PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,
5167 _In_opt_ PSYSTEMTIME pStartTime,
5168 _In_opt_ PSYSTEMTIME pEndTime,
5169 _In_opt_ PCERT_EXTENSIONS pExtensions);
5170
5172
5174
5176
5178WINAPI
5181
5183
5185
5187WINAPI
5189 _In_ HCERTSTORE hCertStore,
5191 _In_ DWORD dwFindFlags,
5192 _In_ DWORD dwFindType,
5193 _In_opt_ const void *pvFindPara,
5195
5197WINAPI
5199 _In_ HCERTSTORE hCertStore,
5201 _In_ DWORD dwFindFlags,
5202 _In_ DWORD dwFindType,
5203 _In_opt_ const void *pvFindPara,
5205
5207WINAPI
5209 _In_ HCERTSTORE hCertStore,
5211 _In_ DWORD dwFindFlags,
5212 _In_ DWORD dwFindType,
5213 _In_opt_ const void *pvFindPara,
5215
5217WINAPI
5219 _In_ HCERTSTORE hCertStore,
5220 _In_ PCCERT_CONTEXT pSubjectContext,
5221 _In_opt_ PCCERT_CONTEXT pPrevIssuerContext,
5222 _Inout_ DWORD *pdwFlags);
5223
5225WINAPI
5227 _In_ HCERTSTORE hCertStore,
5229 _In_ PCERT_INFO pCertId);
5230
5232WINAPI
5234 _In_ HCERTSTORE hCertStore,
5235 _In_opt_ PCCERT_CONTEXT pIssuerContext,
5237 _Inout_ DWORD *pdwFlags);
5238
5239BOOL
5240WINAPI
5244 _Out_writes_bytes_to_opt_(*pcbElement, *pcbElement) BYTE *pbElement,
5245 _Inout_ DWORD *pcbElement);
5246
5247BOOL
5248WINAPI
5252 _Out_writes_bytes_to_opt_(*pcbElement, *pcbElement) BYTE *pbElement,
5253 _Inout_ DWORD *pcbElement);
5254
5255BOOL
5256WINAPI
5260 _Out_writes_bytes_to_opt_(*pcbElement, *pcbElement) BYTE *pbElement,
5261 _Inout_ DWORD *pcbElement);
5262
5263BOOL
5264WINAPI
5267 _In_ PCERT_INFO pCertInfo,
5268 _Out_writes_bytes_all_(cbKeyUsage) BYTE *pbKeyUsage,
5269 _In_ DWORD cbKeyUsage);
5270
5271BOOL
5272WINAPI
5276 _Out_writes_bytes_to_opt_(*pcbUsage, *pcbUsage) PCERT_ENHKEY_USAGE pUsage,
5277 _Inout_ DWORD *pcbUsage);
5278
5279BOOL
5280WINAPI
5284
5285BOOL
5286WINAPI
5289 _In_ LPCSTR pszUsageIdentifier);
5290
5291BOOL
5292WINAPI
5295 _In_ LPCSTR pszUsageIdentifier);
5296
5297_Success_(return != 0)
5298BOOL
5299WINAPI
5301 _In_ DWORD cCerts,
5302 _In_reads_(cCerts) PCCERT_CONTEXT *rghCerts,
5306
5307BOOL
5308WINAPI
5311 _In_ LPCSTR lpszStructType,
5312 _In_ const void *pvStructInfo,
5315
5316BOOL
5317WINAPI
5320 _In_ LPCSTR lpszStructType,
5321 _In_ const void *pvStructInfo,
5323 _In_opt_ PCRYPT_ENCODE_PARA pEncodePara,
5324 _Out_opt_ void *pvEncoded,
5326
5327BOOL
5328WINAPI
5331 _In_ LPCSTR lpszStructType,
5333 _In_ DWORD cbEncoded,
5335 _Out_writes_bytes_to_opt_(*pcbStructInfo, *pcbStructInfo) void *pvStructInfo,
5336 _Inout_ DWORD *pcbStructInfo);
5337
5338BOOL
5339WINAPI
5342 _In_ LPCSTR lpszStructType,
5344 _In_ DWORD cbEncoded,
5346 _In_opt_ PCRYPT_DECODE_PARA pDecodePara,
5347 _Out_opt_ void *pvStructInfo,
5348 _Inout_ DWORD *pcbStructInfo);
5349
5350BOOL
5351WINAPI
5354 _In_ DWORD dwFormatType,
5355 _In_ DWORD dwFormatStrType,
5356 _In_opt_ void *pFormatStruct,
5357 _In_opt_ LPCSTR lpszStructType,
5359 _In_ DWORD cbEncoded,
5360 _At_((WCHAR *) pbFormat, _Out_writes_bytes_to_opt_(*pcbFormat, *pcbFormat)) void *pbFormat,
5361 _Inout_ DWORD *pcbFormat);
5362
5363BOOL
5364WINAPI
5366 _In_opt_ HCRYPTPROV_LEGACY hCryptProv,
5367 _In_ ALG_ID Algid,
5370 _In_ DWORD cbEncoded,
5371 _Out_writes_bytes_to_opt_(*pcbComputedHash, *pcbComputedHash) BYTE *pbComputedHash,
5372 _Inout_ DWORD *pcbComputedHash);
5373
5374BOOL
5375WINAPI
5377 _In_opt_ HCRYPTPROV_LEGACY hCryptProv,
5378 _In_ ALG_ID Algid,
5382 _Out_writes_bytes_to_opt_(*pcbComputedHash, *pcbComputedHash) BYTE *pbComputedHash,
5383 _Inout_ DWORD *pcbComputedHash);
5384
5385BOOL
5386WINAPI
5388 _In_opt_ HCRYPTPROV_LEGACY hCryptProv,
5391 _In_ DWORD cbEncoded,
5392 _Out_writes_bytes_to_opt_(*pcbComputedHash, *pcbComputedHash) BYTE *pbComputedHash,
5393 _Inout_ DWORD *pcbComputedHash);
5394
5395BOOL
5396WINAPI
5398 _In_ DWORD dwObjectType,
5399 _In_ const void *pvObject,
5400 _In_ DWORD dwExpectedContentTypeFlags,
5401 _In_ DWORD dwExpectedFormatTypeFlags,
5403 _Out_opt_ DWORD *pdwMsgAndCertEncodingType,
5404 _Out_opt_ DWORD *pdwContentType,
5405 _Out_opt_ DWORD *pdwFormatType,
5406 _Out_opt_ HCERTSTORE *phCertStore,
5407 _Out_opt_ HCRYPTMSG *phMsg,
5409
5410BOOL
5411WINAPI
5413 _In_opt_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,
5414 _In_opt_ DWORD dwKeySpec,
5416 _In_reads_bytes_(cbEncodedToBeSigned) const BYTE *pbEncodedToBeSigned,
5417 _In_ DWORD cbEncodedToBeSigned,
5418 _In_ PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,
5419 _In_opt_ const void *pvHashAuxInfo,
5420 _Out_writes_bytes_to_opt_(*pcbSignature, *pcbSignature) BYTE *pbSignature,
5421 _Inout_ DWORD *pcbSignature);
5422
5423BOOL
5424WINAPI
5426 _In_opt_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,
5427 _In_opt_ DWORD dwKeySpec,
5429 _In_ LPCSTR lpszStructType,
5430 _In_ const void *pvStructInfo,
5431 _In_ PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,
5432 _In_opt_ const void *pvHashAuxInfo,
5435
5437BOOL
5438WINAPI
5440 _In_opt_ HCRYPTPROV_LEGACY hCryptProv,
5443 _In_ DWORD cbEncoded,
5444 _In_ PCERT_PUBLIC_KEY_INFO pPublicKey);
5445
5447BOOL
5448WINAPI
5450 _In_opt_ HCRYPTPROV_LEGACY hCryptProv,
5452 _In_ DWORD dwSubjectType,
5453 _In_ void *pvSubject,
5454 _In_ DWORD dwIssuerType,
5455 _In_opt_ void *pvIssuer,
5457 _Inout_opt_ void *pvExtra);
5458
5460WINAPI
5462 _In_ LPCSTR pszObjId,
5463 _In_ DWORD cAttr,
5464 _In_reads_(cAttr) CRYPT_ATTRIBUTE rgAttr[]);
5465
5467WINAPI
5469 _In_ LPCSTR pszObjId,
5470 _In_ DWORD cExtensions,
5471 _In_reads_(cExtensions) CERT_EXTENSION rgExtensions[]);
5472
5474WINAPI
5476 _In_ LPCSTR pszObjId,
5478
5479BOOL
5480WINAPI
5482 _In_ PCRYPT_DATA_BLOB pSubjectIdentifier,
5485 _Reserved_ void *pvReserved,
5486 _Out_opt_ PCRYPT_DER_BLOB pEncodedAttributes);
5487
5488BOOL
5489WINAPI
5493 _In_ PCERT_NAME_BLOB pCertName,
5494 _In_ PCERT_RDN pRDN);
5495
5496BOOL
5497WINAPI
5499 _In_ PCCERT_CONTEXT pCert,
5500 _In_ PCCRL_CONTEXT pCrl,
5502 _Reserved_ void *pvReserved);
5503
5504BOOL
5505WINAPI
5507 _In_ PCCERT_CONTEXT pCert,
5510 _Reserved_ void *pvReserved,
5512
5513BOOL
5514WINAPI
5517 _In_ PCERT_INFO pCertId,
5518 _In_ DWORD cCrlInfo,
5519 _In_reads_(cCrlInfo) PCRL_INFO rgpCrlInfo[]);
5520
5521BOOL
5522WINAPI
5524 _In_ PCCERT_CONTEXT pSubject,
5526 _Inout_ DWORD *pdwFlags);
5527
5528LONG
5529WINAPI
5531 _In_opt_ LPFILETIME pTimeToVerify,
5532 _In_ PCRL_INFO pCrlInfo);
5533
5534LONG
5535WINAPI
5537 _In_opt_ LPFILETIME pTimeToVerify,
5538 _In_ PCERT_INFO pCertInfo);
5539
5540BOOL
5541WINAPI
5543 _In_ PCERT_INFO pSubjectInfo,
5544 _In_ PCERT_INFO pIssuerInfo);
5545
5546BOOL
5547WINAPI
5550 _In_ DWORD dwSubjectType,
5551 _In_ void *pvSubject,
5552 _In_ PCTL_USAGE pSubjectUsage,
5554 _In_opt_ PCTL_VERIFY_USAGE_PARA pVerifyUsagePara,
5555 _Inout_ PCTL_VERIFY_USAGE_STATUS pVerifyUsageStatus);
5556
5557BOOL
5558WINAPI
5561 _In_ DWORD dwRevType,
5562 _In_ DWORD cContext,
5563 _In_reads_(cContext) PVOID rgpvContext[],
5566 _Inout_ PCERT_REVOCATION_STATUS pRevStatus);
5567
5568BOOL
5569WINAPI
5571 _In_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,
5572 _In_opt_ DWORD dwKeySpec,
5574 _Out_writes_bytes_to_opt_(*pcbInfo, *pcbInfo) PCERT_PUBLIC_KEY_INFO pInfo,
5575 _Inout_ DWORD *pcbInfo);
5576
5577BOOL
5578WINAPI
5580 _In_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,
5581 _In_opt_ DWORD dwKeySpec,
5583 _In_opt_ LPSTR pszPublicKeyObjId,
5585 _In_opt_ void *pvAuxInfo,
5586 _Out_writes_bytes_to_opt_(*pcbInfo, *pcbInfo) PCERT_PUBLIC_KEY_INFO pInfo,
5587 _Inout_ DWORD *pcbInfo);
5588
5589BOOL
5590WINAPI
5592 _In_ HCRYPTPROV hCryptProv,
5595 _Out_ HCRYPTKEY *phKey);
5596
5597BOOL
5598WINAPI
5600 _In_ HCRYPTPROV hCryptProv,
5603 _In_ ALG_ID aiKeyAlg,
5605 _In_opt_ void *pvAuxInfo,
5606 _Out_ HCRYPTKEY *phKey);
5607
5608BOOL
5609WINAPI
5611 _In_ PCCERT_CONTEXT pCert,
5613 _In_opt_ void *pvParameters,
5614 _Out_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE *phCryptProvOrNCryptKey,
5615 _Out_opt_ DWORD *pdwKeySpec,
5616 _Out_opt_ BOOL *pfCallerFreeProvOrNCryptKey);
5617
5618BOOL
5619WINAPI
5621 _In_ PCCERT_CONTEXT pCert,
5623 _Reserved_ void *pvReserved);
5624
5625BOOL WINAPI CryptProtectData( DATA_BLOB* pDataIn, LPCWSTR szDataDescr,
5626 DATA_BLOB* pOptionalEntropy, PVOID pvReserved,
5627 CRYPTPROTECT_PROMPTSTRUCT* pPromptStruct, DWORD dwFlags, DATA_BLOB* pDataOut );
5628
5629BOOL WINAPI CryptUnprotectData( DATA_BLOB* pDataIn, LPWSTR* ppszDataDescr,
5630 DATA_BLOB* pOptionalEntropy, PVOID pvReserved,
5631 CRYPTPROTECT_PROMPTSTRUCT* pPromptStruct, DWORD dwFlags, DATA_BLOB* pDataOut );
5632
5633DWORD
5634WINAPI
5637 _In_ DWORD dwType,
5639 _In_opt_ void *pvTypePara,
5640 _Out_writes_to_opt_(cchNameString, return) LPSTR pszNameString,
5641 _In_ DWORD cchNameString);
5642
5643DWORD
5644WINAPI
5647 _In_ DWORD dwType,
5649 _In_opt_ void *pvTypePara,
5650 _Out_writes_to_opt_(cchNameString, return) LPWSTR pszNameString,
5651 _In_ DWORD cchNameString);
5652
5653#define CertGetNameString WINELIB_NAME_AW(CertGetNameString)
5654
5655DWORD
5656WINAPI
5658 _In_ DWORD dwValueType,
5660 _Out_writes_to_opt_(csz, return) LPSTR psz,
5661 _In_ DWORD csz);
5662
5663DWORD
5664WINAPI
5666 _In_ DWORD dwValueType,
5668 _Out_writes_to_opt_(csz, return) LPWSTR psz,
5669 _In_ DWORD csz);
5670
5671#define CertRDNValueToStr WINELIB_NAME_AW(CertRDNValueToStr)
5672
5673DWORD
5674WINAPI
5679 _Out_writes_to_opt_(csz, return) LPSTR psz,
5680 _In_ DWORD csz);
5681
5682DWORD
5683WINAPI
5688 _Out_writes_to_opt_(csz, return) LPWSTR psz,
5689 _In_ DWORD csz);
5690
5691#define CertNameToStr WINELIB_NAME_AW(CertNameToStr)
5692
5693BOOL
5694WINAPI
5699 _Reserved_ void *pvReserved,
5703
5704BOOL
5705WINAPI
5710 _Reserved_ void *pvReserved,
5714
5715#define CertStrToName WINELIB_NAME_AW(CertStrToName)
5716
5717DWORD
5718WINAPI
5720 _In_ DWORD dwMsgEncodingType,
5722 _In_ DWORD dwMsgType,
5723 _In_ void const *pvMsgEncodeInfo,
5724 _In_opt_ LPSTR pszInnerContentObjID,
5725 _In_ DWORD cbData);
5726
5728
5729BOOL
5730WINAPI
5732 _In_ HCRYPTMSG hCryptMsg,
5734 _In_ DWORD dwCtrlType,
5735 _In_opt_ void const *pvCtrlPara);
5736
5737BOOL
5738WINAPI
5740 _In_ HCRYPTMSG hCryptMsg,
5741 _In_ DWORD dwIndex,
5742 _In_ DWORD cCountersigners,
5743 _In_reads_(cCountersigners) PCMSG_SIGNER_ENCODE_INFO rgCountersigners);
5744
5745BOOL
5746WINAPI
5749 _In_reads_bytes_(cbSignerInfo) PBYTE pbSignerInfo,
5750 _In_ DWORD cbSignerInfo,
5751 _In_ DWORD cCountersigners,
5752 _In_reads_(cCountersigners) PCMSG_SIGNER_ENCODE_INFO rgCountersigners,
5753 _Out_writes_bytes_to_opt_(*pcbCountersignature, *pcbCountersignature) PBYTE pbCountersignature,
5754 _Inout_ PDWORD pcbCountersignature);
5755
5757
5758BOOL
5759WINAPI
5761 _In_ DWORD dwMsgEncodingType,
5762 _In_ PCTL_INFO pCtlInfo,
5767
5768_Success_(return == 0)
5769BOOL
5770WINAPI
5772 _In_ HCRYPTMSG hCryptMsg,
5778
5779BOOL
5780WINAPI
5782 _In_ HCRYPTMSG hCryptMsg,
5783 _In_ DWORD dwParamType,
5784 _In_ DWORD dwIndex,
5787
5789WINAPI
5791 _In_ DWORD dwMsgEncodingType,
5793 _In_ DWORD dwMsgType,
5794 _In_opt_ HCRYPTPROV_LEGACY hCryptProv,
5795 _Reserved_ PCERT_INFO pRecipientInfo,
5796 _In_opt_ PCMSG_STREAM_INFO pStreamInfo);
5797
5799WINAPI
5801 _In_ DWORD dwMsgEncodingType,
5803 _In_ DWORD dwMsgType,
5804 _In_ void const *pvMsgEncodeInfo,
5805 _In_opt_ LPSTR pszInnerContentObjID,
5806 _In_opt_ PCMSG_STREAM_INFO pStreamInfo);
5807
5808BOOL
5809WINAPI
5811 _In_ DWORD dwMsgEncodingType,
5812 _In_reads_bytes_(cbCtlContent) BYTE *pbCtlContent,
5813 _In_ DWORD cbCtlContent,
5818
5819BOOL
5820WINAPI
5822 _In_ HCRYPTMSG hCryptMsg,
5824 _In_ DWORD cbData,
5825 _In_ BOOL fFinal);
5826
5827BOOL
5828WINAPI
5830 _In_opt_ HCRYPTPROV_LEGACY hCryptProv,
5832 _In_reads_bytes_(cbSignerInfo) PBYTE pbSignerInfo,
5833 _In_ DWORD cbSignerInfo,
5834 _In_reads_bytes_(cbSignerInfoCountersignature) PBYTE pbSignerInfoCountersignature,
5835 _In_ DWORD cbSignerInfoCountersignature,
5836 _In_ PCERT_INFO pciCountersigner);
5837
5838BOOL
5839WINAPI
5841 _In_opt_ HCRYPTPROV_LEGACY hCryptProv,
5843 _In_reads_bytes_(cbSignerInfo) PBYTE pbSignerInfo,
5844 _In_ DWORD cbSignerInfo,
5845 _In_reads_bytes_(cbSignerInfoCountersignature) PBYTE pbSignerInfoCountersignature,
5846 _In_ DWORD cbSignerInfoCountersignature,
5847 _In_ DWORD dwSignerType,
5848 _In_ void *pvSigner,
5850 _Inout_opt_ void *pvExtra);
5851
5852BOOL
5853WINAPI
5856 _In_ BOOL fDetachedSignature,
5857 _In_ DWORD cToBeSigned,
5858 _In_reads_opt_(cToBeSigned) const BYTE *rgpbToBeSigned[],
5859 _In_reads_(cToBeSigned) DWORD rgcbToBeSigned[],
5860 _Out_writes_bytes_to_opt_(*pcbSignedBlob, *pcbSignedBlob) BYTE *pbSignedBlob,
5861 _Inout_ DWORD *pcbSignedBlob);
5862
5863BOOL
5864WINAPI
5867 _In_reads_bytes_(cbToBeSigned) const BYTE *pbToBeSigned,
5868 _In_ DWORD cbToBeSigned,
5869 _Out_writes_bytes_to_opt_(*pcbSignedBlob, *pcbSignedBlob) BYTE *pbSignedBlob,
5870 _Inout_ DWORD *pcbSignedBlob);
5871
5872BOOL
5873WINAPI
5875 _In_ PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara,
5876 _In_ DWORD dwSignerIndex,
5877 _In_reads_bytes_(cbSignedBlob) const BYTE *pbSignedBlob,
5878 _In_ DWORD cbSignedBlob,
5879 _Out_writes_bytes_to_opt_(*pcbDecoded, *pcbDecoded) BYTE *pbDecoded,
5880 _Inout_opt_ DWORD *pcbDecoded,
5882
5883BOOL
5884WINAPI
5887 _In_opt_ PCERT_PUBLIC_KEY_INFO pPublicKeyInfo,
5888 _In_reads_bytes_(cbSignedBlob) const BYTE *pbSignedBlob,
5889 _In_ DWORD cbSignedBlob,
5890 _Out_writes_bytes_to_opt_(*pcbDecoded, *pcbDecoded) BYTE *pbDecoded,
5891 _Inout_opt_ DWORD *pcbDecoded);
5892
5893BOOL
5894WINAPI
5896 _In_ PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara,
5897 _In_ DWORD dwSignerIndex,
5898 _In_reads_bytes_(cbDetachedSignBlob) const BYTE *pbDetachedSignBlob,
5899 _In_ DWORD cbDetachedSignBlob,
5900 _In_ DWORD cToBeSigned,
5901 _In_reads_(cToBeSigned) const BYTE *rgpbToBeSigned[],
5902 _In_reads_(cToBeSigned) DWORD rgcbToBeSigned[],
5904
5905LONG
5906WINAPI
5908 _In_ DWORD dwMsgEncodingType,
5909 _In_reads_bytes_(cbSignedBlob) const BYTE *pbSignedBlob,
5910 _In_ DWORD cbSignedBlob);
5911
5912BOOL
5913WINAPI
5915 _In_ PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara,
5916 _In_ DWORD cRecipientCert,
5917 _In_reads_(cRecipientCert) PCCERT_CONTEXT rgpRecipientCert[],
5918 _In_reads_bytes_opt_(cbToBeEncrypted) const BYTE *pbToBeEncrypted,
5919 _In_ DWORD cbToBeEncrypted,
5920 _Out_writes_bytes_to_opt_(*pcbEncryptedBlob, *pcbEncryptedBlob) BYTE *pbEncryptedBlob,
5921 _Inout_ DWORD *pcbEncryptedBlob);
5922
5923BOOL
5924WINAPI
5926 _In_ PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara,
5927 _In_reads_bytes_(cbEncryptedBlob) const BYTE *pbEncryptedBlob,
5928 _In_ DWORD cbEncryptedBlob,
5929 _Out_writes_bytes_to_opt_(*pcbDecrypted, *pcbDecrypted) BYTE *pbDecrypted,
5930 _Inout_opt_ DWORD *pcbDecrypted,
5932
5933BOOL
5934WINAPI
5937 _In_ PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara,
5938 _In_ DWORD cRecipientCert,
5939 _In_reads_(cRecipientCert) PCCERT_CONTEXT rgpRecipientCert[],
5940 _In_reads_bytes_(cbToBeSignedAndEncrypted) const BYTE *pbToBeSignedAndEncrypted,
5941 _In_ DWORD cbToBeSignedAndEncrypted,
5942 _Out_writes_bytes_to_opt_(*pcbSignedAndEncryptedBlob, *pcbSignedAndEncryptedBlob) BYTE *pbSignedAndEncryptedBlob,
5943 _Inout_ DWORD *pcbSignedAndEncryptedBlob);
5944
5945BOOL
5946WINAPI
5948 _In_ PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara,
5949 _In_ PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara,
5950 _In_ DWORD dwSignerIndex,
5951 _In_reads_bytes_(cbEncryptedBlob) const BYTE *pbEncryptedBlob,
5952 _In_ DWORD cbEncryptedBlob,
5953 _Out_writes_bytes_to_opt_(*pcbDecrypted, *pcbDecrypted) BYTE *pbDecrypted,
5954 _Inout_opt_ DWORD *pcbDecrypted,
5957
5959WINAPI
5962 _In_opt_ HCRYPTPROV_LEGACY hCryptProv,
5964 _In_reads_bytes_(cbSignedBlob) const BYTE *pbSignedBlob,
5965 _In_ DWORD cbSignedBlob);
5966
5967BOOL
5968WINAPI
5970 _In_ DWORD dwMsgTypeFlags,
5973 _In_ DWORD dwSignerIndex,
5974 _In_reads_bytes_(cbEncodedBlob) const BYTE *pbEncodedBlob,
5975 _In_ DWORD cbEncodedBlob,
5976 _In_ DWORD dwPrevInnerContentType,
5977 _Out_opt_ DWORD *pdwMsgType,
5978 _Out_opt_ DWORD *pdwInnerContentType,
5979 _Out_writes_bytes_to_opt_(*pcbDecoded, *pcbDecoded) BYTE *pbDecoded,
5980 _Inout_opt_ DWORD *pcbDecoded,
5983
5984BOOL
5985WINAPI
5988 _In_ BOOL fDetachedHash,
5989 _In_ DWORD cToBeHashed,
5990 _In_reads_(cToBeHashed) const BYTE *rgpbToBeHashed[],
5991 _In_reads_(cToBeHashed) DWORD rgcbToBeHashed[],
5992 _Out_writes_bytes_to_opt_(*pcbHashedBlob, *pcbHashedBlob) BYTE *pbHashedBlob,
5993 _Inout_opt_ DWORD *pcbHashedBlob,
5994 _Out_writes_bytes_to_opt_(*pcbComputedHash, *pcbComputedHash) BYTE *pbComputedHash,
5995 _Inout_opt_ DWORD *pcbComputedHash);
5996
5997BOOL
5998WINAPI
6001 _In_reads_bytes_(cbHashedBlob) BYTE *pbHashedBlob,
6002 _In_ DWORD cbHashedBlob,
6003 _Out_writes_bytes_to_opt_(*pcbToBeHashed, *pcbToBeHashed) BYTE *pbToBeHashed,
6004 _Inout_opt_ DWORD *pcbToBeHashed,
6005 _Out_writes_bytes_to_opt_(*pcbComputedHash, *pcbComputedHash) BYTE *pbComputedHash,
6006 _Inout_opt_ DWORD *pcbComputedHash);
6007
6008BOOL
6009WINAPI
6012 _In_reads_bytes_(cbDetachedHashBlob) BYTE *pbDetachedHashBlob,
6013 _In_ DWORD cbDetachedHashBlob,
6014 _In_ DWORD cToBeHashed,
6015 _In_reads_(cToBeHashed) const BYTE *rgpbToBeHashed[],
6016 _In_reads_(cToBeHashed) DWORD rgcbToBeHashed[],
6017 _Out_writes_bytes_to_opt_(*pcbComputedHash, *pcbComputedHash) BYTE *pbComputedHash,
6018 _Inout_opt_ DWORD *pcbComputedHash);
6019
6020/* PFX functions */
6022WINAPI
6024 _In_ CRYPT_DATA_BLOB *pPFX,
6025 _In_ LPCWSTR szPassword,
6027
6029
6030BOOL
6031WINAPI
6033 _In_ CRYPT_DATA_BLOB *pPFX,
6034 _In_ LPCWSTR szPassword,
6036
6037BOOL
6038WINAPI
6040 _In_ HCERTSTORE hStore,
6042 _In_ LPCWSTR szPassword,
6043 _In_ void* pvPara,
6045
6046BOOL
6047WINAPI
6049 _In_ HCERTSTORE hStore,
6051 _In_ LPCWSTR szPassword,
6053
6055 DWORD dwFlags);
6056
6057/* cryptnet.dll functions */
6059
6060BOOL
6061WINAPI
6063 _In_ LPCSTR pszUrlOid,
6066 _Out_writes_bytes_to_opt_(*pcbUrlArray, *pcbUrlArray) PCRYPT_URL_ARRAY pUrlArray,
6067 _Inout_ DWORD* pcbUrlArray,
6068 _Out_writes_bytes_to_opt_(*pcbUrlInfo, *pcbUrlInfo) PCRYPT_URL_INFO pUrlInfo,
6069 _Inout_opt_ DWORD* pcbUrlInfo,
6071
6072_Success_(return != 0)
6073BOOL
6074WINAPI
6075CryptGetTimeValidObject(
6076 _In_ LPCSTR pszTimeValidOid,
6084 _Inout_opt_ void *pvReserved);
6085
6086BOOL
6087WINAPI
6089 _In_ LPCSTR pszFlushTimeValidOid,
6090 _In_ void *pvPara,
6093 _Reserved_ void *pvReserved);
6094
6095BOOL
6096WINAPI
6099 _In_opt_ const void *pvArg,
6101 _Reserved_ void *pvReserved);
6102
6103BOOL
6104WINAPI
6107 _Reserved_ void *pvReserved);
6108
6109_Success_(return != 0)
6110BOOL
6111WINAPI
6113 _In_ LPCSTR pszUrl,
6122
6123_Success_(return != 0)
6124BOOL
6125WINAPI
6127 _In_ LPCWSTR pszUrl,
6136
6137#define CryptRetrieveObjectByUrl WINELIB_NAME_AW(CryptRetrieveObjectByUrl)
6138
6139/* Not found in crypt32.dll but in softpub.dll */
6140HRESULT
6141WINAPI
6143 _Out_writes_bytes_to_opt_(*pcbCertChains, *pcbCertChains) PCERT_CHAIN pCertChains,
6144 _Inout_ DWORD *pcbCertChains,
6145 _Out_ DWORD *pcCertChains,
6146 _In_reads_bytes_opt_(cbEncodedIssuerName) BYTE* pbEncodedIssuerName,
6147 _In_ DWORD cbEncodedIssuerName,
6148 _In_opt_ LPCWSTR pwszPurpose,
6149 _In_ DWORD dwKeySpec);
6150
6151#ifdef _MSC_VER
6152#pragma warning(pop)
6153#endif
6154
6155#ifdef __cplusplus
6156}
6157#endif
6158
6159#endif
#define VOID
Definition: acefi.h:82
return
Definition: dirsup.c:529
BOOL WINAPI CryptRetrieveObjectByUrlA(LPCSTR pszURL, LPCSTR pszObjectOid, DWORD dwRetrievalFlags, DWORD dwTimeout, LPVOID *ppvObject, HCRYPTASYNC hAsyncRetrieve, PCRYPT_CREDENTIALS pCredentials, LPVOID pvVerify, PCRYPT_RETRIEVE_AUX_INFO pAuxInfo)
BOOL WINAPI CryptRetrieveObjectByUrlW(LPCWSTR pszURL, LPCSTR pszObjectOid, DWORD dwRetrievalFlags, DWORD dwTimeout, LPVOID *ppvObject, HCRYPTASYNC hAsyncRetrieve, PCRYPT_CREDENTIALS pCredentials, LPVOID pvVerify, PCRYPT_RETRIEVE_AUX_INFO pAuxInfo)
static const WCHAR szDescription[]
Definition: provider.c:55
BOOL WINAPI CryptEnumProvidersA(DWORD dwIndex, DWORD *pdwReserved, DWORD dwFlags, DWORD *pdwProvType, LPSTR pszProvName, DWORD *pcbProvName)
Definition: crypt.c:1228
BOOL WINAPI CryptEnumProviderTypesW(DWORD dwIndex, DWORD *pdwReserved, DWORD dwFlags, DWORD *pdwProvType, LPWSTR pszTypeName, DWORD *pcbTypeName)
Definition: crypt.c:1283
BOOL WINAPI CryptEnumProvidersW(DWORD dwIndex, DWORD *pdwReserved, DWORD dwFlags, DWORD *pdwProvType, LPWSTR pszProvName, DWORD *pcbProvName)
Definition: crypt.c:1136
BOOL WINAPI CryptDecrypt(HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final, DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen)
Definition: crypt.c:800
BOOL WINAPI CryptEnumProviderTypesA(DWORD dwIndex, DWORD *pdwReserved, DWORD dwFlags, DWORD *pdwProvType, LPSTR pszTypeName, DWORD *pcbTypeName)
Definition: crypt.c:1362
BOOL WINAPI CryptGetDefaultProviderW(DWORD dwProvType, DWORD *pdwReserved, DWORD dwFlags, LPWSTR pszProvName, DWORD *pcbProvName)
Definition: crypt.c:1503
BOOL WINAPI CryptGetDefaultProviderA(DWORD dwProvType, DWORD *pdwReserved, DWORD dwFlags, LPSTR pszProvName, DWORD *pcbProvName)
Definition: crypt.c:1560
BOOL WINAPI CryptEncrypt(HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final, DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen, DWORD dwBufLen)
Definition: crypt.c:1093
HMODULE hModule
Definition: animate.c:44
BOOL WINAPI CryptBinaryToStringW(const BYTE *pbBinary, DWORD cbBinary, DWORD dwFlags, LPWSTR pszString, DWORD *pcchString)
Definition: base64.c:473
BOOL WINAPI CryptBinaryToStringA(const BYTE *pbBinary, DWORD cbBinary, DWORD dwFlags, LPSTR pszString, DWORD *pcchString)
Definition: base64.c:253
BOOL WINAPI CertAddCertificateContextToStore(HCERTSTORE hCertStore, PCCERT_CONTEXT pCertContext, DWORD dwAddDisposition, PCCERT_CONTEXT *ppStoreContext)
Definition: cert.c:286
BOOL WINAPI CertAddCertificateLinkToStore(HCERTSTORE hCertStore, PCCERT_CONTEXT pCertContext, DWORD dwAddDisposition, PCCERT_CONTEXT *ppCertContext)
Definition: cert.c:296
BOOL WINAPI CertAddEncodedCertificateToStore(HCERTSTORE hCertStore, DWORD dwCertEncodingType, const BYTE *pbCertEncoded, DWORD cbCertEncoded, DWORD dwAddDisposition, PCCERT_CONTEXT *ppCertContext)
Definition: cert.c:58
BOOL WINAPI CertGetValidUsages(DWORD cCerts, PCCERT_CONTEXT *rghCerts, int *cNumOIDs, LPSTR *rghOIDs, DWORD *pcbOIDs)
Definition: cert.c:3159
BOOL WINAPI CertGetCertificateChain(HCERTCHAINENGINE hChainEngine, PCCERT_CONTEXT pCertContext, LPFILETIME pTime, HCERTSTORE hAdditionalStore, PCERT_CHAIN_PARA pChainPara, DWORD dwFlags, LPVOID pvReserved, PCCERT_CHAIN_CONTEXT *ppChainContext)
Definition: chain.c:2879
BOOL WINAPI CertCreateCertificateChainEngine(PCERT_CHAIN_ENGINE_CONFIG pConfig, HCERTCHAINENGINE *phChainEngine)
Definition: chain.c:225
BOOL WINAPI CertAddEncodedCRLToStore(HCERTSTORE hCertStore, DWORD dwCertEncodingType, const BYTE *pbCrlEncoded, DWORD cbCrlEncoded, DWORD dwAddDisposition, PCCRL_CONTEXT *ppCrlContext)
Definition: crl.c:129
BOOL WINAPI CertAddEncodedCTLToStore(HCERTSTORE hCertStore, DWORD dwMsgAndCertEncodingType, const BYTE *pbCtlEncoded, DWORD cbCtlEncoded, DWORD dwAddDisposition, PCCTL_CONTEXT *ppCtlContext)
Definition: ctl.c:177
BOOL WINAPI CertAddCTLContextToStore(HCERTSTORE hCertStore, PCCTL_CONTEXT pCtlContext, DWORD dwAddDisposition, PCCTL_CONTEXT *ppStoreContext)
Definition: ctl.c:63
BOOL WINAPI CryptMsgGetAndVerifySigner(HCRYPTMSG hCryptMsg, DWORD cSignerStore, HCERTSTORE *rghSignerStore, DWORD dwFlags, PCCERT_CONTEXT *ppSigner, DWORD *pdwSignerIndex)
Definition: msg.c:3669
BOOL WINAPI CryptGetDefaultOIDFunctionAddress(HCRYPTOIDFUNCSET hFuncSet, DWORD dwEncodingType, LPCWSTR pwszDll, DWORD dwFlags, void **ppvFuncAddr, HCRYPTOIDFUNCADDR *phFuncAddr)
Definition: oid.c:511
BOOL WINAPI CryptGetOIDFunctionAddress(HCRYPTOIDFUNCSET hFuncSet, DWORD dwEncodingType, LPCSTR pszOID, DWORD dwFlags, void **ppvFuncAddr, HCRYPTOIDFUNCADDR *phFuncAddr)
Definition: oid.c:387
BOOL WINAPI CryptGetDefaultOIDDllList(HCRYPTOIDFUNCSET hFuncSet, DWORD dwEncodingType, LPWSTR pwszDllList, DWORD *pcchDllList)
Definition: oid.c:193
BOOL WINAPI CertAddCRLContextToStore(HCERTSTORE hCertStore, PCCRL_CONTEXT pCrlContext, DWORD dwAddDisposition, PCCRL_CONTEXT *ppStoreContext)
Definition: store.c:960
BOOL WINAPI CertGetStoreProperty(HCERTSTORE hCertStore, DWORD dwPropId, void *pvData, DWORD *pcbData)
Definition: store.c:1172
int(* FARPROC)()
Definition: compat.h:36
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
unsigned short WORD
Definition: ntddk_ex.h:93
FxAutoRegKey hKey
FxObject * pObject
PWCHAR pValue
static LPSTR pName
Definition: security.c:75
static LPCSTR DWORD void BYTE * pbEncoded
Definition: str.c:196
static LPCSTR pszX500
Definition: str.c:196
static LPCSTR DWORD void BYTE DWORD LPCSTR * ppszError
Definition: str.c:197
static LPCSTR DWORD void BYTE DWORD * pcbEncoded
Definition: str.c:197
static LPCSTR DWORD dwStrType
Definition: str.c:196
static HMODULE MODULEINFO DWORD cb
Definition: module.c:33
static HCRYPTPROV hProv
Definition: rsaenh.c:32
#define _Out_opt_
Definition: ms_sal.h:346
#define _Success_(expr)
Definition: ms_sal.h:259
#define _In_reads_bytes_(size)
Definition: ms_sal.h:321
#define _Inout_
Definition: ms_sal.h:378
#define _Out_writes_bytes_all_(size)
Definition: ms_sal.h:362
#define _Outptr_result_maybenull_
Definition: ms_sal.h:428
#define _Inout_updates_bytes_to_opt_(size, count)
Definition: ms_sal.h:403
#define _Outptr_opt_
Definition: ms_sal.h:429
#define _Outptr_
Definition: ms_sal.h:427
#define _Post_
Definition: ms_sal.h:620
#define _Inout_updates_bytes_to_(size, count)
Definition: ms_sal.h:402
#define _Outptr_opt_result_maybenull_
Definition: ms_sal.h:430
#define _At_(target, annos)
Definition: ms_sal.h:244
#define _Inout_opt_
Definition: ms_sal.h:379
#define _Must_inspect_result_
Definition: ms_sal.h:558
#define __callback
Definition: ms_sal.h:2876
#define _Inout_updates_bytes_(size)
Definition: ms_sal.h:399
#define _Out_
Definition: ms_sal.h:345
#define _In_reads_opt_(size)
Definition: ms_sal.h:320
#define _Out_writes_to_opt_(size, count)
Definition: ms_sal.h:356
#define _Out_writes_bytes_to_opt_(size, count)
Definition: ms_sal.h:361
#define _In_
Definition: ms_sal.h:308
#define _In_reads_bytes_opt_(size)
Definition: ms_sal.h:322
#define _In_opt_
Definition: ms_sal.h:309
#define _Reserved_
Definition: ms_sal.h:295
#define _NullNull_terminated_
Definition: ms_sal.h:641
#define _In_reads_(size)
Definition: ms_sal.h:319
#define BOOL
Definition: nt_native.h:43
#define LPVOID
Definition: nt_native.h:45
#define CONST
Definition: pedump.c:81
BYTE * PBYTE
Definition: pedump.c:66
DWORD * PDWORD
Definition: pedump.c:68
long LONG
Definition: pedump.c:60
BOOL WINAPI CertAddSerializedElementToStore(HCERTSTORE hCertStore, const BYTE *pbElement, DWORD cbElement, DWORD dwAddDisposition, DWORD dwFlags, DWORD dwContextTypeFlags, DWORD *pdwContentType, const void **ppvContext)
Definition: serialize.c:953
CERT_ALT_NAME_ENTRY AccessLocation
Definition: wincrypt.h:470
Definition: wincrypt.h:332
PCERT_OTHER_NAME pOtherName
Definition: wincrypt.h:335
LPWSTR pwszRfc822Name
Definition: wincrypt.h:336
LPWSTR pwszURL
Definition: wincrypt.h:339
union _CERT_ALT_NAME_ENTRY::@3293 DUMMYUNIONNAME
LPSTR pszRegisteredID
Definition: wincrypt.h:341
DWORD dwAltNameChoice
Definition: wincrypt.h:333
CRYPT_DATA_BLOB IPAddress
Definition: wincrypt.h:340
LPWSTR pwszDNSName
Definition: wincrypt.h:337
CERT_NAME_BLOB DirectoryName
Definition: wincrypt.h:338
PCERT_ALT_NAME_ENTRY rgAltEntry
Definition: wincrypt.h:357
PCERT_ACCESS_DESCRIPTION rgAccDescr
Definition: wincrypt.h:475
CRYPT_DATA_BLOB KeyId
Definition: wincrypt.h:463
CRYPT_INTEGER_BLOB AuthorityCertSerialNumber
Definition: wincrypt.h:465
CERT_ALT_NAME_INFO AuthorityCertIssuer
Definition: wincrypt.h:464
CRYPT_DATA_BLOB KeyId
Definition: wincrypt.h:282
CERT_NAME_BLOB CertIssuer
Definition: wincrypt.h:283
CRYPT_INTEGER_BLOB CertSerialNumber
Definition: wincrypt.h:284
CERT_NAME_BLOB * rgSubtreesConstraint
Definition: wincrypt.h:375
CRYPT_BIT_BLOB SubjectType
Definition: wincrypt.h:371
DWORD dwRevocationFreshnessTime
Definition: wincrypt.h:945
PCERT_SIMPLE_CHAIN * rgpChain
Definition: wincrypt.h:941
BOOL fHasRevocationFreshnessTime
Definition: wincrypt.h:944
DWORD cLowerQualityChainContext
Definition: wincrypt.h:942
CERT_TRUST_STATUS TrustStatus
Definition: wincrypt.h:939
PCCERT_CHAIN_CONTEXT * rgpLowerQualityChainContext
Definition: wincrypt.h:943
PCERT_REVOCATION_INFO pRevocationInfo
Definition: wincrypt.h:918
PCERT_ENHKEY_USAGE pApplicationUsage
Definition: wincrypt.h:920
PCCERT_CONTEXT pCertContext
Definition: wincrypt.h:916
LPCWSTR pwszExtendedErrorInfo
Definition: wincrypt.h:921
PCERT_ENHKEY_USAGE pIssuanceUsage
Definition: wincrypt.h:919
CERT_TRUST_STATUS TrustStatus
Definition: wincrypt.h:917
HCERTSTORE hRestrictedTrust
Definition: wincrypt.h:3627
HCERTSTORE hRestrictedRoot
Definition: wincrypt.h:3626
HCERTSTORE hExclusiveRootTrustedPeople
Definition: wincrypt.h:3636
HCERTSTORE hRestrictedOther
Definition: wincrypt.h:3628
HCERTSTORE * rghAdditionalStore
Definition: wincrypt.h:3630
CERT_USAGE_MATCH RequestedUsage
Definition: wincrypt.h:1070
CRYPT_KEY_PROV_INFO keyLocatorInfo
Definition: wincrypt.h:851
DWORD cCerts
Definition: wincrypt.h:849
PCERT_BLOB certs
Definition: wincrypt.h:850
DWORD dwCertEncodingType
Definition: wincrypt.h:479
HCERTSTORE hCertStore
Definition: wincrypt.h:483
PCERT_INFO pCertInfo
Definition: wincrypt.h:482
BYTE * pbCertEncoded
Definition: wincrypt.h:480
DWORD cbCertEncoded
Definition: wincrypt.h:481
PFN_CRYPT_FREE pfnFree
Definition: wincrypt.h:1350
PCCERT_CONTEXT pCertContext
Definition: wincrypt.h:1662
PCCRL_CONTEXT pCrlContext
Definition: wincrypt.h:1663
CRYPT_UINT_BLOB p
Definition: wincrypt.h:647
CRYPT_UINT_BLOB g
Definition: wincrypt.h:648
CRYPT_UINT_BLOB p
Definition: wincrypt.h:635
CRYPT_UINT_BLOB q
Definition: wincrypt.h:636
CRYPT_UINT_BLOB g
Definition: wincrypt.h:637
CRYPT_UINT_BLOB s
Definition: wincrypt.h:300
CRYPT_UINT_BLOB r
Definition: wincrypt.h:299
CRYPT_DATA_BLOB EncryptedPrivateKey
Definition: wincrypt.h:278
CRYPT_ALGORITHM_IDENTIFIER EncryptionAlgorithm
Definition: wincrypt.h:277
DWORD cExtension
Definition: wincrypt.h:236
PCERT_EXTENSION rgExtension
Definition: wincrypt.h:237
LPSTR pszObjId
Definition: wincrypt.h:230
CRYPT_OBJID_BLOB Value
Definition: wincrypt.h:232
unsigned char SerialNumber[8]
Definition: wincrypt.h:182
unsigned char CertLabel[36]
Definition: wincrypt.h:184
CERT_ALT_NAME_ENTRY Base
Definition: wincrypt.h:571
CRYPT_HASH_BLOB KeyId
Definition: wincrypt.h:3668
union _CERT_ID::@3299 DUMMYUNIONNAME
CERT_ISSUER_SERIAL_NUMBER IssuerSerialNumber
Definition: wincrypt.h:3667
CRYPT_HASH_BLOB HashId
Definition: wincrypt.h:3669
DWORD dwIdChoice
Definition: wincrypt.h:3665
PCERT_EXTENSION rgExtension
Definition: wincrypt.h:252
CERT_NAME_BLOB Subject
Definition: wincrypt.h:247
CRYPT_BIT_BLOB SubjectUniqueId
Definition: wincrypt.h:250
CERT_NAME_BLOB Issuer
Definition: wincrypt.h:244
CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo
Definition: wincrypt.h:248
DWORD dwVersion
Definition: wincrypt.h:241
CRYPT_INTEGER_BLOB SerialNumber
Definition: wincrypt.h:242
FILETIME NotBefore
Definition: wincrypt.h:245
CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm
Definition: wincrypt.h:243
DWORD cExtension
Definition: wincrypt.h:251
FILETIME NotAfter
Definition: wincrypt.h:246
CRYPT_BIT_BLOB IssuerUniqueId
Definition: wincrypt.h:249
CERT_NAME_BLOB Issuer
Definition: wincrypt.h:3659
CRYPT_INTEGER_BLOB SerialNumber
Definition: wincrypt.h:3660
CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo
Definition: wincrypt.h:608
PCERT_PRIVATE_KEY_VALIDITY pPrivateKeyUsagePeriod
Definition: wincrypt.h:295
CRYPT_DATA_BLOB KeyId
Definition: wincrypt.h:293
CRYPT_BIT_BLOB IntendedKeyUsage
Definition: wincrypt.h:294
HCRYPTPROV hCryptProv
Definition: wincrypt.h:220
CRYPT_BIT_BLOB RestrictedKeyUsage
Definition: wincrypt.h:324
PCERT_POLICY_ID rgCertPolicyId
Definition: wincrypt.h:323
PCERT_GENERAL_SUBTREE rgPermittedSubtree
Definition: wincrypt.h:579
PCERT_GENERAL_SUBTREE rgExcludedSubtree
Definition: wincrypt.h:581
PCERT_RDN rgRDN
Definition: wincrypt.h:268
DWORD dwValueType
Definition: wincrypt.h:272
CERT_RDN_VALUE_BLOB Value
Definition: wincrypt.h:273
CRYPT_OBJID_BLOB Value
Definition: wincrypt.h:329
CERT_BLOB Forward
Definition: wincrypt.h:558
CERT_BLOB Reverse
Definition: wincrypt.h:559
CRYPT_DATA_BLOB OpenParameters
Definition: wincrypt.h:1089
CERT_POLICY_INFO * rgPolicyInfo
Definition: wincrypt.h:400
DWORD cCertPolicyElementId
Definition: wincrypt.h:317
LPSTR * rgbszCertPolicyElementId
Definition: wincrypt.h:318
CERT_POLICY_QUALIFIER_INFO * rgPolicyQualifier
Definition: wincrypt.h:395
LPSTR pszPolicyIdentifier
Definition: wincrypt.h:393
DWORD cPolicyQualifier
Definition: wincrypt.h:394
PCERT_POLICY_MAPPING rgPolicyMapping
Definition: wincrypt.h:436
LPSTR pszIssuerDomainPolicy
Definition: wincrypt.h:430
LPSTR pszSubjectDomainPolicy
Definition: wincrypt.h:431
CRYPT_OBJID_BLOB Qualifier
Definition: wincrypt.h:389
CERT_POLICY_QUALIFIER_NOTICE_REFERENCE * pNoticeReference
Definition: wincrypt.h:411
CRYPT_ALGORITHM_IDENTIFIER Algorithm
Definition: wincrypt.h:713
CRYPT_DER_BLOB PrivateKey
Definition: wincrypt.h:714
PCRYPT_ATTRIBUTES pAttributes
Definition: wincrypt.h:715
CRYPT_BIT_BLOB PublicKey
Definition: wincrypt.h:226
CRYPT_ALGORITHM_IDENTIFIER Algorithm
Definition: wincrypt.h:225
LPSTR pszObjId
Definition: wincrypt.h:256
DWORD dwValueType
Definition: wincrypt.h:257
CERT_RDN_VALUE_BLOB Value
Definition: wincrypt.h:258
DWORD cRDNAttr
Definition: wincrypt.h:262
PCERT_RDN_ATTR rgRDNAttr
Definition: wincrypt.h:263
PCRYPT_ATTRIBUTE rgAttribute
Definition: wincrypt.h:603
CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo
Definition: wincrypt.h:601
CERT_NAME_BLOB Subject
Definition: wincrypt.h:600
PCCRL_CONTEXT pBaseCrlContext
Definition: wincrypt.h:786
PCCRL_CONTEXT pDeltaCrlContext
Definition: wincrypt.h:787
PCERT_REVOCATION_CRL_INFO pCrlInfo
Definition: wincrypt.h:799
LPVOID pvOidSpecificInfo
Definition: wincrypt.h:796
LPFILETIME pftTimeToUse
Definition: wincrypt.h:808
HCERTSTORE hCrlStore
Definition: wincrypt.h:807
PCCERT_CONTEXT pIssuerCert
Definition: wincrypt.h:804
HCERTSTORE * rgCertStore
Definition: wincrypt.h:806
CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm
Definition: wincrypt.h:614
CRYPT_BIT_BLOB Signature
Definition: wincrypt.h:615
CRYPT_DER_BLOB ToBeSigned
Definition: wincrypt.h:613
BOOL fHasRevocationFreshnessTime
Definition: wincrypt.h:930
DWORD dwRevocationFreshnessTime
Definition: wincrypt.h:931
CERT_TRUST_STATUS TrustStatus
Definition: wincrypt.h:926
PCERT_CHAIN_ELEMENT * rgpElement
Definition: wincrypt.h:928
PCERT_TRUST_LIST_INFO pTrustListInfo
Definition: wincrypt.h:929
void ** rgpvStoreProvFunc
Definition: wincrypt.h:1149
HCRYPTOIDFUNCADDR hStoreProvFuncAddr2
Definition: wincrypt.h:1152
HCERTSTOREPROV hStoreProv
Definition: wincrypt.h:1150
CERT_STRONG_SIGN_SERIALIZED_INFO * pSerializedInfo
Definition: wincrypt.h:4092
union _CERT_STRONG_SIGN_PARA::@3305 DUMMYUNIONNAME
union _CERT_SYSTEM_STORE_RELOCATE_PARA::@3297 DUMMYUNIONNAME2
union _CERT_SYSTEM_STORE_RELOCATE_PARA::@3296 DUMMYUNIONNAME
PCCTL_CONTEXT pCtlContext
Definition: wincrypt.h:866
PCTL_ENTRY pCtlEntry
Definition: wincrypt.h:865
CERT_ENHKEY_USAGE Usage
Definition: wincrypt.h:1048
CRYPT_UINT_BLOB j
Definition: wincrypt.h:660
PCERT_X942_DH_VALIDATION_PARAMS pValidationParams
Definition: wincrypt.h:661
CRYPT_UINT_BLOB g
Definition: wincrypt.h:658
CRYPT_UINT_BLOB q
Definition: wincrypt.h:659
CRYPT_UINT_BLOB p
Definition: wincrypt.h:657
PCMSG_KEY_TRANS_RECIPIENT_INFO pKeyTrans
Definition: wincrypt.h:4033
union _CMSG_CMS_RECIPIENT_INFO::@3304 DUMMYUNIONNAME
PCMSG_KEY_AGREE_RECIPIENT_INFO pKeyAgree
Definition: wincrypt.h:4034
PCMSG_MAIL_LIST_RECIPIENT_INFO pMailList
Definition: wincrypt.h:4035
CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm
Definition: wincrypt.h:3965
CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm
Definition: wincrypt.h:3964
CRYPT_DATA_BLOB EncryptedHash
Definition: wincrypt.h:3966
CRYPT_ATTRIBUTES UnauthAttrs
Definition: wincrypt.h:3968
CRYPT_ATTRIBUTES AuthAttrs
Definition: wincrypt.h:3967
PFN_CMSG_ALLOC pfnAlloc
Definition: wincrypt.h:4058
CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm
Definition: wincrypt.h:4054
PCMSG_RECIPIENT_ENCODE_INFO rgCmsRecipients
Definition: wincrypt.h:4057
PCMSG_KEY_TRANS_RECIPIENT_INFO pKeyTrans
Definition: wincrypt.h:4077
CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm
Definition: wincrypt.h:3856
HCRYPTPROV_LEGACY hCryptProv
Definition: wincrypt.h:3819
PCERT_INFO * rgpRecipientCert
Definition: wincrypt.h:3823
CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm
Definition: wincrypt.h:3820
HCRYPTPROV_LEGACY hCryptProv
Definition: wincrypt.h:3848
CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm
Definition: wincrypt.h:3849
CRYPT_ALGORITHM_IDENTIFIER KeyWrapAlgorithm
Definition: wincrypt.h:3767
union _CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO::@3300 DUMMYUNIONNAME
CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm
Definition: wincrypt.h:3765
PCRYPT_ALGORITHM_IDENTIFIER pEphemeralAlgorithm
Definition: wincrypt.h:3773
PCMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO * rgpRecipientEncryptedKeys
Definition: wincrypt.h:3778
PCMSG_RECIPIENT_ENCRYPTED_KEY_INFO * rgpRecipientEncryptedKeys
Definition: wincrypt.h:4015
CERT_PUBLIC_KEY_INFO OriginatorPublicKeyInfo
Definition: wincrypt.h:4011
union _CMSG_KEY_AGREE_RECIPIENT_INFO::@3303 DUMMYUNIONNAME
CRYPT_ALGORITHM_IDENTIFIER UserKeyingMaterial
Definition: wincrypt.h:4013
CRYPT_DATA_BLOB EncryptedKey
Definition: wincrypt.h:4069
CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm
Definition: wincrypt.h:4068
CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm
Definition: wincrypt.h:3745
CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm
Definition: wincrypt.h:3996
CRYPT_DATA_BLOB EncryptedKey
Definition: wincrypt.h:3997
PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr
Definition: wincrypt.h:3797
CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm
Definition: wincrypt.h:3787
union _CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO::@3301 DUMMYUNIONNAME
CRYPT_DATA_BLOB EncryptedKey
Definition: wincrypt.h:4025
PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr
Definition: wincrypt.h:4027
CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm
Definition: wincrypt.h:4024
PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO pKeyTrans
Definition: wincrypt.h:3806
union _CMSG_RECIPIENT_ENCODE_INFO::@3302 DUMMYUNIONNAME
PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO pKeyAgree
Definition: wincrypt.h:3807
PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO pMailList
Definition: wincrypt.h:3808
PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr
Definition: wincrypt.h:3758
PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr
Definition: wincrypt.h:4003
CMSG_ENVELOPED_ENCODE_INFO EnvelopedInfo
Definition: wincrypt.h:3841
CMSG_SIGNED_ENCODE_INFO SignedInfo
Definition: wincrypt.h:3840
PCMSG_SIGNER_ENCODE_INFO rgSigners
Definition: wincrypt.h:3731
PCERT_BLOB rgCertEncoded
Definition: wincrypt.h:3733
CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm
Definition: wincrypt.h:3714
PCRYPT_ATTRIBUTE rgAuthAttr
Definition: wincrypt.h:3717
PCRYPT_ATTRIBUTE rgUnauthAttr
Definition: wincrypt.h:3719
CRYPT_ATTRIBUTES AuthAttrs
Definition: wincrypt.h:775
CERT_NAME_BLOB Issuer
Definition: wincrypt.h:770
CRYPT_INTEGER_BLOB SerialNumber
Definition: wincrypt.h:771
CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm
Definition: wincrypt.h:773
CRYPT_DATA_BLOB EncryptedHash
Definition: wincrypt.h:774
CRYPT_ATTRIBUTES UnauthAttrs
Definition: wincrypt.h:776
CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm
Definition: wincrypt.h:772
PFN_CMSG_STREAM_OUTPUT pfnStreamOutput
Definition: wincrypt.h:3653
CRYPT_DATA_BLOB PubInfo
Definition: wincrypt.h:191
LPSTR pszContentEncObjId
Definition: wincrypt.h:190
void * pReserved
Definition: wincrypt.h:192
CRYPT_DATA_BLOB * pDigest
Definition: wincrypt.h:418
LPWSTR pszURL
Definition: wincrypt.h:416
CRYPT_ALGORITHM_IDENTIFIER * pAlgorithm
Definition: wincrypt.h:417
DWORD cbCrlEncoded
Definition: wincrypt.h:621
DWORD dwCertEncodingType
Definition: wincrypt.h:619
HCERTSTORE hCertStore
Definition: wincrypt.h:623
BYTE * pbCrlEncoded
Definition: wincrypt.h:620
PCRL_INFO pCrlInfo
Definition: wincrypt.h:622
PCRL_DIST_POINT rgDistPoint
Definition: wincrypt.h:533
union _CRL_DIST_POINT_NAME::@3294 DUMMYUNIONNAME
CERT_ALT_NAME_INFO FullName
Definition: wincrypt.h:509
DWORD dwDistPointNameChoice
Definition: wincrypt.h:507
CRYPT_BIT_BLOB ReasonFlags
Definition: wincrypt.h:519
CERT_ALT_NAME_INFO CRLIssuer
Definition: wincrypt.h:520
CRL_DIST_POINT_NAME DistPointName
Definition: wincrypt.h:518
Definition: wincrypt.h:487
FILETIME RevocationDate
Definition: wincrypt.h:489
PCERT_EXTENSION rgExtension
Definition: wincrypt.h:491
CRYPT_INTEGER_BLOB SerialNumber
Definition: wincrypt.h:488
DWORD cExtension
Definition: wincrypt.h:490
PCCERT_CONTEXT pIssuerCert
Definition: wincrypt.h:2940
PCCERT_CONTEXT pSubjectCert
Definition: wincrypt.h:2939
PCRL_ENTRY rgCRLEntry
Definition: wincrypt.h:501
DWORD cCRLEntry
Definition: wincrypt.h:500
DWORD cExtension
Definition: wincrypt.h:502
DWORD dwVersion
Definition: wincrypt.h:495
FILETIME NextUpdate
Definition: wincrypt.h:499
CERT_NAME_BLOB Issuer
Definition: wincrypt.h:497
FILETIME ThisUpdate
Definition: wincrypt.h:498
CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm
Definition: wincrypt.h:496
PCERT_EXTENSION rgExtension
Definition: wincrypt.h:503
CRL_DIST_POINT_NAME DistPointName
Definition: wincrypt.h:563
CRYPT_BIT_BLOB OnlySomeReasonFlags
Definition: wincrypt.h:566
PCERT_ALT_NAME_INFO rgDistPoint
Definition: wincrypt.h:548
BYTE * pbData
Definition: wincrypt.h:103
CRYPT_OBJID_BLOB Parameters
Definition: wincrypt.h:127
_Inout_opt_ void * pvCompletion
Definition: wincrypt.h:1559
__callback PFN_CRYPT_ASYNC_RETRIEVAL_COMPLETION_FUNC pfnCompletion
Definition: wincrypt.h:1558
PCRYPT_ATTRIBUTE rgAttr
Definition: wincrypt.h:595
CRYPT_OBJID_BLOB Value
Definition: wincrypt.h:132
PCRYPT_DATA_BLOB rgValue
Definition: wincrypt.h:590
DWORD cUnusedBits
Definition: wincrypt.h:198
BYTE * pbData
Definition: wincrypt.h:197
PCRYPT_DATA_BLOB rgBlob
Definition: wincrypt.h:1569
CRYPT_DER_BLOB Content
Definition: wincrypt.h:454
LPVOID pvCredentials
Definition: wincrypt.h:1575
LPCSTR pszCredentialsOid
Definition: wincrypt.h:1574
PFN_CRYPT_FREE pfnFree
Definition: wincrypt.h:1143
PFN_CRYPT_ALLOC pfnAlloc
Definition: wincrypt.h:1142
PFN_CRYPT_ALLOC pfnAlloc
Definition: wincrypt.h:1136
PFN_CRYPT_FREE pfnFree
Definition: wincrypt.h:1137
HCRYPTPROV_LEGACY hCryptProv
Definition: wincrypt.h:1470
CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm
Definition: wincrypt.h:1471
CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm
Definition: wincrypt.h:1493
HCRYPTPROV_LEGACY hCryptProv
Definition: wincrypt.h:1492
LPWSTR pwszContainerName
Definition: wincrypt.h:209
PCRYPT_KEY_PROV_PARAM rgProvParam
Definition: wincrypt.h:214
CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm
Definition: wincrypt.h:1502
HCRYPTPROV_LEGACY hCryptProv
Definition: wincrypt.h:1509
Definition: wincrypt.h:1354
void * pvFuncAddr
Definition: wincrypt.h:1356
LPCSTR pszOID
Definition: wincrypt.h:1355
LPCWSTR pwszName
Definition: wincrypt.h:1405
CRYPT_DATA_BLOB ExtraInfo
Definition: wincrypt.h:1412
union _CRYPT_OID_INFO::@3298 DUMMYUNIONNAME
FILETIME * pLastSyncTime
Definition: wincrypt.h:1599
PCRYPT_DER_BLOB rgValue
Definition: wincrypt.h:459
PCCERT_CONTEXT * rgpMsgCert
Definition: wincrypt.h:1432
CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm
Definition: wincrypt.h:1429
PCRYPT_ATTRIBUTE rgUnauthAttr
Definition: wincrypt.h:1438
PCCERT_CONTEXT pSigningCert
Definition: wincrypt.h:1428
PCRYPT_ATTRIBUTE rgAuthAttr
Definition: wincrypt.h:1436
PCCRL_CONTEXT * rgpMsgCrl
Definition: wincrypt.h:1434
PCRYPT_SMIME_CAPABILITY rgCapability
Definition: wincrypt.h:693
CRYPT_OBJID_BLOB Parameters
Definition: wincrypt.h:688
PCRYPT_ATTRIBUTE rgAttribute
Definition: wincrypt.h:760
CRYPT_OBJID_BLOB Content
Definition: wincrypt.h:758
LPWSTR * rgwszUrl
Definition: wincrypt.h:1514
DWORD * rgcGroupEntry
Definition: wincrypt.h:1521
DWORD dwSyncDeltaTime
Definition: wincrypt.h:1519
HCRYPTPROV_LEGACY hCryptProv
Definition: wincrypt.h:1462
PFN_CRYPT_GET_SIGNER_CERTIFICATE pfnGetSignerCertificate
Definition: wincrypt.h:1463
BYTE rgbCounter[CRYPT_X942_COUNTER_BYTE_LENGTH]
Definition: wincrypt.h:670
BYTE rgbKeyLength[CRYPT_X942_KEY_LENGTH_BYTE_LENGTH]
Definition: wincrypt.h:671
LPSTR pszContentEncryptionObjId
Definition: wincrypt.h:669
CRYPT_DATA_BLOB PubInfo
Definition: wincrypt.h:672
DWORD cbCtlEncoded
Definition: wincrypt.h:746
BYTE * pbCtlEncoded
Definition: wincrypt.h:745
HCRYPTMSG hCryptMsg
Definition: wincrypt.h:749
DWORD dwMsgAndCertEncodingType
Definition: wincrypt.h:744
HCERTSTORE hCertStore
Definition: wincrypt.h:748
PCTL_INFO pCtlInfo
Definition: wincrypt.h:747
BYTE * pbCtlContext
Definition: wincrypt.h:750
DWORD cbCtlContext
Definition: wincrypt.h:751
Definition: wincrypt.h:723
DWORD cAttribute
Definition: wincrypt.h:725
CRYPT_DATA_BLOB SubjectIdentifier
Definition: wincrypt.h:724
PCRYPT_ATTRIBUTE rgAttribute
Definition: wincrypt.h:726
PCTL_FIND_USAGE_PARA pUsagePara
Definition: wincrypt.h:2965
CTL_USAGE SubjectUsage
Definition: wincrypt.h:2953
CRYPT_DATA_BLOB ListIdentifier
Definition: wincrypt.h:2954
PCERT_INFO pSigner
Definition: wincrypt.h:2955
CRYPT_INTEGER_BLOB SequenceNumber
Definition: wincrypt.h:733
DWORD cExtension
Definition: wincrypt.h:739
DWORD dwVersion
Definition: wincrypt.h:730
CRYPT_ALGORITHM_IDENTIFIER SubjectAlgorithm
Definition: wincrypt.h:736
FILETIME NextUpdate
Definition: wincrypt.h:735
PCTL_ENTRY rgCTLEntry
Definition: wincrypt.h:738
CRYPT_DATA_BLOB ListIdentifier
Definition: wincrypt.h:732
DWORD cCTLEntry
Definition: wincrypt.h:737
CTL_USAGE SubjectUsage
Definition: wincrypt.h:731
FILETIME ThisUpdate
Definition: wincrypt.h:734
PCERT_EXTENSION rgExtension
Definition: wincrypt.h:740
CTL_USAGE Usage
Definition: wincrypt.h:1053
DWORD cUsageIdentifier
Definition: wincrypt.h:719
LPSTR * rgpszUsageIdentifier
Definition: wincrypt.h:720
HCERTSTORE * rghCtlStore
Definition: wincrypt.h:827
CRYPT_DATA_BLOB ListIdentifier
Definition: wincrypt.h:825
HCERTSTORE * rghSignerStore
Definition: wincrypt.h:829
PCCERT_CONTEXT * ppSigner
Definition: wincrypt.h:838
PCCTL_CONTEXT * ppCtl
Definition: wincrypt.h:836
DWORD counter
Definition: wincrypt.h:154
BYTE seed[20]
Definition: wincrypt.h:155
DWORD cbInnerString
Definition: wincrypt.h:96
BYTE * pbOuterString
Definition: wincrypt.h:97
DWORD cbOuterString
Definition: wincrypt.h:98
BYTE * pbInnerString
Definition: wincrypt.h:95
ALG_ID HashAlgid
Definition: wincrypt.h:94
union _HTTPSPolicyCallbackData::@3295 DUMMYUNIONNAME
DWORD bitlenP
Definition: wincrypt.h:168
DWORD magic
Definition: wincrypt.h:167
DSSSEED DSSSeed
Definition: wincrypt.h:172
DWORD bitlenX
Definition: wincrypt.h:171
DWORD bitlenQ
Definition: wincrypt.h:169
DWORD bitlenJ
Definition: wincrypt.h:170
CHAR szName[20]
Definition: wincrypt.h:74
DWORD dwDefaultLen
Definition: wincrypt.h:69
DWORD dwProtocols
Definition: wincrypt.h:72
ALG_ID aiAlgid
Definition: wincrypt.h:68
CHAR szLongName[40]
Definition: wincrypt.h:76
DWORD dwLongNameLen
Definition: wincrypt.h:75
DWORD dwNameLen
Definition: wincrypt.h:63
DWORD dwBitLen
Definition: wincrypt.h:62
ALG_ID aiAlgid
Definition: wincrypt.h:61
CHAR szName[20]
Definition: wincrypt.h:64
DWORD magic
Definition: wincrypt.h:159
DWORD bitlenP
Definition: wincrypt.h:160
DWORD bitlenJ
Definition: wincrypt.h:162
DWORD bitlenQ
Definition: wincrypt.h:161
DSSSEED DSSSeed
Definition: wincrypt.h:163
DWORD magic
Definition: wincrypt.h:149
DWORD bitlen
Definition: wincrypt.h:150
ALG_ID aiKeyAlg
Definition: wincrypt.h:139
DWORD pubexp
Definition: wincrypt.h:145
DWORD bitlen
Definition: wincrypt.h:144
DWORD magic
Definition: wincrypt.h:143
DWORD cBits
Definition: wincrypt.h:85
DWORD dwUse
Definition: wincrypt.h:83
DWORD dwReserved
Definition: wincrypt.h:87
DWORD dwFlags
Definition: wincrypt.h:86
ALG_ID Algid
Definition: wincrypt.h:84
BYTE * pbContextInfo
Definition: wincrypt.h:706
FARPROC FuncVerifyImage
Definition: wincrypt.h:702
FARPROC FuncReturnhWnd
Definition: wincrypt.h:703
LPSTR pszProvName
Definition: wincrypt.h:708
DWORD dwProvType
Definition: wincrypt.h:705
DWORD cbContextInfo
Definition: wincrypt.h:707
uint32_t ULONG_PTR
Definition: typedefs.h:65
uint32_t ULONG
Definition: typedefs.h:59
_In_z_ PCWSTR pwszValueName
Definition: ntuser.h:42
BOOL(WINAPI * PFN_CERT_STORE_PROV_WRITE_CTL)(_Inout_ HCERTSTOREPROV hStoreProv, _In_ PCCTL_CONTEXT pCtlContext, _In_ DWORD dwFlags)
Definition: wincrypt.h:1238
BOOL WINAPI CryptImportPublicKeyInfo(_In_ HCRYPTPROV hCryptProv, _In_ DWORD dwCertEncodingType, _In_ PCERT_PUBLIC_KEY_INFO pInfo, _Out_ HCRYPTKEY *phKey)
struct _CRYPT_ENCRYPT_MESSAGE_PARA * PCRYPT_ENCRYPT_MESSAGE_PARA
struct _CMSG_CONTENT_ENCRYPT_INFO CMSG_CONTENT_ENCRYPT_INFO
LONG WINAPI CertVerifyTimeValidity(_In_opt_ LPFILETIME pTimeToVerify, _In_ PCERT_INFO pCertInfo)
struct _CERT_REVOCATION_STATUS CERT_REVOCATION_STATUS
BOOL WINAPI CertGetEnhancedKeyUsage(_In_ PCCERT_CONTEXT pCertContext, _In_ DWORD dwFlags, _Out_writes_bytes_to_opt_(*pcbUsage, *pcbUsage) PCERT_ENHKEY_USAGE pUsage, _Inout_ DWORD *pcbUsage)
BOOL WINAPI CertGetCertificateContextProperty(_In_ PCCERT_CONTEXT pCertContext, _In_ DWORD dwPropId, _Out_writes_bytes_to_opt_(*pcbData, *pcbData) void *pvData, _Inout_ DWORD *pcbData)
struct _CERT_OTHER_NAME CERT_OTHER_NAME
struct _CERT_STORE_PROV_INFO CERT_STORE_PROV_INFO
#define CRYPT_X942_COUNTER_BYTE_LENGTH
Definition: wincrypt.h:664
struct _CERT_POLICY_QUALIFIER_USER_NOTICE * PCERT_POLICY_QUALIFIER_USER_NOTICE
struct _VTableProvStruc VTableProvStruc
ULONG_PTR HCRYPTPROV_OR_NCRYPT_KEY_HANDLE
Definition: wincrypt.h:47
BOOL(WINAPI * PFN_CERT_STORE_PROV_FREE_FIND_CRL)(_Inout_ HCERTSTOREPROV hStoreProv, _In_ PCCRL_CONTEXT pCrlContext, _In_ void *pvStoreProvFindInfo, _In_ DWORD dwFlags)
Definition: wincrypt.h:1313
struct _CERT_POLICIES_INFO CERT_POLICIES_INFO
struct _CERT_CHAIN_ELEMENT CERT_CHAIN_ELEMENT
_In_ DWORD dwMsgAndCertEncodingType
Definition: wincrypt.h:5076
WINADVAPI BOOL WINAPI CryptGenKey(_In_ HCRYPTPROV, _In_ ALG_ID, _In_ DWORD, _Out_ HCRYPTKEY *)
WINADVAPI BOOL WINAPI CryptSignHashA(_In_ HCRYPTHASH hHash, _In_ DWORD dwKeySpec, _In_opt_ LPCSTR szDescription, _In_ DWORD dwFlags, _Out_writes_bytes_to_opt_(*pdwSigLen, *pdwSigLen) BYTE *pbSignature, _Inout_ DWORD *pdwSigLen)
BOOL WINAPI CertComparePublicKeyInfo(_In_ DWORD dwCertEncodingType, _In_ PCERT_PUBLIC_KEY_INFO pPublicKey1, _In_ PCERT_PUBLIC_KEY_INFO pPublicKey2)
BOOL(WINAPI * PFN_CMSG_EXPORT_KEY_TRANS)(_In_ PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo, _In_ PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO pKeyTransEncodeInfo, _Inout_ PCMSG_KEY_TRANS_ENCRYPT_INFO pKeyTransEncryptInfo, _In_ DWORD dwFlags, _Reserved_ void *pvReserved)
Definition: wincrypt.h:4104
struct _CTL_CONTEXT CTL_CONTEXT
struct _CMSG_SIGNED_ENCODE_INFO * PCMSG_SIGNED_ENCODE_INFO
WINADVAPI BOOL WINAPI CryptCreateHash(_In_ HCRYPTPROV, _In_ ALG_ID, _In_ HCRYPTKEY, _In_ DWORD, _Out_ HCRYPTHASH *)
static const WCHAR CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM[]
Definition: wincrypt.h:1394
struct _CERT_X942_DH_VALIDATION_PARAMS * PCERT_X942_DH_VALIDATION_PARAMS
static const WCHAR CERT_PHYSICAL_STORE_LOCAL_MACHINE_GROUP_POLICY_NAME[]
Definition: wincrypt.h:2629
struct _CRYPTOAPI_BLOB CRYPT_UINT_BLOB
struct _CERT_CHAIN * PCERT_CHAIN
struct _CERT_CRL_CONTEXT_PAIR * PCERT_CRL_CONTEXT_PAIR
_In_ PCCRL_CONTEXT pCrlContext
Definition: wincrypt.h:4992
struct _CERT_RDN * PCERT_RDN
struct _CRYPT_OID_FUNC_ENTRY * PCRYPT_OID_FUNC_ENTRY
struct _CPS_URLS * PCPS_URLS
BOOL WINAPI CertCompareIntegerBlob(_In_ PCRYPT_INTEGER_BLOB pInt1, _In_ PCRYPT_INTEGER_BLOB pInt2)
BOOL WINAPI CryptUninstallCancelRetrieval(_In_ DWORD dwFlags, _Reserved_ void *pvReserved)
static const WCHAR CERT_PROT_ROOT_FLAGS_REGPATH[]
Definition: wincrypt.h:2392
struct _CERT_ECC_SIGNATURE CERT_ECC_SIGNATURE
BOOL WINAPI CryptSetAsyncParam(_In_ HCRYPTASYNC hAsync, _In_ LPSTR pszParamOid, _In_opt_ LPVOID pvParam, __callback PFN_CRYPT_ASYNC_PARAM_FREE_FUNC pfnFree)
struct _CMSG_ENVELOPED_ENCODE_INFO * PCMSG_ENVELOPED_ENCODE_INFO
struct _CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA * PCMSG_CTRL_VERIFY_SIGNATURE_EX_PARA
_In_opt_ LPCSTR _In_ DWORD _In_ DWORD _Outptr_ LPVOID _In_opt_ HCRYPTASYNC _In_opt_ PCRYPT_CREDENTIALS _In_opt_ LPVOID pvVerify
Definition: wincrypt.h:6120
PCERT_RDN_ATTR WINAPI CertFindRDNAttr(_In_ LPCSTR pszObjId, _In_ PCERT_NAME_INFO pName)
_Reserved_ DWORD _In_ DWORD _Out_ DWORD _Out_writes_bytes_to_opt_ pcbProvName LPSTR szProvName
Definition: wincrypt.h:4257
BOOL WINAPI CryptHashCertificate(_In_opt_ HCRYPTPROV_LEGACY hCryptProv, _In_ ALG_ID Algid, _In_ DWORD dwFlags, _In_reads_bytes_(cbEncoded) const BYTE *pbEncoded, _In_ DWORD cbEncoded, _Out_writes_bytes_to_opt_(*pcbComputedHash, *pcbComputedHash) BYTE *pbComputedHash, _Inout_ DWORD *pcbComputedHash)
BOOL WINAPI CryptVerifyMessageSignatureWithKey(_In_ PCRYPT_KEY_VERIFY_MESSAGE_PARA pVerifyPara, _In_opt_ PCERT_PUBLIC_KEY_INFO pPublicKeyInfo, _In_reads_bytes_(cbSignedBlob) const BYTE *pbSignedBlob, _In_ DWORD cbSignedBlob, _Out_writes_bytes_to_opt_(*pcbDecoded, *pcbDecoded) BYTE *pbDecoded, _Inout_opt_ DWORD *pcbDecoded)
struct _CRYPTOAPI_BLOB CRYPT_DER_BLOB
_In_ PCCERT_STORE_PROV_FIND_INFO _In_ PCCERT_CONTEXT _In_ DWORD _Inout_ void ** ppvStoreProvFindInfo
Definition: wincrypt.h:1282
struct _CERT_SIMPLE_CHAIN CERT_SIMPLE_CHAIN
struct _CRYPT_ATTRIBUTE CRYPT_ATTRIBUTE
BOOL WINAPI CryptAcquireCertificatePrivateKey(_In_ PCCERT_CONTEXT pCert, _In_ DWORD dwFlags, _In_opt_ void *pvParameters, _Out_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE *phCryptProvOrNCryptKey, _Out_opt_ DWORD *pdwKeySpec, _Out_opt_ BOOL *pfCallerFreeProvOrNCryptKey)
struct _CERT_USAGE_MATCH CERT_USAGE_MATCH
BOOL WINAPI CertGetIntendedKeyUsage(_In_ DWORD dwCertEncodingType, _In_ PCERT_INFO pCertInfo, _Out_writes_bytes_all_(cbKeyUsage) BYTE *pbKeyUsage, _In_ DWORD cbKeyUsage)
struct _CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO
#define WINADVAPI
Definition: wincrypt.h:41
static const WCHAR CRYPT_OID_REG_DLL_VALUE_NAME[]
Definition: wincrypt.h:2528
struct _HTTPSPolicyCallbackData HTTPSPolicyCallbackData
_Out_ int _Out_writes_bytes_to_opt_ pcbOIDs LPSTR _Inout_ DWORD * pcbOIDs
Definition: wincrypt.h:5305
BOOL(WINAPI * PFN_CMSG_STREAM_OUTPUT)(_In_opt_ const void *pvArg, _In_reads_bytes_opt_(cbData) BYTE *pbData, _In_ DWORD cbData, _In_ BOOL fFinal)
Definition: wincrypt.h:3642
PCERT_EXTENSION WINAPI CertFindExtension(_In_ LPCSTR pszObjId, _In_ DWORD cExtensions, _In_reads_(cExtensions) CERT_EXTENSION rgExtensions[])
struct _CRYPT_URL_ARRAY * PCRYPT_URL_ARRAY
static const WCHAR MS_DEF_RSA_SCHANNEL_PROV_W[]
Definition: wincrypt.h:1924
static const WCHAR CERT_TRUST_PUB_SAFER_LOCAL_MACHINE_REGPATH[]
Definition: wincrypt.h:2435
BOOL WINAPI PFXExportCertStore(_In_ HCERTSTORE hStore, _Inout_ CRYPT_DATA_BLOB *pPFX, _In_ LPCWSTR szPassword, _In_ DWORD dwFlags)
static const WCHAR CERT_PROT_ROOT_FLAGS_VALUE_NAME[]
Definition: wincrypt.h:2395
struct _CRYPTOAPI_BLOB * PCRYPT_UINT_BLOB
struct _PUBKEYVER3 DHPUBKEY_VER3
BOOL WINAPI CryptSignMessageWithKey(_In_ PCRYPT_KEY_SIGN_MESSAGE_PARA pSignPara, _In_reads_bytes_(cbToBeSigned) const BYTE *pbToBeSigned, _In_ DWORD cbToBeSigned, _Out_writes_bytes_to_opt_(*pcbSignedBlob, *pcbSignedBlob) BYTE *pbSignedBlob, _Inout_ DWORD *pcbSignedBlob)
struct _CMSG_RECIPIENT_ENCRYPTED_KEY_INFO CMSG_RECIPIENT_ENCRYPTED_KEY_INFO
static const WCHAR MS_DEF_DSS_DH_PROV_W[]
Definition: wincrypt.h:1953
struct _CMSG_HASHED_ENCODE_INFO * PCMSG_HASHED_ENCODE_INFO
BOOL WINAPI CertSetCRLContextProperty(_In_ PCCRL_CONTEXT pCrlContext, _In_ DWORD dwPropId, _In_ DWORD dwFlags, _In_opt_ const void *pvData)
struct _CERT_AUTHORITY_INFO_ACCESS * PCERT_AUTHORITY_INFO_ACCESS
CRYPT_ATTRIBUTES CMSG_ATTR
Definition: wincrypt.h:3971
struct _PRIVKEYVER3 DHPRIVKEY_VER3
BOOL WINAPI CryptMsgVerifyCountersignatureEncoded(_In_opt_ HCRYPTPROV_LEGACY hCryptProv, _In_ DWORD dwEncodingType, _In_reads_bytes_(cbSignerInfo) PBYTE pbSignerInfo, _In_ DWORD cbSignerInfo, _In_reads_bytes_(cbSignerInfoCountersignature) PBYTE pbSignerInfoCountersignature, _In_ DWORD cbSignerInfoCountersignature, _In_ PCERT_INFO pciCountersigner)
BOOL WINAPI CertSetStoreProperty(_In_ HCERTSTORE hCertStore, _In_ DWORD dwPropId, _In_ DWORD dwFlags, _In_opt_ const void *pvData)
struct _CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY
struct _CRYPTPROTECT_PROMPTSTRUCT * PCRYPTPROTECT_PROMPTSTRUCT
_Reserved_ DWORD * pdwReserved
Definition: wincrypt.h:4254
struct _CRYPT_CREDENTIALS * PCRYPT_CREDENTIALS
struct _CERT_PRIVATE_KEY_VALIDITY CERT_PRIVATE_KEY_VALIDITY
static const WCHAR MS_ENH_DSS_DH_PROV_W[]
Definition: wincrypt.h:1969
struct _CRYPTOAPI_BLOB CERT_RDN_VALUE_BLOB
BOOL WINAPI CertIsRDNAttrsInCertificateName(_In_ DWORD dwCertEncodingType, _In_ DWORD dwFlags, _In_ PCERT_NAME_BLOB pCertName, _In_ PCERT_RDN pRDN)
struct _CRL_INFO CRL_INFO
struct _CRYPT_ASYNC_RETRIEVAL_COMPLETION CRYPT_ASYNC_RETRIEVAL_COMPLETION
PCCERT_CHAIN_CONTEXT WINAPI CertFindChainInStore(_In_ HCERTSTORE hCertStore, _In_ DWORD dwCertEncodingType, _In_ DWORD dwFindFlags, _In_ DWORD dwFindType, _In_opt_ const void *pvFindPara, _In_opt_ PCCERT_CHAIN_CONTEXT pPrevChainContext)
struct _CMSG_HASHED_ENCODE_INFO CMSG_HASHED_ENCODE_INFO
struct _CERT_STRONG_SIGN_PARA CERT_STRONG_SIGN_PARA
_Must_inspect_result_ BOOL WINAPI CryptVerifyCertificateSignature(_In_opt_ HCRYPTPROV_LEGACY hCryptProv, _In_ DWORD dwCertEncodingType, _In_reads_bytes_(cbEncoded) const BYTE *pbEncoded, _In_ DWORD cbEncoded, _In_ PCERT_PUBLIC_KEY_INFO pPublicKey)
struct _CRYPTOAPI_BLOB CRYPT_INTEGER_BLOB
BOOL WINAPI CertEnumSubjectInSortedCTL(_In_ PCCTL_CONTEXT pCtlContext, _Inout_ void **ppvNextSubject, _Out_opt_ PCRYPT_DER_BLOB pSubjectIdentifier, _Out_opt_ PCRYPT_DER_BLOB pEncodedAttributes)
struct _CRYPT_SMIME_CAPABILITY * PCRYPT_SMIME_CAPABILITY
struct _PUBKEY DHPUBKEY
struct _CMSG_RECIPIENT_ENCRYPTED_KEY_INFO * PCMSG_RECIPIENT_ENCRYPTED_KEY_INFO
struct _CERT_ENCRYPTED_PRIVATE_KEY_INFO CERT_ENCRYPTED_PRIVATE_KEY_INFO
struct _CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO * PCMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO
struct _CMSG_KEY_TRANS_RECIPIENT_INFO CMSG_KEY_TRANS_RECIPIENT_INFO
struct _CERT_ECC_SIGNATURE * PCERT_ECC_SIGNATURE
static const WCHAR CRYPT_OID_REG_FUNC_NAME_VALUE_NAME[]
Definition: wincrypt.h:2529
BOOL WINAPI CertSerializeCertificateStoreElement(_In_ PCCERT_CONTEXT pCertContext, _In_ DWORD dwFlags, _Out_writes_bytes_to_opt_(*pcbElement, *pcbElement) BYTE *pbElement, _Inout_ DWORD *pcbElement)
BOOL WINAPI CertAddEnhancedKeyUsageIdentifier(_In_ PCCERT_CONTEXT pCertContext, _In_ LPCSTR pszUsageIdentifier)
struct _CERT_RDN_ATTR CERT_RDN_ATTR
struct _CERT_PAIR CERT_PAIR
WINADVAPI BOOL WINAPI CryptSignHashW(_In_ HCRYPTHASH hHash, _In_ DWORD dwKeySpec, _In_opt_ LPCWSTR szDescription, _In_ DWORD dwFlags, _Out_writes_bytes_to_opt_(*pdwSigLen, *pdwSigLen) BYTE *pbSignature, _Inout_ DWORD *pdwSigLen)
const CERT_CHAIN_CONTEXT * PCCERT_CHAIN_CONTEXT
Definition: wincrypt.h:935
struct _CERT_CHAIN_PARA CERT_CHAIN_PARA
struct _CERT_POLICY_INFO CERT_POLICY_INFO
struct _CERT_CHAIN_PARA * PCERT_CHAIN_PARA
BOOL WINAPI CryptRegisterOIDInfo(_In_ PCCRYPT_OID_INFO pInfo, _In_ DWORD dwFlags)
void(WINAPI * PFN_CERT_STORE_PROV_CLOSE)(_Inout_opt_ HCERTSTOREPROV hStoreProv, _In_ DWORD dwFlags)
Definition: wincrypt.h:1166
struct _KEY_TYPE_SUBTYPE * PKEY_TYPE_SUBTYPE
struct _CTL_USAGE_MATCH CTL_USAGE_MATCH
WINADVAPI BOOL WINAPI CryptGenRandom(_In_ HCRYPTPROV hProv, _In_ DWORD dwLen, _Inout_updates_bytes_(dwLen) BYTE *pbBuffer)
BOOL WINAPI CryptStringToBinaryA(_In_reads_(cchString) LPCSTR pszString, _In_ DWORD cchString, _In_ DWORD dwFlags, _Out_writes_bytes_to_opt_(*pcbBinary, *pcbBinary) BYTE *pbBinary, _Inout_ DWORD *pcbBinary, _Out_opt_ DWORD *pdwSkip, _Out_opt_ DWORD *pdwFlags)
struct _CERT_ISSUER_SERIAL_NUMBER CERT_ISSUER_SERIAL_NUMBER
struct _CRYPT_SMIME_CAPABILITY CRYPT_SMIME_CAPABILITY
struct _CERT_EXTENSION * PCERT_EXTENSION
struct _RSAPUBKEY RSAPUBKEY
struct _CMSG_KEY_AGREE_RECIPIENT_INFO * PCMSG_KEY_AGREE_RECIPIENT_INFO
struct _CERT_ALT_NAME_ENTRY CERT_ALT_NAME_ENTRY
BOOL WINAPI CertFreeCRLContext(_In_opt_ PCCRL_CONTEXT pCrlContext)
BOOL(WINAPI * PFN_CRYPT_CANCEL_RETRIEVAL)(_In_ DWORD dwFlags, _Inout_opt_ void *pvArg)
Definition: wincrypt.h:1656
BOOL WINAPI CertAddEncodedCertificateToSystemStoreA(_In_ LPCSTR szCertStoreName, _In_reads_bytes_(cbCertEncoded) const BYTE *pbCertEncoded, _In_ DWORD cbCertEncoded)
ULONG_PTR HCRYPTPROV_LEGACY
Definition: wincrypt.h:48
BOOL WINAPI CertStrToNameA(_In_ DWORD dwCertEncodingType, _In_ LPCSTR pszX500, _In_ DWORD dwStrType, _Reserved_ void *pvReserved, _Out_writes_bytes_to_opt_(*pcbEncoded, *pcbEncoded) BYTE *pbEncoded, _Inout_ DWORD *pcbEncoded, _Outptr_opt_result_maybenull_ LPCSTR *ppszError)
struct _CERT_SYSTEM_STORE_RELOCATE_PARA CERT_SYSTEM_STORE_RELOCATE_PARA
struct _CERT_KEY_USAGE_RESTRICTION_INFO CERT_KEY_USAGE_RESTRICTION_INFO
_Reserved_ DWORD _In_ DWORD _Out_ DWORD _Out_writes_bytes_to_opt_ pcbProvName LPSTR _Inout_ DWORD * pcbProvName
Definition: wincrypt.h:4258
BOOL WINAPI PFXExportCertStoreEx(_In_ HCERTSTORE hStore, _Inout_ CRYPT_DATA_BLOB *pPFX, _In_ LPCWSTR szPassword, _In_ void *pvPara, _In_ DWORD dwFlags)
BOOL WINAPI CryptGetOIDFunctionValue(_In_ DWORD dwEncodingType, _In_ LPCSTR pszFuncName, _In_ LPCSTR pszOID, _In_opt_ LPCWSTR pwszValueName, _Out_opt_ DWORD *pdwValueType, _Out_writes_bytes_to_opt_(*pcbValueData, *pcbValueData) BYTE *pbValueData, _Inout_opt_ DWORD *pcbValueData)
struct _PUBKEY KEAPUBKEY
struct _CRYPTOAPI_BLOB CRYPT_DIGEST_BLOB
BOOL WINAPI CertVerifyValidityNesting(_In_ PCERT_INFO pSubjectInfo, _In_ PCERT_INFO pIssuerInfo)
DWORD WINAPI CertRDNValueToStrW(_In_ DWORD dwValueType, _In_ PCERT_RDN_VALUE_BLOB pValue, _Out_writes_to_opt_(csz, return) LPWSTR psz, _In_ DWORD csz)
struct _CRL_ENTRY CRL_ENTRY
_In_ DWORD cbBinary
Definition: wincrypt.h:4503
struct _HTTPSPolicyCallbackData * PSSL_EXTRA_CERT_CHAIN_POLICY_PARA
struct _CRYPT_OID_INFO CRYPT_OID_INFO
struct _CMSG_CMS_RECIPIENT_INFO CMSG_CMS_RECIPIENT_INFO
struct _CERT_CHAIN_POLICY_PARA CERT_CHAIN_POLICY_PARA
struct _CRYPT_KEY_SIGN_MESSAGE_PARA * PCRYPT_KEY_SIGN_MESSAGE_PARA
BOOL WINAPI CertFindCertificateInCRL(_In_ PCCERT_CONTEXT pCert, _In_ PCCRL_CONTEXT pCrlContext, _In_ DWORD dwFlags, _Reserved_ void *pvReserved, _Outptr_result_maybenull_ PCRL_ENTRY *ppCrlEntry)
BOOL WINAPI CryptHashToBeSigned(_In_opt_ HCRYPTPROV_LEGACY hCryptProv, _In_ DWORD dwCertEncodingType, _In_reads_bytes_(cbEncoded) const BYTE *pbEncoded, _In_ DWORD cbEncoded, _Out_writes_bytes_to_opt_(*pcbComputedHash, *pcbComputedHash) BYTE *pbComputedHash, _Inout_ DWORD *pcbComputedHash)
struct _CRYPT_ATTRIBUTES CRYPT_ATTRIBUTES
struct _CRYPTOAPI_BLOB CRYPT_ATTR_BLOB
struct _CRYPTOAPI_BLOB * PCERT_RDN_VALUE_BLOB
Definition: str.c:193
struct _CRYPT_X942_OTHER_INFO * PCRYPT_X942_OTHER_INFO
struct _SCHANNEL_ALG * PSCHANNEL_ALG
void * HCERTSTORE
Definition: wincrypt.h:51
struct _CERT_BASIC_CONSTRAINTS_INFO * PCERT_BASIC_CONSTRAINTS_INFO
_In_ DWORD cbElement
Definition: wincrypt.h:5088
static const WCHAR CERT_TRUST_PUB_SAFER_GROUP_POLICY_REGPATH[]
Definition: wincrypt.h:2415
BOOL WINAPI CryptDecodeMessage(_In_ DWORD dwMsgTypeFlags, _In_opt_ PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara, _In_opt_ PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara, _In_ DWORD dwSignerIndex, _In_reads_bytes_(cbEncodedBlob) const BYTE *pbEncodedBlob, _In_ DWORD cbEncodedBlob, _In_ DWORD dwPrevInnerContentType, _Out_opt_ DWORD *pdwMsgType, _Out_opt_ DWORD *pdwInnerContentType, _Out_writes_bytes_to_opt_(*pcbDecoded, *pcbDecoded) BYTE *pbDecoded, _Inout_opt_ DWORD *pcbDecoded, _Outptr_opt_result_maybenull_ PCCERT_CONTEXT *ppXchgCert, _Outptr_opt_result_maybenull_ PCCERT_CONTEXT *ppSignerCert)
PCCRL_CONTEXT WINAPI CertEnumCRLsInStore(_In_ HCERTSTORE hCertStore, _In_opt_ PCCRL_CONTEXT pPrevCrlContext)
WINADVAPI BOOL WINAPI CryptVerifySignatureA(_In_ HCRYPTHASH hHash, _In_reads_bytes_(dwSigLen) CONST BYTE *pbSignature, _In_ DWORD dwSigLen, _In_ HCRYPTKEY hPubKey, _In_opt_ LPCSTR szDescription, _In_ DWORD dwFlags)
ULONG_PTR HCRYPTPROV
Definition: wincrypt.h:46
VOID(WINAPI * PFN_CRYPT_FREE)(_In_ LPVOID pv)
Definition: wincrypt.h:1132
_Reserved_ DWORD _In_ DWORD _Out_ DWORD _Out_writes_bytes_to_opt_ pcbTypeName LPSTR szTypeName
Definition: wincrypt.h:4283
struct _CRL_FIND_ISSUED_FOR_PARA CRL_FIND_ISSUED_FOR_PARA
_In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_opt_ HCERTSTORE _In_ PCERT_CHAIN_PARA pChainPara
Definition: wincrypt.h:4839
_In_ HCRYPTHASH _In_ BOOL Final
Definition: wincrypt.h:4199
struct _CRYPT_SMIME_CAPABILITIES CRYPT_SMIME_CAPABILITIES
struct _CTL_VERIFY_USAGE_STATUS * PCTL_VERIFY_USAGE_STATUS
_In_ DWORD _In_opt_ LPCWSTR _In_ DWORD _Outptr_ void ** ppvFuncAddr
Definition: wincrypt.h:4637
_In_opt_ LPCSTR _In_ DWORD dwRetrievalFlags
Definition: wincrypt.h:6115
WINADVAPI BOOL WINAPI CryptSetProviderW(_In_ LPCWSTR, _In_ DWORD)
struct _PUBKEYVER3 DSSPUBKEY_VER3
struct _CERT_GENERAL_SUBTREE CERT_GENERAL_SUBTREE
struct _CERT_X942_DH_PARAMETERS * PCERT_X942_DH_PARAMETERS
struct _CERT_PUBLIC_KEY_INFO CERT_PUBLIC_KEY_INFO
struct _CERT_EXTENSION CERT_EXTENSION
WINADVAPI BOOL WINAPI CryptDeriveKey(_In_ HCRYPTPROV, _In_ ALG_ID, _In_ HCRYPTHASH, _In_ DWORD, _Out_ HCRYPTKEY *)
struct _CERT_CRL_CONTEXT_PAIR CERT_CRL_CONTEXT_PAIR
DWORD WINAPI CryptMsgCalculateEncodedLength(_In_ DWORD dwMsgEncodingType, _In_ DWORD dwFlags, _In_ DWORD dwMsgType, _In_ void const *pvMsgEncodeInfo, _In_opt_ LPSTR pszInnerContentObjID, _In_ DWORD cbData)
struct _CRYPT_BIT_BLOB * PCRYPT_BIT_BLOB
struct _CTL_VERIFY_USAGE_PARA CTL_VERIFY_USAGE_PARA
_In_ DWORD _In_ DWORD _In_ DWORD _Outptr_opt_ PCCTL_CONTEXT * ppCtlContext
Definition: wincrypt.h:5080
_In_ DWORD dwPropId
Definition: wincrypt.h:4948
struct _KEY_TYPE_SUBTYPE KEY_TYPE_SUBTYPE
LONG WINAPI CertVerifyCRLTimeValidity(_In_opt_ LPFILETIME pTimeToVerify, _In_ PCRL_INFO pCrlInfo)
BOOL WINAPI CertFindSubjectInSortedCTL(_In_ PCRYPT_DATA_BLOB pSubjectIdentifier, _In_ PCCTL_CONTEXT pCtlContext, _In_ DWORD dwFlags, _Reserved_ void *pvReserved, _Out_opt_ PCRYPT_DER_BLOB pEncodedAttributes)
struct _CRYPT_SEQUENCE_OF_ANY CRYPT_SEQUENCE_OF_ANY
struct _CERT_NAME_VALUE CERT_NAME_VALUE
struct _CMSG_SIGNER_ENCODE_INFO * PCMSG_SIGNER_ENCODE_INFO
struct _CRYPT_DECODE_PARA CRYPT_DECODE_PARA
struct _CRYPTOAPI_BLOB CRYPT_DATA_BLOB
struct _CERT_REQUEST_INFO * PCERT_REQUEST_INFO
struct _CRYPT_ALGORITHM_IDENTIFIER CRYPT_ALGORITHM_IDENTIFIER
DWORD WINAPI CertNameToStrW(_In_ DWORD dwCertEncodingType, _In_ PCERT_NAME_BLOB pName, _In_ DWORD dwStrType, _Out_writes_to_opt_(csz, return) LPWSTR psz, _In_ DWORD csz)
const CERT_STORE_PROV_FIND_INFO * PCCERT_STORE_PROV_FIND_INFO
Definition: wincrypt.h:1272
struct _CTL_VERIFY_USAGE_PARA * PCTL_VERIFY_USAGE_PARA
BOOL WINAPI CertCloseStore(_In_opt_ HCERTSTORE hCertStore, _In_ DWORD dwFlags)
struct _CERT_KEY_CONTEXT * PCERT_KEY_CONTEXT
struct _CRYPT_ENCODE_PARA CRYPT_ENCODE_PARA
BOOL WINAPI CryptFlushTimeValidObject(_In_ LPCSTR pszFlushTimeValidOid, _In_ void *pvPara, _In_ PCCERT_CONTEXT pIssuer, _In_ DWORD dwFlags, _Reserved_ void *pvReserved)
struct _CTL_INFO CTL_INFO
struct _CMSG_CMS_SIGNER_INFO * PCMSG_CMS_SIGNER_INFO
BOOL(WINAPI * PFN_CERT_STORE_PROV_WRITE_CRL)(_Inout_ HCERTSTOREPROV hStoreProv, _In_ PCCRL_CONTEXT pCrlContext, _In_ DWORD dwFlags)
Definition: wincrypt.h:1209
_In_ DWORD _In_ DWORD _Outptr_opt_ PCCERT_CONTEXT _Inout_opt_ DWORD * pdwSignerIndex
Definition: wincrypt.h:5777
_In_ PCCERT_CONTEXT _In_ DWORD dwAddDisposition
Definition: wincrypt.h:4984
struct _CRYPT_BLOB_ARRAY * PCRYPT_BLOB_ARRAY
BOOL WINAPI CertDeleteCRLFromStore(_In_ PCCRL_CONTEXT pCrlContext)
PCCRL_CONTEXT WINAPI CertDuplicateCRLContext(_In_opt_ PCCRL_CONTEXT pCrlContext)
PCCERT_CONTEXT WINAPI CertFindCertificateInStore(_In_ HCERTSTORE hCertStore, _In_ DWORD dwCertEncodingType, _In_ DWORD dwFindFlags, _In_ DWORD dwFindType, _In_opt_ const void *pvFindPara, _In_opt_ PCCERT_CONTEXT pPrevCertContext)
BOOL(WINAPI * PFN_CERT_STORE_PROV_DELETE_CTL)(_Inout_ HCERTSTOREPROV hStoreProv, _In_ PCCTL_CONTEXT pCtlContext, _In_ DWORD dwFlags)
Definition: wincrypt.h:1244
static const WCHAR CERT_PHYSICAL_STORE_DS_USER_CERTIFICATE_NAME[]
Definition: wincrypt.h:2627
_Out_ int * cNumOIDs
Definition: wincrypt.h:5303
struct _CRYPTOAPI_BLOB * PCERT_BLOB
struct _CRL_CONTEXT CRL_CONTEXT
struct _CERT_REVOCATION_PARA * PCERT_REVOCATION_PARA
DWORD WINAPI CertNameToStrA(_In_ DWORD dwCertEncodingType, _In_ PCERT_NAME_BLOB pName, _In_ DWORD dwStrType, _Out_writes_to_opt_(csz, return) LPSTR psz, _In_ DWORD csz)
static const WCHAR MS_STRONG_PROV_W[]
Definition: wincrypt.h:1896
HANDLE HCERTCHAINENGINE
Definition: wincrypt.h:3612
struct _CERT_PHYSICAL_STORE_INFO CERT_PHYSICAL_STORE_INFO
ULONG_PTR HCRYPTHASH
Definition: wincrypt.h:50
struct _CERT_NAME_INFO CERT_NAME_INFO
void * HCRYPTMSG
Definition: wincrypt.h:52
struct _CERT_POLICY95_QUALIFIER1 CERT_POLICY95_QUALIFIER1
DWORD WINAPI CertEnumCRLContextProperties(_In_ PCCRL_CONTEXT pCRLContext, _In_ DWORD dwPropId)
struct _HTTPSPolicyCallbackData SSL_EXTRA_CERT_CHAIN_POLICY_PARA
BOOL WINAPI CryptFreeOIDFunctionAddress(_In_ HCRYPTOIDFUNCADDR hFuncAddr, _In_ DWORD dwFlags)
_In_ void _In_ PCCERT_CONTEXT pIssuer
Definition: wincrypt.h:6078
struct _CERT_ACCESS_DESCRIPTION * PCERT_ACCESS_DESCRIPTION
WINADVAPI BOOL WINAPI CryptVerifySignatureW(_In_ HCRYPTHASH hHash, _In_reads_bytes_(dwSigLen) CONST BYTE *pbSignature, _In_ DWORD dwSigLen, _In_ HCRYPTKEY hPubKey, _In_opt_ LPCWSTR szDescription, _In_ DWORD dwFlags)
struct _CRYPT_RC2_CBC_PARAMETERS CRYPT_RC2_CBC_PARAMETERS
_Out_ int _Out_writes_bytes_to_opt_ pcbOIDs LPSTR * rghOIDs
Definition: wincrypt.h:5304
struct _AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS
#define CRYPT_X942_KEY_LENGTH_BYTE_LENGTH
Definition: wincrypt.h:665
static const WCHAR CRYPT_OID_INFO_ECC_WRAP_PARAMETERS_ALGORITHM[]
Definition: wincrypt.h:1398
WINADVAPI BOOL WINAPI CryptHashSessionKey(_In_ HCRYPTHASH, _In_ HCRYPTKEY, _In_ DWORD)
struct _CRL_CONTEXT * PCRL_CONTEXT
struct _CERT_SYSTEM_STORE_INFO CERT_SYSTEM_STORE_INFO
struct _CERT_DSS_PARAMETERS CERT_DSS_PARAMETERS
_In_ HCRYPTHASH _In_ BOOL _In_ DWORD _Inout_ DWORD _In_ DWORD dwBufLen
Definition: wincrypt.h:4246
struct _CERT_TRUST_LIST_INFO CERT_TRUST_LIST_INFO
_In_ DWORD _In_ DWORD _In_ DWORD _In_ DWORD _Out_opt_ DWORD _Outptr_opt_ const void ** ppvContext
Definition: wincrypt.h:5093
struct _CRYPTOAPI_BLOB * PCRYPT_OBJID_BLOB
struct _CERT_PRIVATE_KEY_VALIDITY * PCERT_PRIVATE_KEY_VALIDITY
struct _CRL_DIST_POINT * PCRL_DIST_POINT
struct _CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA * PCMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA
struct _CERT_POLICY_QUALIFIER_NOTICE_REFERENCE CERT_POLICY_QUALIFIER_NOTICE_REFERENCE
struct _CRYPT_ENROLLMENT_NAME_VALUE_PAIR * PCRYPT_ENROLLMENT_NAME_VALUE_PAIR
struct _CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO * PCMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO
struct _CERT_POLICY_MAPPING * PCERT_POLICY_MAPPING
void(WINAPI * PFN_FREE_ENCODED_OBJECT_FUNC)(_In_opt_ LPCSTR pszObjectOid, _Inout_ PCRYPT_BLOB_ARRAY pObject, _Inout_opt_ void *pvFreeContext)
Definition: wincrypt.h:1604
BOOL WINAPI CryptGetAsyncParam(_In_ HCRYPTASYNC hAsync, _In_ LPSTR pszParamOid, _Outptr_opt_result_maybenull_ LPVOID *ppvParam, _Outptr_opt_result_maybenull_ __callback PFN_CRYPT_ASYNC_PARAM_FREE_FUNC *ppfnFree)
struct _CTL_FIND_USAGE_PARA * PCTL_FIND_USAGE_PARA
struct _CERT_CHAIN CERT_CHAIN
struct _CERT_INFO * PCERT_INFO
struct _CROSS_CERT_DIST_POINTS_INFO CROSS_CERT_DIST_POINTS_INFO
_In_ PCCTL_CONTEXT pStoreCtlContext
Definition: wincrypt.h:1233
struct _CRYPT_ATTRIBUTES * PCRYPT_ATTRIBUTES
struct _PROV_ENUMALGS_EX PROV_ENUMALGS_EX
_In_ DWORD cSignerStore
Definition: wincrypt.h:5773
BOOL WINAPI CertVerifyCTLUsage(_In_ DWORD dwEncodingType, _In_ DWORD dwSubjectType, _In_ void *pvSubject, _In_ PCTL_USAGE pSubjectUsage, _In_ DWORD dwFlags, _In_opt_ PCTL_VERIFY_USAGE_PARA pVerifyUsagePara, _Inout_ PCTL_VERIFY_USAGE_STATUS pVerifyUsageStatus)
struct _CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO
struct _CRYPT_ENCODE_PARA * PCRYPT_ENCODE_PARA
void * HCRYPTDEFAULTCONTEXT
Definition: wincrypt.h:56
struct _CRYPTOAPI_BLOB * PCRYPT_DATA_BLOB
static const WCHAR MS_ENH_RSA_AES_PROV_XP_W[]
Definition: wincrypt.h:2027
static const WCHAR CERT_PHYSICAL_STORE_AUTH_ROOT_NAME[]
Definition: wincrypt.h:2634
struct _CTL_FIND_SUBJECT_PARA CTL_FIND_SUBJECT_PARA
struct _CRYPT_OID_INFO * PCRYPT_OID_INFO
struct _CRYPT_ALGORITHM_IDENTIFIER * PCRYPT_ALGORITHM_IDENTIFIER
_In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_opt_ HCERTSTORE _In_ PCERT_CHAIN_PARA _In_ DWORD _Reserved_ LPVOID _Out_ PCCERT_CHAIN_CONTEXT * ppChainContext
Definition: wincrypt.h:4842
struct _CERT_AUTHORITY_KEY_ID2_INFO CERT_AUTHORITY_KEY_ID2_INFO
HCERTSTORE WINAPI CertOpenSystemStoreA(_In_opt_ HCRYPTPROV_LEGACY hProv, _In_ LPCSTR szSubsystemProtocol)
struct _CMSG_KEY_TRANS_RECIPIENT_INFO * PCMSG_KEY_TRANS_RECIPIENT_INFO
struct _CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA
BOOL(WINAPI * PFN_CERT_ENUM_SYSTEM_STORE)(_In_ const void *pvSystemStore, _In_ DWORD dwFlags, _In_ PCERT_SYSTEM_STORE_INFO pStoreInfo, _Reserved_ void *pvReserved, _Inout_opt_ void *pvArg)
Definition: wincrypt.h:1114
BOOL WINAPI CryptCancelAsyncRetrieval(_In_opt_ HCRYPTASYNC hAsyncRetrieval)
struct _PROV_ENUMALGS PROV_ENUMALGS
BOOL WINAPI CertRegisterPhysicalStore(_In_ const void *pvSystemStore, _In_ DWORD dwFlags, _In_ LPCWSTR pwszStoreName, _In_ PCERT_PHYSICAL_STORE_INFO pStoreInfo, _Reserved_ void *pvReserved)
void * HCRYPTOIDFUNCSET
Definition: wincrypt.h:54
BOOL(WINAPI * PFN_CERT_ENUM_SYSTEM_STORE_LOCATION)(_In_ LPCWSTR pwszStoreLocation, _In_ DWORD dwFlags, _Reserved_ void *pvReserved, _Inout_opt_ void *pvArg)
Definition: wincrypt.h:1107
DWORD WINAPI CertRDNValueToStrA(_In_ DWORD dwValueType, _In_ PCERT_RDN_VALUE_BLOB pValue, _Out_writes_to_opt_(csz, return) LPSTR psz, _In_ DWORD csz)
_In_ DWORD _In_ DWORD _Out_writes_to_opt_ pcchString LPSTR pszString
Definition: wincrypt.h:4505
BOOL WINAPI CryptExportPublicKeyInfo(_In_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, _In_opt_ DWORD dwKeySpec, _In_ DWORD dwCertEncodingType, _Out_writes_bytes_to_opt_(*pcbInfo, *pcbInfo) PCERT_PUBLIC_KEY_INFO pInfo, _Inout_ DWORD *pcbInfo)
_In_ PCCRL_CONTEXT pStoreCrlContext
Definition: wincrypt.h:1204
BOOL WINAPI CryptGetObjectUrl(_In_ LPCSTR pszUrlOid, _In_ LPVOID pvPara, _In_ DWORD dwFlags, _Out_writes_bytes_to_opt_(*pcbUrlArray, *pcbUrlArray) PCRYPT_URL_ARRAY pUrlArray, _Inout_ DWORD *pcbUrlArray, _Out_writes_bytes_to_opt_(*pcbUrlInfo, *pcbUrlInfo) PCRYPT_URL_INFO pUrlInfo, _Inout_opt_ DWORD *pcbUrlInfo, _Reserved_ LPVOID pvReserved)
BOOL WINAPI CryptUnregisterDefaultOIDFunction(_In_ DWORD, _In_ LPCSTR, _In_ LPCWSTR)
_In_ DWORD dwEncodingType
Definition: wincrypt.h:4625
BOOL WINAPI CryptMsgClose(_In_opt_ HCRYPTMSG hCryptMsg)
BOOL WINAPI CertSetEnhancedKeyUsage(_In_ PCCERT_CONTEXT pCertContext, _In_opt_ PCERT_ENHKEY_USAGE pUsage)
static const WCHAR CRYPT_OID_INFO_NO_PARAMETERS_ALGORITHM[]
Definition: wincrypt.h:1399
struct _CRYPT_DECRYPT_MESSAGE_PARA CRYPT_DECRYPT_MESSAGE_PARA
struct _AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA
struct _CERT_SIGNED_CONTENT_INFO CERT_SIGNED_CONTENT_INFO
struct _CTL_USAGE CERT_ENHKEY_USAGE
struct _CERT_POLICY95_QUALIFIER1 * PCERT_POLICY95_QUALIFIER1
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1176
struct _CTL_VERIFY_USAGE_STATUS CTL_VERIFY_USAGE_STATUS
PCCTL_CONTEXT WINAPI CertCreateCTLContext(_In_ DWORD dwMsgAndCertEncodingType, _In_reads_bytes_(cbCtlEncoded) const BYTE *pbCtlEncoded, _In_ DWORD cbCtlEncoded)
const CRYPT_OID_INFO CCRYPT_OID_INFO
Definition: wincrypt.h:1418
PCCTL_CONTEXT WINAPI CertFindCTLInStore(_In_ HCERTSTORE hCertStore, _In_ DWORD dwMsgAndCertEncodingType, _In_ DWORD dwFindFlags, _In_ DWORD dwFindType, _In_opt_ const void *pvFindPara, _In_opt_ PCCTL_CONTEXT pPrevCtlContext)
struct _CERT_STRONG_SIGN_PARA * PCERT_STRONG_SIGN_PARA
static const WCHAR CRYPT_OID_INFO_HASH_PARAMETERS_ALGORITHM[]
Definition: wincrypt.h:1393
struct _CRYPT_URL_ARRAY CRYPT_URL_ARRAY
struct _CRYPT_ENROLLMENT_NAME_VALUE_PAIR CRYPT_ENROLLMENT_NAME_VALUE_PAIR
struct _CTL_USAGE_MATCH * PCTL_USAGE_MATCH
BOOL WINAPI CryptMsgGetParam(_In_ HCRYPTMSG hCryptMsg, _In_ DWORD dwParamType, _In_ DWORD dwIndex, _Out_writes_bytes_to_opt_(*pcbData, *pcbData) void *pvData, _Inout_ DWORD *pcbData)
static const WCHAR CRYPT_OID_INFO_MGF1_PARAMETERS_ALGORITHM[]
Definition: wincrypt.h:1395
BOOL(WINAPI * PFN_CERT_STORE_PROV_DELETE_CERT)(_Inout_ HCERTSTOREPROV hStoreProv, _In_ PCCERT_CONTEXT pCertContext, _In_ DWORD dwFlags)
Definition: wincrypt.h:1186
BOOL(WINAPI * PFN_CERT_STORE_PROV_SET_CRL_PROPERTY)(_Inout_ HCERTSTOREPROV hStoreProv, _In_ PCCRL_CONTEXT pCrlContext, _In_ DWORD dwPropId, _In_ DWORD dwFlags, _In_opt_ const void *pvData)
Definition: wincrypt.h:1221
struct _CERT_KEY_ATTRIBUTES_INFO CERT_KEY_ATTRIBUTES_INFO
PCCTL_CONTEXT WINAPI CertDuplicateCTLContext(_In_opt_ PCCTL_CONTEXT pCtlContext)
WINADVAPI BOOL WINAPI CryptDestroyKey(_In_ HCRYPTKEY)
struct _CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY * PCRYPT_CONTENT_INFO_SEQUENCE_OF_ANY
BOOL WINAPI CertDeleteCTLFromStore(_In_ PCCTL_CONTEXT pCtlContext)
BOOL WINAPI CryptQueryObject(_In_ DWORD dwObjectType, _In_ const void *pvObject, _In_ DWORD dwExpectedContentTypeFlags, _In_ DWORD dwExpectedFormatTypeFlags, _In_ DWORD dwFlags, _Out_opt_ DWORD *pdwMsgAndCertEncodingType, _Out_opt_ DWORD *pdwContentType, _Out_opt_ DWORD *pdwFormatType, _Out_opt_ HCERTSTORE *phCertStore, _Out_opt_ HCRYPTMSG *phMsg, _Outptr_opt_result_maybenull_ const void **ppvContext)
_In_ DWORD _In_ DWORD _Outptr_opt_ PCCERT_CONTEXT * ppSigner
Definition: wincrypt.h:5776
struct _CERT_PAIR * PCERT_PAIR
HCRYPTMSG WINAPI CryptMsgOpenToDecode(_In_ DWORD dwMsgEncodingType, _In_ DWORD dwFlags, _In_ DWORD dwMsgType, _In_opt_ HCRYPTPROV_LEGACY hCryptProv, _Reserved_ PCERT_INFO pRecipientInfo, _In_opt_ PCMSG_STREAM_INFO pStreamInfo)
WINADVAPI BOOL WINAPI CryptAcquireContextW(_Out_ HCRYPTPROV *, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR, _In_ DWORD, _In_ DWORD)
struct _CERT_POLICY_ID * PCERT_POLICY_ID
struct _AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA * PAUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA
struct _CERT_X942_DH_PARAMETERS CERT_X942_DH_PARAMETERS
HRESULT WINAPI FindCertsByIssuer(_Out_writes_bytes_to_opt_(*pcbCertChains, *pcbCertChains) PCERT_CHAIN pCertChains, _Inout_ DWORD *pcbCertChains, _Out_ DWORD *pcCertChains, _In_reads_bytes_opt_(cbEncodedIssuerName) BYTE *pbEncodedIssuerName, _In_ DWORD cbEncodedIssuerName, _In_opt_ LPCWSTR pwszPurpose, _In_ DWORD dwKeySpec)
_In_opt_ LPCSTR pszObjectOid
Definition: wincrypt.h:6114
_Reserved_ DWORD _In_ DWORD _Out_ DWORD * pdwProvType
Definition: wincrypt.h:4256
struct _CERT_CREATE_CONTEXT_PARA CERT_CREATE_CONTEXT_PARA
struct _CRYPTOAPI_BLOB CRYPT_HASH_BLOB
struct _CERT_SYSTEM_STORE_RELOCATE_PARA * PCERT_SYSTEM_STORE_RELOCATE_PARA
struct _CERT_REVOCATION_CRL_INFO * PCERT_REVOCATION_CRL_INFO
struct _CMSG_CONTENT_ENCRYPT_INFO * PCMSG_CONTENT_ENCRYPT_INFO
DWORD WINAPI CertOIDToAlgId(_In_ LPCSTR pszObjId)
BOOL WINAPI CryptVerifyMessageSignature(_In_ PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara, _In_ DWORD dwSignerIndex, _In_reads_bytes_(cbSignedBlob) const BYTE *pbSignedBlob, _In_ DWORD cbSignedBlob, _Out_writes_bytes_to_opt_(*pcbDecoded, *pcbDecoded) BYTE *pbDecoded, _Inout_opt_ DWORD *pcbDecoded, _Outptr_opt_result_maybenull_ PCCERT_CONTEXT *ppSignerCert)
struct _CERT_EXTENSIONS * PCERT_EXTENSIONS
WINADVAPI BOOL WINAPI CryptGetKeyParam(_In_ HCRYPTKEY hKey, _In_ DWORD dwParam, _Out_writes_bytes_to_opt_(*pdwDataLen, *pdwDataLen) BYTE *pbData, _Inout_ DWORD *pdwDataLen, _In_ DWORD dwFlags)
BOOL WINAPI CryptFindCertificateKeyProvInfo(_In_ PCCERT_CONTEXT pCert, _In_ DWORD dwFlags, _Reserved_ void *pvReserved)
BOOL WINAPI CryptHashPublicKeyInfo(_In_opt_ HCRYPTPROV_LEGACY hCryptProv, _In_ ALG_ID Algid, _In_ DWORD dwFlags, _In_ DWORD dwCertEncodingType, _In_ PCERT_PUBLIC_KEY_INFO pInfo, _Out_writes_bytes_to_opt_(*pcbComputedHash, *pcbComputedHash) BYTE *pbComputedHash, _Inout_ DWORD *pcbComputedHash)
struct _CRYPT_PASSWORD_CREDENTIALSA * PCRYPT_PASSWORD_CREDENTIALSA
BOOL WINAPI CryptInstallDefaultContext(_In_ HCRYPTPROV hCryptProv, _In_ DWORD dwDefaultType, _In_opt_ const void *pvDefaultPara, _In_ DWORD dwFlags, _Reserved_ void *pvReserved, _Out_ HCRYPTDEFAULTCONTEXT *phDefaultContext)
BOOL(WINAPI * PFN_CERT_STORE_PROV_GET_CTL_PROPERTY)(_Inout_ HCERTSTOREPROV hStoreProv, _In_ PCCTL_CONTEXT pCtlContext, _In_ DWORD dwPropId, _In_ DWORD dwFlags, _Out_writes_bytes_to_opt_(*pcbData, *pcbData) void *pvData, _Inout_ DWORD *pcbData)
Definition: wincrypt.h:1340
BOOL WINAPI CryptDecodeObjectEx(_In_ DWORD dwCertEncodingType, _In_ LPCSTR lpszStructType, _In_reads_bytes_(cbEncoded) const BYTE *pbEncoded, _In_ DWORD cbEncoded, _In_ DWORD dwFlags, _In_opt_ PCRYPT_DECODE_PARA pDecodePara, _Out_opt_ void *pvStructInfo, _Inout_ DWORD *pcbStructInfo)
struct _CPS_URLS CPS_URLS
HCRYPTMSG WINAPI CryptMsgOpenToEncode(_In_ DWORD dwMsgEncodingType, _In_ DWORD dwFlags, _In_ DWORD dwMsgType, _In_ void const *pvMsgEncodeInfo, _In_opt_ LPSTR pszInnerContentObjID, _In_opt_ PCMSG_STREAM_INFO pStreamInfo)
struct _CRYPT_SIGN_MESSAGE_PARA CRYPT_SIGN_MESSAGE_PARA
struct _AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS * PAUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS
BOOL WINAPI CertGetCRLContextProperty(_In_ PCCRL_CONTEXT pCrlContext, _In_ DWORD dwPropId, _Out_writes_bytes_to_opt_(*pcbData, *pcbData) void *pvData, _Inout_ DWORD *pcbData)
BOOL WINAPI CryptInstallOIDFunctionAddress(_In_opt_ HMODULE hModule, _In_ DWORD dwEncodingType, _In_ LPCSTR pszFuncName, _In_ DWORD cFuncEntry, _In_reads_(cFuncEntry) const CRYPT_OID_FUNC_ENTRY rgFuncEntry[], _In_ DWORD dwFlags)
_In_ PCCTL_CONTEXT _In_ DWORD _Outptr_ PCCTL_CONTEXT * ppProvCtlContext
Definition: wincrypt.h:1235
struct _CERT_STRONG_SIGN_SERIALIZED_INFO * PCERT_STRONG_SIGN_SERIALIZED_INFO
struct _CRL_DIST_POINT CRL_DIST_POINT
_In_ DWORD _In_ DWORD cbCtlEncoded
Definition: wincrypt.h:5078
WINADVAPI BOOL WINAPI CryptHashData(_In_ HCRYPTHASH hHash, _In_reads_bytes_(dwDataLen) CONST BYTE *pbData, _In_ DWORD dwDataLen, _In_ DWORD dwFlags)
WINADVAPI BOOL WINAPI CryptDuplicateKey(_In_ HCRYPTKEY, _Reserved_ DWORD *, _In_ DWORD, _Out_ HCRYPTKEY *)
PCCERT_CONTEXT WINAPI CertEnumCertificatesInStore(_In_ HCERTSTORE hCertStore, _In_opt_ PCCERT_CONTEXT pPrev)
struct _CERT_GENERAL_SUBTREE * PCERT_GENERAL_SUBTREE
_In_ PCCTL_CONTEXT pCtlContext
Definition: wincrypt.h:5001
struct _CERT_POLICY_ID CERT_POLICY_ID
struct _VTableProvStruc * PVTableProvStruc
struct _CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO * PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO
_In_ PCCERT_CONTEXT _In_opt_ LPFILETIME pTime
Definition: wincrypt.h:4837
static const WCHAR CERT_TRUST_PUB_AUTHENTICODE_FLAGS_VALUE_NAME[]
Definition: wincrypt.h:2440
BOOL WINAPI CertCompareCertificateName(_In_ DWORD dwCertEncodingType, _In_ PCERT_NAME_BLOB pCertName1, _In_ PCERT_NAME_BLOB pCertName2)
VOID WINAPI CertFreeCertificateChain(_In_ PCCERT_CHAIN_CONTEXT pChainContext)
const CERT_CRL_CONTEXT_PAIR * PCCERT_CRL_CONTEXT_PAIR
Definition: wincrypt.h:1665
struct _CRYPT_PASSWORD_CREDENTIALSA CRYPT_PASSWORD_CREDENTIALSA
struct _CRYPTOAPI_BLOB * PDATA_BLOB
struct _CRYPT_VERIFY_MESSAGE_PARA CRYPT_VERIFY_MESSAGE_PARA
struct _CERT_ALT_NAME_INFO * PCERT_ALT_NAME_INFO
PCCRL_CONTEXT WINAPI CertCreateCRLContext(_In_ DWORD dwCertEncodingType, _In_reads_bytes_(cbCrlEncoded) const BYTE *pbCrlEncoded, _In_ DWORD cbCrlEncoded)
BOOL WINAPI CryptUnprotectData(DATA_BLOB *pDataIn, LPWSTR *ppszDataDescr, DATA_BLOB *pOptionalEntropy, PVOID pvReserved, CRYPTPROTECT_PROMPTSTRUCT *pPromptStruct, DWORD dwFlags, DATA_BLOB *pDataOut)
Definition: protectdata.c:990
PCCERT_CONTEXT WINAPI CertDuplicateCertificateContext(_In_opt_ PCCERT_CONTEXT pCertContext)
_Out_ HCERTCHAINENGINE * phChainEngine
Definition: wincrypt.h:4825
_In_ DWORD dwCertEncodingType
Definition: wincrypt.h:5037
static const WCHAR MS_DEF_RSA_SIG_PROV_W[]
Definition: wincrypt.h:1910
struct _CERT_CHAIN_ENGINE_CONFIG CERT_CHAIN_ENGINE_CONFIG
WINADVAPI BOOL WINAPI CryptDestroyHash(_In_ HCRYPTHASH)
struct _CRYPT_RETRIEVE_AUX_INFO CRYPT_RETRIEVE_AUX_INFO
BOOL(WINAPI * PFN_CRYPT_ENUM_OID_INFO)(_In_ PCCRYPT_OID_INFO pInfo, _Inout_opt_ void *pvArg)
Definition: wincrypt.h:1421
VOID WINAPI CertFreeCertificateChainEngine(_In_opt_ HCERTCHAINENGINE hChainEngine)
BOOL WINAPI CryptUninstallDefaultContext(_In_opt_ HCRYPTDEFAULTCONTEXT hDefaultContext, _In_ DWORD dwFlags, _Reserved_ void *pvReserved)
struct _HMAC_INFO * PHMAC_INFO
struct _CMSG_CMS_RECIPIENT_INFO * PCMSG_CMS_RECIPIENT_INFO
struct _SCHANNEL_ALG SCHANNEL_ALG
BOOL WINAPI CryptMsgEncodeAndSignCTL(_In_ DWORD dwMsgEncodingType, _In_ PCTL_INFO pCtlInfo, _In_ PCMSG_SIGNED_ENCODE_INFO pSignInfo, _In_ DWORD dwFlags, _Out_writes_bytes_to_opt_(*pcbEncoded, *pcbEncoded) BYTE *pbEncoded, _Inout_ DWORD *pcbEncoded)
struct _CERT_POLICY_INFO * PCERT_POLICY_INFO
struct _CRL_ISSUING_DIST_POINT * PCRL_ISSUING_DIST_POINT
struct _CMSG_SIGNER_INFO CMSG_SIGNER_INFO
PCCERT_CONTEXT WINAPI CertCreateCertificateContext(_In_ DWORD dwCertEncodingType, _In_reads_bytes_(cbCertEncoded) const BYTE *pbCertEncoded, _In_ DWORD cbCertEncoded)
static const WCHAR MS_DEF_PROV_W[]
Definition: wincrypt.h:1868
struct _CRYPT_KEY_PROV_PARAM * PCRYPT_KEY_PROV_PARAM
struct _PUBLICKEYSTRUC PUBLICKEYSTRUC
BOOL WINAPI CryptStringToBinaryW(_In_reads_(cchString) LPCWSTR pszString, _In_ DWORD cchString, _In_ DWORD dwFlags, _Out_writes_bytes_to_opt_(*pcbBinary, *pcbBinary) BYTE *pbBinary, _Inout_ DWORD *pcbBinary, _Out_opt_ DWORD *pdwSkip, _Out_opt_ DWORD *pdwFlags)
struct _CERT_NAME_VALUE * PCERT_NAME_VALUE
_In_ DWORD _In_ DWORD _In_ DWORD _In_ DWORD dwContextTypeFlags
Definition: wincrypt.h:5091
struct _CERT_AUTHORITY_KEY_ID2_INFO * PCERT_AUTHORITY_KEY_ID2_INFO
BOOL WINAPI CertSetCertificateContextProperty(_In_ PCCERT_CONTEXT pCertContext, _In_ DWORD dwPropId, _In_ DWORD dwFlags, _In_opt_ const void *pvData)
struct _CERT_KEY_USAGE_RESTRICTION_INFO * PCERT_KEY_USAGE_RESTRICTION_INFO
HCERTSTORE WINAPI PFXImportCertStore(_In_ CRYPT_DATA_BLOB *pPFX, _In_ LPCWSTR szPassword, _In_ DWORD dwFlags)
struct _CERT_REVOCATION_PARA CERT_REVOCATION_PARA
_In_ void * pvPara
Definition: wincrypt.h:6077
BOOL WINAPI CryptSignAndEncryptMessage(_In_ PCRYPT_SIGN_MESSAGE_PARA pSignPara, _In_ PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara, _In_ DWORD cRecipientCert, _In_reads_(cRecipientCert) PCCERT_CONTEXT rgpRecipientCert[], _In_reads_bytes_(cbToBeSignedAndEncrypted) const BYTE *pbToBeSignedAndEncrypted, _In_ DWORD cbToBeSignedAndEncrypted, _Out_writes_bytes_to_opt_(*pcbSignedAndEncryptedBlob, *pcbSignedAndEncryptedBlob) BYTE *pbSignedAndEncryptedBlob, _Inout_ DWORD *pcbSignedAndEncryptedBlob)
BOOL WINAPI CryptSignMessage(_In_ PCRYPT_SIGN_MESSAGE_PARA pSignPara, _In_ BOOL fDetachedSignature, _In_ DWORD cToBeSigned, _In_reads_opt_(cToBeSigned) const BYTE *rgpbToBeSigned[], _In_reads_(cToBeSigned) DWORD rgcbToBeSigned[], _Out_writes_bytes_to_opt_(*pcbSignedBlob, *pcbSignedBlob) BYTE *pbSignedBlob, _Inout_ DWORD *pcbSignedBlob)
struct _CRYPTOAPI_BLOB CRL_BLOB
VOID WINAPI CryptMemFree(_In_opt_ LPVOID pv)
BOOL WINAPI CryptFormatObject(_In_ DWORD dwCertEncodingType, _In_ DWORD dwFormatType, _In_ DWORD dwFormatStrType, _In_opt_ void *pFormatStruct, _In_opt_ LPCSTR lpszStructType, _In_reads_bytes_(cbEncoded) const BYTE *pbEncoded, _In_ DWORD cbEncoded, _At_((WCHAR *) pbFormat, _Out_writes_bytes_to_opt_(*pcbFormat, *pcbFormat)) void *pbFormat, _Inout_ DWORD *pcbFormat)
struct _CERT_KEYGEN_REQUEST_INFO * PCERT_KEYGEN_REQUEST_INFO
struct _CERT_DH_PARAMETERS CERT_DH_PARAMETERS
BOOL WINAPI CryptEncodeObject(_In_ DWORD dwCertEncodingType, _In_ LPCSTR lpszStructType, _In_ const void *pvStructInfo, _Out_writes_bytes_to_opt_(*pcbEncoded, *pcbEncoded) BYTE *pbEncoded, _Inout_ DWORD *pcbEncoded)
BOOL WINAPI CryptDecryptMessage(_In_ PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara, _In_reads_bytes_(cbEncryptedBlob) const BYTE *pbEncryptedBlob, _In_ DWORD cbEncryptedBlob, _Out_writes_bytes_to_opt_(*pcbDecrypted, *pcbDecrypted) BYTE *pbDecrypted, _Inout_opt_ DWORD *pcbDecrypted, _Outptr_opt_result_maybenull_ PCCERT_CONTEXT *ppXchgCert)
struct _CERT_POLICY_QUALIFIER_INFO CERT_POLICY_QUALIFIER_INFO
_In_ DWORD _In_ DWORD _In_ DWORD _Outptr_opt_ PCCERT_CONTEXT * ppCertContext
Definition: wincrypt.h:5041
struct _CMSG_MAIL_LIST_RECIPIENT_INFO * PCMSG_MAIL_LIST_RECIPIENT_INFO
BOOL WINAPI CryptUnregisterOIDFunction(_In_ DWORD, _In_ LPCSTR, _In_ LPCSTR)
struct _CRYPT_SIGN_MESSAGE_PARA * PCRYPT_SIGN_MESSAGE_PARA
struct _CRYPTOAPI_BLOB CERT_NAME_BLOB
struct _CMSG_CTRL_DECRYPT_PARA * PCMSG_CTRL_DECRYPT_PARA
struct _CERT_REVOCATION_INFO * PCERT_REVOCATION_INFO
struct _CERT_BASIC_CONSTRAINTS2_INFO * PCERT_BASIC_CONSTRAINTS2_INFO
BOOL WINAPI CertVerifyCertificateChainPolicy(_In_ LPCSTR pszPolicyOID, _In_ PCCERT_CHAIN_CONTEXT pChainContext, _In_ PCERT_CHAIN_POLICY_PARA pPolicyPara, _Inout_ PCERT_CHAIN_POLICY_STATUS pPolicyStatus)
BOOL WINAPI CryptUnregisterOIDInfo(_In_ PCCRYPT_OID_INFO pInfo)
BOOL WINAPI CertSerializeCTLStoreElement(_In_ PCCTL_CONTEXT pCtlContext, _In_ DWORD dwFlags, _Out_writes_bytes_to_opt_(*pcbElement, *pcbElement) BYTE *pbElement, _Inout_ DWORD *pcbElement)
WINADVAPI BOOL WINAPI CryptGetProvParam(_In_ HCRYPTPROV hProv, _In_ DWORD dwParam, _Out_writes_bytes_to_opt_(*pdwDataLen, *pdwDataLen) BYTE *pbData, _Inout_ DWORD *pdwDataLen, _In_ DWORD dwFlags)
_In_opt_ LPCSTR _In_ DWORD _In_ DWORD _Outptr_ LPVOID _In_opt_ HCRYPTASYNC hAsyncRetrieve
Definition: wincrypt.h:6118
_In_ DWORD _In_ DWORD _Out_writes_to_opt_ pcchString LPSTR _Inout_ DWORD * pcchString
Definition: wincrypt.h:4506
BOOL WINAPI CryptInstallCancelRetrieval(__callback PFN_CRYPT_CANCEL_RETRIEVAL pfnCancel, _In_opt_ const void *pvArg, _In_ DWORD dwFlags, _Reserved_ void *pvReserved)
_In_ PCCRL_CONTEXT _In_ DWORD _Outptr_ PCCRL_CONTEXT * ppProvCrlContext
Definition: wincrypt.h:1206
_In_ HCRYPTHASH _In_ BOOL _In_ DWORD _Inout_updates_bytes_to_ pdwDataLen BYTE * pbData
Definition: wincrypt.h:4201
struct _CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO * PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO
struct _AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA * PAUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA
_In_ HCRYPTHASH hHash
Definition: wincrypt.h:4198
void * HCRYPTOIDFUNCADDR
Definition: wincrypt.h:55
BOOL WINAPI CryptSetOIDFunctionValue(_In_ DWORD dwEncodingType, _In_ LPCSTR pszFuncName, _In_ LPCSTR pszOID, _In_opt_ LPCWSTR pwszValueName, _In_ DWORD dwValueType, _In_reads_bytes_opt_(cbValueData) const BYTE *pbValueData, _In_ DWORD cbValueData)
struct _CERT_TRUST_STATUS CERT_TRUST_STATUS
BOOL(WINAPI * PFN_CERT_DLL_OPEN_STORE_PROV_FUNC)(_In_ LPCSTR lpszStoreProvider, _In_ DWORD dwEncodingType, _In_opt_ HCRYPTPROV_LEGACY hCryptProv, _In_ DWORD dwFlags, _In_opt_ const void *pvPara, _In_ HCERTSTORE hCertStore, _Inout_ PCERT_STORE_PROV_INFO pStoreProvInfo)
Definition: wincrypt.h:1156
struct _CRYPT_PASSWORD_CREDENTIALSW * PCRYPT_PASSWORD_CREDENTIALSW
BOOL(WINAPI * PFN_CERT_STORE_PROV_GET_CRL_PROPERTY)(_Inout_ HCERTSTOREPROV hStoreProv, _In_ PCCRL_CONTEXT pCrlContext, _In_ DWORD dwPropId, _In_ DWORD dwFlags, _Out_writes_bytes_to_opt_(*pcbData, *pcbData) void *pvData, _Inout_ DWORD *pcbData)
Definition: wincrypt.h:1320
struct _CERT_KEYGEN_REQUEST_INFO CERT_KEYGEN_REQUEST_INFO
struct _CMSG_CTRL_KEY_TRANS_DECRYPT_PARA * PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA
struct _CERT_CHAIN_POLICY_STATUS * PCERT_CHAIN_POLICY_STATUS
struct _CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA
struct _CRYPT_ASYNC_RETRIEVAL_COMPLETION * PCRYPT_ASYNC_RETRIEVAL_COMPLETION
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
Definition: wincrypt.h:6082
BOOL WINAPI CertEnumSystemStore(_In_ DWORD dwFlags, _In_opt_ void *pvSystemStoreLocationPara, _Inout_opt_ void *pvArg, __callback PFN_CERT_ENUM_SYSTEM_STORE pfnEnum)
struct _CMSG_CTRL_KEY_TRANS_DECRYPT_PARA CMSG_CTRL_KEY_TRANS_DECRYPT_PARA
struct _CRYPT_HASH_MESSAGE_PARA CRYPT_HASH_MESSAGE_PARA
BOOL WINAPI CertSaveStore(_In_ HCERTSTORE hCertStore, _In_ DWORD dwEncodingType, _In_ DWORD dwSaveAs, _In_ DWORD dwSaveTo, _Inout_ void *pvSaveToPara, _In_ DWORD dwFlags)
struct _CRL_DIST_POINT_NAME * PCRL_DIST_POINT_NAME
struct _CRYPT_ATTRIBUTE_TYPE_VALUE * PCRYPT_ATTRIBUTE_TYPE_VALUE
BOOL WINAPI CryptImportPublicKeyInfoEx(_In_ HCRYPTPROV hCryptProv, _In_ DWORD dwCertEncodingType, _In_ PCERT_PUBLIC_KEY_INFO pInfo, _In_ ALG_ID aiKeyAlg, _In_ DWORD dwFlags, _In_opt_ void *pvAuxInfo, _Out_ HCRYPTKEY *phKey)
struct _CERT_KEY_CONTEXT CERT_KEY_CONTEXT
struct _CMSG_KEY_AGREE_RECIPIENT_INFO CMSG_KEY_AGREE_RECIPIENT_INFO
struct _CERT_PRIVATE_KEY_INFO * PCERT_PRIVATE_KEY_INFO
struct _CRYPT_CONTENT_INFO CRYPT_CONTENT_INFO
BOOL WINAPI CryptMsgVerifyCountersignatureEncodedEx(_In_opt_ HCRYPTPROV_LEGACY hCryptProv, _In_ DWORD dwEncodingType, _In_reads_bytes_(cbSignerInfo) PBYTE pbSignerInfo, _In_ DWORD cbSignerInfo, _In_reads_bytes_(cbSignerInfoCountersignature) PBYTE pbSignerInfoCountersignature, _In_ DWORD cbSignerInfoCountersignature, _In_ DWORD dwSignerType, _In_ void *pvSigner, _In_ DWORD dwFlags, _Inout_opt_ void *pvExtra)
WINADVAPI BOOL WINAPI CryptAcquireContextA(_Out_ HCRYPTPROV *, _In_opt_ LPCSTR, _In_opt_ LPCSTR, _In_ DWORD, _In_ DWORD)
WINADVAPI BOOL WINAPI CryptReleaseContext(_In_ HCRYPTPROV, _In_ DWORD)
_In_ HCRYPTHASH _In_ BOOL _In_ DWORD _Inout_updates_bytes_to_ pdwDataLen BYTE _Inout_ DWORD * pdwDataLen
Definition: wincrypt.h:4202
BOOL WINAPI CertFreeCTLContext(_In_opt_ PCCTL_CONTEXT pCtlContext)
static const WCHAR CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH[]
Definition: wincrypt.h:2356
struct _CERT_STRONG_SIGN_SERIALIZED_INFO CERT_STRONG_SIGN_SERIALIZED_INFO
struct _CMSG_SIGNER_INFO * PCMSG_SIGNER_INFO
WINADVAPI BOOL WINAPI CryptSetProvParam(_In_ HCRYPTPROV, _In_ DWORD, _In_ CONST BYTE *, _In_ DWORD)
const CERT_CONTEXT * PCCERT_CONTEXT
Definition: wincrypt.h:485
struct _CERT_PUBLIC_KEY_INFO * PCERT_PUBLIC_KEY_INFO
PCCRYPT_OID_INFO WINAPI CryptFindOIDInfo(_In_ DWORD dwKeyType, _In_ void *pvKey, _In_ DWORD dwGroupId)
struct _CRYPT_VERIFY_MESSAGE_PARA * PCRYPT_VERIFY_MESSAGE_PARA
struct _CMSG_SIGNER_ENCODE_INFO CMSG_SIGNER_ENCODE_INFO
struct _CRYPT_ENCRYPT_MESSAGE_PARA CRYPT_ENCRYPT_MESSAGE_PARA
static const WCHAR CERT_PHYSICAL_STORE_LOCAL_MACHINE_NAME[]
Definition: wincrypt.h:2625
struct _CERT_CHAIN_POLICY_STATUS CERT_CHAIN_POLICY_STATUS
BOOL WINAPI CryptRegisterDefaultOIDFunction(_In_ DWORD, _In_ LPCSTR, _In_ DWORD, _In_ LPCWSTR)
void WINAPI CertRemoveStoreFromCollection(_In_ HCERTSTORE hCollectionStore, _In_ HCERTSTORE hSiblingStore)
struct _CERT_POLICY_MAPPINGS_INFO * PCERT_POLICY_MAPPINGS_INFO
_In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_opt_ HCERTSTORE _In_ PCERT_CHAIN_PARA _In_ DWORD _Reserved_ LPVOID pvReserved
Definition: wincrypt.h:4841
struct _CMSG_RECIPIENT_ENCODE_INFO CMSG_RECIPIENT_ENCODE_INFO
struct _CERT_OTHER_NAME * PCERT_OTHER_NAME
BOOL WINAPI CertVerifyCRLRevocation(_In_ DWORD dwCertEncodingType, _In_ PCERT_INFO pCertId, _In_ DWORD cCrlInfo, _In_reads_(cCrlInfo) PCRL_INFO rgpCrlInfo[])
_In_ DWORD _In_ DWORD cbCertEncoded
Definition: wincrypt.h:5039
struct _CRYPTOAPI_BLOB * PCRYPT_DER_BLOB
struct _CERT_X942_DH_VALIDATION_PARAMS CERT_X942_DH_VALIDATION_PARAMS
WINADVAPI BOOL WINAPI CryptGetUserKey(_In_ HCRYPTPROV, _In_ DWORD, _Out_ HCRYPTKEY *)
_In_ PCCERT_CONTEXT _In_ DWORD _Outptr_opt_ PCCERT_CONTEXT * ppStoreContext
Definition: wincrypt.h:4985
struct _CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA * PCMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA
_In_ PCCERT_CONTEXT pStoreCertContext
Definition: wincrypt.h:1175
DWORD WINAPI CertGetNameStringA(_In_ PCCERT_CONTEXT pCertContext, _In_ DWORD dwType, _In_ DWORD dwFlags, _In_opt_ void *pvTypePara, _Out_writes_to_opt_(cchNameString, return) LPSTR pszNameString, _In_ DWORD cchNameString)
BOOL(WINAPI * PFN_CERT_ENUM_PHYSICAL_STORE)(_In_ const void *pvSystemStore, _In_ DWORD dwFlags, _In_ LPCWSTR pwszStoreName, _In_ PCERT_PHYSICAL_STORE_INFO pStoreInfo, _Reserved_ void *pvReserved, _Inout_opt_ void *pvArg)
Definition: wincrypt.h:1122
struct _CRYPT_BIT_BLOB CRYPT_BIT_BLOB
struct _CMSG_CTRL_DECRYPT_PARA CMSG_CTRL_DECRYPT_PARA
const CTL_CONTEXT * PCCTL_CONTEXT
Definition: wincrypt.h:753
BOOL(WINAPI * PFN_CRYPT_ENUM_OID_FUNC)(_In_ DWORD dwEncodingType, _In_ LPCSTR pszFuncName, _In_ LPCSTR pszOID, _In_ DWORD cValue, _In_reads_(cValue) const DWORD rgdwValueType[], _In_reads_(cValue) LPCWSTR const rgpwszValueName[], _In_reads_(cValue) const BYTE *const rgpbValueData[], _In_reads_(cValue) const DWORD rgcbValueData[], _Inout_opt_ void *pvArg)
Definition: wincrypt.h:1360
struct _CERT_SIGNED_CONTENT_INFO * PCERT_SIGNED_CONTENT_INFO
BOOL WINAPI CertResyncCertificateChainEngine(_In_opt_ HCERTCHAINENGINE hChainEngine)
struct _CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA
PCCRL_CONTEXT WINAPI CertGetCRLFromStore(_In_ HCERTSTORE hCertStore, _In_opt_ PCCERT_CONTEXT pIssuerContext, _In_opt_ PCCRL_CONTEXT pPrevCrlContext, _Inout_ DWORD *pdwFlags)
struct _CRYPT_DECODE_PARA * PCRYPT_DECODE_PARA
struct _CMSG_ENCRYPTED_ENCODE_INFO * PCMSG_ENCRYPTED_ENCODE_INFO
BOOL WINAPI CertUnregisterSystemStore(_In_ const void *pvSystemStore, _In_ DWORD dwFlags)
struct _CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO
struct _CERT_CHAIN_POLICY_PARA * PCERT_CHAIN_POLICY_PARA
struct _CERT_POLICY_QUALIFIER_NOTICE_REFERENCE * PCERT_POLICY_QUALIFIER_NOTICE_REFERENCE
_In_ PCCERT_CONTEXT pCertContext
Definition: wincrypt.h:4836
struct _CMSG_SIGNED_ENCODE_INFO CMSG_SIGNED_ENCODE_INFO
BOOL WINAPI CryptDecryptAndVerifyMessageSignature(_In_ PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara, _In_ PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara, _In_ DWORD dwSignerIndex, _In_reads_bytes_(cbEncryptedBlob) const BYTE *pbEncryptedBlob, _In_ DWORD cbEncryptedBlob, _Out_writes_bytes_to_opt_(*pcbDecrypted, *pcbDecrypted) BYTE *pbDecrypted, _Inout_opt_ DWORD *pcbDecrypted, _Outptr_opt_result_maybenull_ PCCERT_CONTEXT *ppXchgCert, _Outptr_opt_result_maybenull_ PCCERT_CONTEXT *ppSignerCert)
static const WCHAR CRYPT_OID_INFO_NO_SIGN_ALGORITHM[]
Definition: wincrypt.h:1396
WINADVAPI BOOL WINAPI CryptContextAddRef(_In_ HCRYPTPROV, _Reserved_ DWORD *, _In_ DWORD)
BOOL WINAPI CertDeleteCertificateFromStore(_In_ PCCERT_CONTEXT pCertContext)
LONG WINAPI CryptGetMessageSignerCount(_In_ DWORD dwMsgEncodingType, _In_reads_bytes_(cbSignedBlob) const BYTE *pbSignedBlob, _In_ DWORD cbSignedBlob)
struct _CERT_STORE_PROV_FIND_INFO CERT_STORE_PROV_FIND_INFO
void *(WINAPI * PFN_CMSG_ALLOC)(_In_ size_t cb)
Definition: wincrypt.h:4048
struct _AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA
BOOL WINAPI CryptMsgControl(_In_ HCRYPTMSG hCryptMsg, _In_ DWORD dwFlags, _In_ DWORD dwCtrlType, _In_opt_ void const *pvCtrlPara)
LPCWSTR WINAPI CryptFindLocalizedName(_In_ LPCWSTR pwszCryptName)
BOOL(WINAPI * PFN_CERT_STORE_PROV_GET_CERT_PROPERTY)(_Inout_ HCERTSTOREPROV hStoreProv, _In_ PCCERT_CONTEXT pCertContext, _In_ DWORD dwPropId, _In_ DWORD dwFlags, _Out_writes_bytes_to_opt_(*pcbData, *pcbData) void *pvData, _Inout_ DWORD *pcbData)
Definition: wincrypt.h:1293
BOOL WINAPI CryptMsgSignCTL(_In_ DWORD dwMsgEncodingType, _In_reads_bytes_(cbCtlContent) BYTE *pbCtlContent, _In_ DWORD cbCtlContent, _In_ PCMSG_SIGNED_ENCODE_INFO pSignInfo, _In_ DWORD dwFlags, _Out_writes_bytes_to_opt_(*pcbEncoded, *pcbEncoded) BYTE *pbEncoded, _Inout_ DWORD *pcbEncoded)
_Reserved_ DWORD _In_ DWORD _Out_writes_bytes_to_opt_ pcbProvName LPSTR pszProvName
Definition: wincrypt.h:4358
struct _CMSG_ENVELOPED_ENCODE_INFO CMSG_ENVELOPED_ENCODE_INFO
BOOL WINAPI CryptMsgCountersignEncoded(_In_ DWORD dwEncodingType, _In_reads_bytes_(cbSignerInfo) PBYTE pbSignerInfo, _In_ DWORD cbSignerInfo, _In_ DWORD cCountersigners, _In_reads_(cCountersigners) PCMSG_SIGNER_ENCODE_INFO rgCountersigners, _Out_writes_bytes_to_opt_(*pcbCountersignature, *pcbCountersignature) PBYTE pbCountersignature, _Inout_ PDWORD pcbCountersignature)
#define CERT_FORTEZZA_DATA_PROP
Definition: wincrypt.h:2704
void * HCERTSTOREPROV
Definition: wincrypt.h:53
static const CERT_EFSBLOB_VALUE_NAME[]
Definition: wincrypt.h:2379
struct _CERT_BASIC_CONSTRAINTS_INFO CERT_BASIC_CONSTRAINTS_INFO
struct _CRYPTOAPI_BLOB DATA_BLOB
static const WCHAR CRYPT_OID_INFO_OAEP_PARAMETERS_ALGORITHM[]
Definition: wincrypt.h:1397
struct _CMSG_MAIL_LIST_RECIPIENT_INFO CMSG_MAIL_LIST_RECIPIENT_INFO
struct _CERT_STORE_PROV_INFO * PCERT_STORE_PROV_INFO
struct _CTL_USAGE * PCERT_ENHKEY_USAGE
struct _CERT_AUTHORITY_KEY_ID_INFO * PCERT_AUTHORITY_KEY_ID_INFO
struct _CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO
DWORD WINAPI CertGetPublicKeyLength(_In_ DWORD dwCertEncodingType, _In_ PCERT_PUBLIC_KEY_INFO pPublicKey)
struct _CERT_CHAIN_ELEMENT * PCERT_CHAIN_ELEMENT
struct _CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO * PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO
struct _CRYPTOAPI_BLOB * PCRYPT_ATTR_BLOB
BOOL(WINAPI * PFN_CERT_STORE_PROV_SET_CTL_PROPERTY)(_Inout_ HCERTSTOREPROV hStoreProv, _In_ PCCTL_CONTEXT pCtlContext, _In_ DWORD dwPropId, _In_ DWORD dwFlags, _In_opt_ const void *pvData)
Definition: wincrypt.h:1250
WINADVAPI BOOL WINAPI CryptDuplicateHash(_In_ HCRYPTHASH, _Reserved_ DWORD *, _In_ DWORD, _Out_ HCRYPTHASH *)
struct _CMSG_ENCRYPTED_ENCODE_INFO CMSG_ENCRYPTED_ENCODE_INFO
struct _CRYPT_TIME_STAMP_REQUEST_INFO CRYPT_TIME_STAMP_REQUEST_INFO
struct _PUBLICKEYSTRUC BLOBHEADER
struct _CERT_ISSUER_SERIAL_NUMBER * PCERT_ISSUER_SERIAL_NUMBER
struct _CERT_TRUST_LIST_INFO * PCERT_TRUST_LIST_INFO
struct _CERT_INFO CERT_INFO
struct _CERT_EXTENSIONS CERT_EXTENSIONS
WINADVAPI BOOL WINAPI CryptSetHashParam(_In_ HCRYPTHASH, _In_ DWORD, _In_ CONST BYTE *, _In_ DWORD)
const CRYPT_OID_INFO * PCCRYPT_OID_INFO
Definition: wincrypt.h:1418
BOOL WINAPI CryptExportPublicKeyInfoEx(_In_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, _In_opt_ DWORD dwKeySpec, _In_ DWORD dwCertEncodingType, _In_opt_ LPSTR pszPublicKeyObjId, _In_ DWORD dwFlags, _In_opt_ void *pvAuxInfo, _Out_writes_bytes_to_opt_(*pcbInfo, *pcbInfo) PCERT_PUBLIC_KEY_INFO pInfo, _Inout_ DWORD *pcbInfo)
void(WINAPI * PFN_CRYPT_ASYNC_RETRIEVAL_COMPLETION_FUNC)(_Inout_opt_ void *pvCompletion, _In_ DWORD dwCompletionCode, _In_ LPCSTR pszURL, _In_opt_ LPSTR pszObjectOid, _In_ void *pvObject)
Definition: wincrypt.h:1550
_In_ DWORD _In_ DWORD _In_ DWORD _Outptr_opt_ PCCRL_CONTEXT * ppCrlContext
Definition: wincrypt.h:5069
struct _CRL_FIND_ISSUED_FOR_PARA * PCRL_FIND_ISSUED_FOR_PARA
struct _CERT_NAME_CONSTRAINTS_INFO * PCERT_NAME_CONSTRAINTS_INFO
struct _CERT_AUTHORITY_KEY_ID_INFO CERT_AUTHORITY_KEY_ID_INFO
struct _CERT_SIMPLE_CHAIN * PCERT_SIMPLE_CHAIN
HCERTSTORE WINAPI CryptGetMessageCertificates(_In_ DWORD dwMsgAndCertEncodingType, _In_opt_ HCRYPTPROV_LEGACY hCryptProv, _In_ DWORD dwFlags, _In_reads_bytes_(cbSignedBlob) const BYTE *pbSignedBlob, _In_ DWORD cbSignedBlob)
struct _CMS_DH_KEY_INFO CMS_DH_KEY_INFO
static const WCHAR MS_DEF_DH_SCHANNEL_PROV_W[]
Definition: wincrypt.h:1984
struct _CERT_POLICY_QUALIFIER_INFO * PCERT_POLICY_QUALIFIER_INFO
BOOL WINAPI CertEnumPhysicalStore(_In_ const void *pvSystemStore, _In_ DWORD dwFlags, _Inout_opt_ void *pvArg, __callback PFN_CERT_ENUM_PHYSICAL_STORE pfnEnum)
struct _CERT_POLICY_QUALIFIER_USER_NOTICE CERT_POLICY_QUALIFIER_USER_NOTICE
struct _CRYPT_KEY_SIGN_MESSAGE_PARA CRYPT_KEY_SIGN_MESSAGE_PARA
PCCERT_CHAIN_CONTEXT WINAPI CertDuplicateCertificateChain(_In_ PCCERT_CHAIN_CONTEXT pChainContext)
struct _CERT_POLICY_CONSTRAINTS_INFO CERT_POLICY_CONSTRAINTS_INFO
WINADVAPI BOOL WINAPI CryptGetHashParam(_In_ HCRYPTHASH hHash, _In_ DWORD dwParam, _Out_writes_bytes_to_opt_(*pdwDataLen, *pdwDataLen) BYTE *pbData, _Inout_ DWORD *pdwDataLen, _In_ DWORD dwFlags)
struct _CERT_CONTEXT * PCERT_CONTEXT
struct _CERT_NAME_CONSTRAINTS_INFO CERT_NAME_CONSTRAINTS_INFO
struct _DSSSEED DSSSEED
struct _CRYPTOAPI_BLOB * PCRYPT_DIGEST_BLOB
struct _CERT_CHAIN_ENGINE_CONFIG * PCERT_CHAIN_ENGINE_CONFIG
struct _CERT_TRUST_STATUS * PCERT_TRUST_STATUS
static const WCHAR CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH[]
Definition: wincrypt.h:2359
static const WCHAR MS_SCARD_PROV_W[]
Definition: wincrypt.h:1998
PCCERT_CONTEXT WINAPI CertCreateSelfSignCertificate(_In_opt_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hProv, _In_ PCERT_NAME_BLOB pSubjectIssuerBlob, _In_ DWORD dwFlags, _In_opt_ PCRYPT_KEY_PROV_INFO pKeyProvInfo, _In_opt_ PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, _In_opt_ PSYSTEMTIME pStartTime, _In_opt_ PSYSTEMTIME pEndTime, _In_opt_ PCERT_EXTENSIONS pExtensions)
_In_ PCCERT_CONTEXT _In_ DWORD _Outptr_ PCCERT_CONTEXT * ppProvCertContext
Definition: wincrypt.h:1177
BOOL WINAPI CryptVerifyMessageHash(_In_ PCRYPT_HASH_MESSAGE_PARA pHashPara, _In_reads_bytes_(cbHashedBlob) BYTE *pbHashedBlob, _In_ DWORD cbHashedBlob, _Out_writes_bytes_to_opt_(*pcbToBeHashed, *pcbToBeHashed) BYTE *pbToBeHashed, _Inout_opt_ DWORD *pcbToBeHashed, _Out_writes_bytes_to_opt_(*pcbComputedHash, *pcbComputedHash) BYTE *pbComputedHash, _Inout_opt_ DWORD *pcbComputedHash)
WINADVAPI BOOL WINAPI CryptSetProviderExA(_In_ LPCSTR, _In_ DWORD, _Reserved_ DWORD *, _In_ DWORD)
BOOL WINAPI CryptEnumOIDInfo(_In_ DWORD dwGroupId, _In_ DWORD dwFlags, _Inout_opt_ void *pvArg, __callback PFN_CRYPT_ENUM_OID_INFO pfnEnumOIDInfo)
_In_ DWORD _In_opt_ LPCWSTR _In_ DWORD _Outptr_ void _Inout_ HCRYPTOIDFUNCADDR * phFuncAddr
Definition: wincrypt.h:4638
struct _CTL_ENTRY CTL_ENTRY
PCCERT_CONTEXT WINAPI CertGetSubjectCertificateFromStore(_In_ HCERTSTORE hCertStore, _In_ DWORD dwCertEncodingType, _In_ PCERT_INFO pCertId)
BOOL WINAPI PFXIsPFXBlob(_In_ CRYPT_DATA_BLOB *pPFX)
HCRYPTMSG WINAPI CryptMsgDuplicate(_In_opt_ HCRYPTMSG hCryptMsg)
_Reserved_ DWORD _In_ DWORD _Out_ DWORD _Out_writes_bytes_to_opt_ pcbTypeName LPSTR _Inout_ DWORD * pcbTypeName
Definition: wincrypt.h:4284
WINADVAPI BOOL WINAPI CryptSetProviderA(_In_ LPCSTR, _In_ DWORD)
struct _CRYPT_HASH_MESSAGE_PARA * PCRYPT_HASH_MESSAGE_PARA
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME pftValidFor
Definition: wincrypt.h:6079
struct _CERT_ID CERT_ID
HCRYPTOIDFUNCSET WINAPI CryptInitOIDFunctionSet(_In_ LPCSTR, _In_ DWORD)
struct _CERT_RDN_ATTR * PCERT_RDN_ATTR
_In_ DWORD _In_ DWORD cbCrlEncoded
Definition: wincrypt.h:5067
struct _CRYPT_OID_FUNC_ENTRY CRYPT_OID_FUNC_ENTRY
struct _CMSG_STREAM_INFO CMSG_STREAM_INFO
BOOL WINAPI CryptEncryptMessage(_In_ PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara, _In_ DWORD cRecipientCert, _In_reads_(cRecipientCert) PCCERT_CONTEXT rgpRecipientCert[], _In_reads_bytes_opt_(cbToBeEncrypted) const BYTE *pbToBeEncrypted, _In_ DWORD cbToBeEncrypted, _Out_writes_bytes_to_opt_(*pcbEncryptedBlob, *pcbEncryptedBlob) BYTE *pbEncryptedBlob, _Inout_ DWORD *pcbEncryptedBlob)
BOOL WINAPI CryptEncodeObjectEx(_In_ DWORD dwCertEncodingType, _In_ LPCSTR lpszStructType, _In_ const void *pvStructInfo, _In_ DWORD dwFlags, _In_opt_ PCRYPT_ENCODE_PARA pEncodePara, _Out_opt_ void *pvEncoded, _Inout_ DWORD *pcbEncoded)
struct _CRYPT_PASSWORD_CREDENTIALSW CRYPT_PASSWORD_CREDENTIALSW
struct _CRYPT_KEY_VERIFY_MESSAGE_PARA CRYPT_KEY_VERIFY_MESSAGE_PARA
struct _CRYPTOAPI_BLOB * PCRYPT_INTEGER_BLOB
struct _CTL_INFO * PCTL_INFO
struct _PRIVKEYVER3 DSSPRIVKEY_VER3
struct _CERT_POLICY_MAPPINGS_INFO CERT_POLICY_MAPPINGS_INFO
struct _CERT_ID * PCERT_ID
struct _CERT_ENCRYPTED_PRIVATE_KEY_INFO * PCERT_ENCRYPTED_PRIVATE_KEY_INFO
struct _CRYPTOAPI_BLOB CRYPT_OBJID_BLOB
struct _CRYPT_BLOB_ARRAY CRYPT_BLOB_ARRAY
BOOL WINAPI CertAddEncodedCertificateToSystemStoreW(_In_ LPCWSTR szCertStoreName, _In_reads_bytes_(cbCertEncoded) const BYTE *pbCertEncoded, _In_ DWORD cbCertEncoded)
BOOL WINAPI CertRegisterSystemStore(_In_ const void *pvSystemStore, _In_ DWORD dwFlags, _In_opt_ PCERT_SYSTEM_STORE_INFO pStoreInfo, _Reserved_ void *pvReserved)
struct _CMS_DH_KEY_INFO * PCMS_DH_KEY_INFO
_In_ PCCERT_STORE_PROV_FIND_INFO _In_ PCCRL_CONTEXT pPrevCrlContext
Definition: wincrypt.h:1307
BOOL WINAPI CertEnumSystemStoreLocation(_In_ DWORD dwFlags, _Inout_opt_ void *pvArg, __callback PFN_CERT_ENUM_SYSTEM_STORE_LOCATION pfnEnum)
BOOL(WINAPI * PFN_CERT_STORE_PROV_DELETE_CRL)(_Inout_ HCERTSTOREPROV hStoreProv, _In_ PCCRL_CONTEXT pCrlContext, _In_ DWORD dwFlags)
Definition: wincrypt.h:1215
struct _CERT_ALT_NAME_INFO CERT_ALT_NAME_INFO
BOOL WINAPI CryptVerifyDetachedMessageHash(_In_ PCRYPT_HASH_MESSAGE_PARA pHashPara, _In_reads_bytes_(cbDetachedHashBlob) BYTE *pbDetachedHashBlob, _In_ DWORD cbDetachedHashBlob, _In_ DWORD cToBeHashed, _In_reads_(cToBeHashed) const BYTE *rgpbToBeHashed[], _In_reads_(cToBeHashed) DWORD rgcbToBeHashed[], _Out_writes_bytes_to_opt_(*pcbComputedHash, *pcbComputedHash) BYTE *pbComputedHash, _Inout_opt_ DWORD *pcbComputedHash)
struct _CERT_NAME_INFO * PCERT_NAME_INFO
struct _PUBKEY TEKPUBKEY
struct _CRYPT_URL_INFO CRYPT_URL_INFO
struct _CERT_AUTHORITY_INFO_ACCESS CERT_AUTHORITY_INFO_ACCESS
BOOL(WINAPI * PFN_CMSG_IMPORT_KEY_TRANS)(_In_ PCRYPT_ALGORITHM_IDENTIFIER pContentEncryptionAlgorithm, _In_ PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA pKeyTransDecryptPara, _In_ DWORD dwFlags, _Reserved_ void *pvReserved, _Out_ HCRYPTKEY *phContentEncryptKey)
Definition: wincrypt.h:4112
struct _CTL_USAGE CTL_USAGE
HCERTSTORE WINAPI CertDuplicateStore(_In_ HCERTSTORE hCertStore)
BOOL WINAPI CertVerifySubjectCertificateContext(_In_ PCCERT_CONTEXT pSubject, _In_opt_ PCCERT_CONTEXT pIssuer, _Inout_ DWORD *pdwFlags)
struct _CRYPTOAPI_BLOB * PCERT_NAME_BLOB
struct _CTL_CONTEXT * PCTL_CONTEXT
void(WINAPI * PFN_CRYPT_ASYNC_PARAM_FREE_FUNC)(_In_ LPSTR pszParamOid, _In_ LPVOID pvParam)
Definition: wincrypt.h:1542
BOOL WINAPI CryptMsgCountersign(_In_ HCRYPTMSG hCryptMsg, _In_ DWORD dwIndex, _In_ DWORD cCountersigners, _In_reads_(cCountersigners) PCMSG_SIGNER_ENCODE_INFO rgCountersigners)
struct _CERT_REQUEST_INFO CERT_REQUEST_INFO
PCCERT_CONTEXT WINAPI CertGetIssuerCertificateFromStore(_In_ HCERTSTORE hCertStore, _In_ PCCERT_CONTEXT pSubjectContext, _In_opt_ PCCERT_CONTEXT pPrevIssuerContext, _Inout_ DWORD *pdwFlags)
PCRYPT_ATTRIBUTE WINAPI CertFindAttribute(_In_ LPCSTR pszObjId, _In_ DWORD cAttr, _In_reads_(cAttr) CRYPT_ATTRIBUTE rgAttr[])
_In_ DWORD _Out_writes_to_opt_ pcchDllList _Post_ _NullNull_terminated_ WCHAR * pwszDllList
Definition: wincrypt.h:4626
static const WCHAR CERT_PHYSICAL_STORE_DEFAULT_NAME[]
Definition: wincrypt.h:2621
struct _CMSG_CMS_SIGNER_INFO CMSG_CMS_SIGNER_INFO
BOOL WINAPI CertFreeCertificateContext(_In_opt_ PCCERT_CONTEXT pCertContext)
_In_ DWORD _In_ LPCSTR pszOID
Definition: wincrypt.h:4646
struct _CRL_ENTRY * PCRL_ENTRY
struct _CERT_CREATE_CONTEXT_PARA * PCERT_CREATE_CONTEXT_PARA
BOOL WINAPI CryptVerifyDetachedMessageSignature(_In_ PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara, _In_ DWORD dwSignerIndex, _In_reads_bytes_(cbDetachedSignBlob) const BYTE *pbDetachedSignBlob, _In_ DWORD cbDetachedSignBlob, _In_ DWORD cToBeSigned, _In_reads_(cToBeSigned) const BYTE *rgpbToBeSigned[], _In_reads_(cToBeSigned) DWORD rgcbToBeSigned[], _Outptr_opt_result_maybenull_ PCCERT_CONTEXT *ppSignerCert)
struct _CRYPT_ATTRIBUTE * PCRYPT_ATTRIBUTE
struct _CERT_REVOCATION_INFO CERT_REVOCATION_INFO
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void _In_opt_ PCRYPT_CREDENTIALS pCredentials
Definition: wincrypt.h:6083
struct _CRYPT_ATTRIBUTE_TYPE_VALUE CRYPT_ATTRIBUTE_TYPE_VALUE
_In_ PCCERT_STORE_PROV_FIND_INFO _In_ PCCTL_CONTEXT pPrevCtlContext
Definition: wincrypt.h:1334
BOOL WINAPI PFXVerifyPassword(_In_ CRYPT_DATA_BLOB *pPFX, _In_ LPCWSTR szPassword, _In_ DWORD dwFlags)
const void *WINAPI CertCreateContext(_In_ DWORD dwContextType, _In_ DWORD dwEncodingType, _In_reads_bytes_(cbEncoded) const BYTE *pbEncoded, _In_ DWORD cbEncoded, _In_ DWORD dwFlags, _In_opt_ PCERT_CREATE_CONTEXT_PARA pCreatePara)
struct _CTL_FIND_SUBJECT_PARA * PCTL_FIND_SUBJECT_PARA
struct _CRYPT_KEY_PROV_INFO * PCRYPT_KEY_PROV_INFO
struct _CRYPT_X942_OTHER_INFO CRYPT_X942_OTHER_INFO
static const WCHAR CERT_EFSBLOB_REGPATH[]
Definition: wincrypt.h:2375
static const WCHAR CRYPT_OID_REG_FLAGS_VALUE_NAME[]
Definition: wincrypt.h:2531
struct _CERT_REVOCATION_CRL_INFO CERT_REVOCATION_CRL_INFO
_In_ DWORD _In_opt_ LPCWSTR pwszDll
Definition: wincrypt.h:4635
struct _CRL_DIST_POINTS_INFO * PCRL_DIST_POINTS_INFO
BOOL WINAPI CryptProtectData(DATA_BLOB *pDataIn, LPCWSTR szDataDescr, DATA_BLOB *pOptionalEntropy, PVOID pvReserved, CRYPTPROTECT_PROMPTSTRUCT *pPromptStruct, DWORD dwFlags, DATA_BLOB *pDataOut)
Definition: protectdata.c:821
struct _CERT_CONTEXT CERT_CONTEXT
BOOL WINAPI CryptCreateAsyncHandle(_In_ DWORD dwFlags, _Out_ PHCRYPTASYNC phAsync)
struct _CTL_ENTRY * PCTL_ENTRY
struct _CERT_PHYSICAL_STORE_INFO * PCERT_PHYSICAL_STORE_INFO
_In_ DWORD _Out_writes_bytes_to_opt_ pcbData void _Inout_ DWORD * pcbData
Definition: wincrypt.h:4950
struct _CERT_DSS_PARAMETERS * PCERT_DSS_PARAMETERS
struct _CRYPTOAPI_BLOB CERT_BLOB
struct _CERT_PRIVATE_KEY_INFO CERT_PRIVATE_KEY_INFO
BOOL WINAPI CertAddStoreToCollection(_In_ HCERTSTORE hCollectionStore, _In_opt_ HCERTSTORE hSiblingStore, _In_ DWORD dwUpdateFlags, _In_ DWORD dwPriority)
struct _CERT_POLICIES_INFO * PCERT_POLICIES_INFO
DWORD WINAPI CertEnumCertificateContextProperties(_In_ PCCERT_CONTEXT pCertContext, _In_ DWORD dwPropId)
struct _CTL_USAGE * PCTL_USAGE
struct _CROSS_CERT_DIST_POINTS_INFO * PCROSS_CERT_DIST_POINTS_INFO
BOOL WINAPI CertSerializeCRLStoreElement(_In_ PCCRL_CONTEXT pCrlContext, _In_ DWORD dwFlags, _Out_writes_bytes_to_opt_(*pcbElement, *pcbElement) BYTE *pbElement, _Inout_ DWORD *pcbElement)
const CRL_CONTEXT * PCCRL_CONTEXT
Definition: wincrypt.h:625
BOOL WINAPI CryptHashMessage(_In_ PCRYPT_HASH_MESSAGE_PARA pHashPara, _In_ BOOL fDetachedHash, _In_ DWORD cToBeHashed, _In_reads_(cToBeHashed) const BYTE *rgpbToBeHashed[], _In_reads_(cToBeHashed) DWORD rgcbToBeHashed[], _Out_writes_bytes_to_opt_(*pcbHashedBlob, *pcbHashedBlob) BYTE *pbHashedBlob, _Inout_opt_ DWORD *pcbHashedBlob, _Out_writes_bytes_to_opt_(*pcbComputedHash, *pcbComputedHash) BYTE *pbComputedHash, _Inout_opt_ DWORD *pcbComputedHash)
struct _CERT_USAGE_MATCH * PCERT_USAGE_MATCH
BOOL WINAPI CryptEnumOIDFunction(_In_ DWORD dwEncodingType, _In_opt_ LPCSTR pszFuncName, _In_opt_ LPCSTR pszOID, _In_ DWORD dwFlags, _Inout_opt_ void *pvArg, __callback PFN_CRYPT_ENUM_OID_FUNC pfnEnumOIDFunc)
struct _CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO
struct _CRYPT_SEQUENCE_OF_ANY * PCRYPT_SEQUENCE_OF_ANY
HANDLE HCRYPTASYNC
Definition: wincrypt.h:1539
_Must_inspect_result_ HCERTSTORE WINAPI CertOpenStore(_In_ LPCSTR lpszStoreProvider, _In_ DWORD dwEncodingType, _In_opt_ HCRYPTPROV_LEGACY hCryptProv, _In_ DWORD dwFlags, _In_opt_ const void *pvPara)
CRYPT_ATTRIBUTES * PCMSG_ATTR
Definition: wincrypt.h:3971
struct _CRL_INFO * PCRL_INFO
BOOL(WINAPI * PFN_CERT_STORE_PROV_WRITE_CERT)(_Inout_ HCERTSTOREPROV hStoreProv, _In_ PCCERT_CONTEXT pCertContext, _In_ DWORD dwFlags)
Definition: wincrypt.h:1180
BOOL WINAPI CryptSignCertificate(_In_opt_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, _In_opt_ DWORD dwKeySpec, _In_ DWORD dwCertEncodingType, _In_reads_bytes_(cbEncodedToBeSigned) const BYTE *pbEncodedToBeSigned, _In_ DWORD cbEncodedToBeSigned, _In_ PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, _In_opt_ const void *pvHashAuxInfo, _Out_writes_bytes_to_opt_(*pcbSignature, *pcbSignature) BYTE *pbSignature, _Inout_ DWORD *pcbSignature)
struct _CRYPT_CONTENT_INFO * PCRYPT_CONTENT_INFO
struct _CRYPT_DECRYPT_MESSAGE_PARA * PCRYPT_DECRYPT_MESSAGE_PARA
struct _CERT_POLICY_CONSTRAINTS_INFO * PCERT_POLICY_CONSTRAINTS_INFO
struct _CRYPT_KEY_VERIFY_MESSAGE_PARA * PCRYPT_KEY_VERIFY_MESSAGE_PARA
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD dwTimeout
Definition: wincrypt.h:6081
struct _CMSG_KEY_TRANS_ENCRYPT_INFO * PCMSG_KEY_TRANS_ENCRYPT_INFO
DWORD WINAPI CertEnumCTLContextProperties(_In_ PCCTL_CONTEXT pCTLContext, _In_ DWORD dwPropId)
WINADVAPI BOOL WINAPI CryptSetProviderExW(_In_ LPCWSTR, _In_ DWORD, _Reserved_ DWORD *, _In_ DWORD)
BOOL(WINAPI * PFN_CERT_STORE_PROV_CONTROL)(_Inout_ HCERTSTOREPROV hStoreProv, _In_ DWORD dwFlags, _In_ DWORD dwCtrlType, _In_opt_ void const *pvCtrlPara)
Definition: wincrypt.h:1258
BOOL(WINAPI * PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY)(_Inout_ PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo, _In_ DWORD dwFlags, _Reserved_ void *pvReserved)
Definition: wincrypt.h:4098
LPVOID WINAPI CryptMemRealloc(_In_opt_ LPVOID pv, _In_ ULONG cbSize) __WINE_ALLOC_SIZE(2)
struct _CRYPT_KEY_PROV_INFO CRYPT_KEY_PROV_INFO
BOOL WINAPI CertCompareCertificate(_In_ DWORD dwCertEncodingType, _In_ PCERT_INFO pCertId1, _In_ PCERT_INFO pCertId2)
_In_opt_ LPCSTR _In_ DWORD _In_ DWORD _Outptr_ LPVOID _In_opt_ HCRYPTASYNC _In_opt_ PCRYPT_CREDENTIALS _In_opt_ LPVOID _Inout_opt_ PCRYPT_RETRIEVE_AUX_INFO pAuxInfo
Definition: wincrypt.h:6121
struct _CRYPTOAPI_BLOB * PCRYPT_HASH_BLOB
static const WCHAR MS_DEF_DSS_PROV_W[]
Definition: wincrypt.h:1938
struct _CRYPT_URL_INFO * PCRYPT_URL_INFO
static const WCHAR CERT_PHYSICAL_STORE_GROUP_POLICY_NAME[]
Definition: wincrypt.h:2623
struct _CRYPTOAPI_BLOB * PCRL_BLOB
LPCSTR WINAPI CertAlgIdToOID(_In_ DWORD dwAlgId)
struct _HTTPSPolicyCallbackData * PHTTPSPolicyCallbackData
struct _CRYPT_RETRIEVE_AUX_INFO * PCRYPT_RETRIEVE_AUX_INFO
struct _CTL_FIND_USAGE_PARA CTL_FIND_USAGE_PARA
struct _CERT_ACCESS_DESCRIPTION CERT_ACCESS_DESCRIPTION
BOOL WINAPI CryptSignAndEncodeCertificate(_In_opt_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, _In_opt_ DWORD dwKeySpec, _In_ DWORD dwCertEncodingType, _In_ LPCSTR lpszStructType, _In_ const void *pvStructInfo, _In_ PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, _In_opt_ const void *pvHashAuxInfo, _Out_writes_bytes_to_opt_(*pcbEncoded, *pcbEncoded) BYTE *pbEncoded, _Inout_ DWORD *pcbEncoded)
struct _CERT_CHAIN_CONTEXT * PCERT_CHAIN_CONTEXT
Definition: wincrypt.h:934
HANDLE * PHCRYPTASYNC
Definition: wincrypt.h:1539
static const WCHAR MS_ENHANCED_PROV_W[]
Definition: wincrypt.h:1882
BOOL(WINAPI * PFN_CERT_STORE_PROV_SET_CERT_PROPERTY)(_Inout_ HCERTSTOREPROV hStoreProv, _In_ PCCERT_CONTEXT pCertContext, _In_ DWORD dwPropId, _In_ DWORD dwFlags, _In_opt_ const void *pvData)
Definition: wincrypt.h:1192
struct _CERT_BASIC_CONSTRAINTS2_INFO CERT_BASIC_CONSTRAINTS2_INFO
struct _CRL_DIST_POINT_NAME CRL_DIST_POINT_NAME
WINADVAPI BOOL WINAPI CryptExportKey(_In_ HCRYPTKEY hKey, _In_ HCRYPTKEY hExpKey, _In_ DWORD dwBlobType, _In_ DWORD dwFlags, _Out_writes_bytes_to_opt_(*pdwDataLen, *pdwDataLen) BYTE *pbData, _Inout_ DWORD *pdwDataLen)
struct _CRYPT_SMIME_CAPABILITIES * PCRYPT_SMIME_CAPABILITIES
_In_ DWORD _In_ DWORD _In_ DWORD _In_ DWORD _Out_opt_ DWORD * pdwContextType
Definition: wincrypt.h:5092
BOOL WINAPI CryptMsgUpdate(_In_ HCRYPTMSG hCryptMsg, _In_reads_bytes_opt_(cbData) const BYTE *pbData, _In_ DWORD cbData, _In_ BOOL fFinal)
struct _CRYPT_CREDENTIALS CRYPT_CREDENTIALS
struct _CRYPTPROTECT_PROMPTSTRUCT CRYPTPROTECT_PROMPTSTRUCT
struct _CERT_DH_PARAMETERS * PCERT_DH_PARAMETERS
struct _CERT_REVOCATION_STATUS * PCERT_REVOCATION_STATUS
struct _CRL_DIST_POINTS_INFO CRL_DIST_POINTS_INFO
ULONG_PTR HCRYPTKEY
Definition: wincrypt.h:49
struct _CRL_ISSUING_DIST_POINT CRL_ISSUING_DIST_POINT
_In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_opt_ HCERTSTORE hAdditionalStore
Definition: wincrypt.h:4838
BOOL WINAPI CryptRegisterOIDFunction(_In_ DWORD, _In_ LPCSTR, _In_ LPCSTR, _In_opt_ LPCWSTR, _In_opt_ LPCSTR)
BOOL(WINAPI * PFN_CERT_STORE_PROV_FREE_FIND_CERT)(_Inout_ HCERTSTOREPROV hStoreProv, _In_ PCCERT_CONTEXT pCertContext, _In_ void *pvStoreProvFindInfo, _In_ DWORD dwFlags)
Definition: wincrypt.h:1286
BOOL WINAPI CertIsValidCRLForCertificate(_In_ PCCERT_CONTEXT pCert, _In_ PCCRL_CONTEXT pCrl, _In_ DWORD dwFlags, _Reserved_ void *pvReserved)
WINADVAPI BOOL WINAPI CryptImportKey(_In_ HCRYPTPROV hProv, _In_reads_bytes_(dwDataLen) CONST BYTE *pbData, _In_ DWORD dwDataLen, _In_ HCRYPTKEY hPubKey, _In_ DWORD dwFlags, _Out_ HCRYPTKEY *phKey)
BOOL(WINAPI * PFN_CANCEL_ASYNC_RETRIEVAL_FUNC)(_In_opt_ HCRYPTASYNC hAsyncRetrieve)
Definition: wincrypt.h:1563
struct _CMSG_KEY_TRANS_ENCRYPT_INFO CMSG_KEY_TRANS_ENCRYPT_INFO
BOOL WINAPI CertStrToNameW(_In_ DWORD dwCertEncodingType, _In_ LPCWSTR pszX500, _In_ DWORD dwStrType, _Reserved_ void *pvReserved, _Out_writes_bytes_to_opt_(*pcbEncoded, *pcbEncoded) BYTE *pbEncoded, _Inout_ DWORD *pcbEncoded, _Outptr_opt_result_maybenull_ LPCWSTR *ppszError)
const CERT_STORE_PROV_FIND_INFO CCERT_STORE_PROV_FIND_INFO
Definition: wincrypt.h:1271
_In_ PCCERT_STORE_PROV_FIND_INFO _In_ PCCERT_CONTEXT pPrevCertContext
Definition: wincrypt.h:1280
struct _CRYPT_TIME_STAMP_REQUEST_INFO * PCRYPT_TIME_STAMP_REQUEST_INFO
struct _CMSG_STREAM_INFO * PCMSG_STREAM_INFO
struct _CERT_SYSTEM_STORE_INFO * PCERT_SYSTEM_STORE_INFO
struct _CMSG_RECIPIENT_ENCODE_INFO * PCMSG_RECIPIENT_ENCODE_INFO
static const WCHAR MS_ENH_RSA_AES_PROV_W[]
Definition: wincrypt.h:2012
PCCERT_CONTEXT(WINAPI * PFN_CRYPT_GET_SIGNER_CERTIFICATE)(_Inout_opt_ void *pvGetArg, _In_ DWORD dwCertEncodingType, _In_ PCERT_INFO pSignerId, _In_ HCERTSTORE hMsgCertStore)
Definition: wincrypt.h:1453
PCCTL_CONTEXT WINAPI CertEnumCTLsInStore(_In_ HCERTSTORE hCertStore, _In_opt_ PCCTL_CONTEXT pPrevCtlContext)
void(WINAPI * PFN_CMSG_FREE)(_Inout_ void *pv)
Definition: wincrypt.h:4049
_In_ PCCERT_STORE_PROV_FIND_INFO pFindInfo
Definition: wincrypt.h:1279
_In_ DWORD _Out_writes_to_opt_ pcchDllList _Post_ _NullNull_terminated_ WCHAR _Inout_ DWORD * pcchDllList
Definition: wincrypt.h:4627
HCERTSTORE WINAPI CertOpenSystemStoreW(_In_opt_ HCRYPTPROV_LEGACY hProv, _In_ LPCWSTR szSubSystemProtocol)
struct _CRYPT_KEY_PROV_PARAM CRYPT_KEY_PROV_PARAM
static const WCHAR CERT_PHYSICAL_STORE_ENTERPRISE_NAME[]
Definition: wincrypt.h:2632
LPVOID WINAPI CryptMemAlloc(_In_ ULONG cbSize) __WINE_ALLOC_SIZE(1)
PCCRL_CONTEXT WINAPI CertFindCRLInStore(_In_ HCERTSTORE hCertStore, _In_ DWORD dwCertEncodingType, _In_ DWORD dwFindFlags, _In_ DWORD dwFindType, _In_opt_ const void *pvFindPara, _In_opt_ PCCRL_CONTEXT pPrevCrlContext)
struct _CERT_STORE_PROV_FIND_INFO * PCERT_STORE_PROV_FIND_INFO
struct _PUBKEY DSSPUBKEY
struct _CERT_RDN CERT_RDN
BOOL WINAPI CryptDecodeObject(_In_ DWORD dwCertEncodingType, _In_ LPCSTR lpszStructType, _In_reads_bytes_(cbEncoded) const BYTE *pbEncoded, _In_ DWORD cbEncoded, _In_ DWORD dwFlags, _Out_writes_bytes_to_opt_(*pcbStructInfo, *pcbStructInfo) void *pvStructInfo, _Inout_ DWORD *pcbStructInfo)
BOOL WINAPI CertSetCTLContextProperty(_In_ PCCTL_CONTEXT pCtlContext, _In_ DWORD dwPropId, _In_ DWORD dwFlags, _In_opt_ const void *pvData)
BOOL WINAPI CertRemoveEnhancedKeyUsageIdentifier(_In_ PCCERT_CONTEXT pCertContext, _In_ LPCSTR pszUsageIdentifier)
struct _HMAC_INFO HMAC_INFO
DWORD WINAPI CertGetNameStringW(_In_ PCCERT_CONTEXT pCertContext, _In_ DWORD dwType, _In_ DWORD dwFlags, _In_opt_ void *pvTypePara, _Out_writes_to_opt_(cchNameString, return) LPWSTR pszNameString, _In_ DWORD cchNameString)
BOOL WINAPI CertVerifyRevocation(_In_ DWORD dwEncodingType, _In_ DWORD dwRevType, _In_ DWORD cContext, _In_reads_(cContext) PVOID rgpvContext[], _In_ DWORD dwFlags, _In_opt_ PCERT_REVOCATION_PARA pRevPara, _Inout_ PCERT_REVOCATION_STATUS pRevStatus)
struct _CRYPT_RC2_CBC_PARAMETERS * PCRYPT_RC2_CBC_PARAMETERS
_Must_inspect_result_ BOOL WINAPI CryptVerifyCertificateSignatureEx(_In_opt_ HCRYPTPROV_LEGACY hCryptProv, _In_ DWORD dwCertEncodingType, _In_ DWORD dwSubjectType, _In_ void *pvSubject, _In_ DWORD dwIssuerType, _In_opt_ void *pvIssuer, _In_ DWORD dwFlags, _Inout_opt_ void *pvExtra)
BOOL WINAPI CertControlStore(_In_ HCERTSTORE hCertStore, _In_ DWORD dwFlags, _In_ DWORD dwCtrlType, _In_opt_ void const *pvCtrlPara)
struct _CERT_ALT_NAME_ENTRY * PCERT_ALT_NAME_ENTRY
WINADVAPI BOOL WINAPI CryptSetKeyParam(_In_ HCRYPTKEY, _In_ DWORD, _In_ CONST BYTE *, _In_ DWORD)
struct _CERT_KEY_ATTRIBUTES_INFO * PCERT_KEY_ATTRIBUTES_INFO
struct _CERT_POLICY_MAPPING CERT_POLICY_MAPPING
BOOL WINAPI CertGetCTLContextProperty(_In_ PCCTL_CONTEXT pCtlContext, _In_ DWORD dwPropId, _Out_writes_bytes_to_opt_(*pcbData, *pcbData) void *pvData, _Inout_ DWORD *pcbData)
unsigned int ALG_ID
Definition: wincrypt.h:45
_In_ ULONG _In_opt_ PVOID pvData
Definition: winddi.h:3749
#define WINAPI
Definition: msvc.h:6
#define __WINE_ALLOC_SIZE(x)
Definition: winnt_old.h:84
const char * LPCSTR
Definition: xmlstorage.h:183
char * LPSTR
Definition: xmlstorage.h:182
__wchar_t WCHAR
Definition: xmlstorage.h:180
WCHAR * LPWSTR
Definition: xmlstorage.h:184
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
char CHAR
Definition: xmlstorage.h:175
unsigned char BYTE
Definition: xxhash.c:193
#define const
Definition: zconf.h:233