Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## opencard.opt.applet
Class BasicAppletCardService

    java.lang.Object
      |
      +--opencard.core.service.CardService
            |
            +--opencard.opt.applet.BasicAppletCardService

Direct Known Subclasses:
  AppletProxy

public class BasicAppletCardService
extends opencard.core.service.CardService

This service offers methods to applications or proxies derived from it, which send a given command APDU to the card applet identified by the given application identifier and which return the result APDU. All instances associated with the same physical card share a common state object attached to the the used channel by the first `BasicAppletCardService` instance. This state object, an instance of `CardState`, keeps track of the currently selected applet and is used by `BasicAppletCardService`s to avoid unnecessary selection of applets.

Since:
  OCF1.2
See Also:
  `CardServiceScheduler`, `CardChannel`, `AppletID`

Constructor Summary
`BasicAppletCardService()`

Method Summary
`protected AppletSelector` | `getAppletSelector()` Get the applet selector.
`protected CardState` | `getCardState(opencard.core.service.CardChannel channel)` Gets the associated state object.
`protected void` | `initialize(opencard.core.service.CardServiceScheduler scheduler, opencard.core.service.SmartCard card, boolean blocking)` Instantiates a `BasicAppletCardService` and tie it both to its `CardServiceScheduler` and its using `SmartCard` object.
`opencard.core.terminal.ResponseAPDU` | `sendCommandAPDU(AppletID appletID, opencard.core.terminal.CommandAPDU commandAPDU)` Sends a `CommandAPDU` to the applet on the card that has the given application identifier.
`protected opencard.core.terminal.ResponseAPDU` | `sendCommandAPDU(opencard.core.service.CardChannel channel, AppletID appletID, opencard.core.terminal.CommandAPDU commandAPDU)` Sends a `CommandAPDU` to the applet on the card that has the given application identifier using the given channel.
`protected opencard.core.terminal.ResponseAPDU` | `sendVerifiedAPDU(opencard.core.service.CardChannel channel, AppletID appletID, opencard.core.terminal.CommandAPDU verificationAPDU, opencard.core.terminal.CHVControl chvControl, int timeout)` Send a verify CHV command APDU to the card applet with the given application identifier after filling in the password obtained from the CHV dialog currently associated with this card service.
`protected void` | `setAppletSelector(AppletSelector s)` Set the applet selector. Subclasses may need to redefine the way applet selection is performed.

Methods inherited from class opencard.core.service.CardService
`allocateCardChannel, getCard, getCardChannel, getCHVDialog, releaseCardChannel, setCardChannel, setCHVDialog`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### BasicAppletCardService

    public BasicAppletCardService()

Method Detail

### getAppletSelector

    protected AppletSelector getAppletSelector()

  Get the applet selector.

  Returns:
    A helper object that implements the "AppletSelector" interface.

### getCardState

    protected CardState getCardState(opencard.core.service.CardChannel channel)

  Gets the associated state object. We store the `CardState` in the same way as the state of an applet proxy or applet. This has the advantage that the state is guaranteed to exist only once per card channel and thus per card.
  Returns:
    The state object representing the state of the card.

### initialize

    protected void initialize(opencard.core.service.CardServiceScheduler scheduler,
                              opencard.core.service.SmartCard card,
                              boolean blocking)
                       throws opencard.core.service.CardServiceException

  Instantiates a `BasicAppletCardService` and tie it both to its `CardServiceScheduler` and its using `SmartCard` object.
  Parameters:
    `scheduler` - The scheduler of this `CardExecutiveCardService`.
    `card` - The controlling SmartCard object.
    `blocking` - Specify the wait behavior for obtaining a `CardChannel` from the `CardServiceScheduler`.
  Overrides:
    initialize in class opencard.core.service.CardService

### sendCommandAPDU

    protected opencard.core.terminal.ResponseAPDU sendCommandAPDU(opencard.core.service.CardChannel channel,
                                                                  AppletID appletID,
                                                                  opencard.core.terminal.CommandAPDU commandAPDU)
                                                           throws opencard.core.terminal.CardTerminalException,
                                                                  opencard.core.service.CardServiceException

  Sends a `CommandAPDU` to the applet on the card that has the given application identifier using the given channel.
  Parameters:
    `channel` - channel to be used for sending APDUs to the smart card
    `appletID` - application identifier of destination applet
    `commandAPDU` - `CommandAPDU` to send
  Returns:
    The resulting `ResponseAPDU` as received from the card.

### sendCommandAPDU

    public opencard.core.terminal.ResponseAPDU sendCommandAPDU(AppletID appletID,
                                                               opencard.core.terminal.CommandAPDU commandAPDU)
                                                        throws opencard.core.terminal.CardTerminalException,
                                                               opencard.core.service.CardServiceException

  Sends a `CommandAPDU` to the applet on the card that has the given application identifier.
  Parameters:
    `appletID` - application identifier of destination applet
    `commandAPDU` - `CommandAPDU` to send
  Returns:
    The resulting `ResponseAPDU` as received from the card.

### sendVerifiedAPDU

    protected opencard.core.terminal.ResponseAPDU sendVerifiedAPDU(opencard.core.service.CardChannel channel,
                                                                   AppletID appletID,
                                                                   opencard.core.terminal.CommandAPDU verificationAPDU,
                                                                   opencard.core.terminal.CHVControl chvControl,
                                                                   int timeout)
                                                            throws opencard.core.service.CardServiceException,
                                                                   opencard.core.terminal.CardTerminalException

  Send a verify CHV command APDU to the card applet with the given application identifier after filling in the password obtained from the CHV dialog currently associated with this card service.
  Parameters:
    `channel` - The `CardChannel` to be used for sending the command APDU.
    `appletID` - The application identifier of the applet to which the verification APDU shall be sent.
    `verificationAPDU` - The command APDU for password verification into which the password shall be inserted.
    `chvControl` - The CHV control to be used for password input.
    `timeout` - The timeout to be used.
  Returns:
    The response APDU returned by the card as response to the verify password command.

### setAppletSelector

    protected void setAppletSelector(AppletSelector s)

  Set the applet selector.

  Subclasses may need to redefine the way applet selection is performed. They can do that by specifying a class implementing "AppletSelector" and call setAppletSelector with a new helper object that will be used in place of the default ISO implementation.

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD