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.
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      protected static class  SmartCardService.Feature
      Kapselt die Features der Karte.
    • 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>
      T
      createInstance​(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.
      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)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 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.
      • 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.