diff -r e1b950c65cb4 -r 837f303aceeb epoc32/include/ssl.h --- a/epoc32/include/ssl.h Wed Mar 31 12:27:01 2010 +0100 +++ b/epoc32/include/ssl.h Wed Mar 31 12:33:34 2010 +0100 @@ -1,9 +1,9 @@ // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members +// under the terms of "Eclipse Public License v1.0" // which accompanies this distribution, and is available -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". +// at the URL "http://www.eclipse.org/legal/epl-v10.html". // // Initial Contributors: // Nokia Corporation - initial contribution. @@ -15,8 +15,6 @@ // // - - /** @file */ @@ -27,86 +25,11 @@ #include #include -//TDNInfo & TCertInfo moved to a header file owned by HTTP -//included their file here to reduce impact of this move #include -// next 3 lines xfer from ssldata.h -/* -Code using this const has been commented out. -Be careful 0x406 could have been defined in the in_sock.h in the mean time... -const TUint KSoCurrentConnectStatus =0x406; -*/ -/** - * The SSL connection status. - * - * @internalComponent - * - * @since v6.0 * - * @deprecated No longer used by networking - */ -enum TSSLConnectStatus - { - /** Connected. */ - ESSLConnected, - /** Waiting for user to answer. */ - ESSLWaitingUserAnswer, - /** Connection failed. */ - ESSLConnectFailed - }; - -/** - * No dialogs. - * - * @internalComponent - */ -const TUint KSSLUserDialogMode = 0x02; // no dialogs - -/** - * SSL Protocol Module's UID. - * - * @internalComponent - */ -const TInt KUidSSLProtocolModule = 0x100011b2; - -/** - * Unicode SSL Protocol Module's UID. - * - * @internalComponent - */ -const TInt KUidUnicodeSSLProtocolModule = 0x1000183d; - -/** - * SSL v3 Protocol Module's UID. - * - * @internalComponent - */ -const TInt KUidSSLv3ProtocolModule = 0x10001699; - -/** - * Socket reads from SSL. - * - * @internalComponent - */ -const TUint KSockReadFromSSL = 0x10040000; - -/** - * Socket writes to SSL. - * - * @internalComponent - */ -const TUint KSockWriteFromSSL = 0x10044000; - -// SSL/TLS connection Option taken from previous releases. This information has been -// removed from in_sock.h. All adaptor options have been removed. -const TUint KSolInetSSL = 0x205; ///< SSL setopts/ioctls - -const TUint KSoCurrentCipherSuite = 0x402; ///< Get current cipher suites -const TUint KSoSSLServerCert = 0x403; ///< Get server certificate -const TUint KSoDialogMode = 0x404; ///< Get/Set current dialog mode -const TUint KSoAvailableCipherSuites = 0x405; ///< Get available cipher suites - // 0x406 skipped - See KSoCurrentConnectStatus -const TUint KSoKeyingMaterial = 0x407; ///< Get Keying Material for EAP +#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS +#include +#endif /** * @publishedAll @@ -121,7 +44,7 @@ * * An argument of 0 disables the ciphersuites and non-zero enables them. */ -const TUint KSoEnableNullCiphers = 0x408; ///< Enable/disable NULL ciphers +const TUint KSoEnableNullCiphers = 0x408; //< Enable/disable NULL ciphers /** * @publishedAll @@ -132,28 +55,7 @@ * * @see MSoPskKeyHandler */ -const TUint KSoPskConfig = 0x409; ///< Set PSK key exchange configuration - -/** - * Interface to the client code which decides which PSK identity and value should be used to secure the connection. -*/ -class MSoPskKeyHandler - { -public: - /** - Called during the TLS PSK handshake to get the PSK identity and value to be used to secure the connection. - - @param aPskIdentityHint A ptr to an HBufC8 containing the "PSK identity hint", or NULL if the server did not send one. - @param aPskIdentity NULL passed in, must be set to an HBufC8 containing the PSK Identity to be used. - @param aPskKey NULL passed in, must be set to an HBufC8 containing the PSK key value to be used. - - Note: The caller takes ownership of the aPskIdentity and aPskKey buffers. - Note: The meaning of the PSK identity hint is NOT defined by the TLS standard, therefore any application - using PSK must previously agree the source of the PSK to be used and the interpretion of the (optional) PSK identity - hint. - */ - virtual void GetPskL(const HBufC8 * aPskIdentityHint, HBufC8 *& aPskIdentity, HBufC8 *& aPskKey) = 0; - }; +const TUint KSoPskConfig = 0x409; //< Set PSK key exchange configuration /** * @publishedAll @@ -162,337 +64,6 @@ * Set the list of server names to be passed to the server in the ClientHello as described in RFC3546 "Server Name Indication". * The argument should be a TPckgBuf. */ -const TUint KSoServerNameIndication = 0x40a; ///< Set Server Name Indication - -/** - * - * @internalComponent - */ -const TUint KSoSSLDomainName = 0x505; ///< Set Domain name - -// Adaptor layer specific options -// all SSL related options are supposed to be here -// rather then in insock/inc/in_sock.h -/** - * Use SSL v2 handschake. - * - * @internalAll - * @deprecated the option is no longer supported - */ -const TUint KSoUseSSLv2Handshake = 0x500; - -// For KSoDialogMode -const TUint KSSLDialogUnattendedMode= 0x01; ///< No dialogs -const TUint KSSLDialogAttendedMode = 0x00; ///< dialogs - - -// A version must be specified when creating an SSL factory -/** - * SSL module major version number. - * - * @internalComponent - */ -const TUint KSSLMajorVersionNumber=1; -/** - * SSL module minor version number. - * - * @internalComponent - */ -const TUint KSSLMinorVersionNumber=0; -/** - * SSL module build version number. - * - * @internalComponent - */ -const TUint KSSLBuildVersionNumber=500; - -class RMBufChain; -class CSSLSessionStore; -class CSSLSessionState; -class CNifFactory; -class CSSLProviderBase; -class CSymmetricCipher; -class CCryptoFactory; -class CCertFactory; -class CSSLTimers; -class MSSLSocketNotify - /** - * Abstract base class used to notify the SSL socket server that various events - * have occurred. The class provides several up-call member functions. - * - * @internalComponent - * - * @since v5.0 - * - * @deprecated No longer used by networking - */ - { -public: -// NOTE: THESE ARE A SUBSET OF MSocketNotify - /** Called with unencrypted data to be given to the client application. - * - * @param aDesc Descriptor holding the unencrypted data. - * @param aRestingData - */ - virtual void SSLDeliver(const TDesC8 &aDesc, TUint aRestingData)=0; - - virtual TUint SSLWrite(const TDesC8 &aDesc,TUint options, TSockAddr* aAddr=NULL)=0; - - /** Indicates that new buffer space is available. */ - virtual void SSLCanSend()=0; - - /** Indicates that a connection attempt has completed successfully. */ - virtual void SSLConnectComplete()=0; - - /** Indicates that the SAP has finished closing down. */ - virtual void SSLCanClose()=0; - - /** Tells the socket server that an error state has arisen within the protocol. - * - * It should not be used to report programmatic errors, either in the protocol - * itself or the socket server (a panic should be used in these cases). - * - * @param anError Error that has arisen. */ - virtual void SSLError(TInt anError)=0; - - /** Called when the connection is closed due to an error. */ - virtual void SSLDisconnectIndication(void)=0; - - /** Called when the connection is closed due to an error. - * - * @param aDisconnectData Descriptor holding the disconnect data. */ - virtual void SSLDisconnectIndication(TDesC8& aDisconnectData)=0; - - /** Called when the connection is closed due to an error. - * - * @param aError The disconnect error. */ - virtual void SSLDisconnectIndication(TInt aError)=0; - - virtual void SSLIoctlComplete(TDesC8 *aBuf)=0; - }; - -class CSSLTimers : public CBase - /** - * Base class for SSL timers. - * - * @internalComponent - * - * @since v5.0 - * - * @deprecated No longer used by networking - */ - { -public: - /** Stops the SSLTimer, if it is running and destructs the object. */ - virtual ~CSSLTimers(); - - /** Creates a new SSL Timer. - * - * @return KErrNone if successful; otherwise, a system-wide error code. */ - static CSSLTimers *NewL(); - - /** Starts the SSL timer. - * - * @param aCallBack Call back function. - * @param aTimeout Time. */ - void StartSSLTimer(TCallBack aCallBack,TInt aTimeout); - - /** Stops the timer. */ - void StopSSLTimer(); - - /** Stops and cancels the time recorded by the timer. */ - void DoSSLTimerExpired(); -private: - CSSLTimers(); -private: - TDeltaTimerEntry iSSLTimer; - TDeltaTimerEntry *iSSLTimerH; - }; - -class SSLGlobals - /** - * @internalComponent - * - * @deprecated No longer used by networking - */ - { -public: - CObjectConIx *iContainer; - CObjectCon *iSSLFactories; - TInt iSSLUnloadTimeout; - TInt iSecureSocketCount; - }; - -class RSSLDialogServer; -class CSSLFactory : public CObject - /** - * Factory base for creating a concrete instance of a CSSLBase. - * - * @internalComponent - * - * @since v5.0 - * @deprecated No longer used by networking - */ - { -public: - CSSLFactory(); - virtual ~CSSLFactory(); - virtual CSSLProviderBase* NewSecureSocketL(MSSLSocketNotify* aParent); - virtual TInt Open(); - virtual void Close(); - virtual void InitL(RLibrary& aLib, CObjectCon& aCon); - virtual TVersion Version() const; -// static void Cleanup(TAny* aObject); -// static TInt ControlledDelete(TAny* aSSLFactory); - void SecureSocketShutdown(CSSLProviderBase *aSecureSocket); - // other public members - void SetSessionStateL(CSSLSessionState* aState,const TDesC8&);//const TDesC8& aSessionID,const TDesC8& aMasterSecret); - TPtrC8 GetSession(const TDesC8&,CSSLSessionState*); - void ConstructL(); -private: - void InitCryptoL(); -public: - RLibrary iLib; -private: -// RLibrary iCryptLibrary; -// RLibrary iCertLibrary; - TDblQue iSecureSocketsList; - TUint iSecureSocketsCount; - CSSLSessionStore *iSessStore; - }; - -class CSSLProviderBase : public CBase - /** - * Abstract base class for all SSL protocol implementations. - * - * @internalComponent - * - * @since v5.0 - * - * @deprecated No longer used by networking - */ - { -public: - friend class CSSLFactory; -/** Connection closing type. */ - enum TCloseType - { - /** Normal. */ - ENormal, - /** Stop input. */ - EStopInput, - /** Stop output. */ - EStopOutput, - /** Close immediately. */ - EImmediate - }; - - CSSLProviderBase(CSSLFactory& aFactory); - virtual ~CSSLProviderBase(); - - /** Set the notification parent, - * - * @param aNotify Parent to be notified. */ - inline void SetNotify(MSSLSocketNotify* aNotify); -public: -// NOTE I'VE COPIED THESE DIRECTLY FROM CServProviderBase - virtual const TInt GetOption(TUint level,TUint name,TDes8& anOption) =0; - virtual void Ioctl(TUint level,TUint name,TDes8* anOption)=0; - virtual void CancelIoctl(TUint aLevel,TUint aName)=0; - - /** Sets an option. - * - * @param level Integer constant identifying the option. - * @param name Option name. - * @param anOption Option value packaged in a descriptor. - * @return KErrNone if successful; otherwise, a system-wide error code. */ - virtual TInt SetOption(TUint level,TUint name,const TDesC8 &anOption)=0; - - virtual TUint Write(const TDesC8& aDesc,TUint options,TSockAddr* anAddr=NULL)=0; - - /** Process the event in the buffer. - * - * @param aBuf Chain with events to process. */ - virtual void Process(RMBufChain& aBuf)=0; - - virtual void ProcessL(const TDesC8 &aDesc)=0; - - /** Initiates a connection operation. - * - * This means that it tells the protocol to - * attempt to connect to a peer. It is called by the socket server in response - * to a connect request from a client. ActiveOpen() is only ever called on connection-oriented - * sockets. Such a socket should always have both the local address and the remote - * address specified before ActiveOpen() is called. If this is not the case, - * then the protocol should panic. When a connection has completed, the protocol - * should call ConnectComplete() on its TNotify. - * - * If an error occurs during connection the protocol should not call ConnectComplete() - * at all; instead it should call Error(). - * - * @return KErrNone if successful; otherwise, a system-wide error code. */ - virtual TInt ActiveOpen()=0; - - /** Same as ActiveOpen(), but with user data in the connection frame. - * - * @param aConnectionData User specified connection data. - * @return KErrNone if successful; otherwise, a system-wide error code. */ - virtual TInt ActiveOpen(const TDesC8& aConnectionData)=0; - - /** Tells the protocol to start waiting for an incoming connection request on this - * socket (i.e. port). - * - * It is called by the socket server in response to a listen request from a client. - * - * PassiveOpen() is only ever called on connection-oriented sockets. Such a socket - * should always have both the local address and the remote address specified - * before PassiveOpen() is called. If this is not the case, then the protocol - * should panic. - * - * The protocol should keep a count of sockets in Start state - incrementing - * a variable in ConnectComplete(), and decrementing it in Start(). - * - * When a connection has completed, the protocol should call ConnectComplete() - * on its TNotify. - * - * If an error occurs during connection the protocol should not call ConnectComplete() - * at all; instead it should call Error(). - * - * @param aQueSize The number of sockets which can be waiting for an outstanding - * Start() after calling ConnectComplete(). - * @return KErrNone if successful; otherwise, a system-wide error code. */ - virtual TInt PassiveOpen(TUint aQueSize)=0; - - /** Same as PassiveOpen(), but with user data in the connection frame. - * - * @param aQueSize The number of sockets which can be waiting for an outstanding - * Start() after calling ConnectComplete(). - * @param aConnectionData User specified connection data - * @return KErrNone if successful, a system-wide error code if not. */ - virtual TInt PassiveOpen(TUint aQueSize,const TDesC8& aConnectionData)=0; - - /** Terminates a connection (or closes a non connection-oriented socket down). - * - * Normally, when the socket server has called Shutdown() for a socket, it will - * wait for the socket to call CanClose() before destroying the CServProviderBase - * object. */ - virtual void Shutdown()=0; - - /** Closes the connection. */ - virtual void Close()=0; - /** Second phase contructor. - * - * @param aParent Parent to be notified. */ - virtual void ConstructL(MSSLSocketNotify *aParent)=0; - /** Indicates that the connection has been completed. */ - virtual void ConnectCompleted()=0; - -public: - TDblQueLink iLink; -protected: - CSSLFactory* iFactory; -private: - MSSLSocketNotify* iSocket; - }; +const TUint KSoServerNameIndication = 0x40a; //< Set Server Name Indication #endif