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 java.lang.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 class
SmartCardService.Feature
Kapselt die Features der Karte.
-
Field Summary
Fields Modifier and Type Field Description (package private) static java.nio.charset.Charset
CHARSET
Der Zeichensatz.private java.util.Map<SmartCardService.Feature,java.lang.Integer>
features
(package private) static int
HBCI_DDV_EF_BNK
(package private) static int
HBCI_DDV_EF_ID
(package private) static int
HBCI_DDV_EF_MAC
(package private) static int
HBCI_DDV_EF_SEQ
private static int
IOCTL_GET_FEATURE_REQUEST
(package private) static int
SECCOS_CLA_EXT
(package private) static int
SECCOS_CLA_SM_PROPR
(package private) static int
SECCOS_CLA_SM1
(package private) static int
SECCOS_CLA_STD
(package private) static int
SECCOS_INS_GET_CHALLENGE
(package private) static int
SECCOS_INS_GET_KEYINFO
(package private) static int
SECCOS_INS_INT_AUTH
(package private) static int
SECCOS_INS_PUT_DATA
(package private) static int
SECCOS_INS_READ_BINARY
(package private) static int
SECCOS_INS_READ_RECORD
(package private) static int
SECCOS_INS_SELECT_FILE
(package private) static int
SECCOS_INS_UPDATE_RECORD
(package private) static int
SECCOS_INS_VERIFY
(package private) static int
SECCOS_INS_WRITE_RECORD
(package private) static int
SECCOS_KEY_TYPE_DF
(package private) static int
SECCOS_PWD_TYPE_DF
(package private) static int
SECCOS_SELECT_RET_NOTHING
(package private) static byte
SECCOS_SM_CRT_CC
(package private) static byte
SECCOS_SM_REF_INIT_DATA
(package private) static byte
SECCOS_SM_RESP_DESCR
(package private) static byte
SECCOS_SM_VALUE_LE
private javax.smartcardio.Card
smartCard
private static java.util.Map<java.lang.String,java.lang.String>
statusCodes
-
Constructor Summary
Constructors Constructor Description SmartCardService()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
check(javax.smartcardio.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>
TcreateInstance(java.lang.Class<? extends SmartCardService> type, java.lang.String name)
Erzeut eine neue Instanz des Card-Service fuer die angegebene Karte.protected byte[]
expand(java.lang.String st, int len)
Fuellt den String rechtsbuendig mit Leerzeichen auf die angegebene Laenge.protected javax.smartcardio.Card
getCard()
Liefert die Instanz der Smartcard.protected byte[]
getChallenge()
protected java.util.Map<SmartCardService.Feature,java.lang.Integer>
getFeatures()
Liefert die Map mit den verfuegbaren Features.protected byte[]
getKeyInfo(int idx)
protected void
init(javax.smartcardio.Card card)
Initialisiert den Service mit der angegebenen Karte.protected byte[]
internalAuthenticate(int keynum, byte[] challenge)
protected void
putData(int tag, byte[] data)
protected byte[]
readBinary(int offset, int length)
protected byte[]
readRecordBySFI(int sfi, int idx)
protected byte[]
receive(javax.smartcardio.CommandAPDU command)
Sendet ein Kommando an den Kartenleser, prueft ob es erfolgreich ausgefuehrt wurde und liefert die Antwort zurueck.protected byte[]
receive(javax.smartcardio.CommandAPDU command, byte[] returncodes)
Sendet ein Kommando an den Kartenleser, prueft ob es erfolgreich ausgefuehrt wurde und liefert die Antwort zurueck.private static int
SCARD_CTL_CODE(int code)
Ermittelt den Namen der Funktion zum Abrufen der Features aus der Karte.protected void
selectFile(int id)
protected void
selectSubFile(int id)
protected void
send(javax.smartcardio.CommandAPDU command)
Sendet ein Kommando an den Kartenleser und prueft, ob es erfolgreich ausgefuehrt wurde.byte[]
toBytes(java.lang.String hex)
Konvertiert den HEX-String zurueck in ein Byte-Array.protected java.lang.String
toHex(byte[] bytes)
Konvertiert die Bytes in HEX-Darstellung.protected java.lang.String
toHex(byte[] bytes, java.lang.String sep)
Konvertiert die Bytes in HEX-Darstellung.protected void
updateRecordBySFI(int sfi, int idx, byte[] data)
protected void
writeRecordBySFI(int sfi, int idx, byte[] data)
-
-
-
Field Detail
-
CHARSET
static final java.nio.charset.Charset CHARSET
Der Zeichensatz.
-
statusCodes
private static final java.util.Map<java.lang.String,java.lang.String> statusCodes
-
HBCI_DDV_EF_ID
static final int HBCI_DDV_EF_ID
- See Also:
- Constant Field Values
-
HBCI_DDV_EF_BNK
static final int HBCI_DDV_EF_BNK
- See Also:
- Constant Field Values
-
HBCI_DDV_EF_MAC
static final int HBCI_DDV_EF_MAC
- See Also:
- Constant Field Values
-
HBCI_DDV_EF_SEQ
static final int HBCI_DDV_EF_SEQ
- See Also:
- Constant Field Values
-
SECCOS_SELECT_RET_NOTHING
static final int SECCOS_SELECT_RET_NOTHING
- See Also:
- Constant Field Values
-
SECCOS_CLA_EXT
static final int SECCOS_CLA_EXT
- See Also:
- Constant Field Values
-
SECCOS_CLA_SM_PROPR
static final int SECCOS_CLA_SM_PROPR
- See Also:
- Constant Field Values
-
SECCOS_CLA_SM1
static final int SECCOS_CLA_SM1
- See Also:
- Constant Field Values
-
SECCOS_CLA_STD
static final int SECCOS_CLA_STD
- See Also:
- Constant Field Values
-
SECCOS_INS_GET_CHALLENGE
static final int SECCOS_INS_GET_CHALLENGE
- See Also:
- Constant Field Values
-
SECCOS_INS_GET_KEYINFO
static final int SECCOS_INS_GET_KEYINFO
- See Also:
- Constant Field Values
-
SECCOS_INS_INT_AUTH
static final int SECCOS_INS_INT_AUTH
- See Also:
- Constant Field Values
-
SECCOS_INS_PUT_DATA
static final int SECCOS_INS_PUT_DATA
- See Also:
- Constant Field Values
-
SECCOS_INS_READ_BINARY
static final int SECCOS_INS_READ_BINARY
- See Also:
- Constant Field Values
-
SECCOS_INS_READ_RECORD
static final int SECCOS_INS_READ_RECORD
- See Also:
- Constant Field Values
-
SECCOS_INS_SELECT_FILE
static final int SECCOS_INS_SELECT_FILE
- See Also:
- Constant Field Values
-
SECCOS_INS_VERIFY
static final int SECCOS_INS_VERIFY
- See Also:
- Constant Field Values
-
SECCOS_INS_UPDATE_RECORD
static final int SECCOS_INS_UPDATE_RECORD
- See Also:
- Constant Field Values
-
SECCOS_INS_WRITE_RECORD
static final int SECCOS_INS_WRITE_RECORD
- See Also:
- Constant Field Values
-
SECCOS_KEY_TYPE_DF
static final int SECCOS_KEY_TYPE_DF
- See Also:
- Constant Field Values
-
SECCOS_PWD_TYPE_DF
static final int SECCOS_PWD_TYPE_DF
- See Also:
- Constant Field Values
-
SECCOS_SM_CRT_CC
static final byte SECCOS_SM_CRT_CC
- See Also:
- Constant Field Values
-
SECCOS_SM_REF_INIT_DATA
static final byte SECCOS_SM_REF_INIT_DATA
- See Also:
- Constant Field Values
-
SECCOS_SM_RESP_DESCR
static final byte SECCOS_SM_RESP_DESCR
- See Also:
- Constant Field Values
-
SECCOS_SM_VALUE_LE
static final byte SECCOS_SM_VALUE_LE
- See Also:
- Constant Field Values
-
IOCTL_GET_FEATURE_REQUEST
private static final int IOCTL_GET_FEATURE_REQUEST
-
features
private java.util.Map<SmartCardService.Feature,java.lang.Integer> features
-
smartCard
private javax.smartcardio.Card smartCard
-
-
Method Detail
-
createInstance
public static <T extends SmartCardService> T createInstance(java.lang.Class<? extends SmartCardService> type, java.lang.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.
-
SCARD_CTL_CODE
private static int SCARD_CTL_CODE(int code)
Ermittelt den Namen der Funktion zum Abrufen der Features aus der Karte.- Parameters:
code
- der Code.- Returns:
- der Funktions-Code.
-
close
public void close()
Schliesst die Karte und resettet den Service.
-
init
protected void init(javax.smartcardio.Card card)
Initialisiert den Service mit der angegebenen Karte.- Parameters:
card
- die Karte.
-
getFeatures
protected final java.util.Map<SmartCardService.Feature,java.lang.Integer> getFeatures()
Liefert die Map mit den verfuegbaren Features.- Returns:
- die Map mit den verfuegbaren Features.
-
getCard
protected final javax.smartcardio.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(javax.smartcardio.CommandAPDU command)
Sendet ein Kommando an den Kartenleser und prueft, ob es erfolgreich ausgefuehrt wurde.- Parameters:
command
- das Kommando.
-
receive
protected final byte[] receive(javax.smartcardio.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(javax.smartcardio.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(javax.smartcardio.ResponseAPDU response, byte[] returncodes)
Prueft das Response auf die angegebenen Return-Codes.- Parameters:
response
- das Response.returncodes
- zulaessige Return-Codes.
-
toHex
protected final java.lang.String toHex(byte[] bytes)
Konvertiert die Bytes in HEX-Darstellung.- Parameters:
bytes
-- Returns:
- String-Repraesentation.
-
toHex
protected final java.lang.String toHex(byte[] bytes, java.lang.String sep)
Konvertiert die Bytes in HEX-Darstellung.- Parameters:
bytes
-sep
- Separator-Zeichen.- Returns:
- String-Repraesentation.
-
toBytes
public byte[] toBytes(java.lang.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(java.lang.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.
-
-