javacommons/security/legacysupport/midp2permissiondb/inc/midp2permissiondb.h
branchRCL_3
changeset 19 04becd199f91
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javacommons/security/legacysupport/midp2permissiondb/inc/midp2permissiondb.h	Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,438 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+#ifndef MIDP2PERMISSIONDB_H
+#define MIDP2PERMISSIONDB_H
+
+#include <e32base.h>
+#include <string>
+
+namespace MIDP
+{
+// ** Please keep in synch with the below array!
+enum TMidp2Domain
+{
+    EDomainUntrusted = 0,
+    EDomainTTP,
+    EDomainOperator,
+    EDomainManufacturer,
+    EDomainOnDeviceOperator,
+    EDomainOperatorUserPerms,
+    EDomainOnDeviceOperatorUserPerms,
+    EDomainManufacturerUserPerms,
+
+    ELastDomainMarker
+};
+
+static const TUint16* const KJcfDomains[] =
+{
+    _S16("*UTD*"), // 0
+    _S16("*TTPD*"),
+    _S16("*OPD*"),
+    _S16("*MFD*"),
+    _S16("*ODOPD*"),
+    _S16("*OPDU*"),
+    _S16("*ODOPDU*"),
+    _S16("*MFDU*")
+};
+
+//
+// ********************************************************************
+// Permission type and mode definitions
+// ********************************************************************
+//
+enum TMidp2PermissionType
+{
+    ENotAllowed,
+    EUser,
+    EAllowed
+};
+
+enum TMidp2PermissionMode
+{
+    EDenied  = 0x01,
+    EOneShot = 0x02,
+    ESession = 0x04,
+    EBlanket = 0x08
+};
+
+//
+// ********************************************************************
+// Permission definitions
+// ********************************************************************
+//
+
+// ** Please keep in synch with the below array!
+enum TMidp2Permission
+{
+    // MIDP 2.0 JSR 118
+    EPermissionConnectorHttp = 0,
+    EPermissionConnectorHttps,
+    EPermissionConnectorDatagram,
+    EPermissionConnectorDatagramReceiver,
+    EPermissionConnectorSocket,
+    EPermissionConnectorServerSocket,
+    EPermissionConnectorSsl,
+    EPermissionConnectorComm,
+    EPermissionPushRegistry,
+
+    // Wireless Messaging API  JSRs 120 & 205
+    EPermissionConnectorSms,
+    EPermissionWirelessSmsSend,
+    EPermissionWirelessSmsReceive,
+    EPermissionConnectorCbs,
+    EPermissionWirelessCbsReceive,
+    EPermissionConnectorMms,       // JSR 205
+    EPermissionWirelessMmsSend,    // JSR 205
+    EPermissionWirelessMmsReceive, // JSR 205
+
+
+    // Mobile Media API JSR 135
+    EPermissionMediaRecordControl,
+    EPermissionMediaGetSnapshot,
+    EPermissionConnectorRtsp,
+
+    // Bluetooth API JSR 82
+    EPermissionConnectorBtClient,
+    EPermissionConnectorBtServer,
+    EPermissionConnectorObexClient,
+    EPermissionConnectorObexClientTcp, //Not supported in releases before and including S60 3.2
+    EPermissionConnectorObexServer,
+    EPermissionConnectorObexServerTcp, //Not supported in releases before and including S60 3.2
+    EPermissionJavaxObexClientSession,
+    EPermissionJavaxObexOperation,
+
+    // File API JSR 75
+    EPermissionConnectorFileRead,
+    EPermissionConnectorFileWrite,
+
+    // PIM API JSR 75
+    EPermissionPimContactListRead,
+    EPermissionPimContactListWrite,
+    EPermissionPimEventListRead,
+    EPermissionPimEventListWrite,
+    EPermissionPimToDoListRead,
+    EPermissionPimToDoListWrite,
+
+    // Location API JSR 179
+    EPermissionLocationLocation,
+    EPermissionLocationOrientation, // Not supported in releases before and including S60 3.2, still not commented out because handled by not defining fg binding in policy file
+    EPermissionLocationProximityListener, //Not supported in releases before and including S60 3.2
+    EPermissionLocationLandmarkStoreRead,
+    EPermissionLocationLandmarkStoreWrite,
+    EPermissionLocationLandmarkStoreCategory,
+    EPermissionLocationLandmarkStoreManagement,
+
+    // SATSA API JSR 177
+    EPermissionSATSAAPDUApduSat, // bind to dummy functiongroup "SATSA APDU"
+    EPermissionSmartCardCommunicationApduAid, // Not supported in releases before and including S60 3.2, still not commented out because handled by not defining fg binding in policy file
+    EPermissionSmartCardCommunicationJcrmi, //Not supported in 3.1
+    EPermissionAuthenticationSecServCMSMsgSignServ,
+
+    // SIP API JSR 180
+    EPermissionConnectorSip,
+    EPermissionConnectorSips,
+
+    // Content Handler JSR 211
+//    EPermissionContentContentHandler, Not supported in releases before and including S60 3.2
+
+    // API Extensions
+    EPermissionAPIEXTActiveIdleSet,
+    EPermissionAPIEXTSasfSet,
+    EPermissionAPIEXTSasfGet,
+    EPermissionAPIEXTSoftNotificationSet,
+    EPermissionAPIEXTNewMailLEDSet,
+
+    // Restricted API Extensions
+    EPermissionAPIEXTMobinfoIMSI,
+
+    // Platform Request
+    EPermissionPlatformRequestNetAccess,
+    EPermissionPlatformRequestTel,
+    EPermissionPlatformRequestLocalApp,
+
+    //new
+    EPermissionAmmsControlCameraEnableShutterFeedback,
+    EPermissionAmmsControlTunerSetPreset,
+    EPermissionPaymentProcess,
+
+    // API JSR 272
+    EPermissionBroadcastRecordingRecordingSchedulerAdd,
+    EPermissionBroadcastRecordingRecordingSchedulerRemove,
+    EPermissionBroadcastRecordingRecordingSchedulerAccess,
+    EPermissionBroadcastEsgServiceGuideAccess,
+    EPermissionBroadcastServiceContextCreate,
+    EPermissionBroadcastServiceContextDefault,
+    EPermissionBroadcastServiceContextSelect,
+    EPermissionBroadcastPurchaseSubscriptionManagerGetSubscriptions,
+    EPermissionBroadcastPurchasePurchaseObjectPurchase,
+    EPermissionBroadcastPurchasePurchaseObjectCancel,
+    EPermissionBroadcastServiceContextBroadcastDatagram,
+    EPermissionIoConnectorBroadcastFileRead,
+
+    ELastPermissionMarker
+};
+
+static const TUint16* const KJcfPermissions[] =
+{
+    // MIDP 2.0 JSR 118
+    _S16("javax.microedition.io.Connector.http"),  // 0
+    _S16("javax.microedition.io.Connector.https"),
+    _S16("javax.microedition.io.Connector.datagram"),
+    _S16("javax.microedition.io.Connector.datagramreceiver"),
+    _S16("javax.microedition.io.Connector.socket"),
+    _S16("javax.microedition.io.Connector.serversocket"),
+    _S16("javax.microedition.io.Connector.ssl"),
+    _S16("javax.microedition.io.Connector.comm"),
+    _S16("javax.microedition.io.PushRegistry"),
+
+    // Wireless Messaging API  JSRs 120 & 205
+    _S16("javax.microedition.io.Connector.sms"),
+    _S16("javax.wireless.messaging.sms.send"),
+    _S16("javax.wireless.messaging.sms.receive"),
+    _S16("javax.microedition.io.Connector.cbs"),
+    _S16("javax.wireless.messaging.cbs.receive"),
+    _S16("javax.microedition.io.Connector.mms"),  // JSR 205
+    _S16("javax.wireless.messaging.mms.send"),    // JSR 205
+    _S16("javax.wireless.messaging.mms.receive"), // JSR 205
+
+    // Mobile Media API JSR 135
+    _S16("javax.microedition.media.control.RecordControl"),
+    _S16("javax.microedition.media.control.VideoControl.getSnapshot"),
+    _S16("javax.microedition.io.Connector.rtsp"),
+
+    // Bluetooth API JSR 82
+    _S16("javax.microedition.io.Connector.bluetooth.client"),
+    _S16("javax.microedition.io.Connector.bluetooth.server"),
+    _S16("javax.microedition.io.Connector.obex.client"),
+    _S16("javax.microedition.io.Connector.obex.client.tcp"), //Not supported in releases before and including S60 3.2
+    _S16("javax.microedition.io.Connector.obex.server"),
+    _S16("javax.microedition.io.Connector.obex.server.tcp"), //Not supported in releases before and including S60 3.2
+    _S16("javax.obex.ClientSession"),
+    _S16("javax.obex.Operation"),
+
+    // File API JSR 75
+    _S16("javax.microedition.io.Connector.file.read"),
+    _S16("javax.microedition.io.Connector.file.write"),
+
+    // PIM API JSR 75
+    _S16("javax.microedition.pim.ContactList.read"),
+    _S16("javax.microedition.pim.ContactList.write"),
+    _S16("javax.microedition.pim.EventList.read"),
+    _S16("javax.microedition.pim.EventList.write"),
+    _S16("javax.microedition.pim.ToDoList.read"),
+    _S16("javax.microedition.pim.ToDoList.write"),
+
+    // Location API JSR 179
+    _S16("javax.microedition.location.Location"),
+    _S16("javax.microedition.location.Orientation"), // Not supported in releases before and including S60 3.2, still not commented out because handled by not defining fg binding in policy file
+    _S16("javax.microedition.location.ProximityListener"), //Not supported in releases before and including S60 3.2
+    _S16("javax.microedition.location.LandmarkStore.read"),
+    _S16("javax.microedition.location.LandmarkStore.write"),
+    _S16("javax.microedition.location.LandmarkStore.category"),
+    _S16("javax.microedition.location.LandmarkStore.management"),
+
+    // SATSA API JSR 177
+    _S16("javax.microedition.apdu.sat"), // bind to dummy functiongroup "SATSA APDU"
+    _S16("javax.microedition.apdu.aid"), //// Not supported in releases before and including S60 3.2, still not commented out because handled by not defining fg binding in policy file
+    _S16("javax.microedition.jcrmi"), //Not supported in 3.1
+    _S16("javax.microedition.securityservice.CMSMessageSignatureService"),
+
+    // SIP API JSR 180
+    _S16("javax.microedition.io.Connector.sip"),
+    _S16("javax.microedition.io.Connector.sips"),
+
+    // Content Handler JSR 211
+//    _S16("javax.microedition.content.ContentHandler"), Not supported in releases before and including S60 3.2
+
+    // API Extensions
+    _S16("com.nokia.mid.ActiveIdle.set"),
+    _S16("com.nokia.mid.sasf.set"),
+    _S16("com.nokia.mid.sasf.get"),
+    _S16("com.nokia.mid.SoftNotification.set"),
+    _S16("com.nokia.mid.NewMailLED.set"),
+
+    // Restricted API Extensions
+    _S16("com.nokia.mid.Mobinfo.IMSI"),
+
+    // Platform Request
+    _S16("com.nokia.midp.platformrequest.netaccess"),
+    _S16("com.nokia.midp.platformrequest.tel"),
+    _S16("com.nokia.midp.platformrequest.localapp"),
+
+    //new
+    _S16("javax.microedition.amms.control.camera.enableShutterFeedback"),
+    _S16("javax.microedition.amms.control.tuner.setPreset"),
+    _S16("javax.microedition.payment.process"),
+
+    // API JSR 272
+    _S16("javax.microedition.broadcast.recording.RecordingScheduler.add"),
+    _S16("javax.microedition.broadcast.recording.RecordingScheduler.remove"),
+    _S16("javax.microedition.broadcast.recording.RecordingScheduler.access"),
+    _S16("javax.microedition.broadcast.esg.ServiceGuide.access"),
+    _S16("javax.microedition.broadcast.ServiceContext.create"),
+    _S16("javax.microedition.broadcast.ServiceContext.default"),
+    _S16("javax.microedition.broadcast.ServiceContext.select"),
+    _S16("javax.microedition.broadcast.purchase.SubscriptionManager.getSubscriptions"),
+    _S16("javax.microedition.broadcast.purchase.PurchaseObject.purchase"),
+    _S16("javax.microedition.broadcast.purchase.PurchaseObject.cancel"),
+    _S16("javax.microedition.broadcast.ServiceContext.broadcastdatagram"),
+    _S16("javax.microedition.io.Connector.broadcastfile.read")
+};
+
+//
+// ********************************************************************
+// Function grouping mappings
+// ********************************************************************
+//
+
+// ** Please keep in synch with the below array!
+enum TMidp2FunctionGroup
+{
+    EPhoneCall = 0,
+    ENetAccess,
+    ELowLevelNetAccess,
+    ECallControl,
+    EMessaging,
+    ERestrictedMessaging,
+    EAppAutoInvocation,
+    ELocalConnectivity,
+    EMultimediaRecording,
+    EReadUserDataAccess,
+    EWriteUserDataAccess,
+    ELocation,
+    ELandmark,
+    EOrientationDummy,  // Dummy function group due to the fact that Orientation
+    // permission is not tied to any real Func.group...
+    ESatsaApduDummy,    // Dummy fg defined for SATSA permission javax.microedition.apdu.sat which
+    // is not bind to any of those official function groups. See JSR 177, page 157.
+    EAuthentication,
+    ESmartCardCommunication,
+    EAPIExtensions,             // Dummy fg defined for API Extensions such as ActiveIdle, SASF, etc.
+    ERestrictedAPIExtensions,   // Dummy fg defined for API Extensions such as Mobinfo.
+    EPlatformRequest,           // Dummy fg defined for PlatformRequest
+    EMobileBroadcastingService,
+    ELastFunctionGroupMarker
+};
+
+// Must be in sync with the previous enums AND ones defined in *.xpf policy file!
+static const TUint16* const KJcfFunctionGroups[] =
+{
+    _S16("Phone Call"),
+    _S16("Net Access"),
+    _S16("Low Level Net Access"),
+    _S16("Call Control"),
+    _S16("Messaging"),
+    _S16("Restricted Messaging"),
+    _S16("Application Auto Invocation"),
+    _S16("Local Connectivity"),
+    _S16("Multimedia Recording"),
+    _S16("Read User Data Access"),
+    _S16("Write User Data Access"),
+    _S16("Location"),
+    _S16("Landmark"),
+    _S16("Orientation"),   // Dummy
+    _S16("Unassigned APIs"),    // Dummy
+    _S16("Authentication"),
+    _S16("Smart Card Communication"),
+    _S16("API Extensions"), // Dummy
+    _S16("Restricted API Extensions"), // Dummy
+    _S16("Platform Request"), // Dummy
+    _S16("Mobile Broadcasting Service")
+};
+
+// The function group visibility part of the enum must be kept in sync with TMidp2FunctionGroup
+enum TMidp2ConfigKey
+{
+    ECFGfgPhoneCallVisible = 0,
+    ECFGfgNetAccessVisible,
+    ECFGfgLowLevelNetAccessVisible,
+    ECFGfgCallControlVisible,
+    ECFGfgMessagingVisible,
+    ECFGfgRestrictedMessagingVisible,
+    ECFGfgAppAutoInvocationVisible,
+    ECFGfgLocalConnectivityVisible,
+    ECFGfgMultimediaRecordingVisible,
+    ECFGfgReadUserDataAccessVisible,
+    ECFGfgWriteUserDataAccessVisible,
+    ECFGfgLocationVisible,
+    ECFGfgLandmarkVisible,
+    ECFGfgOrientationDummyVisible,
+    ECFGfgSatsaApduDummyVisible,
+    ECFGfgAuthenticationVisible,
+    ECFGfgSmartCardCommunicationVisible,
+    ECFGfgAPIExtensionsVisible,
+    ECFGfgRestrictedAPIExtensionsVisible,
+    ECFGfgPlatformRequestVisible,
+    ECFGfgMobileBroadcastingServiceVisible,
+    ECFGfgLastFunctionGroupVisibleMarker
+};
+
+class Midp2PermissionDB : public CBase
+{
+public:
+    Midp2PermissionDB();
+    virtual ~Midp2PermissionDB();
+
+    IMPORT_C static Midp2PermissionDB* NewL(const TDesC& aMidletSuiteName,
+                                            const TDesC& aVendor,
+                                            const TDesC& aVersion);
+
+    IMPORT_C TInt GetDomain(TMidp2Domain& aDomain);
+
+    IMPORT_C TInt GetFunctionGroupPermission(
+        const enum TMidp2FunctionGroup& aFunctionGroup,
+        TMidp2PermissionType& aCurrentType,
+        TMidp2PermissionMode& aCurrentMode,
+        TUint8& aAllowedModesMask);
+
+    IMPORT_C TInt SetFunctionGroupPermission(
+        const enum TMidp2FunctionGroup& aFunctionGroup,
+        const TMidp2PermissionType& aCurrentType,
+        const TMidp2PermissionMode& aCurrentMode);
+
+    IMPORT_C void ReadMIDP2ConfigSetting(
+        const enum TMidp2ConfigKey& aKey, TInt& aKeyValue);
+
+    // **************************************************************************
+    // Helper functions to convert string names vs. enumarated values
+    // **************************************************************************
+    //
+    // Finds the enumerated domain value from the given plain text domain name.
+    //
+    IMPORT_C static TInt GetDomainFromName(
+        const TDesC& aName, TMidp2Domain& aDomain);
+    //
+    // Finds the enumerated function group value from the given plain text
+    // permission name.
+    //
+    IMPORT_C static TInt GetFunctionGroupFromName(
+        const TDesC& aName, TMidp2FunctionGroup& aFunctionGroup);
+    //
+    // Finds the enumerated permission value from the given plain text
+    // permission name.
+    //
+    IMPORT_C static TInt GetPermissionFromName(const TDesC& aName,
+            TMidp2Permission& aPermission);
+private:
+    void ConstructL(const TDesC& aMidletSuiteName, const TDesC& aMidletSuiteVendor, const TDesC& aMidletSuiteVersion);
+    std::wstring iMidletSuiteUid;
+    std::wstring iMidletSuiteProtectionDomain;
+    TBool IsFunctionGroupGranted(TInt aFGIndex);
+};
+
+} // namespace MIDP
+#endif // MIDP2PERMISSIONDB_H