
El usuario puede gestionar todos sus pass a través de la aplicación Wallet donde podrá visualizarlos, organizarlos o eliminarlos a voluntad. La tecnología inherente a estos passes se divide en los siguientes componentes:
- Un formato particular para crear pass.
- Una API Web Service para poder actualizar los pass, implementado en los servidores del desarrollador.
- Una API para que las apps puedan interactuar con la Wallet.
Introducción al caso
Hace unos meses, al comprar unas entradas por internet me mandaron adjunto un ticket con extensión .pkpass. Al intentar abrirlo, el fichero no respondía como otros passes que había descargado anteriormente. Normalmente al abrir uno de estos archivos adjunto a un correo, el sistema presenta una ventana modal que permite visualizar el contenido con varias opciones, como la posibilidad de añadirlo al Wallet.
Al no responder de esa manera, me hizo sospechar que el pass podría tener un problema, así que decidí destripar el archivo en busca de posibles fallos. Al descomprimir y comprobar en la página de desarrolladores de Apple el formato esperado, no había nada que difiriese a lo indicado en la documentación.
Composición de un pass
Los pass son creados como paquetes comprimidos con la extensión .pkpass. Todos los recursos utilizados son cargados en el sistema usando las técnicas estándar de localización en paquetes, implementadas en la clase NSBundle. Los elementos principales de un pass contienen los siguientes archivos:
- background.png -> La imagen que se mostrará como el fondo del pass.
- footer.png -> La imagen mostrada en la parte frontal del pass, cercano a el código de barras.
- icon.png -> El icono del pass. Este icono se mostrará en notificaciones y emails que tienen el pass adjunto o en la pantalla de bloqueo cuando sea necesario mostrarlo.
- logo.png -> La imagen que aparece en la esquina superior izquierda.
- manifest.json -> Diccionario JSON en formato clave/valor donde cada clave es la ruta correspondiente al archivo y el valor es un hash en SHA1 de la clave para el archivo. Todos los elementos que aparezcan en el paquete deben estar contenidos en el manifest, a excepción del manifest y la firma.
- pass.json -> Diccionario JSON que define el pass con un formato que explicaremos posteriormente.
- signature -> Firma en PKCS #7 del manifest.json.
- strip.png -> La imagen que se muestra debajo de los campos principales. thumbnail.png -> Una imagen adicional que se muestra en el frontal del pass, puede servir para mostrar un logo de la marca o información adicional.
Publicado en Seguridad Apple - Google+ - RSS - Eleven Paths

Continúar leyendo...