Class 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.
    • Constructor Detail

      • SmartCardService

        public SmartCardService()
    • 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.