Este ejemplo tiene como objetivo validar el estado de un certificado mediante el servicio de validación de TrustedX. A continuación se describen los pasos a seguir para crear una petición de validación usando Axis.

Para poder probar este ejemplo se debe descargar el archivo sampleAxis1.zip y seguir las instrucciones que se encuentran en Configuración del entorno. El archivo descargado contiene el código de ejemplo y los archivos necesarios, en este caso el certificado a validar.

En primer lugar en el ejemplo se definen las constantes necesarias. Las constantes que se deben definir para el ejemplo incluyen el lugar dónde se encuentra el certificado a validar, los parámetros de autenticación y la dirección dónde se encuentra la plataforma TrustedX a la que se invocaran los servicios.
Además se incluyen aquellos parametros relativos a las urn que identifican el perfil del tipo de verificación y que se trata de un certificado.

private static final String path_in = "data/input/";
private static final String filename = "dave.crt";
private static final String host = "https://labs.safelayer.com/demo/services/SignatureVerify";
private static final String PROF_CERT_STATUS = "urn:safelayer:tws:dss:1.0:profiles:certstatus:1.0:verify";
private static final String PROF_CERT_TYPE = "urn:safelayer:tws:dss:1.0:profiles:names:certificate";
private static final String user = "dave";
private static final String password = "trustedx";

A continuación se debe inicializar la conexión con el servicio web de verificación de firmas, indicando dónde se encuentran dichos servicios, es decir, la dirección de TrustedX que se va a utilizar. También es necesario configurar los parámetros de SSL.

TWSDSVLocator locatorDsv = new TWSDSVLocator();
locatorDsv.setSignatureVerifyEndpointAddress(host);
SignatureVerificationType svt = locatorDsv.getSignatureVerify();
DSVBindingStub bindingDsv = (DSVBindingStub) svt;
UtilTrustedX.ssl_conf();

Una vez inicializada la conexión se crea la petición de verificación con un objeto de tipo VerifyRequest.
Es necesario incluir las credenciales de autenticación, en este caso mediante nombre de usuario y contraseña en claro. En todos los ejemplos se utiliza está forma de autenticación. La función addUsernameToken() añade los parámetros de autenticación en la cabecera SOAP de la petición.
También debe definir el perfil que se va a usar dentro del servicio de validación de TrustedX, en este caso certstatus.

VerifyRequest vr = new VerifyRequest();
vr.setProfile(new URI(PROF_CERT_STATUS));
UtilTrustedX.addUsernameToken(bindingDsv, user, password);

Finalmente se añaden los datos del certificado a validar en Base64, indicando que se trata de un certificado firmado. Para ello se crea un objeto SignatureObject, que contendrá un objeto Base64Signature con el certificado, y que se incluye dentro de la petición.

SignatureObject sobj = new SignatureObject();
Base64Signature b64sig = new Base64Signature();
b64sig.setType(new URI(PROF_CERT_TYPE));
b64sig.set_value(Util.readBinaryFile(path_in + filename));
sobj.setBase64Signature(b64sig);
vr.setSignatureObject(sobj);

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

VerifyResponse vrs = bindingDsv.verify(vr);

Falta ver que sale como respuesta, ahora sale el SOAP response.

** 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