package es.gob.jmulticard; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; import javax.security.auth.callback.PasswordCallback; import org.junit.Test; import es.gob.jmulticard.apdu.connection.ApduConnection; import es.gob.jmulticard.card.bit4id.stcm.StCard; import es.gob.jmulticard.jse.smartcardio.SmartcardIoConnection; /** Pruebas de la tajeta de <a href="http://www.bit4id.com/">Bit4Id</a> con chip <a href="http://www.st.com/">ST</a> * distribuida por <a href="http://www.camerfirma.com/">CamerFirma</a>. * @author Tomás García-Merás */ public final class TestStBit4IdCamerfirma { private static final String PIN = "12345678"; //$NON-NLS-1$ /** Prueba general de la tarjeta. * @param args No se usa. * @throws Exception En cualquier error. */ public static void main(final String[] args) throws Exception { final ApduConnection conn = new SmartcardIoConnection(); final StCard card = new StCard(conn); card.verifyPin(new CachePasswordCallback(PIN.toCharArray())); } /** Prueba de análisis del fichero 2F:FF:00:00. * @throws Exception En cualquier error. */ @SuppressWarnings("static-method") @Test public void test0000() throws Exception { final byte[] data = AOUtil.getDataFromInputStream( TestStBit4IdCamerfirma.class.getResourceAsStream("/bit4id-stcm/0000_7076199932780544215.DER.txt") //$NON-NLS-1$ ); System.out.println(HexUtils.hexify(data, true)); } /** Prueba de análisis del fichero 2F:FF:80:28. * @throws Exception En cualquier error. */ @SuppressWarnings("static-method") @Test public void test8028() throws Exception { final byte[] data = AOUtil.getDataFromInputStream( TestStBit4IdCamerfirma.class.getResourceAsStream("/bit4id-stcm/8028_6486727951599148607.DER.txt") //$NON-NLS-1$ ); System.out.println(HexUtils.hexify(data, true)); final byte[] trimmedData = new byte[data.length-9]; System.arraycopy(data, 9, trimmedData, 0, trimmedData.length); System.out.println(); System.out.println(); System.out.println(HexUtils.hexify(trimmedData, true)); final OutputStream fos = new FileOutputStream(File.createTempFile("8028_TRIM_", ".DER")); //$NON-NLS-1$ //$NON-NLS-2$ fos.write(trimmedData); fos.close(); } /** Prueba de análisis del fichero 2F:FF:80:23. * @throws Exception En cualquier error. */ @SuppressWarnings("static-method") @Test public void test8023() throws Exception { final byte[] data = AOUtil.getDataFromInputStream( TestStBit4IdCamerfirma.class.getResourceAsStream("/bit4id-stcm/8023_7519421280536555097.DER.txt") //$NON-NLS-1$ ); System.out.println(HexUtils.hexify(data, true)); final byte[] trimmedData = new byte[data.length-5]; System.arraycopy(data, 5, trimmedData, 0, trimmedData.length); System.out.println(); System.out.println(); System.out.println(HexUtils.hexify(trimmedData, true)); final OutputStream fos = new FileOutputStream(File.createTempFile("8023_TRIM_", ".DER")); //$NON-NLS-1$ //$NON-NLS-2$ fos.write(trimmedData); fos.close(); } /** Prueba de análisis del fichero 2F:FF:80:24. * @throws Exception En cualquier error. */ @SuppressWarnings("static-method") @Test public void test8024() throws Exception { final byte[] data = AOUtil.getDataFromInputStream( TestStBit4IdCamerfirma.class.getResourceAsStream("/bit4id-stcm/8024_3159855238388326518.DER.txt") //$NON-NLS-1$ ); System.out.println(HexUtils.hexify(data, true)); final byte[] trimmedData = new byte[data.length-5]; System.arraycopy(data, 5, trimmedData, 0, trimmedData.length); System.out.println(); System.out.println(); System.out.println(HexUtils.hexify(trimmedData, true)); final OutputStream fos = new FileOutputStream(File.createTempFile("8024_TRIM_", ".DER")); //$NON-NLS-1$ //$NON-NLS-2$ fos.write(trimmedData); fos.close(); } private 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); } } }