46
ElevenPaths, innovación radical y disruptiva en seguridad

Referencia de Servicios Web en SealSign BSS

Embed Size (px)

Citation preview

ElevenPaths, innovación radical y disruptiva en seguridad

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

Contenidos Introducción ................................................................................................................... 4

1 Interfaces de Servicios Web de SealSign BSS ................................................................ 5

1.1 Clases Comunes ........................................................................................................................ 5

1.1.1 BiometricSignatureVerification .................................................................................................. 5

1.1.2 BiometricSignatureParameters .................................................................................................. 6

1.1.3 BiometricImageParameters ........................................................................................................ 7

1.1.4 BiometricVerificationParameters ............................................................................................... 8

1.1.5 BiometricSignatureReference .................................................................................................... 9

1.2 Enumeraciones Comunes ....................................................................................................... 10

1.2.1 BiometricSignatureType ........................................................................................................... 10

1.2.2 BiometricSignatureFlags ........................................................................................................... 10

1.2.3 BiometricVerificationFlags ....................................................................................................... 11

1.2.4 BiometricVerificationResult...................................................................................................... 12

1.2.5 BiometricVerificationStatus ..................................................................................................... 12

2 Servicio de Verificación de Firma Biométrica SOAP 1.1 ............................................... 14

2.1 Métodos .................................................................................................................................. 14

2.1.1 Verify ........................................................................................................................................ 14

2.1.2 GetInfo ...................................................................................................................................... 16

2.1.3 GetInfoFromBiometricState ..................................................................................................... 16

3 Servicio de Verificación de Firma Biométrica SOAP 1.2 ............................................... 18

3.1 Clases ...................................................................................................................................... 18

3.1.1 BiometricVerificationRequest .................................................................................................. 18

3.1.2 BiometricVerificationResponse ................................................................................................ 19

3.1.3 BiometricGetInfoRequest ......................................................................................................... 19

3.1.4 BiometricGetInfoFromBiometricStateRequest ........................................................................ 20

3.1.5 BiometricGetInfoResponse ...................................................................................................... 20

3.2 Métodos .................................................................................................................................. 21

3.2.1 Verify ........................................................................................................................................ 21

3.2.2 GetInfo ...................................................................................................................................... 21

3.2.3 GetInfoFromBiometricState ..................................................................................................... 22

Firma Distribuida en Cliente .......................................................................................... 23

3.2.4 Arquitectura de la Firma Distribuida ........................................................................................ 23

3.2.5 Componente cliente de firma (SealSignBSSPanel) ................................................................... 24

3.2.6 Firma Distribuida Offline .......................................................................................................... 24

4 Servicio de Firma Distribuida SOAP 1.1 ....................................................................... 25

4.1 Clases ...................................................................................................................................... 25

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

4.1.1 BiometricSignatureBeginResponseBasic .................................................................................. 25

4.1.2 OfflineBiometricSignature ........................................................................................................ 26

4.1.3 OfflineBiometricSignatureProvider .......................................................................................... 27

4.2 Métodos .................................................................................................................................. 28

4.2.1 BeginSignature ......................................................................................................................... 28

4.2.2 BeginSignatureProvider ............................................................................................................ 30

4.2.3 EndSignature ............................................................................................................................ 31

4.2.4 EndSignatureProvider ............................................................................................................... 31

4.2.5 SyncOfflineSignatures............................................................................................................... 32

4.2.6 SyncOfflineSignaturesProvider ................................................................................................. 33

4.2.7 HearBeat ................................................................................................................................... 33

5 Servicio de Firma Distribuida de Backend SOAP 1.2 .................................................... 34

5.1 Clases ...................................................................................................................................... 34

5.1.1 BiometricSignatureBeginRequest ............................................................................................. 34

5.1.2 BiometricSignatureBeginProviderRequest ............................................................................... 36

5.1.3 BiometricSignatureBeginResponse .......................................................................................... 36

5.1.4 BiometricSignatureEndRequest................................................................................................ 37

5.1.5 BiometricSignatureEndProviderRequest .................................................................................. 37

5.1.6 BiometricSignatureEndResponse ............................................................................................. 38

5.1.7 BiometricSignatureSyncOfflineRequest ................................................................................... 38

5.1.8 BiometricSignaturesSyncOfflineRequest .................................................................................. 40

5.2 Métodos .................................................................................................................................. 40

5.2.1 BeginSignature ......................................................................................................................... 40

5.2.2 BeginSignatureProvider ............................................................................................................ 41

5.2.3 EndSignature ............................................................................................................................ 41

5.2.4 EndSignatureProvider ............................................................................................................... 42

5.2.5 SyncOfflineSignatures............................................................................................................... 42

5.2.6 SyncOfflineSignaturesProvider ................................................................................................. 43

5.2.7 HearBeat ................................................................................................................................... 43

6 Proveedores de Documentos ..................................................................................... 44

6.1 Interfaz IDocumentProvider ................................................................................................... 44

6.2 Registro de Proveedores de Documentos .............................................................................. 44

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

Introducción

SealSign Biometric Signature Services (BSS) es un producto desarrollado por Eleven Paths dirigido a facilitar la integración de la firma manuscrita biométrica en las aplicaciones corporativas.

Existen distintas problemáticas a la hora del uso de la firma electrónica que impiden su adopción en algunos escenarios. Tales problemáticas van desde el desconocimiento y reticencia de los usuarios a la hora de utilizar un certificado digital hasta la imposibilidad de uso de dispositivos de almacenamiento seguros, tales como tarjetas inteligentes, en ciertos terminales móviles.

Para la resolución de aquellos escenarios en los que no es fácilmente adaptable el uso de certificados digitales, SealSign BSS provee la tecnología necesaria para el uso de la firma manuscrita mediante la captura, extracción y reconocimiento de patrones biométricos que aseguren la autenticidad de la firma.

El proceso de captura de firma manuscrita integrado en SealSign BSS permite la captura tanto en PCs (mediante el uso de tabletas digitalizadoras) como el uso de las pantallas táctiles existentes en multitud de dispositivos móviles actuales tales como iPad, iPhone, Windows o equipos con Sistema Operativo Android.

SealSign BSS expone su funcionalidad a través de Servicios Web basados en la tecnología Windows Comunication Framework (WCF). Estos servicios pueden ser invocados aplicaciones implementadas sobre la mayoría de tecnologías del mercado.

Este documento recoge la descripción de dichos servicios para ayudar a la integración de aplicaciones tanto en los procesos de captura como con el servidor de firma biométrica de SealSign.

Para ejemplos de integración de los casos de uso más habituales, se pueden consultar las diversas guías de integración de aplicaciones de SealSign BSS, disponibles para cada una de las tecnologías de desarrollo soportadas.

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

1 Interfaces de Servicios Web de SealSign BSS

Dada la heterogeneidad de tecnologías disponibles en el mercado y con el objetivo de ser accesibles desde la gran mayoría de aplicaciones corporativas, los servicios web de SealSign BSS están accesibles a través de dos interfaces:

Interfaz basado en la especificación SOAP 1.1 (BasicHttpBinding).

Interfaz basado en la especificación SOAP 1.2 y WS-Addressing (WsHttpBinding).

Según la tecnología y las capacidades de la aplicación cliente, se podrá invocar a uno u otro interfaz.

El interfaz SOAP 1.1 expone los siguientes Servicios Web:

Servicio de firma biométrica (BiometricSignatureServiceBasic.svc): proporciona las capacidades de firma distribuida y verificación de firma.

El interfaz SOAP 1.2 expone los siguientes Servicios Web:

Servicio de firma biométrica (BiometricSignatureService.svc): proporciona las capacidades de firma distribuida y verificación de firma.

Los servicios estarán accesibles en el directorio virtual SealSignBSSService. Por ejemplo: http://localhost/sealsignbssservice/biometricsignatureservice.svc.

1.1 Clases Comunes

Las siguientes clases se utilizan como parámetros en los servicios Web independientemente del interfaz que publiquen:

1.1.1 BiometricSignatureVerification El método Verify devuelve un objeto de esta clase como retorno tras el proceso de verificación de la firma de un documento. La clase BiometricSignatureVerification está definida del siguiente modo:

