Class Dnie3

All Implemented Interfaces:
Card, CryptoCard, Cwa14890Card, Dni, MrtdLds1
Direct Known Subclasses:
DnieNfc, IcaoMrtdWithBac

public class Dnie3 extends Dnie implements MrtdLds1
DNI Electrónico versión 3.0.
  • Field Details

    • idesp

      private transient String idesp
  • Constructor Details

    • Dnie3

      protected Dnie3(ApduConnection conn, PasswordCallback pwc, CryptoHelper cryptoHlpr, CallbackHandler ch, boolean loadCertsAndKeys) throws ApduConnectionException
      Construye una clase que representa un DNIe 3.0.
      Parameters:
      conn - Conexión con la tarjeta.
      pwc - PasswordCallback para obtener el PIN del DNIe.
      cryptoHlpr - Funcionalidades criptográficas de utilidad que pueden variar entre máquinas virtuales.
      ch - Gestor de las Callbacks (PIN, confirmación, etc.).
      loadCertsAndKeys - Si se indica true, se cargan las referencias a las claves privadas y a los certificados mientras que, si se indica false, no se cargan, permitiendo la instanciación de un DNIe sin capacidades de firma o autenticación con certificados.
      Throws:
      ApduConnectionException - Si la conexión con la tarjeta se proporciona cerrada y no es posible abrirla.
    • Dnie3

      Construye una clase que representa un DNIe 3.0.
      Parameters:
      conn - Conexión con la tarjeta.
      pwc - PasswordCallback para obtener el PIN del DNIe.
      cryptoHlpr - Funcionalidades criptográficas de utilidad que pueden variar entre máquinas virtuales.
      ch - Gestor de las Callbacks (PIN, confirmación, etc.).
      Throws:
      ApduConnectionException - Si la conexión con la tarjeta se proporciona cerrada y no es posible abrirla.
  • Method Details

    • getCardName

      public String getCardName()
      Description copied from class: AbstractSmartCard
      Obtiene el nombre de la tarjeta.
      Overrides:
      getCardName in class Dnie
      Returns:
      Nombre de la tarjeta
    • openSecureChannelIfNotAlreadyOpened

      public void openSecureChannelIfNotAlreadyOpened() throws CryptoCardException, PinException
      Si no se había hecho anteriormente, establece y abre el canal seguro de PIN CWA-14890, solicita y comprueba el PIN e inmediatamente después y, si la verificación es correcta, establece el canal de usuario CWA-14890. Si falla algún punto del proceso, vuelve al modo inicial de conexión (sin canal seguro).
      Overrides:
      openSecureChannelIfNotAlreadyOpened in class Dnie
      Throws:
      CryptoCardException - Si hay problemas en el proceso.
      PinException - Si el PIN usado para la apertura de canal no es válido.
    • openSecureChannelIfNotAlreadyOpened

      public void openSecureChannelIfNotAlreadyOpened(boolean doChv) throws CryptoCardException, PinException
      Description copied from class: Dnie
      Establece y abre el canal seguro CWA-14890 si no lo estaba ya.
      Overrides:
      openSecureChannelIfNotAlreadyOpened in class Dnie
      Parameters:
      doChv - true si la apertura de canal seguro debe incluir la verificación de PIN, false si debe abrirse canal seguro sin verificar PIN.
      Throws:
      CryptoCardException - Si hay problemas en el proceso.
      PinException - Si el PIN usado para la apertura de canal no es válido o no se ha proporcionado un PIN para validar (en el caso de que se opte por verificar el PIN).
    • signInternal

      protected byte[] signInternal(byte[] data, String signAlgorithm, PrivateKeyReference privateKeyReference) throws CryptoCardException, PinException
      Description copied from class: Dnie
      Ejecuta la operación interna de firma del DNIe.
      Overrides:
      signInternal in class Dnie
      Parameters:
      data - Datos a firmar.
      signAlgorithm - Algoritmo de firma.
      privateKeyReference - Referencia a la clave privada de firma.
      Returns:
      Datos firmados.
      Throws:
      CryptoCardException - Si hay problemas durante el proceso.
      PinException - Si no se ha podido realizar la firma por un problema con el PIN (no estar hecha la autenticación de PIN).
    • openUserChannel

      public ApduConnection openUserChannel() throws CryptoCardException
      Abre el canal seguro de usuario.
      Returns:
      Nueva conexión establecida.
      Throws:
      CryptoCardException - Si hay problemas en la apertura de canal.
    • needsPinForLoadingCerts

      protected boolean needsPinForLoadingCerts()
      Description copied from class: Dnie
      Indica si este DNIe necesita validar el PIN para tener acceso a los certificados.
      Overrides:
      needsPinForLoadingCerts in class Dnie
      Returns:
      true si este DNIe necesita validar el PIN para tener acceso a los certificados false en caso contrario.
    • checkSecurityObjects

      Description copied from interface: MrtdLds1
      Comprueba la validez de los objetos de seguridad a partir del SOD.
      Specified by:
      checkSecurityObjects in interface MrtdLds1
      Returns:
      Cadena de certificados del firmante del SOD (para comprobación externa).
      Throws:
      IOException - Si no se puede finalizar la comprobación.
      InvalidSecurityObjectException - Si un objeto de seguridad no supera las comprobaciones de seguridad.
      TlvException - Si el SOD del documento no es un TLV válido.
      Asn1Exception - Si el SOD es estructuralmente incorrecto.
      SignatureException - Si la firma del SOD es inválida o presenta problemas.
      CertificateException - Si los certificados de firma del SOD presentan problemas.
    • getCardAccess

      public byte[] getCardAccess() throws IOException
      Description copied from interface: MrtdLds1
      Obtiene el CardAccess.
      Specified by:
      getCardAccess in interface MrtdLds1
      Returns:
      CardAccess.
      Throws:
      IOException - Si no se puede leer el fichero.
    • getAtrInfo

      public byte[] getAtrInfo() throws IOException
      Description copied from interface: MrtdLds1
      Obtiene el ATR/INFO.
      Specified by:
      getAtrInfo in interface MrtdLds1
      Returns:
      ATR/INFO.
      Throws:
      IOException - Si no se puede leer el fichero.
    • getDg1

      public Mrz getDg1() throws IOException
      Description copied from interface: MrtdLds1
      Obtiene el DG1 (MRZ). Puede necesitar que el canal de usuario esté previamente establecido.
      Specified by:
      getDg1 in interface MrtdLds1
      Returns:
      DG1 (MRZ).
      Throws:
      IOException - Si hay problemas leyendo el fichero.
    • getDg2

      public SubjectFacePhoto getDg2() throws IOException
      Description copied from interface: MrtdLds1
      Obtiene el DG2 (fotografía del rostro del titular). Devuelve el objeto binario sin tratar. Puede necesitar que el canal de usuario esté previamente establecido.
      Specified by:
      getDg2 in interface MrtdLds1
      Returns:
      DG2 (fotografía del rostro del titular).
      Throws:
      IOException - Si hay problemas leyendo el fichero.
    • getDg3

      public byte[] getDg3() throws IOException
      Description copied from interface: MrtdLds1
      Obtiene el DG3 (elementos de identificación adicionales - Dedos). Devuelve el objeto binario sin tratar. Puede necesitar que el canal de administración esté previamente establecido.
      Specified by:
      getDg3 in interface MrtdLds1
      Returns:
      DG3 (elementos de identificación adicionales - Dedos).
      Throws:
      IOException - Si hay problemas leyendo el fichero.
    • getDg7

      public SubjectSignaturePhoto getDg7() throws IOException
      Description copied from interface: MrtdLds1
      Obtiene el DG7 (imagen de la firma o marca habitual exhibida). Devuelve el objeto binario sin tratar. Puede necesitar que el canal de usuario esté previamente establecido.
      Specified by:
      getDg7 in interface MrtdLds1
      Returns:
      DG7 (imagen de la firma o marca habitual exhibida).
      Throws:
      IOException - Si hay problemas leyendo el fichero.
    • getDg11

      public byte[] getDg11() throws IOException
      Description copied from interface: MrtdLds1
      Obtiene el DG11 (detalles personales adicionales). Devuelve el objeto binario sin tratar. Puede necesitar que el canal de usuario esté previamente establecido.
      Specified by:
      getDg11 in interface MrtdLds1
      Returns:
      DG11 (detalles personales adicionales).
      Throws:
      IOException - Si hay problemas leyendo el fichero.
    • getDg12

      public byte[] getDg12() throws IOException
      Description copied from interface: MrtdLds1
      Obtiene el DG12 (detalles del documento adicionales). Devuelve el objeto binario sin tratar. Puede necesitar que el canal de usuario esté previamente establecido.
      Specified by:
      getDg12 in interface MrtdLds1
      Returns:
      DG12 (detalles del documento adicionales).
      Throws:
      IOException - Si hay problemas leyendo el fichero.
    • getDg13

      public OptionalDetails getDg13() throws IOException
      Description copied from interface: MrtdLds1
      Obtiene el DG13 (detalles opcionales). Puede necesitar que el canal de usuario esté previamente establecido.
      Specified by:
      getDg13 in interface MrtdLds1
      Returns:
      DG13 (detalles opcionales).
      Throws:
      IOException - Si hay problemas leyendo el fichero.
    • getDg14

      public byte[] getDg14() throws IOException
      Description copied from interface: MrtdLds1
      Obtiene el DG14 (opciones de seguridad). Devuelve el objeto binario sin tratar. Puede necesitar que el canal de usuario esté previamente establecido.
      Specified by:
      getDg14 in interface MrtdLds1
      Returns:
      DG14 (opciones de seguridad).
      Throws:
      IOException - Si hay problemas leyendo el fichero.
    • getSod

      public Sod getSod() throws IOException
      Description copied from interface: MrtdLds1
      Obtiene el SOD. El SOD contiene las huellas digitales de los DG. Puede necesitar que el canal de usuario esté previamente establecido.
      Specified by:
      getSod in interface MrtdLds1
      Returns:
      SOD.
      Throws:
      IOException - Si hay problemas obteniendo el objeto.
    • getCom

      public Com getCom() throws IOException
      Description copied from interface: MrtdLds1
      Obtiene el COM. El COM contiene los "datos comunes" (Common Data). Puede necesitar que el canal de usuario esté previamente establecido.
      Specified by:
      getCom in interface MrtdLds1
      Returns:
      COM.
      Throws:
      IOException - Si hay problemas leyendo el fichero.
    • getCardSecurity

      public byte[] getCardSecurity() throws IOException
      Description copied from interface: MrtdLds1
      Obtiene el CardSecurity.
      Specified by:
      getCardSecurity in interface MrtdLds1
      Returns:
      CardSecurity.
      Throws:
      IOException - Si no se puede leer el fichero.
    • getDg4

      public byte[] getDg4() throws IOException
      Description copied from interface: MrtdLds1
      Obtiene el DG4 (elementos de identificación adicionales - Iris). Devuelve el objeto binario sin tratar. Puede necesitar que el canal de administración esté previamente establecido.
      Specified by:
      getDg4 in interface MrtdLds1
      Returns:
      DG4 (elementos de identificación adicionales - Iris).
      Throws:
      IOException - Si hay problemas leyendo el fichero.
    • getDg5

      public byte[] getDg5() throws IOException
      Description copied from interface: MrtdLds1
      Obtiene el DG5 (retrato exhibido). Devuelve el objeto binario sin tratar. Puede necesitar que el canal de usuario esté previamente establecido.
      Specified by:
      getDg5 in interface MrtdLds1
      Returns:
      DG5 (retrato exhibido).
      Throws:
      IOException - Si hay problemas leyendo el fichero.
    • getDg6

      public byte[] getDg6() throws IOException
      Description copied from interface: MrtdLds1
      Obtiene el DG6 (reservado para uso futuro). Devuelve el objeto binario sin tratar. Puede necesitar que el canal de usuario esté previamente establecido.
      Specified by:
      getDg6 in interface MrtdLds1
      Returns:
      DG6 (reservado para uso futuro).
      Throws:
      IOException - Si hay problemas leyendo el fichero.
    • getDg8

      public byte[] getDg8() throws IOException
      Description copied from interface: MrtdLds1
      Obtiene el DG8 (elemento datos). Devuelve el objeto binario sin tratar. Puede necesitar que el canal de usuario esté previamente establecido.
      Specified by:
      getDg8 in interface MrtdLds1
      Returns:
      DG7 (elemento datos).
      Throws:
      IOException - Si hay problemas leyendo el fichero.
    • getDg9

      public byte[] getDg9() throws IOException
      Description copied from interface: MrtdLds1
      Obtiene el DG9 (elemento estructura). Devuelve el objeto binario sin tratar. Puede necesitar que el canal de usuario esté previamente establecido.
      Specified by:
      getDg9 in interface MrtdLds1
      Returns:
      DG9 (elemento estructura).
      Throws:
      IOException - Si hay problemas leyendo el fichero.
    • getDg10

      public byte[] getDg10() throws IOException
      Description copied from interface: MrtdLds1
      Obtiene el DG10 (elemento sustancia). Devuelve el objeto binario sin tratar. Puede necesitar que el canal de usuario esté previamente establecido.
      Specified by:
      getDg10 in interface MrtdLds1
      Returns:
      DG10 (elemento sustancia).
      Throws:
      IOException - Si hay problemas leyendo el fichero.
    • getDg15

      public byte[] getDg15() throws IOException
      Description copied from interface: MrtdLds1
      Obtiene el DG15 (información de clave pública de autenticación activa). Devuelve el objeto binario sin tratar. Puede necesitar que el canal de usuario esté previamente establecido.
      Specified by:
      getDg15 in interface MrtdLds1
      Returns:
      DG15 (información de clave pública de autenticación activa).
      Throws:
      IOException - Si hay problemas leyendo el fichero.
    • getDg16

      public byte[] getDg16() throws IOException
      Description copied from interface: MrtdLds1
      Obtiene el DG16 (personas que han de notificarse). Devuelve el objeto binario sin tratar. Puede necesitar que el canal de usuario esté previamente establecido.
      Specified by:
      getDg16 in interface MrtdLds1
      Returns:
      DG16 (personas que han de notificarse).
      Throws:
      IOException - Si hay problemas leyendo el fichero.