Class Cwa14890OneV1Connection
java.lang.Object
es.gob.jmulticard.connection.cwa14890.Cwa14890OneV1Connection
- All Implemented Interfaces:
ApduConnection, Cwa14890Connection
- Direct Known Subclasses:
Cwa14890OneV2Connection
Utilidad para el establecimiento y control del canal seguro CWA-14890
con cifrado DES y MAC de cuatro octetos.
- Author:
- Carlos Gamuci, Tomás García-Merás.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final AbstractApduEncrypterClase de utilidad para encriptar las APDU.protected final CryptoHelperUtilidad para la ejecución de funciones criptográficas.protected booleanIndica el estado de la conexión.protected ApduConnectionConexión subyacente para el envío de APDUs. -
Constructor Summary
ConstructorsConstructorDescriptionCwa14890OneV1Connection(Cwa14890Card connectedCard, ApduConnection connection, CryptoHelper cryptoHlpr, Cwa14890PublicConstants cwaConsts, Cwa14890PrivateConstants cwaPrivConsts) Crea el canal seguro CWA-14890 para la comunicación de la tarjeta.Cwa14890OneV1Connection(ApduConnection connection, CryptoHelper cryptoHlpr) Crea el canal seguro CWA-14890 para la comunicación de la tarjeta. -
Method Summary
Modifier and TypeMethodDescriptionvoidAñade un objeto al que se notificará cuando existan eventos en la conexión.voidclose()Cierra la conexión con la tarjeta inteligente actualmente insertada en el lector.byte[]getKenc()Obtiene la clave para encriptar y desencriptar criptogramas.byte[]getKmac()Obtiene la clave para calcular y verificar checksums.byte[]getSsc()Obtiene el contador de secuencia.Recupera la conexión subyacente utilizada por la conexión.getTerminalInfo(int terminal) Devuelve información sobre un terminal.long[]getTerminals(boolean onlyWithCardPresent) Devuelve todos los lectores de tarjetas presentes en el sistema.protected AbstractApduEncrypterObtiene la clase de utilidad para encriptar las APDU.static byte[]internalAuthGetInternalAuthenticateMessage(Cwa14890Card card, Cwa14890PublicConstants pubConsts, byte[] randomIfd) Solicita a la tarjeta un mensaje firmado de autenticación interna.static byte[]internalAuthValidateInternalAuthenticateMessage(byte[] chrCCvIfd, byte[] sigMinCiphered, byte[] randomIfd, RSAPrivateKey ifdPrivateKey, int ifdKeyLength, Cwa14890PrivateConstants privConsts, Cwa14890PublicConstants pubConsts, RSAPublicKey iccPublicKey, CryptoHelper cryptoHelper) Valida un mensaje de autenticación interna generado por una tarjeta.booleanisOpen()Indica si la conexión está abierta o no.voidopen()Abre el canal seguro con la tarjeta.voidIndica que ya no se desea notificar a un objeto cuando existan eventos en la conexión.byte[]reset()Reinicializa la conexión con la tarjeta inteligente.voidEstablece el Protocolo de conexión con la tarjeta.voidsetTerminal(int t) Establece el lector de tarjetas que se usará para la conexión.toString()transmit(CommandApdu command) Envía un comando APDU a la tarjeta inteligente.
-
Field Details
-
cryptoHelper
Utilidad para la ejecución de funciones criptográficas. -
subConnection
Conexión subyacente para el envío de APDUs. -
openState
protected transient boolean openStateIndica el estado de la conexión. -
apduEncrypter
Clase de utilidad para encriptar las APDU.
-
-
Constructor Details
-
Cwa14890OneV1Connection
Crea el canal seguro CWA-14890 para la comunicación de la tarjeta. Es necesario abrir el canal asociándolo a una conexión para poder trasmitir APDUs. Si no se indica una conexión se utilizaráa la conexión implícita de la tarjeta indicada.- Parameters:
connection- Conexión sobre la cual montar el canal seguro.cryptoHlpr- Motor de operaciones criptográficas.
-
Cwa14890OneV1Connection
public Cwa14890OneV1Connection(Cwa14890Card connectedCard, ApduConnection connection, CryptoHelper cryptoHlpr, Cwa14890PublicConstants cwaConsts, Cwa14890PrivateConstants cwaPrivConsts) Crea el canal seguro CWA-14890 para la comunicación de la tarjeta. Es necesario abrir el canal asociándolo a una conexión para poder trasmitir APDUs. Si no se indica una conexión se utilizaráa la conexión implícita de la tarjeta indicada.- Parameters:
connectedCard- Tarjeta con la funcionalidad CWA-14890.connection- Conexión sobre la cual montar el canal seguro.cryptoHlpr- Motor de operaciones criptográficas.cwaConsts- Clase de claves públicas CWA-14890.cwaPrivConsts- Clase de claves privadas CWA-14890.
-
-
Method Details
-
instantiateApduEncrypter
Obtiene la clase de utilidad para encriptar las APDU.- Returns:
- Clase de utilidad para encriptar las APDU.
-
toString
-
open
Abre el canal seguro con la tarjeta. La conexión se reiniciará previamente a la apertura del canal.- Specified by:
openin interfaceApduConnection- Throws:
ApduConnectionException- Cuando ocurre cualquier problema abriendo la conexión.- See Also:
-
internalAuthGetInternalAuthenticateMessage
public static byte[] internalAuthGetInternalAuthenticateMessage(Cwa14890Card card, Cwa14890PublicConstants pubConsts, byte[] randomIfd) throws ApduConnectionException Solicita a la tarjeta un mensaje firmado de autenticación interna.- Parameters:
card- Tarjeta que se desea autenticar.pubConsts- Constantes públicas para la apertura de canal CWA-14890.randomIfd- Aleatorio del desafío del terminal.- Returns:
- Mensaje de autenticación interna firmado por la tarjeta con su clave privada de componente.
- Throws:
ApduConnectionException- Si hay cualquier error durante el proceso.
-
internalAuthValidateInternalAuthenticateMessage
public static byte[] internalAuthValidateInternalAuthenticateMessage(byte[] chrCCvIfd, byte[] sigMinCiphered, byte[] randomIfd, RSAPrivateKey ifdPrivateKey, int ifdKeyLength, Cwa14890PrivateConstants privConsts, Cwa14890PublicConstants pubConsts, RSAPublicKey iccPublicKey, CryptoHelper cryptoHelper) throws IOException Valida un mensaje de autenticación interna generado por una tarjeta.- Parameters:
chrCCvIfd- CHR de la clave pública del certificado de terminal.sigMinCiphered- Mensaje de autenticación generado por la tarjeta.randomIfd- Aleatorio del desafío del terminal.ifdPrivateKey- Clave privada del certificado de terminal.ifdKeyLength- Longitud, en octetos, de las claves RSA del certificado de componente del terminal.privConsts- Constantes privadas para la apertura de canal CWA-14890.pubConsts- Constantes públicas para la apertura de canal CWA-14890.iccPublicKey- Clave pública del certificado de componente.cryptoHelper- Utilidad para la ejecución de funciones criptográficas.- Returns:
- Kicc para el cifrado de APDUs con esta tarjeta.
- Throws:
IOException- Si el mensaje no es válido o no se ha podido validar.
-
close
Description copied from interface:ApduConnectionCierra la conexión con la tarjeta inteligente actualmente insertada en el lector.- Specified by:
closein interfaceApduConnection- Throws:
ApduConnectionException- Cuando ocurre cualquier problema cerrando la conexión.- See Also:
-
transmit
Description copied from interface:ApduConnectionEnvía un comando APDU a la tarjeta inteligente.- Specified by:
transmitin interfaceApduConnection- Parameters:
command- APDU que se desea enviar a la tarjeta.- Returns:
- APDU de respuesta de la tarjeta al envío.
- Throws:
ApduConnectionException- Cuando ocurre cualquier problema con la conexión transmitiendo la APDU.
-
reset
Description copied from interface:ApduConnectionReinicializa la conexión con la tarjeta inteligente.- Specified by:
resetin interfaceApduConnection- Returns:
- Respuesta al reset (ATR) de la tarjeta.
- Throws:
ApduConnectionException- Cuando ocurre cualquier problema reinicializando la conexión.
-
addCardConnectionListener
Description copied from interface:ApduConnectionAñade un objeto al que se notificará cuando existan eventos en la conexión. Solo se notificarán las inserciones y las extracciones cuando la implementación subyacente lo soporte.- Specified by:
addCardConnectionListenerin interfaceApduConnection- Parameters:
ccl- Objeto al que se desea notificar los eventos de la conexión.
-
removeCardConnectionListener
Description copied from interface:ApduConnectionIndica que ya no se desea notificar a un objeto cuando existan eventos en la conexión.- Specified by:
removeCardConnectionListenerin interfaceApduConnection- Parameters:
ccl- Objeto al que ya no se desea notificar los eventos de la conexión.
-
getTerminals
Description copied from interface:ApduConnectionDevuelve todos los lectores de tarjetas presentes en el sistema.- Specified by:
getTerminalsin interfaceApduConnection- Parameters:
onlyWithCardPresent- Para indicar que sólo devuelva lectores que tengan una tarjeta insertada.- Returns:
- Una lista con los identificadores de lectores de tarjetas conectados.
- Throws:
ApduConnectionException- Cuando ocurran problemas en la conexión con los lectores.
-
getTerminalInfo
Description copied from interface:ApduConnectionDevuelve información sobre un terminal.- Specified by:
getTerminalInfoin interfaceApduConnection- Parameters:
terminal- Número de terminal que se desea obtener información.- Returns:
- Una descripción del terminal especificado.
- Throws:
ApduConnectionException- Cuando ocurren problemas en la conexión con los lectores.
-
setTerminal
Description copied from interface:ApduConnectionEstablece el lector de tarjetas que se usará para la conexión. Si se cambia el terminal estando la conexión ya abierta, se intentará reabrirla con el nuevo terminal.- Specified by:
setTerminalin interfaceApduConnection- Parameters:
t- Número de terminal que se desea pase a ser el actual.- Throws:
ApduConnectionException- Cuando se especifica un número de terminal no válido.
-
isOpen
public boolean isOpen()Description copied from interface:ApduConnectionIndica si la conexión está abierta o no.- Specified by:
isOpenin interfaceApduConnection- Returns:
truesi la conexión esta abierta,falsesi está cerrada.
-
getSubConnection
Description copied from interface:ApduConnectionRecupera la conexión subyacente utilizada por la conexión.- Specified by:
getSubConnectionin interfaceApduConnection- Returns:
- Conexión subyacente con la tarjeta o
nullsi esta conexión es ya la de más bajo nivel.
-
setProtocol
Description copied from interface:ApduConnectionEstablece el Protocolo de conexión con la tarjeta.- Specified by:
setProtocolin interfaceApduConnection- Parameters:
p- Protocolo de conexión con la tarjeta.
-
getKenc
public byte[] getKenc()Description copied from interface:Cwa14890ConnectionObtiene la clave para encriptar y desencriptar criptogramas.- Specified by:
getKencin interfaceCwa14890Connection- Returns:
- Clave para encriptar y desencriptar criptogramas.
-
getKmac
public byte[] getKmac()Description copied from interface:Cwa14890ConnectionObtiene la clave para calcular y verificar checksums.- Specified by:
getKmacin interfaceCwa14890Connection- Returns:
- Clave para calcular y verificar checksums.
-
getSsc
public byte[] getSsc()Description copied from interface:Cwa14890ConnectionObtiene el contador de secuencia.- Specified by:
getSscin interfaceCwa14890Connection- Returns:
- Contador de secuencia.
-