Class Ceres
- java.lang.Object
-
- es.gob.jmulticard.card.AbstractSmartCard
-
- es.gob.jmulticard.card.iso7816four.AbstractIso7816FourCard
-
- es.gob.jmulticard.card.iso7816eight.AbstractIso7816EightCard
-
- es.gob.jmulticard.card.fnmt.ceres.Ceres
-
- All Implemented Interfaces:
Card,CryptoCard
public final class Ceres extends AbstractIso7816EightCard implements CryptoCard
Tarjeta FNMT-RCM CERES.
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Map<java.lang.String,java.lang.String>aliasByCertAndKeyIdAlias de los certificados de la tarjeta indexados por el identificador interno del certificado (pasado debyte[]aString).private static byte[]ATR_MASK_SLE_FN19private static byte[]ATR_MASK_SLE_FN20private static byte[]ATR_MASK_STprivate static byte[]ATR_MASK_TCprivate static AtrATR_SLE_FN19private static AtrATR_SLE_FN20private static AtrATR_STprivate static AtrATR_TCprivate booleanauthenticatedprivate javax.security.auth.callback.CallbackHandlercallbackHandlerprivate static LocationCDF_LOCATIONprivate java.util.Map<java.lang.String,java.security.cert.X509Certificate>certsCertificados de la tarjeta indexados por su alias.private static byteCLAprivate CryptoHelpercryptoHelperprivate static byteERROR_PIN_SW1Octeto que identifica una verificación fallida del PIN por PIN de longitud incorrecta.private static byteERROR_PIN_SW2Octeto que identifica una verificación fallida del PIN por PIN incorrecto.private java.util.Map<java.lang.String,java.lang.Byte>keysClaves privadas de la tarjeta indexadas por el alias de su certificado asociado.private static java.util.logging.LoggerLOGGERprivate static java.lang.StringMASTER_FILE_NAMENombre del Fichero Maestro.private static intMAX_APDU_SIZEprivate javax.security.auth.callback.PasswordCallbackpasswordCallbackprivate static LocationPRKDF_LOCATION-
Fields inherited from class es.gob.jmulticard.card.AbstractSmartCard
DEBUG
-
-
Constructor Summary
Constructors Constructor Description Ceres(ApduConnection conn, CryptoHelper ch)Construye una clase que representa una tarjeta FNMT-RCM CERES.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static voidcheckAtr(byte[] atrBytes)static voidconnect(ApduConnection conn)Inicia la conexión con la tarjeta CERES.java.lang.String[]getAliases()Obtiene los alias de los certificados de la tarjeta.javax.security.auth.callback.CallbackHandlergetCallbackHandler()Obtiene elCallbackHandler.java.lang.StringgetCardName()Obtiene el nombre de la tarjeta.java.security.cert.X509CertificategetCertificate(java.lang.String alias)Obtiene el certificado correspondiente al alias proporcionado.protected javax.security.auth.callback.PasswordCallbackgetInternalPasswordCallback()Obtiene laPasswordCallbackpredefinida.private intgetPinRetriesLeft()PrivateKeyReferencegetPrivateKey(java.lang.String alias)Obtiene una referencia a la clave privada correspondiente al alias proporcionado.private voidhideCertsWithoutKey()Oculta los certificados que no tienen una clave privada asociada.private voidloadData(int keyBitSize, byte[] digestInfo)private voidpreload()protected voidselectMasterFile()Selecciona el fichero maestro (directorio raíz de la tarjeta).voidsetCallbackHandler(javax.security.auth.callback.CallbackHandler callh)Define elCallbackHandler.voidsetPasswordCallback(javax.security.auth.callback.PasswordCallback pwc)Establece elPasswordCallbackpara el PIN de la tarjeta.byte[]sign(byte[] data, java.lang.String algorithm, PrivateKeyReference keyRef)Realiza una firma electrónica.voidverifyPin(javax.security.auth.callback.PasswordCallback pinPc)Verifica el PIN de la tarjeta.-
Methods inherited from class es.gob.jmulticard.card.iso7816eight.AbstractIso7816EightCard
verifyCertificate
-
Methods inherited from class es.gob.jmulticard.card.iso7816four.AbstractIso7816FourCard
getChallenge, readAllRecords, readBinaryComplete, selectFileById, selectFileByIdAndRead, selectFileByLocation, selectFileByLocationAndRead, selectFileByName, selectFileByName, setPublicKeyToVerification
-
Methods inherited from class es.gob.jmulticard.card.AbstractSmartCard
getCla, getConnection, sendArbitraryApdu, setConnection
-
-
-
-
Field Detail
-
ATR_MASK_TC
private static final byte[] ATR_MASK_TC
-
ATR_TC
private static final Atr ATR_TC
-
ATR_MASK_ST
private static final byte[] ATR_MASK_ST
-
ATR_ST
private static final Atr ATR_ST
-
ATR_MASK_SLE_FN20
private static final byte[] ATR_MASK_SLE_FN20
-
ATR_SLE_FN20
private static final Atr ATR_SLE_FN20
-
ATR_MASK_SLE_FN19
private static final byte[] ATR_MASK_SLE_FN19
-
ATR_SLE_FN19
private static final Atr ATR_SLE_FN19
-
CLA
private static final byte CLA
- See Also:
- Constant Field Values
-
LOGGER
private static final java.util.logging.Logger LOGGER
-
cryptoHelper
private final transient CryptoHelper cryptoHelper
-
CDF_LOCATION
private static final Location CDF_LOCATION
-
PRKDF_LOCATION
private static final Location PRKDF_LOCATION
-
MAX_APDU_SIZE
private static final int MAX_APDU_SIZE
- See Also:
- Constant Field Values
-
MASTER_FILE_NAME
private static final java.lang.String MASTER_FILE_NAME
Nombre del Fichero Maestro.- See Also:
- Constant Field Values
-
ERROR_PIN_SW1
private static final byte ERROR_PIN_SW1
Octeto que identifica una verificación fallida del PIN por PIN de longitud incorrecta.- See Also:
- Constant Field Values
-
ERROR_PIN_SW2
private static final byte ERROR_PIN_SW2
Octeto que identifica una verificación fallida del PIN por PIN incorrecto.- See Also:
- Constant Field Values
-
certs
private transient java.util.Map<java.lang.String,java.security.cert.X509Certificate> certs
Certificados de la tarjeta indexados por su alias.
-
aliasByCertAndKeyId
private transient java.util.Map<java.lang.String,java.lang.String> aliasByCertAndKeyId
Alias de los certificados de la tarjeta indexados por el identificador interno del certificado (pasado debyte[]aString).
-
keys
private transient java.util.Map<java.lang.String,java.lang.Byte> keys
Claves privadas de la tarjeta indexadas por el alias de su certificado asociado.
-
passwordCallback
private transient javax.security.auth.callback.PasswordCallback passwordCallback
-
authenticated
private transient boolean authenticated
-
callbackHandler
private javax.security.auth.callback.CallbackHandler callbackHandler
-
-
Constructor Detail
-
Ceres
public Ceres(ApduConnection conn, CryptoHelper ch) throws ApduConnectionException, InvalidCardException
Construye una clase que representa una tarjeta FNMT-RCM CERES.- Parameters:
conn- Conexión con la tarjeta.ch- Clase para la realización de las huellas digitales del DigestInfo.- Throws:
ApduConnectionException- Si hay problemas con la conexión proporcionada.InvalidCardException- Si la tarjeta conectada no es una FNMT-RCM CERES.
-
-
Method Detail
-
setPasswordCallback
public void setPasswordCallback(javax.security.auth.callback.PasswordCallback pwc)
Establece elPasswordCallbackpara el PIN de la tarjeta.- Parameters:
pwc-PasswordCallbackpara el PIN de la tarjeta.
-
checkAtr
private static void checkAtr(byte[] atrBytes) throws InvalidCardException- Throws:
InvalidCardException
-
connect
public static void connect(ApduConnection conn) throws ApduConnectionException, InvalidCardException
Inicia la conexión con la tarjeta CERES.- Parameters:
conn- Conexión con el lector de tarjetas.- Throws:
ApduConnectionException- Si ocurren errores de conexión.InvalidCardException- Si la tarjeta encontrada en el lector no es una tarjeta FNMT-RCM-CERES.
-
preload
private void preload() throws ApduConnectionException, Iso7816FourCardException, java.io.IOException, java.security.cert.CertificateException, Asn1Exception, TlvException- Throws:
ApduConnectionExceptionIso7816FourCardExceptionjava.io.IOExceptionjava.security.cert.CertificateExceptionAsn1ExceptionTlvException
-
hideCertsWithoutKey
private void hideCertsWithoutKey()
Oculta los certificados que no tienen una clave privada asociada.
-
getAliases
public java.lang.String[] getAliases()
Description copied from interface:CryptoCardObtiene los alias de los certificados de la tarjeta.- Specified by:
getAliasesin interfaceCryptoCard- Returns:
- Array con los alias de los certificados de la tarjeta
-
getCertificate
public java.security.cert.X509Certificate getCertificate(java.lang.String alias)
Description copied from interface:CryptoCardObtiene el certificado correspondiente al alias proporcionado.- Specified by:
getCertificatein interfaceCryptoCard- Parameters:
alias- Alias del certificado.- Returns:
- Certificado correspondiente al alias proporcionado o
nullsi no existe ningún certificado con ese alias.
-
getPrivateKey
public PrivateKeyReference getPrivateKey(java.lang.String alias)
Description copied from interface:CryptoCardObtiene una referencia a la clave privada correspondiente al alias proporcionado.- Specified by:
getPrivateKeyin interfaceCryptoCard- Parameters:
alias- Alias del certificado- Returns:
- Referencia a la clave privada correspondiente al alias proporcionado o
nullsi no existe ninguna clave privada con ese alias
-
sign
public byte[] sign(byte[] data, java.lang.String algorithm, PrivateKeyReference keyRef) throws CryptoCardException, PinExceptionDescription copied from interface:CryptoCardRealiza una firma electrónica.- Specified by:
signin interfaceCryptoCard- Parameters:
data- Datos a firmar.algorithm- Algoritmo de firma.keyRef- Referencia a la clave privada de firma.- Returns:
- Datos firmados (PKCS#1 v1.5).
- Throws:
CryptoCardException- Si ocurre algún problema durante la firma.PinException- Si el PIN proporcionado es incorrecto o no es posible obtenerlo.
-
loadData
private void loadData(int keyBitSize, byte[] digestInfo) throws CryptoCardException- Throws:
CryptoCardException
-
selectMasterFile
protected void selectMasterFile() throws ApduConnectionException, FileNotFoundException, Iso7816FourCardExceptionDescription copied from class:AbstractIso7816FourCardSelecciona el fichero maestro (directorio raíz de la tarjeta).- Specified by:
selectMasterFilein classAbstractIso7816FourCard- Throws:
ApduConnectionException- Si hay problemas en el envío de la APDU.FileNotFoundException- Si no se encuentra el MF.Iso7816FourCardException- Si no se puede seleccionar el fichero maestro por cualquier otra causa.
-
verifyPin
public void verifyPin(javax.security.auth.callback.PasswordCallback pinPc) throws ApduConnectionException, PinExceptionDescription copied from class:AbstractIso7816FourCardVerifica 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 deRuntimeExceptiono unaApduConnectionException.- Specified by:
verifyPinin classAbstractIso7816FourCard- 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
-
getInternalPasswordCallback
protected javax.security.auth.callback.PasswordCallback getInternalPasswordCallback() throws PinExceptionObtiene laPasswordCallbackpredefinida.- Returns:
PasswordCallbackpredefinida.- Throws:
PinException- Si no se puede obtener el PIN delCallbackHandler.
-
getPinRetriesLeft
private int getPinRetriesLeft() throws PinException- Throws:
PinException
-
getCardName
public java.lang.String getCardName()
Description copied from class:AbstractSmartCardObtiene el nombre de la tarjeta.- Specified by:
getCardNamein classAbstractSmartCard- Returns:
- Nombre de la tarjeta
-
getCallbackHandler
public javax.security.auth.callback.CallbackHandler getCallbackHandler()
Obtiene elCallbackHandler.- Returns:
CallbackHandler.
-
setCallbackHandler
public void setCallbackHandler(javax.security.auth.callback.CallbackHandler callh)
Define elCallbackHandler.- Parameters:
callh-CallbackHandlera definir.
-
-