Search in sources :

Example 1 with Com

use of es.gob.jmulticard.asn1.icao.Com in project jmulticard by ctt-gob-es.

the class Dnie3 method getCom.

@Override
public Com getCom() throws IOException {
    try {
        final Com com = new Com();
        com.setDerValue(selectFileByLocationAndRead(FILE_COM_LOCATION));
        return com;
    } catch (final es.gob.jmulticard.card.iso7816four.FileNotFoundException e) {
        // $NON-NLS-1$
        throw (IOException) new FileNotFoundException("COM no encontrado").initCause(e);
    } catch (final Iso7816FourCardException | TlvException | Asn1Exception e) {
        // $NON-NLS-1$
        throw new CryptoCardException("Error leyendo el 'Common Data' (COM)", e);
    }
}
Also used : Com(es.gob.jmulticard.asn1.icao.Com) TlvException(es.gob.jmulticard.asn1.TlvException) Iso7816FourCardException(es.gob.jmulticard.card.iso7816four.Iso7816FourCardException) FileNotFoundException(java.io.FileNotFoundException) Asn1Exception(es.gob.jmulticard.asn1.Asn1Exception) CryptoCardException(es.gob.jmulticard.card.CryptoCardException)

Example 2 with Com

use of es.gob.jmulticard.asn1.icao.Com in project jmulticard by ctt-gob-es.

the class TestDnieLow method testDnieReadDgs.

/**
 * Prueba de lectura de DG en DNIe 3.0.
 * @throws Exception En cualquier error.
 */
@SuppressWarnings("static-method")
@Test
@Ignore
public void testDnieReadDgs() throws Exception {
    final Dnie dnie = DnieFactory.getDnie(ProviderUtil.getDefaultConnection(), null, new JseCryptoHelper(), // No usamos el PIN
    new TestingDnieCallbackHandler(CAN, (String) null), false);
    System.out.println();
    System.out.println(dnie);
    System.out.println();
    if (!(dnie instanceof Dnie3)) {
        // $NON-NLS-1$
        System.out.println("No es un DNIe v3.0");
        return;
    }
    final Dnie3 dnie3 = (Dnie3) dnie;
    final byte[] atrInfo = dnie3.getAtrInfo();
    // $NON-NLS-1$
    System.out.println("ATR/INFO:");
    System.out.println(HexUtils.hexify(atrInfo, true));
    System.out.println();
    final byte[] cardAccess = dnie3.getCardAccess();
    // $NON-NLS-1$
    System.out.println("CardAccess:");
    System.out.println(HexUtils.hexify(cardAccess, true));
    System.out.println();
    // Abrimos canal seguro sin verificar el PIN
    dnie.openSecureChannelIfNotAlreadyOpened(false);
    final Sod sod = dnie3.getSod();
    // $NON-NLS-1$
    System.out.println("SOD:");
    System.out.println(sod);
    System.out.println();
    // COM
    final Com com = dnie3.getCom();
    // $NON-NLS-1$
    System.out.println("COM:");
    System.out.println(com);
    System.out.println();
    // DG01
    final Mrz dg1 = dnie3.getDg1();
    // $NON-NLS-1$
    System.out.println("MRZ del DNIe: " + dg1);
    System.out.println();
    // DG11
    final byte[] dg11 = dnie3.getDg11();
    // $NON-NLS-1$
    System.out.println("DG11");
    System.out.println(HexUtils.hexify(dg11, true));
    System.out.println(new String(dg11));
    System.out.println();
    // DG02
    final byte[] photo = dnie3.getDg2().getSubjectPhotoAsJpeg2k();
    final JFrame framePhoto = new JFrame();
    // width = 307 height = 378
    framePhoto.add(new JLabel(new ImageIcon(ImageIO.read(new ByteArrayInputStream(photo)))));
    framePhoto.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    framePhoto.pack();
    framePhoto.setVisible(true);
    // DG07
    final byte[] rubric = dnie3.getDg7().getSubjectSignaturePhotoAsJpeg2k();
    final JFrame frameRubric = new JFrame();
    frameRubric.add(new JLabel(new ImageIcon(ImageIO.read(new ByteArrayInputStream(rubric)))));
    frameRubric.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    frameRubric.pack();
    frameRubric.setVisible(true);
    // $NON-NLS-1$
    System.out.println("Certificados del DNIe:");
    for (final String alias : dnie3.getAliases()) {
        // $NON-NLS-1$
        System.out.println("   " + dnie3.getCertificate(alias).getSubjectX500Principal());
    }
    for (; ; ) {
    // Vacio, para mantener las imagenes abiertas y visibles
    }
}
Also used : Com(es.gob.jmulticard.asn1.icao.Com) ImageIcon(javax.swing.ImageIcon) Dnie(es.gob.jmulticard.card.dnie.Dnie) Sod(es.gob.jmulticard.asn1.icao.Sod) JLabel(javax.swing.JLabel) Mrz(es.gob.jmulticard.card.icao.Mrz) JFrame(javax.swing.JFrame) ByteArrayInputStream(java.io.ByteArrayInputStream) JseCryptoHelper(es.gob.jmulticard.JseCryptoHelper) Dnie3(es.gob.jmulticard.card.dnie.Dnie3) OptionalDetailsDnie3(es.gob.jmulticard.card.dnie.OptionalDetailsDnie3) Ignore(org.junit.Ignore) Test(org.junit.Test)

Example 3 with Com

use of es.gob.jmulticard.asn1.icao.Com in project jmulticard by ctt-gob-es.

the class TestDnieLow method testAuthNoPin.

/**
 * Prueba una autenticació de DNIe sin PIN.
 * @throws Exception En cualquier error.
 */
@SuppressWarnings("static-method")
@Test
@Ignore
public void testAuthNoPin() throws Exception {
    final CryptoHelper cryptoHelper = new BcCryptoHelper();
    final Dnie3 dnie = (Dnie3) DnieFactory.getDnie(ProviderUtil.getDefaultConnection(), null, cryptoHelper, // No usamos el PIN
    new TestingDnieCallbackHandler(CAN, (String) null), // No cargamos certificados ni nada
    false);
    final X509Certificate iccCert = dnie.getIccCert();
    // try (
    // final OutputStream fos = new FileOutputStream(File.createTempFile("CERT_COMPO_DNI_", ".cer")) //$NON-NLS-1$ //$NON-NLS-2$
    // ) {
    // fos.write(iccCert.getEncoded());
    // }
    // System.out.println(
    // "Certificado de componente: " + iccCert.getSubjectX500Principal() //$NON-NLS-1$
    // );
    final byte[] randomIfd = cryptoHelper.generateRandomBytes(8);
    final Dnie3Cwa14890Constants constants = DnieFactory.getDnie3UsrCwa14890Constants(dnie.getIdesp());
    // Nos validamos contra la tarjeta como controlador
    dnie.verifyIfdCertificateChain(constants);
    // Ahora hacemos una autenticación interna con un aleatorio generado externamente
    final byte[] sigMinCiphered = Cwa14890OneV1Connection.internalAuthGetInternalAuthenticateMessage(dnie, constants, randomIfd);
    // $NON-NLS-1$
    System.out.println("SigMin cifrado: " + HexUtils.hexify(sigMinCiphered, false));
    // Validamos esa autenticación interna
    Cwa14890OneV1Connection.internalAuthValidateInternalAuthenticateMessage(// CHR de la clave publica del certificado de terminal
    constants.getChrCCvIfd(), // Mensaje de autenticacion generado por la tarjeta.
    sigMinCiphered, // Aleatorio del desafio del terminal.
    randomIfd, // Clave privada del certificado de terminal.
    constants.getIfdPrivateKey(), // Longitud en octetos de las claves RSA del certificado de componente del terminal.
    constants.getIfdKeyLength(), // Constantes privadas para la apertura de canal CWA-14890.
    constants, // Constantes publicas para la apertura de canal CWA-14890.
    constants, // Clave publica del certificado de componente.
    (RSAPublicKey) iccCert.getPublicKey(), // Utilidad para la ejecucion de funciones criptograficas.
    cryptoHelper);
    // $NON-NLS-1$
    System.out.println("Autenticacion interna correcta");
    // Abrimos canal de usuario (sin PIN), lo que reinicia la autenticacion interna
    dnie.openSecureChannelIfNotAlreadyOpened(false);
    // Obtenemos el SOD
    final Sod sod = dnie.getSod();
    // System.out.println(sod);
    // Obtenemos los datos del DNI
    final Com com = dnie.getCom();
    System.out.println(com);
    System.out.println();
    final Mrz dg1 = dnie.getDg1();
    // $NON-NLS-1$
    System.out.println("DG1: " + dg1);
    System.out.println();
    // Foto del rostro
    final byte[] dg2 = dnie.getDg2().getBytes();
    // final ResponseApdu res = dnie.sendArbitraryApdu(null);
    // 3 no hay permisos
    // 4, 5, 6 no presentes en el DNI
    // Imagen de la firma manuscrita
    final byte[] dg7 = dnie.getDg7().getBytes();
    // 8, 9 y 10 no presente en el DNI
    // Detalles personales adicionales
    final byte[] dg11 = dnie.getDg11();
    // $NON-NLS-1$
    System.out.println("DG11: " + HexUtils.hexify(dg11, false));
    System.out.println();
    // 12 no presente en el DNI
    // Detalles opcionales
    final OptionalDetails dg13 = dnie.getDg13();
    System.out.println(dg13);
    System.out.println();
    // Opciones de seguridad
    final byte[] dg14 = dnie.getDg14();
    // $NON-NLS-1$
    System.out.println("DG14: " + HexUtils.hexify(dg14, false));
}
Also used : Dnie3Cwa14890Constants(es.gob.jmulticard.card.dnie.Dnie3Cwa14890Constants) Com(es.gob.jmulticard.asn1.icao.Com) BcCryptoHelper(es.gob.jmulticard.BcCryptoHelper) OptionalDetails(es.gob.jmulticard.asn1.icao.OptionalDetails) Mrz(es.gob.jmulticard.card.icao.Mrz) JseCryptoHelper(es.gob.jmulticard.JseCryptoHelper) CryptoHelper(es.gob.jmulticard.CryptoHelper) BcCryptoHelper(es.gob.jmulticard.BcCryptoHelper) Sod(es.gob.jmulticard.asn1.icao.Sod) Dnie3(es.gob.jmulticard.card.dnie.Dnie3) OptionalDetailsDnie3(es.gob.jmulticard.card.dnie.OptionalDetailsDnie3) X509Certificate(java.security.cert.X509Certificate) Ignore(org.junit.Ignore) Test(org.junit.Test)

