DOING TESTS WITH FIRMASAT...

> FirmaSAT LIBINFO
FirmaSAT.exe v10.60.0 (Oct  1 2023 15:14:21).
Library diFirmaSAT2:
  Version:  106051
  Module:   C:\WINDOWS\SYSTEM32\diFirmaSAT2.dll
  Platform: Win32
  Compiled: Mar 20 2024 16:43:07
  Licence:  D
  Comments: Licensed Developer Edition | Edicion de Desarrollador Licenciado.

CHECK THAT XML STRUCTURE IS OK...

> FirmaSAT XMLOK cfdv40-ejemplo-signed-tfd.xml
OK

FORM THE PIPE STRING (CADENA ORIGINAL)...

> FirmaSAT PIPESTRING cfdv40-ejemplo.xml
||4.0|A|123ABC|2021-12-07T23:59:59|99|30001000000300023708|CONDICIONES|1000|0.00|MXN|1.0|1500|P|03|PPD|99999|A1234|05|18|2021|09|ED1752FE-E865-4FF2-BFE1-0F552E770DC9|AAA010101AAA|Esta es una demostración|630|0123456789|BASJ600902KL9|Juanito Bananas De la Sierra|99999|MEX|0000000000000|630|S01|01010101|00001|1.5|C81|TONELADA|ACERO|1500000|2250000|01|2250000|002|Tasa|1.600000|360000|2250000|001|Tasa|0.300000|247500|51888|95141904|00002|1.6|WEE|TONELADA|ALUMINIO|1500|2400|02|2400|002|Tasa|1.600000|384|2400|001|Tasa|0.300000|264|AAA010101AAA|NombreACuentaTerceros|630|99999|15 48 4567 6001234|84101604|00003|1.7|G66|TONELADA|ZAMAC|10000|17000|0|03|17000|002|Tasa|1.600000|2720|17000|001|Tasa|0.300000|1870|25201513|055155|1.0|UNIDAD|PARTE EJEMPLO|1.00|1.00|15 48 4567 6001235|001|247000|003|500|247500|1.00|002|Tasa|1.600000|360000|360000||

CREATE THE SIGNATURE (SELLO) AS A STRING...

> FirmaSAT MAKESIG -k emisor.key -p 12345678a cfdv40-ejemplo.xml
Gnm1yXaIig5hr1dJ+88gjLY5usQxXP2s+zdmlLl4iokWENaUUlhpG/crkUFEzcJfdq1FbBxV/d/GN50MGuw2fP5f6MkRYz75UKaKfzubUak+SCkDzYot5jZRkO6hXKe4+KAfaulP7wa8Q7oSW5ccivppLnikme0CS3KtGBrQHU/q3pjNrw+jMvsnpUc1tx91REqMWrzMTZ2D6UkGdqn8i/0mLRU2vT8vPaNg/Hr2jpVVAgQmPtfvnfnORCWSm/5qZg9Tli7nTRRVwupF4o9ajH2/Is7LoCsIgZUg3wCHkZCjaKk2mJoK7FyMTsPXRRSGhoYgwi1kNHs1aY4RHNwe5w==

SIGN AN XML FILE...

> FirmaSAT SIGNXML -s @ -k emisor.key -p 12345678a -c emisor.cer -i cfdv40-ejemplo.xml -o cfdv40_new-signed.xml
STATUS: 0
ERRORDESCRIPTION: OK
DATETIMECREATED: Thu Apr 04 21:20:37 2024

VERIFY THAT THE SIGNATURE IN THE NEW SIGNED FILE WE CREATED IS OK...

> FirmaSAT VERIFYSIG cfdv40_new-signed.xml
OK

VERIFY AN EXISTING SIGNATURE...

> FirmaSAT VERIFYSIG cfdv40-ejemplo-signed-tfd.xml
OK

DISPLAY AN ATTRIBUTE FROM AN XML FILE...

