Search in sources :

Example 1 with OptionalDetails

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));
}
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 2 with OptionalDetails

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);
    }
}
Also used : TlvException(es.gob.jmulticard.asn1.TlvException) OptionalDetails(es.gob.jmulticard.asn1.icao.OptionalDetails) Iso7816FourCardException(es.gob.jmulticard.card.iso7816four.Iso7816FourCardException) FileNotFoundException(java.io.FileNotFoundException) Asn1Exception(es.gob.jmulticard.asn1.Asn1Exception) CryptoCardException(es.gob.jmulticard.card.CryptoCardException)

Aggregations

OptionalDetails (es.gob.jmulticard.asn1.icao.OptionalDetails)2 BcCryptoHelper (es.gob.jmulticard.BcCryptoHelper)1 CryptoHelper (es.gob.jmulticard.CryptoHelper)1 JseCryptoHelper (es.gob.jmulticard.JseCryptoHelper)1 Asn1Exception (es.gob.jmulticard.asn1.Asn1Exception)1 TlvException (es.gob.jmulticard.asn1.TlvException)1 Com (es.gob.jmulticard.asn1.icao.Com)1 Sod (es.gob.jmulticard.asn1.icao.Sod)1 CryptoCardException (es.gob.jmulticard.card.CryptoCardException)1 Dnie3 (es.gob.jmulticard.card.dnie.Dnie3)1 Dnie3Cwa14890Constants (es.gob.jmulticard.card.dnie.Dnie3Cwa14890Constants)1 OptionalDetailsDnie3 (es.gob.jmulticard.card.dnie.OptionalDetailsDnie3)1 Mrz (es.gob.jmulticard.card.icao.Mrz)1 Iso7816FourCardException (es.gob.jmulticard.card.iso7816four.Iso7816FourCardException)1 FileNotFoundException (java.io.FileNotFoundException)1 X509Certificate (java.security.cert.X509Certificate)1 Ignore (org.junit.Ignore)1 Test (org.junit.Test)1