53
ElevenPaths, innovación radical y disruptiva en seguridad

Referencia de Servicios Web en SealSign DSS

Embed Size (px)

Citation preview

Page 1: Referencia de Servicios Web en SealSign DSS

ElevenPaths, innovación radical y disruptiva en seguridad

Page 2: Referencia de Servicios Web en SealSign DSS

Página 2 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

Contenidos

1 Introducción ............................................................................................................... 5

2 Interfaces de Servicios Web de SealSign DSS ............................................................... 6

2.1 Clases Comunes ........................................................................................................................ 6

2.1.1 CertificateReference ................................................................................................................... 6

2.1.2 SignatureVerification .................................................................................................................. 7

2.1.3 SignatureParameters .................................................................................................................. 8

2.1.4 PDFSignatureParameters ........................................................................................................... 9

2.1.5 VerificationParameters............................................................................................................. 10

2.1.6 SignatureReference .................................................................................................................. 11

2.1.7 TimestampReference ............................................................................................................... 12

2.1.8 CertificateInfo ........................................................................................................................... 12

2.1.9 NameInfo .................................................................................................................................. 13

2.1.10 AlternativeNameInfo ................................................................................................................ 14

2.1.11 FieldInfo .................................................................................................................................... 14

2.2 Enumeraciones Comunes ....................................................................................................... 15

2.2.1 SignatureProfile ........................................................................................................................ 15

2.2.2 SignatureType ........................................................................................................................... 15

2.2.3 HashAlgorithm .......................................................................................................................... 16

2.2.4 SignatureFlags .......................................................................................................................... 16

2.2.5 BusinessSignatureProfile .......................................................................................................... 17

2.2.6 VerificationFlags ....................................................................................................................... 17

2.2.7 VerificationStatus ..................................................................................................................... 18

2.2.8 KeyUsages................................................................................................................................. 19

2.2.9 ExtendedKeyUsages ................................................................................................................. 19

3 Servicio de Validación y Análisis Sintáctico de Certificados ......................................... 21

3.1 Métodos .................................................................................................................................. 21

3.1.1 Validate .................................................................................................................................... 21

3.1.2 Parse ......................................................................................................................................... 22

4 Servicio de Firma y Verificación SOAP 1.1 ................................................................... 23

4.1 Métodos .................................................................................................................................. 23

4.1.1 GetCertificateReferences ......................................................................................................... 23

4.1.2 Sign ........................................................................................................................................... 24

4.1.3 SignProvider ............................................................................................................................. 25

4.1.4 BusinessSign ............................................................................................................................. 26

4.1.5 Verify ........................................................................................................................................ 27

4.1.6 HearBeat ................................................................................................................................... 28

Page 3: Referencia de Servicios Web en SealSign DSS

Página 3 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

5 Servicio de Firma y Verificación SOAP 1.2 ................................................................... 29

5.1 Clases ...................................................................................................................................... 29

5.1.1 SignatureRequest ..................................................................................................................... 29

5.1.2 SignatureResponse ................................................................................................................... 30

5.1.3 SignatureProviderRequest ........................................................................................................ 30

5.1.4 SignatureResponse ................................................................................................................... 31

5.1.5 BusinessSignatureRequest ....................................................................................................... 31

5.1.6 VerificationRequest .................................................................................................................. 31

5.1.7 VerificationResponse ................................................................................................................ 32

5.2 Métodos .................................................................................................................................. 32

5.2.1 GetCertificateReferences ......................................................................................................... 32

5.2.2 Sign ........................................................................................................................................... 33

5.2.3 SignProvider ............................................................................................................................. 34

5.2.4 BusinessSign ............................................................................................................................. 34

5.2.5 Verify ........................................................................................................................................ 35

5.2.6 HearBeat ................................................................................................................................... 36

6 Servicio de Timestamp SOAP 1.1 ................................................................................ 37

6.1 Métodos .................................................................................................................................. 37

6.1.1 AddArchiveTimestamp ............................................................................................................. 37

7 Servicio de Timestamp SOAP 1.2 ................................................................................ 38

7.1 Clases ...................................................................................................................................... 38

7.1.1 ArchiveTimestampRequest ...................................................................................................... 38

7.1.2 TimestampResponse ................................................................................................................ 38

7.2 Métodos .................................................................................................................................. 39

7.2.1 AddArchiveTimestamp ............................................................................................................. 39

8 Firma Distribuida en Cliente ....................................................................................... 40

8.1 Arquitectura de la Firma Distribuida ...................................................................................... 40

8.2 Componente cliente de cifrado (AsyncStateManager) .......................................................... 41

9 Servicio de Firma Distribuida SOAP 1.1 ....................................................................... 42

9.1 Clases ...................................................................................................................................... 42

9.1.1 DistributedSignatureBeginResponseBasic ................................................................................ 42

9.2 Métodos .................................................................................................................................. 42

9.2.1 BeginSignature ......................................................................................................................... 42

9.2.2 BeginSignatureProvider ............................................................................................................ 44

9.2.3 EndSignature ............................................................................................................................ 44

9.2.4 EndSignatureProvider ............................................................................................................... 45

9.2.5 HearBeat ................................................................................................................................... 45

Page 4: Referencia de Servicios Web en SealSign DSS

Página 4 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

10 Servicio de Firma Distribuida SOAP 1.2 ...................................................................... 46

10.1 Clases ...................................................................................................................................... 46

10.1.1 DistributedSignatureBeginRequest .......................................................................................... 46

10.1.2 DistributedSignatureBeginProviderRequest............................................................................. 47

10.1.3 DistributedSignatureBeginResponse ........................................................................................ 47

10.1.4 DistributedSignatureEndRequest ............................................................................................. 48

10.1.5 DistributedSignatureEndProviderRequest ............................................................................... 48

10.2 Métodos .................................................................................................................................. 48

10.2.1 BeginSignature ......................................................................................................................... 48

10.2.2 BeginSignatureProvider ............................................................................................................ 49

10.2.3 EndSignature ............................................................................................................................ 49

10.2.4 EndSignatureProvider ............................................................................................................... 50

10.2.5 HearBeat ................................................................................................................................... 50

11 Proveedores de Documentos..................................................................................... 51

11.1 Interfaz IDocumentProvider ................................................................................................... 51

11.2 Registro de Proveedores de Documentos .............................................................................. 51

12 Recursos ................................................................................................................... 52

Page 5: Referencia de Servicios Web en SealSign DSS

Página 5 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

1 Introducción

SealSign DSS es un producto desarrollado por ElevenPaths, dirigido a facilitar la integración de la firma electrónica en las aplicaciones corporativas. SealSign DSS 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.

Este documento no pretende ser un manual sobre los aspectos concretos de la firma electrónica sino un manual de referencia técnica, orientado al desarrollador, que recoge la descripción de dichos servicios para ayudar a la integración de aplicaciones con el servidor de firma de SealSign DSS.

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 DSS, disponibles para cada una de las tecnologías de desarrollo soportadas.

Page 6: Referencia de Servicios Web en SealSign DSS

Página 6 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

2 Interfaces de Servicios Web de SealSign DSS

Dada la heterogeneidad de las 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 DSS 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 validación de certificados (CertificateServiceBasic.svc): permite realizar operaciones de consulta de revocación de certificados.

Servicio de firma (SignatureServiceBasic.svc): proporciona las capacidades de firma y verificación de firma.

Servicio de sello de tiempo (TimestampServiceBasic.svc): proporciona las capacidades de sellado de tiempo.

Servicio de firma distribuida (DistributedSignatureServiceBasic.svc): proporciona las capacidades de firma distribuida entre la aplicación cliente y el servidor de SealSign.

El interfaz SOAP 1.2 expone los siguientes Servicios Web:

Servicio de firma (SignatureService.svc): proporciona las capacidades de firma y verificación de firma.

Servicio de sello de tiempo (TimestampService.svc): proporciona las capacidades de sellado de tiempo.

Servicio de firma distribuida (DistributedSignatureService.svc): proporciona las capacidades de firma distribuida entre la aplicación cliente y el servidor de SealSign.

Los servicios estarán accesibles en el directorio virtual SealSignDSSService. Por ejemplo: http://localhost/sealsigndssservice/signatureservice.svc.

2.1 Clases Comunes

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

2.1.1 CertificateReference

Cada objeto de esta clase representa la información asociada a un certificado almacenado en el servidor de SealSign.

La clase CertificateReference está definida del siguiente modo:

public class CertificateReference

{

public int id;

public string issuer;

public string subject;

public string serial;

Page 7: Referencia de Servicios Web en SealSign DSS

Página 7 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

public DateTime validFrom;

public DateTime validTo;

public string owner;

public bool passwordRequired;

public bool passwordSealSignRequired;

public string contactInfo;

public byte[] encoded;

}

Miembros

id: Identificador del certificado en el servidor de SealSign. Este valor es el que se pasará como parámetro de entrada al método de firma para la selección del certificado.

issuer: Cadena de caracteres con el nombre común del emisor del certificado.

subject: Cadena de caracteres con el nombre común del campo asunto del certificado.

serial: Cadena de caracteres con el número de serie del certificado.

validFrom: Fecha de inicio de validez del certificado.

validTo: Fecha de fin de validez del certificado.

owner: Cadena de caracteres con el propietario del certificado especificado en el servidor de SealSign.

passwordRequired: Este valor indica se requiere una contraseña para el uso de las claves privadas del certificado.

passwordSealSignRequired: A la hora de almacenar certificados en el servidor de SealSign, es posible especificar una contraseña que será requerida para poder usarlo. Este valor indica si será necesario suministrar esta contraseña para el certificado referenciado.

contactInfo: Información de contacto del propietario del certificado.

encoded: Certificado codificado DER.