public class BiometricSignatureVerification

{

public BiometricVerificationResult result;

public BiometricSignatureReference[] signatures;

public SignatureVerification dssResult;

}

1.1.1.1 Miembros result

Indica el resultado general del proceso de firma sus posibles valores son:

SignatureFound: Se ha encontrado al menos una firma biométrica en el documento.

SignatureNotFound: No se ha encontrado ninguna firma biométrica en el documento.

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

signatures

Array con la información de validación de cada una de las firmas encontradas en el documento.

dssResult

En el caso de haber firmas electrónicas de apoyo en el documento, contendrá un objeto de la clase SignatureVerification con el resultado de la validación de las firmas

electrónicas. Para una descripción completa del tipo SignatureVerification consultar la guía de Referencia de Servicios Web de SealSign DSS.

1.1.2 BiometricSignatureParameters La clase BiometricSignatureParameters está definida del siguiente modo:

public class BiometricSignatureParameters

{

public BiometricImageParameters imageParameters;

public BiometricImageParameters[] advancedImageParameters;

public string documentPassword;

}

1.1.2.1 Miembros imageParameters

Objeto de la clase BiometricImageParameters. Permite la personalización de algunos parámetros que rigen la inclusión de la imagen de firma biométrica en el documento. Si se especifica un null en este miembro, se aplicarán las configuraciones por defecto realizadas a nivel de servidor. Para más información consultar en el siguiente apartado la descripción de

la clase BiometricImageParameters.

advancedImageParameters

Array de objetos de la clase BiometricImageParameters. Permite la personalización avanzada de algunos parámetros que rigen la inclusión de la imagen de firma biométrica en el documento. Si se define el parámetro anterior (imageParameters) el contenido de advancedImageParameters no se aplicará. Se pueden añadir tantos elementos como sean necesarios.

documentPassword

Permite especificar la contraseña de aquellos documentos que hayan sido protegidos con contraseña y que se utilizará para abrir el fichero a firmar.

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

1.1.3 BiometricImageParameters La clase BiometricImageParameters permite personalizar algunos parámetros que definen la inclusión de la imagen de firma biométrica en un documento. Esta clase está definida del siguiente modo:

public class BiometricImageParameters

{

public string attachmentName;

public bool signatureVisible;

public string imageTokenText;

public int offsetX;

public int offsetY;

public bool autoSize;

public int height;

public int width;

public int rotate;

public bool onAllPages;

public int onPage;

public bool onLastPage;

public int pageOffset;

}

1.1.3.1 Miembros attachmentName

Nombre del adjunto embebido dentro del documento si lo hubiera donde representar la firma o null (Solo para PDF).

signatureVisible

Booleano que indica si la imagen de la firma será visible en el documento resultante de la operación de firma.

imageTokenText

Solo documentos PDF. Se puede especificar en este atributo un bloque de texto (chunk PDF) sobre el que la plataforma colocará la imagen de la firma biométrica. De esta forma, no es necesario indicar cada posición en los parámetros, siendo especialmente útil en documentos complejos. Se tomarán como referencia del tamaño y rotación los especificados en el atributo imageParameters.

offsetX

Permite indicar en pixels el valor de la coordenada X, tomada desde el ángulo inferior izquierdo de la página, en el que aparecerá la imagen de la firma.

offsetY

Permite indicar en pixels el valor de la coordenada Y, tomada desde el ángulo inferior izquierdo de la página, en el que aparecerá la imagen de la firma.

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

autoSize

Booleano que permite indicar si la imagen de firma se redimensionará de manera automática o si se utilizarán los valores de los parámetros height y width.

height

Altura en pixels de la imagen de la firma.

width

Anchura en pixels de la imagen de la firma.

rotate

Permite indicar el ángulo de rotación de la imagen de la firma. Sus posibles valores son 0, 90, 180 o 270.

onAllPages

Indica si la imagen de la firma se debe incluir en todas las páginas del documento.

onPage

Indica el número de página en el que se incluirá la imagen de la firma.

onLastPage

Booleano que indica si el grafo se mostrará en la última página del documento firmado.

pageOffset

Entero que indica el desplazamiento positivo o negativo de la firma, en número de páginas, con respecto a la posición actual.

1.1.4 BiometricVerificationParameters La clase BiometricVerificationParameters representa aquellos parámetros necesarios para realizar la validación de la firma y que no están incluidos dentro de la propia firma.

public class BiometricVerificationParameters

{

public string documentPassword;

}

1.1.4.1 Miembros documentPassword

Permite especificar la contraseña de aquellos documentos que hayan sido protegidos con contraseña y que se utilizará para abrir el fichero a verificar.

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

1.1.5 BiometricSignatureReference Cada objeto de esta clase representa la información que describe una firma biométrica. La clase BiometricSignatureReference está definida del siguiente modo:

public class BiometricSignatureReference

{

public string version;

public string signatureID;

public string signatureAccount;

public string signatureUserName;

public double score;

public BiometricVerificationStatus signatureStatus;

public SignatureProfile signatureProfile;

public BiometricSignatureType signatureType;

public DateTime signingTime;

public TimestampReference timestamp;

}

1.1.5.1 Miembros version

Número de versión del formato de firma utilizado.

signatureID

Valor del campo ID que suministró la aplicación llamadora en el proceso de firma.

signatureAccount

Valor del campo Account que suministró la aplicación llamadora en el proceso de firma.

signatureUserName

Nombre del usuario que realizó la firma.

score

Puntuación obtenida en el proceso de comparación entre la firma del documento y la firma que se está validando.

signatureStatus

Estado de la firma tras el proceso de verificación. Para más información de los posibles valores consultar la descripción del tipo enumerado BiometricVerificationStatus.

signatureProfile

Indica el perfil de la firma biométrica.

signingTime

Especifica la fecha y hora en el que se realizó la firma.

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

timestamps

Array de objetos de tipo TimestampReference con la información correspondiente a los sellos de tiempo incluidos en esta firma. Si la firma no contiene sellos de tiempo este miembro valdrá null. Para una descripción completa del tipo TimestampReference consultar la guía de Referencia de Servicios Web de SealSign DSS.

1.2 Enumeraciones Comunes

Los siguientes tipos enumerados se utilizan como parámetros en los servicios Web independientemente del interfaz que publiquen:

1.2.1 BiometricSignatureType Indica los distintos formatos de almacenamiento de firma soportados por SealSign BSS.

public enum BiometricSignatureType

{

Default = 0,

Signature = 1

}

1.2.1.1 Valores Default

Utilizar el formato de almacenamiento de firma por defecto (Signature).

Signature

La firma se almacena contenida dentro del documento.

1.2.2 BiometricSignatureFlags El tipo enumerado BiometricSignatureFlags se utiliza tanto en las operaciones de firma de documentos como en la de verificación de los mismos.

public enum BiometricSignatureFlags

{

None = 0,

Default = 1,

VerifyIdentity = 2,

IncludeTimestamp = 4,

BiometricImageAsWidgetBackground = 8,

IncludeHashWatermark = 16,

IncludeAttachments = 32,

ExcludeDocumentMetadata = 64,

IncludeIdWatermark = 128,

IncludeAccountWatermark = 256,

XMLBiometricSignatureDetached = 512

}

1.2.2.1 Valores None

No especificar ningún flag de firma.

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

Default

Utilizar los valores por defecto para la firma. Los valores por defecto se compondrán a partir de las opciones marcadas en la herramienta de administración.

VerifyIdentity

Se debe verificar la firma biométrica para comprobar la identidad del firmante.

IncludeTimestamp

Incluir la información de sello de tiempo en la firma.

BiometricImageAsWidgetBackground

Incluir la imagen de la firma biométrica como imagen de fondo del widget de visualización de la firma.

IncludeHashWatermark

Incluir el hash del documento como marca de agua en el widget de visualización de la firma.

IncludeAttachments

Incluir los attachments del portfolio PDF en la firma.

ExcludeDocumentMetadata

No incluir los campos de metadatos de la firma (Id y Account).

IncludeIdWatermark

Incluir el campo Id de la firma como marca de agua.

