--- /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 <e32std.h>
+#include <in_sock.h>
+
+// 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<CSIPSecurityServerHeader>& 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<CSIPHeaderBase>& SecurityServerHeaders();
+
+private: // Data
+
+ CSIPSecurityVerifyHeader& iVerifyHeader;
+ TSglQue<CSIPHeaderBase> 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