Package org.kapott.hbci.smartcardio

# Class SmartCardService

java.lang.Object
org.kapott.hbci.smartcardio.SmartCardService

Direct Known Subclasses:
  `ChipTanCardService`, `HBCICardService`

public abstract class SmartCardService extends Object
Smartcard-Service fuer den DDVPCSC-Passport, basierend auf dem OCF-Code aus HBCI4Java 2.5.8.

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`protected static enum`
`SmartCardService.Feature`
Kapselt die Features der Karte.

## Constructor Summary

Constructors
Constructor
Description
`SmartCardService()`

## Method Summary

Modifier and Type
Method
Description
`protected final void`
`check(ResponseAPDU response, byte[] returncodes)`
Prueft das Response auf die angegebenen Return-Codes.
`void`
`close()`
Schliesst die Karte und resettet den Service.
`static <T extends SmartCardService>
T`
`createInstance(Class<? extends SmartCardService> type, String name)`
Erzeut eine neue Instanz des Card-Service fuer die angegebene Karte.
`protected final byte[]`
`expand(String st, int len)`
Fuellt den String rechtsbuendig mit Leerzeichen auf die angegebene Laenge.
`protected final Card`
`getCard()`
Liefert die Instanz der Smartcard.
`protected final byte[]`
`getChallenge()`
`protected final Map<SmartCardService.Feature,Integer>`
`getFeatures()`
Liefert die Map mit den verfuegbaren Features.
`protected final byte[]`
`getKeyInfo(int idx)`
`protected void`
`init(Card card)`
Initialisiert den Service mit der angegebenen Karte.
`protected final byte[]`
`internalAuthenticate(int keynum, byte[] challenge)`
`protected final void`
`putData(int tag, byte[] data)`
`protected byte[]`
`readBinary(int offset, int length)`
`protected final byte[]`
`readRecordBySFI(int sfi, int idx)`
`protected final byte[]`
`receive(CommandAPDU command)`
Sendet ein Kommando an den Kartenleser, prueft ob es erfolgreich ausgefuehrt wurde und liefert die Antwort zurueck.
`protected byte[]`
`receive(CommandAPDU command, byte[] returncodes)`
Sendet ein Kommando an den Kartenleser, prueft ob es erfolgreich ausgefuehrt wurde und liefert die Antwort zurueck.
`protected final void`
`selectFile(int id)`
`protected final void`
`selectSubFile(int id)`
`protected final void`
`send(CommandAPDU command)`
Sendet ein Kommando an den Kartenleser und prueft, ob es erfolgreich ausgefuehrt wurde.
`byte[]`
`toBytes(String hex)`
Konvertiert den HEX-String zurueck in ein Byte-Array.
`protected final String`
`toHex(byte[] bytes)`
Konvertiert die Bytes in HEX-Darstellung.
`protected final String`
`toHex(byte[] bytes, String sep)`
Konvertiert die Bytes in HEX-Darstellung.
`protected final void`
`updateRecordBySFI(int sfi, int idx, byte[] data)`
`protected final void`
`writeRecordBySFI(int sfi, int idx, byte[] data)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### SmartCardService

public SmartCardService()

## Method Details

### createInstance

public static <T extends SmartCardService> T createInstance(Class<? extends SmartCardService> type, String name)
Erzeut eine neue Instanz des Card-Service fuer die angegebene Karte.

Parameters:
  `type` - der Typ des zu erzeugenden Service.
  `name` - optionale Angabe des Kartenlesernamens - noetig, wenn am Rechner mehrere Kartenleser angeschlossen sind.
Returns:
  die neue Instanz des Card-Service.

### close

public void close()
Schliesst die Karte und resettet den Service.

### init

protected void init(Card card)
Initialisiert den Service mit der angegebenen Karte.

Parameters:
  `card` - die Karte.

### getFeatures

protected final Map<SmartCardService.Feature,Integer> getFeatures()
Liefert die Map mit den verfuegbaren Features.

Returns:
  die Map mit den verfuegbaren Features.

### getCard

protected final Card getCard()
Liefert die Instanz der Smartcard.

Returns:
  die Instanz der Smartcard.

### writeRecordBySFI

protected final void writeRecordBySFI(int sfi, int idx, byte[] data)

Parameters:
  `sfi` -
  `idx` -
  `data` -

### updateRecordBySFI

protected final void updateRecordBySFI(int sfi, int idx, byte[] data)

Parameters:
  `sfi` -
  `idx` -
  `data` -

### readRecordBySFI

protected final byte[] readRecordBySFI(int sfi, int idx)

Parameters:
  `sfi` -
  `idx` -
Returns:

### readBinary

protected byte[] readBinary(int offset, int length)

Parameters:
  `offset` -
  `length` -
Returns:

### selectFile

protected final void selectFile(int id)

Parameters:
  `id` -

### selectSubFile

protected final void selectSubFile(int id)

Parameters:
  `id` -

### getKeyInfo

protected final byte[] getKeyInfo(int idx)

Parameters:
  `idx` -
Returns:

### putData

protected final void putData(int tag, byte[] data)

Parameters:
  `tag` -
  `data` -

### getChallenge

protected final byte[] getChallenge()

Returns:

### internalAuthenticate

protected final byte[] internalAuthenticate(int keynum, byte[] challenge)

Parameters:
  `keynum` -
  `challenge` -
Returns:

### send

protected final void send(CommandAPDU command)
Sendet ein Kommando an den Kartenleser und prueft, ob es erfolgreich ausgefuehrt wurde.

Parameters:
  `command` - das Kommando.

### receive

protected final byte[] receive(CommandAPDU command)
Sendet ein Kommando an den Kartenleser, prueft ob es erfolgreich ausgefuehrt wurde und liefert die Antwort zurueck.

Parameters:
  `command` - das Kommando.
Returns:
  die Antwort.

### receive

protected byte[] receive(CommandAPDU command, byte[] returncodes)
Sendet ein Kommando an den Kartenleser, prueft ob es erfolgreich ausgefuehrt wurde und liefert die Antwort zurueck.

Parameters:
  `command` - das Kommando.
  `returncodes` - zulaessige Return-Codes.
Returns:
  die Antwort.

### check

protected final void check(ResponseAPDU response, byte[] returncodes)
Prueft das Response auf die angegebenen Return-Codes.

Parameters:
  `response` - das Response.
  `returncodes` - zulaessige Return-Codes.

### toHex

protected final String toHex(byte[] bytes)
Konvertiert die Bytes in HEX-Darstellung.

Parameters:
  `bytes` -
Returns:
  String-Repraesentation.

### toHex

protected final String toHex(byte[] bytes, String sep)
Konvertiert die Bytes in HEX-Darstellung.

Parameters:
  `bytes` -
  `sep` - Separator-Zeichen.
Returns:
  String-Repraesentation.

### toBytes

public byte[] toBytes(String hex)
Konvertiert den HEX-String zurueck in ein Byte-Array.

Parameters:
  `hex` - der Text in HEX-Schreibweise.
Returns:
  das Byte-Array.

### expand

protected final byte[] expand(String st, int len)
Fuellt den String rechtsbuendig mit Leerzeichen auf die angegebene Laenge.

Parameters:
  `st` - der String.
  `len` - die Gesamtlaenge.
Returns:
  der codierte String mit Leerzeichen auf der rechten Seite.