diff -r 000000000000 -r 33413c0669b9 vpnengine/ikev1lib/inc/ikev1crack.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vpnengine/ikev1lib/inc/ikev1crack.h Thu Dec 17 09:14:51 2009 +0200 @@ -0,0 +1,124 @@ +/* +* Copyright (c) 2005-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: IKEv1 Crack authentication +* +*/ + +#ifndef IKEV1CRACK_H +#define IKEV1CRACK_H + +#include +#include "ikev1dialog.h" + +/*--------------------------------------------------------------------------- + * + * CRACK return codes for public methods + * + *---------------------------------------------------------------------------*/ +#define CRACK_SUCCESS 0 +#define CRACK_CONTINUE 0x1 +#define CRACK_IGNORE_MSG 0x2 +#define CRACK_FAILED 0x4 + +/*--------------------------------------------------------------------------- + * + * CRACK iState flags + * + *---------------------------------------------------------------------------*/ +#define WAITING_USER_RSP 0x1 +#define WAITING_PEER_RSP 0x2 +#define CHALLENGE_RECEIVED 0x4 +#define CRACK_AUTHENTICATED 0x8 +#define SHOW_ERROR_DIALOG 0x10 +#define SECURID_NEXT_PIN_MODE 0x20 + +/*--------------------------------------------------------------------------- + * + * CAuthDialogInfo class + * + *---------------------------------------------------------------------------*/ +#define DIALOG_INFO_ID 0xfedcba98 +#define XAUTH_DIALOG_ID 0x76543210 + +class CIkev1Negotiation; +class TNotificationISAKMP; +class TCHREISAKMP; +class ThdrISAKMP; +class CIkev1PluginSession; +class MIkeDebug; + +class CAuthDialogInfo : public CBase + { +public: + CAuthDialogInfo(CIkev1PluginSession* aPluginSession, TUint32 aObjId, TUint32 aSAId, TUint32 aMsgId) + { iPluginSession = aPluginSession; iSAId = aSAId; iObjId = aObjId; iMsgId = aMsgId; } + ~CAuthDialogInfo() {iObjId = 0;} + inline CIkev1PluginSession* PluginSession() { return iPluginSession;} + inline TUint32 SAId() { return iSAId;} + inline TUint32 GetObjId() { return iObjId;} + inline TUint32 GetMsgId() { return iMsgId;} + +private: + TUint32 iObjId; // Object identifier + CIkev1PluginSession* iPluginSession; // Plugin session pointer + TUint32 iSAId; // SA id of CIkev1Negotiation + TUint32 iMsgId; // Transaction exchange message ID + +public: +// Credentials data get from user with asynchronous dialog + HBufC8 *iUsername; + HBufC8 *iSecret; + HBufC8 *iDomain; + }; + + +NONSHARABLE_CLASS(CIKECRACKNegotiation) : public CBase, public MIkeDialogComplete +{ +public: + CIKECRACKNegotiation( MIkeDebug& aDebug ); + ~CIKECRACKNegotiation(); + TInt ConstructL(TInt aLAMType, CIkev1Negotiation *aNegotiation, const TDesC &aDomain); + TInt ExecuteCRACKMsgL(const ThdrISAKMP &aHdr); + TInt ProcessUserResponseL(CAuthDialogInfo *aUserInfo); + TInt CrackAuthenticationFailedL(const TNotificationISAKMP *aNotifPayload); + + TInt DialogCompleteL(CIkev1Dialog* /*aDialog*/, TAny* aUserInfo, HBufC8* aUsername, HBufC8* aSecret, HBufC8* aDomain); + + +private: + TInt GetDataL(HBufC8* aChallenge); + TInt GetDatafromUserL(HBufC8 *aChallenge); + TInt GetUNPWDFromPolicyL(); + TInt ProcessCHREAttibutesL(const TCHREISAKMP *aCHRE_PAYLOAD); + void SendCredentialsL(TUint16 aAttr1, TUint16 aAttr2, TUint16 aAttr3, + HBufC8* aBfr1, HBufC8* aBfr2, HBufC8* aBfr3); + +private: + TInt iLAMType; // Legacy Authentication Method type code + TInt iState; // CRACK negotiation state + TInt iMsgCount; // CRACK message count xmitted (does not contain retries) + + CIkev1PluginSession* iPluginSession; // IKEv1 plugin session + CIkev1Negotiation* iNegotiation; // Current negotiation object (related to CRACK) + CIkev1Dialog* iDialog; // Pending dialog object + CAuthDialogInfo* iDialogInfo; // Dialog info object + + HBufC8 *iUserName; // Saved for User name caching + HBufC8 *iDomain; // Fixed domain value for this CRACK negotiation + + MIkeDebug& iDebug; +}; + + +#endif // IKEV1CRACK_H