cryptoservices/filebasedcertificateandkeystores/source/generic/client/clientsession.cpp
branchRCL_3
changeset 95 641f389e9157
parent 53 030c4fbc13d7
child 96 a71299154b21
--- a/cryptoservices/filebasedcertificateandkeystores/source/generic/client/clientsession.cpp	Thu Aug 19 11:38:48 2010 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/source/generic/client/clientsession.cpp	Tue Aug 31 17:00:08 2010 +0300
@@ -22,6 +22,14 @@
 #include "clientutils.h"
 #include "fstokenservername.h"
 
+#ifdef SYMBIAN_AUTH_SERVER
+
+#ifdef __WINS__
+#include <u32hal.h>
+#endif //__WINS__
+
+#include <e32svr.h>
+#endif // SYMBIAN_AUTH_SERVER
 
 //	\\	//	\\	//	\\	//	\\	//	\\	//	\\	//	\\	//	\\	//	\\	//	\\	
 //	Tokentype session class for file based certificate store
@@ -30,7 +38,11 @@
 //	\\	//	\\	//	\\	//	\\	//	\\	//	\\	//	\\	//	\\	//	\\	//	\\	
 
 _LIT(KFSTokenServerImg,"fstokenserver");
-
+#ifdef SYMBIAN_AUTH_SERVER
+#ifdef __WINS__
+_LIT(KFSNewTokenServerImg,"fstokenserver_useauth");
+#endif // __WINS__
+#endif // SYMBIAN_AUTH_SERVER
 
 RFileStoreClientSession::RFileStoreClientSession()
 {}
@@ -61,6 +73,13 @@
 // Connect to the server, attempting to start it if necessary
 //
 
+#ifdef SYMBIAN_AUTH_SERVER
+#ifdef __WINS__
+
+static bool UseAuthServer(void);
+
+#endif // SYMBIAN_AUTH_SERVER
+#endif // __WINS__
 
 TInt RFileStoreClientSession::Connect(ETokenEnum aToken)
 	{
@@ -74,6 +93,15 @@
 	for (;;)
 		{
 		TInt err = KErrNone;
+#ifdef SYMBIAN_AUTH_SERVER
+#ifdef __WINS__
+		if(UseAuthServer())
+			{
+			err = CreateSession(KFSNewTokenServerName, version, 1);
+			}
+		else
+#endif // __WINS__
+#endif // SYMBIAN_AUTH_SERVER
 			{
 			err = CreateSession(KFSTokenServerName, version, 1);
 			}
@@ -88,6 +116,25 @@
 		}
 	}
 
+#ifdef SYMBIAN_AUTH_SERVER
+#ifdef __WINS__
+
+/*static*/ bool UseAuthServer(void)
+	{
+	bool useAuthServer = false;
+	
+	TUint32 useAuth = 0;
+	// For the emulator allow the constant to be patched via epoc.ini
+	UserSvr::HalFunction(EHalGroupEmulator, EEmulatorHalIntProperty,
+	(TAny*)"KKeyStoreUseAuthServer", &useAuth); // read emulator property (if present)
+	if(useAuth)
+		{
+		useAuthServer = true;
+		}
+	return useAuthServer; 
+	}
+#endif // __WINS__
+#endif // SYMBIAN_AUTH_SERVER
 
 TInt StartServer()
 	{
@@ -97,6 +144,16 @@
 
 	RProcess server;
 	TInt error = KErrNone;
+	
+#ifdef SYMBIAN_AUTH_SERVER
+#ifdef __WINS__
+	if(UseAuthServer())
+		{
+		error = server.Create(KFSNewTokenServerImg, KNullDesC, serverUid);
+		}
+	else
+#endif // __WINS__
+#endif // SYMBIAN_AUTH_SERVER
 		{
 		error = server.Create(KFSTokenServerImg, KNullDesC, serverUid);
 		}