Problema al integrarse contra el servicio de firma de coesys - Foro de Consultas - Seguridad
Foros de consultas y discusión
Problema al integrarse contra el servicio de firma de coesys
Diego Menendez, modificado hace 7 años.
Problema al integrarse contra el servicio de firma de coesys
Youngling Mensajes: 7 Fecha de incorporación: 12/06/17 Mensajes recientes
00
Estoy intentando realizar la integración con la implementanción de referencia, con el certificado enviado por AGESIC luego de enviado el formulario de solicitud, pero estoy teniendo el siguiente problema con el keystore que configure:
com.gemalto.ics.rnd.egov.dss.sdk.exception.KeyStoreException: java.io.IOException: stream does not represent a PKCS12 key store
2017-06-12 15:56:07.706 INFO 2611 --- [nio-8080-exec-2] u.com.agesic.firma.RequestDSSController : BB387B29C66557B8D56A094A687555A4 NO PUDO SUBIR EL ARCHIVO
Qué keystore configuro? Lo tengo que generar ?
keystore.route=/home/local/DOMST/dmenendez/Desktop/esign-releases/certs/AGESIC-COESYS-DSS-TESTING.cer
com.gemalto.ics.rnd.egov.dss.sdk.exception.KeyStoreException: java.io.IOException: stream does not represent a PKCS12 key store
2017-06-12 15:56:07.706 INFO 2611 --- [nio-8080-exec-2] u.com.agesic.firma.RequestDSSController : BB387B29C66557B8D56A094A687555A4 NO PUDO SUBIR EL ARCHIVO
Qué keystore configuro? Lo tengo que generar ?
keystore.route=/home/local/DOMST/dmenendez/Desktop/esign-releases/certs/AGESIC-COESYS-DSS-TESTING.cer
Rodrigo Bermudez, modificado hace 7 años.
RE: Problema al integrarse contra el servicio de firma de coesys
00
Hola Diego,
Pediste a soporte que te dieran de alta en el DSS de COESYS de TEST? Al igual que el IdP para autenticación te tienen que dar de alta como Service Provider y agregar tu certificado público.
Una vez hecho esto create un keystore con tu clave privada para firmar (puede ser autogenerada para TEST, lo importante es que en el paso previo le hayas pasado tu certificado público para que lo agreguen a COESYS y te valide la firma)
Luego, yendo al error que colocas, estás usando un certificado y no un keystore para firmar, acá deberías generarte un keystore con tu clave privada y referenciarlo. Una buena herramienta para generarte un keystore es el keystore explorer. Si no lo podes hacer utilizando openssl desde la consola.
Saludos!
Rodrigo
Pediste a soporte que te dieran de alta en el DSS de COESYS de TEST? Al igual que el IdP para autenticación te tienen que dar de alta como Service Provider y agregar tu certificado público.
Una vez hecho esto create un keystore con tu clave privada para firmar (puede ser autogenerada para TEST, lo importante es que en el paso previo le hayas pasado tu certificado público para que lo agreguen a COESYS y te valide la firma)
Luego, yendo al error que colocas, estás usando un certificado y no un keystore para firmar, acá deberías generarte un keystore con tu clave privada y referenciarlo. Una buena herramienta para generarte un keystore es el keystore explorer. Si no lo podes hacer utilizando openssl desde la consola.
Saludos!
Rodrigo
Diego Menendez, modificado hace 7 años.
RE: Problema al integrarse contra el servicio de firma de coesys
Youngling Mensajes: 7 Fecha de incorporación: 12/06/17 Mensajes recientes
00
Hola Rodrigo.
Generé mi Keystore y volví a ejecutar la aplicación.
Ahora estoy teniendo el siguiente problema:
com.gemalto.ics.rnd.egov.dss.sdk.exception.KeyStoreException: java.io.IOException: error constructing MAC: java.lang.SecurityException: JCE cannot authenticate the provider BC
at com.gemalto.ics.rnd.egov.dss.sdk.create.key.JCAKeyStoreSignatureKeyService.init(JCAKeyStoreSignatureKeyService.java:51)
at com.gemalto.ics.rnd.egov.dss.sdk.create.key.JCAKeyStoreSignatureKeyService.<init>(JCAKeyStoreSignatureKeyService.java:42)
at uy.com.agesic.firma.RequestDSSController.handleFileUpload(RequestDSSController.java:111)
Al ejecutar la siguiente línea:
JCAKeyStoreSignatureKeyService jcaKeyStoreSignatureKeyService = new JCAKeyStoreSignatureKeyService("BC","PKCS12", ks, keyStoreKey, keyStoreAlias);
Qué podrá ser? Puede que los jars de gemalto no estén autofirmados?
Gracias
Saludos.
Generé mi Keystore y volví a ejecutar la aplicación.
Ahora estoy teniendo el siguiente problema:
com.gemalto.ics.rnd.egov.dss.sdk.exception.KeyStoreException: java.io.IOException: error constructing MAC: java.lang.SecurityException: JCE cannot authenticate the provider BC
at com.gemalto.ics.rnd.egov.dss.sdk.create.key.JCAKeyStoreSignatureKeyService.init(JCAKeyStoreSignatureKeyService.java:51)
at com.gemalto.ics.rnd.egov.dss.sdk.create.key.JCAKeyStoreSignatureKeyService.<init>(JCAKeyStoreSignatureKeyService.java:42)
at uy.com.agesic.firma.RequestDSSController.handleFileUpload(RequestDSSController.java:111)
Al ejecutar la siguiente línea:
JCAKeyStoreSignatureKeyService jcaKeyStoreSignatureKeyService = new JCAKeyStoreSignatureKeyService("BC","PKCS12", ks, keyStoreKey, keyStoreAlias);
Qué podrá ser? Puede que los jars de gemalto no estén autofirmados?
Gracias
Saludos.
Nicolas Piquerez, modificado hace 7 años.
RE: Problema al integrarse contra el servicio de firma de coesys
Padawan Mensajes: 62 Fecha de incorporación: 3/10/16 Mensajes recientes
00
Como andas Diego? El Bouncy Castle es una libreria de criptografía que a veces se pone media "mimosa". Lo mejor es instalarla en al maquina virtual directamente, van los pasos:
INSTALAR BOUNCY CASTLE EN JAVA
Se debe de tener instalado el provider Bouncy Castle para la Java Cryptography Extension and the Java Cryptography Architecture. Esto tanto para la JDK como la jre (dependiendo el sistema pueden estar separadas)
Ir al sitio de BouncyCastle y buscar la libreria adecuada para JDK, en este caso v1.56 (descargar aquí)/
Ir a directorio de JDK/jre
Buscar el archivo de propiedades de seguridad situado en $JAVA_HOME/jre/lib/security/java.security
Agregar linea al final con:
security.provider.N=org.bouncycastle.jce.provider.BouncyCastleProvider
Donde N es uno mas que el último numero de la lista
Agregar libreria a /lib/ext
Creo que viene por ahi la mano, contame despues de esto como te fue.
Saludos
INSTALAR BOUNCY CASTLE EN JAVA
Se debe de tener instalado el provider Bouncy Castle para la Java Cryptography Extension and the Java Cryptography Architecture. Esto tanto para la JDK como la jre (dependiendo el sistema pueden estar separadas)
Ir al sitio de BouncyCastle y buscar la libreria adecuada para JDK, en este caso v1.56 (descargar aquí)/
Ir a directorio de JDK/jre
Buscar el archivo de propiedades de seguridad situado en $JAVA_HOME/jre/lib/security/java.security
Agregar linea al final con:
security.provider.N=org.bouncycastle.jce.provider.BouncyCastleProvider
Donde N es uno mas que el último numero de la lista
Agregar libreria a /lib/ext
Creo que viene por ahi la mano, contame despues de esto como te fue.
Saludos
Diego Menendez, modificado hace 7 años.
RE: Problema al integrarse contra el servicio de firma de coesys
Youngling Mensajes: 7 Fecha de incorporación: 12/06/17 Mensajes recientes
00
Hola! Pude pasar dicho problema.
Ahora tengo otro. Al intentar integrarme me está dando el siguiente mensaje:
"Operation failedThe identity of the requester is unknown.N/A"
Supuestamente ya estoy dado de alta en Coesys.
Hay manera de chequear en los logs del servicio que está pasando?
Este es el SignRequest que armo:
Ahora tengo otro. Al intentar integrarme me está dando el siguiente mensaje:
"Operation failedThe identity of the requester is unknown.N/A"
Supuestamente ya estoy dado de alta en Coesys.
Hay manera de chequear en los logs del servicio que está pasando?
Este es el SignRequest que armo:
<?xml version="1.0" encoding="UTF-8"?> | |
<dss:SignRequest xmlns:dss="urn:oasis:names:tc:dss:1.0:core:schema" Profile="urn:gemalto:dss:profiles:cades" RequestID="0.9271639871877586"> | |
<dss:OptionalInputs> | |
<dss:ClaimedIdentity> | |
<dss:Name Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">http://apia.statum.biz/ApiaDocumentum</dss:Name> | |
<dss:SupportingInfo> | |
<SignResponseConsumerURL xmlns="urn:oasis:names:tc:dssx:1.0:profiles:gemalto:demo">http://apia.statum.biz/ApiaDocumentum/dss.response</SignResponseConsumerURL> | |
</dss:SupportingInfo> | |
</dss:ClaimedIdentity> | |
<dss:SignatureType>urn:etsi:ts:102:778</dss:SignatureType> | |
<demo:SignatureMethods xmlns:demo="urn:oasis:names:tc:dssx:1.0:profiles:gemalto:demo"> | |
<demo:SignatureMethod>SmartCard</demo:SignatureMethod> | |
</demo:SignatureMethods> | |
<ades:SignatureForm xmlns:ades="urn:oasis:names:tc:dss:1.0:profiles:AdES:schema#">urn:oasis:names:tc:dss:1.0:profiles:AdES:forms:BES</ades:SignatureForm> | |
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> | |
<SignedInfo> | |
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" /> | |
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" /> | |
<Reference URI=""> | |
<Transforms> | |
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /> | |
</Transforms> | |
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> | |
<DigestValue>ZAwkMzgmPDF6JJZnXtZbnuFobguXLxZPfdbFN2w4f/0=</DigestValue> | |
</Reference> | |
</SignedInfo> | |
<SignatureValue>mQAe6xo7+70xisxfk68nOrJFnr3gmBqynUORUwodKnFZu24gVbARpnbMkd4jFpA2vp9dUqzLOiXS | |
lAY3OqtKD9VHdP8uGCK38PSifBZAIWa6Y0wvqmC0H+VDYmDKqPc3Gp/FzjuAzn062RCe/bO/n76Q | |
LDU4Oq5icZgv607p6+vnzb/aErJ9bV9AR4UswvEDMV8JjWrpFRAiaVPuUsNQ02yMIVgz/QRUHMUP | |
E6JjjLBPiM2zMWebqTjtd77okDaxqSDUNlhjODk6DBw0snrTR2TUX1iNhGK9n5JJw0OR1ZwstNbE | |
J+lt3nh58vP8M3Iy5rM6350s2RNOZkY9K+nq8Q==</SignatureValue> | |
<KeyInfo> | |
<X509Data> | |
<X509Certificate>MIIDvDCCAqQCCQDRts/WEBQeSzANBgkqhkiG9w0BAQsFADCBnzELMAkGA1UEBhMCVVkxEzARBgNV | |
BAgMCk1PTlRFVklERU8xEzARBgNVBAcMCk1PTlRFVklERU8xFzAVBgNVBAoMDlNUIENPTlNVTFRP | |
UkVTMRMwEQYDVQQLDApERVNBUlJPTExPMRMwEQYDVQQDDApERVNBUlJPTExPMSMwIQYJKoZIhvcN | |
AQkBFhRlcm9kcmlndWV6QHN0LmNvbS51eTAeFw0xNzA1MDQxNDM4MTNaFw0yMTA1MDQxNDM4MTNa | |
MIGfMQswCQYDVQQGEwJVWTETMBEGA1UECAwKTU9OVEVWSURFTzETMBEGA1UEBwwKTU9OVEVWSURF | |
TzEXMBUGA1UECgwOU1QgQ09OU1VMVE9SRVMxEzARBgNVBAsMCkRFU0FSUk9MTE8xEzARBgNVBAMM | |
CkRFU0FSUk9MTE8xIzAhBgkqhkiG9w0BCQEWFGVyb2RyaWd1ZXpAc3QuY29tLnV5MIIBIjANBgkq | |
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp/jaLJFKI1bhnNQ3AuoOB2gbxViwvq80oT/p8BrlhX63 | |
PUFvjj/ZyZsQcyFpn+591+Sx2j69tQk1dNI2tvd7mONSoAtZsak6Klnp/I8IPireTlZCADxsJMzy | |
BD3FFztpo+ohRHMcxEvr4JERfLKBxqV6GskuewuhEyicJZXsFs6YyHxtpuwOPNoyQ/FQJbwOopgU | |
m1beyPJUt0Rx1ab1VW/8idv1NDhzJCVJVvUSylFvEO5JeIA3md+FKiwHIrLDNPcIh6mzGtZjYMdL | |
P2HbZb2Z3Vowk3nf4chBNq5VciQ1eyORabcbU+Dd64n2RTmbvYepuXc618BKBpWmu+4UsQIDAQAB | |
MA0GCSqGSIb3DQEBCwUAA4IBAQA0F6sZMTchrPfLc8sbGujyjE8f/UNCn/cgzmugZxQJBkLAFrR0 | |
L0DBbhpJmTMCscQqZv57XVku5Mjpcg2EWa5gJhIxp8JJ/GQHkTlZnjorZVNYVOmhQpO8qt7fXTtk | |
SGrz1h0QzUhWbBw5CfhwguLLeQ+iR7AFJy+gXkAFqiKFiJ/tM5UaURZ6OzXdUXZbjt5vbiGvjEsj | |
dbY9Z6kDaoPwGcKB5VlE6fVzc8c/iluDgzLrwsuOvVt8j2rasT9kvz8Bd36GDU7YcRdaSk2Nq6+p | |
JkFOvQlJhCklLwiKFW3ROen2uaxKANOnsvzjaiaX/KaYpzJxrEymS6EMaFPO2ise</X509Certificate> | |
</X509Data> | |
</KeyInfo> | |
</Signature> | |
</dss:OptionalInputs> | |
<dss:InputDocuments> | |
<dss:Document> | |
<dss:Base64Data MimeType="application/pdf">L2hvbWUvbG9jYWwvRE9NU1QvZG1lbmVuZGV6L0Rlc2t0b3AvUmVwb3NpdG9yaW8gRGllZ28vUHJlZ3VudGFzQ2FwaXR1bG82LnBkZg==</dss:Base64Data> | |
</dss:Document> | |
</dss:InputDocuments> | |
</dss:SignRequest> |
Nicolas Piquerez, modificado hace 7 años.
RE: Problema al integrarse contra el servicio de firma de coesys
Padawan Mensajes: 62 Fecha de incorporación: 3/10/16 Mensajes recientes
00
Diego, estan dados de alta con el ID "apia.statum" , deberías poner eso en el ClaimedIdentity
Saludos
Saludos
Alexis Rosano, modificado hace 6 años.
RE: Problema al integrarse contra el servicio de firma de coesys
Youngling Mensajes: 2 Fecha de incorporación: 2/08/18 Mensajes recientes
00
Hola!
Aprovecho este hilo para hacer una consulta acerca del armado del SignRequest.
Entiendo que el SignRequest armado por Diego Menendez es correcto.
De acuerdo a un ejemplo, tengo este XML para firmar archivos PDF:
En particular, por qué en un caso se utiliza un tag SignatureForm y en otro SignedProperties, ya que en realidad en ambos casos se quieren firmar PDFs.
Mi ambiente: Estoy trabajando con GX para el Poder Judicial y estamos implementando la firma de documentos PDF a partir del documento electrónico.
Muchas gracias por la ayuda!
Aprovecho este hilo para hacer una consulta acerca del armado del SignRequest.
Entiendo que el SignRequest armado por Diego Menendez es correcto.
De acuerdo a un ejemplo, tengo este XML para firmar archivos PDF:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |
<dss:SignRequest xmlns:dss="urn:oasis:names:tc:dss:1.0:core:schema" Profile="urn:gemalto:dss:profiles:cades" RequestID="0.10351272094083208"> | |
<dss:OptionalInputs> | |
<dss:ClaimedIdentity><dss:Name Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">sp-sdk-example</dss:Name><dss:SupportingInfo><SignResponseConsumerURL xmlns="urn:oasis:names:tc:dssx:1.0:profiles:gemalto:demo">http://localhost:8080/sp-sdk-example/client/response</SignResponseConsumerURL></dss:SupportingInfo></dss:ClaimedIdentity> | |
<dss:SignatureType>urn:etsi:ts:102:778</dss:SignatureType> | |
<demo:SignatureMethods xmlns:demo="urn:oasis:names:tc:dssx:1.0:profiles:gemalto:demo"><demo:SignatureMethod>SmartCard</demo:SignatureMethod></demo:SignatureMethods> | |
<ades:SignatureForm xmlns:ades="urn:oasis:names:tc:dss:1.0:profiles:AdES:schema#">urn:oasis:names:tc:dss:1.0:profiles:AdES:forms:BES</ades:SignatureForm> | |
<dss:Properties><dss:SignedProperties> | |
<dss:Property><dss:Identifier>urn:oasis:names:tc:dss:1.0:profiles:AdES:SigningTime</dss:Identifier><dss:Value/></dss:Property> | |
<dss:Property><dss:Identifier>urn:oasis:names:tc:dss:1.0:profiles:AdES:DataObjectFormat</dss:Identifier><dss:Value><ades:RequestedDocsFormat xmlns:ades="urn:oasis:names:tc:dss:1.0:profiles:AdES:schema#"><ades:BinaryValue>MAQGAioD</ades:BinaryValue></ades:RequestedDocsFormat></dss:Value></dss:Property> | |
<dss:Property><dss:Identifier>urn:oasis:names:tc:dss:1.0:profiles:AdES:CommitmentTypeIndication</dss:Identifier><dss:Value><ades:RequestedCommitment xmlns:ades="urn:oasis:names:tc:dss:1.0:profiles:AdES:schema#"><ades:BinaryValue>MAYGBCoDBAU=</ades:BinaryValue></ades:RequestedCommitment></dss:Value></dss:Property> | |
<dss:Property><dss:Identifier>urn:oasis:names:tc:dss:1.0:profiles:AdES:SignatureProductionPlace</dss:Identifier><dss:Value><ades:RequestedSignatureProductionPlace xmlns:ades="urn:oasis:names:tc:dss:1.0:profiles:AdES:schema#"><ades:BinaryValue>MA2gCwwJQW55IHBsYWNl</ades:BinaryValue></ades:RequestedSignatureProductionPlace></dss:Value></dss:Property> | |
<dss:Property> | |
<dss:Identifier>urn:oasis:names:tc:dss:1.0:profiles:AdES:SignerRole</dss:Identifier> | |
<dss:Value><ades:RequestedSignerRole xmlns:ades="urn:oasis:names:tc:dss:1.0:profiles:AdES:schema#"><ades:BinaryValue>MBygGjAYMBYGByoDBAUGBwgxCwwJQW55IHZhbHVl</ades:BinaryValue></ades:RequestedSignerRole></dss:Value></dss:Property> | |
</dss:SignedProperties></dss:Properties> | |
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/><DigestValue>0GmdYzpg7I+IA5qnu4Gco/vP0SXWzh0hYximUyrwSnc=</DigestValue></Reference></SignedInfo><SignatureValue>YRJQM6xu6z4u1fcx9hFiwS1dtqIEt3n2Lr80TCqqgcmVJNqc2dA4d7gM/g1yQ3WSm0d9c8JGk7v4 | |
a8cKx6NQjiOfnSUwaJFj3DbGxhqsWIfqRHWxIwVjwwwRNz2ArfjnG3onGKAZXjs7+ATUb8oEpvUb | |
qC/rkeIPyKEPWcBH9Q8=</SignatureValue><KeyInfo><X509Data> | |
<X509Certificate>MIIBlTCB/6ADAgECAgEBMA0GCSqGSIb3DQEBBQUAMBAxDjAMBgNVBAMMBWxpbmsyMB4XDTE0MDUx | |
OTE2Mzg1NloXDTE5MDUxOTE2MzkwNlowEjEQMA4GA1UEAwwHc2lnbmluZzCBnzANBgkqhkiG9w0B | |
AQEFAAOBjQAwgYkCgYEAne5Z8HFAkNzIQtCwr7M9idQeYBy8nbSX3aV+Q7nB/Y4LgWqYBFqah9vk | |
SGabQKhcR+Xo2gV9ik331WaxwnuIsHPz7SOm+bI79ZBfq+/7NWPVFgAUB8jyhaDVmK26SHxPTpA+ | |
+CgrFJEokOi+qOvxYyibY1LDDN/4SCfn6BWWq88CAwEAATANBgkqhkiG9w0BAQUFAAOBgQARozNY | |
uiRfnfDeNjiB1lPdmJQmsEqq+faPv99vPUaxb3lvFbWpgEQ+xkJ5agPKV6JLgo6N9o16LIw8NH9p | |
Fw5/JivVtm3EXb63NZHcpRSz2Mk0g3zVSiPZtS4vNjc5EGODTsGn0i9EasE8Qkczh8oyNuyjRV7t | |
xZ5/6vDRl1vevQ==</X509Certificate> | |
</X509Data></KeyInfo></Signature></dss:OptionalInputs> | |
<dss:InputDocuments><dss:Document><dss:Base64Data MimeType="application/pdf">JVBERi0xLjUNCiW………8OUIwNDc2MEUwQ0YzQUM0OTgwODQwMDhFNDUzNkVFQzc+XSAvUHJldiAxNjEyNjYvWFJlZlN0bSAxNjA5NjQ+Pg0Kc3RhcnR4cmVmDQoxNjE5NDQNCiUlRU9G</dss:Base64Data></dss:Document> | |
</dss:InputDocuments></dss:SignRequest> |
En particular, por qué en un caso se utiliza un tag SignatureForm y en otro SignedProperties, ya que en realidad en ambos casos se quieren firmar PDFs.
Mi ambiente: Estoy trabajando con GX para el Poder Judicial y estamos implementando la firma de documentos PDF a partir del documento electrónico.
Muchas gracias por la ayuda!
Diego MenendezHola! Pude pasar dicho problema.
Ahora tengo otro. Al intentar integrarme me está dando el siguiente mensaje:
"Operation failedThe identity of the requester is unknown.N/A"
Supuestamente ya estoy dado de alta en Coesys.
Hay manera de chequear en los logs del servicio que está pasando?
Este es el SignRequest que armo:
Ahora tengo otro. Al intentar integrarme me está dando el siguiente mensaje:
"Operation failedThe identity of the requester is unknown.N/A"
Supuestamente ya estoy dado de alta en Coesys.
Hay manera de chequear en los logs del servicio que está pasando?
Este es el SignRequest que armo:
<?xml version="1.0" encoding="UTF-8"?> | |
<dss:SignRequest xmlns:dss="urn:oasis:names:tc:dss:1.0:core:schema" Profile="urn:gemalto:dss:profiles:cades" RequestID="0.9271639871877586"> | |
<dss:OptionalInputs> | |
<dss:ClaimedIdentity> | |
<dss:Name Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">http://apia.statum.biz/ApiaDocumentum</dss:Name> | |
<dss:SupportingInfo> | |
<SignResponseConsumerURL xmlns="urn:oasis:names:tc:dssx:1.0:profiles:gemalto:demo">http://apia.statum.biz/ApiaDocumentum/dss.response</SignResponseConsumerURL> | |
</dss:SupportingInfo> | |
</dss:ClaimedIdentity> | |
<dss:SignatureType>urn:etsi:ts:102:778</dss:SignatureType> | |
<demo:SignatureMethods xmlns:demo="urn:oasis:names:tc:dssx:1.0:profiles:gemalto:demo"> | |
<demo:SignatureMethod>SmartCard</demo:SignatureMethod> | |
</demo:SignatureMethods> | |
<ades:SignatureForm xmlns:ades="urn:oasis:names:tc:dss:1.0:profiles:AdES:schema#">urn:oasis:names:tc:dss:1.0:profiles:AdES:forms:BES</ades:SignatureForm> | |
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> | |
<SignedInfo> | |
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" /> | |
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" /> | |
<Reference URI=""> | |
<Transforms> | |
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /> | |
</Transforms> | |
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> | |
<DigestValue>ZAwkMzgmPDF6JJZnXtZbnuFobguXLxZPfdbFN2w4f/0=</DigestValue> | |
</Reference> | |
</SignedInfo> | |
<SignatureValue>mQAe6xo7+70xisxfk68nOrJFnr3gmBqynUORUwodKnFZu24gVbARpnbMkd4jFpA2vp9dUqzLOiXS | |
lAY3OqtKD9VHdP8uGCK38PSifBZAIWa6Y0wvqmC0H+VDYmDKqPc3Gp/FzjuAzn062RCe/bO/n76Q | |
LDU4Oq5icZgv607p6+vnzb/aErJ9bV9AR4UswvEDMV8JjWrpFRAiaVPuUsNQ02yMIVgz/QRUHMUP | |
E6JjjLBPiM2zMWebqTjtd77okDaxqSDUNlhjODk6DBw0snrTR2TUX1iNhGK9n5JJw0OR1ZwstNbE | |
J+lt3nh58vP8M3Iy5rM6350s2RNOZkY9K+nq8Q==</SignatureValue> | |
<KeyInfo> | |
<X509Data> | |
<X509Certificate>MIIDvDCCAqQCCQDRts/WEBQeSzANBgkqhkiG9w0BAQsFADCBnzELMAkGA1UEBhMCVVkxEzARBgNV | |
BAgMCk1PTlRFVklERU8xEzARBgNVBAcMCk1PTlRFVklERU8xFzAVBgNVBAoMDlNUIENPTlNVTFRP | |
UkVTMRMwEQYDVQQLDApERVNBUlJPTExPMRMwEQYDVQQDDApERVNBUlJPTExPMSMwIQYJKoZIhvcN | |
AQkBFhRlcm9kcmlndWV6QHN0LmNvbS51eTAeFw0xNzA1MDQxNDM4MTNaFw0yMTA1MDQxNDM4MTNa | |
MIGfMQswCQYDVQQGEwJVWTETMBEGA1UECAwKTU9OVEVWSURFTzETMBEGA1UEBwwKTU9OVEVWSURF | |
TzEXMBUGA1UECgwOU1QgQ09OU1VMVE9SRVMxEzARBgNVBAsMCkRFU0FSUk9MTE8xEzARBgNVBAMM | |
CkRFU0FSUk9MTE8xIzAhBgkqhkiG9w0BCQEWFGVyb2RyaWd1ZXpAc3QuY29tLnV5MIIBIjANBgkq | |
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp/jaLJFKI1bhnNQ3AuoOB2gbxViwvq80oT/p8BrlhX63 | |
PUFvjj/ZyZsQcyFpn+591+Sx2j69tQk1dNI2tvd7mONSoAtZsak6Klnp/I8IPireTlZCADxsJMzy | |
BD3FFztpo+ohRHMcxEvr4JERfLKBxqV6GskuewuhEyicJZXsFs6YyHxtpuwOPNoyQ/FQJbwOopgU | |
m1beyPJUt0Rx1ab1VW/8idv1NDhzJCVJVvUSylFvEO5JeIA3md+FKiwHIrLDNPcIh6mzGtZjYMdL | |
P2HbZb2Z3Vowk3nf4chBNq5VciQ1eyORabcbU+Dd64n2RTmbvYepuXc618BKBpWmu+4UsQIDAQAB | |
MA0GCSqGSIb3DQEBCwUAA4IBAQA0F6sZMTchrPfLc8sbGujyjE8f/UNCn/cgzmugZxQJBkLAFrR0 | |
L0DBbhpJmTMCscQqZv57XVku5Mjpcg2EWa5gJhIxp8JJ/GQHkTlZnjorZVNYVOmhQpO8qt7fXTtk | |
SGrz1h0QzUhWbBw5CfhwguLLeQ+iR7AFJy+gXkAFqiKFiJ/tM5UaURZ6OzXdUXZbjt5vbiGvjEsj | |
dbY9Z6kDaoPwGcKB5VlE6fVzc8c/iluDgzLrwsuOvVt8j2rasT9kvz8Bd36GDU7YcRdaSk2Nq6+p | |
JkFOvQlJhCklLwiKFW3ROen2uaxKANOnsvzjaiaX/KaYpzJxrEymS6EMaFPO2ise</X509Certificate> | |
</X509Data> | |
</KeyInfo> | |
</Signature> | |
</dss:OptionalInputs> | |
<dss:InputDocuments> | |
<dss:Document> | |
<dss:Base64Data MimeType="application/pdf">L2hvbWUvbG9jYWwvRE9NU1QvZG1lbmVuZGV6L0Rlc2t0b3AvUmVwb3NpdG9yaW8gRGllZ28vUHJlZ3VudGFzQ2FwaXR1bG82LnBkZg==</dss:Base64Data> | |
</dss:Document> | |
</dss:InputDocuments> | |
</dss:SignRequest> |
Diego Menendez, modificado hace 7 años.
RE: Problema al integrarse contra el servicio de firma de coesys
Youngling Mensajes: 7 Fecha de incorporación: 12/06/17 Mensajes recientes
00
Nicolas, aparentemente funcionó.
Estoy teniendo el siguiente problema, este es el SignResponse:
Qué será?
Estoy teniendo el siguiente problema, este es el SignResponse:
Qué será?
<?xml version="1.0" encoding="UTF-8"?> | |
<ns5:SignResponse xmlns:ns5="urn:oasis:names:tc:dss:1.0:core:schema" xmlns="urn:oasis:names:tc:dss:1.0:profiles:AdES:schema#" xmlns:ns2="http://uri.etsi.org/01903/v1.3.2#" xmlns:ns3="http://www.w3.org/2000/09/xmldsig#" xmlns:ns4="urn:gemalto:names:tc:dss:pades:1.0:schema" xmlns:ns6="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:ns7="urn:oasis:names:tc:dssx:1.0:profiles:gemalto:demo" Profile="urn:gemalto:dss:profiles:cades" RequestID="0.35061016047610594"> | |
<ns5:Result> | |
<ns5:ResultMajor>urn:oasis:names:tc:dss:1.0:resultmajor:RequesterError</ns5:ResultMajor> | |
<ns5:ResultMinor>urn:oasis:names:tc:dss:1.0:resultminor:MessageValidationError</ns5:ResultMinor> | |
<ns5:ResultMessage xml:lang="eng">VAL100: PdfFormatValidator</ns5:ResultMessage> | |
</ns5:Result> | |
<OptionalOutputs xmlns="urn:oasis:names:tc:dss:1.0:core:schema"> | |
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> | |
<ds:SignedInfo> | |
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /> | |
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" /> | |
<ds:Reference URI=""> | |
<ds:Transforms> | |
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /> | |
<ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" /> | |
</ds:Transforms> | |
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> | |
<ds:DigestValue>qgWxsJnlxZnygUMVTKmUOlinK/rUETFJz9QcNSAgSc4=</ds:DigestValue> | |
</ds:Reference> | |
</ds:SignedInfo> | |
<ds:SignatureValue>GfA5RIg8yesmQiVXZcgbg+uyFc9vut3ANKP21ucB1d3dM/XgWi+l08YUAEfTBJrFMYEr46hGSYCR | |
iHldwIHpYmFnQ4X1KvJefP5rIntp9mBI6PodNrOf81/ttGblhkNRhb3b1kMrnwca7QogG8j8mBvD | |
BNIT9t4kVCB4h9iFpTIo6TzVi/z2w/M08BHGcc6fGBpQApesQxBYQMHK4O5f5pDTnxBDeeGEOldt | |
21MC+IaWzkWJXeb1IJ1Yj88tsG8PAUZEbMhqimo4ztSjJuJd+A1qQhb2xlvu3WCCMjljy+gt0VK/ | |
5/MsJ9+KTQcPsD3W9pfOdI8QuJFOO4efKNzhMg==</ds:SignatureValue> | |
<ds:KeyInfo> | |
<ds:X509Data> | |
<ds:X509Certificate>MIIGnDCCBISgAwIBAgIUAUPFuYlN4BENUkKY0c9sTXuAEU4wDQYJKoZIhvcNAQELBQAwWjEdMBsG | |
A1UEAxMUQ29ycmVvIFVydWd1YXlvIC0gQ0ExLDAqBgNVBAoMI0FkbWluaXN0cmFjacOzbiBOYWNp | |
b25hbCBkZSBDb3JyZW9zMQswCQYDVQQGEwJVWTAeFw0xNzA0MDYxODQ5MDJaFw0xOTA0MDYxODQ5 | |
MDJaMIHHMRgwFgYDVQQFEw9SVUMyMTU5OTYwNjAwMTUxCzAJBgNVBAYTAlVZMXoweAYDVQQKE3FB | |
R0VOQ0lBIFBBUkEgRUwgREVTQVJST0xMTyBERUwgR09CSUVSTk8gREUgR0VTVElPTiBFTEVDVFJP | |
TklDQSBZIExBIFNPQ0lFREFEIERFIExBIElORk9STUFDSU9OIFkgREVMIENPTk9DSU1JRU5UTzEi | |
MCAGA1UEAxMZQUdFU0lDLUNPRVNZUy1EU1MtVEVTVElORzCCASIwDQYJKoZIhvcNAQEBBQADggEP | |
ADCCAQoCggEBAItRiulQW83nuJ9yuASrPKAzIzTzmXrWPNf4zFfYkLAmDbntdOcXqfuUglWKCm1e | |
nnsRNLeVf0qDc2jh6wpV8dDtFokJ1If+urfAUqyCvXMRxlxpaQYdKGgINZduZ98LdudE64Zi7O2N | |
jXM5DAqJE7tBddf9Nc8KF8q/oVqDP+LcJADrN3ndFHvzbfIfkxqbwe/RlrTAhLjd0pQepxFErBv2 | |
G5sNxWjffXx8/S0QBS3T9Oi1LMXQmB4s3S484Guw5WYX3V8t21avF0gcoBJIZtbYs/CmEMflBSqY | |
XI8o33mGvMqWgEA4TNxLWMkmtiUtlFYTslLPwnxPlk/ptd243i0CAwEAAaOCAeowggHmMHkGCCsG | |
AQUFBwEBBG0wazA2BggrBgEFBQcwAoYqaHR0cDovL2FuY2NhLmNvcnJlby5jb20udXkvYW5jY2Ev | |
YW5jY2EuY2VyMDEGCCsGAQUFBzABhiVodHRwOi8vYW5jY2EuY29ycmVvLmNvbS51eS9hbmNjYS9P | |
Q1NQMA4GA1UdDwEB/wQEAwIE8DAMBgNVHRMBAf8EAjAAMDsGA1UdHwQ0MDIwMKAuoCyGKmh0dHA6 | |
Ly9hbmNjYS5jb3JyZW8uY29tLnV5L2FuY2NhL2FuY2NhLmNybDCBuAYDVR0gBIGwMIGtMGQGC2CG | |
WoTirh2EiAUEMFUwUwYIKwYBBQUHAgEWR2h0dHA6Ly91Y2UuZ3ViLnV5L2luZm9ybWFjaW9uLXRl | |
Y25pY2EvcG9saXRpY2FzL2NwX3BlcnNvbmFfanVyaWRpY2EucGRmMEUGC2CGWoTirh2EiAUGMDYw | |
NAYIKwYBBQUHAgEWKGh0dHA6Ly9hbmNjYS5jb3JyZW8uY29tLnV5L2FuY2NhL2Nwcy5wZGYwEwYD | |
VR0lBAwwCgYIKwYBBQUHAwIwHQYDVR0OBBYEFBaHhT4vJ/KjNruUEtfKby3mtGzmMB8GA1UdIwQY | |
MBaAFGzisCaNW9YmCB+YXWngDn9V7K52MA0GCSqGSIb3DQEBCwUAA4ICAQDA6jIsjUiG4WN3hFLP | |
ZZtH7dWAeXRPpv06Pa0bKYydwNV7KKfsm8w5Jfes+GjVuo+ch0yaNAd2H94VR79zLxCfLUD48WXl | |
pm9x5b0bG45GVHpPDZmhbeBEIxUBoG8MW8VhfoT8DzXsdjoWl0mw5f9OPMxzbIP2on3HEbD799io | |
9I5vlssqsv2L06Z+MxKeTiyaiX7IiHPXi3u/SJD4nJln4CQOfX0MBcs+tPBeh6E+zk0DelCRGkB3 | |
J9qLnSiELJb/6Bdag5Zs6ifYANpd71t+p6czJd/u/BGx2uYBR/AM4Vspo5sP6LS4cVaDKi+RoKzS | |
tUbrVVu44IgMYorAY2A5U6cEYL6Np7d9oCioAJUsqNEjTU0l7DM0HfcJDfmX+nzXHkpjlq4ICPx9 | |
V+fKMMYa6zlohsTU69oKH1MhQBUJ7R1dO5apovVpxwJ7WnFPvnW7kCk5wwLBS2etqwC4Alncoyga | |
wAfQiLOtZcKPZqRJBcyuHn22eGVTipZcYWAQXnb59+nnqdlIQG/VlKIziItDIYBt/VvdTmoXD1Q5 | |
E9RTZKvBRJFmFDQEzt1WVcNOUH0bIYpxBQHcN9HBAbpudEcjt4KW20i0PZAiKletmn/edC3fn+Iv | |
RPK59/vR5AhiV6PgagKn5LKzrzzzTT4ro69T/+6tuXmLxSHpfDuVZ9TAqw==</ds:X509Certificate> | |
</ds:X509Data> | |
</ds:KeyInfo> | |
</ds:Signature> | |
</OptionalOutputs> | |
</ns5:SignResponse> |
Nicolas Piquerez, modificado hace 7 años.
RE: Problema al integrarse contra el servicio de firma de coesys
Padawan Mensajes: 62 Fecha de incorporación: 3/10/16 Mensajes recientes
00
Es extraño, parece un error en el formato de PDF, si podes proba firmando a través de la siguiente aplicación el mismo archivo:
https://test-eid.portal.gub.uy/v1.1/sp-dss/client/signPAdES (Seleccionar archivo para subir el PDF y Submit)
y contame que te devuelve el sistema.
Saludos
https://test-eid.portal.gub.uy/v1.1/sp-dss/client/signPAdES (Seleccionar archivo para subir el PDF y Submit)
y contame que te devuelve el sistema.
Saludos
Diego Menendez, modificado hace 7 años.
RE: Problema al integrarse contra el servicio de firma de coesys
Youngling Mensajes: 7 Fecha de incorporación: 12/06/17 Mensajes recientes
00
Aparenemente no tuve problemas. Llegue correctamente al servicio de firma, veo el pdf y puedo firmarlo.
Què podrà ser?
Què podrà ser?
Nicolas Piquerez, modificado hace 7 años.
RE: Problema al integrarse contra el servicio de firma de coesys
Padawan Mensajes: 62 Fecha de incorporación: 3/10/16 Mensajes recientes
00
Y luego de firmarlo al dar enviar que te aparece?
Saludos
Saludos
Diego Menendez, modificado hace 7 años.
RE: Problema al integrarse contra el servicio de firma de coesys
Youngling Mensajes: 7 Fecha de incorporación: 12/06/17 Mensajes recientes
00
Nicolas,
Al firmarlo desde el sitio que me enviaron y darle enviar me vuelve al sitio donde subí el documento pdf, con el documento firmado correctamente.
Esto es lo que hago yo en mi código el signRequest:
String file = "/home/local/DOMST/dmenendez/Desktop/prueba.pdf";
byte[] documento = file.getBytes();
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
InputStream ks = new FileInputStream(Labels.keyStoreRoute);
JCAKeyStoreSignatureKeyService jcaKeyStoreSignatureKeyService = new JCAKeyStoreSignatureKeyService("BC","PKCS12", ks, Labels.keyStoreKey, Labels.keyStoreAlias);
XmlDSigRequestSigner xmlDSigRS = new XmlDSigRequestSigner();
xmlDSigRS.setDigestMethod("http://www.w3.org/2001/04/xmlenc#sha256");
xmlDSigRS.setSignatureMethod("http://www.w3.org/2001/04/xmldsig-more#rsa-sha256");
RequestBuilderImpl requestBuilder = new RequestBuilderImpl(jcaKeyStoreSignatureKeyService, xmlDSigRS,Labels.dssServiceName, Labels.dssResponseURL);
requestBuilder.setSignatureMethods(Collections.singletonList("SmartCard"));
String requestData = "";
String requestId = "";
/* Generación de numero aleatorio para el request */
SecureRandom secureRandom = new SecureRandom();
double random = secureRandom.nextDouble();
requestId = "" + random;
Map<String, byte[]> signedAttributes = new HashMap<String, byte[]>(); // Atributos
String signatureForm = "urn:oasis:names:tc:dss:1.0:profiles:AdES:forms:BES";
VisibleSignature vSignature = new VisibleSignature();
requestData = requestBuilder.buildPAdESBasicSignRequest(requestId, documento, signedAttributes, signatureForm, vSignature);
String newRequestData = StringEscapeUtils.escapeHtml4(Base64.encodeBase64String(requestData.getBytes("UTF-8")));
Luego al recibir el Response me llega el XML con el siguiente mensaje:
Al firmarlo desde el sitio que me enviaron y darle enviar me vuelve al sitio donde subí el documento pdf, con el documento firmado correctamente.
Esto es lo que hago yo en mi código el signRequest:
String file = "/home/local/DOMST/dmenendez/Desktop/prueba.pdf";
byte[] documento = file.getBytes();
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
InputStream ks = new FileInputStream(Labels.keyStoreRoute);
JCAKeyStoreSignatureKeyService jcaKeyStoreSignatureKeyService = new JCAKeyStoreSignatureKeyService("BC","PKCS12", ks, Labels.keyStoreKey, Labels.keyStoreAlias);
XmlDSigRequestSigner xmlDSigRS = new XmlDSigRequestSigner();
xmlDSigRS.setDigestMethod("http://www.w3.org/2001/04/xmlenc#sha256");
xmlDSigRS.setSignatureMethod("http://www.w3.org/2001/04/xmldsig-more#rsa-sha256");
RequestBuilderImpl requestBuilder = new RequestBuilderImpl(jcaKeyStoreSignatureKeyService, xmlDSigRS,Labels.dssServiceName, Labels.dssResponseURL);
requestBuilder.setSignatureMethods(Collections.singletonList("SmartCard"));
String requestData = "";
String requestId = "";
/* Generación de numero aleatorio para el request */
SecureRandom secureRandom = new SecureRandom();
double random = secureRandom.nextDouble();
requestId = "" + random;
Map<String, byte[]> signedAttributes = new HashMap<String, byte[]>(); // Atributos
String signatureForm = "urn:oasis:names:tc:dss:1.0:profiles:AdES:forms:BES";
VisibleSignature vSignature = new VisibleSignature();
requestData = requestBuilder.buildPAdESBasicSignRequest(requestId, documento, signedAttributes, signatureForm, vSignature);
String newRequestData = StringEscapeUtils.escapeHtml4(Base64.encodeBase64String(requestData.getBytes("UTF-8")));
Luego al recibir el Response me llega el XML con el siguiente mensaje:
<ns5:Result> | |
<ns5:ResultMajor>urn:oasis:names:tc:dss:1.0:resultmajor:RequesterError</ns5:ResultMajor> | |
<ns5:ResultMinor>urn:oasis:names:tc:dss:1.0:resultminor:MessageValidationError</ns5:ResultMinor> | |
<ns5:ResultMessage xml:lang="eng">VAL100: PdfFormatValidator</ns5:ResultMessage> | |
</ns5:Result> Adjunto el pdf. Qué será? Saludos. |
Archivos adjuntos:
Diego Menendez, modificado hace 7 años.
RE: Problema al integrarse contra el servicio de firma de coesys
Youngling Mensajes: 7 Fecha de incorporación: 12/06/17 Mensajes recientes
00
Por lo que estuve investigando el metodo :
requestData = requestBuilder.buildPAdESBasicSignRequest(requestId, documento, signedAttributes, signatureForm, vSignature);
Usa la librería dss-1-1.0.0.jar, en la misma se codifica el documento pdf que envía en bytes a Base64 utililizando la clase "org.bouncycastle.util.encoders.Base64", que también corresponde a la librería dss-1-1.0.0.jar.
Hice la siguiente prueba por fuera:
String path= "/home/local/DOMST/dmenendez/Desktop/prueba.pdf";
String path_firmado= "/home/local/DOMST/dmenendez/Desktop/prueba_firmado.pdf";
String base64 = new String(org.bouncycastle.util.encoders.Base64.encode(path));
byte[] pdf = org.bouncycastle.util.encoders.Base64.decode(base64);
FileOutputStream fileOuputStream = new FileOutputStream(path_firmado);
fileOuputStream.write(bytes);
fileOuputStream.close();
Al ver el pdf generado, el mismo queda corrupto.
Convirtiendo a través de un sitio online dicho documento a Base64 el mismo queda totalmente diferente al generado con el metodo org.bouncycastle.util.encoders.Base64.encode() de la librería dss-1-1.0.0.jar.
Será el Base64 que genera la librería que está mal? Les suena?
Quedo a la espera.
Gracias
Saludos.
requestData = requestBuilder.buildPAdESBasicSignRequest(requestId, documento, signedAttributes, signatureForm, vSignature);
Usa la librería dss-1-1.0.0.jar, en la misma se codifica el documento pdf que envía en bytes a Base64 utililizando la clase "org.bouncycastle.util.encoders.Base64", que también corresponde a la librería dss-1-1.0.0.jar.
Hice la siguiente prueba por fuera:
String path= "/home/local/DOMST/dmenendez/Desktop/prueba.pdf";
String path_firmado= "/home/local/DOMST/dmenendez/Desktop/prueba_firmado.pdf";
String base64 = new String(org.bouncycastle.util.encoders.Base64.encode(path));
byte[] pdf = org.bouncycastle.util.encoders.Base64.decode(base64);
FileOutputStream fileOuputStream = new FileOutputStream(path_firmado);
fileOuputStream.write(bytes);
fileOuputStream.close();
Al ver el pdf generado, el mismo queda corrupto.
Convirtiendo a través de un sitio online dicho documento a Base64 el mismo queda totalmente diferente al generado con el metodo org.bouncycastle.util.encoders.Base64.encode() de la librería dss-1-1.0.0.jar.
Será el Base64 que genera la librería que está mal? Les suena?
Quedo a la espera.
Gracias
Saludos.
Nicolas Piquerez, modificado hace 7 años.
RE: Problema al integrarse contra el servicio de firma de coesys
Padawan Mensajes: 62 Fecha de incorporación: 3/10/16 Mensajes recientes
00
Como andas Diego? Disculpa la demora.
Primero queria comentarte que con el metodo "String newRequestData = StringEscapeUtils.escapeHtml4(Base64.encodeBase64String(requestData.getBytes("UTF-8")));" estas codificando en base64 todo el xml del SignRequest y si luego escape-andolo para que pueda ser incrustrado en un HTML.
Lo que podes probar es guardar "requestData.getBytes("UTF-8")" como xml y ahi si sacar el pdf del mismo y aplicarle un decoding de base64. Para asegurarte que este funcionando, pero hasta ahora hemos probado el metodo y no hemos tenido problemas.
No sabria decirte lo de la libreria como hace la codificación del base64, es una libreria bastante conocida porque el problema debe venir por un mal uso. Por ejemplo al hacer write le pasas como parametro "bytes", no debería ser el array "pdf"?
Saludos
Primero queria comentarte que con el metodo "String newRequestData = StringEscapeUtils.escapeHtml4(Base64.encodeBase64String(requestData.getBytes("UTF-8")));" estas codificando en base64 todo el xml del SignRequest y si luego escape-andolo para que pueda ser incrustrado en un HTML.
Lo que podes probar es guardar "requestData.getBytes("UTF-8")" como xml y ahi si sacar el pdf del mismo y aplicarle un decoding de base64. Para asegurarte que este funcionando, pero hasta ahora hemos probado el metodo y no hemos tenido problemas.
No sabria decirte lo de la libreria como hace la codificación del base64, es una libreria bastante conocida porque el problema debe venir por un mal uso. Por ejemplo al hacer write le pasas como parametro "bytes", no debería ser el array "pdf"?
Saludos