telephonyserverplugins/simtsy/inc/CSimPhoneIMSAuth.h
changeset 0 3553901f7fa8
child 24 6638e7f4bd8f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/simtsy/inc/CSimPhoneIMSAuth.h	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,117 @@
+// 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:
+//
+
+#ifndef __SIMPHONEIMSAUTH_H_
+#define __SIMPHONEIMSAUTH_H_
+
+/**
+ * @file
+ *
+ * Contains the class definitions required for the Phone IMS Auth
+ * @internalAll
+ */
+
+#include <etelmm.h>
+#include <et_phone.h>
+#include "csimtimer.h"
+#include "CSimSmsStore.h"//ugly but needed for listReadAllAttempt
+//#include "CSimPhone.h"
+
+//Constants
+
+/**
+ * The main Phone IMS Auth class which simulates IMS Authorization &
+ * Authentication features
+ */
+class CSimPhone;
+class CTestConfigSection;
+class CTestConfigItem;
+class CListReadAllAttempt;
+class CSimPhoneIMSAuth : public CBase, public MTimerCallBack
+	{
+public:
+	static CSimPhoneIMSAuth* NewL(CSimPhone* aPhone);
+	CSimPhoneIMSAuth(CSimPhone* aPhone);
+	~CSimPhoneIMSAuth();
+	const CTestConfigSection* CfgFile();
+
+	TInt GetAuthorizationInfoPhase1(const TTsyReqHandle aTsyReqHandle, 
+			RMobilePhone::TClientId* aClient,TInt* aBufSize);
+	TInt ProcessGetAuthorizationInfoPhase1L(const TTsyReqHandle aTsyReqHandle,
+			RMobilePhone::TClientId* aClientId, TInt* aBufSize);
+	TInt GetAuthorizationInfoPhase2(const TTsyReqHandle aTsyReqHandle, 
+			RMobilePhone::TClientId* aClientId,TDes8* aBuffer);
+	TInt GetAuthorizationInfoCancel(const TTsyReqHandle aTsyReqHandle);
+
+	TInt NotifyImsAuthorizationInfoChanged(const TTsyReqHandle aTsyReqHandle);
+	TInt NotifyImsAuthorizationInfoChangedCancel(const TTsyReqHandle aTsyReqHandle);
+
+	TInt GetAuthenticationData(const TTsyReqHandle aTsyReqHandle,TDes8* aAuthenticationData);
+	TInt GetAuthenticationDataCancel(const TTsyReqHandle aTsyReqHandle);
+
+protected:
+	void ConstructL();
+	
+private:
+	struct TAuthorizationInfo
+		{
+		/**Internet Multimedia Private Identity stored on the ISIM/USIM*/
+		RMobilePhone::TIMPI iIMPI;
+		/**Internet Multimedia Public Identity(ies) stored on the ISIM/USIM*/
+		RArray<RMobilePhone::TIMPU> iIMPUArray;
+		/**Home Network Domain Name stored on the ISIM/USIM*/
+		RMobilePhone::THNDN iHomeNetworkDomainName;
+		/**indicates whether authorization data has been retrieved from the ISIM*/
+		RMobilePhone::TAuthorizationDataSource iAuthenticationDataSource;
+		/**The delay after calling NotifyChange after which the next Authorization info is set*/
+		TInt iInfoChangeDelay;
+		};
+
+	struct TAuthenticationInfo
+		{
+		/** holds value of network challenge AUTN */
+		TBuf8<RMobilePhone::KAutnLength> iAUTN;
+		/** holds value of network challenge RAND */
+		TBuf8<RMobilePhone::KRandLength> iRAND;
+		/** holds result RES of AUTHENTICATE command when it's successfull*/
+		TBuf8<RMobilePhone::KResLength> iRES;
+		/** holds value of session key Integrity Key */
+		TBuf8<RMobilePhone::KIkLength> iIK;
+		/** holds value of session key Cipher Key */
+		TBuf8<RMobilePhone::KCkLength> iCK;
+		/** holds value of Authentication Token when  AUTHENTICATE fails*/
+		TBuf8<RMobilePhone::KAutsLength> iAUTS;
+		/** holds the error code that the AUTHENTICATE request should pass/fail with*/
+		TInt iAuthenticationErr;
+		};
+
+	void TimerCallBack(TInt aId);
+	void ParseAuthorizationInfoL();
+	void ParseAuthenticationInfoL();
+
+private:
+	CSimPhone* iPhone;
+	CSimTimer* iTimer;
+	CArrayPtrFlat<CListReadAllAttempt>* iGetAuthorizationData;
+	TBool iTimerStarted;
+
+	TBool iAuthInfoChangeNotifyPending;				// < Authorization Info change notification outstanding
+	TTsyReqHandle iAuthInfoChangeNotifyReqHandle;	// < Authorization Info change notification request handle
+
+
+	RArray<TAuthorizationInfo> iAuthorizationInfoList;
+	TInt iCurrentAuthorizationInfo;
+	RArray<TAuthenticationInfo> iAuthenticationInfoList;
+	};
+
+#endif