Example 4 with Com

use of es.gob.jmulticard.asn1.icao.Com in project jmulticard by ctt-gob-es.

the class TestDnieLow method testPassportWithBacReadDgs.

/**
 * Prueba de lectura de DG en Pasaporte.
 * @throws Exception En cualquier error.
 */
@SuppressWarnings("static-method")
@Test
@Ignore
public void testPassportWithBacReadDgs() throws Exception {
    final ApduConnection conn = ProviderUtil.getDefaultConnection();
    System.out.println(HexUtils.hexify(conn.reset(), true));
    System.out.println();
    final IcaoMrtdWithBac passport = new IcaoMrtdWithBac(conn, new JseCryptoHelper());
    System.out.println();
    System.out.println(passport);
    System.out.println();
    final Com com = passport.getCom();
    System.out.println(com);
    System.out.println();
    final Mrz dg1 = passport.getDg1();
    System.out.println(dg1);
    System.out.println();
    final byte[] dg11 = passport.getDg11();
    System.out.println(new String(dg11));
    System.out.println();
}
Also used : Com(es.gob.jmulticard.asn1.icao.Com) Mrz(es.gob.jmulticard.card.icao.Mrz) IcaoMrtdWithBac(es.gob.jmulticard.card.icao.bac.IcaoMrtdWithBac) JseCryptoHelper(es.gob.jmulticard.JseCryptoHelper) ApduConnection(es.gob.jmulticard.apdu.connection.ApduConnection) Ignore(org.junit.Ignore) Test(org.junit.Test)

Example 5 with Com

use of es.gob.jmulticard.asn1.icao.Com in project jmulticard by ctt-gob-es.

the class TestIcao method testPassportWithPaceReadDgs.

/**
 * Prueba de lectura de DG en Pasaporte con PACE.
 * @throws Exception En cualquier error.
 */
@SuppressWarnings("static-method")
@Test
@Ignore
public void testPassportWithPaceReadDgs() throws Exception {
    // ATR = 3B-88-80-01-E1-F3-5E-11-77-83-D7-00-77
    final ApduConnection conn = ProviderUtil.getDefaultConnection();
    System.out.println(HexUtils.hexify(conn.reset(), true));
    System.out.println();
    final IcaoMrtdWithPace passport = new IcaoMrtdWithPace(conn, new JseCryptoHelper(), new TestingDnieCallbackHandler(MRZ, (String) null));
    System.out.println();
    System.out.println(passport);
    System.out.println();
    final Sod sod = passport.getSod();
    // $NON-NLS-1$
    System.out.println("SOD:");
    System.out.println(sod);
    System.out.println();
    final Com com = passport.getCom();
    // $NON-NLS-1$
    System.out.println("COM:");
    System.out.println(com);
    System.out.println();
    final Mrz dg1 = passport.getDg1();
    // $NON-NLS-1$
    System.out.println("MRZ:");
    System.out.println(dg1);
    System.out.println();
    try {
        final byte[] dg = passport.getDg2().getBytes();
        System.out.println(new String(dg));
        System.out.println();
    } catch (final IOException e) {
        // $NON-NLS-1$
        System.out.println("Este MRTD no tiene DG2: " + e);
    }
    try {
        final byte[] dg = passport.getDg3();
        System.out.println(new String(dg));
        System.out.println();
    } catch (final IOException e) {
        // $NON-NLS-1$
        System.out.println("Este MRTD no tiene DG3: " + e);
    }
    try {
        final byte[] dg = passport.getDg4();
        System.out.println(new String(dg));
        System.out.println();
    } catch (final IOException e) {
        // $NON-NLS-1$
        System.out.println("Este MRTD no tiene DG4: " + e);
    }
    try {
        final byte[] dg = passport.getDg5();
        System.out.println(new String(dg));
        System.out.println();
    } catch (final Exception e) {
        // $NON-NLS-1$
        System.out.println("Este MRTD no tiene DG5: " + e);
    }
    try {
        final byte[] dg = passport.getDg6();
        System.out.println(new String(dg));
        System.out.println();
    } catch (final IOException e) {
        // $NON-NLS-1$
        System.out.println("Este MRTD no tiene DG6: " + e);
    }
    try {
        final byte[] dg = passport.getDg7().getBytes();
        System.out.println(new String(dg));
        System.out.println();
    } catch (final IOException e) {
        // $NON-NLS-1$
        System.out.println("Este MRTD no tiene DG7: " + e);
    }
    try {
        final byte[] dg = passport.getDg8();
        System.out.println(new String(dg));
        System.out.println();
    } catch (final IOException e) {
        // $NON-NLS-1$
        System.out.println("Este MRTD no tiene DG8: " + e);
    }
    try {
        final byte[] dg = passport.getDg9();
        System.out.println(new String(dg));
        System.out.println();
    } catch (final IOException e) {
        // $NON-NLS-1$
        System.out.println("Este MRTD no tiene DG9: " + e);
    }
    try {
        final byte[] dg = passport.getDg10();
        System.out.println(new String(dg));
        System.out.println();
    } catch (final IOException e) {
        // $NON-NLS-1$
        System.out.println("Este MRTD no tiene DG10: " + e);
    }
    try {
        final byte[] dg = passport.getDg11();
        System.out.println(new String(dg));
        System.out.println();
    } catch (final Exception e) {
        // $NON-NLS-1$
        System.out.println("Este MRTD no tiene DG11: " + e);
    }
    try {
        final byte[] dg = passport.getDg12();
        System.out.println(new String(dg));
        System.out.println();
    } catch (final IOException e) {
        // $NON-NLS-1$
        System.out.println("Este MRTD no tiene DG12: " + e);
    }
    try {
        final byte[] dg = passport.getDg13().getBytes();
        System.out.println(new String(dg));
        System.out.println();
    } catch (final IOException e) {
        // $NON-NLS-1$
        System.out.println("Este MRTD no tiene DG13: " + e);
    }
    try {
        final byte[] dg = passport.getDg14();
        System.out.println(new String(dg));
        System.out.println();
    } catch (final IOException e) {
        // $NON-NLS-1$
        System.out.println("Este MRTD no tiene DG14: " + e);
    }
    try {
        final byte[] dg = passport.getDg15();
        System.out.println(new String(dg));
        System.out.println();
    } catch (final IOException e) {
        // $NON-NLS-1$
        System.out.println("Este MRTD no tiene DG15: " + e);
    }
    try {
        final byte[] dg = passport.getDg16();
        System.out.println(new String(dg));
        System.out.println();
    } catch (final IOException e) {
        // $NON-NLS-1$
        System.out.println("Este MRTD no tiene DG16: " + e);
    }
    try {
        final byte[] ca = passport.getCardAccess();
        // $NON-NLS-1$
        System.out.println("CardAccess:");
        System.out.println(new String(ca));
        System.out.println();
    } catch (final IOException e) {
        // $NON-NLS-1$
        System.out.println("Este MRTD no tiene CardAccess: " + e);
    }
    try {
        final byte[] cs = passport.getCardSecurity();
        // $NON-NLS-1$
        System.out.println("CardSecurity:");
        System.out.println(new String(cs));
        System.out.println();
    } catch (final IOException e) {
        // $NON-NLS-1$
        System.out.println("Este MRTD no tiene CardSecurity: " + e);
    }
    try {
        final byte[] ai = passport.getAtrInfo();
        // $NON-NLS-1$
        System.out.println("ATR/INFO:");
        System.out.println(new String(ai));
        System.out.println();
    } catch (final IOException e) {
        // $NON-NLS-1$
        System.out.println("Este MRTD no tiene ATR/INFO: " + e);
    }
}
Also used : Com(es.gob.jmulticard.asn1.icao.Com) Mrz(es.gob.jmulticard.card.icao.Mrz) Sod(es.gob.jmulticard.asn1.icao.Sod) IOException(java.io.IOException) IcaoMrtdWithPace(es.gob.jmulticard.card.icao.pace.IcaoMrtdWithPace) JseCryptoHelper(es.gob.jmulticard.JseCryptoHelper) ApduConnection(es.gob.jmulticard.apdu.connection.ApduConnection) IOException(java.io.IOException) Ignore(org.junit.Ignore) Test(org.junit.Test)

