epoc32/include/ssl.h
branchSymbian3
changeset 4 837f303aceeb
parent 2 2fe1408b6811
--- 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 <in_sock.h>
 #include <sslerr.h>
 
-//TDNInfo & TCertInfo moved to a header file owned by HTTP
-//included their file here to reduce impact of this move
 #include <ssl_compatibility.h>
 
-// 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 <ssl_internal.h>
+#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<CDesC8Array *>.
 */
-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<CSSLProviderBase> 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