You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
199 lines
5.2 KiB
199 lines
5.2 KiB
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows NT Security
|
|
// Copyright (C) Microsoft Corporation, 1997 - 1999
|
|
//
|
|
// File: orm.h
|
|
//
|
|
// Contents: Object Retrieval Manager class definition
|
|
//
|
|
// History: 24-Jul-97 kirtd Created
|
|
// 01-Jan-02 philh Changed to internally use UNICODE Urls
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
#if !defined(__ORM_H__)
|
|
#define __ORM_H__
|
|
|
|
//
|
|
// IRefCountedObject. Abstract base class to provide reference counting
|
|
//
|
|
|
|
class IRefCountedObject
|
|
{
|
|
public:
|
|
|
|
virtual VOID AddRef () = 0;
|
|
virtual VOID Release () = 0;
|
|
};
|
|
|
|
//
|
|
// IObjectRetriever. Abstract base class for object retrieval
|
|
//
|
|
|
|
class IObjectRetriever : public IRefCountedObject
|
|
{
|
|
public:
|
|
|
|
virtual BOOL RetrieveObjectByUrl (
|
|
LPCWSTR pwszUrl,
|
|
LPCSTR pszObjectOid,
|
|
DWORD dwRetrievalFlags,
|
|
DWORD dwTimeout,
|
|
LPVOID* ppvObject,
|
|
PFN_FREE_ENCODED_OBJECT_FUNC* ppfnFreeObject,
|
|
LPVOID* ppvFreeContext,
|
|
HCRYPTASYNC hAsyncRetrieve,
|
|
PCRYPT_CREDENTIALS pCredentials,
|
|
LPVOID pvVerify,
|
|
PCRYPT_RETRIEVE_AUX_INFO pAuxInfo
|
|
) = 0;
|
|
|
|
virtual BOOL CancelAsyncRetrieval () = 0;
|
|
};
|
|
|
|
//
|
|
// CObjectRetrievalManager. Manages retrieval of PKI objects when requested
|
|
// via CryptRetrieveObjectByUrl.
|
|
//
|
|
|
|
class CObjectRetrievalManager : public IObjectRetriever
|
|
{
|
|
public:
|
|
|
|
//
|
|
// Construction
|
|
//
|
|
|
|
CObjectRetrievalManager ();
|
|
~CObjectRetrievalManager ();
|
|
|
|
//
|
|
// IRefCountedObject methods
|
|
//
|
|
|
|
virtual VOID AddRef ();
|
|
virtual VOID Release ();
|
|
|
|
//
|
|
// IObjectRetriever methods
|
|
//
|
|
|
|
virtual BOOL RetrieveObjectByUrl (
|
|
LPCWSTR pwszUrl,
|
|
LPCSTR pszObjectOid,
|
|
DWORD dwRetrievalFlags,
|
|
DWORD dwTimeout,
|
|
LPVOID* ppvObject,
|
|
PFN_FREE_ENCODED_OBJECT_FUNC* ppfnFreeObject,
|
|
LPVOID* ppvFreeContext,
|
|
HCRYPTASYNC hAsyncRetrieve,
|
|
PCRYPT_CREDENTIALS pCredentials,
|
|
LPVOID pvVerify,
|
|
PCRYPT_RETRIEVE_AUX_INFO pAuxInfo
|
|
);
|
|
|
|
virtual BOOL CancelAsyncRetrieval ();
|
|
|
|
//
|
|
// Retrieval Notification methods
|
|
//
|
|
|
|
BOOL OnRetrievalCompletion (
|
|
DWORD dwCompletionCode,
|
|
LPCWSTR pwszUrl,
|
|
LPCSTR pszObjectOid,
|
|
DWORD dwRetrievalFlags,
|
|
PCRYPT_BLOB_ARRAY pObject,
|
|
PFN_FREE_ENCODED_OBJECT_FUNC pfnFreeObject,
|
|
LPVOID pvFreeContext,
|
|
LPVOID pvVerify,
|
|
LPVOID* ppvObject
|
|
);
|
|
|
|
private:
|
|
|
|
//
|
|
// Reference count
|
|
//
|
|
|
|
ULONG m_cRefs;
|
|
|
|
//
|
|
// Scheme Provider entry points
|
|
//
|
|
|
|
HCRYPTOIDFUNCADDR m_hSchemeRetrieve;
|
|
PFN_SCHEME_RETRIEVE_FUNC m_pfnSchemeRetrieve;
|
|
|
|
//
|
|
// Context Provider entry points
|
|
//
|
|
|
|
HCRYPTOIDFUNCADDR m_hContextCreate;
|
|
PFN_CONTEXT_CREATE_FUNC m_pfnContextCreate;
|
|
|
|
//
|
|
// Private methods
|
|
//
|
|
|
|
//
|
|
// Parameter validation
|
|
//
|
|
|
|
BOOL ValidateRetrievalArguments (
|
|
LPCWSTR pwszUrl,
|
|
LPCSTR pszObjectOid,
|
|
DWORD dwRetrievalFlags,
|
|
DWORD dwTimeout,
|
|
LPVOID* ppvObject,
|
|
HCRYPTASYNC hAsyncRetrieve,
|
|
PCRYPT_CREDENTIALS pCredentials,
|
|
LPVOID pvVerify,
|
|
PCRYPT_RETRIEVE_AUX_INFO pAuxInfo
|
|
);
|
|
|
|
//
|
|
// Provider initialization
|
|
//
|
|
|
|
BOOL LoadProviders (
|
|
LPCWSTR pwszUrl,
|
|
LPCSTR pszObjectOid
|
|
);
|
|
|
|
VOID UnloadProviders ();
|
|
|
|
//
|
|
// Provider entry point usage
|
|
//
|
|
|
|
BOOL CallSchemeRetrieveObjectByUrl (
|
|
LPCWSTR pwszUrl,
|
|
LPCSTR pszObjectOid,
|
|
DWORD dwRetrievalFlags,
|
|
DWORD dwTimeout,
|
|
PCRYPT_BLOB_ARRAY pObject,
|
|
PFN_FREE_ENCODED_OBJECT_FUNC* ppfnFreeObject,
|
|
LPVOID* ppvFreeContext,
|
|
HCRYPTASYNC hAsyncRetrieve,
|
|
PCRYPT_CREDENTIALS pCredentials,
|
|
PCRYPT_RETRIEVE_AUX_INFO pAuxInfo
|
|
);
|
|
|
|
BOOL CallContextCreateObjectContext (
|
|
LPCSTR pszObjectOid,
|
|
DWORD dwRetrievalFlags,
|
|
PCRYPT_BLOB_ARRAY pObject,
|
|
LPVOID* ppvContext
|
|
);
|
|
};
|
|
|
|
//
|
|
// Provider table externs
|
|
//
|
|
|
|
extern HCRYPTOIDFUNCSET hSchemeRetrieveFuncSet;
|
|
extern HCRYPTOIDFUNCSET hContextCreateFuncSet;
|
|
|
|
#endif
|
|
|