Firmar XML, con que recomiendan trabajarlo, Java, Net, u Openssl?

1,407 views
Skip to first unread message

Fernando Mora

unread,
Nov 29, 2018, 9:47:44 PM11/29/18
to Comunidad de Visual Foxpro en Español
Hola foxeros, desde 2015 que empezó la facturación electrónica en Ecuador, cree una aplicación en Java, un Jar que logre pulirlo y dejarlo en solo 4 megas, este Jar lo invocaba desde mi programa en VFP para que haga el firmado, y lo hace de forma excelente, el problema que le vi a hacerlo de esta forma, es la necesidad de instalar Java que pesa varios megas para que la aplicación funcione, y en ocasiones cuando toca dar soporte vía internet a clientes despistados que formatean las maquinas y toda reinstalar todo, pasar el JavaMachine se tomaba mucho tiempo. Por lo cual opte por desarrollar una DLL en Net, CShap.... todo excelente, la DLL quedo en apenas 1,5 megas, es completa, tiene varias funciones adicionales, pero con lo que me topo ahora, es que algunos clientes, tienes sus vegestorios de maquinas con Windows 7 sin servipack 1, por ende esas maquinas no estan con NET4 y toca peor que con Java instalar el ServiPack1 y la parafernalia librería de NET4 que pesan un chorro de megas.... no he probado con Openssl, no se que tan optimo sea hacerlo con esa herramienta. La firma del modelo ecuatoriano es tediosa, lleva 3 referencias, 1 a todo el comprobante, otra a las propiedades del objeto y otra al certificado. y la firma es envuelta, XadesBes, Sha1. Que tal es esa herramienta Openssl? he visto que usa un paquete de librerias de cpp, Con que han solucionado el tema del firmado....

Diego Fazio

unread,
Nov 30, 2018, 5:26:07 AM11/30/18
to Comunidad de Visual Foxpro en Español
Hola, Con OPENSSL no vas a tener problemas. Lo podes ejecutar desde linea de comando o sino tambien podes desarrollar una funcion que lo haga automaticamente en C. En mi caso que trabajo tambien con Harbour fue lo que hice y funciona perfecto.
Por linea de comando lo unico malo es que necesitas instalarlo en la maquina donde vas a generar la firma, pero tambien con la otra opcion necesitas instalar las dll para hacer esto. Cosa que no es muy diferente.

Diego.

Hugo C.

unread,
Nov 30, 2018, 8:42:30 PM11/30/18
to Comunidad de Visual Foxpro en Español
Se me ocurre que como ya lo tienes en NET y Java, crearas un web service que diera el mismo servicio de timbrado pero por Internet, de esa forma no tienes que instalar nada, eso si, los clientes deben de tener Internet.

Saludos
Message has been deleted

Edwin Juarez

unread,
Nov 30, 2018, 9:09:40 PM11/30/18
to Comunidad de Visual Foxpro en Español
He desarrollado la Firma Electrónica XADES BES en VFP usando openssl.exe, no tienes que instalar nada, sólo llevar el openssl.exe, libeay32.dll, ssleay32.dll y listo, es muy rápida.
Si te interesa puedes contactarme al correo: edwinju...@gmail.com
Saludos

Hugo C.

unread,
Nov 30, 2018, 9:18:45 PM11/30/18
to Comunidad de Visual Foxpro en Español
También use OPENSSL  y es verdad solo la pones en algún directorio de tu aplicación y la usas

Saludos

El jueves, 29 de noviembre de 2018, 19:47:44 (UTC-7), Fernando Mora escribió:

Fernando Mora