2.1.2 SignatureVerification

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 SignatureVerification está definida del siguiente modo:

public class SignatureVerification

{

public VerificationResult result;

public SignatureReference[] signatures;

}

Miembros

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

o Valid: Todas las firmas encontradas en el documento son válidas.

o IncompleteValidation: Al menos una firma no se ha podido validar por la falta de algún parámetro o algún certificado. Para obtener más información sobre cuál ha sido el problema se deberá recorrer el array signatures y comprobar el valor del miembro signatureStatus.

o Invalid: Al menos una firma no es correcta. Para obtener más información sobre cuál ha sido el problema se deberá recorrer el array signatures y comprobar el valor del miembro signatureStatus.

Page 8: Referencia de Servicios Web en SealSign DSS

Página 8 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

signatures: Array con la información de validación de cada una de las firmas encontradas en el documento. El array tendrá tantos elementos como co-firmas haya en este nivel y al menos un elemento si hay una única firma.

2.1.3 SignatureParameters

La clase SignatureParameters está definida del siguiente modo:

public class SignatureParameters

{

public string reason;

public string city;

public string state;

public string postalCode;

public string country;

public string signerRole;

public string policyIdentifier;

public string policyDigest;

public string policyCMSQualifierURI;

public string reference;

public PDFSignatureParameters pdfParameters;

public int timestampServerId;

public int timestampBackupServerId;

public string header;

public string signerCaption;

public string signerInfo;

public string algorithmCaption;

public string algorithmInfo;

public string documentPassword;

}

Miembros

reason: Cadena de texto que permite indicar el motivo por el que se realiza la firma.

city: Cadena de texto que permite especificar la ciudad donde se realiza la firma.

state: Cadena de texto que permite especificar el estado donde se realiza la firma.

postalCode: Cadena de texto que permite especificar el código postal donde se realiza la firma.

country: Cadena de texto que permite especificar el país donde se realiza la firma.

signerRole: Cadena de texto que permite especificar el rol del firmante.

policyIdentifier: Cadena de texto que permite especificar el identificador de la política que se aplica a la firma.

policyDigest: Cadena de texto que permite especificar el resumen de la política que se aplica a la firma.

policyCMSQualifierURI: Cadena de texto con la URI de la política aplicada en las firmas CMS.

reference: Referencia dentro del documento XML sobre la que se quiere aplicar la firma.

pdfParameters: Objeto de la clase PDFSignatureParameters que permite la personalización de algunos parámetros de firma de documentos PDF. Si se especifica un null en este miembro, se aplicarán las configuraciones realizadas a nivel de servidor. Para más información consultar la documentación de la clase PDFSignatureParameters.

timestampServerId: Identificador del servidor de timestamp que se usará para las operaciones que requieran sellos de tiempo.

Page 9: Referencia de Servicios Web en SealSign DSS

Página 9 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

timestampBackupServerId: Identificador del servidor de backup de timestamp que se usará para las operaciones que requieran sellos de tiempo cuando el servidor principal (identificado por el campo timestampServerId) retorne algún error.

header: Cadena que permite especificar el texto de la cabecera del visualizador de la firma en documentos PDF.

signerCaption: Cadena que permite especificar el texto del título del firmante del documento.

signerInfo: Cadena que permite especificar información del firmante.

algorithmCaption: Cadena que permite especificar el texto del título del algoritmo usado en la firma.

algorithmInfo: Cadena que permite especificar información del algoritmo usado en la firma.

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.

2.1.4 PDFSignatureParameters

La clase PDFSignatureParameters permite personalizar algunos parámetros tanto de la firma como de la verificación de documentos PDF. Esta clase está definida del siguiente modo:

public class PDFSignatureParameters

{

public string PDFPassword;

public string PDFSignatureFieldName;

public bool PDFSignatureVisible;

public byte[] PDFSignatureBackground;

public bool PDFSignatureBackgroundStretch;

public int PDFSignatureBackgroundWidth;

public int PDFSignatureBackgroundHeight;

public bool PDFSignatureWidgetAutoPos;

public int PDFSignatureWidgetOffsetX;

public int PDFSignatureWidgetOffsetY;

public bool PDFSignatureWidgetAutoSize;

public int PDFSignatureWidgetHeight;

public int PDFSignatureWidgetWidth;

public int PDFSignatureWidgetRotate;

public bool PDFSignatureWidgetOnAllPages;

public int PDFSignatureWidgetOnPage;

public bool PDFSignatureFilterOnlyDocSignatures;

public bool PDFSignatureWidgetHideText;

public bool PDFSignatureWidgetOnLastPage;

public int PDFSignatureWidgetPageOffset;

public string PDFSignatureWidgetImageTokenText;

}

Miembros

PDFPassword Reservado para el futuro.

PDFSignatureFieldName Permite especificar el nombre de un campo del documento PDF en el que se guardará la firma.

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

PDFSignatureBackground Array de bytes de la imagen de fondo que se incluirá en el widget de firma. El formato debe ser JPG. Por defecto se ajustará dentro del tamaño del widget conservando su proporción.

Page 10: Referencia de Servicios Web en SealSign DSS

Página 10 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

PDFSignatureBackgroundStretch Booleano que indica si la imagen de fondo se ajustará automáticamente al tamaño del widget

PDFSignatureBackgroundWidth Ancho de la imagen original especificada en PDFSignatureBackground o ancho de la imagen original que se quiere recortar.

PDFSignatureBackgroundHeight Altura de la imagen original especificada en PDFSignatureBackground o altura de la imagen original que se quiere recortar.

PDFSignatureWidgetAutoPos Booleano que permite indicar si el widget de firma se posicionará de manera automática o si se utilizarán los valores de los parámetros PDFSignatureWidgetOffsetX y PDFSignatureWidgetOffsetY. Si se habilita la posición automática, el widget aparecerá en la esquina superior derecha de la página.

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

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

PDFSignatureWidgetAutoSize Booleano que permite indicar si el widget de firma se redimensionará de manera automática o si se utilizarán los valores de los parámetros PDFSignatureWidgetHeight y PDFSignatureWidgetWidth.

PDFSignatureWidgetHeight Altura en pixels del widget de firma.

PDFSignatureWidgetWidth Anchura en pixels del widget de firma.

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

PDFSignatureWidgetOnAllPages Indica si el widget de firma se debe incluir en todas las páginas del documento.

PDFSignatureWidgetOnPage Indica el número de página en el que se incluirá el widget de firma.

PDFSignatureFilterOnlyDocSignatures En la verificación de la firma indica si solamente se validarán las firmas de tipo documento o cualquier otra firma incluida en el PDF.

PDFSignatureWidgetHideText Booleano que indica si el widget ocultará el texto automático de descripción del firmante.

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

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

PDFSignatureWidgetImageTokenText Cadena de caracteres que indica el chunk de texto a buscar dentro del documento con respecto al cual se establecerá la posición del widget de firma.

2.1.5 VerificationParameters

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

En la actualidad, la clase VerificationParameters solo contiene el atributo signingCertificate. Este valor solo es necesario en aquellos tipos de firma en las que el certificado con el que se firmó no se encuentre embebido dentro de la firma del documento.

Page 11: Referencia de Servicios Web en SealSign DSS

Página 11 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

2.1.6 SignatureReference

Cada objeto de esta clase representa la información de verificación correspondiente a una firma encontrada en un documento. La clase SignatureReference está definida del siguiente modo:

public class SignatureReference

{

public string signatureID;

public VerificationStatus signatureStatus;

public SignatureProfile signatureProfile;

public SignatureFlags signatureFlags;

public SignatureType signatureType;

public byte[] signatureCertificate;

public DateTime signingTime;

public SignatureReference[] counterSignatures;

public TimestampReference[] timestamps;

public TimestampReference[] validationTimestamps;

}

Miembros

signatureID: Identificador de la firma dentro del documento.

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 VerificationStatus.

signatureProfile: Indica el perfil que cumple la firma actual, incluso si es un perfil de firma avanzado. Para más información de los posibles valores consultar la descripción del tipo enumerado SignatureProfile.

signatureFlags: Contiene algunos flags con información avanzada de la firma. De los valores posibles, tras la verificación de un documento, este campo puede contener uno o varios de los siguientes valores: CMSAdESExplicitPolicy, CMSAdESXType2, XMLAdESExplicitPolicy, XMLAdESXType2, PDFAdESIncludeRevocationInfo, PDFAdESIncludeTimestamp. Para más información de los posibles valores consultar la descripción del tipo enumerado SignatureFlags.

signatureType: Indica el formato de almacenamiento de la firma dentro del documento. Su valor puede ser Enveloped, Enveloping o Detached según el documento contenga a la firma, la firma contenga al documento o la firma y el documento se almacenen de manera separada respectivamente.

signatureCertificate: Contiene el certificado con el que se realizó la firma.

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

counterSignatures: Si la firma contiene contrafirmas, contendrá un array de objetos de esta misma clase con la información correspondiente a cada una de las co-firmas existentes en este nivel. En caso de no existir contrafirmas, este miembro valdrá null.

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.

validationTimestamps: Para los perfiles de firma avanzados CAdES_X, CAdES_XL (tipos 1 y 2), CAdES_A, XAdES_X, XAdES_XL (tipos 1 y 2) y XAdES_A se define un tipo especial de sello de tiempo denominado “Validation Timestamp”. Este miembro contendrá un array de objetos de tipo TimestampReference con la información correspondiente a este tipo de sellos de tiempo.

Page 12: Referencia de Servicios Web en SealSign DSS

Página 12 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

2.1.7 TimestampReference

Cada objeto de esta clase representa la información de verificación correspondiente a cada sello de tiempo encontrado en una firma. La clase TimestampReference está definida del siguiente modo:

