Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

ÍNDICE DE SERVICIOS

...

Expand
titleMás detalles

Signatura

SifeDocument sign(SignatureParameters params)

Parámetros de invocación

NombreTipoDescripción
paramsObjeto SIFE_1.7_Manual de integración v1.0#SignatureParameters (ver detalle de campos en el apartado de objetos comunes)

Parámetros de respuesta

NombreTipoDescripción
signedDocumentObjeto SIFE_1.7_Manual de integración v1.0#SifeDocument (ver detalle de campos en el apartado de objetos comunes)

Códigos error

CódigoDescripción
NO_SIGNATUREPROFILE_ERRORNo existe el perfil seleccionado para realizar la firma
NO_SIGNATURELEVEL_ERROREl valor de signatureLevel de params es nulo
BAD_SIGNATURE_PACKAGING_ERROREl método de packaging elegido no es compatible con el tipo de firma elegido
NOT_FOUND_ERRORError al obtener datos de CCSV
REQUIRED_DATA_ERRORDatos requeridos para la realización de la firma son nulos
REQUIRED_HASH_ERRORFaltan datos para la realización de una firma a partir de HASH
BAD_CERTIFICATE_ERROREl existe un certificado con el alias establecido en el keystore
REQUIRED_SIGN_ERROREl documento no tiene firma asociada en CCSV
STAMP_NOT_AUTHORIZEDEl 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ón

En 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
languagejava
firstline1
titleEjemplo de invocación firma CAdES básica
linenumberstrue
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.setDigestAlgorithm(DigestAlgorithm.SHA512);
signatureParameters.setSigningCertificateAlias("ast_cert");
signatureParameters.setDocument(sifeDocument);

SifeDocument documentSigned = digitalSignatureServiceClient.sign(signatureParameters);


Code Block
titleEjemplo de invocación firma XAdES Manifest utilizando documento completo.
linenumberstrue
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.setDigestAlgorithm(DigestAlgorithm.SHA512);
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
languagejava
firstline1
titleEjemplo de invocación firma usando Hash
linenumberstrue
//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
titleEjemplo de invocación de firma XAdES nivel XAdES_A mediante hash SHA-512
linenumberstrue
//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
languagejava
firstline1
titleEjemplo de invocación firma usando CSV
linenumberstrue
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);

...

Expand
titleMás detalles

Signatura

SifeDocument extendSignature (ExtensionParameters params)

Parámetros de invocación

NombreTipoDescripción
paramsObjeto SIFE_1.7_Manual de integración v1.0#ExtensionParameters (ver detalle de campos en el apartado de objetos comunes)

Parámetros de respuesta

NombreTipoDescripción
signedDocumentSifeDocument

Objeto SIFE_1.7_Manual de integración v1.0#SifeDocument (ver detalle de campos en el apartado de objetos comunes)

Códigos error

CódigoDescripción
REQUIRED_SIGN_ERROREl documento no tiene firma asociada en CCSV
NOT_FOUND_ERRORError al obtener datos de CCSV
REQUIRED_DATA_ERRORDatos requeridos para la realización de la firma son nulos
REQUIRED_HASH_ERRORFaltan datos para la realización de una firma a partir de HASH
BAD_CERTIFICATE_ERROREl existe un certificado con el alias establecido en el keystore

Ejemplos de invocación

Es posible la elevación de la firma a partir del contenido del documento, o a partir de su Hash si se trata de una firma detached. 

Code Block
languagejava
firstline1
titleEjemplo de invocación elevación CAdES-A documento completo
linenumberstrue
SifeDocument extendedSignature = null;

