use of es.gob.jmulticard.apdu.connection.cwa14890.Cwa14890OneV2Connection in project jmulticard by ctt-gob-es.
the class Dnie3 method openSecureChannelIfNotAlreadyOpened.
/**
* Si no se había hecho anteriormente, establece y abre el canal seguro de PIN CWA-14890,
* solicita y comprueba el PIN e inmediatamente después y, si la verificación es correcta,
* establece el canal de USUARIO CWA-14890.
* Si falla algún punto del proceso, vuelve al modo inicial de conexión (sin canal seguro).
* @throws CryptoCardException Si hay problemas en el proceso.
* @throws PinException Si el PIN usado para la apertura de canal no es válido.
*/
@Override
protected void openSecureChannelIfNotAlreadyOpened() throws CryptoCardException, PinException {
// Si el canal seguro esta ya abierto salimos sin hacer nada
if (isSecurityChannelOpen()) {
return;
}
// establecido pero cerrado
try {
setConnection(this.rawConnection);
} catch (final ApduConnectionException e) {
throw new CryptoCardException(// $NON-NLS-1$
"Error en el establecimiento del canal inicial previo al seguro de PIN: " + e, // $NON-NLS-1$
e);
}
// Establecemos el canal PIN y lo verificamos
final ApduConnection pinSecureConnection = new Cwa14890OneV2Connection(this, getConnection(), getCryptoHelper(), new Dnie3PinCwa14890Constants(), new Dnie3PinCwa14890Constants());
try {
selectMasterFile();
} catch (final Exception e) {
throw new CryptoCardException(// $NON-NLS-1$
"Error seleccionado el MF tras el establecimiento del canal seguro de PIN: " + e, // $NON-NLS-1$
e);
}
try {
setConnection(pinSecureConnection);
} catch (final ApduConnectionException e) {
throw new CryptoCardException(// $NON-NLS-1$
"Error en el establecimiento del canal seguro de PIN: " + e, // $NON-NLS-1$
e);
}
// $NON-NLS-1$
LOGGER.info("Canal seguro de PIN para DNIe establecido");
try {
verifyPin(getInternalPasswordCallback());
} catch (final ApduConnectionException e) {
throw new CryptoCardException(// $NON-NLS-1$
"Error en la verificacion de PIN: " + e, // $NON-NLS-1$
e);
}
// Y establecemos ahora el canal de usuario
final ApduConnection usrSecureConnection = new Cwa14890OneV2Connection(this, getConnection(), getCryptoHelper(), new Dnie3UsrCwa14890Constants(), new Dnie3UsrCwa14890Constants());
try {
selectMasterFile();
} catch (final Exception e) {
throw new CryptoCardException(// $NON-NLS-1$
"Error seleccionado el MF tras el establecimiento del canal seguro de usuario: " + e, // $NON-NLS-1$
e);
}
try {
setConnection(usrSecureConnection);
} catch (final ApduConnectionException e) {
throw new CryptoCardException(// $NON-NLS-1$
"Error en el establecimiento del canal seguro de usuario: " + e, // $NON-NLS-1$
e);
}
// $NON-NLS-1$
LOGGER.info("Canal seguro de Usuario para DNIe establecido");
}
use of es.gob.jmulticard.apdu.connection.cwa14890.Cwa14890OneV2Connection in project jmulticard by ctt-gob-es.
the class CeresSc method openSecureChannelIfNotAlreadyOpened.
/**
* Establece y abre el canal seguro CWA-14890 si no lo estaba ya hecho.
* @throws CryptoCardException Si hay problemas en el proceso.
* @throws PinException Si el PIN usado para la apertura de canal no es válido o no se ha proporcionado
* un PIN para validar.
*/
@Override
protected void openSecureChannelIfNotAlreadyOpened() throws CryptoCardException, PinException {
// Abrimos el canal seguro si no lo esta ya
if (!isSecurityChannelOpen()) {
// Aunque el canal seguro estuviese cerrado, podria si estar enganchado
if (!(getConnection() instanceof Cwa14890Connection)) {
final ApduConnection secureConnection;
secureConnection = new Cwa14890OneV2Connection(this, getConnection(), this.cryptoHelper, getCwa14890PublicConstants(), getCwa14890PrivateConstants());
try {
setConnection(secureConnection);
} catch (final ApduConnectionException e) {
// $NON-NLS-1$
throw new CryptoCardException("Error en el establecimiento del canal seguro: " + e, e);
}
}
try {
verifyPin(getInternalPasswordCallback());
} catch (final ApduConnectionException e) {
// $NON-NLS-1$
throw new CryptoCardException("Error en la apertura del canal seguro: " + e, e);
}
}
}
Aggregations