PRINT SOME SYSTEM PROPERTIES... java.version=1.7.0_71 os.arch=amd64 os.name=Windows 7 os.version=6.1 file.encoding=Cp1252 TEST THE GENERAL CLASS... General.version()=70000 General.moduleName()=C:\Windows\system32\diFirmaSAT2.dll General.platform()=Win64 General.compileTime()=Jan 12 2015 14:48:08 General.licenceType()=D General.lastError()='' (expecting empty) Current working directory is C:\Scratch\firmasat-7.0.j0 LOOKUP MESSAGES FOR SOME ERROR CODES... General.errorLookup(1)=Cannot open input file/No se puede abrir archivo de entrada General.errorLookup(17)=Invalid option/Opcion no valida General.errorLookup(9999)=Miscellaneous error/Varios de error FORM THE PIPESTRING FROM AN XML FILE: Sat.makePipeStringFromXml('ejemplo_v32-signed2012.xml')= ||3.2|2012-07-20T20:38:12|ingreso|Pago en una sola exhibición|488.50|488.50|Efectivo|Queretaro, Qro.|3850|3464|ABC|2012-07-11T11:11:11|24499.99|PPL961114GZ1|PHARMA PLUS SA DE CV|AV. RIO MIXCOAC|No. 140|ACACIAS|BENITO JUAREZ|MEXICO, D.F.|Mexico|03240|AV. UNIVERSIDAD|1858|OXTOPULCO|DISTRITO FEDERAL|MÉXICO|03910|Regimen General de Ley|Otro regimen (opcional)|PEPJ8001019Q8|JUAN PEREZ PEREZ|AV UNIVERSIDAD|16 EDF 3|DPTO 101|COPILCO UNIVERSIDAD|COYOACAN|DISTRITO FEDERAL|Mexico|04360|1.0|CAPSULAS|VIBRAMICINA 100MG 10|244.00|244.00|1.0|BOTELLA|CLORUTO 500M|137.93|137.93|1.0|TABLETAS|SEDEPRON 250MG 10|84.50|84.50|IVA|0.00|0.00|IVA|16.00|22.07|| SIGN AN XML FILE: Sat.signXml('ejemplo_v32-base2012.xml'-->'ejemplo_v32-new_signed.xml') returns 0 Sat.validateXml('ejemplo_v32-new_signed.xml') returns 0 VERIFY A SIGNATURE IN AN XML FILE: 1. One we know is good: Sat.verifySignature('ejemplo_v32-signed2012.xml') returns 0 2. One we just made, so it should be good: Sat.verifySignature('ejemplo_v32-new_signed.xml') returns 0 FORM THE DIGEST OF THE PIPESTRING IN AN XML FILE: Sat.makeDigestFromXml('ejemplo_v32-signed2012.xml')= dea5f5acd7ff2deebcacdf0af6cefa7c854efa22 EXTRACT THE DIGEST FROM THE SIGNATURE IN AN XML FILE: Sat.extractDigestFromSignature('ejemplo_v32-signed2012.xml')= DEA5F5ACD7FF2DEEBCACDF0AF6CEFA7C854EFA22 TRY VALIDATING XML FILES: 1. A valid one: Sat.validateXml('Muestra_v22-signed2012.xml') returns 0 2. An invalid one (missing version): Sat.validateXml('Muestra_v22-bad-nover.xml') returns -21 ErrorLookup(-21)=Match not found/No se pudo encontrar datos coincidente LastError= 3. An invalid one (empty noCertificado): Sat.validateXml('Muestra_v22-base2012-nocert.xml') returns -28 ErrorLookup(-28)=XML restriction is violated/XML restriccion es violada LastError=Bad attribute/atributo mal [Comprobante/@noCertificado]: '' is too short/es demasiado corto, minimum length/longitud minima=20 EXTRACT AN ATTRIBUTE FROM AN XML FILE: Sat.getXmlAttribute('ejemplo_v32-signed2012.xml',sello,Comprobante)= JaeN6gdrrUV3P6ElOKxhDkAaAd9t0D2q6/kF651uQYInkl7ik3Oa8Xh81xtAYnjtMYa/HqvJz47UBVvWEconmk6T7NR7KOdgYeT1iSZkKruv3zt7PhgMNFMLJ43dpxe3X3z6GOv9MCn4dDnph590Lo+OEN6i3rJfIRAW1uioWMU= Sat.getXmlAttribute('ejemplo_v32-signed2012.xml',formaDePago,Comprobante)= Pago en una sola exhibición GET DETAILS OF X.509 CERTIFICATE: 1. From embedded `certificado` in XML Sat.getCertNumber('ejemplo_v32-signed2012.xml')=20001000000100005867 Sat.getCertExpiry('ejemplo_v32-signed2012.xml')=2016-07-27T17:02:00Z 2. From X.509 file Sat.getCertNumber('emisor.cer')=20001000000100005867 Sat.getCertExpiry('emisor.cer')=2016-07-27T17:02:00Z GET CERTIFICATE AS A BASE64 STRING: Sat.getCertAsString('emisor.cer')= MIIEdDCCA1ygAwIBAgIUMjAwMDEwMDAwMDAxMDAwMDU4NjcwDQYJKoZIhvcNAQEFBQAwggFvMRgwFgYDVQQDDA9BLkMuIGRlIHBydWViYXMxLzAtBgNVBAoMJlNlcnZpY2lvIGRlIEFkbWluaXN0cmFjacOzbiBUcmlidXRhcmlhMTgwNgYDVQQLDC9BZG1pbmlzdHJhY2nDs24gZGUgU2VndXJpZGFkIGRlIGxhIEluZm9ybWFjacOzbjEpMCcGCSqGSIb3DQEJARYaYXNpc25ldEBwcnVlYmFzLnNhdC5nb2IubXgxJjAkBgNVBAkMHUF2LiBIaWRhbGdvIDc3LCBDb2wuIEd1ZXJyZXJvMQ4wDAYDVQQRDAUwNjMwMDELMAkGA1UEBhMCTVgxGTAXBgNVBAgMEERpc3RyaXRvIEZlZGVyYWwxEjAQBgNVBAcMCUNveW9hY8OhbjEVMBMGA1UELRMMU0FUOTcwNzAxTk4zMTIwMAYJKoZIhvcNAQkCDCNSZXNwb25zYWJsZTogSMOpY3RvciBPcm5lbGFzIEFyY2lnYTAeFw0xMjA3MjcxNzAyMDBaFw0xNjA3MjcxNzAyMDBaMIHbMSkwJwYDVQQDEyBBQ0NFTSBTRVJWSUNJT1MgRU1QUkVTQVJJQUxFUyBTQzEpMCcGA1UEKRMgQUNDRU0gU0VSVklDSU9TIEVNUFJFU0FSSUFMRVMgU0MxKTAnBgNVBAoTIEFDQ0VNIFNFUlZJQ0lPUyBFTVBSRVNBUklBTEVTIFNDMSUwIwYDVQQtExxBQUEwMTAxMDFBQUEgLyBIRUdUNzYxMDAzNFMyMR4wHAYDVQQFExUgLyBIRUdUNzYxMDAzTURGUk5OMDkxETAPBgNVBAsTCFVuaWRhZCAxMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2TTQSPONBOVxpXv9wLYo8jezBrb34i/tLx8jGdtyy27BcesOav2c1NS/Gdv10u9SkWtwdy34uRAVe7H0a3VMRLHAkvp2qMCHaZc4T8k47Jtb9wrOEh/XFS8LgT4y5OQYo6civfXXdlvxWU/gdM/e6I2lg6FGorP8H4GPAJ/qCNwIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQUFAAOCAQEATxMecTpMbdhSHo6KVUg4QVF4Op2IBhiMaOrtrXBdJgzGotUFcJgdBCMjtTZXSlq1S4DG1jr8p4NzQlzxsdTxaB8nSKJ4KEMgIT7E62xRUj15jI49qFz7f2uMttZLNThipunsN/NF1XtvESMTDwQFvas/Ugig6qwEfSZc0MDxMpKLEkEePmQwtZD+zXFSMVa6hmOu4M+FzGiRXbj4YJXn9Myjd8xbL/c+9UIcrYoZskxDvMxc6/6M3rNNDY3OFhBK+V/sPMzWWGt8S1yjmtPfXgFs1t65AZ2hcTwTAuHrKwDatJ1ZPfa482ZBROAAX1waz7WwXp0gso7sDCm2/yUVww== Sat.getCertAsString('emisor.cer').length()=1528 Sat.getCertAsString('Muestra_v22-signed2012.xml').length()=1528 MAKE A SIGNATURE FROM A BASE XML FILE: Sat.makeSignatureFromXml('ejemplo_v32-base2012.xml')= JaeN6gdrrUV3P6ElOKxhDkAaAd9t0D2q6/kF651uQYInkl7ik3Oa8Xh81xtAYnjtMYa/HqvJz47UBVvWEconmk6T7NR7KOdgYeT1iSZkKruv3zt7PhgMNFMLJ43dpxe3X3z6GOv9MCn4dDnph590Lo+OEN6i3rJfIRAW1uioWMU= SIGN A DETALLISTA XML FILE: Sat.signXml('detallista_base2012.xml'-->'detallista-new_signed.xml') returns 0 Sat.validateXml('detallista-new_signed.xml') returns 0 Sat.verifySignature('detallista-new_signed.xml') returns 0 EXTRACT AN ATTRIBUTE FROM A DETALLISTA XML FILE: Sat.getXmlAttribute('detallista-new_signed.xml',documentStructureVersion,detallista:detallista)=AMC8.1 EXTRACT AN ATTRIBUTE WITH ACCENTED CHARACTERS: Sat.getXmlAttribute('Muestra_v22-signed2012.xml',pais,Domicilio)=México SIGN CFDi VERSION 3.2 XML FILE: Sat.signXml('ejemplo_v32-base2012.xml'-->'ejemplo_v32-new_signed.xml') returns 0 Sat.validateXml('ejemplo_v32-new_signed.xml') returns 0 VERIFY A SHA-1 SIGNATURE IN AN XML FILE: Sat.verifySignature('ejemplo_v32-new_signed.xml') returns 0 EXTRACT THE DIGEST FROM THE SIGNATURE IN AN XML FILE: Sat.extractDigestFromSignature('ejemplo_v32-new_signed.xml')= DEA5F5ACD7FF2DEEBCACDF0AF6CEFA7C854EFA22 Using a separate certificate file: Sat.extractDigestFromSignature('ejemplo_v32-new_signed.xml', certfile)= DEA5F5ACD7FF2DEEBCACDF0AF6CEFA7C854EFA22 Using a separate certificate stored as a String: Sat.extractDigestFromSignature('ejemplo_v32-new_signed.xml', certStr)= DEA5F5ACD7FF2DEEBCACDF0AF6CEFA7C854EFA22 FORM THE SHA-1 DIGEST OF THE PIPESTRING IN AN XML FILE: Sat.makeDigestFromXml('ejemplo_v32-new_signed.xml')= dea5f5acd7ff2deebcacdf0af6cefa7c854efa22 GET VALIDITY DETAILS OF X.509 CERTIFICATE: 1. From embedded `certificado` in XML Sat.getCertExpiry('ejemplo_v32-signed2012.xml')= 2016-07-27T17:02:00Z Sat.getCertStart('ejemplo_v32-signed2012.xml') = 2012-07-27T17:02:00Z 2. From X.509 file Sat.getCertExpiry('emisor.cer')= 2016-07-27T17:02:00Z Sat.getCertStart('emisor.cer') = 2012-07-27T17:02:00Z CHECK PRIVATE KEY MATCHES PUBLIC KEY IN CERTIFICATE: Sat.checkKeyAndCert(emisor.key,emisor.cer) = 0 Sat.checkKeyAndCert(pac.key,pac.cer) = 0 Sat.checkKeyAndCert(emisor.key,ejemplo_v32-signed2012.xml) = 0 Sat.checkKeyAndCert(STRINGS) = 0 FIND THE COMPROBANTE VERSION OF AN XML FILE: Sat.xmlReceiptVersion('Muestra_v22-base2012.xml') = 22 Sat.xmlReceiptVersion('ejemplo_v32-base2012.xml') = 32 Sat.xmlReceiptVersion('Muestra_v2_signed2011.xml') = 2 Sat.xmlReceiptVersion('ejemplo_v3_signed2011.xml') = 3 Sat.xmlReceiptVersion('ejemplo_v32-noprefix2012.xml') = 32 CREATE CADENA ORIGINAL DEL TIMBRE FISCAL DIGITAL (PIPESTRING FOR TFD): Tfd.makePipeStringFromXml('ejemplo_v32-tfd2012.xml')= ||1.0|909728e9-b1f4-40f1-ba32-0985651c1abb|2012-07-12T20:40:10|JaeN6gdrrUV3P6ElOKxhDkAaAd9t0D2q6/kF651uQYInkl7ik3Oa8Xh81xtAYnjtMYa/HqvJz47UBVvWEconmk6T7NR7KOdgYeT1iSZkKruv3zt7PhgMNFMLJ43dpxe3X3z6GOv9MCn4dDnph590Lo+OEN6i3rJfIRAW1uioWMU=|20001000000100005761|| FORM DIGEST OF PIPESTRING FOR TFD: Tfd.makeDigestFromXml('ejemplo_v32-tfd2012.xml')= 7955442567e50619cf3da0e37328d108fd818f3d EXTRACT DIGEST FROM TFD SELLOSAT: Tfd.extractDigestFromSignature('ejemplo_v32-tfd2012.xml')= 7955442567E50619CF3DA0E37328D108FD818F3D PRETEND WE ARE A PAC WITH A KEY ALLOWED TO SIGN THE TFD: Tfd.makeSignatureFromXml('ejemplo_v32-tfd2012.xml')= 5fqII0agaGIW8Z1LwWhgrvNQkVW1OVzI/jR/OWRtYqZd90NiXXkE/G6DiQcN1S5ipIOLXSQc3eYqeomHGtN/MogJa30j4ZISmSehf5+j0lXuZzzHl/i4PHx/2yTqXk0doshE1rsEKCX8U6fB/e8cFUDjTjBaUFZzyQJeDuaK0I0= Correct= 5fqII0agaGIW8Z1LwWhgrvNQkVW1OVzI/jR/OWRtYqZd90NiXXkE/G6DiQcN1S5ipIOLXSQc3eYqeomHGtN/MogJa30j4ZISmSehf5+j0lXuZzzHl/i4PHx/2yTqXk0doshE1rsEKCX8U6fB/e8cFUDjTjBaUFZzyQJeDuaK0I0= VERIFY SIGNATURE IN TFD SELLOSAT: Tfd.verifySignature(ejemplo_v32-tfd2012.xml,pac.cer)=0 (expected 0) ADD UTF-8 BOM TO EXISTING FILE: Sat.fixBom(Muestra_v22-signed2012.xml->Muestra_v22-with_BOM.xml)=0 (expected 0) EXTRACT ATTRIBUTES FROM CONSECUTIVE ELEMENTS: For file 'ejemplo_v32-base2012.xml' Sat.getXmlAttribute(descripcion,cfdi:Concepto[1])=VIBRAMICINA 100MG 10 Sat.getXmlAttribute(descripcion,cfdi:Concepto[2])=CLORUTO 500M Sat.getXmlAttribute(descripcion,cfdi:Concepto[3])=SEDEPRON 250MG 10 Sat.getXmlAttribute(descripcion,cfdi:Concepto[4])= VALIDATE XML WITH STRICT AND LOOSE OPTIONS: Default strict behaviour (Bad attribute..@CURP..is too long): Sat.validateXml('V3_2_BadCurp.xml') returns -28 ErrorLookup(-28)=XML restriction is violated/XML restriccion es violada LastError=Bad attribute/atributo mal [iedu:instEducativas/@CURP]: 'JUAN01010101GTOHMD0' is too long/es demasiado largo, maximum length/longitud maxima=18 Using XmlOption.Loose: Sat.validateXml('V3_2_BadCurp.xml', Loose) returns 0 GET PRIVATE KEY AS BASE64: Sat.getKeyAsString(emisor.key)= PFJTQUtleVZhbHVlPjxNb2R1bHVzPnRrMDBFanpqUVRsY2FWNy9jQzJLUEkzc3dhMjkrSXY3UzhmSXhuYmNzdHV3WEhyRG1yOW5OVFV2eG5iOWRMdlVwRnJjSGN0K0xrUUZYdXg5R3QxVEVTeHdKTDZkcWpBaDJtWE9FL0pPT3liVy9jS3poSWYxeFV2QzRFK011VGtHS09uSXIzMTEzWmI4VmxQNEhUUDN1aU5wWU9oUnFLei9CK0Jqd0NmNmdqYz08L01vZHVsdXM+PEV4cG9uZW50PkFRQUI8L0V4cG9uZW50PjxQPjZ2S0JhR3lrQnE3TE1Hekx4bUVjRkx6aUxDVWx0bnJoRVQ3M2wzZXd3WUlpNWJUVDRVNVRHMFBodlBURnNKcFhmT1JzWUNlMm1Od2JIbXZWODNhNXd3PT08L1A+PFE+eHFNTW5KWGFSTGFtY3I0SnRsNXlFWEJ3UEZOM2U5Y1ZUSUxra0tpQjY1UGdXQVhablFmUVBPbzRURXVBZ3czOFVEMWsrcE4yWmNuUUhjR3hRUXdhZlE9PTwvUT48RFA+VmFpdzBiZTZYYzFndTNrUEduYlJYQ1k1ZDhyYll4cU44Rkc2eDNpVjh4ZFZUZGFONFhsREI0L0tQN0FtVzJzS05yaTVZcDFZRDRkQVEra2hDakRoTFE9PTwvRFA+PERRPkJGWlZGU28wZk9HY0dzOUplUUR3N3E2TTFOUmh2SU9DeEl2ckg3bCtOTDJpM1drclNrRjhhNGdWdUp6QmJwc2trai8wNzMrK3l4UXdCaVpQajRNTEpRPT08L0RRPjxJbnZlcnNlUT5ybEg2cnBtbGRwQ0g3MHFQd09lcWQ4YSs1cWlrUFRmZzVlOXordUVqdFQxYUEwVmtzS3RLbzdsZmVDU3FWOVhrKzVRWjRuWlJ3NmRqZ3lWR21FdGRhdz09PC9JbnZlcnNlUT48RD5NaEhpUzJBTnlzeEdaV3FDSGYxa0NsMnd1VUZPL0FUMmNFbmZDeU42V21XY2VzbjlEM09pbFNxV2hKd0o0Ulgxd1c1ekpudk5uRWR5Y2kvaDdJNzlVVE1jOW1qa0JabzlaVWlRTFlkOE9HZ0dNZG9HYzZOQjZvUFVJNS93WHNQd29XZ3dNTHd4cXFXMVh6bm1aRmJoZCtvYW5ZTDE0ZUp3OXp6aTU2RjNMWUU9PC9EPjwvUlNBS2V5VmFsdWU+ Sat.getKeyAsString('emisor.key').length()=1220 WRITE PFX FROM PRIVATE KEY AND CERT: Sat.writePfxFile()->archivo_pfx.pem returns 0 New PFX file is 2934 bytes long. GET RFC AND ORG NAME FROM CERT: FILE: emisor.cer Sat.queryCert(rfc)=AAA010101AAA Sat.queryCert(organizationName)='Servicio de Administración Tributaria' FILE: ejemplo_v32-signed2012.xml Sat.queryCert(rfc)=AAA010101AAA Sat.queryCert(organizationName)='Servicio de Administración Tributaria' TEST OTHER QUERIES FOR CERT: FILE: emisor.cer Sat.queryCert(notBefore)=2012-07-27T17:02:00Z Sat.queryCert(notAfter)=2016-07-27T17:02:00Z Sat.queryCert(serialNumber)=20001000000100005867 TEST NOMINA FEATURE: FILE: Muestra_nomina.xml Sat.makePipeStringFromXml= ||3.2|2014-01-15T13:01:59|egreso|FormaDePago|PAGONOMINA|4765.46|PESOS|4765.46|TRANSFERENCIA|MEXICO DF|43200101|AAA010101AAA|ACCEM SERVICIOS EMPRESARIALES SC|AV. HIDALGO|14|GUERRERO|MEXICO|MEXICO, D.F.|México|06300|Regimen General de Ley|JUAN680116AAA|Juanito Pérez Niño|Calle Verde|1234|456|Col. Arboles|Ciudad de Tegucigalpa|Municipio de Torres|Nuevo Leon|México|38294|1|SERVICIO|00000022|QUINCENA 22|4457.96|4457.96|627.07|IVA|0.00|0.00|0.00|1.1|N4515588991|000012|JUAN680116MAZBCÑ90|1|13099903896|2014-01-15|2014-01-01|2014-01-15|12|ADMINISTRACION|230230302302302309|123|2013-11-30|8|COORDONADOR C3|PLANTA|COMPLETA|QUINCENAL|416.67|3|551.19|7343.75|937.50|001|00001|SUELDOS|6250.00|0.00|004|00003|TIEMPO EXTRA DOBLES|312.50|312.50|004|00004|TIEMPO EXTRA TRIPLES|781.25|0.00|009|00043|FONDO DE AHORRO|0.00|625.00|1249.99|2265.80|001|00503|FALTA INJUSTIFICADA|416.66|0.00|036|00507|ISR RETENIDO|0.00|747.07|009|00517|FONDO DE AHORRO EMPRESA|0.00|625.00|009|00518|FONDO DE AHORRO EMPLEADO|0.00|625.00|040|00533|IMSS ENF Y MATERNIDAD|0.00|63.34|040|00534|IMSS INVALIDES Y VIDA|0.00|44.78|040|00535|IMSS CESANTIA Y VEJEZ|0.00|80.61|013|00542|FONACOT|0.00|200.00|036|00570|SUBSIDIO AL ISR|0.00|-120.00|001|00574|INCAPACIDAD POR ENFERMEDAD GENERAL|833.33|0.00|2|3|833.33|2|Dobles|6|625.00|1|Triples|5|781.25|| Sat.signXml('Muestra_nomina.xml'-->'Muestra_nomina2014-signed.xml') returns 0 Sat.validateXml('Muestra_nomina2014-signed.xml') returns 0 ==> OK File 'Muestra_nomina2014-signed.xml' has a BOM SIGN FILE WITHOUT BOM: Sat.signXml('Muestra_nomina.xml'-->'Muestra_nomina2014-signed-no-bom.xml') returns 0 Sat.validateXml('Muestra_nomina2014-signed-no-bom.xml') returns 0 ==> OK File 'Muestra_nomina2014-signed-no-bom.xml' does NOT have a BOM SIGN FILE WITHOUT BOM AND EMPTY ELEMENTS: Sat.signXml('Muestra_nomina.xml'-->'Muestra_nomina2014-signed-no-bom-empty-elems.xml') returns 0 Sat.validateXml('Muestra_nomina2014-signed-no-bom-empty-elems.xml') returns 0 ==> OK File 'Muestra_nomina2014-signed-no-bom-empty-elems.xml' does NOT have a BOM SIGN A `NOTARIOSPUBLICUS` XML FILE: Sat.signXml('Prueba2Notario_iedu.xml'-->'Prueba2Notario_iedu-signed.xml') returns 0 Sat.validateXml('Prueba2Notario_iedu-signed.xml') returns 0 ==> OK TEST TFD IN NOMINA XML: FILE: Muestra_nomina_tfd.xml Tfd.makePipeStringFromXml(TFD)= ||1.0|B3D02A7F-C07A-4C72-B7D4-6B70BB2BB3D4|2014-01-15T20:41:18|iJw36avvTScTbBqRhQhxoRQo6EfBK8FeQv46KJBCX8rzf/iix8COB+Nm8/dW2zJcSbhH+AWCicrAkKik/Zq0mW1QWtUxrqCJ9PsY7V9TMvhFFj3JqykfoDM+QAzgNIj9+x4M4Ehvddb2nMe7JCJaflo9C0sO41bSFdNI22iq6Dc=|20001000000100005761|| Tfd.verifySignature('Muestra_nomina_tfd.xml') returns 0 ==> OK ADD A TFD ELEMENT TO A SIGNED CFDI DOCUMENT USING PAC KEY: Tfd.addSignedTfd('Prueba2Notario_iedu-signed.xml'-->'Prueba2Notario_iedu-tfd.xml') returns 0 Sat.validateXml('Prueba2Notario_iedu-tfd.xml') returns 0 ==> OK Tfd.verifySignature('Prueba2Notario_iedu-tfd.xml') returns 0 ==> OK DIGEST(sello, 'Prueba2Notario_iedu-tfd.xml')= 3E3C64225DAD9EE008D6F8F685E1E7215F8DBBF8 DIGEST(selloSAT, 'Prueba2Notario_iedu-tfd.xml')= A45388EDB0CBA38576329EEA8CD44EAA9F523C21 SIGN XML FROM BYTES TO STRING: File 'ejemplo_v32-base2012.xml'-->2084 UTF-8 bytes XML-OUT= --- ?<?xml version="1.0" encoding="UTF-8"?> <cfdi:Comprobante xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 cfdv32.xsd" xmlns:cfdi="http://www.sat.gob.mx/cfd/3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2" fecha="2012-07-20T20:38:12" total="488.50" subTotal="488.50" formaDePago="Pago en una sola exhibición" tipoDeComprobante="ingreso" metodoDePago="Efectivo" LugarExpedicion="Queretaro, Qro." NumCtaPago="3850" FolioFiscalOrig="3464" SerieFolioFiscalOrig="ABC" FechaFolioFiscalOrig="2012-07-11T11:11:11" MontoFolioFiscalOrig="24499.99" noCertificado="20001000000100005867" certificado="MIIEdDCCA1ygAwIBAgIUMjAwMDEwMDAwMDAxMDAwMDU4NjcwDQYJKoZIhvcNAQEFBQAwggFvMRgwFgYDVQQDDA9BLkMuIGRlIHBydWViYXMxLzAtBgNVBAoMJlNlcnZpY2lvIGRlIEFkbWluaXN0cmFjacOzbiBUcmlidXRhcmlhMTgwNgYDVQQLDC9BZG1pbmlzdHJhY2nDs24gZGUgU2VndXJpZGFkIGRlIGxhIEluZm9ybWFjacOzbjEpMCcGCSqGSIb3DQEJARYaYXNpc25ldEBwcnVlYmFzLnNhdC5nb2IubXgxJjAkBgNVBAkMHUF2LiBIaWRhbGdvIDc3LCBDb2wuIEd1ZXJyZXJvMQ4wDAYDVQQRDAUwNjMwMDELMAkGA1UEBhMCTVgxGTAXBgNVBAgMEERpc3RyaXRvIEZlZGVyYWwxEjAQBgNVBAcMCUNveW9hY8OhbjEVMBMGA1UELRMMU0FUOTcwNzAxTk4zMTIwMAYJKoZIhvcNAQkCDCNSZXNwb25zYWJsZTogSMOpY3RvciBPcm5lbGFzIEFyY2lnYTAeFw0xMjA3MjcxNzAyMDBaFw0xNjA3MjcxNzAyMDBaMIHbMSkwJwYDVQQDEyBBQ0NFTSBTRVJWSUNJT1MgRU1QUkVTQVJJQUxFUyBTQzEpMCcGA1UEKRMgQUNDRU0gU0VSVklDSU9TIEVNUFJFU0FSSUFMRVMgU0MxKTAnBgNVBAoTIEFDQ0VNIFNFUlZJQ0lPUyBFTVBSRVNBUklBTEVTIFNDMSUwIwYDVQQtExxBQUEwMTAxMDFBQUEgLyBIRUdUNzYxMDAzNFMyMR4wHAYDVQQFExUgLyBIRUdUNzYxMDAzTURGUk5OMDkxETAPBgNVBAsTCFVuaWRhZCAxMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2TTQSPONBOVxpXv9wLYo8jezBrb34i/tLx8jGdtyy27BcesOav2c1NS/Gdv10u9SkWtwdy34uRAVe7H0a3VMRLHAkvp2qMCHaZc4T8k47Jtb9wrOEh/XFS8LgT4y5OQYo6civfXXdlvxWU/gdM/e6I2lg6FGorP8H4GPAJ/qCNwIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQUFAAOCAQEATxMecTpMbdhSHo6KVUg4QVF4Op2IBhiMaOrtrXBdJgzGotUFcJgdBCMjtTZXSlq1S4DG1jr8p4NzQlzxsdTxaB8nSKJ4KEMgIT7E62xRUj15jI49qFz7f2uMttZLNThipunsN/NF1XtvESMTDwQFvas/Ugig6qwEfSZc0MDxMpKLEkEePmQwtZD+zXFSMVa6hmOu4M+FzGiRXbj4YJXn9Myjd8xbL/c+9UIcrYoZskxDvMxc6/6M3rNNDY3OFhBK+V/sPMzWWGt8S1yjmtPfXgFs1t65AZ2hcTwTAuHrKwDatJ1ZPfa482ZBROAAX1waz7WwXp0gso7sDCm2/yUVww==" sello="JaeN6gdrrUV3P6ElOKxhDkAaAd9t0D2q6/kF651uQYInkl7ik3Oa8Xh81xtAYnjtMYa/HqvJz47UBVvWEconmk6T7NR7KOdgYeT1iSZkKruv3zt7PhgMNFMLJ43dpxe3X3z6GOv9MCn4dDnph590Lo+OEN6i3rJfIRAW1uioWMU="> <cfdi:Emisor rfc="PPL961114GZ1" nombre="PHARMA PLUS SA DE CV"> <cfdi:DomicilioFiscal pais="Mexico" calle=" AV. RIO MIXCOAC " estado="MEXICO, D.F." colonia="ACACIAS" municipio="BENITO JUAREZ" noExterior="No. 140" codigoPostal="03240"></cfdi:DomicilioFiscal> <cfdi:ExpedidoEn pais="MÉXICO" calle="AV. UNIVERSIDAD" estado="DISTRITO FEDERAL" colonia="OXTOPULCO" noExterior="1858" codigoPostal="03910"></cfdi:ExpedidoEn> <cfdi:RegimenFiscal Regimen="Regimen General de Ley"></cfdi:RegimenFiscal> <cfdi:RegimenFiscal Regimen="Otro regimen (opcional)"></cfdi:RegimenFiscal> </cfdi:Emisor> <cfdi:Receptor rfc="PEPJ8001019Q8" nombre="JUAN PEREZ PEREZ"> <cfdi:Domicilio pais="Mexico" calle="AV UNIVERSIDAD" estado="DISTRITO FEDERAL" colonia="COPILCO UNIVERSIDAD" municipio="COYOACAN" noExterior="16 EDF 3" noInterior="DPTO 101" codigoPostal="04360"></cfdi:Domicilio> </cfdi:Receptor> <cfdi:Conceptos> <cfdi:Concepto unidad="CAPSULAS" importe="244.00" cantidad="1.0" descripcion="VIBRAMICINA 100MG 10" valorUnitario="244.00"></cfdi:Concepto> <cfdi:Concepto unidad="BOTELLA" importe="137.93" cantidad="1.0" descripcion="CLORUTO 500M" valorUnitario="137.93"></cfdi:Concepto> <cfdi:Concepto unidad="TABLETAS" importe="84.50" cantidad="1.0" descripcion="SEDEPRON 250MG 10" valorUnitario="84.50"></cfdi:Concepto> </cfdi:Conceptos> <cfdi:Impuestos> <cfdi:Traslados> <cfdi:Traslado tasa="0.00" importe="0.00" impuesto="IVA"></cfdi:Traslado> <cfdi:Traslado tasa="16.00" importe="22.07" impuesto="IVA"></cfdi:Traslado> </cfdi:Traslados> </cfdi:Impuestos> <cfdi:Complemento></cfdi:Complemento> <cfdi:Addenda></cfdi:Addenda> </cfdi:Comprobante> --- SIGN XML FROM BYTES TO STRING USING EMPTY-ELEMENT TAGS: XML-OUT(UseEmptyElements)= --- ?<?xml version="1.0" encoding="UTF-8"?> <cfdi:Comprobante xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 cfdv32.xsd" xmlns:cfdi="http://www.sat.gob.mx/cfd/3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2" fecha="2012-07-20T20:38:12" total="488.50" subTotal="488.50" formaDePago="Pago en una sola exhibición" tipoDeComprobante="ingreso" metodoDePago="Efectivo" LugarExpedicion="Queretaro, Qro." NumCtaPago="3850" FolioFiscalOrig="3464" SerieFolioFiscalOrig="ABC" FechaFolioFiscalOrig="2012-07-11T11:11:11" MontoFolioFiscalOrig="24499.99" noCertificado="20001000000100005867" certificado="MIIEdDCCA1ygAwIBAgIUMjAwMDEwMDAwMDAxMDAwMDU4NjcwDQYJKoZIhvcNAQEFBQAwggFvMRgwFgYDVQQDDA9BLkMuIGRlIHBydWViYXMxLzAtBgNVBAoMJlNlcnZpY2lvIGRlIEFkbWluaXN0cmFjacOzbiBUcmlidXRhcmlhMTgwNgYDVQQLDC9BZG1pbmlzdHJhY2nDs24gZGUgU2VndXJpZGFkIGRlIGxhIEluZm9ybWFjacOzbjEpMCcGCSqGSIb3DQEJARYaYXNpc25ldEBwcnVlYmFzLnNhdC5nb2IubXgxJjAkBgNVBAkMHUF2LiBIaWRhbGdvIDc3LCBDb2wuIEd1ZXJyZXJvMQ4wDAYDVQQRDAUwNjMwMDELMAkGA1UEBhMCTVgxGTAXBgNVBAgMEERpc3RyaXRvIEZlZGVyYWwxEjAQBgNVBAcMCUNveW9hY8OhbjEVMBMGA1UELRMMU0FUOTcwNzAxTk4zMTIwMAYJKoZIhvcNAQkCDCNSZXNwb25zYWJsZTogSMOpY3RvciBPcm5lbGFzIEFyY2lnYTAeFw0xMjA3MjcxNzAyMDBaFw0xNjA3MjcxNzAyMDBaMIHbMSkwJwYDVQQDEyBBQ0NFTSBTRVJWSUNJT1MgRU1QUkVTQVJJQUxFUyBTQzEpMCcGA1UEKRMgQUNDRU0gU0VSVklDSU9TIEVNUFJFU0FSSUFMRVMgU0MxKTAnBgNVBAoTIEFDQ0VNIFNFUlZJQ0lPUyBFTVBSRVNBUklBTEVTIFNDMSUwIwYDVQQtExxBQUEwMTAxMDFBQUEgLyBIRUdUNzYxMDAzNFMyMR4wHAYDVQQFExUgLyBIRUdUNzYxMDAzTURGUk5OMDkxETAPBgNVBAsTCFVuaWRhZCAxMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2TTQSPONBOVxpXv9wLYo8jezBrb34i/tLx8jGdtyy27BcesOav2c1NS/Gdv10u9SkWtwdy34uRAVe7H0a3VMRLHAkvp2qMCHaZc4T8k47Jtb9wrOEh/XFS8LgT4y5OQYo6civfXXdlvxWU/gdM/e6I2lg6FGorP8H4GPAJ/qCNwIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQUFAAOCAQEATxMecTpMbdhSHo6KVUg4QVF4Op2IBhiMaOrtrXBdJgzGotUFcJgdBCMjtTZXSlq1S4DG1jr8p4NzQlzxsdTxaB8nSKJ4KEMgIT7E62xRUj15jI49qFz7f2uMttZLNThipunsN/NF1XtvESMTDwQFvas/Ugig6qwEfSZc0MDxMpKLEkEePmQwtZD+zXFSMVa6hmOu4M+FzGiRXbj4YJXn9Myjd8xbL/c+9UIcrYoZskxDvMxc6/6M3rNNDY3OFhBK+V/sPMzWWGt8S1yjmtPfXgFs1t65AZ2hcTwTAuHrKwDatJ1ZPfa482ZBROAAX1waz7WwXp0gso7sDCm2/yUVww==" sello="JaeN6gdrrUV3P6ElOKxhDkAaAd9t0D2q6/kF651uQYInkl7ik3Oa8Xh81xtAYnjtMYa/HqvJz47UBVvWEconmk6T7NR7KOdgYeT1iSZkKruv3zt7PhgMNFMLJ43dpxe3X3z6GOv9MCn4dDnph590Lo+OEN6i3rJfIRAW1uioWMU="> <cfdi:Emisor rfc="PPL961114GZ1" nombre="PHARMA PLUS SA DE CV"> <cfdi:DomicilioFiscal pais="Mexico" calle=" AV. RIO MIXCOAC " estado="MEXICO, D.F." colonia="ACACIAS" municipio="BENITO JUAREZ" noExterior="No. 140" codigoPostal="03240" /> <cfdi:ExpedidoEn pais="MÉXICO" calle="AV. UNIVERSIDAD" estado="DISTRITO FEDERAL" colonia="OXTOPULCO" noExterior="1858" codigoPostal="03910" /> <cfdi:RegimenFiscal Regimen="Regimen General de Ley" /> <cfdi:RegimenFiscal Regimen="Otro regimen (opcional)" /> </cfdi:Emisor> <cfdi:Receptor rfc="PEPJ8001019Q8" nombre="JUAN PEREZ PEREZ"> <cfdi:Domicilio pais="Mexico" calle="AV UNIVERSIDAD" estado="DISTRITO FEDERAL" colonia="COPILCO UNIVERSIDAD" municipio="COYOACAN" noExterior="16 EDF 3" noInterior="DPTO 101" codigoPostal="04360" /> </cfdi:Receptor> <cfdi:Conceptos> <cfdi:Concepto unidad="CAPSULAS" importe="244.00" cantidad="1.0" descripcion="VIBRAMICINA 100MG 10" valorUnitario="244.00" /> <cfdi:Concepto unidad="BOTELLA" importe="137.93" cantidad="1.0" descripcion="CLORUTO 500M" valorUnitario="137.93" /> <cfdi:Concepto unidad="TABLETAS" importe="84.50" cantidad="1.0" descripcion="SEDEPRON 250MG 10" valorUnitario="84.50" /> </cfdi:Conceptos> <cfdi:Impuestos> <cfdi:Traslados> <cfdi:Traslado tasa="0.00" importe="0.00" impuesto="IVA" /> <cfdi:Traslado tasa="16.00" importe="22.07" impuesto="IVA" /> </cfdi:Traslados> </cfdi:Impuestos> <cfdi:Complemento /> <cfdi:Addenda /> </cfdi:Comprobante> --- GENERATE 3 FRESH UUIDs: Sat.uuid()=443370f7-40dd-412f-86ca-d6d269d4c87b Sat.uuid()=cadc2ad3-e3b7-4ee4-8ecd-b2fa2f282702 Sat.uuid()=d1c9d8e8-920c-43ef-8aa8-3b2a0d25f451 PASS XML DATA AS A STRING: Non-US-ASCII characters in String *must* be written as XML entities when XML encoding is UTF-8 Dummy test XML string=[<?xml version='1.0' encoding='UTF-8'?><Comprobante version='3.2' pais='MÉXICO' />] xmlReceiptVersion()=32 getXmlAttribute(Combrobante/@pais)=MÉXICO WORK WITH A `RETENCIONES` DOCUMENT: FILE=Ejemplo_Retenciones-base.xml Sat.xmlReceiptVersion() returns 1010 (expecting 1010) Sat.makeDigestFromXml() -> d48c1bb1e11001ace95aa130a448a3b3a39c40de File root element is 'retenciones:Retenciones' WORK WITH `CONTABILIDAD` DOCUMENTS: CATALOGOCUENTAS FILE=AAA010101AAA201501CT-base.xml Sat.xmlReceiptVersion() returns ID=2011 (expecting 2011) SIGN A CATALOGOCUENTAS DOCUMENT... Sat.signXml() returns 0 (expecting 0) Sat.verifySignature() returns 0 (expecting 0) BALANZA FILE=AAA010101AAA201501BN-base.xml Sat.xmlReceiptVersion() returns ID=2111 (expecting 2111) MAKE THE SIGNATURE STRING FOR BALANZA... Sat.makeSignatureFromXml() -> tAjpeR12wMWB0lj18HJ1oEw8+KUlU4mHECeHl89Zt3dlxNe675PoN9lIzENA01sI0h5EBADTOwR0YnEIIaO6mHBRmzLO9aduUX/u/WaP17AK+/YNXIg1NsEznHyIZ70vgKJjuN2OdXAsvxLt1DwGaa1wcLoQo+as7GgOvEKzZRA= SELLODIGITALCONTELEC FILE=contab-SelloDigitalContElec-signed.xml Sat.xmlReceiptVersion() returns ID=2511 (expecting 2511) VERIFY SIGNATURE FOR SELLODIGITALCONTELEC USING PAC CERTIFICATE... Sat.verifySignature() returns 0 (expecting 0) WORK WITH `CONTROLESVOLUMETRICOS` DOCUMENT: FILE=ConVolE12345-base.xml Sat.xmlReceiptVersion() returns ID=4011 (expecting 4011) SIGN A CONVOL DOCUMENT WITH BIGFILE FLAG... Sat.signXmlEx(BigFile) returns 0 (expecting 0) Sat.verifySignature() returns 0 (expecting 0) FirmaSAT DLL Version=70000 [Jan 12 2015 14:48:08]