2025-04-27 07:49:33 -04:00

96 lines
2.6 KiB
C++

// PassportCrypt.h : Declaration of the CCrypt
#ifndef __CRYPT_H_
#define __CRYPT_H_
#include "resource.h" // main symbols
#include <asptlb.h> // Active Server Pages Definitions
#include "CoCrypt.h" // Added by ClassView
#include "passportservice.h"
/////////////////////////////////////////////////////////////////////////////
// CCrypt
class ATL_NO_VTABLE CCrypt :
public CComObjectRootEx<CComMultiThreadModel>,
public CComCoClass<CCrypt, &CLSID_Crypt>,
public ISupportErrorInfo,
public IPassportService,
public IDispatchImpl<IPassportCrypt, &IID_IPassportCrypt, &LIBID_PASSPORTLib>
{
public:
CCrypt();
~CCrypt()
{
Cleanup();
if( m_crypt )
delete m_crypt;
}
public:
DECLARE_REGISTRY_RESOURCEID(IDR_CRYPT)
DECLARE_PROTECT_FINAL_CONSTRUCT()
DECLARE_GET_CONTROLLING_UNKNOWN()
BEGIN_COM_MAP(CCrypt)
COM_INTERFACE_ENTRY(IPassportCrypt)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
COM_INTERFACE_ENTRY(IPassportService)
COM_INTERFACE_ENTRY_AGGREGATE(IID_IMarshal, m_pUnkMarshaler.p)
END_COM_MAP()
HRESULT FinalConstruct()
{
return CoCreateFreeThreadedMarshaler(
GetControllingUnknown(), &m_pUnkMarshaler.p);
}
void FinalRelease()
{
m_pUnkMarshaler.Release();
}
CComPtr<IUnknown> m_pUnkMarshaler;
// ISupportsErrorInfo
STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
// IPassportCrypt
public:
STDMETHOD(put_keyMaterial)(/*[in]*/ BSTR newVal);
STDMETHOD(get_keyVersion)(/*[out, retval]*/ int *pVal);
STDMETHOD(put_keyVersion)(/*[in]*/ int newVal);
STDMETHOD(OnStartPage)(/*[in]*/ IUnknown* piUnk);
STDMETHOD(Decrypt)(/*[in]*/ BSTR rawData, /*[out,retval]*/ BSTR *pUnencrypted);
STDMETHOD(Encrypt)(/*[in]*/ BSTR rawData, /*[out,retval]*/ BSTR *pEncrypted);
STDMETHOD(get_IsValid)(/*[out,retval]*/VARIANT_BOOL *pVal);
STDMETHOD(Compress)(/*[in]*/ BSTR bstrIn, /*[out,retval]*/ BSTR *pbstrOut);
STDMETHOD(Decompress)(/*[in]*/ BSTR bstrIn, /*[out,retval]*/ BSTR *pbstrOut);
STDMETHOD(put_site)(/*[in]*/ BSTR bstrSiteName);
STDMETHOD(put_host)(/*[in]*/ BSTR bstrHostName);
// IPassportService
public:
STDMETHOD(Initialize)(BSTR, IServiceProvider*);
STDMETHOD(Shutdown)();
STDMETHOD(ReloadState)(IServiceProvider*);
STDMETHOD(CommitState)(IServiceProvider*);
STDMETHOD(DumpState)( BSTR* );
protected:
void Cleanup();
CRegistryConfig* ObtainCRC();
int m_keyVersion;
time_t m_validUntil;
CCoCrypt* m_crypt;
LPSTR m_szSiteName;
LPSTR m_szHostName;
};
#endif //__CRYPT_H_