--- /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 <e32base.h>
+#include <abs_eap_vpn_if.h> // 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_
+