IncludeAccountWatermark

Incluir el campo Account de la firma como marca de agua.

XMLBiometricSignatureDetached

Guardar la firma biométrica XML de manera detachada.

1.2.3 BiometricVerificationFlags Permite configurar el tipo de verificación de firma que llevará a cabo SealSign BSS.

public enum BiometricVerificationFlags

{

None = 0,

Default = 1,

IncludeDSSInfo = 2

}

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

1.2.3.1 Valores None

No especificar ningún flag de verificación.

Default

Utilizar los valores por defecto para la verificación. Los valores por defecto se compondrán a partir de las opciones marcadas en la herramienta de administración.

IncludeDSSInfo

Se devolverá la información de verificación de las firmas electrónicas de apoyo encontradas en el documento.

1.2.4 BiometricVerificationResult Indica el resultado general del proceso de validación de una firma biométrica SealSign BSS.

public enum BiometricVerificationResult

{

SignatureFound = 0,

SignatureNotFound = 1

}

1.2.4.1 Valores SignatureFound

Se ha encontrado al menos una firma biométrica.

SignatureNotFound

No se ha encontrado ninguna firma biométrica.

1.2.5 BiometricVerificationStatus Especifica el estado de una firma tras su verificación según los siguientes valores:

public enum BiometricVerificationStatus

{

Match = 0,

NoMatch = 1,

SignatureCorrupted = 2,

Failure = 3,

Unknown = 4,

}

1.2.5.1 Valores Match

La firma biométrica corresponde con el usuario especificado.

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

NoMatch

La firma biométrica corresponde no con el usuario especificado.

SignatureCorrupted

La firma actual no es válida, bien porque se modificó la firma o bien porque se modificó el documento.

Failure

Se ha producido un error en el proceso de verificación.

Unknown

Se ha producido un error desconocido en el proceso de verificación.

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

2 Servicio de Verificación de Firma Biométrica SOAP 1.1

El servicio BiometricSignatureServiceBasic.svc de SealSign BSS expone los métodos necesarios para la validación de firmas biométricas a través de un servicio web SOAP 1.1 (basicHttpBinding).

El servicio de verificación de firma expone los métodos Verify, GetInfo y GetInfoFromBiometricState que permiten verificar y obtener la información de cada una de las firmas incluidas en un documento.

En los siguientes apartados, se describen tanto el interfaz de este método así como las clases y tipos relacionados con él.

2.1 Métodos

2.1.1 Verify Realiza la verificación de la/s firma/s contenidas en un documento contra una firma capturada en uno de los dispositivos soportados. Este método se encarga de recibir tanto el documento a validar como las diversas configuraciones a utilizar en el proceso de validación, retornando toda la información de verificación correspondiente a los elementos que constituyen la firma del mismo.

2.1.1.1 Sintaxis

public BiometricSignatureVerification Verify(

SignatureProfile signatureProfile,

BiometricSignatureType biometricSignatureType,

string id,

string account,

BiometricVerificationFlags biometricOptions,

BiometricVerificationParameters biometricParameters,

byte[] biometricState,

byte[] detachedSignature,

byte[] document

);

2.1.1.2 Parámetros de Entrada signatureProfile

Indica el perfil de la firma biométrica que se va a generar. Su valor deberá ser alguno de los perfiles posibles de firma PDF o de firma Office (en caso de documentos XPS).

biometricSignatureType

Tipo de firma biométrica que se validará. Para más información consultar la descripción del tipo enumerado BiometricSignatureType.

id

Campo que se añadirá a la firma biométrica. El valor de este campo lo especificará la aplicación llamadora.

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

account

Campo que se añadirá a la firma biométrica. El valor de este campo lo especificará la aplicación llamadora.

biometricOptions

Recibe uno o más valores de tipo BiometricVerificationFlags que especifican las diferentes opciones de verificación de la firma. Para más información consultar la descripción

del tipo enumerado BiometricVerificationFlags.

biometricParameters

Objeto de tipo BiometricVerificationParameters que añade algunos parámetros necesarios para la validación de algunos tipos de firmas. Este parámetro está reservado para

el futuro, en la actualidad se deberá pasar el valor null.

biometricState

Array de bytes con los datos de la firma biométrica contra la que se validará el documento. Este array de bytes se obtiene capturando una firma biométrica mediante los componentes cliente de las distintas plataformas soportadas por SealSign BSS.

detachedSignature

En caso de tratarse de una firma desasociada, se pasará el array de bytes correspondientes a

dicha firma desasociada. En caso de firma no desasociada, se pasará un null.

document

Array de bytes con el contenido del documento que se desea verificar.

2.1.1.3 Retorno

Devuelve un objeto de la clase BiometricSignatureVerification con toda la información de validación obtenida en el proceso de verificación de la firma o una excepción en caso de producirse algún tipo de error.

2.1.1.4 Comentarios El parámetro signatureProfile se usa para conocer el tipo de validación que se va a realizar en función del tipo de documento. Cuando no se conozca el perfil exacto de la firma, al menos se deberán indicar los perfiles de alto nivel (SignatureProfile.PDF o

SignatureProfile.Office) que le indicarán al validador si el tipo de documento es PDF o XPS.

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

2.1.2 GetInfo Retorna toda la información correspondiente a la/s firma/s incluidas en un documento. A diferencia del método Verify, este método no realiza la validación de las firmas contra una firma capturada sino que simplemente enumera la información contenida en el documento.

2.1.2.1 Sintaxis

public BiometricSignatureVerification GetInfo(

SignatureProfile signatureProfile,

byte[] document

);

2.1.2.2 Parámetros de Entrada signatureProfile

Indica el perfil de la firma biométrica que se va a validar. Su valor deberá ser alguno de los perfiles posibles de firma PDF o de firma Office (en caso de documentos XPS).

document

Array de bytes con el contenido del documento que se desea verificar.

2.1.2.3 Retorno

Devuelve un objeto de la clase BiometricSignatureVerification con toda la información de validación obtenida en el proceso de obtención de información de la firma o una excepción en caso de producirse algún tipo de error.

2.1.2.4 Comentarios

El parámetro signatureProfile se usa para conocer el tipo de validación que se va a realizar en función del tipo de documento. Cuando no se conozca el perfil exacto de la firma, al menos se deberán indicar los perfiles de alto nivel (SignatureProfile.PDF o

SignatureProfile.Office) que le indicarán al validador si el tipo de documento es PDF o XPS.

2.1.3 GetInfoFromBiometricState Retorna toda la información correspondiente a la/s firma/s incluidas en los bytes correspondientes a una firma generada por el componente cliente.

2.1.3.1 Sintaxis

BiometricSignatureVerification GetInfoFromBiometricState(

SignatureProfile signatureProfile,

Guid instance,

byte[] biometricState,

byte[] document

);

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

2.1.3.2 Parámetros de Entrada signatureProfile

Indica el perfil de la firma biométrica que se va a validar. Su valor deberá ser alguno de los perfiles posibles de firma PDF o de firma Office (en caso de documentos XPS).

instance

Identificador de transacción de firma distribuida necesario generado en el cliente. biometricState

Array de bytes que contiene el contexto de firma distribuida generado en el cliente. document

Array de bytes con el contenido del documento que se desea verificar.

2.1.3.3 Retorno Devuelve un objeto de la clase BiometricSignatureVerification con toda la información de validación obtenida en el proceso de obtención de información de la firma o una excepción en caso de producirse algún tipo de error.

2.1.3.4 Comentarios

El parámetro signatureProfile se usa para conocer el tipo de validación que se va a realizar en función del tipo de documento. Cuando no se conozca el perfil exacto de la firma, al menos se deberán indicar los perfiles de alto nivel (SignatureProfile.PDF o

SignatureProfile.Office) que le indicarán al validador si el tipo de documento es PDF o XPS.

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

3 Servicio de Verificación de Firma Biométrica SOAP 1.2

El servicio BiometricSignatureServiceBasic.svc de SealSign BSS expone los métodos necesarios para la validación de firmas biométricas a través de un servicio web SOAP 1.2 (wsHttpBinding).

El servicio de verificación de firma expone los métodos Verify, GetInfo y GetInfoFromBiometricState que permiten verificar y obtener la información de cada una de las firmas incluidas en un documento.

3.1 Clases

3.1.1 BiometricVerificationRequest Parámetro de entrada del método Verify.

public class BiometricVerificationRequest

{

public SignatureProfile signatureProfile;

public BiometricSignatureType biometricSignatureType;

public string id;

public string account;

public BiometricVerificationFlags biometricOptions;

public BiometricVerificationParameters biometricParameters;

public byte[] biometricState;

public byte[] detachedSignature;

public Stream document;

}

3.1.1.1 Atributos signatureProfile

Indica el perfil de la firma biométrica que se va a validar. Su valor deberá ser alguno de los perfiles posibles de firma PDF o de firma Office (en caso de documentos XPS).

biometricSignatureType

Tipo de firma biométrica que se validará. Para más información consultar la descripción del tipo enumerado BiometricSignatureType.

id

Campo que se añadirá a la firma biométrica. El valor de este campo lo especificará la aplicación llamadora.

account

Campo que se añadirá a la firma biométrica. El valor de este campo lo especificará la aplicación llamadora.

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

biometricOptions

Recibe uno o más valores de tipo BiometricVerificationFlags que especifican las diferentes opciones de verificación de la firma. Para más información consultar la descripción del tipo enumerado BiometricVerificationFlags.

biometricParameters

Objeto de tipo BiometricVerificationParameters que añade algunos parámetros necesarios para la validación de algunos tipos de firmas. Este parámetro está reservado para el futuro, en la actualidad se deberá pasar el valor null.

biometricState

Array de bytes con los datos de la firma biométrica contra la que se validará el documento. Este array de bytes se obtiene capturando una firma biométrica mediante los componentes cliente de las distintas plataformas soportadas por SealSign BSS.

detachedSignature

En caso de tratarse de una firma desasociada, se pasará el array de bytes correspondientes a

dicha firma desasociada. En caso de firma no desasociada, se pasará un null.

document

Stream con el contenido del documento que se desea verificar.

3.1.2 BiometricVerificationResponse Parámetro de salida del método Verify.

public class BiometricVerificationResponse

{

public BiometricSignatureVerification signatureVerification;

}

3.1.2.1 Atributos signatureVerification

Objeto de la clase BiometricSignatureVerification con toda la información de validación obtenida en el proceso de verificación de la firma.

3.1.3 BiometricGetInfoRequest Parámetro de entrada del método GetInfo.

public class BiometricGetInfoRequest

{

public SignatureProfile signatureProfile;

public Stream document;

}

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

3.1.3.1 Atributos signatureProfile

Indica el perfil de la firma biométrica que se va a validar. Su valor deberá ser alguno de los perfiles posibles de firma PDF o de firma Office (en caso de documentos XPS).

document

Stream con el contenido del documento que se desea verificar.

3.1.4 BiometricGetInfoFromBiometricStateRequest Parámetro de entrada del método GetInfoFromBiometricState.

public class BiometricGetInfoFromBiometricStateRequest

{

public SignatureProfile signatureProfile;

public Guid instance;

public byte[] biometricState;

public Stream document;

}

3.1.4.1 Atributos signatureProfile

Indica el perfil de la firma biométrica que se va a validar. Su valor deberá ser alguno de los perfiles posibles de firma PDF o de firma Office (en caso de documentos XPS).

instance

Identificador de transacción de firma distribuida necesario generado en el cliente. biometricState

Array de bytes que contiene el contexto de firma distribuida generado en el cliente. document

Stream con el contenido del documento que se desea verificar.

3.1.5 BiometricGetInfoResponse Parámetro de salida del método GetInfo.

public class BiometricGetInfoResponse

{

public BiometricSignatureVerification signatureVerification;

}

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

3.1.5.1 Atributos signatureVerification

Objeto de la clase BiometricSignatureVerification con toda la información de validación obtenida en el proceso de verificación de la firma.

3.2 Métodos

3.2.1 Verify Realiza la verificación de la/s firma/s contenidas en un documento contra una firma capturada en uno de los dispositivos soportados. Este método se encarga de recibir tanto el documento a validar como las diversas configuraciones a utilizar en el proceso de validación, retornando toda la información de verificación correspondiente a los elementos que constituyen la firma del mismo.

3.2.1.1 Sintaxis

public BiometricVerificationResponse Verify(

BiometricVerificationRequest request

);

3.2.1.2 Parámetros de Entrada request

Objeto de la clase BiometricVerificationRequest.

3.2.1.3 Retorno

Devuelve un objeto de la clase BiometricSignatureVerification con toda la información de validación obtenida en el proceso de verificación de la firma o una excepción en caso de producirse algún tipo de error.

3.2.1.4 Comentarios

El parámetro signatureProfile se usa para conocer el tipo de validación que se va a realizar en función del tipo de documento. Cuando no se conozca el perfil exacto de la firma, al menos se deberán indicar los perfiles de alto nivel (SignatureProfile.PDF o

SignatureProfile.Office) que le indicarán al validador si el tipo de documento es PDF o XPS.

3.2.2 GetInfo Retorna toda la información correspondiente a la/s firma/s incluidas en un documento. A diferencia del método Verify, este método no realiza la validación de las firmas contra una firma capturada sino que simplemente enumera la información contenida en el documento.

3.2.2.1 Sintaxis

public BiometricGetInfoResponse GetInfo(

BiometricGetInfoRequest request

);

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

3.2.2.2 Parámetros de Entrada request

Objeto de la clase BiometricGetInfoRequest.

3.2.2.3 Retorno Devuelve un objeto de la clase BiometricGetInfoResponse con toda la información de validación obtenida en el proceso de obtención de información de la firma o una excepción en caso de producirse algún tipo de error.

3.2.2.4 Comentarios El parámetro signatureProfile se usa para conocer el tipo de validación que se va a realizar en función del tipo de documento. Cuando no se conozca el perfil exacto de la firma, al menos se deberán indicar los perfiles de alto nivel (SignatureProfile.PDF o

SignatureProfile.Office) que le indicarán al validador si el tipo de documento es PDF o XPS.

3.2.3 GetInfoFromBiometricState Retorna toda la información correspondiente a la/s firma/s incluidas en los bytes correspondientes a una firma generada por el componente cliente.

3.2.3.1 Sintaxis

BiometricGetInfoResponse GetInfoFromBiometricState(

BiometricGetInfoFromBiometricStateRequest request

)

3.2.3.2 Parámetros de Entrada request

Objeto de la clase BiometricGetInfoFromBiometricStateRequest.

3.2.3.3 Retorno

Devuelve un objeto de la clase BiometricGetInfoResponse con toda la información de validación obtenida en el proceso de obtención de información de la firma o una excepción en caso de producirse algún tipo de error.

3.2.3.4 Comentarios El parámetro signatureProfile se usa para conocer el tipo de validación que se va a realizar en función del tipo de documento. Cuando no se conozca el perfil exacto de la firma, al menos se deberán indicar los perfiles de alto nivel (SignatureProfile.PDF o

SignatureProfile.Office) que le indicarán al validador si el tipo de documento es PDF o XPS.

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

Firma Distribuida en Cliente

Dado que la firma biométrica requiere de la existencia de un dispositivo de captura de firma manuscrita, podría pensarse que la totalidad del proceso ha de realizarse en el equipo cliente. Esta arquitectura basada únicamente equipos cliente tiene diversos inconvenientes como la capacidad de proceso y la heterogeneidad de los mismos.

Una de las ventajas que proporciona SealSign BSS es la firma distribuida, que permite resolver el escenario planteado de una forma muy flexible y sencilla. La firma distribuida consiste en realizar todo el proceso de firma en el lado del servidor salvo la captura de los parámetros de firma biométrica que se produce en el lado del cliente, donde está el dispositivo de captura. De esta forma se unifica y optimiza la obtención de elementos externos y se reduce drásticamente la información intercambiada.

Este proceso se realiza de forma segura en SealSign BSS de forma que se asegura la integridad de los datos en dos niveles: nivel de aplicación cifrando la información intercambiada y a nivel de infraestructura, permitiendo utilizar las tecnologías subyacentes de comunicaciones (SSL, autenticación, etc.).

Una ventaja adicional de este modelo es la simplicidad del cliente que permite de forma sencilla integrar multitud de tecnologías heterogéneas, como distintos sistemas operativos (Windows, Linux, etc.) y distintos dispositivos (PCs, móviles, tabletas, etc.).

En este apartado se muestra como integrar esta funcionalidad en aplicaciones y tecnologías de distinta naturaleza.

3.2.4 Arquitectura de la Firma Distribuida La funcionalidad de firma distribuida en SealSign BSS es proporcionada principalmente por tres componentes y es equivalente a la de firma electrónica distribuida de SealSign DSS:

Entidades Externas SealSign BSS Server Aplicación Cliente

Clientes Windows SealSignBSSPanel

Backend BiometricSignatureServiceService

DocumentProvider

MOSS DocumentProvider

Entidades Certificadoras

SAP

Clientes IOS SealSignBSSPanelView

Clientes Android SealSignBSSPanel

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

1. Servicio de backend de SealSign BSS (BiometricSignatureService.svc o BiometricSignatureServiceBasic.svc para entornos SOAP 1.1): Este servicio es el responsable de orquestar la comunicación entre el cliente y el repositorio donde se encuentra el documento original así como de llevar a cabo el proceso de firma sobre el documento solicitado.

2. Componente cliente de firma específico de cada plataforma: Este componente se encarga de componer los datos biométricos de la firma manuscrita que serán incorporados al documento que está siendo firmado. En la plataforma SealSign BSS se incluyen versiones del componente para aplicaciones .NET, Java, Android e iOS.

3.2.5 Componente cliente de firma (SealSignBSSPanel) En SealSign BSS el tratamiento de la firma biométrica en cliente se debe realizar a través del componente cliente de firma (SealSignBSSPanel), que se encarga de comprobar el hash recibido, cifrarlo y prepararlo de forma segura para su retorno a la capa de servicios de firma distribuida.

3.2.6 Firma Distribuida Offline En algunos escenarios no es posible tener una conexión con la plataforma servidora debido a falta de conectividad. Para estos escenarios es posible utilizar la funcionalidad de firma offline o sin conexión. El proceso se iniciará en el dispositivo cliente, obteniendo una instancia de la firma biométrica temporal que será necesario sincronizar con la plataforma servidora una vez haya conectividad. Dicha instancia se asocia, al igual que en el proceso normal, de forma única con el documento siendo firmado y únicamente podrá ser interpretada por la plataforma servidora gracias a algoritmos criptográficos de clave simétrica y asimétrica. Asegurando de esta manera la integridad de la operación.

Una vez se sincronice la instancia de la firma con la plataforma servidora, se comprobará la integridad del documento y de la instancia de la firma, completando el proceso en caso de éxito.

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

4 Servicio de Firma Distribuida SOAP 1.1

El servicio BiometricSignatureServiceBasic.svc de SealSign BSS expone los métodos necesarios para implementar firmas de documentos distribuidas a través de un servicio web SOAP 1.1 (basicHttpBinding).

Los métodos expuestos son los siguientes:

BeginSignature: Indica al servicio el comienzo de una firma distribuida. El servidor procesa el documento hasta la generación del resumen que se retorna al cliente dentro del contexto de firma para ser cifrado.

EndSignature: El cliente actualiza la firma en servidor con el resumen del documento cifrado.

BeginSignatureProvider: Indica al servicio el comienzo de una firma distribuida con document provider. El servidor obtiene el documento y los parámetros de la firma mediante la llamada a un document provider, a partir de ahí, procesa el documento hasta la generación del resumen que se retorna al cliente dentro del contexto de firma para ser cifrado.

EndSignatureProvider: El cliente actualiza la firma en servidor con el resumen del documento cifrado y el servidor invoca a un document provider para que almacene el documento final.

SyncOfflineSignatures: Permite realizar la sincronización en un documento de una o varias firmas capturadas de manera desconectada.

SyncOfflineSignaturesProvider: Permite realizar la sincronización en un documento de una o varias firmas capturadas de manera desconectada. El documento se obtiene y se almacena usando un document provider.

HeartBeat: Método que permite comprobar el estado de salud del servicio.

En los siguientes apartados, se describen tanto el interfaz de cada uno de estos métodos así como las clases y tipos relacionados con los mismos.

4.1 Clases

4.1.1 BiometricSignatureBeginResponseBasic Tipo retornado por el método BeginSignature.

public class BiometricSignatureBeginResponseBasic

{

public Guid instance;

public byte[] biometricState;

}

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

4.1.1.1 Atributos instance

Identificador de transacción de firma distribuida necesario para completar la operación biometricState

Array de bytes que contiene el contexto de firma distribuida. Para procesar el contexto es necesario hacer uso de la clase AsyncStateManager.

4.1.2 OfflineBiometricSignature Tipo utilizado para la petición de sincronización de varias firmas offline.

public class OfflineBiometricSignature

{

public BiometricSignatureType biometricSignatureType;

public string id;

public string account;

public BiometricSignatureFlags biometricOptions;

public BiometricSignatureParameters biometricParameters;

public SignatureFlags options;

public SignatureParameters parameters;

public Guid instance;

public byte[] offlineBiometricState;

}

4.1.2.1 Atributos biometricSignatureType

Tipo de firma biométrica que se validará. Para más información consultar la descripción del tipo enumerado BiometricSignatureType.

id

Campo que se añadirá a la firma biométrica. El valor de este campo lo especificará la aplicación llamadora.

account

Campo que se añadirá a la firma biométrica. El valor de este campo lo especificará la aplicación llamadora.

biometricOptions

Recibe uno o más valores de tipo BiometricVerificationFlags que especifican las diferentes opciones de verificación de la firma. Para más información consultar la descripción del tipo enumerado BiometricVerificationFlags.

biometricParameters

Objeto de tipo BiometricSignatureParameters que añade algunos parámetros necesarios para la inclusión de la firma biométrica.

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

options

Recibe uno o varios valores de tipo SignatureFlags que permiten configurar algunos parámetros de comportamiento en el proceso de firma de documentos. Para más información sobre los valores soportados consultar la descripción del tipo enumerado SignatureFlags en la guía de referencia de servicios web de SealSign DSS.

parameters

Objeto de tipo SignatureParameters que añade algunos parámetros extra necesarios para la realización de algunos tipos de firmas. Este valor puede ser null en caso de no ser necesario configurar ninguno de los parámetros expuestos. Para más información consultar la descripción de la clase SignatureParameters en la guía de referencia de servicios web de SealSign DSS.

instance

Identificador de la transacción de firma retornado por el componente cliente.

offlineBiometricState

Array de bytes del estado de firma distribuida retornado por el componente cliente.

4.1.3 OfflineBiometricSignatureProvider Tipo utilizado para la petición de sincronización de varias firmas offline usando document provider.

public class OfflineBiometricSignature

{

public string id;

public string account;

public string uri;

public string providerParameter;

public Guid instance;

public byte[] offlineBiometricState;

}

4.1.3.1 Atributos id

Campo que se añadirá a la firma biométrica. El valor de este campo lo especificará la aplicación llamadora.

account

Campo que se añadirá a la firma biométrica. El valor de este campo lo especificará la aplicación llamadora.

uri

Identificador URI del documento en el repositorio.

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

providerParameter

Cadena de texto que permite el paso de información entre el cliente y el proveedor de documentos para personalizar su comportamiento.

instance

Identificador de la transacción de firma retornado por el componente cliente.

offlineBiometricState

Array de bytes del estado de firma distribuida retornado por el componente cliente.

4.2 Métodos

4.2.1 BeginSignature Inicia un proceso de firma distribuida.

4.2.1.1 Sintaxis

public BiometricSignatureBeginResponseBasic BeginSignature(

SignatureProfile signatureProfile,

BiometricSignatureType biometricSignatureType,

string id,

string account,

BiometricSignatureFlags biometricOptions,

BiometricSignatureParameters biometricParameters,

SignatureFlags options,

SignatureParameters parameters,

byte[] detachedSignature,

byte[] signingDocument

);

