# Class CardPermission

java.lang.Object
java.security.Permission
javax.smartcardio.CardPermission

All Implemented Interfaces:
  `Serializable`, `Guard`

public class CardPermission extends Permission
A permission for Smart Card operations. A CardPermission consists of the name of the card terminal the permission applies to and a set of actions that are valid for that terminal.

A CardPermission with a name of `*` applies to all card terminals. The actions string is a comma separated list of the actions listed below, or `*` to signify "all actions."

Individual actions are:

connect
  connect to a card using CardTerminal.connect()
reset
  reset the card using Card.disconnect(true)
exclusive
  establish exclusive access to a card using Card.beginExclusive() and endExclusive()
transmitControl
  transmit a control command using Card.transmitControlCommand()
getBasicChannel
  obtain the basic logical channel using Card.getBasicChannel()
openLogicalChannel
  open a new logical channel using Card.openLogicalChannel()

Since:
  1.6
See Also:
  - Serialized Form

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `CardPermission(String terminalName, String actions)`
  Constructs a new CardPermission with the specified actions.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `equals(Object obj)`
  Compares the specified object with this CardPermission for equality.
  `String`
  `getActions()`
  Returns the canonical string representation of the actions.
  `int`
  `hashCode()`
  Returns the hash code value for this CardPermission object.
  `boolean`
  `implies(Permission permission)`
  Checks if this CardPermission object implies the specified permission.

  ### Methods declared in class java.security.Permission

  `checkGuard, getName, newPermissionCollection, toString`

  ### Methods declared in class java.lang.Object

  `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### CardPermission

    public CardPermission(String terminalName, String actions)
    Constructs a new CardPermission with the specified actions. `terminalName` is the name of a CardTerminal or `*` if this permission applies to all terminals. `actions` contains a comma-separated list of the individual actions or `*` to signify all actions. For more information, see the documentation at the top of this class.
    Parameters:
      `terminalName` - the name of the card terminal, or `*`
      `actions` - the action string (or null if the set of permitted actions is empty)
    Throws:
      `NullPointerException` - if terminalName is null
      `IllegalArgumentException` - if actions is an invalid actions specification

- ## Method Details

  - ### getActions

    public String getActions()
    Returns the canonical string representation of the actions. It is `*` to signify all actions defined by this class or the string concatenation of the comma-separated, lexicographically sorted list of individual actions.
    Specified by:
      `getActions` in class `Permission`
    Returns:
      the canonical string representation of the actions.

  - ### implies

    public boolean implies(Permission permission)
    Checks if this CardPermission object implies the specified permission. That is the case, if and only if

    - `permission` is an instance of CardPermission,

    - `permission`'s actions are a proper subset of this object's actions, and

    - this object's `getName()` method is either `*` or equal to `permission`'s `name`.

    Specified by:
      `implies` in class `Permission`
    Parameters:
      `permission` - the permission to check against
    Returns:
      true if and only if this CardPermission object implies the specified permission.

  - ### equals

    public boolean equals(Object obj)
    Compares the specified object with this CardPermission for equality. This CardPermission is equal to another Object `object`, if and only if

    - `object` is an instance of CardPermission,

    - `this.getName()` is equal to `((CardPermission)object).getName()`, and

    - `this.getActions()` is equal to `((CardPermission)object).getActions()`.

    Specified by:
      `equals` in class `Permission`
    Parameters:
      `obj` - the object to be compared for equality with this CardPermission
    Returns:
      true if and only if the specified object is equal to this CardPermission
    See Also:
      - `Object.hashCode()`
      - `HashMap`

  - ### hashCode

    public int hashCode()
    Returns the hash code value for this CardPermission object.
    Specified by:
      `hashCode` in class `Permission`
    Returns:
      the hash code value for this CardPermission object.
    See Also:
      - `Object.equals(java.lang.Object)`
      - `System.identityHashCode(java.lang.Object)`