Aggregations

Com (es.gob.jmulticard.asn1.icao.Com)5 JseCryptoHelper (es.gob.jmulticard.JseCryptoHelper)4 Mrz (es.gob.jmulticard.card.icao.Mrz)4 Ignore (org.junit.Ignore)4 Test (org.junit.Test)4 Sod (es.gob.jmulticard.asn1.icao.Sod)3 ApduConnection (es.gob.jmulticard.apdu.connection.ApduConnection)2 Dnie3 (es.gob.jmulticard.card.dnie.Dnie3)2 OptionalDetailsDnie3 (es.gob.jmulticard.card.dnie.OptionalDetailsDnie3)2 BcCryptoHelper (es.gob.jmulticard.BcCryptoHelper)1 CryptoHelper (es.gob.jmulticard.CryptoHelper)1 Asn1Exception (es.gob.jmulticard.asn1.Asn1Exception)1 TlvException (es.gob.jmulticard.asn1.TlvException)1 OptionalDetails (es.gob.jmulticard.asn1.icao.OptionalDetails)1 CryptoCardException (es.gob.jmulticard.card.CryptoCardException)1 Dnie (es.gob.jmulticard.card.dnie.Dnie)1 Dnie3Cwa14890Constants (es.gob.jmulticard.card.dnie.Dnie3Cwa14890Constants)1 IcaoMrtdWithBac (es.gob.jmulticard.card.icao.bac.IcaoMrtdWithBac)1 IcaoMrtdWithPace (es.gob.jmulticard.card.icao.pace.IcaoMrtdWithPace)1 Iso7816FourCardException (es.gob.jmulticard.card.iso7816four.Iso7816FourCardException)1