17
[email protected] elevenpaths.com Guía de Integración de SealSign BSS (Biometric Signature Services) en Aplicaciones .NET (WPF) ElevenPaths, innovación radical y disruptiva en seguridad

Integración de SealSign BSS en Aplicaciones .NET (WPF)

Embed Size (px)

Citation preview

Page 1: Integración de SealSign BSS en Aplicaciones .NET (WPF)

[email protected] elevenpaths.com

Guía de Integración de SealSign BSS (Biometric Signature Services) en

Aplicaciones .NET (WPF)

ElevenPaths, innovación radical y disruptiva en seguridad

Page 2: Integración de SealSign BSS en Aplicaciones .NET (WPF)

Guía de integración de SealSign BSS (Biometric Signature Services) en Aplicaciones .NET (WPF)

V.3.2 – Octubre 2016

2016 © Telefónica Digital España, S.L.U. Todos los derechos reservados. Página 2 de 17

CONTENIDOS

1 Introducción ............................................................................................................... 3

2 Tareas comunes .......................................................................................................... 4

2.1 Inclusión de Referencias de Servicios Web .............................................................................. 4

2.2 Inclusión del cliente SealSignBSSClientLibrary ......................................................................... 6

2.3 Autenticación de llamadas a servicios web .............................................................................. 6

2.3.1 Paso de credenciales para una autenticación básica ................................................................. 6

2.3.2 Paso de credenciales para una autenticación Windows ............................................................ 7

3 Casos de uso ............................................................................................................... 8

3.1 Observaciones .......................................................................................................................... 8

3.2 Firma Biométrica ...................................................................................................................... 8

3.2.1 Inclusión del panel de captura de firma manuscrita .................................................................. 8

3.2.2 Registro de Eventos .................................................................................................................... 8

3.2.3 Imagen de Fondo de Captura en la Tableta (solo para tabletas Wacom) .................................. 9

3.2.4 Definición de Botones en la Tableta (solo para tabletas Wacom) ............................................. 9

3.2.5 Establecer Fondo de Firma Transparente .................................................................................. 9

3.2.6 Inicio de la Captura ..................................................................................................................... 9

3.2.7 Fin de la Captura ......................................................................................................................... 9

3.2.8 Borrar la Captura ........................................................................................................................ 9

3.2.9 Inicio de la Firma ........................................................................................................................ 9

3.2.10 Criptografía en Cliente.............................................................................................................. 10

3.2.11 Fin de Firma .............................................................................................................................. 10

3.3 Verificación de Documentos Firmados ................................................................................... 11

3.4 Firma Biométrica Desconectada ............................................................................................. 11

3.4.1 Captura Desconectada ............................................................................................................. 12

3.4.2 Sincronización de la Firma con el Servidor ............................................................................... 12

3.5 Firma Biométrica con Document Provider (Documento en el Servidor) ................................ 13

3.5.1 Inicio de la Firma ...................................................................................................................... 13

3.5.2 Criptografía en Cliente.............................................................................................................. 13

3.5.3 Fin de la Firma .......................................................................................................................... 13

3.6 Desarrollo de document providers ......................................................................................... 13

3.6.1 Inclusión de SealSignBSSTypes y SealSignDSSTypes ................................................................. 14

3.6.2 Implementación del interfaz .................................................................................................... 14

3.6.3 Obtención del documento y de los parámetros de firma ........................................................ 14

3.6.4 Almacenamiento del documento firmado ............................................................................... 15

4 Recursos .................................................................................................................... 16

Page 3: Integración de SealSign BSS en Aplicaciones .NET (WPF)

Guía de integración de SealSign BSS (Biometric Signature Services) en Aplicaciones .NET (WPF)

V.3.2 – Octubre 2016

2016 © Telefónica Digital España, S.L.U. Todos los derechos reservados. Página 3 de 17

1 Introducción

SealSign BSS es un producto desarrollado por ElevenPaths, dirigido a facilitar la integración de la firma electrónica en las aplicaciones corporativas. SealSign BSS expone su funcionalidad a través de Servicios Web basados en la tecnología WCF (Windows Comunication Framework). Estos servicios pueden ser invocados por aplicaciones implementadas sobre la mayoría de las tecnologías del mercado.

