S-Perdura. Especificacions tècniques dels serveis web (WS)
Creat per: Consorci AOC Versió: 1.0 Codi de referència: D1301 N-S-Perdura/Manuals Data: 17/04/2012
29/03/12 S-Perdura_especificacions_WS_20120411.doc
S-Perdura. Especificacions tècniques dels serveis web (WS)
pàg 2/18
Índex
1 Introducció al servei S-PERDURA .............................................................................. 3 1.1 Manteniment i preservació de les signatures electròniques mitjançant el seu completat a la modalitat d’arxiu (AdES-A) ............................................................................ 3
2 Objectiu ....................................................................................................................... 5 2.1 Abast ........................................................................................................................... 5 2.2 Operacions disponibles del servei web ....................................................................... 5 2.3 Formats i tipus de signatura suportats ........................................................................ 5
3 Especificacions del servei web .................................................................................... 7 3.1 Requisits previs ........................................................................................................... 7 3.2 Definició del procés de completat de signatures electròniques .................................. 7
3.2.1 Conèixer la data de caducitat de les signatures electròniques originals ........... 7 3.2.2 Creació petició de completat de les signatures originals a la modalitat d’arxiu (AdES-A) ..................................................................................................................... 8
3.3 Diagrama de flux ......................................................................................................... 9 3.4 Exemples de peticions WS .......................................................................................... 9
3.4.1 Petició de validació i data de caducitat de la signatura original (sense completat) .................................................................................................................. 10 3.4.2 Petició de completat de la signatura a la modalitat d’arxiu i data de caducitat signatura completada (AdES-A) ................................................................................ 14
29/03/12 S-Perdura_especificacions_WS_20120411.doc
S-Perdura. Especificacions tècniques dels serveis web (WS)
pàg 3/18
1 Introducció al servei S-PERDURA
L'S-PERDURA és un servei del Consorci AOC que permet mantenir la fiabilitat i la validesa de les signatures electròniques al llarg del temps, mitjançant un procés d’actualització o completat de les signatures originals. Aquest procés d’actualització és el més adient per a protegir la signatura electrònica de la possible obsolescència dels algorismes i de la caducitat dels certificats que es van utilitzar en el moment de signar. També permet obtenir informació essencial sobre les signatures (estat, data en què caducarà, si té segell de temps, format, dades bàsiques del signatari, etc.). Ara bé, cal tenir present que la responsabilitat de la custodia de les signatures completades recau en l’usuari del servei. L’S-PERDURA permet a les administracions públiques gestionar i preservar les seves signatures electròniques a través de dues modalitats diferents:
1
Una aplicació web de preservació de signatures electròniques accessible des de la plataforma EACAT. Està pensada per a aquells documents electrònics signats que es troben desats en unitats de xarxa i que es volen preservar de forma manual.
Completat de les signatures electròniques mitjançant uns serveis web. És el més adient per a aquelles signatures electròniques que es troben arxivades/desades en aplicacions corporatives (gestors documentals, etc.) i que el procés de completat/preservació es vol fer d’una forma automàtica i desatesa.
1.1 Manteniment i preservació de les signatures electròniques mitjançant el seu completat a la modalitat d’arxiu (AdES-A)
Aquesta estratègia consisteix en garantir la perdurabilitat i fiabilitat de les signatures electròniques al llarg del temps mitjançant el completat de les originals a la modalitat d’arxiu (AdES-A). Aquest procés de completat inclou els següents passos:
La verificació de la signatura electrònica original validant la integritat de la signatura, el compliment dels estàndards XAdES, CAdES o PAdES i les referències que conté.
La realització d'un procés de completat de la signatura que consisteix en l’obtenció i emmagatzemament de les referències a certificats (incloent el certificat del signatari i de la cadena de certificació) i informació de l’estat dels certificats, ja sigui les llistes de certificats revocats o les respostes del servei OCSP.
I finalment, la generació d’un segell de data i hora associat a les referències als certificats i a les informacions de l’estat.
Cal tenir present, que tot i haver completat la signatura a la modalitat d’arxiu, la perdurabilitat i fiabilitat de la signatura no és per sempre i caldrà tornar a sol·licitar la seva preservació - això és, actualitzar el segell de data i hora, afegint una nova baula a la cadena d’evidències electròniques - abans que caduqui el certificat de l’autoritat de segellament de data i hora que va realitzar el segell anterior; de forma que sempre sigui possible determinar en quin moment es va realitzar la signatura i, conseqüentment, verificar que el certificat del signatari era vàlid en aquell moment
2.
1 Per a més informació consulteu a:
http://www.aoc.cat/index.php/ezwebin_site/Inici/SERVEIS/Gesti%C3%B3-interna/S-Perdura/Qu%C3%A8-%C3%A9s 2 Un altre motiu per sol·licitar el completat d’una signatura electrònica és la possible
obsolescència dels algorismes utilitzats en els certificats digitals que es van emprar per
29/03/12 S-Perdura_especificacions_WS_20120411.doc
S-Perdura. Especificacions tècniques dels serveis web (WS)
pàg 4/18
La finalitat és que la fiabilitat i validesa de les signatures electròniques associades a un document es pugui assegurar per mitjans tècnics validables automàticament, sense necessitat de recórrer a altres mecanismes alternatius i externs a la pròpia signatura que aportin indicis rellevants sobre la fiabilitat de la signatura (metadades, informes pericials...).
generar la signatura electrònica i/o segell de data i hora, produïda per l’increment de la capacitat computacional i la debilitat de les funcions matemàtiques en les que se sustenten.
29/03/12 S-Perdura_especificacions_WS_20120411.doc
S-Perdura. Especificacions tècniques dels serveis web (WS)
pàg 5/18
2 Objectiu
El present document té com a objectiu definir el flux que s’ha de seguir per preservar correctament les signatures electròniques mitjançant el completat a la modalitat d’arxiu (AdES-A) d’una forma desatesa i massiva a través dels serveis web corresponents. A més a més, inclou exemples de les crides dels serveis web que s’han d’utilitzar, tant en tecnologia Java com en .NET.
2.1 Abast L’ús dels serveis web del segell de preservació que es descriuen en aquest document són els més adients per aquelles signatures electròniques que es troben arxivades/desades en aplicacions corporatives de les administracions públiques catalanes (gestors documentals, gestors d’expedients, etc.) i que el procés de completat es vol fer d’una forma automàtica i desatesa.
2.2 Operacions disponibles del servei web
Les operacions que es poden utilitzar són les següents:
el completat de les signatures electròniques originals a la modalitat d’arxiu
conèixer la data en que caducarà la signatura, ja sigui l’original, prèvia validació, o la completada/preservada. En aquesta operació es contemplen els següents casos d’ús:
o Si només es vol saber la data de la signatura original, prèvia validació de la mateixa:
Si la signatura té segell de data i hora retorna la data de caducitat del certificat de l’autoritat de segellament de data i hora
Si la signatura no té segell de data i hora retorna la data de caducitat del certificat del signatari
o Si es desitja saber la data de caducitat de la signatura completada/preservada retorna la data de caducitat del certificat de l’autoritat que ha emès el darrer segell.
2.3 Formats i tipus de signatura suportats El completat de les signatures electròniques a la modalitat d’arxiu (AdES-A) només es pot realitzar en aquelles que compleixen els estàndards XAdES i CAdES, ja siguin del tipus independent (detached), embolcallant (enveloping) i/o incrustada (enveloped).
3
La resta de formats, les anomenades signatures bàsiques, ja sigui CMS o XMLDsig no es poden completar a la modalitat d’arxiu per raons tècniques intrínseques al seu format. Les signatures PAdES
4, tot i està en un format avançat i susceptibles de ser completades a
la modalitat d’arxiu, no s’inclouen ja que el servei Validador del Consorci AOC no les suporta a dia d’avui. En la següent taula queda ben resumit els formats i tipus suportats pel S-PERDURA:
3 Consulteu: ETSI TS 101 903, XAdES (XML Advanced Electronic Signatures) i ETSI TS
101 733, CAdES (CMS Advanced Electronic Signatures). 4 Consulteu: ETSI TS 102 778, PAdES (PDF Advanced Electronic Signatures).
29/03/12 S-Perdura_especificacions_WS_20120411.doc
S-Perdura. Especificacions tècniques dels serveis web (WS)
pàg 6/18
Tipus i format de signatura Preservació (completat a la modalitat d’arxiu)
Signatura bàsica CMS Independent (detached)
No
Signatura bàsica CMS incrustada (attached)
No
Signatura bàsica CMS incrustada PDF No
Signatura bàsica CMS Independent (detached) amb segell de data i hora
No
Signatura bàsica CMS incrustada (attached) amb segell de data i hora
No
Signatura bàsica CMS incrustada PDF amb segell de data i hora
No
Signatura bàsica XMLDsig embolcallant (enveloping)
No
Signatura bàsica XMLDsig incrustada (enveloped)
No
Signatura bàsica XMLDsig Independent (detached)
No
Signatura avançada XAdES embolcallant (enveloping)
Si
Signatura avançada XAdES incrustada (enveloped)
Si
Signatura avançada XAdES Independent (detached)
Si
Signatura avançada CAdES Independent (detached)
Si
Signatura avançada CAdES incrustada (attached)
Si
Signatura avançada CAdES incrustada PDF
No
Signatura avançada PAdES en un PDF No
Tiquet de la plataforma de validació de CATCert
Si, sempre i quan la signatura que està inclosa dins del tiquet estigui en un format
avançat
29/03/12 S-Perdura_especificacions_WS_20120411.doc
S-Perdura. Especificacions tècniques dels serveis web (WS)
pàg 7/18
3 Especificacions del servei web
3.1 Requisits previs Per poder utilitzar correctament les crides del servei web és imprescindible que l’aplicació client estigui ja integrada amb el Validador del Consorci AOC. Per a més informació sobre com integrar-se amb aquesta plataforma consulteu a: http://www.aoc.cat/index.php/ezwebin_site/Inici/SERVEIS/Serveis-de-signatura-electr%C3%B2nica-i-seguretat/Validador Les urls del servei són les següents:
Entorn URL del servei
Preproducció http://psisbeta.catcert.net/psis/catcert-test/dss
Producció http://psis.catcert.net/psis/catcert/dss
3.2 Definició del procés de completat de signatures electròniques
Els passos que s’han de seguir per sol·licitar el completat d’una signatura electrònica a la modalitat d’arxiu són els següents:
3.2.1 Conèixer la data de caducitat de les signatures electròniques originals
Aquests passos són opcionals però molt recomanables per saber l’estat de les signatures electròniques arxivades en l’aplicació corporativa. L’objectiu és saber la data de caducitat del certificat del signatari o del segell de temps que es van utilitzar en el moment de generació de la signatura:
Primer de tot, cal esbrinar si la signatura electrònica arxivada en l’aplicació corporativa ha caducat o no. Per fer-ho cal sol·licitar la data de caducitat de la signatura mitjançant la crida del WS corresponent (mireu punt 3.4.1)
Un cop rebuda la petició, S-PERDURA verificarà la signatura i si aquesta és vàlida retornarà la data de caducitat de la signatura original:
o Si la signatura incorpora un segell de data i hora vàlid retornarà la data de caducitat d’aquest.
o Si la signatura no incorpora un segell de data i hora retornarà la data de caducitat del certificat del signatari
5.
Si la signatura no és vàlida no retornarà cap data.
Aquesta data de caducitat s’hauria de desar com a metadada de la signatura en l’aplicació corporativa ja que s’utilitzarà com a data per sol·licitar el completat de la signatura a la modalitat d’arxiu.
5 Tingueu en compte que aquelles signatures que no incorporen segell de data i hora, a
excepció de les signatures del tipus AdES-BES sense segell de data i hora, no es podran completar i per tant la data que retorna de caducitat del certificat del signatari no servirà per programar el completat.
29/03/12 S-Perdura_especificacions_WS_20120411.doc
S-Perdura. Especificacions tècniques dels serveis web (WS)
pàg 8/18
3.2.2 Creació petició de completat de les signatures originals a la modalitat d’arxiu (AdES-A)
La petició de completat/preservació de la signatura és pot sol·licitar en qualsevol, però us recomanem:
crear la petició de completat de la signatura electrònica original a la modalitat d’arxiu entre 2-3 mesos abans de la data de caducitat que ens va retornar en el seu moment S-PERDURA. En la mateixa petició de completat es pot sol·licitar que S-PERDURA retorni la data de caducitat de la signatura completada. Cal tenir en compte que només es podran completar aquelles signatures que estiguin en un format avançat (AdES) (mireu punt 3.4.2) i que siguin vàlides.
S-PERDURA processarà la petició de completat i, si la signatura és vàlida, retornarà una resposta (en XML) que inclourà la signatura completada/preservada a la modalitat d’arxiu. Aquesta resposta o bé la signatura completada s’han d’arxivar en l’aplicació corporativa. Finalment, i com a praxis molt recomanable, es pot procedir a eliminar la signatura original per facilitar la seva gestió. Addicionalment, si s’ha demanat a la petició, també retornarà la data de caducitat de la signatura completada. Aquesta data s’hauria de desar com a metadada en l’aplicació corporativa per si cal repetir el procés en el futur
Caldrà repetir el procés fins a la foliació de l’expedient i/o transferència del document electrònic signat a un repositori digital de confiança.
29/03/12 S-Perdura_especificacions_WS_20120411.doc
S-Perdura. Especificacions tècniques dels serveis web (WS)
pàg 9/18
3.3 Diagrama de flux
3.4 Exemples de peticions WS A continuació us adjuntem alguns exemples dels dos tipus de peticions que es poden utilitzar per preservar una signatura electrònica ja sigui en codi Java, Visual Basic i C#:
29/03/12 S-Perdura_especificacions_WS_20120411.doc
S-Perdura. Especificacions tècniques dels serveis web (WS)
pàg 10/18
Petició de la data de caducitat d’una signatura
Petició de completat d’una signatura a la modalitat d’arxiu.
En el següent enllaç us podeu descarregar tots els exemples de peticions WS en funció del tipus i format de signatura: http://www.aoc.cat/index.php/ezwebin_site/Inici/SERVEIS/Gesti%C3%B3-interna/S-Perdura/Com-utilitzar-ho
3.4.1 Petició de validació i data de caducitat de la signatura original (sense completat)
3.4.1.1 VerifyRequest.xml
Exemple de la petició:
3.4.1.2 VerifyResponse.xml
Exemple de la resposta que retorna S-PERDURA:
29/03/12 S-Perdura_especificacions_WS_20120411.doc
S-Perdura. Especificacions tècniques dels serveis web (WS)
pàg 11/18
3.4.1.3 Exemple de petició WS en codi Java
Exemple de codi Java per a realitzar una petició de validació de signatura XAdES Enveloping, demanant com a paràmetre opcional l’atribut de la signatura “SignatureExpirationDate”.
// Signatura a verificar
String signature = readXmlFile("XAdES_idCAT_Enveloping.xml");
// Inicialització del client
digitalSignatureServiceClient proxy = new
digitalSignatureServiceClient();
SOAPport port =
proxy.getdssPortSoap("http://psis.catcert.net/psis/catcert/dss");
// Creació del missatge DSS
VerifyRequestDocument requestDocument =
VerifyRequestDocument.Factory.newInstance();
VerifyRequest request = requestDocument.addNewVerifyRequest();
request.setProfile("urn:oasis:names:tc:dss:1.0:profiles:XSS");
// Creació de l'element amb la signatura XAdES
29/03/12 S-Perdura_especificacions_WS_20120411.doc
S-Perdura. Especificacions tècniques dels serveis web (WS)
pàg 12/18
SignatureObjectType signaturetype =
SignatureObjectType.Factory.parse(signature);
request.setSignatureObject(signaturetype);
// Creació de l'element amb els paràmetres opcionals a consultar
(data de caducitat)
OptionalInputs optInputs = request.addNewOptionalInputs();
ReturnSignatureInfo ri = optInputs.addNewReturnSignatureInfo();
AttributeType caducitat = ri.addNewAttributeDesignator();
caducitat.setName("urn:oasis:names:tc:dss:1.0:profiles:XSS:signature
Attributes:SignatureExpirationDate");
// Execució del servei
VerifyResponseDocument responseDocument=
port.verify(requestDocument);
// Mostrem el valor de la data en la qual caduca la signatura
System.out.println(responseDocument.getVerifyResponse().getOptionalO
utputs().getSignatureInfoArray(0).getAttributeArray(0).getAttributeV
alueArray(0).getDomNode().getFirstChild().getNodeValue());
3.4.1.4 Exemple de petició WS en codi C#
Exemple de codi C# per a realitzar una petició de validació de signatura XAdES detached amb un resum criptogràfic (hash), demanant com a paràmetre opcional l’atribut de la signatura “SignatureExpirationDate”.
// Dades de prova
// Signatura CMS detached i document a validar
String signaturaXAdES = "C:\\ xadesDetached-signature.xml";
String document_hash = "C:\\hash.txt";
// Inicialització del client
digitalSignatureService proxy = new digitalSignatureService();
proxy.Url = "http://psis.catcert.net/psis/catcert/dss";
// Composició del missatge
// Creació dels elements amb la signatura a validar i el hash del
document a validar
// Hash del document
DigestMethodType digestMethod = new DigestMethodType();
digestMethod.Algorithm = "http://www.w3.org/2000/09/xmldsig#sha1";
DocumentHash[] hashes = new DocumentHash[1];
hashes[0] = new DocumentHash();
hashes[0].DigestMethod = digestMethod;
hashes[0].DigestValue = utils.Base64File(document_hash);
hashes[0].RefURI = "DetachedObjectReference-1";
InputDocuments docs = new InputDocuments();
docs.Items = hashes;
SignatureObjectType signatureType = new SignatureObjectType();
signatureType.Any = utils.XMLFile(signaturaXAdES);
// Creació del missatge DSS i selecció de profile
VerifyRequest request = new VerifyRequest();
request.Profile = "urn:oasis:names:tc:dss:1.0:profiles:XSS";
request.InputDocuments = docs;
request.SignatureObject = signatureType;
//OptionalInputs
29/03/12 S-Perdura_especificacions_WS_20120411.doc
S-Perdura. Especificacions tècniques dels serveis web (WS)
pàg 13/18
OptionalInputs optInputs = new OptionalInputs();
ItemsChoiceType6[] types6 = new ItemsChoiceType6[1];
object[] items = new object[1];
AttributeDesignator[] ads2 = new AttributeDesignator[1];
types6[0] = ItemsChoiceType6.ReturnSignatureInfo;
items[0] = ads2;
AttributeDesignator Nom2 = new AttributeDesignator();
Nom2.Name =
"urn:oasis:names:tc:dss:1.0:profiles:XSS:signatureAttributes:Signatu
reExpirationDate";
ads2[0] = Nom2;
optInputs.Items = items;
optInputs.ItemsElementName = types6;
request.OptionalInputs = optInputs;
utils.ShowRequest(request);
VerifyResponse response = proxy.verify(request);
3.4.1.5 Exemple de petició WS en codi VisualBasic
Exemple de codi VB per a realitzar una petició de validació de signatura XAdES detached amb un resum criptogràfic (hash), demanant com a paràmetre opcional l’atribut de la signatura “SignatureExpirationDate”.
'Inicialització del client
Dim proxy As New digitalSignatureService
proxy.Url = "http://psis.catcert.net/psis/catcert/dss"
'Hash del document
Dim digestMethod As New DigestMethodType
digestMethod.Algorithm = "http://www.w3.org/2000/09/xmldsig#sha1"
Dim hashes(1) As DocumentHash
hashes(0) = New DocumentHash
hashes(0).DigestMethod = digestMethod
hashes(0).RefURI = "DetachedObjectReference-1"
hashes(0).DigestValue = Base64File("C:/temp/hash.txt")
Dim docs As New InputDocuments
docs.Items = hashes
'Signatura
Dim signatureType As SignatureObjectType = New SignatureObjectType
signatureType.Any = XMLFile("C:/temp/XAdES-T_hash.xml")
‘Demanar la data d’expiració
Dim optInputs As OptionalInputs = New OptionalInputs
Dim items(0) As Object
Dim types6(0) As ItemsChoiceType6
types6(0) = ItemsChoiceType6.ReturnSignatureInfo
Dim ads(0) As AttributeDesignator
Dim nom As New AttributeDesignator
nom.Name =
”urn:oasis:names:tc:dss:1.0:profiles:XSS:signatureAttributes:Signatu
reExpirationDate"
ads(0) = nom
items(0) = ads
optInputs.Items = items
29/03/12 S-Perdura_especificacions_WS_20120411.doc
S-Perdura. Especificacions tècniques dels serveis web (WS)
pàg 14/18
optInputs.ItemsElementName = types6
Dim request As VerifyRequest = New VerifyRequest
Dim response As VerifyResponse = New VerifyResponse
request.InputDocuments = docs
request.SignatureObject = signatureType
request.Profile = "urn:oasis:names:tc:dss:1.0:profiles:XSS"
request.OptionalInputs = optInputs
response = proxy.verify(request)
3.4.2 Petició de completat de la signatura a la modalitat d’arxiu i data de caducitat signatura completada (AdES-A)
3.4.2.1 VerifyRequest.xml
Es recomana crear la petició de completat de la signatura electrònica a la modalitat d’arxiu entre 2-3 mesos abans de la data de caducitat que ens va retornar en el seu moment S-PERDURA. En la mateixa petició es pot demanar que retorni la data de caducitat de la signatura completada/preservada:
3.4.2.2 VerifyResponse.xml
Exemple de la resposta que retorna S-PERDURA:
29/03/12 S-Perdura_especificacions_WS_20120411.doc
S-Perdura. Especificacions tècniques dels serveis web (WS)
pàg 15/18
3.4.2.3 Exemple de petició WS en codi Java
Exemple de codi Java per a realitzar una petició de validació de signatura XAdES Enveloping, demanant com a paràmetre opcional el completat a la modalitat AdES-A i la data de caducitat de la signatura preservada.
// Signatura a verificar
String signature = readXmlFile("XAdES_idCAT_Enveloping.xml");
String signature =
Utils.readXmlFile("cat\\cert\\docs\\XAdES\\XAdES_Enveloping.xml");
// Inicialització del client
digitalSignatureServiceClient proxy = new
digitalSignatureServiceClient();
SOAPport port =
proxy.getdssPortSoap("http://psis.catcert.net/psis/catcert/dss");
// Composició del missatge
// Creació del missatge DSS
VerifyRequestDocument requestDocument =
VerifyRequestDocument.Factory.newInstance();
VerifyRequest request = requestDocument.addNewVerifyRequest();
request.setProfile("urn:oasis:names:tc:dss:1.0:profiles:XSS");
// Creació de l'element amb la signatura XAdES
SignatureObjectType signaturetype =
SignatureObjectType.Factory.parse(signature);
request.setSignatureObject(signaturetype);
// Creació de l'element amb els paràmetres opcionals a consultar
OptionalInputs optInputs = request.addNewOptionalInputs();
ReturnUpdatedSignature rt =
optInputs.addNewReturnUpdatedSignature();
rt.setType("urn:oasis:names:tc:dss:1.0:profiles:XAdES:forms:ES-A");
29/03/12 S-Perdura_especificacions_WS_20120411.doc
S-Perdura. Especificacions tècniques dels serveis web (WS)
pàg 16/18
// Creació de l'element amb el paràmetre SignatureExpirationDate a
consultar
ReturnSignatureInfo ri = optInputs.addNewReturnSignatureInfo();
AttributeType caducitat = ri.addNewAttributeDesignator();
caducitat.setName("urn:oasis:names:tc:dss:1.0:profiles:XSS:signature
Attributes:SignatureExpirationDate");
// Execució del servei
VerifyResponseDocument responseDocument=
port.verify(requestDocument);
3.4.2.4 Exemple de petició WS en codi C#
Exemple de codi C# per a realitzar una petició de validació de signatura XAdES detached amb un resum criptogràfic (hash), demanant com a paràmetre opcional el completat a la modalitat AdES-A i la data de caducitat de la signatura preservada.
// Dades de prova
// Signatura CMS detached i document a validar
String signaturaXAdES = " C:\\docs\\xadesDetachedHashPreCalculat-signature.xml";
String document_hash = " C:\\docs\\hash.txt"; // Inicialització del client
digitalSignatureService proxy = new digitalSignatureService();
proxy.Url = "http://psis.catcert.net/psis/catcert/dss";
// Composició del missatge
// Hash del document
DigestMethodType digestMethod = new DigestMethodType();
digestMethod.Algorithm = "http://www.w3.org/2000/09/xmldsig#sha1";
DocumentHash[] hashes = new DocumentHash[1];
hashes[0] = new DocumentHash();
hashes[0].DigestMethod = digestMethod;
hashes[0].DigestValue = utils.Base64File(document_hash);
hashes[0].RefURI = "DetachedObjectReference-1";
InputDocuments docs = new InputDocuments();
docs.Items = hashes;
SignatureObjectType signatureType = new SignatureObjectType();
signatureType.Any = utils.XMLFile(signaturaXAdES);
// Creació del missatge DSS i selecció de profile
VerifyRequest request = new VerifyRequest();
request.Profile = "urn:oasis:names:tc:dss:1.0:profiles:XSS";
request.InputDocuments = docs;
request.SignatureObject = signatureType;
//OptionalInputs
OptionalInputs optInputs = new OptionalInputs();
ItemsChoiceType6[] types6 = new ItemsChoiceType6[2];
object[] items = new object[2];
types6[0] = ItemsChoiceType6.ReturnUpdatedSignature;
ReturnUpdatedSignature ri = new ReturnUpdatedSignature();
ri.Type = "urn:oasis:names:tc:dss:1.0:profiles:XAdES:forms:ES-A";
items[0] = ri;
AttributeDesignator[] ads2 = new AttributeDesignator[1];
29/03/12 S-Perdura_especificacions_WS_20120411.doc
S-Perdura. Especificacions tècniques dels serveis web (WS)
pàg 17/18
types6[1] = ItemsChoiceType6.ReturnSignatureInfo;
items[1] = ads2;
AttributeDesignator Nom2 = new AttributeDesignator();
Nom2.Name =
"urn:oasis:names:tc:dss:1.0:profiles:XSS:signatureAttributes:Signatu
reExpirationDate";
ads2[1] = Nom2;
optInputs.Items = items;
optInputs.ItemsElementName = types6;
request.OptionalInputs = optInputs;
utils.ShowRequest(request);
VerifyResponse response = proxy.verify(request);
3.4.2.5 Exemple de petició WS en codi VisualBasic
Exemple de codi VB per a realitzar una petició de validació de signatura XAdES detached amb un resum criptogràfic (hash), demanant com a paràmetre opcional el completat a la modalitat AdES-A i la data de caducitat de la signatura preservada.
'Inicialització del client
Dim proxy As New digitalSignatureService
proxy.Url = http://psis.catcert.net/psis/catcert/dss
'Hash del document
Dim digestMethod As New DigestMethodType
digestMethod.Algorithm = "http://www.w3.org/2000/09/xmldsig#sha1"
Dim hashes(1) As DocumentHash
hashes(0) = New DocumentHash
hashes(0).DigestMethod = digestMethod
hashes(0).RefURI = "DetachedObjectReference-1"
hashes(0).DigestValue = Base64File("C:/temp/hash.txt")
Dim docs As New InputDocuments
docs.Items = hashes
'Signatura
Dim signatureType As SignatureObjectType = New SignatureObjectType
signatureType.Any = XMLFile("C:/XAdES-T_hash.xml")
'Completar
Dim optInputs As OptionalInputs = New OptionalInputs
Dim items(1) As Object
Dim types6(1) As ItemsChoiceType6
types6(0) = ItemsChoiceType6.ReturnUpdatedSignature
Dim update As ReturnUpdatedSignature = New ReturnUpdatedSignature
update.Type = "urn:oasis:names:tc:dss:1.0:profiles:XAdES:forms:ES-A"
items(0) = update
types6(1) = ItemsChoiceType6.ReturnSignatureInfo
Dim ads(0) As AttributeDesignator
Dim nom As New AttributeDesignator
29/03/12 S-Perdura_especificacions_WS_20120411.doc
S-Perdura. Especificacions tècniques dels serveis web (WS)
pàg 18/18
nom.Name =
"urn:oasis:names:tc:dss:1.0:profiles:XSS:signatureAttributes:Signatu
reExpirationDate"
ads(0) = nom
items(1) = ads
optInputs.Items = items
optInputs.ItemsElementName = types6
Dim request As VerifyRequest = New VerifyRequest
Dim response As VerifyResponse = New VerifyResponse
request.InputDocuments = docs
request.SignatureObject = signatureType
request.Profile = "urn:oasis:names:tc:dss:1.0:profiles:XSS"
request.OptionalInputs = optInputs
Dim y As String
y = MessageToString(request)
Console.WriteLine(y)
response = proxy.verify(request)