--- a/authenticationservices/authenticationserver/source/server/authserver.h Tue Aug 31 17:00:08 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,271 +0,0 @@
-/*
-* 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 the License "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:
-* CAuthServer class definition
-*
-*/
-
-
-/**
- @file
- @released
- @internalComponent
-*/
-#ifndef AUTHSERVER_H
-#define AUTHSERVER_H
-
-#include <e32cmn.h>
-#include <ct/rcpointerarray.h>
-#include <e32property.h>
-#include <f32file.h>
-#include <scs/scsserver.h>
-#include "authserveripc.h"
-#include "authrepository.h"
-
-
-namespace AuthServer
-{
-
-/**
- *Panic values associated with the AuthServer
- */
-enum TAuthServerPanic
- {
- EPanicCorruptDescriptor = 0,
- /// An invalid service request number has been receieved by the
- /// server. This should not be received by those using the RAuthClient or
- /// derived classes.
- EPanicInvalidFunction = 1,
-
- EPanicAlreadyReceiving = 2,
- /// An internal error indicating the received authentication expression
- /// is malformed. This should not be received by those using the
- /// RAuthClient or derived classes.
- EPanicBadExternalizedAuthExpr = 3,
- /// A request has been made that refers to a non-existent plugin.
- EPanicNoSuchAuthPlugin = 4,
- /// In order to create a first identity, the authserver requires that
- /// at least one plugin supports default data.
- EPanicNoFirstStartPlugin = 5,
- /// A call has been made to the authserver's training manager while one
- /// is already in progress.
- EPanicTrainingMgrBusy = 6,
- /// A plugin has reported that it supports default data but has returned
- /// an invalid data buffer.
- EPanicInvalidDefaultData = 7
- };
-
-const TInt KPolicyRanges= 12;
-const TInt KPolicyElements = 7;
-
-const TInt KDefaultShutdownDelay = 3 * 1000 * 1000; // 3 seconds
-
-class CIdentity;
-
-class CPluginMgr;
-class CPluginObserver;
-class CTrainingMgr;
-class CEvaluator;
-class CAuthExpression;
-class CAuthTransaction;
-struct TLastAuth;
-
-// The description for the default identity.
-_LIT(KDefaultUserDescription, "DefaultUser");
-
-/**
- * Helper class to manage details during identity reset operation
- **/
-class TPluginResetDetails
- {
-public:
- TPluginResetDetails(TPluginId aPluginId, const TDesC& aRegistrationData):
- iPluginId(aPluginId),
- iRegistrationData(aRegistrationData)
- {}
-
-public:
- TPluginId PluginId() const { return iPluginId;};
- const TDesC& RegistrationData() const { return iRegistrationData;};
-
-private:
- TPluginId iPluginId;
- const TDesC& iRegistrationData;
- };
-
-
-/**
- * Provides authentication and identity management services.
- *
- * A CPolicyServer derived class providing management of identity
- * authentication services. Responsible for managing identities in accordance
- * with the requests made by clients.
- *
- **/
-class CAuthServer : public CScsServer, public MEvaluatorPluginInterface,
- public MEvaluatorClientInterface
- {
-public:
- // implement CScsServer.
- virtual CScsSession* DoNewSessionL(const RMessage2& aMessage);
-
-
- // implement CScsServer.
- virtual void DoPreHeapMarkOrCheckL();
-
- // implement CScsServer.
- virtual void DoPostHeapMarkOrCheckL();
-
-
- static CAuthServer* NewLC(CActive::TPriority = CActive::EPriorityStandard);
-
- void AuthenticateL(const RMessage2& aMessage);
-
- void DeauthenticateL(const RMessage2& aMessage);
- void CancelL(const RMessage2& aMessage);
- void PluginsL(const RMessage2& aMessage);
- void ActivePluginsL(const RMessage2& aMessage);
- void PluginsByTypeL(const RMessage2& aMessage);
- void PluginsByTrainingL(const RMessage2& aMessage);
- void IdentitiesL(const RMessage2& aMessage);
- void SetIdentityStringL(const RMessage2& aMessage);
- void IdentityStringL(const RMessage2& aMessage);
- void RegisterIdentityL(const RMessage2& aMessage);
- void RemoveIdentityL(const RMessage2& aMessage);
- void TrainPluginL(const RMessage2& aMessage);
- void ForgetPluginL(const RMessage2& aMessage);
- void PreferredTypePluginL(const RMessage2& aMessage);
- void SetPreferredTypePluginL(const RMessage2& aMessage);
- void IdentitiesWithStringL(const RMessage2& aMessage);
- void ListAuthAliasesL(const RMessage2& aMessage);
- void ResolveExpressionL(const RMessage2& aMessage);
- void ResetIdentityL(TInt aFunction, const RMessage2& aMessage);
- void ResetIdentityByListL(const RMessage2& aMessage);
-
- virtual void Evaluate(TPluginId aPluginId,
- TIdentityId& aIdentityId,
- CAuthExpressionImpl::TType aType,
- TRequestStatus& aStatus);
-
- virtual void Evaluate(TAuthPluginType aPluginType,
- TIdentityId& aIdentityId,
- CAuthExpressionImpl::TType aType,
- TRequestStatus& aStatus);
-
- virtual void CancelEvaluate();
- virtual void EvaluationSucceeded(TIdentityId aIdentityId);
- virtual void EvaluationFailed(TInt aReason);
-
-private:
-
- CAuthServer(CActive::TPriority aPriority);
-
- /// 2nd phase construction
- void ConstructL();
-
- ~CAuthServer();
-
- CIdentity* CachedIdentity(const TTimeIntervalSeconds& timeout);
-
- TBool FilterActivePlugins(const CAuthPluginInterface& aInterface);
-
- void FirstStartL();
- void CreatePropertiesL();
- void ClearPropertiesL();
-
- TBool ServerBusy();
-
- void EvaluationSucceededL(TIdentityId aIdentityId) ;
- void CompleteAuthenticationL(const RMessagePtr2& aMessage, CIdentity* aId);
-
- typedef TBool (CAuthServer::* TInterfaceFilter)(const CAuthPluginInterface&);
-
- void FilterPluginsL(
- const RMessage2& aMessage, TInterfaceFilter aFilter);
-
- void GetDescriptionsFromEComLC(
- TInterfaceFilter aFilter, RCPointerArray<const CPluginDesc>& aDescs);
-
- TBool FilterAllPlugins(const CAuthPluginInterface&);
- TBool FilterPluginsByType(const CAuthPluginInterface&);
- TBool FilterPluginsByTraining(const CAuthPluginInterface& aInterface);
-
- void UpdateAuthL(TLastAuth& aAuth, TPluginId aPlugin);
-
- HBufC* StringOrNullLC(TBool aReturnString, TIdentityId id);
-
- void EvaluateL(TPluginId aPluginId,
- TIdentityId& aIdentityId,
- CAuthExpressionImpl::TType aType,
- TRequestStatus& aStatus);
-
- void ProcessAliasStringL(RPointerArray<HBufC>& aAuthAliasList, const TDesC& aAliasStringToProcess , RBuf& aResultantAliasString);
-
- TBool CheckForAliasInAliasString(RPointerArray<HBufC>& aAuthAliasList, const TDes& aAliasString);
- CTransientKeyInfo* CreateKeyInfoLC(TPluginId aPluginId, const TDesC8& aPluginData, const CProtectionKey& aProtKey);
- TCustomResult CustomSecurityCheckL(const RMessage2& aMsg,
- TInt& aAction, TSecurityInfo& aMissing);
- void TokenizeStringL( const TDesC& aStringToBeProcessed, RBuf& aResultantString );
- void ResolveAliasL( const TDesC& aAliasName,
- RPointerArray<HBufC>& aAliasList,
- RBuf& aResultantString);
-
-
- void FreeMemoryBeforeHeapMark();
- void SetupVariablesAfterHeapMarkEndL();
-
-private:
- RFs iFs;
- /// The persistent authentication database
- CAuthDb2* iAuthDb2;
- //plugin manager
- CPluginMgr* iPluginMgr;
- // The training manager
- CTrainingMgr* iTrainingMgr;
- /// the auth expression evaluator
- CEvaluator* iEvaluator;
- /// the last authenticated identity
- CIdentity* iLastIdentity;
- /// the last authentication time
- TTime iLastAuthTime;
- /// holds the information about the authentication taking place
- CAuthTransaction* iAuthTransaction;
- /// used to publish information about the last authentication
- RProperty iAuthProperty;
- /// used to notify subscribers of changes to the authenticated identity
- RProperty iAuthEventProperty;
- /// The authentication repository
- CAuthRepository* iAuthRepository;
- /// The key size to be used for protection keys
- TInt iKeySize;
- /// The parameters from the IPC Call
- CAuthParams* iParams;
-
-
- TAuthTrainingStatus iFilterTraining;
- TAuthPluginType iFilterType;
- CPluginObserver* iPluginObserver;
-
- // Server Policies
- static const TUint iRangeCount;
- static const TInt iRanges[KPolicyRanges];
- static const TUint8 iElementsIndex[KPolicyRanges];
- static const CPolicyServer::TPolicyElement iPolicyElements[KPolicyElements];
- static const CPolicyServer::TPolicy iPolicy;
- static const TStaticSecurityPolicy iPropertyWritePolicy;
- static const TStaticSecurityPolicy iPropertyReadPolicy;
- };
-} //namespace
-
-#endif // AUTHSERVER_H