use of es.gob.jmulticard.asn1.icao.OptionalDetails 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.OptionalDetails in project jmulticard by ctt-gob-es.
the class Dnie3 method getDg13.
@Override
public OptionalDetails getDg13() throws IOException {
try {
final OptionalDetails ret = new OptionalDetailsDnie3();
ret.setDerValue(selectFileByLocationAndRead(FILE_DG13_LOCATION));
return ret;
} catch (final es.gob.jmulticard.card.iso7816four.FileNotFoundException e) {
// $NON-NLS-1$
throw (IOException) new FileNotFoundException("DG13 no encontrado").initCause(e);
} catch (final Iso7816FourCardException | TlvException | Asn1Exception e) {
// $NON-NLS-1$
throw new CryptoCardException("Error leyendo el DG13", e);
}
}
Aggregations