integración de sealsign bss en aplicaciones .net

19
ElevenPaths, innovación radical y disruptiva en seguridad

Upload: elevenpaths

Post on 04-Aug-2015

59 views

Category:

Technology


0 download

TRANSCRIPT

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

ElevenPaths, innovación radical y disruptiva en seguridad

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

2015 © Telefonica Digital Identity & Privacy, S.L.U. All Rights Reserved. Página 2 de 19

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 Instalación de la librería SealSignBSSClientLibrary ................................................................... 8

2.4 Autenticación de llamadas a servicios web .............................................................................. 8

2.4.1 Paso de credenciales para una autenticación básica ................................................................. 8

2.4.2 Paso de credenciales para una autenticación Windows ............................................................ 8

3 Casos de uso ............................................................................................................... 9

3.1 Firma Biométrica ...................................................................................................................... 9

3.1.1 Inclusión del panel de captura de firma manuscrita .................................................................. 9

3.1.2 Registro de Eventos .................................................................................................................... 9

3.1.3 Imagen de Fondo de Captura en la Tableta ............................................................................. 10

3.1.4 Definición de Botones en la Tableta ......................................................................................... 10

3.1.5 Establecer Fondo de Firma Transparente ................................................................................ 11

3.1.6 Inicio de la Captura ................................................................................................................... 11

3.1.7 Fin de la Captura ....................................................................................................................... 11

3.1.8 Borrar la Captura ...................................................................................................................... 11

3.1.9 Inicio de la Firma ...................................................................................................................... 11

3.1.10 Criptografía en Cliente.............................................................................................................. 12

3.1.11 Fin de Firma .............................................................................................................................. 12

3.2 Verificación de Documentos Firmados ................................................................................... 12

3.3 Firma Biométrica Desconectada ............................................................................................. 13

3.3.1 Captura Desconectada ............................................................................................................. 13

3.3.2 Sincronización de la Firma con el Servidor ............................................................................... 13

3.4 Firma Biométrica con Document Provider (Documento en el Servidor) ................................ 14

3.4.1 Inicio de la Firma ...................................................................................................................... 14

3.4.2 Criptografía en Cliente.............................................................................................................. 15

3.4.3 Fin de la Firma .......................................................................................................................... 15

3.5 Desarrollo de document providers ......................................................................................... 15

3.5.1 Inclusión de SealSignBSSTypes y SealSignDSSTypes ................................................................. 15

3.5.2 Implementación del interfaz .................................................................................................... 16

3.5.3 Obtención del documento y de los parámetros de firma ........................................................ 16

3.5.4 Almacenamiento del documento firmado ............................................................................... 17

4 Recursos .................................................................................................................... 18

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

2015 © Telefonica Digital Identity & Privacy, S.L.U. All Rights Reserved. Página 3 de 19

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.

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

2015 © Telefonica Digital Identity & Privacy, S.L.U. All Rights Reserved. Página 4 de 19

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

2015 © Telefonica Digital Identity & Privacy, S.L.U. All Rights Reserved. Página 5 de 19

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

2015 © Telefonica Digital Identity & Privacy, S.L.U. All Rights Reserved. Página 6 de 19

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

Para incluir los paneles de captura en el cliente de la plataforma, es necesario cargar la librería SealSignBSSClientLibrary en el entorno de desarrollo para que aparezcan como elementos de la toolbox de Visual Studio.

Para seleccionar los elementos que se mostrarán en la toolbox de Visual Studio, se deberá acceder al menú Tools y seleccionar la opción Choose Toolbox Items…

Imagen 04: Menú Choose Toolbox Items….

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

2015 © Telefonica Digital Identity & Privacy, S.L.U. All Rights Reserved. Página 7 de 19

Aparecerá la ventana de selección de elementos de la caja de herramientas:

Imagen 05: Ventana de selección de elementos.

En esta ventana, hay que pulsar el botón Browse existente en la pestaña de componentes del .NET framework y seleccionar la librería SealSignBSSClientLibrary.dll. Tras esto aparecerán seleccionados los paneles de captura de SealSign BSS:

Imagen 06: Selección de paneles de captura.

Pulsando el botón OK los paneles de captura de SealSign BSS estarán disponibles dentro de los componentes de la toolbox de Visual Studio.

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

2015 © Telefonica Digital Identity & Privacy, S.L.U. All Rights Reserved. Página 8 de 19

2.3 Instalación de la librería SealSignBSSClientLibrary

La comunicación entre la librería cliente de SealSign y las tabletas Wacom se realiza a través del SDK proporcionado por el propio fabricante de las tabletas. Este SDK se basa en un componente COM que ha de ser registrado en los equipos para poder comunicar con el dispositivo.

Es por esto que, tanto a la hora de distribuir la aplicación cliente como en el momento de la instalación del entorno de desarrollo, es necesario distribuir todas las librerías que acompañan al componente SealSignBSSClientLibrary y registrar el componente (wgssSTU.dll) según la versión adecuada a la arquitectura del proceso (Win32 o x64) .

El registro del componente COM se puede realizar por cualquiera de los métodos disponibles en el sistema para esta operación, por ejemplo mediante el comando regsvr32.exe.

2.4 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.4.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();

2.4.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 9: Integración de SealSign BSS en Aplicaciones .NET

2015 © Telefonica Digital Identity & Privacy, S.L.U. All Rights Reserved. Página 9 de 19

3 Casos de uso

3.1 Firma Biométrica

3.1.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 adecuado al formulario de firma de la aplicación cliente. Para ello, simplemente, se accederá a la toolbox y se hará doble click o se arrastrará el panel sobre el formulario:

Imagen 07: Inclusión del panel de captura.

A la hora de seleccionar el panel adecuado, hay que tener en cuenta que, para tabletas Wacom STU se deberá seleccionar el componente denominado SealSignBSSWacomSTUPanel y, para tabletas y dispositivos soportados por la tecnología Microsoft Ink el componente SealSignBSSPanel.

3.1.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:

OkButtonClickEvent: Se ha pulsado sobre el botón Aceptar en la tableta. Posteriormente se explica cómo añadir los botones (sólo para el panel SealSignBSSWacomSTUPanel).

CancelButtonClickEvent: Se ha pulsado sobre el botón Cancelar en la tableta. Posteriormente se explica cómo añadir los botones (sólo para el panel SealSignBSSWacomSTUPanel).

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

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

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

2015 © Telefonica Digital Identity & Privacy, S.L.U. All Rights Reserved. Página 10 de 19

private void sealSignBSSWacomSTUPanel1_OkButtonClickEvent(object sender, EventArgs e) { } private void sealSignBSSWacomSTUPanel1_CancelButtonClickEvent(object sender, EventArgs e) { } private void sealSignBSSWacomSTUPanel1_ErrorCaptureEvent(object sender, EventArgs e) { } private void sealSignBSSWacomSTUPanel1_ErrorDeviceNotConnectedEvent(object sender, EventArgs e) { }

sealSignBSSWacomSTUPanel1.OkButtonClickEvent += new SealSignBSSClientLibrary.SealSignBSSWacomSTUPanel.OkButtonClick(sealSignBSSWacomSTUPanel1_OkButtonClickEvent); sealSignBSSWacomSTUPanel1.CancelButtonClickEvent += new SealSignBSSClientLibrary.SealSignBSSWacomSTUPanel.CancelButtonClick(sealSignBSSWacomSTUPanel1_CancelButtonClickEvent); sealSignBSSWacomSTUPanel1.ErrorCaptureEvent += new SealSignBSSClientLibrary.SealSignBSSWacomSTUPanel.ErrorCaptureEvent(sealSignBSSWacomSTUPanel1_OkButtonClickEvent); sealSignBSSWacomSTUPanel1.ErrorDeviceNotConnectedEvent += new SealSignBSSClientLibrary.SealSignBSSWacomSTUPanel.ErrorDeviceNotConnected(sealSignBSSWacomSTUPanel1_CancelButtonClickEvent);