El SDK de SealSign BSS proporciona, además, diversos paneles para la captura de la firma manuscrita disponibles según la tecnología usada por la aplicación cliente.

Este documento no pretende ser un manual sobre los aspectos concretos de la firma biométrica sino un manual de referencia técnica, orientado al desarrollador, sobre cómo integrar SealSign BSS en Aplicaciones .NET utilizando la plataforma WPF.

Page 4: Integración de SealSign BSS en Aplicaciones .NET (WPF)

Guía de integración de SealSign BSS (Biometric Signature Services) en Aplicaciones .NET (WPF)

V.3.2 – Octubre 2016

2016 © Telefónica Digital España, S.L.U. Todos los derechos reservados. Página 4 de 17

2 Tareas comunes

2.1 Inclusión de Referencias de Servicios Web

Para interactuar con la plataforma servidora se hace uso de la capa de servicios Web. El documento “SealSign BSS - Referencia de Servicios Web” detalla cada servicio y sus parámetros. En este apartado se muestra, a modo de ejemplo, cómo incluir la referencia a un servicio web de la plataforma usando Microsoft Visual Studio 2013.

Para añadir la referencia a un servicio web pulsar con el botón derecho del ratón sobre el proyecto .NET, seleccionar la opción Add y después Service Reference…

Imagen 01: Menú añadir referencia de servicio.

Page 5: Integración de SealSign BSS en Aplicaciones .NET (WPF)

Guía de integración de SealSign BSS (Biometric Signature Services) en Aplicaciones .NET (WPF)

V.3.2 – Octubre 2016

2016 © Telefónica Digital España, S.L.U. Todos los derechos reservados. Página 5 de 17

Aparecerá la ventana asistente para añadir la referencia del servicio web:

Imagen 02: Ventana asistente para añadir referencia de servicio.

En esta ventana hay que teclear la URL del servicio web, pulsar el botón Go, teclear un nombre para el Namespace y pulsar el botón OK. La referencia se añadirá al proyecto y se mostrará en el Solution Explorer:

Imagen 03: Referencia de servicio web en el Solution Explorer.

Page 6: Integración de SealSign BSS en Aplicaciones .NET (WPF)

Guía de integración de SealSign BSS (Biometric Signature Services) en Aplicaciones .NET (WPF)

V.3.2 – Octubre 2016

2016 © Telefónica Digital España, S.L.U. Todos los derechos reservados. Página 6 de 17

Otro método para la invocación de servicios web es la generación de clases proxy con utilidades como svcutil.exe, disponible tanto con el SDK de Microsoft Windows como con las diferentes versiones de Microsoft Visual Studio.

svcutil es una herramienta de línea de comandos que generará uno o varios ficheros de código (según el lenguaje indicado) y un fichero .config con la configuración adecuada para la invocación del web service.

Un ejemplo de línea de comandos para la generación de clases proxy de SealSign BSS sería el siguiente:

svcutil.exe /out:BiometricSignatureService.cs /config:BiometricSignatureService.config http://localhost/SealSignBSSService/BiometricSignatureService.svc /n:*,SealSignBSSService /n:http://schemas.datacontract.org/2004/07/SealSignDSSTypes,SealSignDSSTypes /n:http://schemas.datacontract.org/2004/07/SealSignBSSTypes,SealSignBSSTypes

En este ejemplo, la herramienta svcutil.exe generará dos ficheros: BiometricSignatureService.cs y BiometricSignatureService.config. El fichero BiometricSignatureService.cs se incorporará al proyecto .net como un fichero de código más y el contenido del fichero BiometricSignatureService.conf se deberá añadir dentro del fichero app.config del proyecto .net.

2.2 Inclusión del cliente SealSignBSSClientLibrary

El panel de firma distingue entre dos tipos de dispositivos, las tabletas Wacom y los dispositivos compatibles con stylus. Para añadir el panel de firma hay que crear una variable que implemente la interfaz ISealSignBSSPanel, y crear una instancia llamando al método GetSealSignBSSPanel de la clase SealSignBSSPanelFactory.

ISealSignBSSPanel _signaturePanel = SealSignBSSPanelFactory.GetSealSignBSSPanel();

Se añade ese control a la UI, por ejemplo a un Grid: RootGrid.Children.Add((UIElement)_signaturePanel);

2.3 Autenticación de llamadas a servicios web

