diff -r f345bda72bc4 -r 43e37759235e Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/secureserver_8h_source.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/secureserver_8h_source.html Tue Mar 30 16:16:55 2010 +0100 @@ -0,0 +1,157 @@ + + +
+ +00001 // Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +00002 // All rights reserved. +00003 // This component and the accompanying materials are made available +00004 // under the terms of "Eclipse Public License v1.0" +00005 // which accompanies this distribution, and is available +00006 // at the URL "http://www.eclipse.org/legal/epl-v10.html". +00007 // +00008 // Initial Contributors: +00009 // Nokia Corporation - initial contribution. +00010 // +00011 // Contributors: +00012 // +00013 // Description: +00014 // Defines CSecureServer, CSecureServerSession and CSecureServerSubSession classes. +00015 // It also defines the constants that form the security policy for the server. +00016 // +00017 +00018 +00019 +00024 #ifndef __SECURESERVER_H__ +00025 #define __SECURESERVER_H__ +00026 +00027 #include <e32svr.h> +00028 #include <e32uid.h> +00029 #include <e32math.h> +00030 #include <f32file.h> +00031 +00036 const TUint KDefaultHeapSize=0x10000; +00037 +00043 enum TSecureServerPanic +00044 { +00048 EBadRequest = 1, +00052 EDescriptorNonNumeric, +00056 EMainSchedulerError, +00060 EServerCreateServer, +00064 EServerStartServer, +00068 ECreateTrapCleanup, +00072 EBadSubsessionHandle, +00076 ESecureServerSecurityPolicy +00077 }; +00078 +00083 const TInt KSecureServerRangeCount = 5; +00084 +00089 const TInt KSecureServerRanges[KSecureServerRangeCount] = +00090 { +00094 0, +00098 5, +00102 6, +00106 11, +00110 13 +00111 }; +00112 +00117 const CPolicyServer::TPolicyElement KSecureServerElements[] = +00118 { +00122 _INIT_SECURITY_POLICY_S0(0x70fffff0), +00126 {_INIT_SECURITY_POLICY_C1(ECapabilityReadDeviceData | ECapabilityWriteDeviceData), CPolicyServer::EFailClient} +00127 }; +00128 +00133 const TUint8 KSecureServerElementsIndex[KSecureServerRangeCount] = +00134 { +00139 CPolicyServer::EAlwaysPass, +00144 0, +00149 CPolicyServer::ECustomCheck, +00154 1, +00159 CPolicyServer::ENotSupported +00160 }; +00161 +00167 const CPolicyServer::TPolicy KSecureServerPolicy = +00168 { +00172 CPolicyServer::EAlwaysPass, +00173 KSecureServerRangeCount, +00174 KSecureServerRanges, +00175 KSecureServerElementsIndex, +00176 KSecureServerElements +00177 }; +00178 +00190 class CSecureServer : public CPolicyServer +00191 { +00192 public: +00193 CSession2* NewSessionL(const TVersion &aVersion,const RMessage2& aMessage) const; +00194 static CSecureServer* NewL(CActive::TPriority aActiveObjectPriority); +00195 static TInt ThreadFunction(TAny* aStarted); +00196 static void PanicServer(TSecureServerPanic aPanic); +00197 CPolicyServer::TCustomResult CustomSecurityCheckL(const RMessage2 &aMsg, TInt &aAction, TSecurityInfo &aMissing); +00198 CObjectCon* NewContainerL(); +00199 void RemoveContainer(CObjectCon *aCon); +00200 ~CSecureServer(); +00201 private : +00202 CSecureServer(CActive::TPriority aActiveObjectPriority); +00203 void ConstructL(); +00204 +00205 private: +00209 CObjectConIx* iContainerIndex; +00210 }; +00211 +00212 class CSecureServerSubSession; +00213 +00220 class CSecureServerSession : public CSession2 +00221 { +00222 public: +00223 static CSecureServerSession* NewL(); +00224 void CreateL(); +00225 void ServiceL(const RMessage2& aMessage); +00226 void NewCounterL(const RMessage2& aMessage); +00227 void CloseSession(); +00228 void NumResourcesL(const RMessage2& aMessage); +00229 CSecureServerSubSession* CounterFromHandle(const RMessage2& aMessage,TInt aHandle); +00230 void DeleteCounter(TInt aHandle); +00231 TInt CountResources(); +00232 void PanicClient(const RMessage2& aMessage,TInt aPanic) const; +00233 CSecureServerSession(); +00234 private: +00238 CObjectCon* iContainer; +00242 CObjectIx* iCountersObjectIndex; +00247 TInt iResourceCount; +00248 }; +00249 +00256 class CSecureServerSubSession : public CObject +00257 { +00258 public: +00259 static CSecureServerSubSession* NewL(CSecureServerSession* aSession); +00260 CSecureServerSubSession(CSecureServerSession* aSession); +00261 void ConstructL(CSecureServerSession* aSession); +00262 void SetFromStringL(const RMessage2& aMessage); +00263 void Increase(); +00264 void IncreaseBy(const RMessage2& aMessage); +00265 void Decrease(); +00266 void DecreaseBy(const RMessage2& aMessage); +00267 void Reset(); +00268 void CounterValueL(const RMessage2& aMessage); +00269 void SaveCounterValueL(); +00270 void SetCounterValueFromFileL(); +00271 +00272 protected: +00276 CSecureServerSession* iSession; +00277 +00278 private: +00282 TInt iCount; +00283 }; +00284 +00285 #endif +