3.1.3 Imagen de Fondo de Captura en la Tableta El panel de firma sealSignBSSWacomSTUPanel permite establecer una imagen BMP de fondo en la tableta durante la captura de la firma mediante el método SetImage:

FileStream backgroundStream = new FileStream(@"c:\samples\wacom.bmp", FileMode.Open); byte[] backgroundData = new byte[backgroundStream.Length]; backgroundStream.Read(backgroundData, 0, (int)backgroundStream.Length); backgroundStream.Close(); MemoryStream backgroundMemory = new MemoryStream(backgroundData); sealSignBSSWacomSTUPanel1.SetImage(backgroundMemory);

3.1.4 Definición de Botones en la Tableta En el panel de firma sealSignBSSWacomSTUPanel, sobre la imagen de fondo establecida en la tableta se pueden definir dos áreas que actuaran como botones de aceptar y cancelar cuando el usuario pulse sobre ellos con el puntero. Las coordenadas están en píxeles y se refieren a las esquinas del área. Los

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

2015 © Telefonica Digital Identity & Privacy, S.L.U. All Rights Reserved. Página 11 de 19

límites y escalas los establece la resolución de la tableta. Por ejemplo, la STU-520A tiene una resolución de 800 x 480 pixeles:

sealSignBSSWacomSTUPanel1.SetOkButtonArea(504, 27, 619, 65); sealSignBSSWacomSTUPanel1.SetCancelButtonArea(504, 88, 619, 129);

3.1.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:

sealSignBSSWacomSTUPanel1.TransparentSignature = true;

3.1.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:

sealSignBSSWacomSTUPanel1.Start();

3.1.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:

sealSignBSSWacomSTUPanel1.Stop();

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

sealSignBSSWacomSTUPanel1.CleanSignature();

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

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

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;

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

2015 © Telefonica Digital Identity & Privacy, S.L.U. All Rights Reserved. Página 12 de 19

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.1.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 = sealSignBSSWacomSTUPanel1.GetSignature(new Guid(instance), biometricState);

3.1.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); 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.2 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.

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

2015 © Telefonica Digital Identity & Privacy, S.L.U. All Rights Reserved. Página 13 de 19

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 = sealSignBSSWacomSTUPanel1.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.3 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.

3.3.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 = sealSignBSSWacomSTUPanel1.getOfflineSignature(document, out instance);

3.3.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;

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

2015 © Telefonica Digital Identity & Privacy, S.L.U. All Rights Reserved. Página 14 de 19

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();

3.4 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.4.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( "", "",

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

2015 © Telefonica Digital Identity & Privacy, S.L.U. All Rights Reserved. Página 15 de 19

@"demo://c:\samples\sample.pdf", null, null);

3.4.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.4.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.5 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 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.5.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.

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

2015 © Telefonica Digital Identity & Privacy, S.L.U. All Rights Reserved. Página 16 de 19

3.5.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.5.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;

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);

}

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

2015 © Telefonica Digital Identity & Privacy, S.L.U. All Rights Reserved. Página 17 de 19

3.5.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 18: Integración de SealSign BSS en Aplicaciones .NET

2015 © Telefonica Digital Identity & Privacy, S.L.U. All Rights Reserved. Página 18 de 19

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 19: Integración de SealSign BSS en Aplicaciones .NET

2015 © Telefonica Digital Identity & Privacy, S.L.U. All Rights Reserved. Página 19 de 19

La información contenida en el presente documento es propiedad de Telefónica Digital Identity & Privacy, S.L.U. (“TDI&P”) y/o de cualquier otra entidad dentro del Grupo Telefónica o sus licenciantes. TDI&P y/o cualquier compañía del Grupo Telefónica o los licenciantes de TDI&P 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 TDI&P.

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.

TDI&P 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.

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

PUBLICACIÓN:

Junio 2015

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