Dependiendo de la configuración y según las operaciones que se deseen realizar, las peticiones a los servicios web de la plataforma deberán realizarse de manera autenticada. Por ejemplo, una operación de enumeración de certificados debe realizarse de manera autenticada desde el cliente, de forma que se asegure el uso de certificados permitidos.

En el caso de aplicaciones .NET, según el escenario en el que estas se ejecuten, es posible que no sea necesario suministrar las credenciales programáticamente puesto que pueden hacer uso de la autenticación integrada de la propia plataforma Windows.

2.3.1 Paso de credenciales para una autenticación básica En el siguiente ejemplo se muestra la conexión a un servicio web de SealSign, configurado con autenticación básica y suministrando las credenciales mediante código .NET:

SignatureServiceBasicClient service = new SignatureServiceBasicClient(); service.ClientCredentials.UserName.UserName = "SealSignTest"; service.ClientCredentials.UserName.Password = "Passw0rd"; CertificateReference[] certs = service.GetCertificateReferences(null, false); service.Close();

Page 7: Integración de SealSign BSS en Aplicaciones .NET (WPF)

Guía de integración de SealSign BSS (Biometric Signature Services) en Aplicaciones .NET (WPF)

V.3.2 – Octubre 2016

2016 © Telefónica Digital España, S.L.U. Todos los derechos reservados. Página 7 de 17

2.3.2 Paso de credenciales para una autenticación Windows En el siguiente ejemplo se muestra la conexión a un servicio web de SealSign, configurado con autenticación Windows y suministrando las credenciales mediante código .NET:

SignatureServiceClient service = new SignatureServiceClient(); service.ClientCredentials.Windows.ClientCredential.Domain = "localhost"; service.ClientCredentials.Windows.ClientCredential.UserName = "SealSignTest"; service.ClientCredentials.Windows.ClientCredential.Password = "Passw0rd"; CertificateReference[] certificates = service.GetCertificateReferences(null, false); service.Close();

Page 8: Integración de SealSign BSS en Aplicaciones .NET (WPF)

Guía de integración de SealSign BSS (Biometric Signature Services) en Aplicaciones .NET (WPF)

V.3.2 – Octubre 2016

2016 © Telefónica Digital España, S.L.U. Todos los derechos reservados. Página 8 de 17

3 Casos de uso

3.1 Observaciones

Para unificar tanto el componente que utiliza las tabletas Wacom como el que utiliza inking, se ha puesto toda la funcionalidad en la misma interfaz pública, pero hay algunos métodos que el componente de inking ignorará, ya que su naturaleza es diferente a la del componente para las tabletas Wacom, en la documentación se indicará qué funciones son únicamente válidas para el componente para tabletas Wacom.

3.2 Firma Biométrica

3.2.1 Inclusión del panel de captura de firma manuscrita Una vez añadida la librería SealSignBSSClientLibrary.dll a Visual Studio, el siguiente paso consiste en añadir el panel de captura, para añadirlo hay que tener una instancia de un objeto que implemente la interfaz ISealSignBSSPanel:

ISealSignBSSPanel _signaturePanel;

También deberá obtenerse una instancia del panel que se va a utilizar. El componente detectará si hay alguna tableta Wacom conectada, en caso que no haya ninguna tableta, detectará si el sistema soporta la entrada mediante stylus.

ISealSignBSSPanel _signaturePanel = SealSignBSSPanelFactory.GetSealSignBSSPanel();

En caso de que no se detecte ningún dispositivo de entrada válido, se lanzará el evento DeviceNotConnected.

3.2.2 Registro de Eventos Es posible recibir eventos del panel añadiendo delegados que implementen el método de callback del evento en cuestión. Los eventos que se incluyen en los paneles son:

ErrorCapture: Se ha producido un error durante el proceso de captura de la tableta.

ErrorDeviceNotConnected: Se ha producido un error que indica que no hay una tableta conectada.

private void sealSignBSSWacomSTUPanel1_ErrorCapture (object sender, EventArgs e) { } private void sealSignBSSWacomSTUPanel1_DeviceNotConnected (object sender, EventArgs e) { } …

_signaturePanel.ErrorCapture += sealSignBSSWacomSTUPanel1_OkButtonClickEvent; _signaturePanel.DeviceNotConnected += SealSignBSSWacomSTUPanel1_DeviceNotConnected;