public class TimestampReference

{

public bool timestampSuitable;

public TimestampType timestampType;

public DateTime timestampTime;

public SignatureReference[] timestampSignatures;

}

Miembros

timestampSuitable: Booleano que indica si el sello de tiempo coincide con el objeto sellado.

timestampType: Indica el tipo de sello de tiempo.

timestampTime: Indica la fecha y la hora en la que se llevó a cabo el sello de tiempo.

timestampSignatures: Array de objetos de la clase SignatureReference con la información de las firmas incluidas en el sello de tiempo. Este objeto solo se crea si se especificó el valor IncludeTimestampInfo en el parámetro options del método Verify.

2.1.8 CertificateInfo

Cada objeto de esta clase representa la información contenida dentro de un certificado x509. La clase CertificateInfo está definida del siguiente modo:

public class CertificateInfo

{

public string algorithm;

public NameInfo issuer;

public NameInfo subject;

public string serialNumber;

public DateTime validFrom;

public DateTime validTo;

public KeyUsages keyUsage;

public ExtendedKeyUsages extendedKeyUsage;

public AlternativeNameInfo[] subjectAlternativeName;

public FieldInfo[] extensions;

}

Miembros

algorithm: Cadena de caracteres que recoge el algoritmo con el que se firmó el certificado.

issuer: Objeto de la clase NameInfo con la información específica del emisor del certificado.

subject: Objeto de la clase NameInfo con la información específica del asunto del certificado.

algorithm: Cadena de caracteres que recoge el número de serie asignado al certificado.

validFrom: Indica la fecha de inicio de validez del certificado.

validTo: Indica la fecha de fin de validez del certificado.

keyUsage: Campo enumerado de tipo KeyUsages. Contendrá uno o varios valores (flags) con los distintos usos asignados al certificado.

extendedKeyUsage: Campo enumerado de tipo ExtendedKeyUsages. Contendrá uno o varios valores (flags) con los distintos usos extendidos asignados al certificado.

Page 13: Referencia de Servicios Web en SealSign DSS

Página 13 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

subjectAlternativeName: Array de objetos de la clase AlternativeNameInfo. Contendrá un elemento por cada uno de los valores incluidos en el campo nombre alternativo del sujeto del certificado.

extensions: Array de objetos de la clase FieldInfo. Contendrá un elemento por cada una de las extensiones incluidas en el certificado.

2.1.9 NameInfo

Cada objeto de esta clase representa la información contenida dentro de un campo tipo nombre (emisor o asunto) de un certificado x509. La clase NameInfo está definida del siguiente modo:

public class NameInfo

{

public string Name;

public string CommonName;

public string Country;

public string EMailAddress;

public string Locality;

public string Organization;

public string OrganizationUnit;

public string StateOrProvince;

public string SerialNumber;

public string DomainComponent;

public string GivenName;

public string Initials;

public string StreetAddress;

public string SurName;

public string Title;

public FieldInfo[] RDN;

}

Miembros

Name: Cadena de caracteres con el valor del nombre en cuestión.

CommonName: Cadena de caracteres con el valor del campo nombre común.

Country: Cadena de caracteres con el valor del campo país.

EMailAddress: Cadena de caracteres con el valor del campo dirección de correo.

Locality: Cadena de caracteres con el valor del campo localidad.

Organization: Cadena de caracteres con el valor del campo organización.

OrganizationUnit: Cadena de caracteres con el valor del campo unidad organizativa.

StateOrProvince: Cadena de caracteres con el valor del campo estado o provincia.

SerialNumber: Cadena de caracteres con el valor del campo número de serie (del emisor o del asunto).

DomainComponent: Cadena de caracteres con el valor del campo o campos “DC”.

GivenName: Cadena de caracteres con el valor del campo GivenName.

Initials: Cadena de caracteres con el valor del campo iniciales.

StreetAddress: Cadena de caracteres con el valor del campo dirección.

SurName: Cadena de caracteres con el valor del campo SurName.

Title: Cadena de caracteres con el valor del campo título.

Page 14: Referencia de Servicios Web en SealSign DSS

Página 14 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

RDN: Array de objetos de la clase FieldInfo. Contendrá un elemento por cada una de los elementos contenidos dentro del campo asunto o emisor del certificado. En este array estarán todos los valores, tanto los correspondientes al resto de campos de la estructura NameInfo como aquellos específicos que no hayan sido incluidos en la estructura.

2.1.10 AlternativeNameInfo

Cada objeto de esta clase representa la información contenida dentro de un campo tipo nombre alternativo de un certificado x509. La clase AlternativeNameInfo está definida del siguiente modo:

public class AlternativeNameInfo

{

public FieldInfo[] DirectoryNames;

public string DNSName;

public string IpAddress;

public string RegisteredID;

public string RFC822Name;

public string UniformResourceIdentifier;

public FieldInfo OtherName;

}

Miembros

DirectoryNames: Contendrá el valor del nombre alternativo si este es de tipo DirectoryName.

DNSName: Contendrá el valor del nombre alternativo si este es de tipo DNSName.

IpAddress: Contendrá el valor del nombre alternativo si este es de tipo IpAddress.

RegisteredID: Contendrá el valor del nombre alternativo si este es de tipo RegisteredID.

RFC822Name: Contendrá el valor del nombre alternativo si este es de tipo RFC822Name.

UniformResourceIdentifier: Contendrá el valor del nombre alternativo si este es de tipo URI.

OtherName: Contendrá el valor del nombre alternativo si no es de ninguno de los tipos anteriores.

2.1.11 FieldInfo

Cada objeto de esta clase representa la información contenida dentro de un campo o extensión de un certificado x509. La clase FieldInfo está definida del siguiente modo:

public class FieldInfo

{

public string OID;

public string FriendlyName;

public string Value;

public byte[] RawData;

}

Miembros

OID: Contendrá el OID del campo en cuestión en formato cadena de caracteres.

FriendlyName: Si el campo es un campo conocido, contendrá el nombre del mismo en formato cadena de caracteres. El valor de este campo estará localizado según el idioma del sistema. Si el campo no es conocido, contendrá una cadena vacía.

Value: Si el campo es un campo con un formato conocido por el sistema, contendrá el valor del mismo formateado a cadena de caracteres. Si el campo no es conocido, contendrá una cadena vacía.

RawData: Valor del campo en formato array de bytes, tal y como se encuentra en el certificado.

Page 15: Referencia de Servicios Web en SealSign DSS

Página 15 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

2.2 Enumeraciones Comunes

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

2.2.1 SignatureProfile

Indica los distintos perfiles de firma que puede manejar SealSign DSS.

public enum SignatureProfile

{

Default = 0,

CMS,

CAdESBES,

CAdEST,

CAdESC,

CAdESX,

CAdESXL,

CAdESA,

XMLDigSig,

XAdESBES,

XAdEST,

XAdESC,

XAdESX,

XAdESXL,

XAdESA,

PDF,

PAdESBasic,

PAdESBES,

PAdESLTV,

PAdESXML,

Office

}

2.2.2 SignatureType

Indica los distintos formatos de almacenamiento de firma soportados por SealSign DSS.

public enum SignatureType

{

Default = 0,

Enveloped,

Enveloping,

Detached,

DetachedInternal

}

Valores

Default: Utiliza el formato de almacenamiento de firma por defecto (Enveloped).

Enveloped: La firma se almacena contenida dentro del documento.

Enveloping: La firma se almacena de manera que contiene el documento en su interior.

Detached: La firma se almacena separada del documento.

Page 16: Referencia de Servicios Web en SealSign DSS

Página 16 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

2.2.3 HashAlgorithm

Indica los distintos algoritmos de generación de hash soportados por SealSign DSS.

public enum HashAlgorithm

{

Default = 0,

RIPEMD160,

MD5,

SHA1,

SHA256,

SHA384,

SHA512,

SSL3

}

2.2.4 SignatureFlags

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

public enum SignatureFlags

{

None = 0,

Default = 1,

ValidateChain = 2,

CheckRevocationStatus = 4,

XMLAddXPathRemoveSignatureTransform = 8,

XMLAdESIncludeSignerRole = 16,

XMLAdESExplicitPolicy = 32,

XMLAdESXType2 = 64,

CMSAdESExplicitPolicy = 128,

CMSAdESXType2 = 256,

PDFAdESIncludeTimestamp = 512,

PDFAdESIncludeRevocationInfo = 1024,

PDFAdESExplicitPolicy = 2048,

IncludeLocation = 4096,

XMLAdESVersion122 = 8192,

XMLAdESIncludeKeyValue = 16384,

XMLAdESVersion132 = 32768,

PDFAdESUseParametersInWidget = 65536,

XMLAdESPrettySignature = 131072,

PDFAdESHideTimestampInWidget = 262144,

XMLAdExcludeCertFromSignedProperties = 524288

}

Valores

None: No especifica ningún flag de firma.

Default: Utiliza 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.

ValidateChain: Valida cadena de certificados antes de firmar.

CheckRevocationStatus: Comprueba el estado de revocación antes de realizar la firma.

XMLAddXPathRemoveSignatureTransform: Aplica la transformación de eliminación de firma de XPath antes de firmar. Este flag permite firmar únicamente el contenido del documento sin incluir otras firmas realizadas previamente.

XMLAdESIncludeSignerRole: Incluye el rol del firmador en la firma XAdES.

XMLAdESExplicitPolicy: Incluye la política de firma de manera explícita en la firma XAdES.

Page 17: Referencia de Servicios Web en SealSign DSS

Página 17 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

XMLAdESXType2: Realiza una firma XAdES-X o XAdES-XL de tipo 2.

CMSAdESExplicitPolicy: Incluye la política de firma de manera explícita en la firma CAdES.

