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.
 
 
 
 
 
 

119 lines
3.9 KiB

/**********************************************************************/
/** Microsoft Passport **/
/** Copyright(c) Microsoft Corporation, 1999 - 2001 **/
/**********************************************************************/
/*
ticket.h
Define class for passport ticket
FILE HISTORY:
*/
// Ticket.h : Declaration of the CTicket
#ifndef __TICKET_H_
#define __TICKET_H_
#include "resource.h" // main symbols
/////////////////////////////////////////////////////////////////////////////
// CTicket
class ATL_NO_VTABLE CTicket :
public CComObjectRootEx<CComMultiThreadModel>,
public CComCoClass<CTicket, &CLSID_Ticket>,
public ISupportErrorInfo,
public IDispatchImpl<IPassportTicket2, &IID_IPassportTicket2, &LIBID_PASSPORTLib>
{
public:
CTicket() : m_raw(NULL), m_lastSignInTime(0),
m_ticketTime(0), m_valid(FALSE),
m_bSecureCheckSucceeded(FALSE), m_schemaDrivenOffset(INVALID_OFFSET),
m_passportFlags(0)
{
ZeroMemory(m_memberId, sizeof(m_memberId));
}
~CTicket()
{
if (m_raw)
SysFreeString(m_raw);
}
public:
DECLARE_REGISTRY_RESOURCEID(IDR_TICKET)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CTicket)
COM_INTERFACE_ENTRY(IPassportTicket2)
COM_INTERFACE_ENTRY(IPassportTicket)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()
// ISupportsErrorInfo
STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
// IPassportTicket
public:
STDMETHOD(DoSecureCheck)(/*[in]*/ BSTR bstrSec);
STDMETHOD(DoSecureCheckInTicket)(/* [in] */ BOOL fSecureTransported);
BOOL IsSecure();
ULONG GetPassportFlags();
STDMETHOD(get_TicketTime)(/*[out, retval]*/ long *pVal);
STDMETHOD(get_SignInTime)(/*[out, retval]*/ long *pVal);
STDMETHOD(get_SignInServer)(/*[out, retval]*/ BSTR *pVal);
STDMETHOD(get_HasSavedPassword)(/*[out, retval]*/ VARIANT_BOOL *pVal);
STDMETHOD(get_MemberIdHigh)(/*[out, retval]*/ int *pVal);
STDMETHOD(get_MemberIdLow)(/*[out, retval]*/ int *pVal);
STDMETHOD(get_MemberId)(/*[out, retval]*/ BSTR *pVal);
STDMETHOD(get_TimeSinceSignIn)(/*[out, retval]*/ int *pVal);
STDMETHOD(get_TicketAge)(/*[out, retval]*/ int *pVal);
STDMETHOD(get_IsAuthenticated)(/*[in]*/ ULONG timeWindow, /*[in]*/ VARIANT_BOOL forceLogin, /*[in,optional]*/ VARIANT CheckSecure, /*[out, retval]*/ VARIANT_BOOL *pVal);
STDMETHOD(get_unencryptedTicket)(/*[out, retval]*/ BSTR *pVal);
STDMETHOD(put_unencryptedTicket)(/*[in]*/ BSTR newVal);
STDMETHOD(get_Error)(/*[out,retval]*/ long *pVal);
// IPassportTicket2
STDMETHOD(GetProperty)(/*[in]*/ BSTR propName, /*[out, retval]*/ VARIANT* pVal);
STDMETHOD(SetTertiaryConsent)(BSTR bstrConsent);
STDMETHOD(ConsentStatus)(/*[in]*/VARIANT_BOOL bRequireConsentCookie, /*out*/ULONG* pStatus, /*[out, retval]*/ ConsentStatusEnum* pNeedConsent);
// none COM functions
enum{
MSPAuth = 1,
MSPSecAuth,
MSPConsent
};
// flags parameter is reserved for future use, must be 0 for this version
STDMETHOD(get_unencryptedCookie)(/*in*/ ULONG cookieType, /*in*/ ULONG flags, /*[out, retval]*/ BSTR* pVal);
protected:
BSTR m_raw;
BOOL m_valid;
BOOL m_savedPwd;
WCHAR m_memberId[20];
int m_mIdLow;
int m_mIdHigh;
long m_flags;
time_t m_ticketTime;
time_t m_lastSignInTime;
CComBSTR m_bstrTertiaryConsent;
void parse(LPCOLESTR raw, DWORD dwByteLen, DWORD* pcParsed);
private:
// the bag for the schema driven fields
CTicketPropertyBag m_PropBag;
DWORD m_schemaDrivenOffset; // the offset of schema driven data -- the data introduced after 1.3x
ULONG m_passportFlags;
BOOL m_bSecureCheckSucceeded;
};
#endif //__TICKET_H_