crypt32: Move context interface definition to common header.
This commit is contained in:
parent
4316025294
commit
d9a027952d
|
@ -43,6 +43,48 @@ HCRYPTPROV CRYPT_GetDefaultProvider(void);
|
||||||
void crypt_oid_init(HINSTANCE hinst);
|
void crypt_oid_init(HINSTANCE hinst);
|
||||||
void crypt_oid_free(void);
|
void crypt_oid_free(void);
|
||||||
|
|
||||||
|
/* Some typedefs that make it easier to abstract which type of context we're
|
||||||
|
* working with.
|
||||||
|
*/
|
||||||
|
typedef const void *(WINAPI *CreateContextFunc)(DWORD dwCertEncodingType,
|
||||||
|
const BYTE *pbCertEncoded, DWORD cbCertEncoded);
|
||||||
|
typedef BOOL (WINAPI *AddContextToStoreFunc)(HCERTSTORE hCertStore,
|
||||||
|
const void *context, DWORD dwAddDisposition, const void **ppStoreContext);
|
||||||
|
typedef BOOL (WINAPI *AddEncodedContextToStoreFunc)(HCERTSTORE hCertStore,
|
||||||
|
DWORD dwCertEncodingType, const BYTE *pbEncoded, DWORD cbEncoded,
|
||||||
|
DWORD dwAddDisposition, const void **ppContext);
|
||||||
|
typedef const void *(WINAPI *DuplicateContextFunc)(const void *context);
|
||||||
|
typedef const void *(WINAPI *EnumContextsInStoreFunc)(HCERTSTORE hCertStore,
|
||||||
|
const void *pPrevContext);
|
||||||
|
typedef BOOL (WINAPI *GetContextPropertyFunc)(const void *context,
|
||||||
|
DWORD dwPropID, void *pvData, DWORD *pcbData);
|
||||||
|
typedef BOOL (WINAPI *SetContextPropertyFunc)(const void *context,
|
||||||
|
DWORD dwPropID, DWORD dwFlags, const void *pvData);
|
||||||
|
typedef BOOL (WINAPI *SerializeElementFunc)(const void *context, DWORD dwFlags,
|
||||||
|
BYTE *pbElement, DWORD *pcbElement);
|
||||||
|
typedef BOOL (WINAPI *FreeContextFunc)(const void *context);
|
||||||
|
typedef BOOL (WINAPI *DeleteContextFunc)(const void *context);
|
||||||
|
|
||||||
|
/* An abstract context (certificate, CRL, or CTL) interface */
|
||||||
|
typedef struct _WINE_CONTEXT_INTERFACE
|
||||||
|
{
|
||||||
|
CreateContextFunc create;
|
||||||
|
AddContextToStoreFunc addContextToStore;
|
||||||
|
AddEncodedContextToStoreFunc addEncodedToStore;
|
||||||
|
DuplicateContextFunc duplicate;
|
||||||
|
EnumContextsInStoreFunc enumContextsInStore;
|
||||||
|
GetContextPropertyFunc getProp;
|
||||||
|
SetContextPropertyFunc setProp;
|
||||||
|
SerializeElementFunc serialize;
|
||||||
|
FreeContextFunc free;
|
||||||
|
DeleteContextFunc deleteFromStore;
|
||||||
|
} WINE_CONTEXT_INTERFACE, *PWINE_CONTEXT_INTERFACE;
|
||||||
|
typedef const WINE_CONTEXT_INTERFACE *PCWINE_CONTEXT_INTERFACE;
|
||||||
|
|
||||||
|
extern PCWINE_CONTEXT_INTERFACE pCertInterface;
|
||||||
|
extern PCWINE_CONTEXT_INTERFACE pCRLInterface;
|
||||||
|
extern PCWINE_CONTEXT_INTERFACE pCTLInterface;
|
||||||
|
|
||||||
/* Helper function for store reading functions and
|
/* Helper function for store reading functions and
|
||||||
* CertAddSerializedElementToStore. Returns a context of the appropriate type
|
* CertAddSerializedElementToStore. Returns a context of the appropriate type
|
||||||
* if it can, or NULL otherwise. Doesn't validate any of the properties in
|
* if it can, or NULL otherwise. Doesn't validate any of the properties in
|
||||||
|
|
|
@ -26,77 +26,6 @@
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(crypt);
|
WINE_DEFAULT_DEBUG_CHANNEL(crypt);
|
||||||
|
|
||||||
/* Some typedefs that make it easier to abstract which type of context we're
|
|
||||||
* working with.
|
|
||||||
*/
|
|
||||||
typedef const void *(WINAPI *CreateContextFunc)(DWORD dwCertEncodingType,
|
|
||||||
const BYTE *pbCertEncoded, DWORD cbCertEncoded);
|
|
||||||
typedef BOOL (WINAPI *AddContextToStoreFunc)(HCERTSTORE hCertStore,
|
|
||||||
const void *context, DWORD dwAddDisposition, const void **ppStoreContext);
|
|
||||||
typedef BOOL (WINAPI *AddEncodedContextToStoreFunc)(HCERTSTORE hCertStore,
|
|
||||||
DWORD dwCertEncodingType, const BYTE *pbEncoded, DWORD cbEncoded,
|
|
||||||
DWORD dwAddDisposition, const void **ppContext);
|
|
||||||
typedef const void *(WINAPI *EnumContextsInStoreFunc)(HCERTSTORE hCertStore,
|
|
||||||
const void *pPrevContext);
|
|
||||||
typedef BOOL (WINAPI *GetContextPropertyFunc)(const void *context,
|
|
||||||
DWORD dwPropID, void *pvData, DWORD *pcbData);
|
|
||||||
typedef BOOL (WINAPI *SetContextPropertyFunc)(const void *context,
|
|
||||||
DWORD dwPropID, DWORD dwFlags, const void *pvData);
|
|
||||||
typedef BOOL (WINAPI *SerializeElementFunc)(const void *context, DWORD dwFlags,
|
|
||||||
BYTE *pbElement, DWORD *pcbElement);
|
|
||||||
typedef BOOL (WINAPI *FreeContextFunc)(const void *context);
|
|
||||||
typedef BOOL (WINAPI *DeleteContextFunc)(const void *context);
|
|
||||||
|
|
||||||
/* An abstract context (certificate, CRL, or CTL) interface */
|
|
||||||
typedef struct _WINE_CONTEXT_INTERFACE
|
|
||||||
{
|
|
||||||
CreateContextFunc create;
|
|
||||||
AddContextToStoreFunc addContextToStore;
|
|
||||||
AddEncodedContextToStoreFunc addEncodedToStore;
|
|
||||||
EnumContextsInStoreFunc enumContextsInStore;
|
|
||||||
GetContextPropertyFunc getProp;
|
|
||||||
SetContextPropertyFunc setProp;
|
|
||||||
SerializeElementFunc serialize;
|
|
||||||
FreeContextFunc free;
|
|
||||||
DeleteContextFunc deleteFromStore;
|
|
||||||
} WINE_CONTEXT_INTERFACE, *PWINE_CONTEXT_INTERFACE;
|
|
||||||
|
|
||||||
static const WINE_CONTEXT_INTERFACE gCertInterface = {
|
|
||||||
(CreateContextFunc)CertCreateCertificateContext,
|
|
||||||
(AddContextToStoreFunc)CertAddCertificateContextToStore,
|
|
||||||
(AddEncodedContextToStoreFunc)CertAddEncodedCertificateToStore,
|
|
||||||
(EnumContextsInStoreFunc)CertEnumCertificatesInStore,
|
|
||||||
(GetContextPropertyFunc)CertGetCertificateContextProperty,
|
|
||||||
(SetContextPropertyFunc)CertSetCertificateContextProperty,
|
|
||||||
(SerializeElementFunc)CertSerializeCertificateStoreElement,
|
|
||||||
(FreeContextFunc)CertFreeCertificateContext,
|
|
||||||
(DeleteContextFunc)CertDeleteCertificateFromStore,
|
|
||||||
};
|
|
||||||
|
|
||||||
static const WINE_CONTEXT_INTERFACE gCRLInterface = {
|
|
||||||
(CreateContextFunc)CertCreateCRLContext,
|
|
||||||
(AddContextToStoreFunc)CertAddCRLContextToStore,
|
|
||||||
(AddEncodedContextToStoreFunc)CertAddEncodedCRLToStore,
|
|
||||||
(EnumContextsInStoreFunc)CertEnumCRLsInStore,
|
|
||||||
(GetContextPropertyFunc)CertGetCRLContextProperty,
|
|
||||||
(SetContextPropertyFunc)CertSetCRLContextProperty,
|
|
||||||
(SerializeElementFunc)CertSerializeCRLStoreElement,
|
|
||||||
(FreeContextFunc)CertFreeCRLContext,
|
|
||||||
(DeleteContextFunc)CertDeleteCRLFromStore,
|
|
||||||
};
|
|
||||||
|
|
||||||
static const WINE_CONTEXT_INTERFACE gCTLInterface = {
|
|
||||||
(CreateContextFunc)CertCreateCTLContext,
|
|
||||||
(AddContextToStoreFunc)CertAddCTLContextToStore,
|
|
||||||
(AddEncodedContextToStoreFunc)CertAddEncodedCTLToStore,
|
|
||||||
(EnumContextsInStoreFunc)CertEnumCTLsInStore,
|
|
||||||
(GetContextPropertyFunc)CertGetCTLContextProperty,
|
|
||||||
(SetContextPropertyFunc)CertSetCTLContextProperty,
|
|
||||||
(SerializeElementFunc)CertSerializeCTLStoreElement,
|
|
||||||
(FreeContextFunc)CertFreeCTLContext,
|
|
||||||
(DeleteContextFunc)CertDeleteCTLFromStore,
|
|
||||||
};
|
|
||||||
|
|
||||||
/* An extended certificate property in serialized form is prefixed by this
|
/* An extended certificate property in serialized form is prefixed by this
|
||||||
* header.
|
* header.
|
||||||
*/
|
*/
|
||||||
|
@ -339,13 +268,13 @@ const void *CRYPT_ReadSerializedElement(const BYTE *pbElement, DWORD cbElement,
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case CERT_STORE_CERTIFICATE_CONTEXT:
|
case CERT_STORE_CERTIFICATE_CONTEXT:
|
||||||
contextInterface = &gCertInterface;
|
contextInterface = pCertInterface;
|
||||||
break;
|
break;
|
||||||
case CERT_STORE_CRL_CONTEXT:
|
case CERT_STORE_CRL_CONTEXT:
|
||||||
contextInterface = &gCRLInterface;
|
contextInterface = pCRLInterface;
|
||||||
break;
|
break;
|
||||||
case CERT_STORE_CTL_CONTEXT:
|
case CERT_STORE_CTL_CONTEXT:
|
||||||
contextInterface = &gCTLInterface;
|
contextInterface = pCTLInterface;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
SetLastError(E_INVALIDARG);
|
SetLastError(E_INVALIDARG);
|
||||||
|
@ -482,13 +411,13 @@ BOOL WINAPI CertAddSerializedElementToStore(HCERTSTORE hCertStore,
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case CERT_STORE_CERTIFICATE_CONTEXT:
|
case CERT_STORE_CERTIFICATE_CONTEXT:
|
||||||
contextInterface = &gCertInterface;
|
contextInterface = pCertInterface;
|
||||||
break;
|
break;
|
||||||
case CERT_STORE_CRL_CONTEXT:
|
case CERT_STORE_CRL_CONTEXT:
|
||||||
contextInterface = &gCRLInterface;
|
contextInterface = pCRLInterface;
|
||||||
break;
|
break;
|
||||||
case CERT_STORE_CTL_CONTEXT:
|
case CERT_STORE_CTL_CONTEXT:
|
||||||
contextInterface = &gCTLInterface;
|
contextInterface = pCTLInterface;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
SetLastError(E_INVALIDARG);
|
SetLastError(E_INVALIDARG);
|
||||||
|
|
|
@ -44,43 +44,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(crypt);
|
||||||
|
|
||||||
#define WINE_CRYPTCERTSTORE_MAGIC 0x74726563
|
#define WINE_CRYPTCERTSTORE_MAGIC 0x74726563
|
||||||
|
|
||||||
/* Some typedefs that make it easier to abstract which type of context we're
|
|
||||||
* working with.
|
|
||||||
*/
|
|
||||||
typedef const void *(WINAPI *CreateContextFunc)(DWORD dwCertEncodingType,
|
|
||||||
const BYTE *pbCertEncoded, DWORD cbCertEncoded);
|
|
||||||
typedef BOOL (WINAPI *AddContextToStoreFunc)(HCERTSTORE hCertStore,
|
|
||||||
const void *context, DWORD dwAddDisposition, const void **ppStoreContext);
|
|
||||||
typedef BOOL (WINAPI *AddEncodedContextToStoreFunc)(HCERTSTORE hCertStore,
|
|
||||||
DWORD dwCertEncodingType, const BYTE *pbEncoded, DWORD cbEncoded,
|
|
||||||
DWORD dwAddDisposition, const void **ppContext);
|
|
||||||
typedef const void *(WINAPI *DuplicateContextFunc)(const void *context);
|
|
||||||
typedef const void *(WINAPI *EnumContextsInStoreFunc)(HCERTSTORE hCertStore,
|
|
||||||
const void *pPrevContext);
|
|
||||||
typedef BOOL (WINAPI *GetContextPropertyFunc)(const void *context,
|
|
||||||
DWORD dwPropID, void *pvData, DWORD *pcbData);
|
|
||||||
typedef BOOL (WINAPI *SetContextPropertyFunc)(const void *context,
|
|
||||||
DWORD dwPropID, DWORD dwFlags, const void *pvData);
|
|
||||||
typedef BOOL (WINAPI *SerializeElementFunc)(const void *context, DWORD dwFlags,
|
|
||||||
BYTE *pbElement, DWORD *pcbElement);
|
|
||||||
typedef BOOL (WINAPI *FreeContextFunc)(const void *context);
|
|
||||||
typedef BOOL (WINAPI *DeleteContextFunc)(const void *context);
|
|
||||||
|
|
||||||
/* An abstract context (certificate, CRL, or CTL) interface */
|
|
||||||
typedef struct _WINE_CONTEXT_INTERFACE
|
|
||||||
{
|
|
||||||
CreateContextFunc create;
|
|
||||||
AddContextToStoreFunc addContextToStore;
|
|
||||||
AddEncodedContextToStoreFunc addEncodedToStore;
|
|
||||||
DuplicateContextFunc duplicate;
|
|
||||||
EnumContextsInStoreFunc enumContextsInStore;
|
|
||||||
GetContextPropertyFunc getProp;
|
|
||||||
SetContextPropertyFunc setProp;
|
|
||||||
SerializeElementFunc serialize;
|
|
||||||
FreeContextFunc free;
|
|
||||||
DeleteContextFunc deleteFromStore;
|
|
||||||
} WINE_CONTEXT_INTERFACE, *PWINE_CONTEXT_INTERFACE;
|
|
||||||
|
|
||||||
static const WINE_CONTEXT_INTERFACE gCertInterface = {
|
static const WINE_CONTEXT_INTERFACE gCertInterface = {
|
||||||
(CreateContextFunc)CertCreateCertificateContext,
|
(CreateContextFunc)CertCreateCertificateContext,
|
||||||
(AddContextToStoreFunc)CertAddCertificateContextToStore,
|
(AddContextToStoreFunc)CertAddCertificateContextToStore,
|
||||||
|
@ -93,6 +56,7 @@ static const WINE_CONTEXT_INTERFACE gCertInterface = {
|
||||||
(FreeContextFunc)CertFreeCertificateContext,
|
(FreeContextFunc)CertFreeCertificateContext,
|
||||||
(DeleteContextFunc)CertDeleteCertificateFromStore,
|
(DeleteContextFunc)CertDeleteCertificateFromStore,
|
||||||
};
|
};
|
||||||
|
PCWINE_CONTEXT_INTERFACE pCertInterface = &gCertInterface;
|
||||||
|
|
||||||
static const WINE_CONTEXT_INTERFACE gCRLInterface = {
|
static const WINE_CONTEXT_INTERFACE gCRLInterface = {
|
||||||
(CreateContextFunc)CertCreateCRLContext,
|
(CreateContextFunc)CertCreateCRLContext,
|
||||||
|
@ -106,6 +70,7 @@ static const WINE_CONTEXT_INTERFACE gCRLInterface = {
|
||||||
(FreeContextFunc)CertFreeCRLContext,
|
(FreeContextFunc)CertFreeCRLContext,
|
||||||
(DeleteContextFunc)CertDeleteCRLFromStore,
|
(DeleteContextFunc)CertDeleteCRLFromStore,
|
||||||
};
|
};
|
||||||
|
PCWINE_CONTEXT_INTERFACE pCRLInterface = &gCRLInterface;
|
||||||
|
|
||||||
static const WINE_CONTEXT_INTERFACE gCTLInterface = {
|
static const WINE_CONTEXT_INTERFACE gCTLInterface = {
|
||||||
(CreateContextFunc)CertCreateCTLContext,
|
(CreateContextFunc)CertCreateCTLContext,
|
||||||
|
@ -119,6 +84,7 @@ static const WINE_CONTEXT_INTERFACE gCTLInterface = {
|
||||||
(FreeContextFunc)CertFreeCTLContext,
|
(FreeContextFunc)CertFreeCTLContext,
|
||||||
(DeleteContextFunc)CertDeleteCTLFromStore,
|
(DeleteContextFunc)CertDeleteCTLFromStore,
|
||||||
};
|
};
|
||||||
|
PCWINE_CONTEXT_INTERFACE pCTLInterface = &gCTLInterface;
|
||||||
|
|
||||||
struct WINE_CRYPTCERTSTORE;
|
struct WINE_CRYPTCERTSTORE;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue