SignaturaSifeDocument sign(SignatureParameters params) Parámetros de invocaciónParámetros de respuestaCódigos errorCódigo | Descripción |
---|
NO_SIGNATUREPROFILE_ERROR | No existe el perfil seleccionado para realizar la firma | NO_SIGNATURELEVEL_ERROR | El valor de signatureLevel de params es nulo | BAD_SIGNATURE_PACKAGING_ERROR | El método de packaging elegido no es compatible con el tipo de firma elegido | NOT_FOUND_ERROR | Error al obtener datos de CCSV | REQUIRED_DATA_ERROR | Datos requeridos para la realización de la firma son nulos | REQUIRED_HASH_ERROR | Faltan datos para la realización de una firma a partir de HASH | BAD_CERTIFICATE_ERROR | El existe un certificado con el alias establecido en el keystore | REQUIRED_SIGN_ERROR | El documento no tiene firma asociada en CCSV | STAMP_NOT_AUTHORIZED | El sello utilizado para la firma no ha sido autorizado previamente |
Pueden obtenerse otros códigos de error diferentes a los comentados en la tabla anterior se produce algún error durante el proceso de firma en la plataforma @firma, estos errores no poseen un código propio de SIFE sino que se devuelve el código devuelvo por la plataforma directamente. Ejemplos de invocaciónEn función de los valores que poseen los parámetros de entrada, se pueden realizar varias operaciones de firma, firma CAdES básica, firma con sello de tiempo, firma con CSV, firma con Hash, entre otros. A continuación se muestran algunos ejemplos de invocaciones para realizar estas firmas.
Code Block |
---|
language | java |
---|
firstline | 1 |
---|
title | Ejemplo de invocación firma CAdES básica |
---|
linenumbers | true |
---|
| byte[] originalDocument = FileUtils.readFileToByteArray(new File("pathFile"));
SifeDocument sifeDocument = new SifeDocument();
sifeDocument.setData(originalDocument);
SignatureParameters signatureParameters = new SignatureParameters();
signatureParameters.setSignatureLevel(SignatureLevel.CAdES_BASELINE_B);
signatureParameters.setSignaturePackaging(SignaturePackaging.DETACHED);
signatureParameters.setSigningCertificateAlias("ast_cert");
signatureParameters.setDocument(sifeDocument);
SifeDocument documentSigned = digitalSignatureServiceClient.sign(signatureParameters); |
Code Block |
---|
title | Ejemplo de invocación firma XAdES Manifest utilizando documento completo. |
---|
linenumbers | true |
---|
| byte[] originalDocument = FileUtils.readFileToByteArray(new File("pathFile"));
SifeDocument sifeDocument = new SifeDocument();
sifeDocument.setData(originalDocument);
signatureParameters.setDigestAlgorithm(DigestAlgorithm.SHA1);
signatureParameters.setSignatureLevel(SignatureLevel.XAdES_BASELINE_B);
signatureParameters.setSignaturePackaging(SignaturePackaging.DETACHED);
signatureParameters.setSigningCertificateAlias("ast_cert");
signatureParameters.setDocument(sifeDocument);
SifeDocument documentSigned = digitalSignatureServiceClient.sign(signatureParameters); |
En el caso de que se quiera realizar la firma a partir del Hash del documento, hay que tener en cuenta que el algoritmo utilizado para la generación del Hash tiene que ser el indicado como DigestAlgorithm. Code Block |
---|
language | java |
---|
firstline | 1 |
---|
title | Ejemplo de invocación firma usando Hash |
---|
linenumbers | true |
---|
| //Generacion del hash del documento
byte[] originalDocument = FileUtils.readFileToByteArray(new File("pathFile"));
MessageDigest.getInstance("SHA-256");
Byte[]originalDocumentHash = md.digest(originalDocument);
//Se rellenan los datos del documento
SifeDocument sifeDocument = new SifeDocument();
sifeDocument.setDigestAlgorithm(DigestAlgorithm.SHA256);
sifeDocument.setDigestValue(originalDocumentHash);
SignatureParameters signatureParameters = new SignatureParameters();
signatureParameters.setDigestAlgorithm(DigestAlgorithm.SHA256);
signatureParameters.setSignatureLevel(SignatureLevel.CAdES_A);
signatureParameters.setSignaturePackaging(SignaturePackaging.DETACHED);
signatureParameters.setSigningCertificateAlias("ast_cert");
signatureParameters.setDocument(sifeDocument);
SifeDocument documentSigned = digitalSignatureServiceClient.sign(signatureParameters); |
Code Block |
---|
title | Ejemplo de invocación de firma XAdES nivel XAdES_A mediante hash SHA-512 |
---|
linenumbers | true |
---|
| //Generacion del hash del documento
byte[] originalDocument = FileUtils.readFileToByteArray(new File("pathFile"));
MessageDigest.getInstance("SHA-512");
Byte[]originalDocumentHash = md.digest(originalDocument);
//Se rellenan los datos del documento
SifeDocument sifeDocument = new SifeDocument();
sifeDocument.setDigestAlgorithm(DigestAlgorithm.SHA512);
sifeDocument.setDigestValue(originalDocumentHash);
SignatureParameters signatureParameters = new SignatureParameters();
signatureParameters.setDigestAlgorithm(DigestAlgorithm.SHA512);
signatureParameters.setSignatureLevel(SignatureLevel.XAdES_A);
signatureParameters.setSignaturePackaging(SignaturePackaging.DETACHED);
signatureParameters.setSigningCertificateAlias("ast_cert");
signatureParameters.setDocument(sifeDocument);
SifeDocument documentSigned = digitalSignatureServiceClient.sign(signatureParameters); |
En el caso de indicar un CSV para la realización de la firma, se realizará una búsqueda del documento en CCSV a partir de dicho dato. Serán ignorados los datos añadidos a partir de sifeDocument.setData(originalDocument) y sifeDocument.setDigestValue(originalDocumentHash). En el caso de que no se encuentre un documento con dicho CSV en CCSV, se devolverá un error. Importante: En ningún caso el documento será actualizado en CCSV, será tarea del integrador realizar esta actualización si fuera necesario. Code Block |
---|
language | java |
---|
firstline | 1 |
---|
title | Ejemplo de invocación firma usando CSV |
---|
linenumbers | true |
---|
| SifeDocument sifeDocument = new SifeDocument();
sifeDocument.setCsv(CSV);
SignatureParameters signatureParameters = new SignatureParameters();
signatureParameters.setDigestAlgorithm(DigestAlgorithm.SHA256);
signatureParameters.setSignatureLevel(SignatureLevel.CAdES_A);
signatureParameters.setSignaturePackaging(SignaturePackaging.DETACHED);
signatureParameters.setSigningCertificateAlias("ast_cert");
signatureParameters.setDocument(sifeDocument);
SifeDocument documentSigned = digitalSignatureServiceClient.sign(signatureParameters); |
|