javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/PermissionMappingTable.java
branchRCL_3
changeset 14 04becd199f91
child 18 9ac0a0a7da70
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/PermissionMappingTable.java	Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,265 @@
+/*
+* 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:
+*
+*/
+
+package com.nokia.mj.impl.security.midp.common;
+
+import java.util.Hashtable;
+import java.util.Enumeration;
+
+/**
+ * Mapping between named permissions and class named permissions
+ */
+public class PermissionMappingTable
+{
+    /**
+     * The mapping between (MIDP2 and MIDP3 permissions) and the internal
+     * class permissions
+     */
+    static Hashtable PERMISSION_MAPPING_TABLE;
+
+    static
+    {
+        PERMISSION_MAPPING_TABLE = new Hashtable();
+        // add MIDP2 named permissions
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.Connector.socket", new MIDPPermission(
+                "com.nokia.mj.impl.gcf.protocol.socket.SocketPermissionImpl", "socket://*"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.Connector.serversocket", new MIDPPermission(
+                "com.nokia.mj.impl.gcf.protocol.socket.SocketPermissionImpl", "socket://"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.Connector.http", new MIDPPermission(
+                "com.nokia.mj.impl.gcf.protocol.http.HttpPermissionImpl", "http://*"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.Connector.https", new MIDPPermission(
+                "com.nokia.mj.impl.gcf.protocol.https.HttpsPermissionImpl", "https://*"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.Connector.ssl", new MIDPPermission(
+                "com.nokia.mj.impl.gcf.protocol.ssl.SSLPermissionImpl", "ssl://*"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.Connector.datagram", new MIDPPermission(
+                "com.nokia.mj.impl.gcf.protocol.datagram.DatagramPermissionImpl", "datagram://*"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.Connector.datagramreceiver", new MIDPPermission(
+                "com.nokia.mj.impl.gcf.protocol.datagram.DatagramPermissionImpl", "datagram://"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.Connector.comm", new MIDPPermission(
+                "com.nokia.mj.impl.gcf.protocol.comm.CommPermissionImpl", "comm://*"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.PushRegistry", new MIDPPermission(
+                "com.nokia.mj.impl.gcf.PushRegistryPermissionImpl", "*"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.Connector.sms", new MIDPPermission(
+                "com.nokia.mj.impl.sms.SMSPermissionImpl", "sms://*", "open"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.wireless.messaging.sms.send", new MIDPPermission(
+                "com.nokia.mj.impl.sms.SMSPermissionImpl", "sms://*", "send"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.wireless.messaging.sms.receive", new MIDPPermission(
+                "com.nokia.mj.impl.sms.SMSPermissionImpl", "sms://*", "receive"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.Connector.mms", new MIDPPermission(
+                "com.nokia.mj.impl.mms.MMSPermissionImpl", "mms://*", "open"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.wireless.messaging.mms.send", new MIDPPermission(
+                "com.nokia.mj.impl.mms.MMSPermissionImpl", "mms://*", "send"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.wireless.messaging.mms.receive", new MIDPPermission(
+                "com.nokia.mj.impl.mms.MMSPermissionImpl", "mms://*", "receive"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.Connector.cbs", new MIDPPermission(
+                "com.nokia.mj.impl.cbs.CBSPermissionImpl", "cbs://*", "open"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.wireless.messaging.cbs.receive", new MIDPPermission(
+                "com.nokia.mj.impl.cbs.CBSPermissionImpl", "cbs://*", "receive"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.Connector.file.read", new MIDPPermission(
+                "com.nokia.mj.impl.file.FileInternalPermission", "file://*", "read"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.Connector.file.write", new MIDPPermission(
+                "com.nokia.mj.impl.file.FileInternalPermission", "file://*", "write"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.pim.ContactList", new MIDPPermission(
+                "com.nokia.mj.impl.pim.PIMPermissionImpl", "pim://*", "read_contacts,write_contacts"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.pim.ContactList.read", new MIDPPermission(
+                "com.nokia.mj.impl.pim.PIMPermissionImpl", "pim://*", "read_contacts"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.pim.EventList", new MIDPPermission(
+                "com.nokia.mj.impl.pim.PIMPermissionImpl", "pim://*", "read_events,write_events"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.pim.EventList.read", new MIDPPermission(
+                "com.nokia.mj.impl.pim.PIMPermissionImpl", "pim://*", "read_events"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.pim.ToDoList", new MIDPPermission(
+                "com.nokia.mj.impl.pim.PIMPermissionImpl", "pim://*", "read_todos,write_todos"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.pim.ToDoList.read", new MIDPPermission(
+                "com.nokia.mj.impl.pim.PIMPermissionImpl", "pim://*", "read_todos"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.pim.ContactList.write", new MIDPPermission(
+                "com.nokia.mj.impl.pim.PIMPermissionImpl", "pim://*", "write_contacts"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.pim.EventList.write", new MIDPPermission(
+                "com.nokia.mj.impl.pim.PIMPermissionImpl", "pim://*", "write_events"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.pim.ToDoList.write", new MIDPPermission(
+                "com.nokia.mj.impl.pim.PIMPermissionImpl", "pim://*", "write_todos"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.Connector.obex.server", new MIDPPermission(
+                "com.nokia.mj.impl.bluetooth.BTOBEXPermission", "*", "server"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.Connector.obex.client", new MIDPPermission(
+                "com.nokia.mj.impl.bluetooth.BTOBEXPermission", "*", "client"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.Connector.bluetooth.server", new MIDPPermission(
+                "com.nokia.mj.impl.bluetooth.BTPermission", "*", "server"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.Connector.bluetooth.client", new MIDPPermission(
+                "com.nokia.mj.impl.bluetooth.BTPermission", "*", "client"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.location.LandmarkStore.read", new MIDPPermission(
+                "com.nokia.mj.impl.location.LocationPermission", "landmarks://*", "read"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.location.LandmarkStore.write", new MIDPPermission(
+                "com.nokia.mj.impl.location.LocationPermission", "landmarks://*", "write"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.location.LandmarkStore.category", new MIDPPermission(
+                "com.nokia.mj.impl.location.LocationPermission", "landmarks://*", "category"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.location.LandmarkStore.management", new MIDPPermission(
+                "com.nokia.mj.impl.location.LocationPermission", "landmarks://*", "management"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.location.Location", new MIDPPermission(
+                "com.nokia.mj.impl.location.LocationPermission", "location://*", "position"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.location.Orientation", new MIDPPermission(
+                "com.nokia.mj.impl.location.LocationPermission", "location://*", "orientation"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.location.ProximityListener", new MIDPPermission(
+                "com.nokia.mj.impl.location.LocationPermission", "proximity://*", "registerlistener"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.apdu.aid", new MIDPPermission(
+                "com.nokia.mj.impl.satsa.APDUPermission", "apdu://*", "aid"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.apdu.sat", new MIDPPermission(
+                "com.nokia.mj.impl.satsa.APDUPermission", "apdu://*", "sat"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.securityservice.CMSMessageSignatureService", new MIDPPermission(
+                "com.nokia.mj.impl.pki.SignaturePermission", "pki://*", "authenticate"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.media.control.VideoControl.getSnapshot", new MIDPPermission(
+                "com.nokia.mj.impl.media.PlayerPermission", "*", "snapshot"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.media.control.RecordControl", new MIDPPermission(
+                "com.nokia.mj.impl.media.PlayerPermission", "*", "record"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.Connector.rtsp", new MIDPPermission(
+                "com.nokia.mj.impl.media.RTSPPermission", "*"));
+        PERMISSION_MAPPING_TABLE.put(
+            "com.nokia.mid.Mobinfo.IMSI", new MIDPPermission(
+                "com.nokia.mj.impl.properties.mobinfo.MobileInfoPermission", "mobinfo.imsi", "read"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.PropertyPermission", new MIDPPermission(
+                "com.nokia.mj.impl.properties.mobinfo.MobileInfoPermission", "*", "read"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.contactless.ndef.NDEFTagConnection.write", new MIDPPermission(
+                "com.nokia.mj.impl.ccapi.utils.ContactlessCommunicationPermission", "ndef://*", "write"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.contactless.DiscoveryManager", new MIDPPermission(
+                "com.nokia.mj.impl.ccapi.utils.ContactlessCommunicationPermission", "discoveryManager", "get_instance"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.Connector.ndef", new MIDPPermission(
+                "com.nokia.mj.impl.ccapi.utils.ContactlessCommunicationPermission", "ndef://*", "open"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.Connector.rf", new MIDPPermission(
+                "com.nokia.mj.impl.ccapi.utils.ContactlessCommunicationPermission", "rf://*", "open"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.Connector.sc", new MIDPPermission(
+                "com.nokia.mj.impl.ccapi.utils.ContactlessCommunicationPermission", "sc://*", "open"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.Connector.vtag", new MIDPPermission(
+                "com.nokia.mj.impl.ccapi.utils.ContactlessCommunicationPermission", "vtag://*", "open"));
+        // add name of MIDP3 class permissions
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.SocketProtocolPermission", new MIDPPermission(
+                "com.nokia.mj.impl.gcf.protocol.socket.SocketPermissionImpl", "socket://*"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.HttpProtocolPermission", new MIDPPermission(
+                "com.nokia.mj.impl.gcf.protocol.http.HttpPermissionImpl", "http://*"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.HttpsProtocolPermission", new MIDPPermission(
+                "com.nokia.mj.impl.gcf.protocol.https.HttpsPermissionImpl", "https://*"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.SSLProtocolPermission", new MIDPPermission(
+                "com.nokia.mj.impl.gcf.protocol.ssl.SSLPermissionImpl", "ssl://*"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.DatagramProtocolPermission", new MIDPPermission(
+                "com.nokia.mj.impl.gcf.protocol.datagram.DatagramPermissionImpl", "datagram://*"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.CommProtocolPermission", new MIDPPermission(
+                "com.nokia.mj.impl.gcf.protocol.comm.CommPermissionImpl", "comm://*"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.FileProtocolPermission", new MIDPPermission(
+                "com.nokia.mj.impl.file.FileInternalPermission", "file://*"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.io.PushRegistryPermission", new MIDPPermission(
+                "com.nokia.mj.impl.gcf.PushRegistryPermissionImpl", "*"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.location.LocationPermission", new MIDPPermission(
+                "com.nokia.mj.impl.location.LocationPermission", "*"));
+        PERMISSION_MAPPING_TABLE.put(
+            "javax.microedition.location.LandmarkPermission", new MIDPPermission(
+                "com.nokia.mj.impl.location.LocationPermission", "*"));
+    }
+
+    /**
+     * Getter for permission mappings
+     */
+    public static MIDPPermission get(String permissionName)
+    {
+        return (MIDPPermission)PERMISSION_MAPPING_TABLE.get(permissionName);
+    }
+
+    /**
+     * Setter for the mapping table
+     *
+     * @param  aMappingTable The new mapping table
+     * @return the "old" mapping table = the mapping table which was replaced
+     *         by aMappingTable or NULL if the mapping table was not set
+     */
+    public static Hashtable setMappingTable(Hashtable aMappingTable)
+    {
+        if (aMappingTable == null || aMappingTable.size() == 0)
+        {
+            return null;
+        }
+        Hashtable oldMappingTable = new Hashtable(PERMISSION_MAPPING_TABLE.size());
+        for (Enumeration e = PERMISSION_MAPPING_TABLE.keys() ; e.hasMoreElements() ;)
+        {
+            Object key = e.nextElement();
+            oldMappingTable.put(key, PERMISSION_MAPPING_TABLE.remove(key));
+        }
+        PERMISSION_MAPPING_TABLE = new Hashtable(aMappingTable.size());
+        for (Enumeration e = aMappingTable.keys() ; e.hasMoreElements() ;)
+        {
+            Object key = e.nextElement();
+            PERMISSION_MAPPING_TABLE.put(key, aMappingTable.get(key));
+        }
+        return oldMappingTable;
+    }
+}