4.2.1.2 Parámetros de Entrada signatureProfile

Indica el perfil de la firma biométrica que se va a validar. Su valor deberá ser alguno de los perfiles posibles de firma PDF o de firma Office (en caso de documentos XPS).

biometricSignatureType

Tipo de firma biométrica que se validará. Para más información consultar la descripción del tipo enumerado BiometricSignatureType.

id

Campo que se añadirá a la firma biométrica. El valor de este campo lo especificará la aplicación llamadora.

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

account

Campo que se añadirá a la firma biométrica. El valor de este campo lo especificará la aplicación llamadora.

biometricOptions

Recibe uno o más valores de tipo BiometricVerificationFlags que especifican las diferentes opciones de verificación de la firma. Para más información consultar la descripción

del tipo enumerado BiometricVerificationFlags.

biometricParameters

Objeto de tipo BiometricSignatureParameters que añade algunos parámetros necesarios para la inclusión de la firma biométrica.

options

Recibe uno o varios valores de tipo SignatureFlags que permiten configurar algunos parámetros de comportamiento en el proceso de firma de documentos. Para más información sobre los valores soportados consultar la descripción del tipo enumerado

SignatureFlags en la guía de referencia de servicios web de SealSign DSS.

parameters

Objeto de tipo SignatureParameters que añade algunos parámetros extra necesarios

para la realización de algunos tipos de firmas. Este valor puede ser null en caso de no ser necesario configurar ninguno de los parámetros expuestos. Para más información consultar

la descripción de la clase SignatureParameters en la guía de referencia de servicios web de SealSign DSS.

detachedSignature

En caso de tratarse de una firma desasociada, este parámetro retornará el array de bytes

correspondientes a dicha firma. En caso de firma no desasociada retornará null.

signingDocument

Array de bytes con el contenido del documento que se desea firmar.

4.2.1.3 Retorno Devuelve un objeto de la clase BiometricSignatureBeginResponseBasic con el identificador de la transacción de firma y un array de bytes con el contexto de firma distribuida para ser tratado en el cliente mediante la clase AsynStateManager.

4.2.1.4 Comentarios A la hora de indicar un perfil de firma en el campo signatureProfile es necesario tener en cuenta que sólo están soportados los documentos en formato PDF y XPS, por tanto los únicos valores admitidos son los de PDF u Office.

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

Los parámetros options y parameters se refieren a la configuración deseada para la firma electrónica de apoyo. Ver guía de administración para más información sobre la firma electrónica de apoyo.

4.2.2 BeginSignatureProvider Inicia un proceso de firma distribuida con document provider.

4.2.2.1 Sintaxis

BiometricSignatureBeginResponseBasic BeginSignatureProvider(

string id,

string account,

string uri,

string providerParameter,

byte[] document

);

4.2.2.2 Parámetros de Entrada id

Campo que se añadirá a la firma biométrica. El valor de este campo lo especificará la aplicación llamadora.

account

Campo que se añadirá a la firma biométrica. El valor de este campo lo especificará la aplicación llamadora.

uri

Identificador URI del documento en el repositorio.

providerParameter

Cadena de texto que permite el paso de información entre el cliente y el proveedor de documentos para personalizar su comportamiento.

document

Parámetro opcional con el array de bytes del documento a firmar.

4.2.2.3 Retorno Devuelve un objeto de la clase BiometricSignatureBeginResponseBasic con el identificador de la transacción de firma y un array de bytes con el contexto de firma distribuida para ser tratado en el cliente mediante la clase AsynStateManager.

4.2.2.4 Comentarios El array de bytes del documento a firmar es opcional. Si se pasa, este se utiliza junto con las configuraciones de firma retornadas por el document provider. En caso contrario, es el propio document provider, asociado a la uri, el que deberá acceder al repositorio documental adecuado para retornar el array de bytes del documento.

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

4.2.3 EndSignature Completa un proceso de firma distribuida.

4.2.3.1 Sintaxis

public byte[] EndSignature(

Guid instance,

byte[]biometricState

);

4.2.3.2 Parámetros de Entrada instance

Identificador de la transacción de firma retornado por el método BeginSignature.

biometricState

Array de bytes del estado de firma distribuida después de haber sido procesado por el componente SealSignBSSPanel.

4.2.3.3 Retorno Devuelve un array de bytes con el documento firmado según los parámetros de firma especificados en la llamada a la función o una excepción en caso de producirse algún tipo de error.

4.2.4 EndSignatureProvider Completa un proceso de firma distribuida con document provider.

4.2.4.1 Sintaxis

public byte[] EndSignatureProvider(

Guid instance,

byte[] biometricState,

string uri,

string providerParameter,

bool returnSignedDocument

);

4.2.4.2 Parámetros de Entrada instance

Identificador de la transacción de firma retornado por los métodos BeginSignature o BeginSignatureProvider.

biometricState

Array de bytes del estado de firma distribuida después de haber sido procesado por el componente SealSignBSSPanel.

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

uri

Identificador URI del documento en el repositorio.

providerParameter

Cadena de texto que permite el paso de información entre el cliente y el proveedor de documentos para personalizar su comportamiento.

returnSignedDocument

Booleano que indica si el método debe retornar el documento firmado.

4.2.4.3 Retorno Si el parámetro returnSignedDocument es true, devuelve un array de bytes con el documento firmado o un null en caso contrario.

4.2.4.4 Comentarios El método invocará siempre al document provider asociado a la uri para que realice el almacenado del documento resultante. Si además se requiere que el documento firmado llegue a la aplicación llamadora, se puede poner a true el parámetro returnSignedDocument.

4.2.5 SyncOfflineSignatures Sincroniza múltiples firmas realizadas sin conexión para obtener el documento final.

4.2.5.1 Sintaxis

byte[] SyncOfflineSignatures(

SignatureProfile signatureProfile,

OfflineBiometricSignature[] offlineSignatures,

byte[] detachedSignature,

byte[] signingDocument

);

4.2.5.2 Parámetros de Entrada signatureProfile

Indica el perfil de la firma biométrica que se va a validar. Su valor deberá ser alguno de los perfiles posibles de firma PDF o de firma Office (en caso de documentos XPS).

offlineSignatures

Array de objetos OfflineBiometricSignature con los datos de cada firma offline.

detachedSignature

En caso de tratarse de una firma desasociada, este parámetro retornará el array de bytes correspondientes a dicha firma. En caso de firma no desasociada retornará null.

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

signingDocument

Array de bytes con el contenido del documento que se desea firmar.

4.2.5.3 Retorno Devuelve un array de bytes con el documento firmado según los parámetros de firma especificados en la llamada a la función o una excepción en caso de producirse algún tipo de error

4.2.6 SyncOfflineSignaturesProvider Sincroniza múltiples firmas realizadas sin conexión usando un document provider para obtener el documento y las configuraciones de firma.

4.2.6.1 Sintaxis

byte[] SyncOfflineSignaturesProvider( OfflineBiometricSignatureProvider[] offlineSignatures,

byte[] signingDocument,

bool returnSignedDocument

);

4.2.6.2 Parámetros de Entrada offlineSignatures

Array de objetos OfflineBiometricSignature con los datos de cada firma offline.

signingDocument

Array de bytes con el contenido del documento que se desea firmar.

returnSignedDocument

Booleano que indica si el método debe retornar el documento firmado.

4.2.6.3 Retorno Si el parámetro returnSignedDocument es true, devuelve un array de bytes con el documento firmado o un null en caso contrario.

4.2.7 HearBeat Este método permite realizar una verificación del estado del servicio web.

4.2.7.1 Sintaxis

public void HeartBeat();

4.2.7.2 Comentarios Realiza las comprobaciones adecuadas para verificar si el servicio web está funcionando correctamente y retorna una excepción en caso contrario.

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

5 Servicio de Firma Distribuida de Backend SOAP 1.2

El servicio BiometricSignatureService.svc de SealSign BSS expone los métodos necesarios para la generación de firmas de documentos distribuidas a través de un servicio SOAP 1.2 (wsHttpBinding).

Los métodos expuestos son los siguientes:

