ATR’s Utilizados por el RENAP en el DPI

Que es el ATR:
atr
Una Respuesta al reajuste (ATR) es una salida de mensaje por un contacto de tarjeta inteligente conforme a 7.816 normas ISO / IEC, tras el rearme eléctrico de el chip de la tarjeta por un lector de tarjetas. El ATR transmite información acerca de los parámetros de comunicación propuestas por la tarjeta, y la naturaleza de la tarjeta y el estado.

Por extensión, ATR a menudo se refiere a un mensaje obtenido de una tarjeta inteligente en un estadio temprano de la comunicación; o desde el lector de tarjetas utilizado para acceder a la tarjeta, que puede transformar el mensaje de la tarjeta en un formato de ATR-como (esto ocurre por ejemplo, para algunos lectores de tarjetas de PC / SC [1] [2] al acceder a un 14,443 tarjeta inteligente ISO / IEC) .

Los ATR utilizados por el RENAP son los siguientes:
3B DB 96 00 80 B1 FE 45 1F 83 00 31 C0 64 C3 08 01 00 0F 90 00 9B
3B DB 96 00 80 B1 FE 45 1F 83 00 31 C0 64 C7 FC 10 00 0F 90 00 7A

Aca dejo un código que hace la conexión SmartCard utilizando el primer ejemplo que desarrollamos aca en bit502 http://goo.gl/9MkNxt este código lee el ATR y comprueba si es un DPI emitido por el RENAP
imagen-oficial-DPI-2013-oficial

/*
 * 17/08/2014
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 */

package test;

import com.gd.smartcard.SCardConexion;
import javax.smartcardio.CardException;

/**
* @version 1.0 Agosto de 2014
* @author Julio Chinchilla
*/
public class DPIVerify {
    
    //ATR's utilizados por el RENAP en la generación del DPI 
    public static final String GT01 = "3B DB 96 00 80 B1 FE 45 1F 83 00 31 C0 64 C3 08 01 00 0F 90 00 9B";
    public static final String GT02 = "3B DB 96 00 80 B1 FE 45 1F 83 00 31 C0 64 C7 FC 10 00 0F 90 00 7A";

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws CardException {
        String atr = getATR();
        if (atr.equals(GT01) | atr.equals(GT02))
            System.out.println("El ATR es: "+ atr);
        else
            System.err.println("Este documento no es un DPI");
    }
    
    /**
     * Funcion que hace una conexión SmartCard utilizando la clase de conexión
     * SmartCard estandar desarrollada antriormente http://goo.gl/9MkNxt esta
     * conexión tiene conexión al dispositivo 0, utilizando el protocolo por 
     * default con el parámetro "*"
     * @return ATR de la tarjeta
     * @throws CardException 
     */
    private static String getATR() throws CardException {
        SCardConexion sc = new SCardConexion();
        String atr = byteToHex(sc.connect(0, "*").getBytes());
        sc.disconnect();
        return atr;
    }
    
    /**
     * Función que transforma una cadena de bytes a su valor Hexadecimal en un
     * tipo de dato String, con espacios entre cada byte
     * @param data Array de bytes
     * @return Valor del array de bytes en formato Hexadecimal con espacios
     * entre cada byte
     */
    private static String byteToHex(byte[] data)  {
        StringBuilder localStringBuilder = new StringBuilder();
        for (int i = 0; i < data.length; i++)  {
            String str;
            if ((str=Integer.toHexString(data[i]&0xFF).toUpperCase()).length()==1) {
                localStringBuilder.append(0);
            }
        localStringBuilder.append(str).append(" ");
        }
        return localStringBuilder.substring(0, localStringBuilder.length() - 1);
    }
    
}
Anuncios

5 pensamientos en “ATR’s Utilizados por el RENAP en el DPI

  1. Guillermo

    buenisimo tu post Julio , quisiera ver si tienes algun ejemple de como obtienes los datos de la persona de la smart card como se ve en tus capturas de tu aplicacion ,muchisimas gracias.

    Responder

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s