diff --git a/src/include/utility.cpp b/src/include/utility.cpp index 6ba13ab89..60274bde7 100755 --- a/src/include/utility.cpp +++ b/src/include/utility.cpp @@ -278,14 +278,17 @@ bool input_filename(TFilename& file) return good; } -void sirio_codesigning(const TFilename& filename) +BOOLEAN sirio_codesigning(const TFilename& filename, bool verify) { + const char * const default_sign = R"("C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x64\signtool.exe" sign /a /s MY /n "Sirio Informatica e Sistemi SPA" /t http://timestamp.verisign.com/scripts/timstamp.dll /v)"; + const char * const default_verify = R"("C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x64\signtool.exe" verify /a /pa /v)"; TConfig installini("install.ini", "Main"); - TString command = installini.get("SirioSignCommand", nullptr, -1, ""); + TString command = installini.get(!verify ? "SirioSignCommand" : "SirioSignVerifyCommand", nullptr, -1, ""); if (command.empty()) - command << R"("C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x64\signtool.exe" sign /a /s MY /n "Sirio Informatica e Sistemi SPA" /t http://timestamp.verisign.com/scripts/timstamp.dll /v)"; + command << !verify ? default_sign : default_verify; command << " \"" << filename.path() << static_cast((const TFilename&)filename) << "\""; - xvt_sys_execute(command, TRUE, FALSE); + const int exit = xvt_sys_execute(command, TRUE, FALSE); + return exit == 0 || exit == 2; // Execution was successful [0] OR Execution has completed with warnings [2] } // Certified 99% diff --git a/src/include/utility.h b/src/include/utility.h index 88c145eb9..147339db7 100755 --- a/src/include/utility.h +++ b/src/include/utility.h @@ -20,8 +20,9 @@ #define SAFE_DELETE(p) { delete p; p = NULL; } #define DEBUG_ENABLED is_debug_station() -void sirio_codesigning(const TFilename& filename); -#define SIRIOSIGN(filename) sirio_codesigning((const TFilename&)((filename))) +BOOLEAN sirio_codesigning(const TFilename& filename, bool verify = false); +#define SIRIOSIGN(filename) sirio_codesigning((const TFilename&)((filename)), false) +#define SIRIOSIGN_VERIFY(filename) sirio_codesigning((const TFilename&)((filename)), true) class TPerformance_profiler : public TObject