Download Manual de Integración DNIe DROID
Document related concepts
no text concepts found
Transcript
MANUAL DE INTEGRACIÓN DNIE DROID Plan de Proyecto - ROCME 1 Marzo de 2013 ÍNDICE 1. INTRODUCCIÓN 3 2. INTEGRACIÓN DE DNIE DROID EN APLICACIONES ANDROID 4 2.1. Consideraciones iniciales 4 2.2. Gestión de diálogos en la plataforma Android 4 2.2.1. public Object getAndroidContext() 4 2.2.2. public void waitForUSBPermission() 5 2.2.3. public int showConfirmDialog(final String message) 5 2.2.4. public char[] showPasswordDialog(String title, String message) 5 Manual de Integración DNIe Droid 2 1. INTRODUCCIÓN DNIe Droid es un proyecto desarrollado por INTECO para habilitar la posibilidad de realizar operaciones de firma y autenticación con el DNI electrónico desde un terminal basado en Android (la plataforma móvil más utilizada en la actualidad). Se ha desarrollado aprovechando y poniendo en valor el Controlador Java para el DNIe promovido por el Ministerio de Hacienda y Administraciones Públicas, en colaboración con INTECO y Red.es. Este controlador ha sido certificado en seguridad conforme a la norma Common Criteria, con un nivel de garantía EAL1. La integración del controlador Java en el DNIe Droid hace posible acceder a toda la funcionalidad proporcionada por el primero desde aplicaciones desarrolladas para dispositivos Android. Por ello, un núcleo importante de DNIe Droid está constituido por el propio controlador Java para el DNIe, por lo que, en general sigue siendo válida la documentación de dicho proyecto, y que puede consultarse a través del siguiente enlace. Este documento amplía la documentación del Controlador Java para el DNIe abordando los cambios y nuevos desarrollos introducidos en DNIe Droid, así como los mecanismos disponibles para la integración de DNIe Droid en otras aplicaciones Manual de Integración DNIe Droid 3 2. INTEGRACIÓN DE DNIE DROID EN APLICACIONES ANDROID Este capítulo pretende servir de guía a la hora de integrar el controlador adaptado para Android en aplicaciones de terceros. 2.1. CONSIDERACIONES INICIALES Como se puede observar en el manual de usuario del controlador Java para el DNIe de la Secretaría de Estado de Administraciones Públicas, el controlador incorpora la gestión de los cuadros de diálogo para introducción de PIN y consentimiento informado de operación de firma digital, haciendo esta gestión transparente a las aplicaciones de terceros que hacen uso de él, con lo que se exime al programador de codificar esta lógica, a la par que se provee un mayor nivel de seguridad para el usuario final. Dada la naturaleza del sistema operativo Android y al diseño del controlador DNIe Droid, no ha sido posible mantener este comportamiento, por lo que para el caso de la plataforma Android, será responsabilidad del programador la gestión de estos cuadros de diálogo, así como algún otro aspecto inherente al sistema operativo Android. En cuanto al resto de funcionalidades de almacén de claves/certificados y firma digital, DNIe Droid se comporta de la misma manera que su predecesor. Se recomienda, por tanto, la revisión de la documentación de referencia del Controlador Java para el DNIe para la consulta de otra información complementaria a la descrita en el presente documento. 2.2. GESTIÓN DE DIÁLOGOS EN LA PLATAFORMA ANDROID Para el caso particular de la plataforma Android, es necesario que la aplicación facilite al controlador Java para el DNIe ciertas referencias para su correcto funcionamiento. Para ello, se debe realizar la siguiente llamada estática: es.gob.jmulticard.ui.passwordcallback.PasswordCallbackManager.setDialogUIHandler( DialogUIHandler duh); Donde duh es un objeto que debe implementar el interfaz es.gob.jumulticard.ui.passwordcallback.DialogUIHandler. La llamada a este método ha de realizarse antes de cargar el proveedor. Para satisfacer dicha interfaz, hay que implementar los siguientes métodos, facilitando la funcionalidad que se describe a continuación: 2.2.1. public Object getAndroidContext() Este método se utiliza para facilitar al driver el contexto de la aplicación de Android. Esto es necesario para gestionar el acceso a los dispositivos USB conectados al dispositivo Android. Es necesario que el objeto retornado sea del tipo android.content.Context o se producirá una excepción a la hora de cargar el controlador. Manual de Integración DNIe Droid 4 2.2.2. public void waitForUSBPermission() Este método se llama desde el core del controlador cuando el usuario aún no ha autorizado el acceso a los puertos USB/microUSB del dispositivo Android. Cuando se solicita el acceso a un dispositivo USB, Android muestra un aviso al usuario indicando si desea o no conceder dicho acceso. En ese momento sería necesario parar la tarea en curso con el fin de que el usuario otorgue el permiso y el controlador pueda acceder al dispositivo USB. En este sentido, la implementación de este método deberá pausar la tarea en curso y el desarrollador de la aplicación final debe implementar y registrar un android.content.BroadcastReceiver de Android para capturar el Intent en que el usuario otorga o deniega el acceso para reanudar la tarea que ha sido pausada. La action asociada a este Intent de Android es es.inteco.labs.dnie.android.USB. 2.2.3. public int showConfirmDialog(final String message) Cuando se realiza un proceso de firma digital con el certificado de firma del DNIe del usuario, se solicita una confirmación para realizar dicha operación. Para el caso de la implementación en Android, se delega esta gestión en la aplicación final a través de la llamada a este método desde el core del controlador. El parámetro message corresponde con el mensaje generado por el controlador para utilizar en el cuadro de diálogo que la aplicación deberá mostrar al usuario. Los posibles valores a retornar por este método serán DialogUIHandler.YES_OPTION (0) y DialogUIHandler.NO_OPTION (1). 2.2.4. public char[] showPasswordDialog(String title, String message) Este método será llamado cuando el controlador requiera del PIN para acceder a los certificados reales del DNIe del usuario. Los parámetros title y message corresponden, respectivamente, con el título y el mensaje que se usarán para mostrar la ventana de diálogo al usuario solicitando su PIN. Es la aplicación Android la encargada de gestionar el cuadro de diálogo que se mostrará al usuario. El valor retornado por este método ha de ser un array con los caracteres que conforman el PIN del usuario.1 1 Se asume que esta implementación se lleva a cabo utilizando objetos de tipo andorid.os.AsyncTask (véase http://developer.android.com/reference/android/os/AsyncTask.html ) u homólogos, ya que la instanciación del proveedor y la realización de operaciones criptográficas se entiende serán realizadas en background. Manual de Integración DNIe Droid 5