Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

La firma es invalida #45

Open
jordiicabrera opened this issue Mar 19, 2025 · 12 comments
Open

La firma es invalida #45

jordiicabrera opened this issue Mar 19, 2025 · 12 comments
Assignees
Labels
bug Something isn't working

Comments

@jordiicabrera
Copy link

Buenos dias estoy probando la libreria con el metodo de firmado propuesto con una firma de Security data el WS de recepción lo acepta pero el WS de Autorizacion devuelve el error 39 La firma es invalida [Firma inválida (firma y/o certificados alterados)]

Quizás te ha sucedido el error adjunto link de archivo firmado quizas la estructura de la firma no se genero correctamente?

https://afecorec-my.sharepoint.com/:f:/g/personal/joctidur_afecor_com/Ek1dGC3mDr9Bq0kVk7DAYh4BnKdtCqTtiVgL-IUrKiUX7w?e=dX1Iaq

@jcduenas1969
Copy link

Buenas noches, me pasa lo mismo, firma invalida, y estoy trabajando con .p12 de Banco Central

@bryancalisto
Copy link
Owner

Hola. Pueden compartir por aquí el xml firmado y sin firmar en un bloque de código?

@bryancalisto
Copy link
Owner

@jordiicabrera qué proveedor de firma utilizaste cuando dio el error?

@jordiicabrera
Copy link
Author

jordiicabrera commented Mar 20, 2025 via email

@jordiicabrera
Copy link
Author

jordiicabrera commented Mar 20, 2025 via email

@jordiicabrera
Copy link
Author

Xml Generado

<?xml version="1.0" encoding="UTF-8"?> <factura id="comprobante" version="1.0.0"> <infoTributaria> <ambiente>1</ambiente> <tipoEmision>1</tipoEmision> <razonSocial>MOLINA SIGCHO BEATRIZ ELIZABETH</razonSocial> <nombreComercial>MOLINA SIGCHO BEATRIZ ELIZABETH</nombreComercial> <ruc>0926531732001</ruc> <claveAcceso>1903202501092653173200110050010000016190000161916</claveAcceso> <codDoc>01</codDoc> <estab>005</estab> <ptoEmi>001</ptoEmi> <secuencial>000001619</secuencial> <dirMatriz>Calle: AV. FRANCISCO DE ORELLANA Numero: SOLAR 1 Interseccion: AV JOSE SANTIAGO CASTILLO Manzana: 111</dirMatriz> </infoTributaria> <infoFactura> <fechaEmision>19/03/2025</fechaEmision> <dirEstablecimiento>Ciudadela: GARZOTA A Calle: AV GUILLERMO PAREJA Numero: 2NE Interseccion: AV AGUSTIN FREIRE</dirEstablecimiento> <obligadoContabilidad>NO</obligadoContabilidad> <tipoIdentificacionComprador>06</tipoIdentificacionComprador> <razonSocialComprador>JORDAN ORDONEZ</razonSocialComprador> <identificacionComprador>0930764006</identificacionComprador> <totalSinImpuestos>10.00</totalSinImpuestos> <totalDescuento>0.00</totalDescuento> <totalConImpuestos> <totalImpuesto> <codigo>2</codigo> <codigoPorcentaje>4</codigoPorcentaje> <baseImponible>10.00</baseImponible> <valor>1.50</valor> </totalImpuesto> </totalConImpuestos> <propina>0.00</propina> <importeTotal>11.50</importeTotal> <moneda>DOLAR</moneda> <pagos> <pago> <formaPago>01</formaPago> <total>11.50</total> <plazo>0</plazo> <unidadTiempo>dias</unidadTiempo> </pago> </pagos> </infoFactura> <detalles> <detalle> <codigoPrincipal>57</codigoPrincipal> <descripcion>Adaptador Apple 5W AAA</descripcion> <cantidad>1</cantidad> <precioUnitario>10.00</precioUnitario> <descuento>0.00</descuento> <precioTotalSinImpuesto>10.00</precioTotalSinImpuesto> <impuestos> <impuesto> <codigo>2</codigo> <codigoPorcentaje>4</codigoPorcentaje> <tarifa>15.000</tarifa> <baseImponible>10.00</baseImponible> <valor>1.50</valor> </impuesto> </impuestos> </detalle> </detalles> <infoAdicional> <campoAdicional nombre="Direccion">N/A</campoAdicional> <campoAdicional nombre="Telefono">0961592073</campoAdicional> <campoAdicional nombre="Email">jordanvicente_21@hotmail.com</campoAdicional> </infoAdicional> </factura>