// Se establece la firma
byte[] signature= Base64.decode(FileUtils.readFileToString(new File("pathFile"));
SifeDocument sign = new SifeDocument();
sign.setData(signature);

// Se añade el contenido del documento porque se trata de una firma detached
byte[] extendedDocument = FileUtils.readFileToByteArray(new File("pathFile"));
SifeDocument detachedContent = new SifeDocument();
detachedContent.setData(document);

// Especificamos tanto el documento original como la firma y el nivel de elevacion de la firma
ExtensionParameters extensionParameters = new ExtensionParameters();
extensionParameters.setDetachedContent(detachedContent);
extensionParameters.setSignature(sign);
extensionParameters.setSignatureLevel(SignatureLevel.CAdES_A);

extendedSignature = digitalSignatureServiceClient.extendSignature(extensionParameters);


Para realizar la elevación a partir del Hash del documento
Code Block
languagejava
firstline1
titleEjemplo de invocación elevación CAdES-A con Hash
linenumberstrue
//Generacion del hash del documento
byte[] originalDocument = FileUtils.readFileToByteArray(new File("pathFile"));
MessageDigest.getInstance("SHA-1");
Byte[]originalDocumentHash = md.digest(originalDocument);

// Se establece la firma
byte[] signature= Base64.decode(FileUtils.readFileToString(new File("pathFile"));
SifeDocument sign = new SifeDocument();
sign.setData(signature);

// Se añade el contenido del documento porque se trata de una firma detached
byte[] extendedDocument = FileUtils.readFileToByteArray(new File("pathFile"));
SifeDocument detachedContent = new SifeDocument();
sign.setDigestAlgorithm(DigestAlgorithm.SHA1);
sign.setDigestValue(originalDocumentHash);

// Especificamos tanto el documento original como la firma y el nivel de elevacion de la firma
ExtensionParameters extensionParameters = new ExtensionParameters();
extensionParameters.setDetachedContent(detachedContent);
extensionParameters.setSignature(sign);
extensionParameters.setSignatureLevel(SignatureLevel.CAdES_A);

SifeDocument  extendedSignature = digitalSignatureServiceClient.extendSignature(extensionParameters);


...

Expand
titleMás detalles

Signatura

CertificateReport verifyCertificate(CertificateParameters params)

Parámetros de invocación

NombreTipoDescripción
paramsObjeto SIFE_1.7_Manual de integración v1.0#CertificateParameters (ver detalle de campos en el apartado de objetos comunes)

Parámetros de respuesta

NombreTipoDescripción
certificateReportObjeto CertificateReport (ver detalle de campos en el apartado de objetos comunes)

Códigos error

Los códigos de error que se obtienen son producidos directamente por la plataforma @firma, estos errores no poseen un código propio de SIFE sino que se devuelve el código devuelvo por la plataform.

Ejemplos de invocación

Code Block
languagejava
firstline1
titleEjemplo de invocación verifyCertificate
linenumberstrue
byte[] certificate = FileUtils.readFileToByteArray(new File("pathFile");

CertificateParameters certificateParameters = new CertificateParameters();
certificateParameters.setCertificate(certificate);

CertificateReport certificateReport = digitalSignatureServiceClient.verifyCertificate(certificateParameters);

...

Expand
titleMás detalles

Signatura

VerificationReport verifySignature(VerificationParameters params)

Parámetros de invocación

NombreTipoDescripción
paramsObjeto SIFE_1.7_Manual de integración v1.0#VerificationParameters (ver detalle de campos en el apartado de objetos comunes)

Parámetros de respuesta

NombreTipoDescripción
verificationReportObjeto SIFE_1.7_Manual de integración v1.0#VerificationReport (ver detalle de campos en el apartado de objetos comunes)

Códigos error

CódigoDescripción
REQUIRED_SIGN_ERRORNo se encuentra la firma en CCSV
NOT_FOUND_ERRORAlgún dato necesario para la validación de la firma no se encuentra en base de datos
REQUIRED_DATA_ERRORDatos del contenido del documento son nulos
REQUIRED_HASH_ERRORFaltan datos para la realización de una firma a partir de HASH

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ón

A continuación se muestra un ejemplo de invocación al método verifySignature de una firma detached y pasando como atributo el contenido completo del documento.

Code Block
languagejava
firstline1
titleEjemplo de invocación verifySignature pasando contenido del documento
linenumberstrue
byte[] originalDocument = FileUtils.readFileToByteArray(new File("pathFile"));		// Contenido del documento en texto plano
byte[] signature = FileUtils.readFileToByteArray(new File("pathFilePass")); 		// La firma en texto plano

SifeDocument originalSifeDocument = new SifeDocument();
originalSifeDocument.setData(originalDocument);

SifeDocument signatureSifeDocument = new SifeDocument();
signatureSifeDocument.setData(signature);

// Pareseamos de formato de firma ASF a formato de firma SIFE.
VerificationParameters verificationParameters = new VerificationParameters();
verificationParameters.setSignatureFormat(SignatureFormat.CAdES);
verificationParameters.setSignature(signatureSifeDocument);
verificationParameters.setDetachedContent(originalSifeDocument);

VerificationReport result = digitalSignatureServiceClient.verifySignature(verificationParameters);


Code Block
titleEjemplo de invocación verifySignature de firma XAdES Manifest mediante documento copmleto
linenumberstrue
byte[] originalDocument = FileUtils.readFileToByteArray(new File("pathFile"));		// Contenido del documento en texto plano
byte[] signature = FileUtils.readFileToByteArray(new File("pathFilePass")); 		// La firma en texto plano

SifeDocument originalSifeDocument = new SifeDocument();
originalSifeDocument.setData(originalDocument);

SifeDocument signatureSifeDocument = new SifeDocument();
signatureSifeDocument.setData(signature);

// Pareseamos de formato de firma ASF a formato de firma SIFE.
VerificationParameters verificationParameters = new VerificationParameters();
verificationParameters.setSignatureFormat(SignatureFormat.XAdES); //Formato de firma XAdES
verificationParameters.setSignature(signatureSifeDocument);
verificationParameters.setDetachedContent(originalSifeDocument);

VerificationReport result = digitalSignatureServiceClient.verifySignature(verificationParameters);



En el caso de que se pase como parámetro el CSV del documento, el contenido de dicho documento se obtendrá de CCSV

Code Block
languagejava
firstline1
titleEjemplo de invocación verifySignature a través de CSV
linenumberstrue
byte[] signature = FileUtils.readFileToByteArray(new File("pathFilePass")); 		// La firma en texto plano

SifeDocument originalSifeDocument = new SifeDocument();
originalSifeDocument.setCsv(CSV);

SifeDocument signatureSifeDocument = new SifeDocument();
signatureSifeDocument.setData(signature);

// Pareseamos de formato de firma ASF a formato de firma SIFE.
VerificationParameters verificationParameters = new VerificationParameters();
verificationParameters.setSignatureFormat(SignatureFormat.CAdES);
verificationParameters.setSignature(signatureSifeDocument);
verificationParameters.setDetachedContent(originalSifeDocument);

VerificationReport result = digitalSignatureServiceClient.verifySignature(verificationParameters);

SifeDocument originalSifeDocument = new SifeDocument();
originalSifeDocument.setData(originalDocument);


La tercera forma de invocar al método verifySignature es a través del Hash del documento. Para ello hay que indicar el algoritmo de digest. A continuación se muestra un ejemplo de invocación utilizando el Hash del documento.

Code Block
languagejava
firstline1
titleEjemplo de invocación verifySignature a través de Hash
linenumberstrue
//Generacion del hash del documento TODO
byte[] originalDocument = FileUtils.readFileToByteArray(new File("pathFile"));
MessageDigest.getInstance("SHA-256");
Byte[]originalDocumentHash = md.digest(originalDocument);

byte[] signature = FileUtils.readFileToByteArray(new File("pathFilePass")); 		// La firma en texto plano

SifeDocument firma = new SifeDocument();
firma.setData(documentSign);

SifeDocument detachedContent = new SifeDocument();
detachedContent.setDigestValue(originalDocumentHash);
detachedContent.setDigestAlgorithm(DigestAlgorithm.SHA256);

// Verificamos la firma con sife
VerificationParameters verificationParameters = new VerificationParameters();
verificationParameters.setSignature(firma);
verificationParameters.setDetachedContent(detachedContent);
verificationParameters.setSignatureFormat(SignatureFormat.CAdES);
		
VerificationReport verificationReport = digitalSignatureServiceClient.verifySignature(verificationParameters);


Code Block
titleEjemplo de invocación verifySignature de XAdES Manifest mediante hash
linenumberstrue
//Generacion de SifeDocuments para la verificación
byte[] originalDocument = FileUtils.readFileToByteArray(new File("pathFile"));
MessageDigest.getInstance("SHA-1"); // El algoritmo del hash a comparar debe ser el mismo que el usado en la firma
Byte[] originalDocumentHash = md.digest(originalDocument);

byte[] signature = FileUtils.readFileToByteArray(new File("pathFilePass")); // La firma en texto plano

SifeDocument firma = new SifeDocument();
firma.setData(documentSign);

SifeDocument detachedContent = new SifeDocument();
detachedContent.setDigestValue(originalDocumentHash);
detachedContent.setDigestAlgorithm(DigestAlgorithm.SHA1); 

// Verificamos la firma con sife
VerificationParameters verificationParameters = new VerificationParameters();
verificationParameters.setSignature(firma);
verificationParameters.setDetachedContent(detachedContent);
verificationParameters.setSignatureFormat(SignatureFormat.XAdES);
		
VerificationReport verificationReport = digitalSignatureServiceClient.verifySignature(verificationParameters);


...

Expand
titleMás detalles

Signatura

SifeDocument wssSign(WSSSignatureParameters params)

Parámetros de invocación

NombreTipoDescripción
paramsWSSSignatureParameters  Objeto (ver detalle de campos en el apartado de objetos comunes)

Parámetros de respuesta

NombreTipoDescripción
sifeDocSIFE_1.7_Manual de integración v1.0#SifeDocument Objeto (ver detalle de campos en el apartado de objetos comunes)

Códigos error

CódigoDescripción
NO_DATA_ERROREl parámetro document del objeto WSSSignatureParameters es nulo o no tiene datos
INTERNAL_SERVER_ERRORError interno en el servidor
NO_SIGNINGCERTIFICATEALIAS_ERRORWSSAction = 'SIGNATURE' y SigningCertificateAlias es nulo 
BAD_CERTIFICATE_ERRORNo exite el certificado con el alias indicado
NO_ENCRYPTIONCERTIFICATEALIAS_ERRORWSSAction = 'SIGNATURE' y EncryptionCertificateAlias es nulo
STAMP_NOT_AUTHORIZEDEl sello utilizado para la firma no ha sido autorizado previamente

Ejemplos de invocación

A continuación se muestra un ejemplo de invocación al método wssSign en el cual se firma el elemento "Body" de la petición.

Code Block
languagejava
firstline1
titleEjemplo de invocación verifyTimestamp a través de CSV
linenumberstrue
		String cadenaFirma = //petición a firmar
		String aliasCert = // certificado utilizado para la firma
		String [] idToSign = new String[1];
		idToSign[0] = "Body";
		
        System.out.println("BEGIN firmaWSSecurity()");
        System.out.println("Param cadenaFirma: " + cadenaFirma);
        System.out.println("Param aliasCert: " + aliasCert);

        SifeDocument documentoOriginal = new SifeDocument();
        documentoOriginal.setData(cadenaFirma.getBytes("UTF-8"));

        WSSSignatureParameters wsSSignatureParameters = new WSSSignatureParameters();
        List<WSSAction> actions = new ArrayList<>();
        actions.add(WSSAction.SIGNATURE);
        actions.add(WSSAction.TIMESTAMP);
        wsSSignatureParameters.setActions(actions);
        wsSSignatureParameters.setSigningCertificateAlias(aliasCert);
        wsSSignatureParameters.setDocument(documentoOriginal);
        wsSSignatureParameters.setUseSingleCertificate(Boolean.TRUE);

        // partes a firmar asumimos. Se firmará el body
        List<WSSEncryptionPart> parts = new ArrayList<>();
        for (String part : idToSign) {
            WSSEncryptionPart wsSEncryptionPart = new WSSEncryptionPart();
            wsSEncryptionPart.setName(part);
            wsSEncryptionPart.setNamespace("http://schemas.xmlsoap.org/soap/envelope/");
            parts.add(wsSEncryptionPart);
        }
        wsSSignatureParameters.setSignatureParts(parts);

        SifeDocument documentSigned = digitalSignatureServiceClient.wssSign(wsSSignatureParameters);

        // Se valida el resultado
        if (documentSigned != null && documentSigned.getData() != null) {
            System.out.println("Documento firmado " + new String(documentSigned.getData()));
            WSSVerificationParameters vparams = new WSSVerificationParameters();
            vparams.setDocument(documentSigned);
            vparams.setSigningCertificateAlias(aliasCert);

            WSSVerificationReport report = digitalSignatureServiceClient.wssVerify(vparams);
            if (report.getIndication() == Indication.VALID && report.getData() != null) {
                System.out.println("Firma válida");
            } else {
                if (report.getErrors() != null) {
                    for (VerificationError ve : report.getErrors()) {
                        System.out.println("Error code: " + ve.getCode() + " ErrorMsg: " + ve.getDescription());
                    }
                }
            }
        } else {
            System.out.println("Algún problema al generar la firma " + aliasCert + " petición : " + cadenaFirma);
        }
        return new String(documentSigned.getData());


...

Expand
titleMás detalles

Signatura

WSSVerificationReport wssVerify(WSSVerificationParametersparams)

Parámetros de invocación

NombreTipoDescripción
paramsWSSVerificationParametersparams  Objeto (ver detalle de campos en el apartado de objetos comunes)

Parámetros de respuesta

NombreTipoDescripción
reportWSSVerificationReport Objeto (ver detalle de campos en el apartado de objetos comunes)

Códigos error

CódigoDescripción
NO_DATA_ERROREl parámetro document del objeto WSSSignatureParameters es nulo o no tiene datos
INTERNAL_SERVER_ERRORError interno en el servidor
NO_SIGNINGCERTIFICATEALIAS_ERRORWSSAction = 'SIGNATURE' y SigningCertificateAlias es nulo 
BAD_CERTIFICATE_ERRORNo exite el certificado con el alias indicado
NO_ENCRYPTIONCERTIFICATEALIAS_ERRORWSSAction = 'SIGNATURE' y EncryptionCertificateAlias es nulo
STAMP_NOT_AUTHORIZEDEl sello utilizado para la firma no ha sido autorizado previamente

Ejemplos de invocación

A continuación se muestra un ejemplo de invocación al método wssSign en el cual se firma el elemento "Body" de la petición.

Code Block
languagejava
firstline1
titleEjemplo de invocación verifyTimestamp a través de CSV
linenumberstrue
		String cadenaFirma = //petición a firmar
		String aliasCert = // certificado utilizado para la firma
		String [] idToSign = new String[1];
		idToSign[0] = "Body";
		
        System.out.println("BEGIN firmaWSSecurity()");
        System.out.println("Param cadenaFirma: " + cadenaFirma);
        System.out.println("Param aliasCert: " + aliasCert);

        SifeDocument documentoOriginal = new SifeDocument();
        documentoOriginal.setData(cadenaFirma.getBytes("UTF-8"));

        WSSSignatureParameters wsSSignatureParameters = new WSSSignatureParameters();
        List<WSSAction> actions = new ArrayList<>();
        actions.add(WSSAction.SIGNATURE);
        actions.add(WSSAction.TIMESTAMP);
        wsSSignatureParameters.setActions(actions);
        wsSSignatureParameters.setSigningCertificateAlias(aliasCert);
        wsSSignatureParameters.setDocument(documentoOriginal);
        wsSSignatureParameters.setUseSingleCertificate(Boolean.TRUE);

        // partes a firmar asumimos. Se firmará el body
        List<WSSEncryptionPart> parts = new ArrayList<>();
        for (String part : idToSign) {
            WSSEncryptionPart wsSEncryptionPart = new WSSEncryptionPart();
            wsSEncryptionPart.setName(part);
            wsSEncryptionPart.setNamespace("http://schemas.xmlsoap.org/soap/envelope/");
            parts.add(wsSEncryptionPart);
        }
        wsSSignatureParameters.setSignatureParts(parts);

        SifeDocument documentSigned = digitalSignatureServiceClient.wssSign(wsSSignatureParameters);

        // Se valida el resultado
        if (documentSigned != null && documentSigned.getData() != null) {
            System.out.println("Documento firmado " + new String(documentSigned.getData()));
            WSSVerificationParameters vparams = new WSSVerificationParameters();
            vparams.setDocument(documentSigned);
            vparams.setSigningCertificateAlias(aliasCert);

            WSSVerificationReport report = digitalSignatureServiceClient.wssVerify(vparams);
            if (report.getIndication() == Indication.VALID && report.getData() != null) {
                System.out.println("Firma válida");
            } else {
                if (report.getErrors() != null) {
                    for (VerificationError ve : report.getErrors()) {
                        System.out.println("Error code: " + ve.getCode() + " ErrorMsg: " + ve.getDescription());
                    }
                }
            }
        } else {
            System.out.println("Algún problema al generar la firma " + aliasCert + " petición : " + cadenaFirma);
        }
        return new String(documentSigned.getData());


...

Expand
titleMás detalles

Signatura

AuthenticationOperationResult verifyCertificateForAuthentication(AuthenticationParameters params)

Parámetros de invocación

NombreTipoDescripción
paramsAuthenticationParameters  Objeto (ver detalle de campos en el apartado de objetos comunes)


Parámetros de respuesta

NombreTipoDescripción
result1232208140Objeto (ver detalle de campos en el apartado de objetos comunes)


Códigos error

CódigoDescripción
404La aplicación indicada no existe


Ejemplos de invocación

A continuación se muestra un ejemplo de invocación al método verifyCertificateForAuthentication en el cual se verifica la validez de un certificado.

Code Block
languagejava
firstline1
titleEjemplo de invocación verifyTimestamp a través de CSV
linenumberstrue
String accountId = "account1";	
X509Certificate chain[] = (X509Certificate[]) request.getAttribute("javax.servlet.request.X509Certificate");

AuthenticationParameters params = new AuthenticationParameters();
params.setTargetAccountId(accountId);
params.setCertificates(Arrays.asList(chain));
	
AuthenticationOperationResult result = loginServiceClient.verifyCertificateForAuthentication(params);


...

NombreValor
XAdES_CXAdES_C
XAdES_XXAdES_X
XAdES_XLXAdES_XL
XAdES_AXAdES_A
XAdES_BASELINE_LTAXAdES_BASELINE_LTA
XAdES_BASELINE_LTXAdES_BASELINE_LT
XAdES_BASELINE_TXAdES_BASELINE_T
XAdES_BASELINE_BXAdES_BASELINE_B
CAdES_BASELINE_LTACAdES_BASELINE_LTA
CAdES_BASELINE_LTCAdES_BASELINE_LT
CAdES_BASELINE_TCAdES_BASELINE_T
CAdES_BASELINE_BCAdES_BASELINE_B
CAdES_CCAdES_C
CAdES_XCAdES_X
CAdES_XLCAdES_XL
CAdES_ACAdES_A
PAdES_BASELINE_LTAPAdES_BASELINE_LTA
PAdES_BASELINE_LTPAdES_BASELINE_LT
PAdES_BASELINE_TPAdES_BASELINE_T
PAdES_BASELINE_BPAdES_BASELINE_B
PAdES_LTVPAdES_LTV
ASiC_S_BASELINE_LTAASiC_S_BASELINE_LTA
ASiC_S_BASELINE_LTASiC_S_BASELINE_LT
ASiC_S_BASELINE_TASiC_S_BASELINE_T
ASiC_S_BASELINE_BASiC_S_BASELINE_B
ASiC_E_BASELINE_LTAASiC_E_BASELINE_LTA
ASiC_E_BASELINE_LTASiC_E_BASELINE_LT
ASiC_E_BASELINE_TASiC_E_BASELINE_T
ASiC_E_BASELINE_BASiC_E_BASELINE_B
WSSWSS
CMSCMS_CMS
XMLDSIGXMLDSIG_XMLDSIG
PAdES_BASIC

PAdES_BASIC

CAdES_BESCAdES_BES
CAdES_EPESCAdES_EPES
CAdES_TCAdES_T
XAdES_BESXAdES_BES
XAdES_EPESXAdES_EPES
XAdES_TXAdES_T
PAdES_BESPAdES_BES
PAdES_EPESPAdES_EPES
PAdES_TPAdES_T
ODFODF

...