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);
}
}
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
}
}
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));
}
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();
}
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);
}
}
Aggregations