Page 9: Integración de SealSign BSS en Aplicaciones .NET (WPF)

Guía de integración de SealSign BSS (Biometric Signature Services) en Aplicaciones .NET (WPF)

V.3.2 – Octubre 2016

2016 © Telefónica Digital España, S.L.U. Todos los derechos reservados. Página 9 de 17

3.2.3 Imagen de Fondo de Captura en la Tableta (solo para tabletas Wacom) El panel de firma permite establecer una imagen BMP de fondo en la tableta durante la captura de la firma mediante el método SetBackgroundImage.

System.Drawing.Image image = System.Drawing.Image.FromFile(@"FILE PATH"); _signaturePanel.SetBackgroundImage(image);

3.2.4 Definición de Botones en la Tableta (solo para tabletas Wacom) Los botones en la tableta deberán ir dibujados en la imagen que se pone de fondo. Con la siguiente función se definen qué botones hay y en qué posición están. Así cuando se pulse con el lápiz encima de esas regiones se detectará el botón y se propagará el evento. El siguiente snippet muestra como añadir dos definiciones de botón a la tableta:

_signaturePanel.ClearButtonArea(); _signaturePanel.SetButtonArea("Firmar", 0, 0, 100, 50); _signaturePanel.SetButtonArea("Borrar", 0, 60, 100, 50); _signaturePanel.AddEventListener(this);

Para subscribirse a los eventos, se dispone del método AddEventListener al que se le pasa un objeto que implemente la interfaz ISealSignBSSEventListener. Entre los métodos que tiene que implementar, está ButtonClick que es el que se llamará al pulsar en alguno de los botones definidos anteriormente. Recibe como parámetro el botón que se ha pulsado.

3.2.5 Establecer Fondo de Firma Transparente La firma por defecto se muestra en la imagen sobre fondo blanco. Si en la representación gráfica es necesario que el fondo sea transparente, se puede utilizar la propiedad TransparentSignature:

_signaturePanel.TransparentSignature = true;

3.2.6 Inicio de la Captura Una vez integrado el panel en el desarrollo se comienza la captura biométrica llamando al método Start del panel:

_signaturePanel.Start();

3.2.7 Fin de la Captura El método Stop del panel detiene la captura de datos biométricos. Es conveniente parar la captura una vez reconocida y antes de empezar el proceso de firma con la plataforma servidora:

_signaturePanel.Stop();

3.2.8 Borrar la Captura Para reiniciar y borrar la captura realizada se puede llamar al método CleanSignature del panel de firma:

_signaturePanel.CleanSignature();

3.2.9 Inicio de la Firma Para firmar biométricamente, se realizan los siguientes pasos:

1. Se notifica a la plataforma el documento a firmar.

Page 10: Integración de SealSign BSS en Aplicaciones .NET (WPF)

Guía de integración de SealSign BSS (Biometric Signature Services) en Aplicaciones .NET (WPF)

V.3.2 – Octubre 2016

2016 © Telefónica Digital España, S.L.U. Todos los derechos reservados. Página 10 de 17

2. Con los datos obtenidos del servidor (es decir, la instancia y el token de firma) se realiza la operación de fusión de datos biométricos y criptografía mediante la librería cliente SealSignBSSClientLibrary.

3. Se notifica el resultado de la operación a la plataforma para finalizar la operación de firma y componer el documento final.

Se notifica el inicio de firma a la plataforma servidora mediante la llamada al método BeginSignature. El servicio consumido es el /SealSignBSSService/BiometricSignatureService.svc.

Los valores retornados y la sintaxis del método se pueden consultar en el documento “SealsSign BSS - Referencia de Servicios Web”:

BiometricSignatureServiceClient service = new BiometricSignatureServiceClient(); byte[] biometricState = null; FileStream stream = new FileStream(@"c:\samples\sample.pdf", FileMode.Open); BiometricSignatureParameters biometricParameters = new BiometricSignatureParameters(); biometricParameters.imageParameters = new BiometricImageParameters(); biometricParameters.imageParameters.signatureVisible = true; biometricParameters.imageParameters.onAllPages = true; biometricParameters.imageParameters.offsetX = 370; biometricParameters.imageParameters.offsetY = 220; biometricParameters.imageParameters.height = 80; biometricParameters.imageParameters.width = 100; string instance = service.BeginSignature(SignatureProfile.PDF, BiometricSignatureType.Default, "", "", BiometricSignatureFlags.Default, biometricParameters, SignatureFlags.Default, null, null, stream, out biometricState);