BeginSignature: Indica al servicio el comienzo de una firma distribuida. El servidor procesa el documento hasta la generación del resumen que se retorna al cliente dentro del contexto de firma para ser cifrado.

EndSignature: El cliente actualiza la firma en servidor con el resumen del documento cifrado.

BeginSignatureProvider: Indica al servicio el comienzo de una firma distribuida con document provider. El servidor obtiene el documento y los parámetros de la firma mediante la llamada a un document provider, a partir de ahí, procesa el documento hasta la generación del resumen que se retorna al cliente dentro del contexto de firma para ser cifrado.

EndSignatureProvider: El cliente actualiza la firma en servidor con el resumen del documento cifrado y el servidor invoca a un document provider para que almacene el documento final.

SyncOfflineSignatures: Permite realizar la sincronización en un documento de una o varias firmas capturadas de manera desconectada.

SyncOfflineSignaturesProvider: Permite realizar la sincronización en un documento de una o varias firmas capturadas de manera desconectada. El documento se obtiene y se almacena usando un document provider.

HeartBeat: Método que permite comprobar el estado de salud del servicio.

En los siguientes apartados, se describen tanto el interfaz de cada uno de estos métodos así como las clases y tipos relacionados con los mismos.

5.1 Clases

5.1.1 BiometricSignatureBeginRequest Parámetro de entrada del método BeginSignature.

public class BiometricSignatureBeginRequest

{

public SignatureProfile signatureProfile;

public BiometricSignatureType biometricSignatureType;

public string id;

public string account;

public BiometricSignatureFlags biometricOptions;

public BiometricSignatureParameters biometricParameters;

public SignatureFlags options;

public SignatureParameters parameters;

public byte[] detachedSignature;

public Stream signingDocument;

}

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

5.1.1.1 Atributos signatureProfile

Indica el perfil de la firma biométrica que se va a validar. Su valor deberá ser alguno de los perfiles posibles de firma PDF o de firma Office (en caso de documentos XPS).

biometricSignatureType

Tipo de firma biométrica que se validará. Para más información consultar la descripción del

tipo enumerado BiometricSignatureType.

id

Campo que se añadirá a la firma biométrica. El valor de este campo lo especificará la aplicación llamadora.

account

Campo que se añadirá a la firma biométrica. El valor de este campo lo especificará la aplicación llamadora.

biometricOptions

Recibe uno o más valores de tipo BiometricVerificationFlags que especifican las diferentes opciones de verificación de la firma. Para más información consultar la descripción

del tipo enumerado BiometricVerificationFlags.

biometricParameters

Objeto de tipo BiometricSignatureParameters que añade algunos parámetros necesarios para la inclusión de la firma biométrica.

options

Recibe uno o varios valores de tipo SignatureFlags que permiten configurar algunos parámetros de comportamiento en el proceso de firma de documentos. Para más información sobre los valores soportados consultar la descripción del tipo enumerado SignatureFlags en la guía de referencia de servicios web de SealSign DSS.

parameters

Objeto de tipo SignatureParameters que añade algunos parámetros extra necesarios

para la realización de algunos tipos de firmas. Este valor puede ser null en caso de no ser necesario configurar ninguno de los parámetros expuestos. Para más información consultar la descripción de la clase SignatureParameters en la guía de referencia de servicios web de SealSign DSS.

detachedSignature

En caso de tratarse de una firma desasociada, este parámetro retornará el array de bytes correspondientes a dicha firma. En caso de firma no desasociada retornará null.

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

signingDocument

Array de bytes con el contenido del documento que se desea firmar.

5.1.2 BiometricSignatureBeginProviderRequest Parámetro de entrada del método BeginSignatureProvider.

public class BiometricSignatureBeginProviderRequest

{

public string id;

public string account;

public string uri;

public string providerParameter;

public bool signingDocumentSpecified;

public Stream signingDocument;

}

5.1.2.1 Atributos id

Campo que se añadirá a la firma biométrica. El valor de este campo lo especificará la aplicación llamadora.

account

Campo que se añadirá a la firma biométrica. El valor de este campo lo especificará la aplicación llamadora.

uri

Identificador URI del documento en el repositorio.

providerParameter

Cadena de texto que permite el paso de información entre el cliente y el proveedor de documentos para personalizar su comportamiento.

signingDocumentSpecified

Booleano que indica si en el campo signingDocument se ha cargado el documento a firmar.

signingDocument

Array de bytes con el contenido del documento que se desea firmar.

5.1.3 BiometricSignatureBeginResponse Parámetro de salida de los métodos BeginSignature y BeginSignatureProvider.

public class BiometricSignatureBeginResponse

{

public Guid instance;

public byte[] biometricState;

}

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

5.1.3.1 Atributos instance

Identificador de transacción de firma distribuida necesario para completar la operación biometricState

Array de bytes que contiene el contexto de firma distribuida.

5.1.4 BiometricSignatureEndRequest Parámetro de salida de los métodos EndSignature.

public class BiometricSignatureEndRequest

{

public Guid instance;

public byte[] biometricState;

}

5.1.4.1 Atributos instance

Identificador de transacción de firma distribuida necesario para completar la operación biometricState

Array de bytes que contiene el contexto de firma distribuida previamente procesado mediante el panel SealSignBSSPanel.

5.1.5 BiometricSignatureEndProviderRequest Parámetro de salida de los métodos EndSignatureProvider.

public class BiometricSignatureEndRequest

{

public Guid instance;

public byte[] biometricState;

public string uri;

public string providerParameter;

public bool returnSignedDocument;

}

5.1.5.1 Atributos instance

Identificador de transacción de firma distribuida necesario para completar la operación biometricState

Array de bytes que contiene el contexto de firma distribuida previamente procesado mediante el panel SealSignBSSPanel.

uri

Identificador URI del documento en el repositorio.

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

providerParameter

Cadena de texto que permite el paso de información entre el cliente y el proveedor de documentos para personalizar su comportamiento.

returnSignedDocument

Booleano que indica si el método debe retornar el documento firmado.

5.1.6 BiometricSignatureEndResponse Parámetro de salida de los métodos EndSignature y EndSignatureProvider.

public class BiometricSignatureEndResponse

{

public Stream signedDocument;

}

5.1.6.1 Atributos signedDocument

Stream con el documento final conteniendo la firma biométrica.

5.1.7 BiometricSignatureSyncOfflineRequest Parámetro de entrada del método SyncOfflineSignature.

public class BiometricSignatureSyncOfflineRequest

{

public SignatureProfile signatureProfile;

public BiometricSignatureType biometricSignatureType;

public string id;

public string account;

public BiometricSignatureFlags biometricOptions;

public BiometricSignatureParameters biometricParameters;

public SignatureFlags options;

public SignatureParameters parameters;

public byte[] detachedSignature;

public Stream signingDocument;

public Guid instance;

public byte[] offlineBiometricState;

}

5.1.7.1 Atributos signatureProfile

Indica el perfil de la firma biométrica que se va a validar. Su valor deberá ser alguno de los perfiles posibles de firma PDF o de firma Office (en caso de documentos XPS).

biometricSignatureType

Tipo de firma biométrica que se validará. Para más información consultar la descripción del tipo enumerado BiometricSignatureType.

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

id

Campo que se añadirá a la firma biométrica. El valor de este campo lo especificará la aplicación llamadora.

account

Campo que se añadirá a la firma biométrica. El valor de este campo lo especificará la aplicación llamadora.

biometricOptions

Recibe uno o más valores de tipo BiometricVerificationFlags que especifican las diferentes opciones de verificación de la firma. Para más información consultar la descripción del tipo enumerado BiometricVerificationFlags.

biometricParameters

Objeto de tipo BiometricSignatureParameters que añade algunos parámetros necesarios para la inclusión de la firma biométrica.

options

Recibe uno o varios valores de tipo SignatureFlags que permiten configurar algunos parámetros de comportamiento en el proceso de firma de documentos. Para más información sobre los valores soportados consultar la descripción del tipo enumerado

SignatureFlags en la guía de referencia de servicios web de SealSign DSS.

parameters