> FirmaSAT ATTRIBUTE -d -a Sello -e Comprobante -i cfdv40-ejemplo-signed-tfd.xml
Attribute=[Sello] Element=[Comprobante]
Gnm1yXaIig5hr1dJ+88gjLY5usQxXP2s+zdmlLl4iokWENaUUlhpG/crkUFEzcJfdq1FbBxV/d/GN50MGuw2fP5f6MkRYz75UKaKfzubUak+SCkDzYot5jZRkO6hXKe4+KAfaulP7wa8Q7oSW5ccivppLnikme0CS3KtGBrQHU/q3pjNrw+jMvsnpUc1tx91REqMWrzMTZ2D6UkGdqn8i/0mLRU2vT8vPaNg/Hr2jpVVAgQmPtfvnfnORCWSm/5qZg9Tli7nTRRVwupF4o9ajH2/Is7LoCsIgZUg3wCHkZCjaKk2mJoK7FyMTsPXRRSGhoYgwi1kNHs1aY4RHNwe5w==

DISPLAY SOME CERTIFICATE PROPERTIES...

> FirmaSAT NUMBERCERT cfdv40-ejemplo-signed-tfd.xml
30001000000300023708

> FirmaSAT QUERYCERT -q notAfter emisor.cer
2028-12-07T00:00:01Z

> FirmaSAT QUERYCERT -q notBefore emisor.cer
2021-12-07T00:00:01Z

> FirmaSAT CERTSTRING emisor.cer
MIIFXTCCA0WgAwIBAgIUMzAwMDEwMDAwMDAzMDAwMjM3MDgwDQYJKoZIhvcNAQELBQAwgbMxFjAUBgNVBAMTDUFDIGRlIHBydWViYXMxLjAsBgNVBAoTJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGTAXBgNVBAsTEFNBVC1JRVMgRmljdGljaWExCzAJBgNVBAYTAk1YMUEwPwYJKoZIhvcNAQkCEzJSZXNwb25zYWJsZTogRXN0byBubyBlcyB1biBnZW51aW5vIFNBVCBjZXJ0aWZpY2FkbzAeFw0yMTEyMDcwMDAwMDFaFw0yODEyMDcwMDAwMDFaMIH6MSkwJwYDVQQDEyBBQ0NFTSBTRVJWSUNJT1MgRU1QUkVTQVJJQUxFUyBTQzEpMCcGA1UEKRMgQUNDRU0gU0VSVklDSU9TIEVNUFJFU0FSSUFMRVMgU0MxKTAnBgNVBAoTIEFDQ0VNIFNFUlZJQ0lPUyBFTVBSRVNBUklBTEVTIFNDMQswCQYDVQQGEwJNWDEjMCEGCSqGSIb3DQEJARYUcHJ1ZWJhc0BhY2NlbS5jb20ubXgxJTAjBgNVBC0THEFBQTAxMDEwMUFBQSAvIEhFR1Q3NjEwMDM0UzIxHjAcBgNVBAUTFSAvIEhFR1Q3NjEwMDNNREZSTk4wOTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJdUcsHIEIgwivvAantGnYVIO3+7yTdD1tkKopbL+tKSjRFo1ErPdGJxP3gxT5O+ACIDQXN+HS9uMWDYnaURalSIF9COFCdh/OH2Pn+UmkN4culr2DanKztVIO8idXM6c9aHn5hOo7hDxXMC3uOuGV3FS4ObkxTV+9NsvOAV2lMe27SHrSB0DhuLurUbZwXm+/r4dtz3b2uLgBc+Diy95PG+MIu7oNKM89aBNGcjTJw+9k+WzJiPd3ZpQgIedYBD+8QWxlYCgxhnta3k9ylgXKYXCYk0k0qauvBJ1jSRVf5BjjIUbOstaQp59nkgHh45c9gnwJRV618NW0fMeDzuKR0CAwEAAaMgMB4wDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCBsAwDQYJKoZIhvcNAQELBQADggIBAA1Pck4R2/W/YiY2pmVtv7mJ+dxCHJYal9NKv8gy89DTyW66g/DrpD4c2omv9LO8iRrzJbfcLupg7WKIri8aAdRU9/CwusNW3SrdJc9jjFMNPbvcYtjaRuPdQxVPWDQ+VUMD/iDYKt+4Db4npvht6UjJtUEzaqSIj9jHKSROG/KbMBZVBzyp8/A45q+krpuGEj9UOhBi3InTxv03REbb7jnBWAjSQFOhqloYHg6PtXY2nslnOhRAnvFNY1bZKvkEOVbcpxyNQdhBXvuESHRYoiOCUdlpRsPkkJRbg0BGHpCLS7d8mebdM1A6L1emuqCa8j55vVblDqAk5Re6wOvtRodZbx3QGltsDKYATd3HvR+PfdT5cwlI3sGp1frvVNvYhO29BX7UXqarlQA5HyEfaK48s9vd71/yFDa1XsUXytcvGZoYP8L68tbz1V8rLB0CAcRCOYYbMo4YPkdbP4BlYd8sAsljwsbpDl0DymcUEj/07KN/5diXAB9oqUxzEy5pjPLItF+WAB5XkrLZFtMEwYkpOLGIozwA1sp4EHA+ww/EZU3NQsmLiiQd00e4yIuHA4wkQ8HCcSkE+x4tpJ60j3gGxwHpcY2fb9uruxKaMrtluUIFJJ0AW04ypn0fGhTg8GV1rfvqY7aGUdoDyHZJQHaJrakHipIUYTJ8fk3Jf2UN

