diff -r 000000000000 -r f63038272f30 bluetoothengine/bthid/common/inc/genericserversecuritypolicy.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bluetoothengine/bthid/common/inc/genericserversecuritypolicy.h Mon Jan 18 20:28:57 2010 +0200 @@ -0,0 +1,143 @@ +/* +* Copyright (c) 2008 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: +* +* Description: +* +*/ + + +/** + @file + */ +#ifndef __GENERICSERVERSECURITYPOLICY_H__ +#define __GENERICSERVERSECURITYPOLICY_H__ + +const TUint KGenericServerRangeCount = 2; //16; + +const TInt KGenericServerRanges[KGenericServerRangeCount] = + { + 0, 16 + }; +/* + EGenericCreateHostResolverSubSession, // 0 = Alway fail + EGenericCreateRegistrySubSession, // 1 = Local Services + EGenericRegistrySearch, // 2 = Always pass + EBTRegistryRetrieveDevice, // 3 = Always fail + EBTRegistryAddDevice, // 4 = Always pass + EBTRegistryModifyBluetoothName, // 5 = Write Device Data + EBTRegistryModifyFriendlyName, // 6 = Always pass + EBTRegistryModifyNamelessDevice, // 7 = Write Device Data + EBTRegistryDeleteDevices, // 8 = Always pass + EBTRegistryDeleteLinkKey, // 9 = Write Device Data + EBTRegistryCloseView, // 10 = Always pass + EBTRegistryUpdateLocalDevice, // 11 = Write Device Data + EBTRegistryGetCommPortSettings, // 12 = Always pass + EBTHostResolverDeviceRequest, // 13 = Always fail + EGenericSetHeapFailure, // 14 = Local Services + // If new function enums are added, the following value needs to + // increase to be + 1. + // This defines a final range that extends from the first invalid + // function number to KMaxTInt, and protects against attempts to + // attack the server with invalid functions. + + EGenericSubSessionCount+1 // 15 = CPolicyServer::ENotSupported for all other fns. + }; + */ + +/** Index numbers into KGenericServerElements[] */ +const TInt KPolicyAlwaysFail = 0; +const TInt KPolicyLocalServices = 1; +const TInt KPolicyAlwaysPass = 2; +const TInt KPolicyWriteDeviceData = 3; + +/**Mapping IPCs to policy element */ +const TUint8 KGenericServerElementsIndex[KGenericServerRangeCount] = + { + KPolicyAlwaysPass, KPolicyAlwaysPass + + // KPolicyAlwaysFail, /** EGenericCreateHostResolverSubSession */ + // KPolicyLocalServices, /** EGenericCreateRegistrySubSession */ + /** EGenericCreateCommPortSettingsSubSession */ + /** EGenericCreateLocalDeviceSubSession */ + // KPolicyAlwaysPass, /** EGenericRegistrySearch */ + /** EGenericExtractRegistryDataIntoServer */ + /** EGenericRetrieveRegistryData */ + /** EGenericCloseSubSession */ + /** EGenericCancelRequest */ + // KPolicyAlwaysFail, /** EBTRegistryRetrieveDevice */ + // KPolicyAlwaysPass, /** EBTRegistryAddDevice */ + /** EBTRegistryGetNamelessDevice */ + // KPolicyWriteDeviceData, /** EBTRegistryModifyBluetoothName */ + // KPolicyAlwaysPass, /** EBTRegistryModifyFriendlyName */ + // KPolicyWriteDeviceData, /** EBTRegistryModifyNamelessDevice */ + // KPolicyAlwaysPass, /** EBTRegistryDeleteDevices */ + // KPolicyWriteDeviceData, /** EBTRegistryDeleteLinkKey */ + /** EBTRegistryUnpairView */ + // KPolicyAlwaysPass, /** EBTRegistryCloseView */ + /** EBTRegistryGetLocalDevice */ + // KPolicyWriteDeviceData, /** EBTRegistryUpdateLocalDevice */ + // KPolicyAlwaysPass, /** EBTRegistryGetCommPortSettings */ + /** EBTRegistryUpdateCommPortSettings */ + /** EBTRegistryDeleteCommPortSettings */ + // KPolicyAlwaysFail, /** EBTHostResolverDeviceRequest */ + /** EBTHostResolverGetNextDeviceRequest */ + /** EBTHostResolverDeviceModifyDevice */ + /** EBTHostResolverNotifyRequest */ + // KPolicyLocalServices, /** EGenericSetHeapFailure */ + /** EGenericSubSessionCount */ + // CPolicyServer::ENotSupported /** EGenericCreateSecManSubSession */ + /** EGenericCreateSecuritySettingsSubSession */ + /** EGenericCreateBasebandSecuritySubSession */ + /** EBTSecManAccessRequest */ + /** EBTSecuritySettingsRegister */ + /** EBTSecuritySettingsUnregister */ + /** EBTBasebandSecurityLinkKeyRequest */ + /** EBTBasebandSecurityNewLinkKey */ + /** EBTBasebandSecurityPinRequest */ + /** EBTBasebandSecurityNewLinkState */ + /** EBTBasebandSecurityHCIRequestHandler */ + /** EBTBasebandSecurityNameRequestResponse */ + /** ...and onwards to KMaxTInt */ + }; + +/** Individual policy elements */ +const CPolicyServer::TPolicyElement KGenericServerElements[] = + { + /** the EFailClient means that the if the check fails the CheckFailed method with return KErrPermissionDenied */ + { + _INIT_SECURITY_POLICY_FAIL + }, /** policyAlwaysFail */ + { + _INIT_SECURITY_POLICY_C1(ECapabilityLocalServices), + CPolicyServer::EFailClient + }, /** policyLocalService */ + { + _INIT_SECURITY_POLICY_PASS + }, /** policyAlwaysPass */ + { + _INIT_SECURITY_POLICY_C1(ECapabilityWriteDeviceData), + CPolicyServer::EFailClient + } /** policyWriteDevData */ + }; + +/** Main policy */ +const CPolicyServer::TPolicy KGenericServerPolicy = + { + CPolicyServer::EAlwaysPass, /** Specifies all connect attempts should pass */ + KGenericServerRangeCount, + KGenericServerRanges, + KGenericServerElementsIndex, + KGenericServerElements, + }; + +#endif //__GENERICSERVERSECURITYPOLICY_H__