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