COMPUTE THE DIGEST OF THE CADENA ORIGINAL...

> FirmaSAT FORMDIGEST cfdv40-ejemplo-signed-tfd.xml
c1492662dbd98ddbb7892d027c10808236e296eded13deec87179c2a8fdc742e

EXTRACT THE DIGEST FROM THE SIGNATURE FIELD...

> FirmaSAT EXTRACTDIGEST cfdv40-ejemplo-signed-tfd.xml
C1492662DBD98DDBB7892D027C10808236E296EDED13DEEC87179C2A8FDC742E

CHECK THAT KEY AND CERTIFICATE MATCH...

> FirmaSAT KEYCHECK -k emisor.key -p 12345678a emisor.cer
OK

> FirmaSAT KEYCHECK -k pac.key -p 12345678a pac.cer
OK

DISPLAY THE COMPROBANTE VERSION NUMBER...

> FirmaSAT RECEIPTVERSION cfdv40-ejemplo-signed-tfd.xml
40

OLDER VERSION...

> FirmaSAT RECEIPTVERSION cfdv33a-signed-tfd.xml
33

GET PRIVATE KEY AS A BASE64 STRING...

> FirmaSAT GETKEYSTRING -p 12345678a emisor.key
PFJTQUtleVZhbHVlPjxNb2R1bHVzPmwxUnl3Y2dRaURDSys4QnFlMGFkaFVnN2Y3dkpOMFBXMlFxaWxzdjYwcEtORVdqVVNzOTBZbkUvZURGUGs3NEFJZ05CYzM0ZEwyNHhZTmlkcFJGcVZJZ1gwSTRVSjJIODRmWStmNVNhUTNoeTZXdllOcWNyTzFVZzd5SjFjenB6MW9lZm1FNmp1RVBGY3dMZTQ2NFpYY1ZMZzV1VEZOWDcwMnk4NEJYYVV4N2J0SWV0SUhRT0c0dTZ0UnRuQmViNyt2aDIzUGR2YTR1QUZ6NE9MTDNrOGI0d2k3dWcwb3p6MW9FMFp5Tk1uRDcyVDViTW1JOTNkbWxDQWg1MWdFUDd4QmJHVmdLREdHZTFyZVQzS1dCY3BoY0ppVFNUU3BxNjhFbldOSkZWL2tHT01oUnM2eTFwQ25uMmVTQWVIamx6MkNmQWxGWHJYdzFiUjh4NFBPNHBIUT09PC9Nb2R1bHVzPjxFeHBvbmVudD5BUUFCPC9FeHBvbmVudD48UD4wUmhpNldIYWhyZXYzRnlrSGlSbGhheHQ5d0RJbUNxM2VEVHNPeXl1NU02MEJFbm1uZ0Ywc0s5bmpwelZkN1F6TXJKWkk2UXRPWnR5MjNuN0lWSmVrSS8wSS9UeENLYiszdUYrSy92anZ4YkFQVitva0JZbkRCQTgwV0dJNXVBSHhZSUdLNGM1bzE0ZHF6UUFpeWtWK1l2Y0NFUmtMcUFCdXlybWNtRmtnYnM9PC9QPjxRPnVVYkwrK1V1aFRWS1NudkVRdHA4TmQxV24vYnJtdGx0ZnJLWU5xVm55cXNQUEw3eFFFMERvL1FQV2hTZnNLcTc4RWM0cm11Y2JXM0lmWUJ5dXpQVFo1ZWV1VTVQSnJybmpqbEFXaFhoMkY3QTJtR1gweFNDem1WT1AyK3YvNitrQ3RuRHZQZGxWOGxNblcwVjJyd3FVVi9MTmhLTWJjSHhScG9HMHJWL2h3Yz08L1E+PERQPmlBaHlpVjExTzBJVDhxeCt4WEZ1YnlvQUhMdHd4YmE4eUVLK0ViMS9SekxIWVNibkY1TGc1UFlvekZweWNyOVVzNzNlU2xiTWFYY2RvWFpaa0pNekhKL2ErTzJwUnJUR2lpQnY0cE9zMXF3cGc0UlJlUFJBa1JPYlRhbEQxTmlabGNDQzNSekx2ZUpFTVJiUzU3WmlLb2o0TEpTNkRLOWlrTzlYSDhFSEQzTT08L0RQPjxEUT5wSWpTcmFnaFgvcXJOdW9pcUp3T29tY2xmbmx4VWRxMCtrYndGZGRlRFFWTVNzM213UXVqcC80ZGhBbThwczk0aHpFNGpPelR4Zm93aWdOLzMrOXVWaGkzeENoZThpNFpaSnhESWIwOUMwRmFVcFZJbHhNbjl0TFFZbFYxSHNPRUVuN0E3UmRtMEViYjJ4SDh6bnM3dVhnd3BweGlTVFpxWmlCeTNyeC92QkU9PC9EUT48SW52ZXJzZVE+WDBWL1QxRWhKQWtkc0FHUnJ4L0NQeXgwRXBZYmROUkRaTEJEMVRjdjlqKzZlN0pwRlFYNG5mQVZGZ0V4QWE3U1BNc2JsTVY4QlZrQnpkVWtJR1BFYm9yeGFjbExvNHozSnhYU29GclphZVFMc3p1NEMzZ3IwZ1FpcVU2V05qOUhhMEUzdW9kbkFUdWNJdEx6eXU4dmxoWWlJcW52VktWZktnWXQ4elNIdHVVPTwvSW52ZXJzZVE+PEQ+TFM4WjFLSlh6Vkl4TFZvV2NSaDBrQWN4UE1KbElnc3ZhejZ4clRUYWYyVWltY0FqSXZNdVhQWlRiUi9NRXVENFNTK1BxMXhNZW96OFVWNWNNNTB2a20zUUxvVTluMFN5clFWSlErNnE0TnBsOVN3dU1xTlhWUy9sMVlFRWNKTlRZd3E3ckU1T3RBWUlQbjdzN2k1ZGhKSVVLZ2Vac3U3eGNmOVZwZExnalZDRHFHZ0p3L0VmaGFnUjdpUEYrUEtvZXlSeUJaSTl4dUhtdEVsSFZnbjIvUXYvMTZVSnYwWXBBcVJnVnE3WVF6WkNjN3lvMFkyKzNkcUhhYlJnK01uSUtrTjRwQkZCell4c2p3TTdZVURrLzh6RmxGNWt3Q1M3NGVwMEpXV1NZQUoxM0RZRHRDWVN5V2sxRHZ4WDlTcnYvUzJodFpNNk1uaGJvYWZqTGNoNFFRPT08L0Q+PC9SU0FLZXlWYWx1ZT4=

MAKE A PFX FILE FROM PRIVATE KEY AND CERT...

> FirmaSAT WRITEPFX -o archivo_new-pfx.txt -n clavedesalida -k emisor.key -p 12345678a -c emisor.cer -s @
STATUS: 0
ERRORDESCRIPTION: OK
DATETIMECREATED: Thu Apr 04 21:20:38 2024

GET ATTRIBUTE FROM INDEXED ELEMENTS...

> FirmaSAT ATTRIBUTE -d -a Descripcion -e cfdi:Concepto[1] -i cfdv40-ejemplo-signed-tfd.xml
Attribute=[Descripcion] Element=[cfdi:Concepto[1]]
ACERO

> FirmaSAT ATTRIBUTE -d -a Descripcion -e cfdi:Concepto[2] -i cfdv40-ejemplo-signed-tfd.xml
Attribute=[Descripcion] Element=[cfdi:Concepto[2]]
ALUMINIO

> FirmaSAT ATTRIBUTE -d -a Descripcion -e cfdi:Concepto[3] -i cfdv40-ejemplo-signed-tfd.xml
Attribute=[Descripcion] Element=[cfdi:Concepto[3]]
ZAMAC

GET ATTRIBUTES USING UTF-8-ENCODED NAMES AND VALUES...

> FirmaSAT ATTRIBUTE -d -e cfdi:Emisor -a Nombre cfdv40-ejemplo-signed-tfd.xml
Attribute=[Nombre] Element=[cfdi:Emisor]
Esta es una demostración