3.2.10 Criptografía en Cliente Mediante la llamada al panel de firma se realiza la obtención de los datos biométricos y la operación criptográfica:

// Client encryption with SealSignBSSClientLibrary byte[] biometricFinalState = _signaturePanel.GetSignature(new Guid(instance), biometricState);

3.2.11 Fin de Firma Se notifica a la plataforma el fin de la firma y se obtiene el documento final. El servicio consumido es el /SealSignBSSService/BiometricSignatureService.svc.

Los valores retornados y la sintaxis del método se pueden consultar en el documento “SealSign BSS - Referencia de Servicios Web”:

// EndSignature

Stream signedStream = service.EndSignature(instance, biometricFinalState);

Page 11: Integración de SealSign BSS en Aplicaciones .NET (WPF)

Guía de integración de SealSign BSS (Biometric Signature Services) en Aplicaciones .NET (WPF)

V.3.2 – Octubre 2016

2016 © Telefónica Digital España, S.L.U. Todos los derechos reservados. Página 11 de 17

FileStream outputStream = new FileStream(@"c:\samples\sample.pdf.bio.signed.pdf", FileMode.Create, FileAccess.ReadWrite); byte[] buffer = new byte[16 * 1024]; int read; while ((read = signedStream.Read(buffer, 0, buffer.Length)) > 0) {

outputStream.Write(buffer, 0, read); } outputStream.Flush(); outputStream.Close(); signedStream.Close();

service.Close();

3.3 Verificación de Documentos Firmados

Es posible verificar una firma capturada contra las firmas contenidas en un documento. Para ello se realiza una única llamada al método Verify de la plataforma servidora. El servicio consumido es el /SealSignBSSService/BiometricSignatureService.svc.

Los valores retornados y la sintaxis del método se pueden consultar en el documento “SealSign BSS - Referencia de Servicios Web”:

BiometricSignatureServiceClient service = new BiometricSignatureServiceClient(); byte[] biometricState = null; FileStream stream = new FileStream(@"c:\samples\sample.pdf.bio.signed.pdf", FileMode.Open); byte[] biometricFinalState = _signaturePanel.GetSignature(new Guid("00000000-0000-0000-0000-000000000000"), biometricState); if (biometricFinalState != null) {

BiometricSignatureVerification verifyResponse = service.Verify( SignatureProfile.PDF, BiometricSignatureType.Default, "", "", BiometricVerificationFlags.Default, null, biometricFinalState, null, stream);

stream.Close(); } service.Close();

3.4 Firma Biométrica Desconectada

En algunos escenarios es posible que no haya conexión con el servidor de firma biométrica. SealSign permite realizar una firma preliminar para sincronizar con el servicio cuando el cliente vuelva a tener conexión. Es necesario disponer del documento en cliente para poder asociar de manera única la firma capturada con el mismo.

Page 12: Integración de SealSign BSS en Aplicaciones .NET (WPF)

Guía de integración de SealSign BSS (Biometric Signature Services) en Aplicaciones .NET (WPF)

V.3.2 – Octubre 2016

2016 © Telefónica Digital España, S.L.U. Todos los derechos reservados. Página 12 de 17

3.4.1 Captura Desconectada Mediante la llamada al panel de firma se realiza la obtención de los datos biométricos y la operación criptográfica. En lugar de los datos obtenidos del servicio en una llamada normal, se obtiene el token biométrico pasando el documento a firmar como parámetro. Posteriormente, se obtiene también la instancia temporal generada en cliente:

byte[] document = File.ReadAllBytes(@"c:\samples\sample.pdf"); Guid instance = new Guid(); // Client encryption with SealSignBSSClientLibrary byte[] biometricFinalState = _signaturePanel.getOfflineSignature(document, out instance);

3.4.2 Sincronización de la Firma con el Servidor Una vez reestablecida la comunicación con el servicio, será necesario sincronizar la firma o firmas generadas de forma desconectada para obtener el documento final incluyendo todos los elementos necesarios mediante la llamada al método SyncOfflineSignatures. El servicio consumido es el /SealSignBSSService/BiometricSignatureServiceBasic.svc:

OfflineBiometricSignature[] offlineSignature = new OfflineBiometricSignature[1]; BiometricSignatureParameters biometricParameters = new BiometricSignatureParameters(); biometricParameters.imageParameters = new BiometricImageParameters(); biometricParameters.imageParameters.signatureVisible = true; biometricParameters.imageParameters.onAllPages = true; biometricParameters.imageParameters.offsetX = 370; biometricParameters.imageParameters.offsetY = 220; biometricParameters.imageParameters.height = 80; biometricParameters.imageParameters.width = 100; offlineSignature[0] = new OfflineBiometricSignature(); offlineSignature[0].id = ""; offlineSignature[0].account = ""; offlineSignature[0].biometricOptions = BiometricSignatureFlags.Default; offlineSignature[0].biometricParameters = biometricParameters; offlineSignature[0].options = SignatureFlags.Default; offlineSignature[0].instance = instance.ToString(); offlineSignature[0].offlineBiometricState = biometricFinalState; BiometricSignatureServiceClient service = new BiometricSignatureServiceClient(); MemoryStream stream = new MemoryStream(document); Stream signedStream = service.SyncOfflineSignatures(SignatureProfile.PDF, offlineSignature, null, stream); FileStream outputStream = new FileStream(@"c:\samples\sample.pdf.bio.signed.pdf", FileMode.Create, FileAccess.ReadWrite); byte[] buffer = new byte[16 * 1024]; int read; while ((read = signedStream.Read(buffer, 0, buffer.Length)) > 0) {

outputStream.Write(buffer, 0, read); } outputStream.Flush(); outputStream.Close(); signedStream.Close(); service.Close();

Page 13: Integración de SealSign BSS en Aplicaciones .NET (WPF)

Guía de integración de SealSign BSS (Biometric Signature Services) en Aplicaciones .NET (WPF)

V.3.2 – Octubre 2016

2016 © Telefónica Digital España, S.L.U. Todos los derechos reservados. Página 13 de 17

3.5 Firma Biométrica con Document Provider (Documento en el

Servidor)

El procedimiento de firma con un document provider es similar al de firma biométrica, con la diferencia de que el documento no tiene por qué estar en el cliente. En su lugar, se especifica una URI que el documento provider utilizará para obtener el documento de un Backend documental en la parte servidora.

3.5.1 Inicio de la Firma Se notifica el inicio de firma a la plataforma servidora mediante la llamada al método BeginSignatureProvider. /SealSignBSSService/BiometricSignatureServiceBasic.svc es el servicio consumido.

Los valores retornados y la sintaxis del método se pueden consultar en el documento “SealSign BSS - Referencia de Servicios Web”:

BiometricSignatureServiceBasicClient service = new BiometricSignatureServiceBasicClient(); BiometricSignatureBeginResponseBasic response = service.BeginSignatureProvider( "", "", @"demo://c:\samples\sample.pdf", null, null);

3.5.2 Criptografía en Cliente Mediante la llamada al panel de firma se realiza la obtención de los datos biométricos y la operación criptográfica:

// Client encryption with SealSignBSSClientLibrary byte[] biometricFinalState = sealSignBSSWacomSTUPanel1.GetSignature(response.instance, response.biometricState);

3.5.3 Fin de la Firma Se notifica a la plataforma el fin de la firma. El servicio consumido es el /SealSignBSSService/BiometricSignatureServiceBasic.svc.

Los valores retornados y la sintaxis del método se pueden consultar en el documento “SealSign BSS - Referencia de Servicios Web”:

if (biometricFinalState != null) {

service.EndSignatureProvider(response.instance, biometricFinalState, @"demo://c:\samples\sample.pdf", null, false); } service.Close();

3.6 Desarrollo de document providers

Tal y como se comentaba en el apartado anterior, existe la posibilidad de realizar la firma de documentos que no residan en el cliente sino en un Backend documental en la parte servidora. Para

Page 14: Integración de SealSign BSS en Aplicaciones .NET (WPF)

Guía de integración de SealSign BSS (Biometric Signature Services) en Aplicaciones .NET (WPF)

V.3.2 – Octubre 2016

2016 © Telefónica Digital España, S.L.U. Todos los derechos reservados. Página 14 de 17

el uso de esta funcionalidad, es necesario desarrollar y registrar un tipo de add-ins, denominados document providers, que serán los encargados del acceso al repositorio documental de la parte servidora.

Un document provider es un ensamblado (assembly) desarrollado en cualquier lenguaje .NET y que implementa el interfaz SealSignBSSFrontend.IDocumentProvider. La descripción del interfaz y el registro de document providers en la plataforma se pueden consultar en el documento “SealSign BSS - Referencia de Servicios Web”.

3.6.1 Inclusión de SealSignBSSTypes y SealSignDSSTypes La definición del interface SealSignBSSFrontend.IDocumentProvider se encuentra dentro del ensamblado SealSignBSSTypes.dll. Es, por tanto, necesario incluir la referencia a SealSignBSSTypes.dll en el proyecto .NET del nuevo document provider.

Además, algunas de las clases usadas en este interfaz están definidas en la librería de definición de tipos de firma electrónica (SealSignDSSTypes.dll). Será también necesario incluir la referencia a este ensamblado en el proyecto.

3.6.2 Implementación del interfaz Una vez añadidas las referencias a SealSignBSSTypes.dll y SealSignDSSTypes.dll, se deberá crear una clase con acceso público que implemente el interfaz SealSignBSSFrontend.IDocumentProvider.

