williamr@2: // Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@4: // under the terms of "Eclipse Public License v1.0" williamr@2: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // Secure Sockets williamr@2: // williamr@2: // williamr@2: williamr@2: /** williamr@2: @file williamr@2: */ williamr@2: williamr@2: #ifndef __SECURESOCKET_H__ williamr@2: #define __SECURESOCKET_H__ williamr@2: williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@2: #include williamr@2: #include williamr@2: williamr@2: #include williamr@4: #ifndef SYMBIAN_ENABLE_SPLIT_HEADERS williamr@4: #include williamr@4: #endif williamr@2: williamr@2: class MGenericSecureSocket; williamr@2: williamr@2: class CSecureSocket : public CBase williamr@2: /** williamr@2: * Secure sockets class. williamr@2: * williamr@2: * @publishedAll williamr@2: * @released williamr@2: * williamr@2: * @since v6.2 */ williamr@2: // New secure sockets can be created through the static CSecureSocket::NewL method. williamr@2: { williamr@2: public: williamr@2: IMPORT_C static CSecureSocket* NewL(RSocket& aSocket,const TDesC& aProtocol); williamr@2: IMPORT_C static CSecureSocket* NewL(MGenericSecureSocket& aSocket,const TDesC& aProtocol); williamr@2: williamr@2: /** Standard destructor. */ williamr@2: ~CSecureSocket(); williamr@2: williamr@2: // export CSecureSocket methods williamr@2: IMPORT_C TInt AvailableCipherSuites( TDes8& aCiphers ); williamr@2: IMPORT_C void CancelAll(); williamr@2: IMPORT_C void CancelHandshake(); williamr@2: IMPORT_C void CancelRecv(); williamr@2: IMPORT_C void CancelSend(); williamr@2: IMPORT_C const CX509Certificate* ClientCert(); williamr@2: IMPORT_C TClientCertMode ClientCertMode(); williamr@2: IMPORT_C TDialogMode DialogMode(); williamr@2: IMPORT_C void Close(); williamr@2: IMPORT_C TInt CurrentCipherSuite( TDes8& aCipherSuite ); williamr@2: IMPORT_C void FlushSessionCache(); williamr@2: IMPORT_C TInt GetOpt(TUint aOptionName, TUint aOptionLevel, TDes8& aOption); williamr@2: IMPORT_C TInt GetOpt(TUint aOptionName, TUint aOptionLevel, TInt& aOption); williamr@2: IMPORT_C TInt Protocol(TDes& aProtocol); williamr@2: IMPORT_C void Recv (TDes8& aDesc, TRequestStatus& aStatus ); williamr@2: IMPORT_C void RecvOneOrMore( TDes8& aDesc, TRequestStatus& aStatus, TSockXfrLength& aLen ); williamr@2: IMPORT_C void RenegotiateHandshake(TRequestStatus& aStatus ); williamr@2: IMPORT_C void Send( const TDesC8& aDesc, TRequestStatus& aStatus, TSockXfrLength& aLen ); williamr@2: IMPORT_C void Send( const TDesC8& aDesc, TRequestStatus& aStatus ); williamr@2: IMPORT_C const CX509Certificate* ServerCert(); williamr@2: IMPORT_C TInt SetAvailableCipherSuites(const TDesC8& aCiphers); williamr@2: IMPORT_C TInt SetClientCert(const CX509Certificate& aCert); williamr@2: IMPORT_C TInt SetClientCertMode(const TClientCertMode aClientCertMode); williamr@2: IMPORT_C TInt SetDialogMode(const TDialogMode aDialogMode); williamr@2: IMPORT_C TInt SetProtocol(const TDesC& aProtocol); williamr@2: IMPORT_C TInt SetOpt(TUint aOptionName, TUint aOptionLevel, const TDesC8& aOption=TPtrC8(NULL,0)); williamr@2: IMPORT_C TInt SetOpt(TUint aOptionName, TUint aOptionLevel, TInt aOption); williamr@2: IMPORT_C TInt SetServerCert(const CX509Certificate& aCert); williamr@2: IMPORT_C void StartClientHandshake(TRequestStatus& aStatus); williamr@2: IMPORT_C void StartServerHandshake(TRequestStatus& aStatus); williamr@2: williamr@2: private: williamr@2: void ConstructL(RSocket& aSocket,const TDesC& aProtocol); williamr@2: void ConstructL(MGenericSecureSocket& aSocket,const TDesC& aProtocol); williamr@2: williamr@2: enum {ESecureSocketStateOpen, ESecureSocketStateClosed}; williamr@2: williamr@2: TUint iSecureSocketState; williamr@2: williamr@4: TInt iUNUSED; williamr@2: MSecureSocket* iSecureImplementation; williamr@2: }; williamr@2: williamr@2: #endif // __SECURESOCKET_H__