Class SmartCafePkcs15Applet
- java.lang.Object
-
- es.gob.jmulticard.card.AbstractSmartCard
-
- es.gob.jmulticard.card.iso7816four.AbstractIso7816FourCard
-
- es.gob.jmulticard.card.gide.smartcafe.SmartCafePkcs15Applet
-
- All Implemented Interfaces:
Card,CryptoCard
public final class SmartCafePkcs15Applet extends AbstractIso7816FourCard implements CryptoCard
Tarjeta G&D SmartCafe con Applet PKCS#15.
-
-
Field Summary
Fields Modifier and Type Field Description private static AtrATRATR de tarjeta G&D SmartCafe 3.2.private static byte[]ATR_MASKprivate static byte[]ATR_MASK_MSCprivate static byte[]ATR_MASK_TCLATR de tarjeta G&D SmartCafe 3.2 con T=CL (vía inalámbrica).private static AtrATR_MSCATR de tarjeta MicroSD G&D Mobile Security Card.private static AtrATR_TCLprivate booleanauthenticatedprivate javax.security.auth.callback.CallbackHandlercallbackHandlerprivate static java.util.Map<java.lang.String,java.security.cert.X509Certificate>CERTS_BY_ALIASprivate static byteCLAprivate CryptoHelpercryptoHelperManejador de funciones criptográficas.private static byteERROR_PIN_SW1Octeto que identifica una verificación fallida del PIN.private static java.util.Map<java.lang.String,java.lang.Integer>KEYNO_BY_ALIASprivate static java.util.logging.LoggerLOGGERprivate static byte[]MF_PATHprivate static byte[]ODF_PATHprivate javax.security.auth.callback.PasswordCallbackpasswordCallbackprivate static byte[]PKCS15_NAME-
Fields inherited from class es.gob.jmulticard.card.AbstractSmartCard
DEBUG
-
-
Constructor Summary
Constructors Constructor Description SmartCafePkcs15Applet(ApduConnection conn, CryptoHelper cryptoHlpr)Construye un objeto que representa una tarjeta G&D SmartCafe con el Applet PKCS#15 de AET.SmartCafePkcs15Applet(ApduConnection conn, CryptoHelper cryptoHlpr, boolean failIfNoCerts)Construye un objeto que representa una tarjeta G&D SmartCafe con el Applet PKCS#15 de AET.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static voidcheckAtr(byte[] atrBytes)static voidconnect(ApduConnection conn)Conecta con el lector del sistema que tenga una tarjeta insertada.java.lang.String[]getAliases()Obtiene los alias de los certificados de la tarjeta.java.lang.StringgetCardName()Obtiene el nombre de la tarjeta.java.security.cert.X509CertificategetCertificate(java.lang.String alias)Obtiene el certificado correspondiente al alias proporcionado.private javax.security.auth.callback.PasswordCallbackgetInternalPasswordCallback()private static intgetKeyCount(ResponseApdu ra)private intgetPinRetriesLeft()PrivateKeyReferencegetPrivateKey(java.lang.String alias)Obtiene una referencia a la clave privada correspondiente al alias proporcionado.private voidpreloadCertificates()intselectFileById(byte[] id)Selecciona un fichero (DF o EF).protected voidselectMasterFile()Selecciona el fichero maestro (directorio raíz de la tarjeta).voidsetCallbackHandler(javax.security.auth.callback.CallbackHandler callh)Establece 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.private static voidstoreKeyOrdinal(int ordinal, java.math.BigInteger publicKeyModulus)java.lang.StringtoString()voidverifyPin(javax.security.auth.callback.PasswordCallback psc)Verifica el PIN de la tarjeta.-
Methods inherited from class es.gob.jmulticard.card.iso7816four.AbstractIso7816FourCard
getChallenge, readAllRecords, readBinaryComplete, selectFileByIdAndRead, selectFileByLocation, selectFileByLocationAndRead, selectFileByName, selectFileByName, setPublicKeyToVerification
-
Methods inherited from class es.gob.jmulticard.card.AbstractSmartCard
getCla, getConnection, sendArbitraryApdu, setConnection
-
-
-
-
Field Detail
-
ATR_MASK
private static final byte[] ATR_MASK
-
ATR
private static final Atr ATR
ATR de tarjeta G&D SmartCafe 3.2.
-
ATR_MASK_MSC
private static final byte[] ATR_MASK_MSC
-
ATR_MSC
private static final Atr ATR_MSC
ATR de tarjeta MicroSD G&D Mobile Security Card.
-
ATR_MASK_TCL
private static final byte[] ATR_MASK_TCL
ATR de tarjeta G&D SmartCafe 3.2 con T=CL (vía inalámbrica).
-
ATR_TCL
private static final Atr ATR_TCL
-
PKCS15_NAME
private static final byte[] PKCS15_NAME
-
ODF_PATH
private static final byte[] ODF_PATH
-
MF_PATH
private static final byte[] MF_PATH
-
CLA
private static final byte CLA
- See Also:
- Constant Field Values
-
LOGGER
private static final java.util.logging.Logger LOGGER
-
CERTS_BY_ALIAS
private static final java.util.Map<java.lang.String,java.security.cert.X509Certificate> CERTS_BY_ALIAS
-
KEYNO_BY_ALIAS
private static final java.util.Map<java.lang.String,java.lang.Integer> KEYNO_BY_ALIAS
-
ERROR_PIN_SW1
private static final byte ERROR_PIN_SW1
Octeto que identifica una verificación fallida del PIN.- See Also:
- Constant Field Values
-
passwordCallback
private transient javax.security.auth.callback.PasswordCallback passwordCallback
-
callbackHandler
private transient javax.security.auth.callback.CallbackHandler callbackHandler
-
authenticated
private transient boolean authenticated
-
cryptoHelper
private final transient CryptoHelper cryptoHelper
Manejador de funciones criptográficas.
-
-
Constructor Detail
-
SmartCafePkcs15Applet
public SmartCafePkcs15Applet(ApduConnection conn, CryptoHelper cryptoHlpr) throws java.io.IOException
Construye un objeto que representa una tarjeta G&D SmartCafe con el Applet PKCS#15 de AET.- Parameters:
conn- Conexión con la tarjeta.cryptoHlpr- Funcionalidades criptográficas de utilidad que pueden variar entre máquinas virtuales.- Throws:
java.io.IOException- Si hay errores de entrada / salida.
-
SmartCafePkcs15Applet
public SmartCafePkcs15Applet(ApduConnection conn, CryptoHelper cryptoHlpr, boolean failIfNoCerts) throws java.io.IOException
Construye un objeto que representa una tarjeta G&D SmartCafe con el Applet PKCS#15 de AET.- Parameters:
conn- Conexión con la tarjeta.cryptoHlpr- Funcionalidades criptográficas de utilidad que pueden variar entre máquinas virtuales.failIfNoCerts- Si se establece atruey la tarjeta no contiene ningun par certificado + clave privada la inicialización falla con unIOException, si se establece afalse, la inicialización se completa haya o no haya claves y certificados.- Throws:
java.io.IOException- Si hay errores de entrada / salida.
-
-
Method Detail
-
storeKeyOrdinal
private static void storeKeyOrdinal(int ordinal, java.math.BigInteger publicKeyModulus)
-
getKeyCount
private static int getKeyCount(ResponseApdu ra) throws java.io.IOException
- Throws:
java.io.IOException
-
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.
-
setCallbackHandler
public void setCallbackHandler(javax.security.auth.callback.CallbackHandler callh)
Establece elCallbackHandler.- Parameters:
callh-CallbackHandlera establecer.
-
connect
public static void connect(ApduConnection conn) throws java.io.IOException
Conecta con el lector del sistema que tenga una tarjeta insertada.- Parameters:
conn- Conexión hacia la tarjeta.- Throws:
java.io.IOException- Cuando hay errores de entrada / salida.
-
preloadCertificates
private void preloadCertificates() throws FileNotFoundException, Iso7816FourCardException, java.io.IOException, Asn1Exception, TlvException- Throws:
FileNotFoundExceptionIso7816FourCardExceptionjava.io.IOExceptionAsn1ExceptionTlvException
-
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
-
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.
-
selectMasterFile
protected void selectMasterFile() throws ApduConnectionException, 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.
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
selectFileById
public int selectFileById(byte[] id) throws ApduConnectionException, Iso7816FourCardExceptionSelecciona un fichero (DF o EF).- Overrides:
selectFileByIdin classAbstractIso7816FourCard- Parameters:
id- Identificador del fichero a seleccionar.- Returns:
- Tamaño del fichero seleccionado.
- Throws:
ApduConnectionException- Si hay problemas en el envío de la APDU.Iso7816FourCardException- Si falla la selección de fichero.
-
verifyPin
public void verifyPin(javax.security.auth.callback.PasswordCallback psc) 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:
psc- 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
-
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.
-
getPinRetriesLeft
private int getPinRetriesLeft() throws PinException- Throws:
PinException
-
getInternalPasswordCallback
private javax.security.auth.callback.PasswordCallback getInternalPasswordCallback() throws PinException- Throws:
PinException
-
checkAtr
private static void checkAtr(byte[] atrBytes) throws InvalidCardException- Throws:
InvalidCardException
-
-