diff -r 000000000000 -r 307788aac0a8 realtimenetprots/sipfw/SIP/SIPSec/DigestPlugin/inc/sipsecplugincontext.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/realtimenetprots/sipfw/SIP/SIPSec/DigestPlugin/inc/sipsecplugincontext.h Tue Feb 02 01:03:15 2010 +0200 @@ -0,0 +1,358 @@ +/* +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Name : sipsecplugincontext.h +* Part of : SIPSec/DigestPlugin +* Version : SIP/6.0 +* +*/ + + + + +/** + @internalComponent +*/ + +#ifndef __SIPSEC_PLUGINCONTEXT_H__ +#define __SIPSEC_PLUGINCONTEXT_H__ + +// INCLUDES +#include "Lwtimer.h" +#include "SipStackServerDefs.h" +#include +#include + +// FORWARD DECLARATIONS +class CUri8; +class MSIPSecSecurityMechanismObserver; +class MSIPSecUser; +class CSIPSecDigestCache; +class CSIPRequest; +class CSIPResponse; +class CSIPSecurityVerifyHeader; +class CSIPSecurityServerHeader; +class CSIPAuthenticationInfoHeader; +class CSIPSecDigestPlugin; +class CSIPHeaderBase; + +// CLASS DECLARATION +/** + * @brief Class is base class for plugin context + * + * @class TSIPSecPluginContext sipsecplugincontext.h "sipsecplugincontext.h" + * + * Class provides common context data of response or request + */ +class TSIPSecPluginContext + { +public: // Constructors and destructor + + /** + * Constructor + * @param aPlugin Digest plugin + * @param aRemoteTarget Remote target + * @param aOutboundProxy outbound proxy + * @param aUser SIPSec user + * @param aRegistrationId Registration id + * @param aTransactionId Transaction id + */ + TSIPSecPluginContext( CSIPSecDigestPlugin& aPlugin, + const CUri8& aRemoteTarget, + const TDesC8& aOutboundProxy, + MSIPSecUser& aUser, + TRegistrationId aRegistrationId, + TTransactionId aTransactionId ); + + /** + * Destructor + */ + inline virtual ~TSIPSecPluginContext() + { + } + +public: // New functions + + virtual TBool AlsoTrustedUser(); + +public: // SIP related functions + + /** + * Returns the remote target + * @return remote target + */ + const CUri8& RemoteTarget() const; + + /** + * Returns the outbound proxy + * @return outbound proxy + */ + const TDesC8& OutboundProxy() const; + + /** + * Returns the SIPSec user + * @return SIPSec user + */ + MSIPSecUser& SIPSecUser(); + + /** + * Returns plugin + * @return plugin + */ + CSIPSecDigestPlugin& Plugin() const; + + /** + * Returns registration id. + * @return Registration id + */ + TRegistrationId RegistrationId() const; + + /** + * Returns transaction id. + * @return Transaction id + */ + TTransactionId TransactionId() const; + +private: // Data + + CSIPSecDigestPlugin& iPlugin; + + //Remote target + const CUri8& iRemoteTarget; + + const TDesC8& iOutboundProxy; + MSIPSecUser& iUser; + TRegistrationId iRegistrationId; + TTransactionId iTransactionId; + }; + + + +/** + * @brief Class is plugin context with response + * + * @class TSIPSecPluginCtxResponse sipsecplugincontext.h "sipsecplugincontext.h" + * + * Class provides, in addition to common context, SIP response + */ +class TSIPSecPluginCtxResponse : public TSIPSecPluginContext + { +public: // Constructor + + /** + * Constructor + * @param aPlugin Digest plugin + * @param aRemoteTarget Remote target + * @param aOutboundProxy Outbound proxy + * @param aSIPResponse SIP response + * @param aCache Cache + * @param aObserver Mechanism observer + * @param aUser SIPSec user + * @param aRegistrationId Registration id + * @param aTransactionId Transaction id + */ + TSIPSecPluginCtxResponse( CSIPSecDigestPlugin& aPlugin, + const CUri8& aRemoteTarget, + const TDesC8& aOutboundProxy, + CSIPResponse& aSIPResponse, + CSIPSecDigestCache& aCache, + MSIPSecSecurityMechanismObserver& aObserver, + MSIPSecUser& aUser, + TRegistrationId aRegistrationId, + TTransactionId aTransactionId ); + +public: // SIP related functions + + /** + * Returns cache + * @return cache + */ + CSIPSecDigestCache& Cache(); + + /** + * Returns observer + * @return observer + */ + MSIPSecSecurityMechanismObserver& Observer(); + + /** + * Returns SIP response + * @return SIP response + */ + CSIPResponse& SIPResponse(); + +private: // Data + + CSIPSecDigestCache& iCache; + + MSIPSecSecurityMechanismObserver& iObserver; + + CSIPResponse& iSIPResponse; + }; + + + + +/** + * @brief Class is plugin context with request + * + * @class TSIPSecPluginCtxRequest sipsecplugincontext.h "sipsecplugincontext.h" + * + * Class provides, in addition to common context, SIP request + */ +class TSIPSecPluginCtxRequest : public TSIPSecPluginContext + { + +public: // Constructor + + /** + * Constructor + * @param aPlugin Digest plugin + * @param aRemoteTarget remote target + * @param aOutboundProxy outbound proxy + * @param aSIPRequest SIP request + * @param aUser SIPSec user + * @param aRegistrationId Registration id + * @param aTransactionId Transaction id + */ + TSIPSecPluginCtxRequest( CSIPSecDigestPlugin& aPlugin, + const CUri8& aRemoteTarget, + const TDesC8& aOutboundProxy, + CSIPRequest& aSIPRequest, + MSIPSecUser& aUser, + TRegistrationId aRegistrationId, + TTransactionId aTransactionId ); + +public: // SIP related functions + + /** + * Returns the SIP request + * @return SIP request + */ + CSIPRequest& SIPRequest(); + +private: // Data + + CSIPRequest& iSIPRequest; + }; + + + + +/** + * @brief Class is plugin context with sec-agree related data + * + * @class TSIPSecPluginCtxVerify sipsecplugincontext.h "sipsecplugincontext.h" + * + * Class provides, in addition to request context, security verify and server + * header + */ +class TSIPSecPluginCtxVerify : public TSIPSecPluginCtxRequest + { +public: // Constructor + + /** + * Constructor + * @param aPlugin Digest plugin + * @param aRemoteTarget remote target + * @param aOutboundProxy outbound proxy + * @param aSIPRequest SIP request + * @param aVerifyHeader security verify header + * @param aServerHeader security server header + * @param aUser SIPSec user + * @param aRegistrationId Registration id + */ + TSIPSecPluginCtxVerify( CSIPSecDigestPlugin& aPlugin, + const CUri8& aRemoteTarget, + const TDesC8& aOutboundProxy, + CSIPRequest& aSIPRequest, + CSIPSecurityVerifyHeader& aVerifyHeader, + RPointerArray& aServerHeaders, + MSIPSecUser& aUser, + TRegistrationId aRegistrationId ); + +public: // SIP related functions + + /** + * Returns SIP Security-Verify header + * @return Security-Verify header + */ + CSIPSecurityVerifyHeader& SecurityVerifyHeader(); + + /** + * Returns SIP Security-Server headers + * @return Queue of Security-Server headers + */ + TSglQue& SecurityServerHeaders(); + +private: // Data + + CSIPSecurityVerifyHeader& iVerifyHeader; + TSglQue iServerHeaders; + }; + + +/** + * @brief Class is plugin context with authentication info related data + * + * @class TSIPSecPluginCtxInfo sipsecplugincontext.h "sipsecplugincontext.h" + * + * Class provides, in addition to request context, authentication info header + */ +class TSIPSecPluginCtxInfo : public TSIPSecPluginCtxResponse + { +public: // Constructor + + /** + * Constructor + * @param aPlugin Digest plugin + * @param aRemoteTarget Remote target + * @param aOutboundProxy Outbound proxy + * @param aSIPResponse SIP response + * @param aAuthInfo Authorization-Info header + * @param aCache Cache + * @param aObserver Mechanism observer + * @param aUser SIPSec user + * @param aRegistrationId Registration id + */ + TSIPSecPluginCtxInfo( CSIPSecDigestPlugin& aPlugin, + const CUri8& aRemoteTarget, + const TDesC8& aOutboundProxy, + CSIPResponse& aSIPResponse, + CSIPAuthenticationInfoHeader& aAuthInfo, + CSIPSecDigestCache& aCache, + MSIPSecSecurityMechanismObserver& aObserver, + MSIPSecUser& aUser, + TRegistrationId aRegistrationId ); + +public: // From TSIPSecPluginContext + + TBool AlsoTrustedUser(); + +public: // SIP related functions + + /** + * Returns SIP Authentication-Info header + * @return Authentication-Info header + */ + CSIPAuthenticationInfoHeader& AuthenticationInfoHeader(); + +private: // Data + + CSIPAuthenticationInfoHeader& iAuthInfo; + }; + +#endif //end of __SIPSEC_PLUGINCONTEXT_H__ + +// End of File