Class CeresSc
- java.lang.Object
-
- All Implemented Interfaces:
Card
,CryptoCard
,Cwa14890Card
,Dni
public final class CeresSc extends Dnie
Tarjeta FNMT CERES con canal seguro.
-
-
Field Summary
Fields Modifier and Type Field Description private 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
).private static byte[]
ATR_MASK_TC
static Atr
ATR_TC
ATR de las tarjetas FNMT CERES 4.30 y superior.private static java.lang.String
cardVersion
private java.util.Map<java.lang.String,java.security.cert.X509Certificate>
certs
Certificados de la tarjeta indexados por su alias.private java.util.Map<java.lang.String,DniePrivateKeyReference>
keyReferences
Referencias a las claves privadas de la tarjeta indexadas por el alias de su certificado asociado.-
Fields inherited from class es.gob.jmulticard.card.dnie.Dnie
CDF_LOCATION, CERT_ALIAS_AUTH, CERT_ALIAS_CYPHER, CERT_ALIAS_INTERMEDIATE_CA, CERT_ALIAS_SIGN, CERT_ALIAS_SIGNALIAS, certAuth, certCyph, certIcc, certSign, certSignAlias, cryptoHelper, IDESP_LOCATION, intermediateCaCert, LOGGER, PRKDF_LOCATION, rawConnection
-
Fields inherited from class es.gob.jmulticard.card.AbstractSmartCard
DEBUG
-
-
Constructor Summary
Constructors Constructor Description CeresSc(ApduConnection conn, javax.security.auth.callback.PasswordCallback pwc, CryptoHelper cryptoHlpr, javax.security.auth.callback.CallbackHandler ch)
Construye una tarjeta FNMT CERES con canal seguro.CeresSc(ApduConnection conn, javax.security.auth.callback.PasswordCallback pwc, CryptoHelper cryptoHlpr, javax.security.auth.callback.CallbackHandler ch, boolean loadCertsAndKeys)
Construye una tarjeta FNMT CERES con canal seguro.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static void
checkAtr(byte[] atrBytes)
java.lang.String[]
getAliases()
Obtiene los alias de los certificados de la tarjeta.java.security.cert.X509Certificate
getCertificate(java.lang.String alias)
Obtiene el certificado correspondiente al alias proporcionado.protected Cwa14890PrivateConstants
getCwa14890PrivateConstants()
Obtiene las constantes privadas CWA-14890 para el cifrado de canal.protected Cwa14890PublicConstants
getCwa14890PublicConstants()
Obtiene las constantes públicas CWA-14890 para el cifrado de canal.protected java.lang.String
getPinMessage(int retriesLeft)
Devuelve el texto del diálogo de inserción de PIN.PrivateKeyReference
getPrivateKey(java.lang.String alias)
Obtiene una referencia a la clave privada correspondiente al alias proporcionado.private void
hideCertsWithoutKey()
Oculta los certificados que no tienen una clave privada asociada.protected void
loadCertificatesPaths()
Carga el certificado de la CA intermedia y las localizaciones del resto de los certificados.protected void
loadKeyReferences()
Carga la información pública con la referencia a las claves de firma.protected boolean
needAuthorizationToSign()
Indica si la tarjeta requiere autorización del usuario para ejecutar una operación de firma.void
openSecureChannelIfNotAlreadyOpened()
Establece y abre el canal seguro CWA-14890 si no lo estaba ya hecho.private void
preload()
protected byte[]
signOperation(byte[] data, java.lang.String algorithm, PrivateKeyReference privateKeyReference)
Realiza la operación de firma.java.lang.String
toString()
-
Methods inherited from class es.gob.jmulticard.card.dnie.Dnie
changePIN, cipherData, connect, externalAuthentication, getCardName, getCdf, getChrCCvIfd, getCryptoHelper, getIccCertPublicKey, getIdesp, getIfdKeyLength, getIfdPrivateKey, getInternalAuthenticateMessage, getInternalPasswordCallback, getInternalPasswordCallback, getPasswordCallback, getPinRetriesLeft, getRefIccPrivateKey, getSerialNumber, isSecurityChannelOpen, loadCertificates, needsPinForLoadingCerts, openSecureChannelIfNotAlreadyOpened, selectMasterFile, setCallbackHandler, setKeysToAuthentication, setPasswordCallback, sign, signInternal, verifyIcc, verifyIfdCertificateChain, verifyPin
-
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
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface es.gob.jmulticard.card.cwa14890.Cwa14890Card
getChallenge
-
-
-
-
Field Detail
-
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 java.lang.String cardVersion
-
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
).
-
keyReferences
private transient java.util.Map<java.lang.String,DniePrivateKeyReference> keyReferences
Referencias a las claves privadas de la tarjeta indexadas por el alias de su certificado asociado.
-
-
Constructor Detail
-
CeresSc
public CeresSc(ApduConnection conn, javax.security.auth.callback.PasswordCallback pwc, CryptoHelper cryptoHlpr, javax.security.auth.callback.CallbackHandler ch) 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.- 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, javax.security.auth.callback.PasswordCallback pwc, CryptoHelper cryptoHlpr, javax.security.auth.callback.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 indicatrue
, se cargan las referencias a las claves privadas y a los certificados, mientras que si se indicafalse
, 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 Detail
-
getCertificate
public java.security.cert.X509Certificate getCertificate(java.lang.String alias)
Description copied from interface:CryptoCard
Obtiene el certificado correspondiente al alias proporcionado.- Specified by:
getCertificate
in interfaceCryptoCard
- Overrides:
getCertificate
in classDnie
- 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, java.lang.String algorithm, PrivateKeyReference privateKeyReference) throws CryptoCardException, PinException
Description copied from class:Dnie
Realiza la operación de firma.- Overrides:
signOperation
in classDnie
- 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 classDnie
- 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 classDnie
- 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 classDnie
- 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 classDnie
-
getAliases
public java.lang.String[] getAliases()
Description copied from interface:CryptoCard
Obtiene los alias de los certificados de la tarjeta.- Specified by:
getAliases
in interfaceCryptoCard
- Overrides:
getAliases
in classDnie
- Returns:
- Array con los alias de los certificados de la tarjeta
-
getPrivateKey
public PrivateKeyReference getPrivateKey(java.lang.String alias)
Description copied from interface:CryptoCard
Obtiene una referencia a la clave privada correspondiente al alias proporcionado.- Specified by:
getPrivateKey
in interfaceCryptoCard
- Overrides:
getPrivateKey
in classDnie
- 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
private void preload() throws ApduConnectionException, Iso7816FourCardException, java.io.IOException, java.security.cert.CertificateException, Asn1Exception, TlvException
- Throws:
ApduConnectionException
Iso7816FourCardException
java.io.IOException
java.security.cert.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 classDnie
- 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 classDnie
- Returns:
true
si la tarjeta requiere autorización del usuario para ejecutar una operación de firma,false
en caso contrario.
-
getPinMessage
protected java.lang.String getPinMessage(int retriesLeft)
Description copied from class:Dnie
Devuelve el texto del diálogo de inserción de PIN.- Overrides:
getPinMessage
in classDnie
- 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
-
-