PERMISO Y EXENCIÓN DE RESPONSABILIDAD En este sitio web aparecen programas que pueden ser descargados. Estos programas están sujetos a derechos de reproducción y su dueño reclama derecho exclusivo sobre estos programas. El propietario de los programas que usted se descarga en este sitio web puede aparecer indicado en los ficheros READ-ME o dentro del código fuente. Por esta nota se permite el uso, copia, modificación y distribución de estos programas y su código fuente para uso no comercial y sin pago alguno, siempre que el dueño de los derechos u otras personas que contribuyan no se usen con fines publicitarios sin un previo permiso por escrito. El dueño de los derechos y las personas que han contribuido no garantizan que estos programas sean apropiados para uso alguno. Estos programas se distribuyen "tal cual" sin garantía explícita o implícita, incluyendo sin limitación las garantías implícitas de comerciabilidad y adecuación a un uso especifico. En ningún caso, el autor y los que han contribuido a estos programas, serán responsables de ningún daño directo, indirecto, incidental, especial, punitivo o consecuente causados por los programas (incluyendo sin limitación la pérdida de uso, datos, ganancias o interrupción de negocios) sea cual fuera su causa y bajo cualquier teoría de responsabilidad. AcceptCancel
Este ejemplo tiene como objetivo firmar un documento de texto mediante el servicio de firma de TrustedX. Para la comprensión de este ejemplo, se recomienda haber entendido previamente el ejemplo de validación de un certificado X.509.
Para poder probar este ejemplo se debe descargar el archivo sampleSW2.zip y seguir las instrucciones que se encuentran en Configuración del entorno.
A diferencia del ejemplo de validación de certificados, para realizar una firma se debe crear una petición de firma mediante un objeto SmartSignRequest. Como en el ejemplo anterior se deben definir las constantes y incluir una cabecera de autenticación en la petición.
SmartSignRequest ssr = new SmartSignRequest(host);
Se debe definir el perfil de la firma a realizar, en este caso CMS/PKCS#7.
ssr.setProfile(Constants.Profile.CMSPKCS7);
En este ejemplo se pretende realizar la firma de los datos contenidos en el archivo HelloWorld.txt, así se incluyen los datos codificados en Base64. Además indicaremos con que certificado se debe realizar la firma, seleccionándolo a partir del nombre distinguido del usuario. También se indica el formato de la firma que será CMS y dado que no se indica nada más la firma será de tipo detached.
ssr.setInputBase64Data(Util.readBinaryFileB64(path_in + filename));
ssr.setKeySubjectName(distinguishedName);
ssr.setSignatureType(Constants.SignatureType.CMS);
Una vez se han introducido todos los datos en la petición se invoca la operación send() que envía la petición al host y recoge la respuesta en un objeto SmartSignResponse.
SmartSignResponse ssrs = ssr.send();
Una vez envidada la petición se puede comprobar si ésta se ha procesado correctamente consultando los parámetros de la respuesta. Para ello se usan las funciones de la clase auxiliar UtilTrustedX. Si todo va bien se recupera la firma de la respuesta y se almacena en un fichero, en el ejemplo de validación de firma CMS/PKCS#7 se verá como se debe comprobar la validez de la firma realizada. Para recuperar la firma, para el perfil CMS/PKCS#7 debe utilizarse el método getSignatureBase64().
if (UtilTrustedX.checkSW(ssrs.getResultMajor(), ssrs.getResultMinor(), ssrs.getResultMessage())) {
String destFilename = path_out + filename.substring(0, filename.lastIndexOf("."))
+ "SignedSW.txt.p7s";
Util.writeBinaryFileB64(destFilename, ssrs.getSignatureBase64());
}
Después de ejecutar el ejemplo se obtiene una respuesta como la siguiente y un archivo con la firma.
File saved successfully on: data/output/HelloWorldSignedSW.txt.p7s
|