Skip to content

DriverPermission

opencode-agent[bot] edited this page May 11, 2026 · 1 revision

DriverPermission

Security permission class for controlling access to driver resource operations.

Overview

DriverPermission is a Java Security permission class (java.security.BasicPermission) used to control access to privileged driver operations in JNode. Similar to NetPermission, it follows the standard Java Security Manager model for granting or denying access to sensitive device operations.

Key Components

Class Location Purpose
DriverPermission core/src/driver/org/jnode/driver/DriverPermission.java Main permission class
KeyboardAPI core/src/driver/org/jnode/driver/input/KeyboardAPI.java Uses setPreferredListener permission
PointerAPI core/src/driver/org/jnode/driver/input/PointerAPI.java Uses setPreferredListener permission

How It Works

DriverPermission extends BasicPermission, which provides a name-based permission model. The permission system works as follows:

Permission Declaration

In plugin descriptors, permissions are declared with a class and name:

<permission class="org.jnode.driver.DriverPermission" name="setPreferredListener"/>

This declares that the plugin grants the setPreferredListener permission, allowing code from that plugin to perform the protected operation.

Known Permission Names

Permission Name Used By Purpose
setPreferredListener KeyboardAPI, PointerAPI Allows a listener to claim priority over other listeners for input events

Permission Checking Flow

  1. Permission Declaration: The plugin containing the protected operation declares the required permission in its descriptor XML.
  2. Permission Grant: Code that loads from the plugin receives the grant, associating the permission with the plugin's protection domain.
  3. Permission Check: When a sensitive operation is invoked (e.g., setPreferredListener()), the implementation calls SecurityManager.checkPermission() with an appropriately constructed DriverPermission instance.
  4. Access Decision: The security manager traverses the protection domains of the calling code, checking if any domain has been granted the required permission.

Permission Usage Example

// In KeyboardAPI.java
public static final DriverPermission SET_PREFERRED_LISTENER_PERMISSION =
    new DriverPermission("setPreferredListener");

// In the implementation (e.g., AbstractKeyboardDriver)
public void setPreferredListener(KeyboardListener l) {
    SecurityManager sm = System.getSecurityManager();
    if (sm != null) {
        sm.checkPermission(SET_PREFERRED_LISTENER_PERMISSION);
    }
    // ... perform the operation
}

Related Pages

Clone this wiki locally