Objeto de tipo SignatureParameters que añade algunos parámetros extra necesarios para la realización de algunos tipos de firmas. Este valor puede ser null en caso de no ser necesario configurar ninguno de los parámetros expuestos. Para más información consultar

la descripción de la clase SignatureParameters en la guía de referencia de servicios web de SealSign DSS.

detachedSignature

En caso de tratarse de una firma desasociada, este parámetro retornará el array de bytes

correspondientes a dicha firma. En caso de firma no desasociada retornará null.

signingDocument

Array de bytes con el contenido del documento que se desea firmar.

instance

Identificador de la transacción temporal de firma retornado por el panel en cliente.

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

offlineBiometricState

Array de bytes del estado de firma distribuida retornada por el panel en cliente.

5.1.8 BiometricSignaturesSyncOfflineRequest Parámetro de entrada del método SyncOfflineSignatures.

public class BiometricSignaturesSyncOfflineRequest

{

public SignatureProfile signatureProfile;

public OfflineBiometricSignature[] offlineSignatures;

public byte[] detachedSignature;

public Stream signingDocument;

}

5.1.8.1 Atributos signatureProfile

Indica el perfil de la firma biométrica que se va a validar. Su valor deberá ser alguno de los perfiles posibles de firma PDF o de firma Office (en caso de documentos XPS).

offlineSignatures

Array de objetos OfflineBiometricSignature conteniendo los datos de cada firma offline.

detachedSignature

En caso de tratarse de una firma desasociada, este parámetro retornará el array de bytes

correspondientes a dicha firma. En caso de firma no desasociada retornará null.

signingDocument

Array de bytes con el contenido del documento que se desea firmar.

5.2 Métodos

5.2.1 BeginSignature Inicia un proceso de firma distribuida.

5.2.1.1 Sintaxis

public BiometricSignatureBeginResponse BeginSignature(

BiometricSignatureBeginRequest request

);

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

5.2.1.2 Parámetros de Entrada request

Instancia del tipo BiometricSignatureBeginRequest con los datos de inicio de transacción de firma.

5.2.1.3 Retorno Devuelve un objeto de la clase BiometricSignatureBeginResponse con el identificador de la transacción de firma y un array de bytes con el contexto de firma distribuida

para ser tratado en el cliente mediante la clase AsynStateManager.

5.2.2 BeginSignatureProvider Inicia un proceso de firma distribuida con document provider.

5.2.2.1 Sintaxis

public BiometricSignatureBeginResponse BeginSignature(

BiometricSignatureBeginProviderRequest request

);

5.2.2.2 Parámetros de Entrada request

Instancia del tipo BiometricSignatureBeginProviderRequest con los datos de inicio de transacción de firma.

5.2.2.3 Retorno Devuelve un objeto de la clase BiometricSignatureBeginResponse con el identificador de la transacción de firma y un array de bytes con el contexto de firma distribuida

para ser tratado en el cliente mediante la clase AsynStateManager.

5.2.2.4 Comentarios El array de bytes del documento a firmar es opcional. Si se pasa, este se utiliza junto con las configuraciones de firma retornadas por el document provider. En caso contrario, es el propio document provider, asociado a la uri, el que deberá acceder al repositorio documental adecuado para retornar el array de bytes del documento.

5.2.3 EndSignature Completa un proceso de firma distribuida.

5.2.3.1 Sintaxis

BiometricSignatureResponse EndSignature(

BiometricSignatureEndRequest request

);

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

5.2.3.2 Parámetros de Entrada request

Instancia del tipo BiometricSignatureEndRequest con los datos necesarios para completar la transacción de firma.

5.2.3.3 Retorno Este método retorna un objeto de la clase BiometricSignatureResponse o una excepción en caso de producirse algún tipo de error.

5.2.4 EndSignatureProvider Completa un proceso de firma distribuida con document provider.

5.2.4.1 Sintaxis

BiometricSignatureEndResponse EndSignature(

BiometricSignatureEndProviderRequest request

);

5.2.4.2 Parámetros de Entrada request

Instancia del tipo BiometricSignatureEndProviderRequest con los datos necesarios para completar la transacción de firma.

5.2.4.3 Retorno

Este método retorna un objeto de la clase BiometricSignatureEndResponse o una excepción en caso de producirse algún tipo de error.

5.2.4.4 Comentarios El método invocará siempre al document provider asociado a la uri para que realice el almacenado del documento resultante. Si además se requiere que el documento firmado llegue a la aplicación llamadora, se puede poner a true el parámetro returnSignedDocument.

5.2.5 SyncOfflineSignatures Sincroniza múltiples firmas realizadas sin conexión para obtener el documento final.

5.2.5.1 Sintaxis

public BiometricSignatureEndResponse SyncOfflineSignatures(

BiometricSignaturesSyncOfflineRequest request

);

5.2.5.2 Parámetros de Entrada request

Instancia del tipo BiometricSignaturesSyncOfflineRequest con los datos de sincronización de la transacción de firma.

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

5.2.5.3 Retorno Este método retorna un objeto de la clase BiometricSignatureEndResponse o una excepción en caso de producirse algún tipo de error.

5.2.6 SyncOfflineSignaturesProvider Sincroniza múltiples firmas realizadas sin conexión usando un document provider para obtener el documento y las configuraciones de firma.

5.2.6.1 Sintaxis

BiometricSignatureEndResponse SyncOfflineSignaturesProvider(

BiometricSignaturesSyncOfflineProviderRequest request

);

5.2.6.2 Parámetros de Entrada request

Instancia del tipo BiometricSignaturesSyncOfflineProviderRequest con los datos de sincronización de la transacción de firma.

5.2.6.3 Retorno Este método retorna un objeto de la clase BiometricSignatureEndResponse o una excepción en caso de producirse algún tipo de error.

5.2.7 HearBeat Este método permite realizar una verificación del estado del servicio web.

5.2.7.1 Sintaxis

public void HeartBeat();

5.2.7.2 Comentarios Realiza las comprobaciones adecuadas para verificar si el servicio web está funcionando correctamente y retorna una excepción en caso contrario.

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

6 Proveedores de Documentos

El servicio de frontend de SealSign BSS permite integrar en los procesos de firma biométrica documentos residentes en diversos repositorios de almacenamiento de forma transparente a los clientes. El acceso a los repositorios se resuelve mediante un sistema de componentes instalables o plug-in que pueden ser incorporados al servicio de forma sencilla.

Estos proveedores de documentos pueden ser desarrollados tanto por Eleven Paths como por cualquier otra empresa para facilitar la integración de repositorios. Los componentes deben desarrollarse en .NET y deben cumplir el interfaz IDocumentProvider.

6.1 Interfaz IDocumentProvider

El interfaz de acceso a repositorios de documentos consta únicamente de dos métodos que resuelven la obtención y el almacenamiento del documento en el repositorio. El método GetSigningDocument, además del Stream del documento retorna los parámetros necesarios de firma:

using SealSignDSSTypes;

using SealSignBSSTypes;

interface IDocumentProvider

{

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

void SetSignedDocument(string uri,

string providerParameter,

Stream signedDocument);

}

El documento se identifica a lo largo de todo el proceso mediante un identificador URI, que está compuesto a su vez por un identificador de protocolo que permite a SealSign BSS decidir el plug-in asociado, y el identificador de documento especifico del repositorio (puede incluir información adicional de acceso).

Por ejemplo, el identificador “moss://http://server/lista/documento” indica el proveedor asociado al protocolo “moss” y el documento dentro del repositorio accesible mediante “http://server/lista/documento”.

6.2 Registro de Proveedores de Documentos

Para registrar un proveedor de documentos en el sistema, basta con agregar a la sección <DocumentProviders> del fichero documentproviders.config de la aplicación web SealSignDSSService,

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

una clave con el identificador del protocolo y la declaración del assembly que lo implementa. Dicho assembly puede residir tanto en la ruta de búsqueda por defecto como en la GAC. Por ejemplo:

<DocumentProviders> <add key="test" value="SealSignBiometricTestProvider, Version=1.0.0.0,

Culture=neutral, PublicKeyToken=7292d37ec3154539"/>

</DocumentProviders>

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

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:

Abril 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