> FirmaSAT ATTRIBUTE -d -e nomina12:Receptor -a Antigüedad cfdv40-nomina12.xml
Attribute=[Antigüedad] Element=[nomina12:Receptor]
P3Y2M23D

> FirmaSAT ATTRIBUTE -d -e nomina12:CompensacionSaldosAFavor -a Año cfdv40-nomina12.xml
Attribute=[Año] Element=[nomina12:CompensacionSaldosAFavor]
2016

> FirmaSAT ATTRIBUTE -d -e iedu:instEducativas -a CURP cfdv40-ejemplo-niño.xml
Attribute=[CURP] Element=[iedu:instEducativas]
JUAN010101MAZBCÑ90

USING STRICT AND LOOSE OPTIONS FOR XMLOK...

Expecting error -28 here (Bad attribute .. @CURP .. is too long)...

> FirmaSAT XMLOK cfdv40-iedu-badcurp.xml
Error code -28: XML restriction is violated/XML restriccion es violada (XML_FACET_ERROR):
Bad attribute/atributo mal [iedu:instEducativas/@CURP] (line 20):
  'JUAN010101MAZBC90X' is too long/es demasiado largo, maximum
  length/longitud maxima=18


But using loose (-l) option is OK...

> FirmaSAT XMLOK -l cfdv40-iedu-badcurp.xml
OK

CREATE CADENA ORIGINAL DEL TIMBRE FISCAL DIGITAL (TFD)...

> FirmaSAT PIPESTRING -f cfdv40-ejemplo-signed-tfd.xml
||1.1|c2295886-b489-4f35-8382-7173e2615980|2022-03-06T16:17:42|PUT211201AX4|Gnm1yXaIig5hr1dJ+88gjLY5usQxXP2s+zdmlLl4iokWENaUUlhpG/crkUFEzcJfdq1FbBxV/d/GN50MGuw2fP5f6MkRYz75UKaKfzubUak+SCkDzYot5jZRkO6hXKe4+KAfaulP7wa8Q7oSW5ccivppLnikme0CS3KtGBrQHU/q3pjNrw+jMvsnpUc1tx91REqMWrzMTZ2D6UkGdqn8i/0mLRU2vT8vPaNg/Hr2jpVVAgQmPtfvnfnORCWSm/5qZg9Tli7nTRRVwupF4o9ajH2/Is7LoCsIgZUg3wCHkZCjaKk2mJoK7FyMTsPXRRSGhoYgwi1kNHs1aY4RHNwe5w==|30001000000300023699||

COMPUTE THE DIGEST FOR TIMBRE FISCAL DIGITAL (TFD)...

> FirmaSAT FORMDIGEST -f cfdv40-ejemplo-signed-tfd.xml
0dba0559d05b847c7752a1eddfccdde103f2f29631bb32406d84514ce35c2d4c

COMPUTE THE SIGNATURE (SELLOSAT) FOR TIMBRE FISCAL DIGITAL (TFD)...

