diff -r 000000000000 -r 33413c0669b9 vpnengine/ikev2lib/inc/ikev2EapInterface.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vpnengine/ikev2lib/inc/ikev2EapInterface.h Thu Dec 17 09:14:51 2009 +0200 @@ -0,0 +1,124 @@ +/* +* Copyright (c) 2003-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: "intermediate" class between +* CIkev2Negotiation class of ikev2plugin and ECOM plug-in +* +*/ +#ifndef __IKEV2EAPINTERFACE_H_ +#define __IKEV2EAPINTERFACE_H_ + +#include +#include // MAbsEapVpnInterface + +class CIkeData; +class TPayloadIkev2; +class CEapVpnInterface; +class MIkeDebug; + +class MIkev2EapIfObserver + { +public: + virtual void SendEapDataL(HBufC8* aEapData) = 0; + virtual void EapEventL(TInt aEvent) = 0; + }; + +/** + * CIkev2EapIf + * + * CIkev2EapIf is an "intermediate" class between + * CIkev2Negotiation class of ikev2plugin and ECOM plug-in (eapplugin) + * which provides access into general EAP protocol implementation in + * system. CIkev2EapIf implements also the callback functions required + * by the EAP ECOM plug-in. + * + * @lib internal ikev2lib.lib + * @since S60 3.0 + */ +NONSHARABLE_CLASS(CIkev2EapIf) : public CBase, public MAbsEapVpnInterface + { +public: + + /** + * NewL + * + * @since S60 3.0 + * @param aNeg IKE negotiation. Must be != NULL. Ownership not taken. + * @param aEapType EAP type. + * @param aIkeData Ref to IKE data. Ownership not taken. + * @param aDebug Debug trace interface + * @return self + */ + static CIkev2EapIf* NewL(MIkev2EapIfObserver& aEapIfObserver, + TUint8 aEapType, + CIkeData* aIkeData, + MIkeDebug& aDebug); + + ~CIkev2EapIf(); + inline TInt Status() {return iErrorStatus;} + inline HBufC8* Identity() + { + HBufC8* Id = (HBufC8*)iIdentity; + iIdentity = 0; + return Id; + } + inline HBufC8* MSK() + { + HBufC8* msk = (HBufC8*)iMSK; + iMSK = NULL; + return msk; + } + void ErrorStopL() {}; + void EapDataInbound(TPayloadIkev2* aEapPayload); + void QueryIdentity(); + + /** + * From MAbsEapVpnInterface. + * Implementation of pure virtual methods + */ + void EapOutboundL(HBufC8* aResponse); + void EapIdentityResponseL(HBufC8* aIdentity); + void EapSharedKeyL(HBufC8* aSharedKey); + void EapIndication(TNotification aNotification); + +private: // implementation + + CIkev2EapIf(MIkev2EapIfObserver& aEapIfObserver, TUint8 aEapType, MIkeDebug& aDebug); + void ConstructL(CIkeData* aIkeData); + +private: // data + MIkev2EapIfObserver& iEapIfObserver; + CEapVpnInterface* iEapPlugin; // Own: ECOM plug-in + HBufC8* iIdentity; // Identity buffer + HBufC8* iMSK; // Preshared key + TInt iErrorStatus; // Error status, if construct fails + TUint8 iEapType; + TUint8 iReserved[3]; // Dummy for alignment + + /** + * Debug trace interface. + * Not own. + */ + MIkeDebug& iDebug; +}; + +// +// Internal EAP event codes used in IKEv2 plug-in EapEventL() calls +// +const TInt KEapEventSuccess = 0; +const TInt KEapEventGetIdentity = 1; +const TInt KEapEventGetPSK = 2; +const TInt KEapEventFailed = 3; + +#endif // __IKEV2EAPINTERFACE_H_ +