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>aliasByCertAndKeyIdAlias de los certificados de la tarjeta indexados por el identificador interno del certificado (pasado debyte[]aString).private static byte[]ATR_MASK_TCstatic AtrATR_TCATR de las tarjetas FNMT CERES 4.30 y superior.private static java.lang.StringcardVersionprivate java.util.Map<java.lang.String,java.security.cert.X509Certificate>certsCertificados de la tarjeta indexados por su alias.private java.util.Map<java.lang.String,DniePrivateKeyReference>keyReferencesReferencias 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 voidcheckAtr(byte[] atrBytes)java.lang.String[]getAliases()Obtiene los alias de los certificados de la tarjeta.java.security.cert.X509CertificategetCertificate(java.lang.String alias)Obtiene el certificado correspondiente al alias proporcionado.protected Cwa14890PrivateConstantsgetCwa14890PrivateConstants()Obtiene las constantes privadas CWA-14890 para el cifrado de canal.protected Cwa14890PublicConstantsgetCwa14890PublicConstants()Obtiene las constantes públicas CWA-14890 para el cifrado de canal.protected java.lang.StringgetPinMessage(int retriesLeft)Devuelve el texto del diálogo de inserción de PIN.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.protected voidloadCertificatesPaths()Carga el certificado de la CA intermedia y las localizaciones del resto de los certificados.protected voidloadKeyReferences()Carga la información pública con la referencia a las claves de firma.protected booleanneedAuthorizationToSign()Indica si la tarjeta requiere autorización del usuario para ejecutar una operación de firma.voidopenSecureChannelIfNotAlreadyOpened()Establece y abre el canal seguro CWA-14890 si no lo estaba ya hecho.private voidpreload()protected byte[]signOperation(byte[] data, java.lang.String algorithm, PrivateKeyReference privateKeyReference)Realiza la operación de firma.java.lang.StringtoString()-
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:CryptoCardObtiene el certificado correspondiente al alias proporcionado.- Specified by:
getCertificatein interfaceCryptoCard- Overrides:
getCertificatein classDnie- Parameters:
alias- Alias del certificado.- Returns:
- Certificado correspondiente al alias proporcionado o
nullsi no existe ningún certificado con ese alias.
-
signOperation
protected byte[] signOperation(byte[] data, java.lang.String algorithm, PrivateKeyReference privateKeyReference) throws CryptoCardException, PinExceptionDescription copied from class:DnieRealiza la operación de firma.- Overrides:
signOperationin 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:DnieObtiene las constantes públicas CWA-14890 para el cifrado de canal.- Overrides:
getCwa14890PublicConstantsin classDnie- Returns:
- Constantes públicas CWA-14890 para el cifrado de canal.
-
getCwa14890PrivateConstants
protected Cwa14890PrivateConstants getCwa14890PrivateConstants()
Description copied from class:DnieObtiene las constantes privadas CWA-14890 para el cifrado de canal.- Overrides:
getCwa14890PrivateConstantsin classDnie- Returns:
- Constantes privadas CWA-14890 para el cifrado de canal.
-
loadCertificatesPaths
protected void loadCertificatesPaths() throws ApduConnectionExceptionCarga el certificado de la CA intermedia y las localizaciones del resto de los certificados.- Overrides:
loadCertificatesPathsin 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:
loadKeyReferencesin classDnie
-
getAliases
public java.lang.String[] getAliases()
Description copied from interface:CryptoCardObtiene los alias de los certificados de la tarjeta.- Specified by:
getAliasesin interfaceCryptoCard- Overrides:
getAliasesin classDnie- Returns:
- Array con los alias de los certificados de la tarjeta
-
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- Overrides:
getPrivateKeyin classDnie- 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
-
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.
-
openSecureChannelIfNotAlreadyOpened
public void openSecureChannelIfNotAlreadyOpened() throws CryptoCardException, PinExceptionEstablece y abre el canal seguro CWA-14890 si no lo estaba ya hecho.- Overrides:
openSecureChannelIfNotAlreadyOpenedin 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:DnieIndica si la tarjeta requiere autorización del usuario para ejecutar una operación de firma.- Overrides:
needAuthorizationToSignin classDnie- Returns:
truesi la tarjeta requiere autorización del usuario para ejecutar una operación de firma,falseen caso contrario.
-
getPinMessage
protected java.lang.String getPinMessage(int retriesLeft)
Description copied from class:DnieDevuelve el texto del diálogo de inserción de PIN.- Overrides:
getPinMessagein 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
-
-