> FirmaSAT MAKESIG -f -i cfdv40-ejemplo-signed-tfd.xml -k pac.key -p 12345678a
OebWuJUM0UNDujWdjdqFTJsjwIQUAg71OxMgI0BS2IlpGFTH35QKaWiJ9b1EoPSsKGdNJtBRrN1H3RoaTyuKeZJRgxu6lo8wct2QddHJVdC8rQBU8t8Tsn7nu7fgnYxKXJr1nafABfPRVwC1AdOuveSlBxqm0jj36o7CJArNmgRy37f2St9S8i9rPN9eX6OmekkTA1011i8bFKX+jLfpn3vlramGvGCiaBR8n6XUWYQUTfNM66o5+fopDGh+YPHlpl/S6nzuVCprvm/vZA3Uzmxv7ahM1sQJEj9dB0/i720eL8Ht7chgS0gCpCNXHQ8W5raDR6/0g0vdEKc2P0QclA==

USE QUERYCERT COMMAND...

> FirmaSAT QUERYCERT -q serialNumber emisor.cer
30001000000300023708

> FirmaSAT QUERYCERT -q serialNumber pac.cer
30001000000300023699

> FirmaSAT QUERYCERT -q rfc emisor.cer
AAA010101AAA

> FirmaSAT QUERYCERT -q organizationName emisor.cer
SERVICIO DE ADMINISTRACION TRIBUTARIA

QUERY KEY SIZE OF CERTIFICATES...

> FirmaSAT QUERYCERT -q keySize emisor1024.cer
1024

> FirmaSAT QUERYCERT -q keySize emisor.cer
2048

> FirmaSAT QUERYCERT -q keySize AC4_SAT.cer
4096

QUERY SIGNATURE ALGORITHM IN CERTIFICATES...

> FirmaSAT QUERYCERT -q sigAlg emisor.cer
sha256WithRSAEncryption

> FirmaSAT QUERYCERT -q sigAlg emisor1024.cer
sha1WithRSAEncryption

SAVE KEY WITH NEW PASSWORD (AND IN PEM TEXTUAL FORM)...

> FirmaSAT NEWKEY -k emisor.key -p 12345678a -n 87654321b -m -o emisor_new-key.pem

> TYPE emisor_new-key.pem
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIwgg4aFSIh70CAggA
MBQGCCqGSIb3DQMHBAhM000neFsV5ASCBMjpEPxufz5gS7yo54VF7bYp1vHa8gyN
49Wfypwqyos+9+F5bOAlXDlUnri4/oXbKzCyu/FGNoJywB1GFehWJaI3QW+uMVtL
LCLOZQ9rebixqUqyshnOeRGE0i59hHq9T6JRV+EjkoIMoieMT9MNBg2pGAItUzzc
IQKB18Ra13sLsklbd9llqv6+tsLrL8ER9F5uz5PHrYw8FqYHVSfFohSd1goe4HUw
589F8Pd5MbPSI5lbH7s4S8EkaGSlSz7OAibNNG4vBXT+jYb9PGihmPmst3v0FRVs
g87qvFRWuQG74mAasLoO/XkcloIrKhZ7Qqkkt4A5+bqsuzuLkTNFuvBK1TuS4S3t
LBleCnPaMc7ce5bead6wm99Hp/lThLBKaVOasLbmnFh7tugd65uFthgFjMRZ3LhL
FxnNenIjCi0eGeTnZ+TkXfL5KmZ4Fvfre1Jup3iGwYO3Fhb+8Z3scVBKEj3rpmJS
htlyo3sLWQhDhYjPHJjnkDLEXSJdmqUS5ZKT73S7gBPVPl41PXZut62JTCXumN8b
+JNZzzy6YP7i+CBzRS45N4WWs4QIKUBFzyBsqR06tQfZtmQs6PrHMCEkb2bgUIfC
kNEnSfDlB/sUA9taRr9UBCrHb5MG7usGFAmoeYGHf0zPXVlh+4wM2+sRjBtsDMU/
RCaf0u72pAOHJrhpTE8rvP9bTcr/9S3I+6T6FEwiazBVYf6Ty3CY7ccKh6MLTAzk
lCRl+Dm3HPldnsU8QC3l2OPfPcnfI7Bi74swEJeRgUj8KDekr6P9uHDoRKBcLpsW
342nRQ89DIG6Cek8h7Sl1dZaxqjyf8jeOlvl3j40PPjtaPY9EMpL4VKCbVTAgIuf
ctXBLEao2tZoBcJk2NraqbbBkh1j5ksWLoGddBKemPbCAe6XP9b9xPj+PwKGOcy3
EEHivCm91tvUmlEnfdd7llS7Qf/2ymGTi7EVpB/bAle7GECP8PodFVTqj/8+5XmL
795CPmU4Ss8PE9gwC5tR8GT3SJt1PX7uUeM4HZFsQhHARCg6tNZMl2gUyb9IYoow
Mf+e9RPZskCQokUB8aN5+l2/TIKQJj7hc3hce+zk+X/N+W+8zipIdxcl9xsO98oL
8WrSo7U3y3cBhnsmg2E5+TDSIxM/cNrZeWhph4Hv/BUJjgiR8rj2XR93S2dbsTJN
V6wh2ofY7Cl2ayKTUwzoWS+GAa1n5s18cPIb2P5asF8UPkOamKraRAZXOdr9L/d8
YRIDGR7z3rA6RZQjS7rLS++zPxAiKuRSPZmxCNUq9O16CY1F2uDTh5Yd2L9z150Y
Pw99RF6L5xH5NylrZELVFODmJ8G/+E/VOPXAYftinjKmlZJmuS2xF1GCgMGZ1DOr
9UYJS64Q5vp6s6ptVCKo2kEn+rsK/JQAOG5esQZ+MA489CfCzIJ8Fqphi16TcWtb
yI3GngyQ5Kp+B/gnXJpzHv4piDOy+sWpYDqTJcoWd3qgcBdahQC9p9OSWC7xVn31
aVQEEfvWBnhJZvn3e5PlNEqcZrXkJYLvDL7SpII5SdsYa/P2TvX5lKID7aDOpSvj
Yh7X0dT8EVXmEec5h0HQ7WX5YUly53FEOzyOxYS40X55TQiBdQ9h6tKH0s3rdnOW
gC4=
-----END ENCRYPTED PRIVATE KEY-----

