'------------------------------------------------------------------------------ '--------------- COMMON FUNCTIONS USED BY ANDROCERTIF UTILITIES --------------- '------------------------------------------------------------------------------ '------------------------------------------------------------------------------ GLOBAL toolsPath AS STRING '------------------------------------------------------------------------------ '------------------------------------------------------------------------------ TYPE NATIVE_SYSTEM_INFO wProcessorArchitecture AS WORD wReserved AS WORD dwPageSize AS DWORD lpMinimumApplicationAddress AS DWORD lpMaximumApplicationAddress AS DWORD dwActiveProcessorMask AS DWORD dwNumberOfProcessors AS DWORD dwProcessorType AS DWORD dwAllocationGranularity AS DWORD wProcessorLevel AS WORD wProcessorRevision AS WORD END TYPE '------------------------------------------------------------------------------ '------------------------------------------------------------------------------ FUNCTION IsWindowsx64() AS LONG LOCAL si AS NATIVE_SYSTEM_INFO LOCAL arch,CPUnum AS LONG LOCAL SystemInfo AS NATIVE_SYSTEM_INFO LOCAL pGetNativeSystemInfo AS LONG pGetNativeSystemInfo = GetProcAddress(GetModuleHandle("kernel32.dll"), "GetNativeSystemInfo") IF (pGetNativeSystemInfo) THEN CALL DWORD pGetNativeSystemInfo USING GetNativeSystemInfo(SystemInfo) arch = SystemInfo.wProcessorArchitecture CPUnum=SystemInfo.dwNumberOfProcessors 'stdout "CPU:"+str$(CPUnum)+" Architektur:"+hex$(arch) IF (arch = %PROCESSOR_ARCHITECTURE_AMD64) THEN FUNCTION = %True ELSE FUNCTION = %False END IF ELSE 'get system information GetSystemInfo BYVAL VARPTR(si) arch = si.wProcessorArchitecture 'STDOUT "CPUs:"+STR$(si.dwNumberOfProcessors) 'this is just for testing, if structure is still OK IF arch = %PROCESSOR_ARCHITECTURE_AMD64 OR _ arch = %PROCESSOR_ARCHITECTURE_IA64 THEN FUNCTION = %True ELSEIF arch = %PROCESSOR_ARCHITECTURE_INTEL THEN FUNCTION = %False ELSE FUNCTION = %False END IF END IF END FUNCTION '------------------------------------------------------------------------------ '------------------------------------------------------------------------------ FUNCTION MissingTools() AS LONG IF IsWindowsx64() THEN toolsPath = "tools_x64" ELSE toolsPath = "tools_x86" IF NOT EXIST(toolsPath + "\keytool.exe") _ OR NOT EXIST(toolsPath + "\openssl.exe") _ OR NOT EXIST(toolsPath + "\openssl.cfg") _ OR NOT EXIST(toolsPath + "\splitpem.exe") _ OR NOT EXIST(toolsPath + "\jli.dll") _ OR NOT EXIST(toolsPath + "\libeay32.dll") _ OR NOT EXIST(toolsPath + "\ssleay32.dll") _ THEN ?"Fatal Error:"+$CR _ +"Some tools are missing."+$CR _ +"Please re-install from"+$CR _ +"http://mougino.free.fr", _ %MB_ICONERROR, _ EXE.NAME$+$SPC+$VER FUNCTION = -1 END IF END FUNCTION '------------------------------------------------------------------------------ '------------------------------------------------------------------------------ FUNCTION PDQ(e AS STRING) AS STRING ' Protect with double quote FUNCTION = e IF INSTR(e, " ") > 0 OR e = "" THEN FUNCTION = $DQ + e + $DQ END FUNCTION '------------------------------------------------------------------------------ '------------------------------------------------------------------------------ FUNCTION EXIST(BYVAL fileOrFolder AS STRING) AS LONG LOCAL Dummy& ON ERROR GOTO Inexistant Dummy& = GETATTR(fileOrFolder) Inexistant: RESUME FLUSH FUNCTION = (ERRCLEAR = 0) END FUNCTION '------------------------------------------------------------------------------ '------------------------------------------------------------------------------ FUNCTION FileName(tx AS STRING) AS STRING LOCAL i AS LONG i = INSTR(-1, tx, "\") IF i > 0 THEN FUNCTION = MID$(tx, i+1) END FUNCTION '------------------------------------------------------------------------------ '------------------------------------------------------------------------------ FUNCTION FilePath(tx AS STRING) AS STRING LOCAL i AS LONG i = INSTR(-1, tx, "\") IF i > 0 THEN FUNCTION = LEFT$(tx, i) END FUNCTION '------------------------------------------------------------------------------ '------------------------------------------------------------------------------ FUNCTION BATCH(cmd AS STRING) AS STRING LOCAL ff AS LONG LOCAL r AS STRING ' Build and run script ff = FREEFILE OPEN EXE.NAME$ + ".bat" FOR OUTPUT AS #ff PRINT #ff, "@echo off" PRINT #ff, "set PATH=%CD%;%PATH%;" PRINT #ff, "set OPENSSL_CONF=%~dp0\openssl.cfg" PRINT #ff, cmd CLOSE #ff SHELL ENVIRON$("COMSPEC") + " /C " _ + EXE.NAME$ + ".bat > " _ + EXE.NAME$ + ".log 2>&1", 0 KILL EXE.NAME$ + ".bat" ' Get result of operation IF NOT EXIST(EXE.NAME$ + ".log") THEN EXIT FUNCTION ff = FREEFILE OPEN EXE.NAME$ + ".log" FOR BINARY AS #ff GET$ #ff, LOF(#ff), r CLOSE #ff KILL EXE.NAME$ + ".log" FUNCTION = TRIM$(r, ANY $CRLF) END FUNCTION '------------------------------------------------------------------------------