using SealSignBSSFrontend; public class PDFTestProvider : IDocumentProvider { . . .

3.6.3 Obtención del documento y de los parámetros de firma El primer método del interfaz IDocumentProvider es el método de obtención del documento y los parámetros de firma que se aplicarán en la operación (GetSigningDocument). Con los parámetros de entrada especificados desde el cliente de firma (uri y providerParameter), el document provider deberá acceder al repositorio documental, obtener el documento que va a ser firmado y retornar tanto el documento como los parámetros de firma que se aplicarán.

El siguiente ejemplo muestra el código de un document provider que accede al sistema de ficheros del servidor y obtiene el documento especificado en la uri que se indicó desde la aplicación cliente:

public Stream GetSigningDocument(string uri,

string providerParameter,

out SignatureProfile signatureProfile,

out BiometricSignatureType biometricSignatureType,

out BiometricSignatureFlags biometricOptions,

out BiometricSignatureParameters biometricParameters,

out SignatureFlags options,

out SignatureParameters parameters,

out byte[] detachedSignature)

{

// Signature parameters specification

signatureProfile = SignatureProfile.PDF;

biometricSignatureType = BiometricSignatureType.Default;

biometricOptions = BiometricSignatureFlags.Default;

Page 15: Integración de SealSign BSS en Aplicaciones .NET (WPF)

Guía de integración de SealSign BSS (Biometric Signature Services) en Aplicaciones .NET (WPF)

V.3.2 – Octubre 2016

2016 © Telefónica Digital España, S.L.U. Todos los derechos reservados. Página 15 de 17

biometricParameters = null;

options = SignatureFlags.Default;

parameters = null;

detachedSignature = null;

biometricParameters = new BiometricSignatureParameters();

biometricParameters.imageParameters = new BiometricImageParameters();

biometricParameters.imageParameters.signatureVisible = true;

biometricParameters.imageParameters.onAllPages = true;

biometricParameters.imageParameters.offsetX = 370;

biometricParameters.imageParameters.offsetY = 220;

biometricParameters.imageParameters.height = 80;

biometricParameters.imageParameters.width = 100;

// Getting document using uri parameter

Uri documentUri = new Uri(uri);

return new FileStream(documentUri.LocalPath, FileMode.Open, FileAccess.Read);

}

3.6.4 Almacenamiento del documento firmado El segundo método del interfaz IDocumentProvider es el método de almacenamiento del documento, una vez realizada la operación de firma (SetSignedDocument). Con los parámetros de entrada especificados desde el cliente de firma (uri y providerParameter), el document provider podrá acceder al repositorio documental para almacenar el documento tras haber sido firmado.

El siguiente ejemplo muestra el código de un document provider que accede al sistema de ficheros del servidor y almacena el documento a partir de la uri que se especificó desde la aplicación cliente:

public void SetSignedDocument(string uri, string providerParameter, Stream document) { // Storing signed document using uri parameter

Uri documentUri = new Uri(uri); FileStream outputStream = new FileStream(documentUri.LocalPath+".bio.signed.pdf",

FileMode.Create, FileAccess.ReadWrite); byte[] buffer = new byte[16 * 1024];

int read; while ((read = document.Read(buffer, 0, buffer.Length)) > 0) {

outputStream.Write(buffer, 0, read); } outputStream.Flush(); outputStream.Close();

document.Close();

}

Page 16: Integración de SealSign BSS en Aplicaciones .NET (WPF)

Guía de integración de SealSign BSS (Biometric Signature Services) en Aplicaciones .NET (WPF)

V.3.2 – Octubre 2016

2016 © Telefónica Digital España, S.L.U. Todos los derechos reservados. Página 16 de 17

4 Recursos

Para información acerca de los distintos servicios de SealSign puede accederse a esta dirección: https://www.elevenpaths.com/es/tecnologia/sealsign/index.html

Además en el blog de ElevenPaths es posible encontrar artículos interesantes y novedades acerca de este producto.

Puede encontrarse más información acerca de los productos de Eleven Paths en YouTube, en Vimeo y en Slideshare.

Page 17: Integración de SealSign BSS en Aplicaciones .NET (WPF)

Guía de integración de SealSign BSS (Biometric Signature Services) en Aplicaciones .NET (WPF)

V.3.2 – Octubre 2016

2016 © Telefónica Digital España, S.L.U. Todos los derechos reservados. Página 17 de 17

La información contenida en el presente documento es propiedad de Telefónica Digital España, S.L.U. (“TDE”) y/o de cualquier otra entidad dentro del Grupo Telefónica o sus licenciantes. TDE y/o cualquier compañía del Grupo Telefónica o los licenciantes de TDE se reservan todos los derechos de propiedad industrial e intelectual (incluida cualquier patente o copyright) que se deriven o recaigan sobre este documento, incluidos los derechos de diseño, producción, reproducción, uso y venta del mismo, salvo en el supuesto de que dichos derechos sean expresamente conferidos a terceros por escrito. La información contenida en el presente documento podrá ser objeto de modificación en cualquier momento sin necesidad de previo aviso.

La información contenida en el presente documento no podrá ser ni parcial ni totalmente copiada, distribuida, adaptada o reproducida en ningún soporte sin que medie el previo consentimiento por escrito por parte de TDE.

El presente documento tiene como único objetivo servir de soporte a su lector en el uso del producto o servicio descrito en el mismo. El lector se compromete y queda obligado a usar la información contenida en el mismo para su propio uso y no para ningún otro.

TDE no será responsable de ninguna pérdida o daño que se derive del uso de la información contenida en el presente documento o de cualquier error u omisión del documento o por el uso incorrecto del servicio o producto. El uso del producto o servicio descrito en el presente documento se regulará de acuerdo con lo establecido en los términos y condiciones aceptados por el usuario del mismo para su uso.

TDE y sus marcas (así como cualquier marca perteneciente al Grupo Telefónica) son marcas registradas. TDE y sus filiales se reservan todo los derechos sobre las mismas.

PUBLICACIÓN:

Octubre 2016

En ElevenPaths pensamos de forma diferente cuando hablamos de seguridad. Liderados por Chema Alonso, somos un equipo de expertos con inquietud para replantearnos la industria y gran experiencia y conocimiento en el sector de la seguridad. Dedicamos toda nuestra experiencia y esfuerzos en crear productos innovadores para que la vida digital sea más segura para todos.

La evolución de las amenazas de seguridad en la tecnología es cada vez más rápida y constante. Por eso, desde junio de 2013, nos hemos constituido como una start-up dentro de Telefónica para trabajar de forma ágil y dinámica, y ser capaces de transformar el concepto de seguridad anticipándonos a los futuros problemas que afecten a nuestra identidad, privacidad y disponibilidad online.

Con sede en Madrid, estamos presentes también en Londres, EE.UU, Brasil, Argentina, y Colombia.

TIENES ALGO QUE CONTARNOS, PUEDES HACERLO EN:

elevenpaths.com Blog.elevenpaths.com @ElevenPaths Facebook.com/ElevenPaths YouTube.com/ElevenPaths