kernel/eka/include/e32capability.h
changeset 0 a41df078684a
equal deleted inserted replaced
-1:000000000000 0:a41df078684a
       
     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__