/*
* Copyright (C) 2002 Travis Michielsen
* Copyright (C) 2004-2005 Juan Lang
* Copyright (C) 2007 Vijay Kiran Kamuju
*
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
/*
* Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
* other than GPL or LGPL is available it will apply instead, Oracle elects to use only
* the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
* a choice of LGPL license versions is made available with the language indicating
* that LGPLv2 or any later version may be used, or where a choice of which version
* of the LGPL is applied is otherwise unspecified.
*/
#ifndef __WINE_WINCRYPT_H
#define __WINE_WINCRYPT_H
#ifdef __cplusplus
extern "C" {
#endif
#include <bcrypt.h>
/* FIXME: #include <ncrypt.h> */
#ifdef _ADVAPI32_
# define WINADVAPI
#else
#endif
/* some typedefs for function parameters */
typedef unsigned int ALG_ID;
typedef void *HCERTSTORE;
typedef void *HCRYPTMSG;
typedef void *HCERTSTOREPROV;
typedef void *HCRYPTOIDFUNCSET;
typedef void *HCRYPTOIDFUNCADDR;
typedef void *HCRYPTDEFAULTCONTEXT;
/* CSP Structs */
typedef struct _PROV_ENUMALGS {
typedef struct _PROV_ENUMALGS_EX {
#define SCHANNEL_MAC_KEY 0
typedef struct _SCHANNEL_ALG {
typedef struct _HMAC_INFO {
typedef struct _CRYPTOAPI_BLOB {
typedef struct _CRYPTPROTECT_PROMPTSTRUCT{
typedef struct _CRYPT_ALGORITHM_IDENTIFIER {
typedef struct _CRYPT_ATTRIBUTE_TYPE_VALUE {
typedef struct _PUBLICKEYSTRUC {
typedef struct _RSAPUBKEY {
} RSAPUBKEY;
typedef struct _PUBKEY {
typedef struct _DSSSEED {
} DSSSEED;
typedef struct _PUBKEYVER3 {
typedef struct _PRIVKEYVER3 {
typedef struct _KEY_TYPE_SUBTYPE {
typedef struct _CERT_FORTEZZA_DATA_PROP {
int CertIndex;
typedef struct _CMS_DH_KEY_INFO {
void *pReserved;
typedef struct _CRYPT_BIT_BLOB {
typedef struct _CRYPT_KEY_PROV_PARAM {
typedef struct _CRYPT_KEY_PROV_INFO {
typedef struct _CERT_KEY_CONTEXT {
typedef struct _CERT_PUBLIC_KEY_INFO {
typedef struct _CERT_EXTENSION {
typedef struct _CERT_EXTENSIONS {
typedef struct _CERT_INFO {
typedef struct _CERT_RDN_ATTR {
typedef struct _CERT_RDN {
typedef struct _CERT_NAME_INFO {
typedef struct _CERT_NAME_VALUE {
typedef struct _CERT_ENCRYPTED_PRIVATE_KEY_INFO {
typedef struct _CERT_AUTHORITY_KEY_ID_INFO {
typedef struct _CERT_PRIVATE_KEY_VALIDITY {
typedef struct _CERT_KEY_ATTRIBUTES_INFO {
/* byte 0 */
/* byte 1 */
typedef struct _CERT_POLICY_ID {
typedef struct _CERT_KEY_USAGE_RESTRICTION_INFO {
typedef struct _CERT_OTHER_NAME {
typedef struct _CERT_ALT_NAME_ENTRY {
union {
typedef struct _CERT_ALT_NAME_INFO {
#define CERT_ALT_NAME_VALUE_ERR_INDEX_SHIFT 0
#define GET_CERT_ALT_NAME_ENTRY_ERR_INDEX(x) \
(((x) >> CERT_ALT_NAME_ENTRY_ERR_INDEX_SHIFT) & \
#define GET_CERT_ALT_NAME_VALUE_ERR_INDEX(x) \
typedef struct _CERT_BASIC_CONSTRAINTS_INFO {
typedef struct _CERT_BASIC_CONSTRAINTS2_INFO {
typedef struct _CERT_POLICY_QUALIFIER_INFO {
typedef struct _CERT_POLICY_INFO {
typedef struct _CERT_POLICIES_INFO {
typedef struct _CERT_POLICY_QUALIFIER_NOTICE_REFERENCE {
int *rgNoticeNumbers;
typedef struct _CERT_POLICY_QUALIFIER_USER_NOTICE {
typedef struct _CPS_URLS {
typedef struct _CERT_POLICY95_QUALIFIER1 {
typedef struct _CERT_POLICY_MAPPING {
typedef struct _CERT_POLICY_MAPPINGS_INFO {
typedef struct _CERT_POLICY_CONSTRAINTS_INFO {
typedef struct _CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY {
typedef struct _CRYPT_CONTENT_INFO {
typedef struct _CRYPT_SEQUENCE_OF_ANY {
typedef struct _CERT_AUTHORITY_KEY_ID2_INFO {
typedef struct _CERT_ACCESS_DESCRIPTION {
typedef struct _CERT_AUTHORITY_INFO_ACCESS {
typedef struct _CERT_CONTEXT {
typedef struct _CRL_ENTRY {
typedef struct _CRL_INFO {
typedef struct _CRL_DIST_POINT_NAME {
union {
#define CRL_DIST_POINT_NO_NAME 0
typedef struct _CRL_DIST_POINT {
typedef struct _CRL_DIST_POINTS_INFO {
#define GET_CRL_DIST_POINT_ERR_INDEX(x) \
#define IS_CRL_DIST_POINT_ERR_CRL_ISSUER(x) \
typedef struct _CROSS_CERT_DIST_POINTS_INFO {
#define GET_CROSS_CERT_DIST_POINT_ERR_INDEX(x) \
(((x) >> CROSS_CERT_DIST_POINT_ERR_INDEX_SHIFT) & \
typedef struct _CERT_PAIR {
typedef struct _CRL_ISSUING_DIST_POINT {
typedef struct _CERT_GENERAL_SUBTREE {
typedef struct _CERT_NAME_CONSTRAINTS_INFO {
typedef struct _CRYPT_ATTRIBUTE {
typedef struct _CRYPT_ATTRIBUTES {
typedef struct _CERT_REQUEST_INFO {
typedef struct _CERT_KEYGEN_REQUEST_INFO {
typedef struct _CERT_SIGNED_CONTENT_INFO {
typedef struct _CRL_CONTEXT {
typedef struct _CERT_DSS_PARAMETERS {
typedef struct _CERT_DH_PARAMETERS {
typedef struct _CERT_X942_DH_VALIDATION_PARAMS {
typedef struct _CERT_X942_DH_PARAMETERS {
typedef struct _CRYPT_X942_OTHER_INFO {
typedef struct _CRYPT_RC2_CBC_PARAMETERS {
typedef struct _CRYPT_SMIME_CAPABILITY {
typedef struct _CRYPT_SMIME_CAPABILITIES {
typedef struct _VTableProvStruc {
#ifdef WINE_STRICT_PROTOTYPES
#else
#endif
typedef struct _CERT_PRIVATE_KEY_INFO {
typedef struct _CTL_USAGE {
typedef struct _CTL_ENTRY {
typedef struct _CTL_INFO {
typedef struct _CTL_CONTEXT {
typedef struct _CRYPT_TIME_STAMP_REQUEST_INFO {
typedef struct _CRYPT_ENROLLMENT_NAME_VALUE_PAIR {
typedef struct _CMSG_SIGNER_INFO {
typedef struct _CERT_REVOCATION_CRL_INFO {
typedef struct _CERT_REVOCATION_INFO {
typedef struct _CERT_REVOCATION_PARA {
#endif
typedef struct _CTL_VERIFY_USAGE_PARA {
typedef struct _CTL_VERIFY_USAGE_STATUS {
typedef struct _CERT_CHAIN {
typedef struct _CERT_REVOCATION_STATUS {
typedef struct _CERT_TRUST_LIST_INFO {
typedef struct _CERT_TRUST_STATUS {
typedef struct _CERT_CHAIN_ELEMENT {
typedef struct _CERT_SIMPLE_CHAIN {
struct _CERT_CHAIN_CONTEXT {
};
typedef struct _CERT_CHAIN_POLICY_PARA {
void *pvExtraPolicyPara;
typedef struct _CERT_CHAIN_POLICY_STATUS {
void *pvExtraPolicyStatus;
#define CERT_CHAIN_POLICY_IGNORE_ALL_REV_UNKNOWN_FLAGS ( \
typedef struct _AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA {
typedef struct _AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS {
typedef struct _AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA {
typedef struct _HTTPSPolicyCallbackData {
union {
/* Values for HTTPSPolicyCallbackData's dwAuthType */
/* Values for HTTPSPolicyCallbackData's fdwChecks are defined in wininet.h */
typedef struct _CERT_USAGE_MATCH {
typedef struct _CTL_USAGE_MATCH {
typedef struct _CERT_CHAIN_PARA {
#endif
typedef struct _CERT_SYSTEM_STORE_INFO {
typedef struct _CERT_PHYSICAL_STORE_INFO {
typedef struct _CERT_SYSTEM_STORE_RELOCATE_PARA {
union {
union {
void *pvSystemStore;
void *pvArg);
void *pvReserved, void *pvArg);
typedef struct _CRYPT_ENCODE_PARA {
typedef struct _CRYPT_DECODE_PARA {
typedef struct _CERT_STORE_PROV_INFO {
void **rgpvStoreProvFunc;
typedef struct _CERT_STORE_PROV_FIND_INFO {
const void *pvFindPara;
typedef struct _CERT_CREATE_CONTEXT_PARA {
void *pvFree;
typedef struct _CRYPT_OID_FUNC_ENTRY {
void *pvFuncAddr;
typedef struct _CRYPT_OID_INFO {
union {
void *pvArg);
typedef struct _CRYPT_SIGN_MESSAGE_PARA {
void * pvHashAuxInfo;
void * pvHashEncryptionAuxInfo;
#endif
typedef struct _CRYPT_VERIFY_MESSAGE_PARA {
void * pvGetArg;
typedef struct _CRYPT_ENCRYPT_MESSAGE_PARA {
void * pvEncryptionAuxInfo;
typedef struct _CRYPT_DECRYPT_MESSAGE_PARA {
#endif
typedef struct _CRYPT_HASH_MESSAGE_PARA {
void * pvHashAuxInfo;
typedef struct _CRYPT_KEY_SIGN_MESSAGE_PARA {
void * pvHashAuxInfo;
typedef struct _CRYPT_KEY_VERIFY_MESSAGE_PARA {
typedef struct _CRYPT_URL_ARRAY {
typedef struct _CRYPT_URL_INFO {
void *pvObject);
typedef struct _CRYPT_ASYNC_RETRIEVAL_COMPLETION
{
void *pvCompletion;
typedef struct _CRYPT_BLOB_ARRAY
{
typedef struct _CRYPT_CREDENTIALS {
#define CREDENTIAL_OID_PASSWORD_CREDENTIALS \
typedef struct _CRYPT_PASSWORD_CREDENTIALSA {
typedef struct _CRYPT_PASSWORD_CREDENTIALSW {
typedef struct _CRYPT_RETRIEVE_AUX_INFO {
#define SCHEME_OID_RETRIEVE_ENCODED_OBJECT_FUNC \
"SchemeDllRetrieveEncodedObject"
#define SCHEME_OID_RETRIEVE_ENCODED_OBJECTW_FUNC \
"SchemeDllRetrieveEncodedObjectW"
/* The signature of SchemeDllRetrieveEncodedObjectW is:
BOOL WINAPI SchemeDllRetrieveEncodedObjectW(LPCWSTR pwszUrl,
LPCSTR pszObjectOid, DWORD dwRetrievalFlags, DWORD dwTimeout,
PCRYPT_BLOB_ARRAY pObject, PFN_FREE_ENCODED_OBJECT_FUNC *ppfnFreeObject,
void **ppvFreeContext, HCRYPTASYNC hAsyncRetrieve,
PCRYPT_CREDENTIALS pCredentials, PCRYPT_RETRIEVE_AUX_INFO pAuxInfo);
*/
/* The signature of ContextDllCreateObjectContext is:
BOOL WINAPI ContextDllCreateObjectContext(LPCSTR pszObjectOid,
DWORD dwRetrievalFlags, PCRYPT_BLOB_ARRAY pObject, void **ppvContxt);
*/
typedef struct _CERT_CRL_CONTEXT_PAIR
{
/* OID group IDs */
/* Algorithm IDs */
/* Algorithm Classes */
#define ALG_CLASS_ANY (0)
/* Algorithm types */
#define ALG_TYPE_ANY (0)
/* SIDs */
#define ALG_SID_ANY (0)
/* RSA SIDs */
#define ALG_SID_RSA_ANY 0
/* DSS SIDs */
#define ALG_SID_DSS_ANY 0
/* DES SIDs */
/* Diffie-Hellmans SIDs */
/* RC2 SIDs */
/* Hash SIDs */
/* SCHANNEL SIDs */
/* Algorithm Definitions */
#define CALG_SCHANNEL_MASTER_HASH (ALG_CLASS_MSG_ENCRYPT | ALG_TYPE_SECURECHANNEL | ALG_SID_SCHANNEL_MASTER_HASH)
#define CALG_SCHANNEL_MAC_KEY (ALG_CLASS_MSG_ENCRYPT | ALG_TYPE_SECURECHANNEL | ALG_SID_SCHANNEL_MAC_KEY)
#define CALG_SCHANNEL_ENC_KEY (ALG_CLASS_MSG_ENCRYPT | ALG_TYPE_SECURECHANNEL | ALG_SID_SCHANNEL_ENC_KEY)
/* Protocol Flags */
/* Provider names */
#if defined(__GNUC__)
'B','a','s','e',' ','C','r','y','p','t','o','g','r','a','p','h','i','c',' ', \
'P','r','o','v','i','d','e','r',' ','v','1','.','0',0 }
#else
'B','a','s','e',' ','C','r','y','p','t','o','g','r','a','p','h','i','c',' ',
'P','r','o','v','i','d','e','r',' ','v','1','.','0',0 };
#endif
#if defined(__GNUC__)
'E','n','h','a','n','c','e','d',' ','C','r','y','p','t','o','g','r','a','p','h','i','c',' ', \
'P','r','o','v','i','d','e','r',' ','v','1','.','0',0 }
#else
'E','n','h','a','n','c','e','d',' ','C','r','y','p','t','o','g','r','a','p','h','i','c',' ',
'P','r','o','v','i','d','e','r',' ','v','1','.','0',0 };
#endif
#if defined(__GNUC__)
'S','t','r','o','n','g',' ','C','r','y','p','t','o','g','r','a','p','h','i','c',' ', \
'P','r','o','v','i','d','e','r',0 }
#else
'S','t','r','o','n','g',' ','C','r','y','p','t','o','g','r','a','p','h','i','c',' ',
'P','r','o','v','i','d','e','r',0 };
#endif
#if defined(__GNUC__)
'R','S','A',' ','S','i','g','n','a','t','u','r','e',' ', \
'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
#else
'R','S','A',' ','S','i','g','n','a','t','u','r','e',' ',
'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
#endif
#if defined(__GNUC__)
'R','S','A',' ','S','C','h','a','n','n','e','l',' ', \
'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
#else
'R','S','A',' ','S','C','h','a','n','n','e','l',' ',
'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
#endif
#if defined(__GNUC__)
'B','a','s','e',' ','D','S','S',' ', \
'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
#else
'B','a','s','e',' ','D','S','S',' ',
'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
#endif
#if defined(__GNUC__)
'B','a','s','e',' ','D','S','S',' ','a','n','d',' ', \
'D','i','f','f','i','e','-','H','e','l','l','m','a','n',' ', \
'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
#else
'B','a','s','e',' ','D','S','S',' ','a','n','d',' ',
'D','i','f','f','i','e','-','H','e','l','l','m','a','n',' ',
'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
#endif
#if defined(__GNUC__)
'E','n','h','a','n','c','e','d',' ','D','S','S',' ','a','n','d',' ', \
'D','i','f','f','i','e','-','H','e','l','l','m','a','n',' ', \
'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
#else
'E','n','h','a','n','c','e','d',' ','D','S','S',' ','a','n','d',' ',
'D','i','f','f','i','e','-','H','e','l','l','m','a','n',' ',
'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
#endif
#if defined(__GNUC__)
'D','H',' ','S','C','h','a','n','n','e','l',' ', \
'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
#else
'D','H',' ','S','C','h','a','n','n','e','l',' ',
'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
#endif
#if defined(__GNUC__)
'B','a','s','e',' ','S','m','a','r','t',' ','C','a','r','d',' ', \
'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
#else
'B','a','s','e',' ','S','m','a','r','t',' ','C','a','r','d',' ',
'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
#endif
#if defined(__GNUC__)
'E','n','h','a','n','c','e','d',' ','R','S','A',' ','a','n','d',' ','A','E','S',' ',\
'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 }
#else
'E','n','h','a','n','c','e','d',' ','R','S','A',' ','a','n','d',' ','A','E','S',' ',
'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 };
#endif
#define MS_ENH_RSA_AES_PROV_XP_A "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)"
#if defined(__GNUC__)
'E','n','h','a','n','c','e','d',' ','R','S','A',' ','a','n','d',' ','A','E','S',' ',\
'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',' ',\
'(','P','r','o','t','o','t','y','p','e',')',0 }
# define MS_ENH_RSA_AES_PROV_XP_W L"Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)"
#else
'E','n','h','a','n','c','e','d',' ','R','S','A',' ','a','n','d',' ','A','E','S',' ',
'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',' ',
'(','P','r','o','t','o','t','y','p','e',')',0 };
#endif
/* Key Specs*/
/* Provider Types */
/* FLAGS Section */
/* CryptAcquireContext */
/* Crypt{Get|Set}Provider */
/* Values returned by CryptGetProvParam of PP_KEYSTORAGE */
/* Values for KP_PADDING */
/* Crypt{Get,Set}HashParam */
/* Crypt{Get,Set}KeyParam */
/* Crypt*Key */
/* CryptExportKey */
/* CryptHashSessionKey */
/* Crypt{Protect,Unprotect}Data PROMPTSTRUCT flags */
/* Crypt{Protect,Unprotect}Data flags */
/* Blob Types */
/* cert store provider types */
/* types for CertOpenStore dwEncodingType */
/* system store locations */
/* system store location ids */
/* hkcu */
/* hklm */
/* hklm\Software\Microsoft\Cryptography\Services */
/* HKEY_USERS */
/* hkcu\Software\Policies\Microsoft\SystemCertificates */
/* hklm\Software\Policies\Microsoft\SystemCertificates */
/* hklm\Software\Microsoft\EnterpriseCertificates */
/* system store location values */
#define CERT_SYSTEM_STORE_CURRENT_USER \
#define CERT_SYSTEM_STORE_LOCAL_MACHINE \
#define CERT_SYSTEM_STORE_CURRENT_SERVICE \
#define CERT_SYSTEM_STORE_SERVICES \
#define CERT_SYSTEM_STORE_USERS \
#if defined(__GNUC__)
{'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t',\
'\\','S','y','s','t','e','m','C','e','r','t','i','f','i','c','a','t','e','s',\
0 }
{'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\',\
'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r',\
't','i','f','i','c','a','t','e','s',0 }
#define CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH \
L"Software\\Microsoft\\SystemCertificates"
#define CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH \
L"Software\\Policies\\Microsoft\\SystemCertificates"
#else
{'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\',
'S','y','s','t','e','m','C','e','r','t','i','f','i','c','a','t','e','s',0 };
{'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\',
'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r',
't','i','f','i','c','a','t','e','s',0 };
#endif
#if defined(__GNUC__)
{'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\',\
'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r',\
't','i','f','i','c','a','t','e','s','\\','E','F','S',0 }
#else
{'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\',
'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r',
't','i','f','i','c','a','t','e','s','\\','E','F','S',0 };
#endif
#if defined(__GNUC__)
{'\\','R','o','o','t','\\','P','r','o','t','e','c','t','e','d','R','o','o','t',\
's',0 }
{'F','l','a','g','s',0 }
#else
{ '\\','R','o','o','t','\\','P','r','o','t','e','c','t','e','d','R','o','o',
't','s',0 };
#endif
#if defined(__GNUC__)
{'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\',\
'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r',\
't','i','f','i','c','a','t','e','s','\\','T','r','u','s','t','e','d',\
'P','u','b','l','i','s','h','e','r','\\','S','a','f','e','r',0 }
CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"\\TrustedPublisher\\Safer"
#else
{'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\',
'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r',
't','i','f','i','c','a','t','e','s','\\','T','r','u','s','t','e','d',
'P','u','b','l','i','s','h','e','r','\\','S','a','f','e','r',0 };
#endif
#if defined(__GNUC__)
{'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\',\
'S','y','s','t','e','m','C','e','r','t','i','f','i','c','a','t','e','s','\\',\
'T','r','u','s','t','e','d','P','u','b','l','i','s','h','e','r','\\',\
'S','a','f','e','r',0 }
{'A','u','t','h','e','n','t','i','c','o','d','e','F','l','a','g','s',0 };
CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH L"\\TrustedPublisher\\Safer"
#else
{'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\',
'S','y','s','t','e','m','C','e','r','t','i','f','i','c','a','t','e','s','\\',
'T','r','u','s','t','e','d','P','u','b','l','i','s','h','e','r','\\',
'S','a','f','e','r',0 };
{ 'A','u','t','h','e','n','t','i','c','o','d','e','F','l','a','g','s',0 };
#endif
/* flags for CertOpenStore dwFlags */
/* CertCloseStore dwFlags */
/* dwAddDisposition */
/* Installable OID function defs */
"CertDllVerifyCertificateChainPolicy"
#if defined(__GNUC__)
# define CRYPT_OID_REG_FUNC_NAME_VALUE_NAME \
# define CRYPT_OID_REG_FLAGS_VALUE_NAME \
#else
{ 'F','u','n','c','N','a','m','e',0 };
{ 'C','r','y','p','t','F','l','a','g','s',0 };
#endif
#define CRYPT_REGISTER_FIRST_INDEX 0
/* values for CERT_STORE_PROV_INFO's dwStoreProvFlags */
/* function indices */
#define CERT_STORE_PROV_CLOSE_FUNC 0
/* physical store dwFlags, also used by CertAddStoreToCollection as
* dwUpdateFlags
*/
/* dwFlag values for CertEnumPhysicalStore callback */
/* predefined store names */
#if defined(__GNUC__)
{'.','D','e','f','a','u','l','t','0'}
{'.','G','r','o','u','p','P','o','l','i','c','y',0}
{'.','L','o','c','a','l','M','a','c','h','i','n','e',0}
{'.','U','s','e','r','C','e','r','t','i','f','i','c','a','t','e',0}
{'.','L','o','c','a','l','M','a','c','h','i','n','e','G','r','o','u','p',\
'P','o','l','i','c','y',0}
{'.','E','n','t','e','r','p','r','i','s','e',0}
{'.','A','u','t','h','R','o','o','t',0}
# define CERT_PHYSICAL_STORE_DEFAULT_NAME \
L".Default"
# define CERT_PHYSICAL_STORE_GROUP_POLICY_NAME \
L".GroupPolicy"
# define CERT_PHYSICAL_STORE_LOCAL_MACHINE_NAME \
L".LocalMachine"
# define CERT_PHYSICAL_STORE_DS_USER_CERTIFICATE_NAME \
L".UserCertificate"
L".LocalMachineGroupPolicy"
# define CERT_PHYSICAL_STORE_ENTERPRISE_NAME \
L".Enterprise"
# define CERT_PHYSICAL_STORE_AUTH_ROOT_NAME \
L".AuthRoot"
#else
{'.','D','e','f','a','u','l','t','0'};
{'.','G','r','o','u','p','P','o','l','i','c','y',0};
{'.','L','o','c','a','l','M','a','c','h','i','n','e',0};
{'.','U','s','e','r','C','e','r','t','i','f','i','c','a','t','e',0};
{'.','L','o','c','a','l','M','a','c','h','i','n','e','G','r','o','u','p',
'P','o','l','i','c','y',0};
{'.','E','n','t','e','r','p','r','i','s','e',0};
{'.','A','u','t','h','R','o','o','t',0};
#endif
/* cert system store flags */
/* CertFindChainInStore dwFindType types */
/* CertSaveStore dwSaveAs values */
/* CertSaveStore dwSaveTo values */
#define CERT_V1 0
/* CERT_REQUEST_INFO versions */
#define CERT_REQUEST_V1 0
/* CERT_KEYGEN_REQUEST_INFO versions */
#define CERT_KEYGEN_REQUEST_V1 0
/* CRL versions */
#define CRL_V1 0
/* CTL versions */
#define CTL_V1 0
/* Certificate, CRL, CTL property IDs */
/* 31 -- unused?
32 -- cert prop id
33 -- CRL prop id
34 -- CTL prop id
35 -- KeyId prop id
36-63 -- reserved
*/
#define IS_CERT_HASH_PROP_ID(x) \
((x) == CERT_SHA1_HASH_PROP_ID || (x) == CERT_MD5_HASH_PROP_ID || \
(x) == CERT_SIGNATURE_HASH_PROP_ID)
#define IS_PUBKEY_HASH_PROP_ID(x) \
((x) == CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID || \
#define IS_CHAIN_HASH_PROP_ID(x) \
((x) == CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID || \
(x) == CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID || \
(x) == CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID || \
/* access state flags */
/* CertSetCertificateContextProperty flags */
/* CERT_RDN attribute dwValueType types */
#define CERT_RDN_ANY_TYPE 0
/* CERT_RDN attribute dwValueType flags */
#define IS_CERT_RDN_CHAR_STRING(x) \
(((x) & CERT_RDN_TYPE_MASK) >= CERT_RDN_NUMERIC_STRING)
/* CertIsRDNAttrsInCertificateName flags */
/* CRL reason codes */
#define CRL_REASON_UNSPECIFIED 0
/* CertControlStore control types */
/* cert store properties */
/* CertCreateContext flags */
#define CERT_COMPARE_ANY 0
/* values of dwFindType for CertFind*InStore */
#define CERT_FIND_ANY \
#define CERT_FIND_SHA1_HASH \
#define CERT_FIND_MD5_HASH \
#define CERT_FIND_SIGNATURE_HASH \
#define CERT_FIND_KEY_IDENTIFIER \
#define CERT_FIND_PROPERTY \
#define CERT_FIND_PUBLIC_KEY \
#define CERT_FIND_SUBJECT_NAME \
#define CERT_FIND_SUBJECT_ATTR \
#define CERT_FIND_ISSUER_NAME \
#define CERT_FIND_ISSUER_ATTR \
#define CERT_FIND_SUBJECT_STR_A \
#define CERT_FIND_SUBJECT_STR_W \
#define CERT_FIND_ISSUER_STR_A \
#define CERT_FIND_ISSUER_STR_W \
#define CERT_FIND_KEY_SPEC \
#define CERT_FIND_ENHKEY_USAGE \
#define CERT_FIND_SUBJECT_CERT \
#define CERT_FIND_ISSUER_OF \
#define CERT_FIND_EXISTING \
#define CERT_FIND_CERT_ID \
#define CERT_FIND_CROSS_CERT_DIST_POINTS \
#define CERT_FIND_PUBKEY_MD5_HASH \
#define CRL_FIND_ANY 0
typedef struct _CRL_FIND_ISSUED_FOR_PARA
{
#define CTL_FIND_ANY 0
typedef struct _CTL_FIND_USAGE_PARA
{
typedef struct _CTL_FIND_SUBJECT_PARA
{
void *pvSubject;
/* PFN_CERT_STORE_PROV_WRITE_CERT dwFlags values */
/* CertAddSerializedElementToStore context types */
#define CERT_STORE_ALL_CONTEXT_FLAG ~0U
#define CERT_STORE_CERTIFICATE_CONTEXT_FLAG \
/* CryptBinaryToString/CryptStringToBinary flags */
/* OIDs */
#ifndef szOID_SERVER_GATED_CRYPTO
#endif
#ifndef szOID_SGC_NETSCAPE
#endif
#ifndef szOID_DRM
#endif
#ifndef szOID_DRM_INDIVIDUALIZATION
#endif
#ifndef szOID_LICENSES
#endif
#ifndef szOID_LICENSE_SERVER
#endif
#ifndef szOID_KP_SMARTCARD_LOGON
#endif
#ifndef szOID_NT_PRINCIPAL_NAME
#endif
#ifndef szOID_CERTSRV_CA_VERSION
#endif
#ifndef szOID_SERIALIZED
#endif
#ifndef szOID_PRODUCT_UPDATE
#endif
/* Bits for szOID_NETSCAPE_CERT_TYPE */
#define CRYPT_ENCODE_DECODE_NONE 0
/* subject types for CryptVerifyCertificateSignatureEx */
/* issuer types for CryptVerifyCertificateSignatureEx */
/* Certificate name string types and flags */
/* CryptFormatObject flags */
/* CryptQueryObject types and flags */
#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE \
#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT \
#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL \
#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL \
#define CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED \
#define CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED \
#define CERT_QUERY_CONTENT_FLAG_ALL \
#define CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED \
#define CERT_QUERY_FORMAT_FLAG_ALL \
/* flags for CryptAcquireCertificatePrivateKey */
/* flags for CryptFindCertificateKeyProvInfo */
/* Chain engines and chains */
typedef struct _CERT_CHAIN_ENGINE_CONFIG
{
/* message-related definitions */
typedef struct _CMSG_STREAM_INFO
{
void *pvArg;
typedef struct _CERT_ISSUER_SERIAL_NUMBER
{
typedef struct _CERT_ID
{
union {
#ifndef USE_WC_PREFIX
#define CMSG_ALL_FLAGS ~0U
#else
#define WC_CMSG_ALL_FLAGS ~0U
#endif
typedef struct _CMSG_SIGNER_ENCODE_INFO
{
void *pvHashAuxInfo;
void *pvHashEncryptionAuxInfo;
#endif
typedef struct _CMSG_SIGNED_ENCODE_INFO
{
#endif
typedef struct _CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO
{
void *pvKeyEncryptionAuxInfo;
typedef struct _CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO
{
typedef struct _CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO
{
void *pvKeyEncryptionAuxInfo;
void *pvKeyWrapAuxInfo;
union {
typedef struct _CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO
{
void *pvKeyEncryptionAuxInfo;
union {
void *pvKeyEncryptionKey;
typedef struct _CMSG_RECIPIENT_ENCODE_INFO
{
union {
typedef struct _CMSG_ENVELOPED_ENCODE_INFO
{
void *pvEncryptionAuxInfo;
#endif
typedef struct _CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO
{
typedef struct _CMSG_HASHED_ENCODE_INFO
{
void *pvHashAuxInfo;
typedef struct _CMSG_ENCRYPTED_ENCODE_INFO
{
void *pvEncryptionAuxInfo;
typedef struct _CMSG_CTRL_DECRYPT_PARA
{
typedef struct _CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA
{
typedef struct _CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA
{
typedef struct _CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA {
void *pvSigner;
typedef struct _CMSG_CMS_SIGNER_INFO {
#define CMSG_HASHED_DATA_V0 0
#define CMSG_ENVELOPED_DATA_V0 0
typedef struct _CMSG_KEY_TRANS_RECIPIENT_INFO {
typedef struct _CMSG_RECIPIENT_ENCRYPTED_KEY_INFO {
typedef struct _CMSG_KEY_AGREE_RECIPIENT_INFO {
union {
typedef struct _CMSG_MAIL_LIST_RECIPIENT_INFO {
typedef struct _CMSG_CMS_RECIPIENT_INFO {
union {
#define CMSG_ENVELOPED_RECIPIENT_V0 0
typedef struct _CMSG_CONTENT_ENCRYPT_INFO {
void *pvEncryptionAuxInfo;
typedef struct _CMSG_KEY_TRANS_ENCRYPT_INFO {
typedef struct _CMSG_CTRL_KEY_TRANS_DECRYPT_PARA {
void *pvReserved);
/* CryptMsgGetAndVerifySigner flags */
/* CryptMsgSignCTL flags */
/* CryptMsgEncodeAndSignCTL flags */
/* PFXImportCertStore flags */
/* PFXExportCertStore flags */
/* function declarations */
/* advapi32.dll */
WINADVAPI BOOL WINAPI CryptImportKey (HCRYPTPROV, const BYTE *, DWORD, HCRYPTKEY, DWORD, HCRYPTKEY *);
WINADVAPI BOOL WINAPI CryptVerifySignatureA (HCRYPTHASH, const BYTE *, DWORD, HCRYPTKEY, LPCSTR, DWORD);
WINADVAPI BOOL WINAPI CryptVerifySignatureW (HCRYPTHASH, const BYTE *, DWORD, HCRYPTKEY, LPCWSTR, DWORD);
/* crypt32.dll functions */
/* cert store functions */
#define CertAddEncodedCertificateToSystemStore \
const void** ppvContext);
/* PFX functions */
/* cryptnet.dll functions */
/* Not found in crypt32.dll but in softpub.dll */
#ifdef __cplusplus
}
#endif
#endif