CMSAdESXType2: Realiza una firma CAdES-X o CAdES-XL de tipo 2.

PDFAdESIncludeTimestamp: Incluye la información de sello de tiempo en la firma tipo PAdES.

PDFAdESIncludeRevocationInfo: Incluye la información de revocación en la firma tipo PAdES.

PDFAdESIncludeRevocationInfo: Incluye la política de firma de manera explícita en la firma tipo PAdES.

IncludeLocation: Incluye información de la localización de la firma.

XMLAdESVersion122: Firma en formato XAdES version 1.2.2.

XMLAdESIncludeKeyValue: Incluye la seccion KeyValue en la firma XAdES.

XMLAdESVersion132: Firma en formato XAdES version 1.3.2.

PDFAdESUseParametersInWidget: Incluye los parámetros Header, SignerCaption, SignerInfo, AlgorithmCaption y AlgorithmInfo en el visualizador de la firma.

XMLAdESPrettySignature: Indenta los nodos xml de firma electrónica dentro del documento xml resultante.

PDFAdESHideTimestampInWidget: Oculta la fecha y la hora de la firma en el visualizador.

XMLAdExcludeCertFromSignedProperties: Permite excluir el nodo opcional con la información del certificado de firma contenido dentro del nodo de propiedades firmadas.

2.2.5 BusinessSignatureProfile

Indica los distintos perfiles de firma de negocio soportados por SealSign DSS.

public enum SignatureType

{

Default = 0,

FacturaeEPES = 0,

FacturaeXL

}

Valores

Default: Firma siguiendo el formato Facturae EPES definido por la política de firma de Facturae.

FacturaeEPES: Firma siguiendo el formato Facturae EPES definido por la política de firma de Facturae.

FacturaeXL: Firma siguiendo el formato Facturae XL definido por la política de firma de Facturae.

2.2.6 VerificationFlags

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

public enum VerificationFlags

{

None = 0,

Default = 1,

ValidateChain = 2,

CheckRevocationStatus = 8,

ValidateTrusts = 64,

ValidatePolicy = 128,

IncludeTimestampInfo = 256

}

Page 18: Referencia de Servicios Web en SealSign DSS

Página 18 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

Valores

None: No especifica ningún flag de verificación.

Default: Utiliza 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.

ValidateChain: SealSign DSS comprobará la cadena de certificación de cada uno de los certificados involucrados en la firma es puede ser construida correctamente en el servidor.

CheckRevocationStatus: SealSign DSS comprobará el estado de revocación de cada uno de los certificados involucrados en la firma.

ValidateTrusts: SealSign DSS comprobará que cada uno de los certificados involucrados es un certificado de confianza en el servidor.

ValidatePolicy: SealSign DSS realizará una verificación de la política de firma en aquellos perfiles que la incluyan.

IncludeTimestampInfo: Cuando se realice la validación del documento, además de indicarse si la información de sello de tiempo es correcta, se realizará una validación de cada una de las firmas y certificados incluidos en el sello retornando la información de validación de estas firmas.

2.2.7 VerificationStatus

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

public enum VerificationStatus

{

Valid = 0,

SignatureCorrupted = 1,

SignerNotFound = 2,

IncompleteChain = 3,

BadCountersignature = 4,

BadTimestamp = 5,

CertificateExpired = 6,

CertificateRevoked = 7,

CertificateCorrupted = 8,

UntrustedCA = 9,

RevInfoNotFound = 10,

TimestampInfoNotFound = 11,

Failure = 12,

CertificateMalformed = 13,

Unknown = 14,

InvalidPolicy = 15,

NotValidForUsage = 16

}

Valores

Valid: La firma actual es válida y coincide con el documento firmado.

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

SignerNotFound: No se ha encontrado el certificado con el que se realizó la firma.

IncompleteChain: No se ha podido construir la cadena de certificación del certificado de firma.

BadCountersignature: La contrafirma no es correcta.

BadTimestamp: El sello de tiempo no es válido.

CertificateExpired: El certificado de la firma está caducado.

Page 19: Referencia de Servicios Web en SealSign DSS

Página 19 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

CertificateRevoked: El certificado de la firma está revocado.

CertificateCorrupted: El certificado de firma está corrupto.

UntrustedCA: El emisor del certificado no es de confianza.

RevInfoNotFound: No se ha podido encontrar la información de revocación.

TimestampInfoNotFound: No se ha podido encontrar la información del sello de tiempo.

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

CertificateMalformed: El certificado de firma está mal formado.

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

InvalidPolicy: La política asociada a la firma no es válida.

NotValidForUsage: El certificado no es válido para el uso actual.

2.2.8 KeyUsages

Define los distintos usos que puede tener un certificado x509:

public enum KeyUsages

{

None = 0,

digitalSignature = 1,

nonRepudiation = 2,

keyEncipherment = 4,

dataEncipherment = 8,

keyAgreement = 16,

keyCertSign = 32,

cRLSign = 64,

encipherOnly = 128,

decipherOnly = 256

}

Valores

None: No se especificó ningún uso para el certificado.

digitalSignature: El certificado contiene el propósito de firma digital.

nonRepudiation: El certificado contiene el propósito de no repudio.

keyEncipherment: El certificado contiene el propósito de cifrado de claves.

dataEncipherment: El certificado contiene el propósito de cifrado de datos.

keyAgreement: El certificado contiene el propósito de intercambio de claves.

keyCertSign: El certificado contiene el propósito de firma de certificados.

cRLSign: El certificado contiene el propósito de firma de CRLs.

encipherOnly: El certificado contiene el propósito de solo cifrado.

decipherOnly: El certificado contiene el propósito de solo descifrado.

2.2.9 ExtendedKeyUsages

Define los distintos usos extendidos que puede tener un certificado x509:

public enum ExtendedKeyUsages

{

None = 0,

clientAuthentication = 1,

Page 20: Referencia de Servicios Web en SealSign DSS

Página 20 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

codeSigning = 2,

emailProtection = 4,

serverAuthentication = 8,

timeStamping = 16,

customUsages = 32

}

Valores

None: No se especificó ningún uso extendido para el certificado.

clientAuthentication: El certificado contiene el propósito extendido de autenticación de cliente.

codeSigning: El certificado contiene el propósito extendido de firma de código.

emailProtection: El certificado contiene el propósito extendido de protección de email.

serverAuthentication: El certificado contiene el propósito extendido de autenticación de servidor.

timeStamping: El certificado contiene el propósito extendido de sellado de tiempo.

customUsages: El certificado contiene propósitos extendidos personalizados.

Page 21: Referencia de Servicios Web en SealSign DSS

Página 21 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

3 Servicio de Validación y Análisis Sintáctico de Certificados

El servicio CertificateServiceBasic.svc de SealSign DSS permite realizar la validación del estado de revocación de un certificado centralizadamente siguiendo las configuraciones realizadas en el servidor de SealSign. Para ello, este servicio expone el método Validate, que será accesible a través de SOAP 1.1.

El servicio CertificateServiceBasic.svc dispone además del método Parse que devuelve la información de un certificado x509 dividida en sus distintos campos y extensiones.

3.1 Métodos

3.1.1 Validate

Realiza la verificación de revocación de un certificado y retorna su estado.

Sintaxis

public int Validate(

byte[] validatingCertificate,

DateTime timeToUse,

ref int reason);

Parámetros de Entrada

validatingCertificate: Array de bytes con la parte pública del certificado que se desea validar.

timeToUse: Fecha y hora en la que debe producirse la validación.

reason: Parámetro de salida que indicará, en caso de que el certificado esté revocado el motivo por el que lo está.

Retorno

Retorna un valor entero que corresponderá con uno de los valores del tipo enumerado X509ChainStatusFlags de .NET. Más información en el siguiente enlace http://msdn.microsoft.com/ en-us/library/system.security.cryptography.x509certificates.x509chainstatusflags.aspx

Comentarios

En el parámetro timeToUse se debe especificar la fecha y hora en la que se quiere realizar la validación o el valor DateTime.MinValue (es decir 01/01/0001 00:00:00.0) para indicar que se debe utilizar la fecha actual del sistema de validación.

El valor del parámetro de salida reason solo tendrá sentido si el retorno de la función es igual a

X509ChainStatusFlags.Revoked.

Los posibles valores de este parámetro vienen definidos según las siguientes constantes de CryptoAPI:

Page 22: Referencia de Servicios Web en SealSign DSS

Página 22 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

Constante Valor Razón

CRL_REASON_UNSPECIFIED 0 Razón no especificada.

CRL_REASON_KEY_COMPROMISE 1 Clave del certificado comprometida.

CRL_REASON_CA_COMPROMISE 2 Entidad emisora comprometida.

CRL_REASON_AFFILIATION_CHANGED 3 Los datos de afiliación se han modificado. CRL_REASON_SUPERSEDED 4 El certificado ha sido sustituido.

CRL_REASON_CESSATION_OF_OPERATION 5 Cese de operación.

CRL_REASON_CERTIFICATE_HOLD 6 Certificado bloqueado

3.1.2 Parse

Retorna la información contenida en un certificado X509.

Sintaxis

public CertificateInfo Parse(

byte[] certificate);

Parámetros de Entrada

certificate: Array de bytes con la parte pública del certificado que se desea analizar.

Retorno

Retorna un objeto de tipo CertificateInfo con la información del certificado.

Comentarios

En los campos issuer y subject, cada uno de los miembros de la estructura contendrá el valor correspondiente (en formato cadena de caracteres) al campo equivalente dentro del emisor o del asunto del certificado. Si un campo no está presente en el certificado, el valor del miembro correspondiente será una cadena vacía.

