Class AbstractIso7816FourCard

    • Field Detail

      • SW_UNSATISFIED_SECURITY_STATE

        private static final StatusWord SW_UNSATISFIED_SECURITY_STATE
        Condición de seguridad no satisfecha.
      • SW_FILE_NOT_FOUND

        private static final StatusWord SW_FILE_NOT_FOUND
        EF o DF no encontrado.
      • SW_EOF_REACHED

        private static final StatusWord SW_EOF_REACHED
        Se ha alcanzado prematuramente el final de fichero.
      • SW_OFFSET_OUTSIDE_EF

        private static final StatusWord SW_OFFSET_OUTSIDE_EF
        El offset sobrepasa el límite de tamaño del EF.
      • MAX_READ_CHUNK

        private static final int MAX_READ_CHUNK
        Tamaño máximo de datos que se puede leer en una única APDU.
        See Also:
        Constant Field Values
      • LOGGER

        private static final java.util.logging.Logger LOGGER
        Logger por defecto.
    • Constructor Detail

      • AbstractIso7816FourCard

        public AbstractIso7816FourCard​(byte c,
                                       ApduConnection conn)
        Construye una tarjeta compatible ISO 7816-4.
        Parameters:
        c - Octeto de clase (CLA) de las APDU.
        conn - Connexión con la tarjeta.
    • Method Detail

      • readBinary

        private ResponseApdu readBinary​(byte msbOffset,
                                        byte lsbOffset,
                                        byte readLength)
                                 throws ApduConnectionException,
                                        RequiredSecurityStateNotSatisfiedException,
                                        OffsetOutsideEfException
        Lee un contenido binario del fichero actualmente seleccionado.
        Parameters:
        msbOffset - Octeto más significativo del desplazamiento (offset) hasta el punto de inicio de la lectura desde el comienzo del fichero.
        lsbOffset - Octeto menos significativo del desplazamiento (offset) hasta el punto de inicio de la lectura desde el comienzo del fichero.
        readLength - Longitud de los datos a leer (en octetos).
        Returns:
        APDU de respuesta.
        Throws:
        ApduConnectionException - Si hay problemas en el envío de la APDU.
        RequiredSecurityStateNotSatisfiedException - Si la lectura requiere el cumplimiento de una condición de seguridad y esta no se ha satisfecho.
        OffsetOutsideEfException - Si el desplazamiento indicado o el tamaño indicados para la lectura caen fuera de los límites del fichero.
      • readBinaryComplete

        public byte[] readBinaryComplete​(int len)
                                  throws java.io.IOException
        Lee por completo el contenido binario del fichero actualmente seleccionado.
        Parameters:
        len - Longitud del fichero a leer.
        Returns:
        APDU de respuesta.
        Throws:
        ApduConnectionException - Si hay problemas en el envío de la APDU.
        java.io.IOException - Si hay problemas en el buffer de lectura.
      • selectFileByIdAndRead

        public byte[] selectFileByIdAndRead​(byte[] id)
                                     throws Iso7816FourCardException,
                                            java.io.IOException
        Selecciona un fichero y lo lee por completo.
        Parameters:
        id - Identificador del fichero a leer.
        Returns:
        Contenido del fichero apuntado por la dirección id.
        Throws:
        ApduConnectionException - Si hay problemas en el envío de la APDU.
        Iso7816FourCardException - Si falla la selección de fichero.
        java.io.IOException - Si hay problemas en el buffer de lectura.
      • selectFileByLocationAndRead

        public byte[] selectFileByLocationAndRead​(Location location)
                                           throws java.io.IOException,
                                                  Iso7816FourCardException
        Selecciona un fichero y lo lee por completo.
        Parameters:
        location - Ruta absoluta del fichero a leer.
        Returns:
        Contenido del fichero apuntado por la ruta location.
        Throws:
        ApduConnectionException - Si hay problemas en el envío de la APDU.
        Iso7816FourCardException - Si falla la selección de fichero.
        java.io.IOException - Si hay problemas en el buffer de lectura.
      • setPublicKeyToVerification

        public void setPublicKeyToVerification​(byte[] refPublicKey)
                                        throws SecureChannelException,
                                               ApduConnectionException
        Establece una clave pública para la la verificación posterior de un certificado emitido por otro al que pertenece esta clave.
        Parameters:
        refPublicKey - Referencia a la clave pública para su carga.
        Throws:
        SecureChannelException - Cuando ocurre un error durante la selección de la clave.
        ApduConnectionException - Cuando ocurre un error en la comunicación con la tarjeta.
      • getChallenge

        public byte[] getChallenge()
                            throws ApduConnectionException
        Lanza un desafío a la tarjeta para obtener un array de 8 bytes aleatorios.
        Returns:
        Array de 8 bytes aleatorios.
        Throws:
        ApduConnectionException - Cuando ocurre un error en la comunicación con la tarjeta.
      • verifyPin

        public abstract void verifyPin​(javax.security.auth.callback.PasswordCallback pinPc)
                                throws ApduConnectionException,
                                       PinException
        Verifica el PIN de la tarjeta. El método reintenta hasta que se introduce el PIN correctamente, se bloquea la tarjeta por exceso de intentos de introducción de PIN o se recibe una excepción (derivada de RuntimeException o una ApduConnectionException.
        Parameters:
        pinPc - PIN de la tarjeta.
        Throws:
        ApduConnectionException - Cuando ocurre un error en la comunicación con la tarjeta.
        PinException - Si el PIN proporcionado en la PasswordCallback es incorrecto y no estaba habilitado el reintento automático
        AuthenticationModeLockedException - Si está bloqueada la verificación de PIN (por ejemplo, por superar el número máximo de intentos).