CHECK NEW KEY STILL MATCHES OLD CERTIFICATE...

> FirmaSAT KEYCHECK -k emisor_new-key.pem -p 87654321b emisor.cer
OK

USE 'FOR' LOOP TO CHECK XML FILES ARE OK (OR NOT)...

> FOR %f IN (cfdv40*.xml) DO @ECHO %f   & FirmaSAT XMLOK %f
cfdv40-bad-nover.xml
Error code -19: Item is not supported/El articulo no es compatible (NOT_SUPPORTED_ERROR):
Document type or version not supported/Tipo de documento o la version no
  compatible

cfdv40-badimpuestos.xml
Error code -27: Invalid XML format/No valido formato XML (BAD_XML_ERROR):
Element 'Traslados' not allowed here (line 26)/Elemento no permitido aqui

cfdv40-badsig.xml
OK
cfdv40-detallista.xml
OK
cfdv40-ejemplo-missing-tipofactor.xml
Error code -27: Invalid XML format/No valido formato XML (BAD_XML_ERROR):
XML validation error/Error al validar XML: Required attribute 'TipoFactor'
  missing for element 'cfdi:Traslado' (Line/numero de linea: 21)

cfdv40-ejemplo-niño.xml
OK
cfdv40-ejemplo-nocertnum.xml
Error code -28: XML restriction is violated/XML restriccion es violada (XML_FACET_ERROR):
Bad attribute/atributo mal [cfdi:Comprobante/@NoCertificado] (line 9): '' is
  too short/es demasiado corto, minimum length/longitud minima=20

cfdv40-ejemplo-signed-tfd.xml
OK
cfdv40-ejemplo-signed.xml
OK
cfdv40-ejemplo.xml
OK
cfdv40-iedu-badcurp.xml
Error code -28: XML restriction is violated/XML restriccion es violada (XML_FACET_ERROR):
Bad attribute/atributo mal [iedu:instEducativas/@CURP] (line 20):
  'JUAN010101MAZBC90X' is too long/es demasiado largo, maximum
  length/longitud maxima=18

cfdv40-min-signed-nobom.xml
OK
cfdv40-nomina12.xml
OK
cfdv40_new-signed.xml
OK

ALL DONE.