Class CeresSc

All Implemented Interfaces:
Card, CryptoCard, Cwa14890Card, Dni

public final class CeresSc extends Dnie
Tarjeta FNMT CERES con canal seguro.
  • Field Details

    • ATR_MASK_TC

      private static final byte[] ATR_MASK_TC
    • ATR_TC

      public static final Atr ATR_TC
      ATR de las tarjetas FNMT CERES 4.30 y superior.
    • cardVersion

      private static String cardVersion
    • certs

      private transient Map<String,X509Certificate> certs
      Certificados de la tarjeta indexados por su alias.
    • aliasByCertAndKeyId

      private transient Map<String,String> aliasByCertAndKeyId
      Alias de los certificados de la tarjeta indexados por el identificador interno del certificado (pasado de byte[] a String).
    • keyReferences

      private transient Map<String,DniePrivateKeyReference> keyReferences
      Referencias a las claves privadas de la tarjeta indexadas por el alias de su certificado asociado.
  • Constructor Details

    • CeresSc

      Construye una tarjeta FNMT CERES con canal seguro.
      Parameters:
      conn - Conexión con la tarjeta.
      pwc - PasswordCallback para obtener el PIN de la tarjeta.
      cryptoHlpr - Funcionalidades criptográficas de utilidad que pueden variar entre máquinas virtuales.
      ch - Gestor de callbacks para la solicitud de datos al usuario.
      Throws:
      ApduConnectionException - Si la conexión con la tarjeta se proporciona cerrada y no es posible abrirla.
      InvalidCardException - Si la tarjeta no es una CERES 4.30 o superior.
    • CeresSc

      public CeresSc(ApduConnection conn, PasswordCallback pwc, CryptoHelper cryptoHlpr, CallbackHandler ch, boolean loadCertsAndKeys) throws ApduConnectionException, InvalidCardException
      Construye una tarjeta FNMT CERES con canal seguro.
      Parameters:
      conn - Conexión con la tarjeta.
      pwc - PasswordCallback para obtener el PIN de la tarjeta.
      cryptoHlpr - Funcionalidades criptográficas de utilidad que pueden variar entre máquinas virtuales.
      ch - Gestor de callbacks para la solicitud de datos al usuario.
      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 una tarjeta 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.
      InvalidCardException - Si la tarjeta no es una CERES 4.30 o superior.
  • Method Details

    • getCertificate

      public X509Certificate getCertificate(String alias)
      Description copied from interface: CryptoCard
      Obtiene el certificado correspondiente al alias proporcionado.
      Specified by:
      getCertificate in interface CryptoCard
      Overrides:
      getCertificate in class Dnie
      Parameters:
      alias - Alias del certificado.
      Returns:
      Certificado correspondiente al alias proporcionado o null si no existe ningún certificado con ese alias.
    • signOperation

      protected byte[] signOperation(byte[] data, String algorithm, PrivateKeyReference privateKeyReference) throws CryptoCardException, PinException
      Description copied from class: Dnie
      Realiza la operación de firma.
      Overrides:
      signOperation in class Dnie
      Parameters:
      data - Datos que se desean firmar.
      algorithm - Algoritmo de firma (por ejemplo, SHA512withRSA, SHA1withRSA, etc.).
      privateKeyReference - Referencia a la clave privada para la firma.
      Returns:
      Firma de los datos.
      Throws:
      CryptoCardException - Cuando se produce un error durante la operación de firma.
      PinException - Si el PIN proporcionado en la PasswordCallback es incorrecto y no estaba habilitado el reintento automático.
    • getCwa14890PublicConstants

      protected Cwa14890PublicConstants getCwa14890PublicConstants()
      Description copied from class: Dnie
      Obtiene las constantes públicas CWA-14890 para el cifrado de canal.
      Overrides:
      getCwa14890PublicConstants in class Dnie
      Returns:
      Constantes públicas CWA-14890 para el cifrado de canal.
    • getCwa14890PrivateConstants

      protected Cwa14890PrivateConstants getCwa14890PrivateConstants()
      Description copied from class: Dnie
      Obtiene las constantes privadas CWA-14890 para el cifrado de canal.
      Overrides:
      getCwa14890PrivateConstants in class Dnie
      Returns:
      Constantes privadas CWA-14890 para el cifrado de canal.
    • loadCertificatesPaths

      protected void loadCertificatesPaths() throws ApduConnectionException
      Carga el certificado de la CA intermedia y las localizaciones del resto de los certificados.
      Overrides:
      loadCertificatesPaths in class Dnie
      Throws:
      ApduConnectionException - Si hay problemas en la precarga.
    • loadKeyReferences

      protected void loadKeyReferences()
      Carga la información pública con la referencia a las claves de firma.
      Overrides:
      loadKeyReferences in class Dnie
    • getAliases

      public String[] getAliases()
      Description copied from interface: CryptoCard
      Obtiene los alias de los certificados de la tarjeta.
      Specified by:
      getAliases in interface CryptoCard
      Overrides:
      getAliases in class Dnie
      Returns:
      Array con los alias de los certificados de la tarjeta
    • getPrivateKey

      public PrivateKeyReference getPrivateKey(String alias)
      Description copied from interface: CryptoCard
      Obtiene una referencia a la clave privada correspondiente al alias proporcionado.
      Specified by:
      getPrivateKey in interface CryptoCard
      Overrides:
      getPrivateKey in class Dnie
      Parameters:
      alias - Alias del certificado
      Returns:
      Referencia a la clave privada correspondiente al alias proporcionado o null si no existe ninguna clave privada con ese alias
    • preload

      Throws:
      ApduConnectionException
      Iso7816FourCardException
      IOException
      CertificateException
      Asn1Exception
      TlvException
    • hideCertsWithoutKey

      private void hideCertsWithoutKey()
      Oculta los certificados que no tienen una clave privada asociada.
    • openSecureChannelIfNotAlreadyOpened

      public void openSecureChannelIfNotAlreadyOpened() throws CryptoCardException, PinException
      Establece y abre el canal seguro CWA-14890 si no lo estaba ya hecho.
      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 o no se ha proporcionado un PIN para validar.
    • needAuthorizationToSign

      protected boolean needAuthorizationToSign()
      Description copied from class: Dnie
      Indica si la tarjeta requiere autorización del usuario para ejecutar una operación de firma.
      Overrides:
      needAuthorizationToSign in class Dnie
      Returns:
      true si la tarjeta requiere autorización del usuario para ejecutar una operación de firma, false en caso contrario.
    • getPinMessage

      protected String getPinMessage(int retriesLeft)
      Description copied from class: Dnie
      Devuelve el texto del diálogo de inserción de PIN.
      Overrides:
      getPinMessage in class Dnie
      Parameters:
      retriesLeft - Intentos restantes antes de bloquear la tarjeta.
      Returns:
      Mensaje que mostrar en el cuerpo del diálogo de inserción de PIN.
    • checkAtr

      private static void checkAtr(byte[] atrBytes) throws InvalidCardException
      Throws:
      InvalidCardException
    • toString

      public String toString()
      Overrides:
      toString in class Dnie