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 Atr
ATR
ATR de tarjeta G&D SmartCafe 3.2.private static byte[]
ATR_MASK
private static byte[]
ATR_MASK_MSC
private static byte[]
ATR_MASK_TCL
ATR de tarjeta G&D SmartCafe 3.2 con T=CL (vía inalámbrica).private static Atr
ATR_MSC
ATR de tarjeta MicroSD G&D Mobile Security Card.private static Atr
ATR_TCL
private boolean
authenticated
private javax.security.auth.callback.CallbackHandler
callbackHandler
private static java.util.Map<java.lang.String,java.security.cert.X509Certificate>
CERTS_BY_ALIAS
private static byte
CLA
private CryptoHelper
cryptoHelper
Manejador de funciones criptográficas.private static byte
ERROR_PIN_SW1
Octeto que identifica una verificación fallida del PIN.private static java.util.Map<java.lang.String,java.lang.Integer>
KEYNO_BY_ALIAS
private static java.util.logging.Logger
LOGGER
private static byte[]
MF_PATH
private static byte[]
ODF_PATH
private javax.security.auth.callback.PasswordCallback
passwordCallback
private 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 void
checkAtr(byte[] atrBytes)
static void
connect(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.String
getCardName()
Obtiene el nombre de la tarjeta.java.security.cert.X509Certificate
getCertificate(java.lang.String alias)
Obtiene el certificado correspondiente al alias proporcionado.private javax.security.auth.callback.PasswordCallback
getInternalPasswordCallback()
private static int
getKeyCount(ResponseApdu ra)
private int
getPinRetriesLeft()
PrivateKeyReference
getPrivateKey(java.lang.String alias)
Obtiene una referencia a la clave privada correspondiente al alias proporcionado.private void
preloadCertificates()
int
selectFileById(byte[] id)
Selecciona un fichero (DF o EF).protected void
selectMasterFile()
Selecciona el fichero maestro (directorio raíz de la tarjeta).void
setCallbackHandler(javax.security.auth.callback.CallbackHandler callh)
Establece elCallbackHandler
.void
setPasswordCallback(javax.security.auth.callback.PasswordCallback pwc)
Establece elPasswordCallback
para el PIN de la tarjeta.byte[]
sign(byte[] data, java.lang.String algorithm, PrivateKeyReference keyRef)
Realiza una firma electrónica.private static void
storeKeyOrdinal(int ordinal, java.math.BigInteger publicKeyModulus)
java.lang.String
toString()
void
verifyPin(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 atrue
y 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 elPasswordCallback
para el PIN de la tarjeta.- Parameters:
pwc
-PasswordCallback
para el PIN de la tarjeta.
-
setCallbackHandler
public void setCallbackHandler(javax.security.auth.callback.CallbackHandler callh)
Establece elCallbackHandler
.- Parameters:
callh
-CallbackHandler
a 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:
FileNotFoundException
Iso7816FourCardException
java.io.IOException
Asn1Exception
TlvException
-
getCardName
public java.lang.String getCardName()
Description copied from class:AbstractSmartCard
Obtiene el nombre de la tarjeta.- Specified by:
getCardName
in classAbstractSmartCard
- Returns:
- Nombre de la tarjeta
-
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
- 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:CryptoCard
Obtiene el certificado correspondiente al alias proporcionado.- Specified by:
getCertificate
in interfaceCryptoCard
- Parameters:
alias
- Alias del certificado.- Returns:
- Certificado correspondiente al alias proporcionado o
null
si no existe ningún certificado con ese alias.
-
selectMasterFile
protected void selectMasterFile() throws ApduConnectionException, Iso7816FourCardException
Description copied from class:AbstractIso7816FourCard
Selecciona el fichero maestro (directorio raíz de la tarjeta).- Specified by:
selectMasterFile
in 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:
toString
in classjava.lang.Object
-
selectFileById
public int selectFileById(byte[] id) throws ApduConnectionException, Iso7816FourCardException
Selecciona un fichero (DF o EF).- Overrides:
selectFileById
in 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, PinException
Description copied from class:AbstractIso7816FourCard
Verifica 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 deRuntimeException
o unaApduConnectionException
.- Specified by:
verifyPin
in 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:CryptoCard
Obtiene una referencia a la clave privada correspondiente al alias proporcionado.- Specified by:
getPrivateKey
in interfaceCryptoCard
- 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
-
sign
public byte[] sign(byte[] data, java.lang.String algorithm, PrivateKeyReference keyRef) throws CryptoCardException, PinException
Description copied from interface:CryptoCard
Realiza una firma electrónica.- Specified by:
sign
in 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
-
-