En ambos casos, se incluye el miembro RDN con la información de todos los campos incluidos dentro del emisor o del asunto.

El campo subjectAlternativeName es un array con los distintos nombres contenidos dentro del subjectAlternativeName del certificado. Si esta extensión no estuviera presente en el certificado, el valor de la estructura será null.

En cada uno de los miembros del array de subjectAlternativeName, solo uno de los campos contendrá valor, dependiendo del tipo de valor de cada uno de los nombres alternativos contenidos en el certificado. El resto de miembros contendrá null o cadena vacía.

En los miembros de tipo FieldInfo, el campo Value contendrá el valor formateado a cadena de caracteres si el campo tiene un formato conocido por el sistema (según el OID del mismo). En caso contrario contendrá una cadena vacía.

Además, el campo FriendlyName estará localizado según el idioma del sistema, por lo que, a la hora de localizar un campo o extensión se deberá utilizar el OID del mismo y no este campo.

Page 23: Referencia de Servicios Web en SealSign DSS

Página 23 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

4 Servicio de Firma y Verificación SOAP 1.1

El servicio SignatureServiceBasic.svc de SealSign DSS expone los métodos necesarios para la generación y validación de firmas electrónicas a través de un servicio web SOAP 1.1 (basicHttpBinding).

Los métodos expuestos son los siguientes:

GetCertificateReferences: Obtiene información de los certificados almacenados en el servidor de SealSign y que pueden ser utilizados por el usuario que invoca al servicio.

Sign: Firma un documento de entrada en servidor con las configuraciones recibidas como parámetros.

SignProvider: Obtiene un documento y los parámetros de configuración de firma mediante un document provider y lo firma con el certificado de servidor recibido.

BusinessSign: Firma un documento un documento en servidor mediante un perfil de firma de alto nivel.

Verify: Permite verificar y obtener la información de cada una de las firmas incluidas en un documento.

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 Métodos

4.1.1 GetCertificateReferences

Retorna una lista con la información de los certificados almacenados en el servidor a los que un usuario puede tener acceso.

Sintaxis

public CertificateReference[] GetCertificateReferences(

string ownerName,

bool includeEncoded);

Parámetros de Entrada

ownerName: Filtro opcional que indica el nombre del usuario cuyos certificados deberá retornar la función. Si se especifica un null, la función retornará todos los certificados a los que el usuario actual tiene acceso.

includeEncoded: Parámetro que indica si en las referencias retornadas debe incluirse el certificado codificado.

Retorno

Devuelve un array de objetos de la clase CertificateReference con toda la información de los certificados a los que el usuario tiene acceso.

Page 24: Referencia de Servicios Web en SealSign DSS

Página 24 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

Comentarios

La lista de referencias de certificados se utilizará posteriormente para indicarle al método de firma qué certificado debe utilizar para su proceso.

El proceso habitual es obtener la lista de certificados y mostrársela al usuario para que seleccione el certificado que va a utilizar en la operación posterior. Además si el valor del campo passwordRequired es true la aplicación cliente deberá solicitar al usuario la contraseña asociada al certificado. Esta contraseña será necesaria para la posterior llamada al método Sign.

4.1.2 Sign

Este método realiza la firma del documento recibido como parámetro usando los perfiles y configuraciones indicados y retornando un array de bytes con el documento firmado.

Sintaxis

public byte[] Sign(

int idCertificate,

SignatureProfile signatureProfile,

SignatureType signatureType,

HashAlgorithm hashAlgorithm,

SignatureFlags options,

SignatureParameters parameters,

string password,

string passwordSealSign,

byte[] detachedSignature,

byte[] signingDocument);

Parámetros de Entrada

idCertificate: Identificador del certificado de servidor utilizado para firmar el documento.

signatureProfile: Recibe un valor de tipo SignatureProfile que especifica el tipo de perfil de firma que se desea realizar. Para más información consultar la descripción del tipo enumerado SignatureProfile.

signatureType: Recibe un valor de tipo SignatureType que especifica el tipo de formato de almacenamiento de la firma. Para más información sobre los tipos de almacenamiento consultar la descripción del tipo enumerado SignatureType.

hashAlgorithm: Recibe un valor de tipo HashAlgorithm que especifica el algoritmo de hash que se utilizará a la hora de realizar la firma. Para más información sobre los algoritmos soportados consultar la descripción del tipo enumerado HashAlgorithm.

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.

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.

password: Contraseña de acceso a la clave privada del certificado seleccionado o null en caso de no ser necesaria.

passwordSealSign: Contraseña de SealSign asociada al certificado seleccionado o null en caso de no ser necesaria.

Page 25: Referencia de Servicios Web en SealSign DSS

Página 25 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

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.

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.

Comentarios

El identificador del certificado, parámetro idCertificate, se obtendrá mediante una llamada previa al método GetCertificateReferences. En dicha llamada, junto con el identificador se obtendrá el valor de los flags de solicitud de contraseña (passwordRequired y passwordSealSignRequired). En caso de que el valor de alguno de estos flags sea true, será necesario proporcionar la correspondiente contraseña en la llamada al método Sign.

A la hora de indicar un perfil de firma en el campo signatureProfile es necesario tener en cuenta que solo algunos tipos de fichero pueden ser firmados siguiendo algunos perfiles. Por ejemplo, los perfiles PDF, PAdESBasic, PAdESBES, PAdESLTV y PAdESXML son perfiles para firma de documentos con formato PDF, de modo que, si el documento a firmar con este perfil no es de este tipo, se producirá una excepción. Así mismo, el perfil de firma Office solo se puede utilizar para documentos de tipo Microsoft Office.

El parámetro signatureType sirve para indicar cómo se almacena la firma, es decir si la firma se incluye dentro del documento o se separa del mismo (Detached), y en el caso de incluirse dentro, cómo se incluirá (Enveloped o Enveloping).

El campo parameters permite añadir información a la firma según necesidad. En concreto permite añadir información de localización de dónde se realiza la firma así como el rol del firmante y las políticas de firma aplicadas. Así mismo, permite realizar una configuración personalizada del visualizador de firma (Widget) de los documentos PDF, distinta de la configuración general almacenada en el servidor.

4.1.3 SignProvider

Este método obtiene un documento y los parámetros de configuración de firma mediante un document provider y lo firma con el certificado de servidor indicado como parámetro de entrada.

Sintaxis

public byte[] Sign(

int idCertificate,

string password,

string passwordSealSign,

string uri,

string providerParameter,

byte[] signingDocument);

Parámetros de Entrada

idCertificate: Identificador del certificado de servidor utilizado para firmar el documento.

password: Contraseña de acceso a la clave privada del certificado seleccionado o null en caso de no ser necesaria.

Page 26: Referencia de Servicios Web en SealSign DSS

Página 26 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

passwordSealSign: Contraseña de SealSign asociada al certificado seleccionado o null en caso de no ser necesaria.

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.

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

Retorno

Devuelve un array de bytes una vez que se haya firmado el documento obtenido mediante la llamada al document provider asociado a la uri especificada o una excepción en caso de producirse algún tipo de error.

Comentarios

El identificador del certificado, parámetro idCertificate, se obtendrá mediante una llamada previa al método GetCertificateReferences. En dicha llamada, junto con el identificador se obtendrá el valor de los flags de solicitud de contraseña (passwordRequired y passwordSealSignRequired). En caso de que el valor de alguno de estos flags sea true, será necesario proporcionar la correspondiente contraseña en la llamada al método Sign.

Tanto el documento como los parámetros que se aplicarán en el proceso de firma se obtienen invocando al proveedor de documentos asociado a la uri recibida como parámetro.

El parámetro providerParameter no es utilizado por la plataforma, simplemente su valor llega desde la aplicación llamadora al document provider, sirviendo, por tanto, como paso transparente de valores entre ambos módulos.

Para más información sobre el funcionamiento de document providers se puede consultar el apartado Proveedores de Documentos de este mismo documento.

4.1.4 BusinessSign

Este método permite realizar la firma de un documento recibido como parámetro utilizando perfiles de firma de alto nivel predefinidos en SealSign.

Sintaxis

public byte[] BusinessSign(

int idCertificate,

BusinessSignatureProfile businessSignatureProfile,

string password,

string passwordSealSign,

byte[] detachedSignature,

byte[] signingDocument);

Parámetros de Entrada

idCertificate: Identificador del certificado de servidor utilizado para firmar el documento.

businessSignatureProfile: Recibe un valor de tipo BusinessSignatureProfile que especifica el tipo de perfil de firma de alto nivel que se desea utilizar. Para más información consultar la descripción del tipo enumerado BusinessSignatureProfile.

Page 27: Referencia de Servicios Web en SealSign DSS

Página 27 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

password: Contraseña de acceso a la clave privada del certificado seleccionado o null en caso de no ser necesaria.

passwordSealSign: Contraseña de SealSign asociada al certificado seleccionado o null en caso de no ser necesaria.

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.

Retorno

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

Comentarios

El identificador del certificado, parámetro idCertificate, se obtendrá mediante una llamada previa al método GetCertificateReferences. En dicha llamada, junto con el identificador se obtendrá el valor de los flags de solicitud de contraseña (passwordRequired y passwordSealSignRequired). En caso de que el valor de alguno de estos flags sea true, será necesario proporcionar la correspondiente contraseña en la llamada al método Sign.

4.1.5 Verify

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 todos y cada uno de los elementos que constituyen la firma del mismo.

Sintaxis

public SignatureVerification Verify(

SignatureProfile signatureProfile,

VerificationFlags options,

VerificationParameters parameters,

byte[] detachedSignature,

byte[] document);

Parámetros de Entrada

signatureProfile: Valor del tipo enumerado SignatureProfile que indica el perfil que tiene la firma que se va a validar. Para más información consultar la descripción del tipo enumerado SignatureProfile.

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

parameters: Objeto de tipo VerificationParameters que añade algunos parámetros necesarios para la validación de algunos tipos de firmas.

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.

Page 28: Referencia de Servicios Web en SealSign DSS

Página 28 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

Retorno

Devuelve un objeto de la clase SignatureVerification 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.

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.CMS, SignatureProfile.PDF, SignatureProfile.XMLDigSig o SignatureProfile.Office) que le indicarán al validador si el tipo de documento es binario, PDF, XML o un documento de Microsoft Office.

En la actualidad, la clase VerificationParameters solo contiene el atributo signingCertificate cuyo valor solo es necesario en aquellos tipos de firma en las que no se incluya el certificado de firma dentro de la misma. En cualquier otro caso se puede pasar un null.

4.1.6 HearBeat

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

Sintaxis

public void HeartBeat();

Comentarios

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

Page 29: Referencia de Servicios Web en SealSign DSS

Página 29 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

5 Servicio de Firma y Verificación SOAP 1.2

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

Los métodos expuestos son los siguientes:

GetCertificateReferences: Obtiene información de los certificados almacenados en el servidor de SealSign y que pueden ser utilizados por el usuario que invoca al servicio.

Sign: Firma un documento de entrada con las configuraciones recibidas como parámetros.

SignProvider: Obtiene un documento y los parámetros de configuración de firma mediante un document provider y lo firma con el certificado de servidor recibido.

BusinessSign: Realiza la firma de un documento mediante un perfil de firma de alto nivel.

Verify: Permite verificar y obtener la información de cada una de las firmas incluidas en un documento.

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

5.1 Clases

5.1.1 SignatureRequest

Parámetro de entrada del método Sign.

public class SignatureRequest

{

public int idCertificate;

public SignatureProfile signatureProfile;

public SignatureType signatureType;

public HashAlgorithm hashAlgorithm;

public SignatureFlags options;

public SignatureParameters parameters;

public string password;

public string passwordSealSign;

public byte[] detachedSignature;

public Stream signingDocument;

}

Atributos

idCertificate: Identificador del certificado de servidor utilizado para firmar el documento.

signatureProfile: Recibe un valor de tipo SignatureProfile que especifica el tipo de perfil de firma que se desea realizar. Para más información consultar la descripción del tipo enumerado SignatureProfile.

signatureType: Recibe un valor de tipo SignatureType que especifica el tipo de formato de almacenamiento de la firma. Para más información sobre los tipos de almacenamiento consultar la descripción del tipo enumerado SignatureType.

hashAlgorithm: Recibe un valor de tipo HashAlgorithm que especifica el algoritmo de hash que se utilizará a la hora de realizar la firma. Para más información sobre los algoritmos soportados consultar la descripción del tipo enumerado HashAlgorithm.

Page 30: Referencia de Servicios Web en SealSign DSS

Página 30 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

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.

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.

password: Contraseña asociada al archivo .pfx de almacenamiento del certificado seleccionado o null en caso de no ser necesaria.

passwordSealSign: Contraseña de SealSign asociada al certificado seleccionado o null en caso de no ser necesaria.

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.1.2 SignatureResponse

Parámetro de salida del método Sign.

public class SignatureResponse

{

public Stream signedDocument;

}

Atributos

signedDocument: Stream con el documento firmado resultado de la operación.

5.1.3 SignatureProviderRequest

Parámetro de entrada del método SignProvider.

public class SignatureProviderRequest

{

public int idCertificate;

public string password;

public string passwordSealSign;

public string uri;

public string providerParameter;

public Stream signingDocument;

}

Atributos

idCertificate: Identificador del certificado de servidor utilizado para firmar el documento.

password: Contraseña asociada al archivo .pfx de almacenamiento del certificado seleccionado o null en caso de no ser necesaria.

passwordSealSign: Contraseña de SealSign asociada al certificado seleccionado o null en caso de no ser necesaria.

uri: Identificador URI del documento en el repositorio.

Page 31: Referencia de Servicios Web en SealSign DSS

Página 31 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

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

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

5.1.4 SignatureResponse

Parámetro de salida del método Sign.

public class SignatureResponse

{

public Stream signedDocument;

}

Atributos

signedDocument: Stream con el documento firmado resultado de la operación.

5.1.5 BusinessSignatureRequest

Parámetro de entrada del método BusinessSign.

public class BusinessSignatureRequest

{

public int idCertificate;

public BusinessSignatureProfile businessSignatureProfile;

public string password;

public string passwordSealSign;

public byte[] detachedSignature;

public Stream signingDocument;

}

Atributos

idCertificate: Identificador del certificado de servidor utilizado para firmar el documento.

businessSignatureProfile: Recibe un valor de tipo BusinessSignatureProfile que especifica el tipo de perfil de firma de alto nivel que se desea utilizar. Para más información consultar la descripción del tipo enumerado BusinessSignatureProfile.

password: Contraseña asociada al archivo .pfx de almacenamiento del certificado seleccionado o null en caso de no ser necesaria.

passwordSealSign: Contraseña de SealSign asociada al certificado seleccionado o null en caso de no ser necesaria.

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.1.6 VerificationRequest

Parámetro de entrada del método Verify.

public class VerificationRequest

{

public SignatureProfile signatureProfile;

public VerificationFlags options;

public VerificationParameters parameters;

Page 32: Referencia de Servicios Web en SealSign DSS

Página 32 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

public byte[] detachedSignature;

public Stream document;

}

Atributos

signatureProfile: Valor del tipo enumerado SignatureProfile que indica el perfil que tiene la firma que se va a validar. Para más información consultar la descripción del tipo enumerado SignatureProfile.

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

parameters: Objeto de tipo VerificationParameters que añade algunos parámetros necesarios para la validación de algunos tipos de firmas.

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: Objeto de tipo System.IO.Stream con el contenido del documento que se desea verificar.

5.1.7 VerificationResponse

Parámetro de salida del método Verify.

public class VerificationResponse

{

public SignatureVerification signatureVerification;

}

Atributos

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

5.2 Métodos

5.2.1 GetCertificateReferences

Retorna una lista con la información de los certificados almacenados en el servidor a los que un usuario puede tener acceso.

Sintaxis

public CertificateReference[] GetCertificateReferences(

string ownerName,

bool includeEncoded);

Parámetros de Entrada

ownerName: Cadena de caracteres que indica el nombre del usuario cuyos certificados deberá retornar la función. Si se especifica un null, la función retornará todos los certificados a los que el usuario actual tiene acceso.

includeEncoded: Parámetro que indica si en las referencias retornadas debe incluirse el certificado codificado.

Page 33: Referencia de Servicios Web en SealSign DSS

Página 33 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

Retorno

Devuelve un array de objetos de la clase CertificateReference con toda la información de los certificados a los que el usuario tiene acceso.

Comentarios

La lista de referencias de certificados se utilizará posteriormente para indicarle al método de firma qué certificado debe utilizar para su proceso.

El proceso habitual es obtener la lista de certificados y mostrársela al usuario para que seleccione el certificado que va a utilizar en la operación posterior. Además si el valor del campo passwordRequired es true la aplicación cliente deberá solicitar al usuario la contraseña asociada al certificado, puesto que será necesario para la posterior llamada al método Sign.

Ejemplo

Ver ejemplo de código del método Sign.

5.2.2 Sign

Este método realiza la firma del documento recibido como parámetro según los perfiles y configuraciones indicados retornando un array de bytes con el documento firmado.

Sintaxis

SignatureResponse Sign(

SignatureRequest request);

Parámetros de Entrada

request: Objeto de la clase SignatureRequest

Retorno

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

Comentarios

El identificador del certificado, parámetro idCertificate, se obtendrá mediante una llamada previa al método GetCertificateReferences. En dicha llamada, junto con el identificador se obtendrá el valor de los flags de solicitud de contraseña (passwordRequired y passwordSealSignRequired). En caso de que el valor de alguno de estos flags sea true, será necesario proporcionar la correspondiente contraseña en la llamada al método Sign.

A la hora de indicar un perfil de firma en el campo signatureProfile es necesario tener en cuenta que solo algunos tipos de fichero pueden ser firmados siguiendo algunos perfiles. Por ejemplo, los perfiles PDF, PAdESBasic, PAdESBES, PAdESLTV y PAdESXML son perfiles para firma de documentos con formato PDF, de modo que, si el documento a firmar con este perfil no es de este tipo, se producirá una excepción. Así mismo, el perfil de firma Office solo se puede utilizar para documentos de tipo Microsoft Office.

Page 34: Referencia de Servicios Web en SealSign DSS

Página 34 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

El parámetro signatureType sirve para indicar cómo se almacena la firma, es decir si la firma se incluye dentro del documento o se separa del mismo (Detached), y en el caso de incluirse dentro, cómo se incluirá (Enveloped o Enveloping).

El campo parameters permite añadir información a la firma según necesidad. En concreto permite añadir información de localización de dónde se realiza la firma así como el rol del firmante y las políticas de firma aplicadas. Así mismo, permite realizar una configuración personalizada del visualizador de firma (Widget) de los documentos PDF, distinta de la configuración general almacenada en el servidor.

5.2.3 SignProvider

Este método obtiene un documento y los parámetros de configuración de firma mediante un document provider y lo firma con el certificado de servidor indicado como parámetro de entrada.

Sintaxis

public SignatureProviderResponse Sign(

SignatureProviderRequest request);

Parámetros de Entrada

request: Objeto de la clase SignatureProviderRequest

Retorno

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

Comentarios

El identificador del certificado, parámetro idCertificate, se obtendrá mediante una llamada previa al método GetCertificateReferences. En dicha llamada, junto con el identificador se obtendrá el valor de los flags de solicitud de contraseña (passwordRequired y passwordSealSignRequired). En caso de que el valor de alguno de estos flags sea true, será necesario proporcionar la correspondiente contraseña en la llamada al método Sign.

Tanto el documento como los parámetros que se aplicarán en el proceso de firma se obtienen invocando al proveedor de documentos asociado a la uri recibida como parámetro.

El parámetro providerParameter no es utilizado por la plataforma, simplemente su valor llega desde la aplicación llamadora al document provider, sirviendo, por tanto, como paso transparente de valores entre ambos módulos.

Para más información sobre el funcionamiento de document providers se puede consultar el apartado Proveedores de Documentos de este mismo documento.

5.2.4 BusinessSign

Este método permite realizar la firma de un documento recibido como parámetro utilizando perfiles de firma de alto nivel predefinidos en SealSign.

Page 35: Referencia de Servicios Web en SealSign DSS

Página 35 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

Sintaxis

public SignatureResponse BusinessSign(

BusinessSignatureRequest request);

Parámetros de Entrada

request: Objeto de la clase BusinessSignatureRequest

Retorno

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

Comentarios

El identificador del certificado, parámetro idCertificate, se obtendrá mediante una llamada previa al método GetCertificateReferences. En dicha llamada, junto con el identificador se obtendrá el valor de los flags de solicitud de contraseña (passwordRequired y passwordSealSignRequired). En caso de que el valor de alguno de estos flags sea true, será necesario proporcionar la correspondiente contraseña en la llamada al método Sign.

5.2.5 Verify

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 todos y cada uno de los elementos que constituyen la firma del mismo.

Sintaxis

public VerificationResponse Verify(

VerificationRequest request);

Parámetros de Entrada

request: Objeto de la clase VerificationRequest

Retorno

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

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.CMS, SignatureProfile.PDF, SignatureProfile.XMLDigSig o SignatureProfile.Office) que le indicarán al validador si el tipo de documento es binario, PDF, XML o un documento de Microsoft Office.

En la actualidad, la clase VerificationParameters solo contiene el atributo signingCertificate cuyo valor solo es necesario en aquellos tipos de firma en las que no se incluya el certificado de firma dentro de la misma. En cualquier otro caso se puede pasar un null.

Page 36: Referencia de Servicios Web en SealSign DSS

Página 36 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

5.2.6 HearBeat

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

Sintaxis

public void HeartBeat();

Comentarios

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

Page 37: Referencia de Servicios Web en SealSign DSS

Página 37 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

6 Servicio de Timestamp SOAP 1.1

El servicio TimestampServiceBasic.svc de SealSign DSS expone los métodos necesarios para la generación de sellos de tiempo a través de un servicio web SOAP 1.1 (basicHttpBinding). Los métodos expuestos son los siguientes:

AddArchiveTimestamp: Añade un sello de tiempo de archivado a un documento con una firma válida. Este tipo de sello de tiempo se utiliza para asegurar la firma a lo largo del tiempo ya que es posible que los algoritmos utilizados para la firma se vean comprometidos en el futuro.

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.

6.1 Métodos

6.1.1 AddArchiveTimestamp

Este método añade el sello de tiempo al documento recibido como parámetro según los perfiles y configuraciones indicados retornando un array de bytes con el documento sellado.

Sintaxis

public byte[] AddArchiveTimestamp(SignatureProfile signatureProfile,

SignatureType signatureType,

HashAlgorithm hashAlgorithm,

int signatureIndex,

byte[] detachedSignature,

byte[] signedDocument);

Parámetros de Entrada

signatureProfile: Recibe un valor de tipo SignatureProfile que especifica el tipo de perfil de firma con el que se firmó el documento. Para más información consultar la descripción del tipo enumerado SignatureProfile.

signatureType: Recibe un valor de tipo SignatureType que especifica el tipo de formato de almacenamiento de la firma. Para más información sobre los tipos de almacenamiento consultar la descripción del tipo enumerado SignatureType.

hashAlgorithm: Recibe un valor de tipo HashAlgorithm que especifica el algoritmo de hash que se utilizará a la hora de realizar el sello de tiempo. Para más información sobre los algoritmos soportados consultar la descripción del tipo enumerado HashAlgorithm.

signatureIndex: Índice de la firma a sellar.

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 será null.

signedDocument: Array de bytes con el contenido del documento que se desea sellar.

Retorno

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

Comentarios

Para obtener las firmas del documento se utiliza el método Verify del servicio de verificación de firma.

Page 38: Referencia de Servicios Web en SealSign DSS

Página 38 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

7 Servicio de Timestamp SOAP 1.2

El servicio TimestampService.svc de SealSign DSS expone todos los métodos necesarios para la generación de sellos de tiempo a través de un servicio SOAP 1.2 (wsHttpBinding). Los métodos expuestos son los siguientes:

AddArchiveTimestamp: Añade un sello de tiempo de archivado a un documento con una firma válida. Este tipo de sello de tiempo se utiliza para asegurar la firma a lo largo del tiempo ya que es posible que los algoritmos utilizados para la firma se vean comprometidos en el futuro.

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

7.1 Clases

7.1.1 ArchiveTimestampRequest

Parámetro de entrada del método AddArchiveTimestamp.

public class ArchiveTimestampRequest

{

public SignatureProfile signatureProfile;

public SignatureType signatureType;

public HashAlgorithm hashAlgorithm;

public int signatureIndex;

public byte[] detachedSignature;

public Stream signedDocument;

}

Atributos

signatureProfile: Recibe un valor de tipo SignatureProfile que especifica el tipo de perfil de firma con el que se firmó el documento. Para más información consultar la descripción del tipo enumerado SignatureProfile.

signatureType: Recibe un valor de tipo SignatureType que especifica el tipo de formato de almacenamiento de la firma. Para más información sobre los tipos de almacenamiento consultar la descripción del tipo enumerado SignatureType.

hashAlgorithm: Recibe un valor de tipo HashAlgorithm que especifica el algoritmo de hash que se utilizará a la hora de realizar el sello de tiempo. Para más información sobre los algoritmos soportados consultar la descripción del tipo enumerado HashAlgorithm.

signatureIndex: Índice de la firma a sellar.

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 será null.

signedDocument: Array de bytes con el contenido del documento que se desea sellar.

7.1.2 TimestampResponse

Parámetro de salida del método AddArchiveTimestamp.

public class TimestampResponse

{

public Stream timestampedDocument;

}

Page 39: Referencia de Servicios Web en SealSign DSS

Página 39 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

Atributos

timestampedDocument: Stream con el contenido del documento sellado.

7.2 Métodos

7.2.1 AddArchiveTimestamp

Este método añade el sello de tiempo al documento recibido como parámetro según los perfiles y configuraciones indicados retornando un array de bytes con el documento sellado.

Sintaxis

public TimestampResponse AddArchiveTimestamp(

ArchiveTimestampRequest request);

Parámetros de Entrada

request: Objeto de la clase ArchiveTimestampRequest

Retorno

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

Page 40: Referencia de Servicios Web en SealSign DSS

Página 40 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

8 Firma Distribuida en Cliente

Aunque a priori el procedimiento de firma electrónica es sencillo (cálculo y cifrado del hash del documento), hay escenarios en los que puede resultar complejo y costoso en proceso y tiempo dependiendo del perfil requerido, por ejemplo XAdES-XL, XAdES-A, etc. Estos perfiles requieren obtener elementos externos al sistema, como CRLs o respuestas OCSP de las entidades certificadoras, sellos de tiempo de terceros, etc. Además, cada vez es más habitual que el documento y la clave privada del firmante están separados en sistemas remotos, por ejemplo un usuario firmando desde un navegador de Internet un documento residente en el servidor.

Una de las ventajas que proporciona SealSign DSS es la firma distribuida, que permite resolver los escenarios planteados de una forma muy flexible y sencilla. La firma distribuida consiste en realizar todo el proceso de firma en el lado del servidor salvo el cifrado del hash que se produce en el lado del cliente, donde reside la clave privada del firmante. 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 DSS asegurándose así la integridad de los datos en dos niveles: a 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.

8.1 Arquitectura de la Firma Distribuida

La funcionalidad de firma distribuida en SealSign DSS es proporcionada principalmente por tres componentes:

SealSign DSS Server Entidades Externas Aplicación Cliente

Cliente AsyncStateManager

Backend DistributedSignatureService

DocumentProvider

MOSS DocumentProvider

Entidades Certificadoras

SAP

Page 41: Referencia de Servicios Web en SealSign DSS

Página 41 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

1. Servicio de backend de SealSign DSS (DistributedSignatureService.svc o DistributedSignatureServiceBasic.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 cifrado (AsyncStateManager): Este componente se encarga de componer el hash cifrado asociado al documento que está siendo firmado. En la plataforma SealSign DSS se incluyen versiones del componente para aplicaciones .NET, Java, Blackberry, Android e iOS.

8.2 Componente cliente de cifrado (AsyncStateManager)

En SealSign DSS el tratamiento del hash en cliente se debe realizar a través del componente de cifrado AsyncStateManager, 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.

Page 42: Referencia de Servicios Web en SealSign DSS

Página 42 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

9 Servicio de Firma Distribuida SOAP 1.1

El servicio DistributedSignatureServiceBasic.svc de SealSign DSS 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.

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.

9.1 Clases

9.1.1 DistributedSignatureBeginResponseBasic

Tipo retornado por los métodos BeginSignature y BeginSignatureProvider.

public class DistributedSignatureBeginResponseBasic

{

public Guid instance;

public byte[] asyncState;

}

Atributos

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

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

9.2 Métodos

9.2.1 BeginSignature

Inicia un proceso de firma distribuida.

Sintaxis

public DistributedSignatureBeginResponseBasic BeginSignature(

byte[] certificate,

SignatureProfile signatureProfile,

SignatureType signatureType,

HashAlgorithm hashAlgorithm,

SignatureFlags options,

Page 43: Referencia de Servicios Web en SealSign DSS

Página 43 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

SignatureParameters parameters,

byte[] detachedSignature,

byte[] signingDocument);

Parámetros de Entrada

certificate: Parte pública del certificado con el que se va a realizar la firma en cliente en formato array de bytes.

signatureProfile: Recibe un valor de tipo SignatureProfile que especifica el tipo de perfil de firma que se desea realizar. Para más información consultar la descripción del tipo enumerado SignatureProfile.

signatureType: Recibe un valor de tipo SignatureType que especifica el tipo de formato de almacenamiento de la firma. Para más información sobre los tipos de almacenamiento consultar la descripción del tipo enumerado SignatureType.

hashAlgorithm: Recibe un valor de tipo HashAlgorithm que especifica el algoritmo de hash que se utilizará a la hora de realizar la firma. Para más información sobre los algoritmos soportados consultar la descripción del tipo enumerado HashAlgorithm.

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.

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.

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.

Retorno

Devuelve un objeto de la clase DistributedSignatureBeginResponseBasic 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.

Comentarios

A la hora de indicar un perfil de firma en el campo signatureProfile es necesario tener en cuenta que solo algunos tipos de fichero pueden ser firmados siguiendo algunos perfiles. Por ejemplo, los perfiles PDF, PAdESBasic, PAdESBES, PAdESLTV y PAdESXML son perfiles para firma de documentos con formato PDF, de modo que, si el documento a firmar con este perfil no es de este tipo, se producirá una excepción. Así mismo, el perfil de firma Office solo se puede utilizar para documentos de tipo Microsoft Office.

El parámetro signatureType sirve para indicar cómo se almacena la firma, es decir si la firma se incluye dentro del documento o se separa del mismo (Detached), y en el caso de incluirse dentro, cómo se incluirá (Enveloped o Enveloping).

El campo parameters permite añadir información a la firma según necesidad. En concreto permite añadir información de localización de dónde se realiza la firma así como el rol del firmante y las políticas de firma aplicadas. Así mismo, permite realizar una configuración personalizada del

Page 44: Referencia de Servicios Web en SealSign DSS

Página 44 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

visualizador de firma (Widget) de los documentos PDF, distinta de la configuración general almacenada en el servidor.

9.2.2 BeginSignatureProvider

Inicia un proceso de firma distribuida con document provider.

Sintaxis

public SignatureContext BeginSignatureProvider(

byte[] certificate,

string uri,

string providerParameter,

byte[] document);

Parámetros de Entrada

certificate: Parte pública del certificado con el que se va a realizar la firma en cliente en formato array de bytes.

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.

Retorno

Devuelve un objeto de la clase SignatureContext 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.

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.

9.2.3 EndSignature

Completa un proceso de firma distribuida.

Sintaxis public byte[] EndSignature(Guid instance,

byte[] asyncState)

Parámetros de Entrada

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

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

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.

Page 45: Referencia de Servicios Web en SealSign DSS

Página 45 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

9.2.4 EndSignatureProvider

Completa un proceso de firma distribuida con document provider.

Sintaxis

public byte[] EndSignatureProvider(Guid instance,

byte[] asyncState,

string uri,

string providerParameter,

bool returnSignedDocument)

Parámetros de Entrada

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

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

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.

Retorno

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

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.

9.2.5 HearBeat

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

Sintaxis

public void HeartBeat();

Comentarios

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

Page 46: Referencia de Servicios Web en SealSign DSS

Página 46 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

10 Servicio de Firma Distribuida SOAP 1.2

El servicio DistributedSignatureService.svc de SealSign DSS 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.

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 como las clases y tipos relacionados con los mismos.

10.1 Clases

10.1.1 DistributedSignatureBeginRequest

Parámetro de entrada del método BeginSignature.

public class DistributedSignatureBeginRequest

{

public byte[] certificate;

public SignatureProfile signatureProfile;

public SignatureType signatureType;

public HashAlgorithm hashAlgorithm;

public SignatureFlags options;

public SignatureParameters parameters;

public byte[] detachedSignature;

public Stream signingDocument;

}

Atributos

certificate: Parte pública del certificado con el que se va a realizar la firma en cliente en formato array de bytes.

signatureProfile: Recibe un valor de tipo SignatureProfile que especifica el tipo de perfil de firma que se desea realizar. Para más información consultar la descripción del tipo enumerado SignatureProfile.

signatureType: Recibe un valor de tipo SignatureType que especifica el tipo de formato de almacenamiento de la firma. Para más información sobre los tipos de almacenamiento consultar la descripción del tipo enumerado SignatureType.

Page 47: Referencia de Servicios Web en SealSign DSS

Página 47 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

hashAlgorithm: Recibe un valor de tipo HashAlgorithm que especifica el algoritmo de hash que se utilizará a la hora de realizar la firma. Para más información sobre los algoritmos soportados consultar la descripción del tipo enumerado HashAlgorithm.

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.

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.

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: Stream con el contenido del documento que se desea firmar.

10.1.2 DistributedSignatureBeginProviderRequest

Parámetro de entrada del método BeginSignatureProvider.

public class DistributedSignatureBeginProviderRequest

{

public byte[] certificate;

public string uri;

public string providerParameter;

public Stream signingDocument;

}

Atributos

certificate: Parte pública del certificado con el que se va a realizar la firma en cliente en formato array de bytes.

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.

signingDocument: Stream con el contenido del documento que se desea firmar.

10.1.3 DistributedSignatureBeginResponse

Parámetro de salida del método BeginSignature.

public class DistributedSignatureBeginResponse

{

public Guid instance;

public byte[] asyncState;

}

Atributos

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

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

Page 48: Referencia de Servicios Web en SealSign DSS

Página 48 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

10.1.4 DistributedSignatureEndRequest

Parámetro de entrada del método EndSignature.

public class DistributedSignatureEndRequest

{

public Guid instance;

public byte[] asyncState;

}

Atributos

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

asyncState: Array de bytes que contiene el contexto de firma distribuida previamente procesado mediante la clase AsyncStateManager.

10.1.5 DistributedSignatureEndProviderRequest

Parámetro de entrada del método EndSignatureProvider.

public class DistributedSignatureEndRequest

{

public Guid instance;

public byte[] asyncState;

public string uri;

public string providerParameter;

public bool returnSignedDocument;

}

Atributos

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

asyncState: Array de bytes que contiene el contexto de firma distribuida previamente procesado mediante la clase AsyncStateManager.

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.

10.2 Métodos

10.2.1 BeginSignature

Inicia un proceso de firma distribuida.

Sintaxis

public DistributedSignatureBeginResponse BeginSignature(

DistributedSignatureBeginRequest request);

Parámetros de Entrada

request: Instancia del tipo DistributedSignatureBeginRequest con los datos de inicio de transacción de firma.

Page 49: Referencia de Servicios Web en SealSign DSS

Página 49 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

Retorno

Devuelve un objeto de la clase DistributedSignatureBeginResponse 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.

10.2.2 BeginSignatureProvider

Inicia un proceso de firma distribuida con document provider.

Sintaxis

public DistributedSignatureBeginResponse BeginSignatureProvider(

DistributedSignatureBeginProviderRequest request);

Parámetros de Entrada

request: Instancia del tipo DistributedSignatureBeginProviderRequest con los datos de inicio de transacción de firma.

Retorno

Devuelve un objeto de la clase DistributedSignatureBeginResponse 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.

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.

10.2.3 EndSignature

Completa un proceso de firma distribuida.

Sintaxis

SignatureResponse EndSignature(

DistributedSignatureEndRequest request);

Parámetros de Entrada

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

Retorno

Este método retorna un objeto de la clase SignatureResponse o una excepción en caso de producirse algún tipo de error. La clase SignatureResponse está definida en el apartado de Servicio de Firma y Verificación SOAP 1.2.

Page 50: Referencia de Servicios Web en SealSign DSS

Página 50 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

10.2.4 EndSignatureProvider

Completa un proceso de firma distribuida con document provider.

Sintaxis

public SignatureResponse EndSignatureProvider(

DistributedSignatureEndProviderRequest request)

Parámetros de Entrada

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

Retorno

Este método retorna un objeto de la clase SignatureResponse o una excepción en caso de producirse algún tipo de error. La clase SignatureResponse está definida en el apartado de Servicio de Firma y Verificación SOAP 1.2.

10.2.5 HearBeat

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

Sintaxis

public void HeartBeat();

Comentarios

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

Page 51: Referencia de Servicios Web en SealSign DSS

Página 51 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

11 Proveedores de Documentos

El servicio de firma de SealSign DSS permite integrar, en los procesos de firma electrónica distribuida, 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.

Para más información sobre el desarrollo de proveedores de documentos se puede consultar la guía de SealSign DSS de integración de aplicaciones .Net.

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

interface IDocumentProvider

{

Stream GetSigningDocument(string uri,

string providerParameter,

out SignatureProfile signatureProfile,

out SignatureType signatureType,

out HashAlgorithm hashAlgorithm,

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 DSS 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”.

11.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, 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="SealSignTestProvider, Version=1.0.0.0,

Culture=neutral, PublicKeyToken=7292d37ec3154539"" />

</DocumentProviders>

Page 52: Referencia de Servicios Web en SealSign DSS

Página 52 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

12 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 53: Referencia de Servicios Web en SealSign DSS

Página 53 de 53

2015 © Telefónica Digital Identity & Privacy, S.L.U. All Rights Reserved.

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