Leaked source code of windows server 2003
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

//+---------------------------------------------------------------------------
//
// 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