@REM $Id DoTests.bat $ @REM $Date: 2022-03-09T11:51Z $ @PROMPT $G$S @ECHO. @ECHO DOING TESTS WITH FIRMASAT... FirmaSAT LIBINFO @ECHO. @ECHO CHECK THAT XML STRUCTURE IS OK... FirmaSAT XMLOK cfdv40-ejemplo-signed-tfd.xml @IF ERRORLEVEL 1 goto ERROR @ECHO. @ECHO FORM THE PIPE STRING (CADENA ORIGINAL)... FirmaSAT PIPESTRING cfdv40-ejemplo.xml @IF ERRORLEVEL 1 goto ERROR @ECHO. @ECHO CREATE THE SIGNATURE (SELLO) AS A STRING... FirmaSAT MAKESIG -k emisor.key -p 12345678a cfdv40-ejemplo.xml @IF ERRORLEVEL 1 goto ERROR @ECHO. @ECHO SIGN AN XML FILE... FirmaSAT SIGNXML -s @ -k emisor.key -p 12345678a -c emisor.cer -i cfdv40-ejemplo.xml -o cfdv40_new-signed.xml @IF ERRORLEVEL 1 goto ERROR @ECHO. @ECHO VERIFY THAT THE SIGNATURE IN THE NEW SIGNED FILE WE CREATED IS OK... FirmaSAT VERIFYSIG cfdv40_new-signed.xml @IF ERRORLEVEL 1 goto ERROR @ECHO. @ECHO VERIFY AN EXISTING SIGNATURE... FirmaSAT VERIFYSIG cfdv40-ejemplo-signed-tfd.xml @IF ERRORLEVEL 1 goto ERROR @ECHO. @ECHO DISPLAY AN ATTRIBUTE FROM AN XML FILE... FirmaSAT ATTRIBUTE -d -a Sello -e Comprobante -i cfdv40-ejemplo-signed-tfd.xml @IF ERRORLEVEL 1 goto ERROR @ECHO. @ECHO DISPLAY SOME CERTIFICATE PROPERTIES... FirmaSAT NUMBERCERT cfdv40-ejemplo-signed-tfd.xml @IF ERRORLEVEL 1 goto ERROR FirmaSAT QUERYCERT -q notAfter emisor.cer @IF ERRORLEVEL 1 goto ERROR FirmaSAT QUERYCERT -q notBefore emisor.cer @IF ERRORLEVEL 1 goto ERROR FirmaSAT CERTSTRING emisor.cer @IF ERRORLEVEL 1 goto ERROR @ECHO. @ECHO COMPUTE THE DIGEST OF THE CADENA ORIGINAL... FirmaSAT FORMDIGEST cfdv40-ejemplo-signed-tfd.xml @IF ERRORLEVEL 1 goto ERROR @ECHO. @ECHO EXTRACT THE DIGEST FROM THE SIGNATURE FIELD... FirmaSAT EXTRACTDIGEST cfdv40-ejemplo-signed-tfd.xml @IF ERRORLEVEL 1 goto ERROR @ECHO. @ECHO CHECK THAT KEY AND CERTIFICATE MATCH... FirmaSAT KEYCHECK -k emisor.key -p 12345678a emisor.cer @IF ERRORLEVEL 1 goto ERROR FirmaSAT KEYCHECK -k pac.key -p 12345678a pac.cer @IF ERRORLEVEL 1 goto ERROR @ECHO. @ECHO DISPLAY THE COMPROBANTE VERSION NUMBER... FirmaSAT RECEIPTVERSION cfdv40-ejemplo-signed-tfd.xml @IF ERRORLEVEL 1 goto ERROR @ECHO. @ECHO OLDER VERSION... FirmaSAT RECEIPTVERSION cfdv33a-signed-tfd.xml @IF ERRORLEVEL 1 goto ERROR @ECHO. @ECHO GET PRIVATE KEY AS A BASE64 STRING... FirmaSAT GETKEYSTRING -p 12345678a emisor.key @IF ERRORLEVEL 1 goto ERROR @ECHO. @ECHO 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 @ @IF ERRORLEVEL 1 goto ERROR @ECHO. @ECHO GET ATTRIBUTE FROM INDEXED ELEMENTS... FirmaSAT ATTRIBUTE -d -a Descripcion -e cfdi:Concepto[1] -i cfdv40-ejemplo-signed-tfd.xml @IF ERRORLEVEL 1 goto ERROR FirmaSAT ATTRIBUTE -d -a Descripcion -e cfdi:Concepto[2] -i cfdv40-ejemplo-signed-tfd.xml @IF ERRORLEVEL 1 goto ERROR FirmaSAT ATTRIBUTE -d -a Descripcion -e cfdi:Concepto[3] -i cfdv40-ejemplo-signed-tfd.xml @IF ERRORLEVEL 1 goto ERROR @ECHO. @ECHO GET ATTRIBUTES USING UTF-8-ENCODED NAMES AND VALUES... FirmaSAT ATTRIBUTE -d -e cfdi:Emisor -a Nombre cfdv40-ejemplo-signed-tfd.xml @IF ERRORLEVEL 1 goto ERROR FirmaSAT ATTRIBUTE -d -e nomina12:Receptor -a Antigüedad cfdv40-nomina12.xml @IF ERRORLEVEL 1 goto ERROR FirmaSAT ATTRIBUTE -d -e nomina12:CompensacionSaldosAFavor -a Año cfdv40-nomina12.xml @IF ERRORLEVEL 1 goto ERROR FirmaSAT ATTRIBUTE -d -e iedu:instEducativas -a CURP cfdv40-ejemplo-niño.xml @IF ERRORLEVEL 1 goto ERROR @ECHO. @ECHO USING STRICT AND LOOSE OPTIONS FOR XMLOK... @ECHO. @ECHO Expecting error -28 here (Bad attribute .. @CURP .. is too long)... FirmaSAT XMLOK cfdv40-iedu-badcurp.xml :: NB No test for error. @ECHO. @ECHO But using loose (-l) option is OK... FirmaSAT XMLOK -l cfdv40-iedu-badcurp.xml @IF ERRORLEVEL 1 goto ERROR @ECHO. @ECHO CREATE CADENA ORIGINAL DEL TIMBRE FISCAL DIGITAL (TFD)... FirmaSAT PIPESTRING -f cfdv40-ejemplo-signed-tfd.xml @IF ERRORLEVEL 1 goto ERROR @ECHO. @ECHO COMPUTE THE DIGEST FOR TIMBRE FISCAL DIGITAL (TFD)... FirmaSAT FORMDIGEST -f cfdv40-ejemplo-signed-tfd.xml @IF ERRORLEVEL 1 goto ERROR @ECHO. @ECHO COMPUTE THE SIGNATURE (SELLOSAT) FOR TIMBRE FISCAL DIGITAL (TFD)... FirmaSAT MAKESIG -f -i cfdv40-ejemplo-signed-tfd.xml -k pac.key -p 12345678a @IF ERRORLEVEL 1 goto ERROR @ECHO. @ECHO USE QUERYCERT COMMAND... FirmaSAT QUERYCERT -q serialNumber emisor.cer @IF ERRORLEVEL 1 goto ERROR FirmaSAT QUERYCERT -q serialNumber pac.cer @IF ERRORLEVEL 1 goto ERROR FirmaSAT QUERYCERT -q rfc emisor.cer @IF ERRORLEVEL 1 goto ERROR FirmaSAT QUERYCERT -q organizationName emisor.cer @IF ERRORLEVEL 1 goto ERROR @ECHO. @ECHO QUERY KEY SIZE OF CERTIFICATES... FirmaSAT QUERYCERT -q keySize emisor1024.cer @IF ERRORLEVEL 1 goto ERROR FirmaSAT QUERYCERT -q keySize emisor.cer @IF ERRORLEVEL 1 goto ERROR FirmaSAT QUERYCERT -q keySize AC4_SAT.cer @IF ERRORLEVEL 1 goto ERROR @ECHO. @ECHO QUERY SIGNATURE ALGORITHM IN CERTIFICATES... FirmaSAT QUERYCERT -q sigAlg emisor.cer @IF ERRORLEVEL 1 goto ERROR FirmaSAT QUERYCERT -q sigAlg emisor1024.cer @IF ERRORLEVEL 1 goto ERROR @ECHO. @ECHO 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 @IF ERRORLEVEL 1 goto ERROR TYPE emisor_new-key.pem @ECHO. @ECHO CHECK NEW KEY STILL MATCHES OLD CERTIFICATE... FirmaSAT KEYCHECK -k emisor_new-key.pem -p 87654321b emisor.cer @IF ERRORLEVEL 1 goto ERROR @ECHO. @ECHO USE 'FOR' LOOP TO CHECK XML FILES ARE OK (OR NOT)... FOR %%f IN (cfdv40*.xml) DO @ECHO %%f & FirmaSAT XMLOK %%f @ECHO. @ECHO ALL DONE. @goto DONE :ERROR @ECHO Error occurred! :DONE @PROMPT $P$G