package es.gob.jmulticard;
import javax.security.auth.callback.PasswordCallback;
import org.junit.Test;
import es.gob.jmulticard.apdu.connection.ApduConnection;
import es.gob.jmulticard.card.CryptoCard;
import es.gob.jmulticard.card.dnie.DnieFactory;
import es.gob.jmulticard.jse.smartcardio.SmartcardIoConnection;
/** Pruebas de cambio de PIN.
* @author Sergio Martínez Rico. */
public final class TestDnieChangePIN {
final static class CachePasswordCallback extends PasswordCallback {
private static final long serialVersionUID = 816457144215238935L;
/** Contruye una Callback con una contraseñ preestablecida.
* @param password Contraseña por defecto. */
public CachePasswordCallback(final char[] password) {
super(">", false); //$NON-NLS-1$
this.setPassword(password);
}
}
/**
* Llamada a los test a ejecutar
* @param args No se usa.
* @throws Exception En cualquier error.
*/
public static void main(final String[] args) throws Exception {
TestDnieChangePIN.testChangePIN();
}
/**
* Test para probar el cambio de PIN tras la apertura del canal seguro
* @throws Exception En cualquier error.
*/
@Test
public static void testChangePIN() throws Exception {
final CachePasswordCallback cpc = new CachePasswordCallback("password".toCharArray()); //$NON-NLS-1$
final ApduConnection ac = new SmartcardIoConnection();
final CryptoCard dni = DnieFactory.getDnie(ac , cpc, new JseCryptoHelper(), null);
dni.changePIN("password", "pinNuevo"); //$NON-NLS-1$ //$NON-NLS-2$
}
}