00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00022 #include "secureclientandserver.h"
00023 #include "secureserver.h"
00024
00029 void CSecureServer::PanicServer(TSecureServerPanic aPanic)
00030 {
00031 _LIT(KTxTSecureServer,"SecureServer");
00032 User::Panic(KTxTSecureServer,aPanic);
00033 }
00034
00040 CSecureServer* CSecureServer::NewL(CActive::TPriority aActiveObjectPriority)
00041 {
00042 CSecureServer* self = new (ELeave) CSecureServer(aActiveObjectPriority);
00043 CleanupStack::PushL(self);
00044 self->ConstructL();
00045 CleanupStack::Pop();
00046 return self;
00047 }
00048
00053 CObjectCon* CSecureServer::NewContainerL()
00054 {
00055 return iContainerIndex->CreateL();
00056 }
00057
00062 void CSecureServer::RemoveContainer(CObjectCon *aCon)
00063 {
00064 iContainerIndex->Remove(aCon);
00065 }
00066
00075 CSecureServer::CSecureServer(CActive::TPriority aActiveObjectPriority)
00076 : CPolicyServer(aActiveObjectPriority, KSecureServerPolicy, ESharableSessions)
00077 {
00078
00079 }
00080
00090 void CSecureServer::ConstructL()
00091 {
00092 iContainerIndex = CObjectConIx::NewL();
00093 }
00094
00098 CSecureServer::~CSecureServer()
00099 {
00100 delete iContainerIndex;
00101 }
00102
00108 CSession2* CSecureServer::NewSessionL(const TVersion &aVersion,const RMessage2& ) const
00109 {
00110 TVersion v(KSecureServMajorVersionNumber,KSecureServMinorVersionNumber,KSecureServBuildVersionNumber);
00111 if (!User::QueryVersionSupported(v,aVersion))
00112 {
00113 User::Leave(KErrNotSupported);
00114 }
00115 return new (ELeave) CSecureServerSession;
00116 }
00117
00136 CPolicyServer::TCustomResult CSecureServer:: CustomSecurityCheckL(const RMessage2 &aMsg, TInt &aAction, TSecurityInfo &aMissing)
00137 {
00138 TInt sid;
00139 RMessagePtr2 msg = aMsg;
00140 sid = msg.SecureId();
00141 switch(aMsg.Function())
00142 {
00143 case ESecureServerIncreaseBy:
00144 case ESecureServerDecreaseBy:
00145 {
00146 TInt val = aMsg.Int0();
00147 if(val > 10)
00148 {
00149 if(sid > 0x70fffff5)
00150 {
00151 return EFail;
00152 }
00153 }
00154 }
00155 break;
00156 case ESecureServerReset:
00157 case ESecureServerDecrease:
00158 case ESecureServerIncrease:
00159 {
00160 }
00161 break;
00162 default:
00163 {
00164 aAction = EPanicClient;
00165 CheckFailedL(aMsg,aAction,aMissing);
00166 return EFail;
00167 }
00168 }
00169 return EPass;
00170 }