os/kernelhwsrv/kernel/eka/include/e32capability.h
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     1 // Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     4 // under the terms of the License "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 //
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
    10 //
    11 // Contributors:
    12 //
    13 // Description:
    14 // e32\include\e32capability.h
    15 // Platform security capability definitions
    16 // Used by both source code and tools
    17 // This file can be directly included into C++ tools such as ROMBUILD to allow
    18 // capabilities to be specified by name. To do the same for MAKMAKE (in MMP
    19 // files) some perl code will be needed to parse this file and extract the
    20 // capability names and values.
    21 // 
    22 //
    23 
    24 #ifndef __E32CAPABILITY_H__
    25 #define __E32CAPABILITY_H__
    26 
    27 /**
    28 An enumeration that defines the set of all supported capabilities.
    29 
    30 @publishedAll
    31 @released
    32 */
    33 enum TCapability
    34 	{
    35 	/**
    36 	Grants write access to executables and shared read-only resources.
    37 	
    38 	This is the most critical capability as it grants access to executables and
    39 	therefore to their capabilities. It also grants write access to
    40 	the /sys and /resource directories.
    41 	*/
    42 	ECapabilityTCB				= 0,
    43 	
    44 	
    45 	/**
    46 	Grants direct access to all communication device drivers. This includes:
    47 	the EComm, Ethernet, USB device drivers etc.
    48 	*/
    49 	ECapabilityCommDD			= 1,
    50 	
    51 	
    52 	/**
    53 	Grants the right:
    54 	
    55 	- to kill any process in the system
    56 	- to power off unused peripherals
    57 	- to switch the machine into standby state
    58 	- to wake the machine up
    59 	- to power the machine down completely.
    60 	
    61 	Note that this does not control access to anything and everything
    62 	that might drain battery power.
    63 	*/
    64 	ECapabilityPowerMgmt		= 2,
    65 
    66 
    67     /**
    68     Grants direct access to all multimedia device drivers.
    69     
    70     This includes the sound, camera, video device drivers etc.
    71     */
    72 	ECapabilityMultimediaDD		= 3,
    73 
    74 
    75     /**
    76     Grants read access to network operator, phone manufacturer and device
    77     confidential settings or data.
    78     
    79     For example, the pin lock code, the list of applications that are installed.
    80     */
    81 	ECapabilityReadDeviceData	= 4,
    82 	
    83 	
    84     /**
    85     Grants write access to settings that control the behaviour of the device.
    86     
    87     For example, device lock settings, system time, time zone, alarms, etc.
    88     */	
    89 	ECapabilityWriteDeviceData	= 5,
    90 
    91 
    92     /**
    93     Grants access to protected content.
    94     
    95     DRM (Digital Rights Management) agents use this capability to decide whether
    96     or not an application should have access to DRM content. 
    97     Applications granted DRM are trusted to respect the rights associated
    98     with the content.
    99     */	
   100 	ECapabilityDRM				= 6,
   101 
   102 
   103     /**
   104     Grants the right to create a trusted UI session, and therefore to display
   105     dialogs in a secure UI environment.
   106     
   107     Trusted UI dialogs are rare. They must be used only when confidentiality
   108     and security are critical; for example, for password dialogs. 
   109     
   110     Normal access to the user interface and the screen does not require
   111     this capability.
   112     */	
   113 	ECapabilityTrustedUI		= 7,
   114 
   115 
   116     /**
   117     Grants the right to a server to register with a protected name.
   118     
   119     Currently, protected names start with a "!" character. The kernel prevents
   120     servers without this capability from using such a name, and therefore
   121     prevents protected servers from being impersonated.
   122     */	
   123 	ECapabilityProtServ			= 8,
   124 
   125 
   126     /**
   127     Grants access to disk administration operations that affect more than one
   128     file or one directory (or overall filesystem integrity/behaviour, etc).
   129     
   130     For examples, reformatting a disk partition.
   131     */	
   132 	ECapabilityDiskAdmin		= 9,
   133 
   134 
   135     /**
   136     Grants the right to modify or access network protocol controls.
   137     
   138     Typically when an action can change the behaviour of all existing and
   139     future connections, it should be protected by this capability.
   140     
   141     For example, forcing all existing connections on a specific protocol
   142     to be dropped, or changing the priority of a call.
   143     */	
   144 	ECapabilityNetworkControl	= 10,
   145 
   146 
   147     /**
   148     Grants read access to the entire file system; grants write access to
   149     the private directories of other processes.
   150     
   151     This capability is very strictly controlled and should rarely be granted.
   152     */	
   153 	ECapabilityAllFiles			= 11,
   154 
   155 
   156     /**
   157     Grants the right to generate software key & pen events, and to capture any
   158     of them regardless of the status of the application.
   159     
   160     Note that after obtaining the focus, normal applications do not need this
   161     capability to be dispatched key and pen events.
   162     */	
   163 	ECapabilitySwEvent			= 12,
   164 
   165 
   166     /**
   167     A user capability that grants access to remote services without any
   168     restriction on its physical location.
   169     
   170     Typically, such a location is unknown to the phone user, and such services
   171     may incur cost for the phone user.
   172     
   173     Voice calls, SMS, and internet services are good examples of
   174     such network services. They are supported by GSM, CDMA and all IP transport
   175     protocols including Bluetooth profiles over IP.
   176     */	
   177 	ECapabilityNetworkServices	= 13,
   178 
   179 
   180     /**
   181     A user capability that grants access to remote services in the close
   182     vicinity of the phone.
   183     
   184     The location of the remote service is well-known to the phone user, and in
   185     most cases, such services will not incur cost for the phone user.
   186     */	
   187 	ECapabilityLocalServices	= 14,
   188 
   189 
   190     /**
   191     A user capability that grants read access to data that is confidential to
   192     the phone user. 
   193     
   194     This capability supports the management of the user's privacy.
   195     
   196     Typically, contacts, messages and appointments are always seen user
   197     confidential data.
   198     */	
   199 	ECapabilityReadUserData		= 15,
   200 
   201 
   202     /**
   203     A user capability that grants write access to user data. 
   204     
   205     This capability supports the management of the integrity of user data.
   206     
   207     Note that this capability is not symmetric with the ECapabilityReadUserData
   208     capability. For example, you may want to prevent rogue applications from
   209     deleting music tracks but you may not want to restrict read access to them.
   210     */	
   211     ECapabilityWriteUserData	= 16,
   212     
   213     
   214     /**
   215     A user capability that grants access to the location of the device.
   216     
   217     This capability supports the management of the user's privacy with regard
   218     to the phone location.
   219     */
   220 	ECapabilityLocation			= 17,
   221 
   222 
   223 	/**
   224 	Grants access to logical device drivers that provide input information about
   225 	the surroundings of the device. 
   226 
   227 	Good examples of drivers that require this capability would be GPS and biometrics
   228 	device drivers. For complex multimedia logical device drivers that provide both
   229 	input and output functions, such as Sound device driver, the  MultimediaDD
   230 	capability should be used if it is too difficult to separate the input from the
   231 	output calls at its API level.
   232 	*/
   233 	ECapabilitySurroundingsDD	= 18,
   234 
   235 
   236 	/**
   237 	Grants access to live confidential information about the user and his/her
   238 	immediate environment. This capability protect the user's privacy.
   239 
   240 	Examples are audio, picture and video recording, biometrics (such as blood
   241 	pressure) recording.
   242 
   243 	Please note that the location of the device is excluded from this capability.
   244 	The protection of this is achieved by using the dedicated capability Location
   245 	*/
   246 	ECapabilityUserEnvironment	= 19,
   247 
   248 
   249 	ECapability_Limit,					/**< @internalTechnology */
   250 
   251 	ECapability_HardLimit		= 255,	/**< @internalTechnology */
   252 
   253 	ECapability_None			= -1,	/**< Special value used to specify 'do not care' or 'no capability'.*/
   254 
   255 	ECapability_Denied			= -2	/**< Special value used to indicate a capability that is never granted. */	
   256 	};
   257 
   258 
   259 /** Define this macro to reference the names of the capabilities. This is here so
   260 	that ROMBUILD can accept capability names.
   261 */
   262 #ifdef __REFERENCE_CAPABILITY_NAMES__
   263 
   264 extern const char* const CapabilityNames[ECapability_Limit];
   265 
   266 #endif	// __REFERENCE_CAPABILITY_NAMES__
   267 
   268 /** Define this macro to include the names of the capabilities. This is here so
   269 	that ROMBUILD can accept capability names.
   270 */
   271 #ifdef __INCLUDE_CAPABILITY_NAMES__
   272 
   273 /** List of names of all supported capabilities
   274 	Must be in the same order as the enumerators in TCapability
   275 
   276 @publishedAll
   277 @released
   278 */
   279 extern const char* const CapabilityNames[ECapability_Limit] =
   280 	{
   281 	"TCB",
   282 	"CommDD",
   283 	"PowerMgmt",
   284 	"MultimediaDD",
   285 	"ReadDeviceData",
   286 	"WriteDeviceData",
   287 	"DRM",
   288 	"TrustedUI",
   289 	"ProtServ",
   290 	"DiskAdmin",
   291 	"NetworkControl",
   292 	"AllFiles",
   293 	"SwEvent",
   294 	"NetworkServices",
   295 	"LocalServices",
   296 	"ReadUserData",
   297 	"WriteUserData",
   298 	"Location",
   299 	"SurroundingsDD",
   300 	"UserEnvironment"
   301 	};
   302 
   303 #endif	// __INCLUDE_CAPABILITY_NAMES__
   304 
   305 #endif	// __E32CAPABILITY_H__