diff -r 000000000000 -r b16258d2340f applayerprotocols/httpexamples/nwsswsptrhnd/CNwssWspTransportHandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/applayerprotocols/httpexamples/nwsswsptrhnd/CNwssWspTransportHandler.h Tue Feb 02 01:09:52 2010 +0200 @@ -0,0 +1,301 @@ +// Copyright (c) 2002-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: +// + +#ifndef __CNWSSWSPTRANSPORTHANDLER_H__ +#define __CNWSSWSPTRANSPORTHANDLER_H__ + +// System includes +#include +#include +#include +#include + +// Local includes +#include "cnwsswspsession.h" +#include "mnwsswapserver.h" +#include "mconnectioninfoprovider.h" +#include "cnwsswspcosession.h" + +// Forward declarations +class MWspCOPushInvoker; +class MWspCLMethodInvoker; +class MWspCLPushInvoker; + +/** + @since 7.0 + This class provides a concrete implementation of the CWspTransportHandler + interface, specifically for the NWSS Rainbow 2.1 WAP Stack, which is used on + the Hurricane release of Symbian OS. The present implementation supports only + the Connection-Oriented Session and Method services. In the future, + Connectionless and Push may be added. + + There is no real behaviour in this class. It acts mainly as a container for + the objects that provide the various services. Also, it implements a set of + additional Mix-in interfaces, which provide internal services to other classes + in the transport handler. + + By implementing MSecurityPolicy, it can supply default policy values when the + WTLS handshake takes place, if a security policy plug-in is not provided by the + client. + + The class owns the main WAP protocol stack server handle, RWAPServ. It + provides access to this for other classes in the transport handler by + implementing the narrow interface MNwssWapServer. It provides access to the + client's Capability Info, Session Headers and Proxy Info services by + implementing the MConnectionInfoProvider interface and offering it to other + classes in the transport handler. + */ + +//##ModelId=3BBD8B17018B +class CNwssWspTransportHandler : public CWspTransportHandler, + public MNwssWapServer, + public MConnectionInfoProvider + { +public: // creation/deletion + +/**Factory construction of the transport handler. + @since 7.0 + @param aInstantiationParams (in) Points to a structure containing + the parameters sent to the parent + class constructor. + @return The newly-created transport handler object. + @leave KErrNoMemory. + */ + //##ModelId=3C4C49C0033B + static CNwssWspTransportHandler* NewL(TAny* aInstantiationParams); + +/** Destructor. + @since 7.0 + */ + //##ModelId=3C4C49C00286 + virtual ~CNwssWspTransportHandler(); + +public: // API methods inherited from CWspTransportHandler + +/** Query the services supported by this instantiation of the WSP + transport handler plug-in. + @since 7.0 + @return A bit-field set of flags indicating the service supported. + @see CWspTransportHandler + */ + //##ModelId=3C4C49BF0112 + virtual CWspTransportHandler::TWspSupportedServices SupportedServices() const; + +/**Obtain the connection-oriented session invocation API. + @since 7.0 + @return The interface to be used by a client to make invocations on the + connection-oriented session service. + @see MWspCOSessionInvoker + */ + //##ModelId=3C4C49BF005E + virtual MWspCOSessionInvoker& COSessionInvoker(); + +/** Obtain the connection-oriented method invocation API. + @since 7.0 + @return The interface to be used by a client to make invocations on the + connection-oriented transaction service. + @see MWspCOMethodInvoker + */ + //##ModelId=3C4C49BE0392 + virtual MWspCOMethodInvoker& COTransactionInvoker(); + +/** Obtain the connection-oriented push invocation API. + @since 7.0 + @return The interface to be used by a client to make invocations on the + connection-oriented push service. + @see MWspCOPushInvoker + */ + //##ModelId=3C4C49BE02DE + virtual MWspCOPushInvoker& COPushInvoker(); + +/** Obtain the connectionless method invocation API. + @since 7.0 + @return The interface to be used by a client to make invocations on the + connectionless transaction service. + @see MWspCLMethodInvoker + */ + //##ModelId=3C4C49BE0229 + virtual MWspCLMethodInvoker& CLMethodInvoker(); + +/** Obtain the connectionless push invocation API. + @since 7.0 + @return The interface to be used by a client to make invocations on the + connectionless push service. + @see MWspCLPushInvoker + */ + //##ModelId=3C4C49BE0175 + virtual MWspCLPushInvoker& CLPushInvoker(); + + /** Get the Server Certificate for the current session. + @param aServerCert A TCertInfo which will be filled with the certificate information + @return An error code. KErrNone if aServerCert has been completed, otherwise one of + the system wide error codes + */ + //##ModelId=3C9B0947024C + virtual TInt ServerCert(TCertInfo& aCertInfo) const; + +private: // methods inherited from MNwssWapServer + +/**Obtain a handle for the WAP Stack server. + @since 7.0 + @return The WAP Stack server session handle. + */ + //##ModelId=3C4C49BE00AD + virtual RWAPServ& WapStack(); + +private: // methods inherited from MConnectionInfoProvider + +/** Obtain the client's provider of proxy information. + @since 7.0 + @return The interface supplied by the client through which proxy + information is obtained. + */ + //##ModelId=3C4C49BD03C2 + virtual MWspProxyInfoProvider& ProxyInfoProvider() const; + +/** Obtain the client's provider of capability information. + @since 7.0 + @return The interface supplied by the client through which capability + information is obtained. + */ + //##ModelId=3C4C49BD0304 + virtual MWspCapabilityProvider& CapabilityProvider() const; + +/** Obtain the client's provider of session headers. + @since 7.0 + @return The interface supplied by the client through which client + session headers are obtained, and to which server (i.e. proxy) + session headers are returned. + */ + //##ModelId=3C4C49BD023C + virtual MWspSessionHeadersProvider& SessionHeadersProvider() const; + +private: // methods inherited from MSecurityPolicy + +/** Ask the client to accept or reject a certificate. Not + applicable to TLS, as the SSL layer does this itself. + The call is asynchronous, returning the result via the TRequestStatus. + @since 7.0 + @param aServerCert (in) A structure containing the certificate details. + @param aStatus (out) A status flag used to indicate errors. A value of 0 is used to indicate + that the cert is untrusted and 1 that it is trusted + */ + //##ModelId=3C4C49BC03DF + virtual void ValidateUntrustedServerCert(TCertInfo& aServerCert, TRequestStatus& aStatus) const; + +/** Cancel a previous request to ask the client to accept or reject + an untrusted WTLS server certificate. + @since 7.0 + */ + //##ModelId=3C4C49BC032B + virtual void CancelValidateUntrustedServerCert(); + +/** Obtain an array of WTLS cipher suites. Not applicable to TLS clients. + @since 7.0 + @return An array of cipher suites, consisting of paired bulk encryption + algorithms and MAC algorithms. The array must be ordered with + strongest cipher suites at the start. + */ + //##ModelId=3C4C49BC026D + virtual const RArray& GetWtlsCipherSuites(); + +/** Obtain a list of TLS cipher suites. Not applicable to WTLS + clients. + @since 7.0 + @return An descriptor containing a list of the TLS cipher suites. Each cipher suite is a 2 byte pair + */ + //##ModelId=3C4C49BC01B8 + virtual const TDesC8& GetTlsCipherSuites(); + +/** Obtain the WTLS key exchange suites. Not applicable + to TLS clients. + @since 7.0 + @return An array of the WTLS key exchange suites. The array must be ordered + with authenticating key exchange suites at the start followed by + anonymous key exchange suites if desired. Within each group of keys + longer keys should precede shorter ones. + */ + //##ModelId=3C4C49BC010E + virtual const RArray& GetWtlsKeyExchangeSuites(); + +/** Obtain arbitrary, named security policy properties, in a generic + 'stringified' form. + @since 7.0 + @param aPropertyName (in) The policy property name. + @param aPropertyValue (out) The property value. Parsing of the value is + left to the caller. The caller must close the + RString. + @return An error code: KErrNone if the property exists or KErrNotFound if + it doesn't. + */ + //##ModelId=3C4C49BB02E3 + virtual TInt GetNamedPolicyProperty(RStringF aPropertyName, RString& aPropertyValue); + +/** Reserve a slot in the v-table to preserve future BC + @since 7.0 + */ + //##ModelId=3C4C49BB0239 + virtual void Reserved1(); + +/**Reserve a slot in the v-table to preserve future BC + @since 7.0 + */ + //##ModelId=3C4C49BB0199 + virtual void Reserved2(); + +private: // methods + +/** Normal constructor. The bundled instantiation params are + passed to the parent class constructor. Ownership of the + parameters is _not_ passed across. + @since 7.0 + @param aInstantiationParams (in) The set of instantiation parameters. + */ + //##ModelId=3C4C49BB0080 + CNwssWspTransportHandler(TAny* aInstantiationParams); + +/** Second phase construction. Initial allocation of class data + members is done here. + @since 7.0 + @leave System error codes, eg. KErrNoMemory. + */ + //##ModelId=3C4C49BB001C + void ConstructL(); + +private: // attributes + + /** Session with the WAP Stack server + */ + //##ModelId=3C4C49BB0012 + RWAPServ iWapStackHnd; + + /** Adapter for Connection-Oriented WSP sessions + */ + //##ModelId=3C4C49BA03E6 + CNwssWspCOSession* iWspCOSession; + + /** Default security policy values for WTLS cipher suites + */ + //##ModelId=3C4C49BA03D2 + RArray iDefSecPolCipherSuites; + + /** Default security policy values for WTLS key exchange suites + */ + //##ModelId=3C4C49BA03BE + RArray iDefSecPolKeyExchSuite; + }; + + +#endif // __CNWSSWSPTRANSPORTHANDLER_H__