unread,
Dec 1, 2018, 9:01:43 PM12/1/18
to Comunidad de Visual Foxpro en Español
Gracias por responder amigos, mi duda es que si con Openssl se puede hacer signature de 3 referencias, con dos namespace 2 tipos de prefijos. La firma que hago tanto como Java como con Net queda de esta manera: 
-<ds:Signature Id="Signature507794" xmlns:etsi="http://uri.etsi.org/01903/v1.3.2#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
-<ds:SignedInfo Id="Signature-SignedInfo198696">
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
-<ds:Reference Id="SignedPropertiesID995538" URI="#Signature507794-SignedProperties80610" Type="http://uri.etsi.org/01903#SignedProperties">
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>hriVC/crJz49plBQr8K4vN20J68=</ds:DigestValue>
</ds:Reference>
-<ds:Reference URI="#Certificate1953823">
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>6zdHkdLezBGoufmSC1JdxH/a898=</ds:DigestValue>
</ds:Reference>
-<ds:Reference Id="Reference-ID-394618" URI="#comprobante">
-<ds:Transforms>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>LQrMlxSGUiVOqEa/kE6wLTw/MTY=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue Id="SignatureValue44663"> ySnXPap/mL7uWwqrRb5KCO6inUQ3daYpGt8HG4E7FTzIUoA4VgMAyeE4PVPi9M5Tiz1bK2L3CGRQ eDS3CLdsF8ZJbTOpFrpvPFfdFrH42iVDQpYJKMjsyGQrXIjL8JP5vh32jIeGBdjHeI1Os/bamGNr TywTa73na1XF+Af4F3DTOohYheSPyd46jEeNPLn2H2bxFFeLYSsWyYQjlH09wikVWhtnVbybKYS4 4XTrjPH86Ageq+ji9ubffHfO1k9brr9PVII16CSElt/gDUhCDNAUlEkTrw7HuOiKqukp914gH/yZ dpFOnXWYmr4onVK5zZiAhVOO7Wy9vChKz357+w== </ds:SignatureValue>
-<ds:KeyInfo Id="Certificate1953823">
-<ds:X509Data>
<ds:X509Certificate> MIIJpzCCB4+gAwIBAgIEWH+b9TANBgkqhkiG9w0BAQsFADCBoTELMAkGA1UEBhMCRUMxIjAgBgNV BAoTGUJBTkNPIENFTlRSQUwgREVMIEVDVUFET1IxNzA1BgNVBAsTLkVOVElEQUQgREUgQ0VSVElG SUNBQ0lPTiBERSBJTkZPUk1BQ0lPTi1FQ0lCQ0UxDjAMBgNVBAcTBVFVSVRPMSUwIwYDVQQDExxB QyBCQU5DTyBDRU5UUkFMIERFTCBFQ1VBRE9SMB4XDTE3MTIyODE5MDkyMloXDTE5MTIyODE5Mzky MlowgbIxCzAJBgNVBAYTAkVDMSIwIAYDVQQKExlCQU5DTyBDRU5UUkFMIERFTCBFQ1VBRE9SMTcw NQYDVQQLEy5FTlRJREFEIERFIENFUlRJRklDQUNJT04gREUgSU5GT1JNQUNJT04tRUNJQkNFMQ4w DAYDVQQHEwVRVUlUTzE2MBEGA1UEBRMKMDAwMDI0ODM0NTAhBgNVBAMTGk1BUklBIEVMRU5BIFZB TEFSRVpPIE9DSE9BMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1PW1kMxyOrrvH6Ut DJs3l9504/lsFQpPKmoPXLumMi3xRMpKVFIvG2FKW0knqKNu2oxdEns1Jh/AcpvI3ZhSdhAaGe2A hniqaN3ADnnMTG/RGOJPnkQoKF7cGW0RG2Bho1ovQkaBb6Ns719EdOD5e/u2Ijt6t0uqeErs2RMd 00NxnZqriEAfnFY0bEGf5SOrOrXVCiwUO5dj8rXhXYNO7SgInkW+eIGaWsPlwEjk4A/rd3wug12G 4HKXkyWjZpVTlrjg45IHTed2yKcLo4+QKZZvhMUVSeOIudLI+eExX08Mm9eRC/xicGEeS+pbqC6W +FJfIXFgfCCTW445FCriZQIDAQABo4IE0jCCBM4wCwYDVR0PBAQDAgeAMGYGA1UdIARfMF0wWwYL KwYBBAGCqDsCAQEwTDBKBggrBgEFBQcCARY+aHR0cDovL3d3dy5lY2kuYmNlLmVjL3BvbGl0aWNh LWNlcnRpZmljYWRvL3BlcnNvbmEtbmF0dXJhbC5wZGYwgZEGCCsGAQUFBwEBBIGEMIGBMD4GCCsG AQUFBzABhjJodHRwOi8vb2NzcC5lY2kuYmNlLmVjL2VqYmNhL3B1YmxpY3dlYi9zdGF0dXMvb2Nz cDA/BggrBgEFBQcwAYYzaHR0cDovL29jc3AxLmVjaS5iY2UuZWMvZWpiY2EvcHVibGljd2ViL3N0 YXR1cy9vY3NwMBoGCisGAQQBgqg7AwEEDBMKMDcwMzEwNDI4MTAbBgorBgEEAYKoOwMCBA0TC01B UklBIEVMRU5BMBgGCisGAQQBgqg7AwMEChMIVkFMQVJFWk8wFQYKKwYBBAGCqDsDBAQHEwVPQ0hP QTA1BgorBgEEAYKoOwMHBCcTJTEwIERFIEFHT1NUTyBTTiBFIFBJQ0hJTkNIQSBZIEJPTElWQVIw GQYKKwYBBAGCqDsDCAQLEwkwNzI5MjMwNzUwFwYKKwYBBAGCqDsDCQQJEwdNYWNoYWxhMBcGCisG AQQBgqg7AwwECRMHRUNVQURPUjAdBgorBgEEAYKoOwMLBA8TDTA3MDMxMDQyODEwMDEwIAYKKwYB BAGCqDsDMwQSExBTT0ZUV0FSRS1BUkNISVZPMB4GA1UdEQQXMBWBE2RpcHJvY2FtQGhvdG1haWwu ZXMwggHfBgNVHR8EggHWMIIB0jCCAc6gggHKoIIBxoaB1WxkYXA6Ly9iY2VxbGRhcHN1YnAxLmJj ZS5lYy9jbj1DUkw0OTMsY249QUMlMjBCQU5DTyUyMENFTlRSQUwlMjBERUwlMjBFQ1VBRE9SLGw9 UVVJVE8sb3U9RU5USURBRCUyMERFJTIwQ0VSVElGSUNBQ0lPTiUyMERFJTIwSU5GT1JNQUNJT04t RUNJQkNFLG89QkFOQ08lMjBDRU5UUkFMJTIwREVMJTIwRUNVQURPUixjPUVDP2NlcnRpZmljYXRl UmV2b2NhdGlvbkxpc3Q/YmFzZYY0aHR0cDovL3d3dy5lY2kuYmNlLmVjL0NSTC9lY2lfYmNlX2Vj X2NybGZpbGVjb21iLmNybKSBtTCBsjELMAkGA1UEBhMCRUMxIjAgBgNVBAoTGUJBTkNPIENFTlRS QUwgREVMIEVDVUFET1IxNzA1BgNVBAsTLkVOVElEQUQgREUgQ0VSVElGSUNBQ0lPTiBERSBJTkZP Uk1BQ0lPTi1FQ0lCQ0UxDjAMBgNVBAcTBVFVSVRPMSUwIwYDVQQDExxBQyBCQU5DTyBDRU5UUkFM IERFTCBFQ1VBRE9SMQ8wDQYDVQQDEwZDUkw0OTMwKwYDVR0QBCQwIoAPMjAxNzEyMjgxOTA5MjJa gQ8yMDE5MTIyODE5MzkyMlowHwYDVR0jBBgwFoAUGPnw++YyHJlmOSrKi7JpfUknv84wHQYDVR0O BBYEFOUAmPKXZ85zmR1TchEyPYoS8lNQMAkGA1UdEwQCMAAwGQYJKoZIhvZ9B0EABAwwChsEVjgu MQMCBLAwDQYJKoZIhvcNAQELBQADggIBAKY3jOO37D0VyxkgR5h2IdSZc6zAV4ELQB7YAu2+3PlB Zzf4KJDlm1LxFwRJWgrwOpwAxfyGI1y7soTYiqLUDxkEX5jHZ5X4jjCW2da705sa7BGAAd91b428 z3Z1ssOVX8/bgJw0+gw4IYRuKOLaAIaljk7wv6rElqW4TzeZyMVBFum2ASkdtz74LHe1UlRVHkQt 2nWMWB9YDPQRSKDJM/2V5jLq/pblo/3rx2GFSwFzPInBAOSdRc5qSgrgXUAapu65cis+EWJrKGTO ZmUJBiCBjJF94qDXBtLANjjZURy+5QikmpqsoOoFkp2d/PZ5MpJXOAuV0bIG8SSAdxsCosgWcIKm BFXRiUqAltQ31U68gB04UTniTfZELUDUyDYv/GV+JtyHIf2V/UwPZunqlTrVqTfsqrmBHLRuGlbU zxxH+9udvoj6f8XikJPTgTosZjI+k28pcVabT7/luDUavW44hzK5dsvtoecK5HMdxAIS8YILQY0D I5xXUIKqCbXdvOQZ/+rET7gMSEqrM32Xrjp1SQ/8SlgbtqCarNa8SLbGewlLos1uXf9ufuabpiOR MvBQpB6s9R2OerbrRZ+/KZGoBSbauzdEzduto96z0md+INmC2IrJjJV8WVdAMFQiZBBvHpCk0VAe Or4s//+z9DVugAkUSkpaVEWmK/GMvUwX </ds:X509Certificate>
</ds:X509Data>
-<ds:KeyValue>
-<ds:RSAKeyValue>
<ds:Modulus> 1PW1kMxyOrrvH6UtDJs3l9504/lsFQpPKmoPXLumMi3xRMpKVFIvG2FKW0knqKNu2oxdEns1Jh/A cpvI3ZhSdhAaGe2AhniqaN3ADnnMTG/RGOJPnkQoKF7cGW0RG2Bho1ovQkaBb6Ns719EdOD5e/u2 Ijt6t0uqeErs2RMd00NxnZqriEAfnFY0bEGf5SOrOrXVCiwUO5dj8rXhXYNO7SgInkW+eIGaWsPl wEjk4A/rd3wug12G4HKXkyWjZpVTlrjg45IHTed2yKcLo4+QKZZvhMUVSeOIudLI+eExX08Mm9eR C/xicGEeS+pbqC6W+FJfIXFgfCCTW445FCriZQ== </ds:Modulus>
<ds:Exponent>AQAB</ds:Exponent>
</ds:RSAKeyValue>
</ds:KeyValue>
</ds:KeyInfo>
-<ds:Object Id="Signature507794-Object737676">
-<etsi:QualifyingProperties Target="#Signature507794">
-<etsi:SignedProperties Id="Signature507794-SignedProperties80610">
-<etsi:SignedSignatureProperties>
<etsi:SigningTime>2018-11-15T12:58:08-05:00</etsi:SigningTime>
-<etsi:SigningCertificate>
-<etsi:Cert>
-<etsi:CertDigest>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>rMCEpRRiYfO88qesqBAZVvl4MFM=</ds:DigestValue>
</etsi:CertDigest>
-<etsi:IssuerSerial>
<ds:X509IssuerName>CN=AC BANCO CENTRAL DEL ECUADOR,L=QUITO,OU=ENTIDAD DE CERTIFICACION DE INFORMACION-ECIBCE,O=BANCO CENTRAL DEL ECUADOR,C=EC</ds:X509IssuerName>
<ds:X509SerialNumber>1484758005</ds:X509SerialNumber>
</etsi:IssuerSerial>
</etsi:Cert>
</etsi:SigningCertificate>
</etsi:SignedSignatureProperties>
-<etsi:SignedDataObjectProperties>
-<etsi:DataObjectFormat ObjectReference="#Reference-ID-394618">
<etsi:Description>contenido comprobante</etsi:Description>
<etsi:MimeType>text/xml</etsi:MimeType>
</etsi:DataObjectFormat>
</etsi:SignedDataObjectProperties>
</etsi:SignedProperties>
</etsi:QualifyingProperties>
</ds:Object>
</ds:Signature>



El jueves, 29 de noviembre de 2018, 21:47:44 (UTC-5), Fernando Mora escribió:

Edwin Juarez

unread,
Dec 2, 2018, 12:44:04 PM12/2/18
to Comunidad de Visual Foxpro en Español
Si es posible realizar la firma en formato XADES BES en Visual FoxPro usando Openssl.exe.

1.jpg

Fernando Mora

unread,
Dec 3, 2018, 12:27:20 AM12/3/18
to Comunidad de Visual Foxpro en Español
Ah, chevere, según la documentación que estoy revisando y el capture que me muestras, veo que se va armando las referencias a mano, por línea, como un simple archivo de texto. Lo veo mas sencillo que la tediosa manera de hacerlo en java o net, donde se crean esos horrorosos objetos dom, donde configurara las referencias es complicado. Muchas gracias Edwin, voy a emplear Openssl. Aunque la idea de Hugo C. de crear un web server es también excelente, creo que voy a realizar ambas para tener mas opciones ante cualquier eventualidad. 

jose carlos aguilar

unread,
Dec 3, 2018, 8:20:18 AM12/3/18
to Comunidad de Visual Foxpro en Español
Reply all
Reply to author
Forward
Message has been deleted
0 new messages