XML FIRMADO

<?xml version="1.0" encoding="UTF-8"?> <factura id="comprobante" version="1.0.0"> <infoTributaria> <ambiente>1</ambiente> <tipoEmision>1</tipoEmision> <razonSocial>MOLINA SIGCHO BEATRIZ ELIZABETH</razonSocial> <nombreComercial>MOLINA SIGCHO BEATRIZ ELIZABETH</nombreComercial> <ruc>0926531732001</ruc> <claveAcceso>1903202501092653173200110050010000016190000161916</claveAcceso> <codDoc>01</codDoc> <estab>005</estab> <ptoEmi>001</ptoEmi> <secuencial>000001619</secuencial> <dirMatriz>Calle: AV. FRANCISCO DE ORELLANA Numero: SOLAR 1 Interseccion: AV JOSE SANTIAGO CASTILLO Manzana: 111</dirMatriz> </infoTributaria> <infoFactura> <fechaEmision>19/03/2025</fechaEmision> <dirEstablecimiento>Ciudadela: GARZOTA A Calle: AV GUILLERMO PAREJA Numero: 2NE Interseccion: AV AGUSTIN FREIRE</dirEstablecimiento> <obligadoContabilidad>NO</obligadoContabilidad> <tipoIdentificacionComprador>06</tipoIdentificacionComprador> <razonSocialComprador>JORDAN ORDONEZ</razonSocialComprador> <identificacionComprador>0930764006</identificacionComprador> <totalSinImpuestos>10.00</totalSinImpuestos> <totalDescuento>0.00</totalDescuento> <totalConImpuestos> <totalImpuesto> <codigo>2</codigo> <codigoPorcentaje>4</codigoPorcentaje> <baseImponible>10.00</baseImponible> <valor>1.50</valor> </totalImpuesto> </totalConImpuestos> <propina>0.00</propina> <importeTotal>11.50</importeTotal> <moneda>DOLAR</moneda> <pagos> <pago> <formaPago>01</formaPago> <total>11.50</total> <plazo>0</plazo> <unidadTiempo>dias</unidadTiempo> </pago> </pagos> </infoFactura> <detalles> <detalle> <codigoPrincipal>57</codigoPrincipal> <descripcion>Adaptador Apple 5W AAA</descripcion> <cantidad>1</cantidad> <precioUnitario>10.00</precioUnitario> <descuento>0.00</descuento> <precioTotalSinImpuesto>10.00</precioTotalSinImpuesto> <impuestos> <impuesto> <codigo>2</codigo> <codigoPorcentaje>4</codigoPorcentaje> <tarifa>15.000</tarifa> <baseImponible>10.00</baseImponible> <valor>1.50</valor> </impuesto> </impuestos> </detalle> </detalles> <infoAdicional> <campoAdicional nombre="Direccion">N/A</campoAdicional> <campoAdicional nombre="Telefono">0961592073</campoAdicional> <campoAdicional nombre="Email">jordanvicente_21@hotmail.com</campoAdicional> </infoAdicional> <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="Signature-fa4e9329-098e-4f1e-a7a5-1485679cabd6"><ds:SignedInfo Id="SignedInfo-bc8533d1-5fed-4e0b-97fc-69e674fa36a2"><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="InvoiceRef-163e7b8a-868d-491e-b779-5ed1b159910a" URI="#comprobante"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><ds:DigestValue>h4HKfWYpD0SPyovhvxi9C5gwpcs=</ds:DigestValue></ds:Reference><ds:Reference Id="SignedPropertiesRef-1f956dae-0d6d-4ec1-b036-a9d766ca8f6b" Type="http://uri.etsi.org/01903#SignedProperties" URI="#SignedProperties-f6a57ff0-efb1-4b11-b8a4-9a7c0b387c46"><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><ds:DigestValue>G9OpDhUW4gIvgN/KEN+KFiRiV9o=</ds:DigestValue></ds:Reference><ds:Reference Id="CertificateRef-86213bab-cc1e-4268-a784-f9d8dc303068" URI="#Certificate-c362d5cf-ac1e-4556-ab2d-8547457844c9"><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><ds:DigestValue>eLVo3MovoLPKBvtgv+h56qPOIUI=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue Id="SignatureValue-f9c957dd-f9f5-432d-abab-b23a1cb8deb8">rEfPO7SS9YUBLrn9Q6Fkp3LhzID8AOBsPc36Rg1P9Ijk1p9ONOgk2Yct0eSX5jlc/dsNEV5Kck9HZvDTF1HCPqnZJYqzpKVfd/8bSxZrPAZ11z/CFI102vnRF+QyMV66Bx4Y87AAjAUgDt2Su0vCD4YoBFZcWc0tq39UMvlLqZvSOFEOmneb6X1uBHSyFLQ6I5xXL+zN9WfWJmoL8o2mH1YqQV8W+7v5Ae1LY9FR7R6UOeQt4fOLSIpXaEyQyUy0aDSN1AQGudxCMFdNykv4CsqeeEFF4E9Jxn+v7tQDq1EoQIMxRHM/Q/4GOGn3OiBn+vt6G/bRlc60cYW0BdB5tw==</ds:SignatureValue><ds:KeyInfo Id="Certificate-c362d5cf-ac1e-4556-ab2d-8547457844c9"><ds:X509Data><ds:X509Certificate>MIIMVDCCCjygAwIBAgIEE//IojANBgkqhkiG9w0BAQsFADCBmTELMAkGA1UEBhMCRUMxHTAbBgNVBAoMFFNFQ1VSSVRZIERBVEEgUy5BLiAyMTAwLgYDVQQLDCdFTlRJREFEIERFIENFUlRJRklDQUNJT04gREUgSU5GT1JNQUNJT04xOTA3BgNVBAMMMEFVVE9SSURBRCBERSBDRVJUSUZJQ0FDSU9OIFNVQkNBLTIgU0VDVVJJVFkgREFUQTAeFw0yNDExMjIyMDA0MjNaFw0yNjExMjIyMDA0MjNaMIGqMSgwJgYDVQQDDB9CRUFUUklaIEVMSVpBQkVUSCBNT0xJTkEgU0lHQ0hPMSAwHgYDVQQFExcwOTI2NTMxNzMyLTIyMTEyNDE1MTQxNjEwMC4GA1UECwwnRU5USURBRCBERSBDRVJUSUZJQ0FDSU9OIERFIElORk9STUFDSU9OMR0wGwYDVQQKDBRTRUNVUklUWSBEQVRBIFMuQS4gMjELMAkGA1UEBhMCRUMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDcynJSj0KfVV2cUZXCiqit/VgBaFmpZgClLOPwwcXU7zBqSkB3T2+SRzTUyRyNV3jvM3tuyCYUt/qtyYWkDjRaerIa7xmKyn1TZORb4iMN7SUPBKEDfXnJIuk2kz1iS4eGiVqalNhrPdQ5IZhrtalv+bllfLTbepdMdvS0aduMChswMn8101YYUilF/HsscBQy/oJ7xLiEWowaXJzX1Cc/gDw6c0mn02/RStM/+PFcLFzMJcY7G4HBE/9sLqemMQJDgOq7pNWYZL5M+seCI/2qqPV8z3z9dKJhgnlfCuZadvyUXviKIQpZCFfLov5xPIpPKbnovT+K5KmlDbWVXDj1AgMBAAGjggePMIIHizAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFIy6yhFXeCWAHWsKS1W/ja5i3b2PMFkGCCsGAQUFBwEBBE0wSzBJBggrBgEFBQcwAYY9aHR0cDovL29jc3Bndy5zZWN1cml0eWRhdGEubmV0LmVjL2VqYmNhL3B1YmxpY3dlYi9zdGF0dXMvb2NzcDCBzwYDVR0uBIHHMIHEMIHBoIG+oIG7hoG4bGRhcDovL2xkYXBzZGNhMi5zZWN1cml0eWRhdGEubmV0LmVjL0NOPUFVVE9SSURBRCBERSBDRVJUSUZJQ0FDSU9OIFNVQkNBLTIgU0VDVVJJVFkgREFUQSxPVT1FTlRJREFEIERFIENFUlRJRklDQUNJT04gREUgSU5GT1JNQUNJT04sTz1TRUNVUklUWSBEQVRBIFMuQS4gMixDPUVDP2RlbHRhUmV2b2NhdGlvbkxpc3Q/YmFzZTAoBgNVHREEITAfgR1tb2xpbmFzaWdjaG9iZWF0cml6QGdtYWlsLmNvbTCCAQYGA1UdIASB/jCB+zBaBgorBgEEAYKmcgIHMEwwSgYIKwYBBQUHAgIwPh48AEMAZQByAHQAaQBmAGkAYwBhAGQAbwAgAGQAZQAgAFAAZQByAHMAbwBuAGEAIABOAGEAdAB1AHIAYQBsMIGcBgorBgEEAYKmcgIBMIGNMIGKBggrBgEFBQcCARZ+aHR0cHM6Ly93d3cuc2VjdXJpdHlkYXRhLm5ldC5lYy93cC1jb250ZW50L2Rvd25sb2Fkcy9Ob3JtYXRpdmFzL1BfZGVfQ2VydGlmaWNhZG9zL1BvbGl0aWNhcyBkZSBDZXJ0aWZpY2FkbyBQZXJzb25hIE5hdHVyYWwucGRmMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDCCAqIGA1UdHwSCApkwggKVMIHloEGgP4Y9aHR0cDovL29jc3Bndy5zZWN1cml0eWRhdGEubmV0LmVjL2VqYmNhL3B1YmxpY3dlYi9zdGF0dXMvb2NzcKKBn6SBnDCBmTE5MDcGA1UEAwwwQVVUT1JJREFEIERFIENFUlRJRklDQUNJT04gU1VCQ0EtMiBTRUNVUklUWSBEQVRBMTAwLgYDVQQLDCdFTlRJREFEIERFIENFUlRJRklDQUNJT04gREUgSU5GT1JNQUNJT04xHTAbBgNVBAoMFFNFQ1VSSVRZIERBVEEgUy5BLiAyMQswCQYDVQQGEwJFQzCBx6CBxKCBwYaBvmxkYXA6Ly9sZGFwc2RjYTIuc2VjdXJpdHlkYXRhLm5ldC5lYy9DTj1BVVRPUklEQUQgREUgQ0VSVElGSUNBQ0lPTiBTVUJDQS0yIFNFQ1VSSVRZIERBVEEsT1U9RU5USURBRCBERSBDRVJUSUZJQ0FDSU9OIERFIElORk9STUFDSU9OLE89U0VDVVJJVFkgREFUQSBTLkEuIDIsQz1FQz9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0P2Jhc2UwgeCggd2ggdqGgddodHRwczovL3BvcnRhbC1vcGVyYWRvcjIuc2VjdXJpdHlkYXRhLm5ldC5lYy9lamJjYS9wdWJsaWN3ZWIvd2ViZGlzdC9jZXJ0ZGlzdD9jbWQ9Y3JsJmlzc3Vlcj1DTj1BVVRPUklEQUQgREUgQ0VSVElGSUNBQ0lPTiBTVUJDQS0yIFNFQ1VSSVRZIERBVEEsT1U9RU5USURBRCBERSBDRVJUSUZJQ0FDSU9OIERFIElORk9STUFDSU9OLE89U0VDVVJJVFkgREFUQSBTLkEuIDIsQz1FQzAdBgNVHQ4EFgQUEq5WwtrhLpM181dYQWqxPaEfYMwwKwYDVR0QBCQwIoAPMjAyNDExMjIyMDA0MjNagQ8yMDI2MTEyMjIwMDQyM1owCwYDVR0PBAQDAgXgMBoGCisGAQQBgqZyAwEEDAwKMDkyNjUzMTczMjBABgorBgEEAYKmcgMJBDIMMEdVQVlBUVVJTCBDQUJFQ0VSQSBDQU5UT05BTCBZIENBUElUQUwgUFJPVklOQ0lBTDARBgorBgEEAYKmcgMiBAMMAS4wTAYKKwYBBAGCpnIDBwQ+DDxBViBGUkFOQ0lTQ08gREUgT1JFTExBTkEgU09MQVIgMSBZIEFWIEpPU0UgU0FOVElBR08gQ0FTVElMTE8wIQYKKwYBBAGCpnIDAgQTDBFCRUFUUklaIEVMSVpBQkVUSDAfBgorBgEEAYKmcgMgBBEMDzAwMTAwMjAwMDY3NDY2NDARBgorBgEEAYKmcgMjBAMMAS4wEwYKKwYBBAGCpnIDIQQFDANQRlgwFwYKKwYBBAGCpnIDDAQJDAdFQ1VBRE9SMBYGCisGAQQBgqZyAwMECAwGTU9MSU5BMCMGCisGAQQBgqZyAx4EFQwTSU5HRU5JRVJPIENPTUVSQ0lBTDAdBgorBgEEAYKmcgMLBA8MDTA5MjY1MzE3MzIwMDEwEQYKKwYBBAGCpnIDHQQDDAEuMBYGCisGAQQBgqZyAwQECAwGU0lHQ0hPMBAGCisGAQQBgqZyAwgEAgwAMA0GCSqGSIb3DQEBCwUAA4ICAQAcFEijGE7LpDCU/K2vxbXl47Jwgqr7QxVIk4womoSlEtMzY0gPd/8f3PMcihArr2cERIZ+tft+oFlWZCPpFR37sj1nGPNZ6DGS1Ks69IjLIy21BsA1IYZmAvAnZhx0eOaz9sSGJnisTMyT0fwryu+7oyc51Lvq12bPBeInVnU0gCwbvFrXvOmcGvfdSAW9woY3th6JIA1c2R5rIdpu8G1Zn521V6g0zvFo0irp+Hb0+5iiSPiZKaJ1qME8qdt22YESCcdCZoNsdvBBTgrNAq28PArhjsjrRd/8vaitjmxsfzP6oORRTGsa22noq9mtP9iKESk1cUKDmlnVN5vdznbiWZy1tB/5+4TG3HlU1AtaL1V/4q+pzCXNaSIlUs4HGhC435oeiBvfnID988czr024hnDkwbfup+gtnQBOgE1GHa+B2xun8Us9/lAOSm1CnjK0oPbbsUPIwhEboh1NMX0pEV3NfTCU/TwNKy+uW9+nsfiMbkI73fTkXdcmT0C7WVBq/32EnFUrImaWl24I8Z9AqPOYThLxDjxjfc3hGblx+Vp6sCTE0JLqnB7uNZHJ+b0mOAXy80hgfcAHB1+44CH+jPGziE11Dvpo6BiDbFE7OlzcB7lHbsafnWn292BHqc6k6d57usc1GeNBWPZwWPodagec8KYdWIDELDNCAH+IKg==</ds:X509Certificate></ds:X509Data><ds:KeyValue><ds:RSAKeyValue><ds:Modulus>ZVM=</ds:Modulus><ds:Exponent>J4ciVyGAM4dXYxdDhiKAhYY2B0EUB5hYY0ExcQVpVjc4YmhnWCMSgJCZkAF3aBJ0mHeUOTcFN2eZCSJoIFU1lSIXOUJyZWATV3kUgCCICBgmkwN2CFUmlzh4YnRJk1BFYWKZZTOGV0h2YpIIlxiUQXEygiBDZwQplVIgQ1RheYZ1ZoUolgOSEDGAlhg1Z3chiHFRaAODd1VSFBgUg4BzeBgJFHB3QlBZFIlzaHSAE5JARHc1loGVI2Q3I4hkgAABVokkhYBxkZgoCTUwQhR0l0BoZoEUKZJplVAFiUAEcASXRHNkAnFVAQhTE1VklUIHRFVoF3MogFUwh4KYA1QycnBpUARGUXlHZZInM3JiUWEFNId0EgiCGEdWEGZUCBc2UACBWBQ5eXFxUBmIYVNkQ5WWIYc=</ds:Exponent></ds:RSAKeyValue></ds:KeyValue></ds:KeyInfo><ds:Object Id="SignatureObject-8c2ffd15-4ddd-41a4-9a6a-cb0979404d84"><xades:QualifyingProperties xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" Target="#Signature-fa4e9329-098e-4f1e-a7a5-1485679cabd6"><xades:SignedProperties Id="SignedProperties-f6a57ff0-efb1-4b11-b8a4-9a7c0b387c46"><xades:SignedSignatureProperties><xades:SigningTime>2025-03-20T08:21:20.028-05:00</xades:SigningTime><xades:SigningCertificate><xades:Cert><xades:CertDigest><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><ds:DigestValue>V9zdZhbVD2co/oD0PWHC5/m2Lbo=</ds:DigestValue></xades:CertDigest><xades:IssuerSerial><ds:X509IssuerName>CN=AUTORIDAD DE CERTIFICACION SUBCA-2 SECURITY DATA,OU=ENTIDAD DE CERTIFICACION DE INFORMACION,O=SECURITY DATA S.A. 2,C=EC</ds:X509IssuerName><ds:X509SerialNumber>335530146</ds:X509SerialNumber></xades:IssuerSerial></xades:Cert></xades:SigningCertificate></xades:SignedSignatureProperties><xades:SignedDataObjectProperties><xades:DataObjectFormat ObjectReference="#InvoiceRef-163e7b8a-868d-491e-b779-5ed1b159910a"><xades:Description>Firma digital</xades:Description><xades:MimeType>text/xml</xades:MimeType><xades:Encoding>UTF-8</xades:Encoding></xades:DataObjectFormat></xades:SignedDataObjectProperties></xades:SignedProperties></xades:QualifyingProperties></ds:Object></ds:Signature></factura>

