Este ejemplo tiene como objetivo validar la firma del documento que se ha realizado en el ejemplo de Generación de una firma XML. Para la comprensión de este ejemplo se recomienda haber entendido previamente el ejemplo de Verificación de una firma CMS/PKCS#7.

Para poder probar este ejemplo se debe descargar el archivo sampleAxis7.zip y seguir las instrucciones que se encuentran en Configuración del entorno.

El archivo descargado ya contiene una firma a verificar, pero si se desea se puede cambiar este archivo por el generado en el ejemplo Generación de una firma XML para comprobar la validez de la firma generada.

Este ejemplo es muy similar al de Verificación de una firma CMS/PKCS#7 aplicándolo al perfil XADES.

VerifyRequest vr = new VerifyRequest();
vr.setProfile(new URI(PROF_VERIFY_XADES));

Dado que la firma generada es detached, en la petición se deben incluir los datos del archivo firmado y de la firma.
Por un lado se introducen los datos de la firma, en un objeto de tipo SignatureObject y en este caso codificados en binario. Además de los datos también se indica que el formato de la firma introducida es CMS.

SignatureObject sobj = new SignatureObject();
Base64Binary b64bin = new Base64Binary();
b64bin.set_value(Util.readBinaryFile(path_in + signname));
sobj.setBase64XMLSignature(b64bin);
vr.setSignatureObject(sobj);

Los datos del archivo firmado se introducen en la petición como InputDocuments, también codificados en Base64 dentro de un objeto de tipo Document.

InputDocuments idoc = new InputDocuments();
Document doc = new Document();
doc.setBase64XML(Util.readBinaryFile(path_in + filename));
idoc.setDocument(doc);
vr.setInputDocuments(idoc);

Una vez se han introducido todos los datos en la petición se invoca la operación verify() que envía la petición al host y recoge la respuesta en un objeto VerifyResponse.

VerifyResponse vrs = bindingDsv.verify(vr);

Si se ejecuta el ejemplo se obtendrá una respuesta como la siguiente.

** RESPONSE **
---------------------
Major: urn:oasis:names:tc:dss:1.0:resultmajor:Success
Minor: urn:oasis:names:tc:dss:1.0:resultminor:ValidSignature_OnAllDocuments
DN: CN=Dave, OU=Demo, O=TrustedX, C=ES
Issuer Trust Level: 0
Issuer Trust Label: Administration