El proveedor utilizado es SECURITY DATA

@jordiicabrera
Copy link
Author

Me encuentro usando una API de Node JS para llamar a la funcion mencionada en tu codigo.

`
const { signInvoiceXml } = require('ec-sri-invoice-signer');

app.post('/firmarAct',` (req, res) => {

const { rutaCertificado, clave, rutaXml, rutaSalida } = req.body;

try {
    // 🔹 Leer el archivo P12 como buffer
    const contenidoP12 = fs.readFileSync(rutaCertificado);

    // 🔹 Leer el contenido del XML (no solo la ruta)
    const contenidoXml = fs.readFileSync(rutaXml, 'utf8');
    console.log(contenidoXml);
    
    const signedInvoice = signInvoiceXml(contenidoXml, contenidoP12, { pkcs12Password: clave });
    // 🔹 Llamar a la función con el contenido del XML en lugar de la ruta
    console.log(signedInvoice);
    if (signedInvoice) {
        // 🔹 Guardar el XML firmado en un archivo
        fs.writeFileSync(rutaSalida, signedInvoice, 'utf8');

        // 🔹 Devolver el contenido del XML firmado como respuesta
        res.status(200).json({ mensaje: "Firma exitosa", xmlFirmado: signedInvoice });
    } else {
        res.status(500).json({ mensaje: "Error al firmar el XML" });
    }
} catch (error) {
    res.status(500).json({ mensaje: "Error al procesar la firma", error: error.message });
}

});`

@bryancalisto
Copy link
Owner

Estimado:

En el issue subí el link de un repositorio de one drive donde se encuentra un archivo generado sin firma y un XML Firmado con el método que propone.

Lo comparto a continuación

FirmaElectronicaNodeJshttps://afecorec-my.sharepoint.com/:f:/g/personal/joctidur_afecor_com/Ek1dGC3mDr9Bq0kVk7DAYh4BnKdtCqTtiVgL-IUrKiUX7w?e=HpfRjc

Adicional el SRI en el WEB Service de Autorización devuelve firma invalida certificado de firma alterado.

De antemano agradezco su amable ayuda.

Saludos Cordiales,

Jordan Ordoñez C.

Hice una prueba live con el SRI (entorno de pruebas) usando tu factura (modificando la fecha, RUC y clave de acceso) para un .p12 de Security Data que tengo) y el documento fue autorizado sin problema. Es posible que el problema esté relacionado al .p12.

Estás seguro que al mover la data en tu sistema no modificas el XML firmado de alguna forma no intencional?

Este repo tiene una herramienta para hacer pruebas live con el entorno de pruebas del SRI. Podrías por favor hacer una prueba con tu factura y tu .p12 para verificar si quitando tu API del medio y haciendo el flujo más directo con el SRI ya no tienes el error?

Para hacer la prueba solo tienes que configurar estas variables de acuerdo a los datos de tu factura y correr el comando npm run test:sri del package.json .

PD: Gracias por compartir el XML plano. Otra gente puede ver el XML directamente y no tiene que navegar a links que se pueden romper en el futuro o que podrían causar desconfianza en términos de seguridad.

@sebas2906
Copy link

Acabo de comprobar que otra variable es el documento a firmar en sí. En mi caso probar con el invoice.xml de test/test-data funciona bien

@bryancalisto
Copy link
Owner

Acabo de comprobar que otra variable es el documento a firmar en sí. En mi caso probar con el invoice.xml de test/test-data funciona bien

No te entiendo bien. Podrías clarificar el "Acabo de comprobar que otra variable es el documento a firmar en sí"? Probaste con el invoice.xml de test/test-data y te funcionó, pero después probaste con otro xml y no te funcionó?

@sebas2906
Copy link

Claro, comparando con el XML de ejemplo en el repositorio pude comprobar que en mi caso habian atributos extras como
xmlns:xsi= en la etiqueta factura, los retiré y ya no tengo el error de firma.

@bryancalisto
Copy link
Owner

bryancalisto commented Mar 27, 2025

Claro, comparando con el XML de ejemplo en el repositorio pude comprobar que en mi caso habian atributos extras como xmlns:xsi= en la etiqueta factura, los retiré y ya no tengo el error de firma.

Gracias por el dato. Toca mejorar la detección y reporte de errores de esos aspectos no soportados en el XML. Cree este issue para llevar tracking de esa mejora que ayudará en el debugging. Si alguien quiere aportar con esos cambios, siéntase libres de hacer un PR. Sino, ya estaré agregando eso próximamente.

@bryancalisto bryancalisto added the bug Something isn't working label Mar 27, 2025
@bryancalisto bryancalisto self-assigned this Mar 27, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants