Gabriele Contini
2020-03-14 6ec221e44edbc11321d591f969fac584370306c4
mingw
17个文件已修改
4 文件已重命名
120 ■■■■■ 已修改文件
.travis.yml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CMakeLists.txt 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cmake/toolchain-ubuntu-mingw64.cmake 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/CMakeLists.txt 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/inspector/CMakeLists.txt 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/library/CMakeLists.txt 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/library/base/CMakeLists.txt 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/library/base/logger.cpp 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/library/base/logger.h 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/library/ini/ConvertUTF.cpp 补丁 | 查看 | 原始文档 | blame | 历史
src/library/os/CMakeLists.txt 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/library/os/linux/network.cpp 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/library/os/linux/os-linux.cpp 补丁 | 查看 | 原始文档 | blame | 历史
src/library/os/openssl/signature_verifier.cpp 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/library/os/windows/isvm/BIOSReader.cpp 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/library/os/windows/isvm/Native.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/library/os/windows/network.cpp 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/library/os/windows/os-win.cpp 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/library/os/windows/signature_verifier.cpp 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
test/CMakeLists.txt 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
test/library/CMakeLists.txt 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.travis.yml
@@ -205,10 +205,12 @@
             - libboost-system-dev
             - libboost-thread-dev
             - libboost-date-time-dev
             - python3-pip
             - doxygen
             - graphviz
     script: 
        - make docs
        - pip3 install sphinx sphinx_rtd_theme breathe sphinx-markdown-tables recommonmark sphinx-rtd-theme
        - make documentation
     deploy:
        provider: pages
        skip_cleanup: true
@@ -216,7 +218,7 @@
        keep_history: false
        verbose: true
        target_branch: "gh-pages"
        local_dir: "build/html"
        local_dir: "build/docs/sphinx"
        on:
            branch: develop
env:
CMakeLists.txt
@@ -20,7 +20,7 @@
project (licensecc 
            VERSION 2.0.0
            DESCRIPTION "Copy protection and licensing library" 
            LANGUAGES C CXX)
            LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
@@ -46,7 +46,6 @@
if(UNIX) #this is true for all the linux systems but not for cross compiling "linux->windows"
    IF(${STATIC_RUNTIME})
        set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++ -static")
        #SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
    ENDIF(${STATIC_RUNTIME})
    IF(NOT OPENSSL_FOUND)
        MESSAGE(SEND_ERROR "Openssl required in Linux, please install it or specify -DOPENSSL_ROOT")
@@ -97,6 +96,10 @@
        if(MINGW)
            list(APPEND EXTERNAL_LIBS "-lcrypt32 -lbcrypt -lws2_32 -liphlpapi")
            SET(CMAKE_EXE_LINKER_FLAGS "-static")
            #super ugly bug when cross compiling in cmake 3.16
            #IF(CMAKE_CROSSCOMPILING)
            #    link_directories(BEFORE /usr/lib/gcc/x86_64-w64-mingw32/7.3-win32)
            #ENDIF()
        endif(MINGW)
    endif(MSVC)
    set(main_lib_dest "${PROJECT_NAME}")  
@@ -129,8 +132,6 @@
message( STATUS "Install prefix      : " ${CMAKE_INSTALL_PREFIX})
message( STATUS "Project name        : " ${LCC_PROJECT_NAME} )
message( STATUS "Project base dir    : " ${LCC_PROJECTS_BASE_DIR}/${LCC_PROJECT_NAME} )
get_property(inc_dirs DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
message( STATUS "Include dirs : " "${inc_dirs}" )
add_subdirectory(src)
@@ -160,8 +161,13 @@
    message(WARNING "Boost not found, disabling tests")
ENDIF(Boost_FOUND)
#################################
# Documentation
#################################
find_package(Doxygen COMPONENTS dot)
IF(Doxygen_FOUND)
find_package(Sphinx)
IF(Doxygen_FOUND AND Sphinx_FOUND)
    message(STATUS "Doxygen found, generating docs.")
    SET(DOXYGEN_EXCLUDE_PATTERNS "*/library/ini/*;*/doc/resources/*")
    SET(DOXYGEN_DISABLE_INDEX YES)
@@ -169,10 +175,25 @@
    SET(DOXYGEN_GENERATE_XML YES)
    SET(DOXYGEN_LAYOUT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/doc/DoxygenLayout.xml")
    doxygen_add_docs(docs doc src include/licensecc COMMENT "doxygen docs")
    file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/doc/resources/" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/html")
ELSE(Doxygen_FOUND)
    message(STATUS "Doxygen not found, not generating docs.")
ENDIF(Doxygen_FOUND)
    #file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/doc/resources/" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/html")
    #file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/doc/sphinx/" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
    set(SPHINX_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/doc)
    set(SPHINX_BUILD ${CMAKE_CURRENT_BINARY_DIR}/docs/sphinx)
    add_custom_target(documentation
                  COMMAND
                  ${SPHINX_EXECUTABLE} -b html
                  ${SPHINX_SOURCE} ${SPHINX_BUILD}
                  -Dbreathe_projects.licensecc=${CMAKE_CURRENT_BINARY_DIR}/xml
                  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
                  COMMENT "Generating documentation with Sphinx")
    add_dependencies(documentation docs)
ELSE(Doxygen_FOUND AND Sphinx_FOUND)
    message(STATUS "Doxygen or Sphynx not found, not generating docs.")
ENDIF(Doxygen_FOUND AND Sphinx_FOUND)
install(DIRECTORY ${LCC_INCLUDE_DIR} DESTINATION include/${PROJECT_NAME})
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/ DESTINATION include)
cmake/toolchain-ubuntu-mingw64.cmake
@@ -13,11 +13,15 @@
set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++)
set(CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres)
set(CMAKE_CXX_LINK_EXECUTABLE ${TOOLCHAIN_PREFIX}-g++)
# target environment on the build host system
#   set 1st to dir with the cross compiler's C/C++ headers/libs
set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX})
#if(CMAKE_CROSSCOMPILING) #cross compiling for linux... a crazy bug on my system
#    link_directories(BEFORE /usr/lib/gcc/x86_64-w64-mingw32/7.3-win32)
#endif(CMAKE_CROSSCOMPILING)
# modify default behavior of FIND_XXX() commands to
# search for headers/libs in the target environment and
# search for programs in the build host environment
src/CMakeLists.txt
@@ -1,5 +1,3 @@
#for no reason overwrite it (maybe it's manually customized)
IF (NOT LCC_PROJECT_MAGIC_NUM) 
    set(LCC_PROJECT_MAGIC_NUM 0)  
ENDIF (NOT LCC_PROJECT_MAGIC_NUM)
src/inspector/CMakeLists.txt
@@ -1,7 +1,8 @@
ADD_EXECUTABLE(inspector inspector.cpp )
target_link_libraries(inspector     licensecc_static
target_link_libraries(inspector
     licensecc_static
      Boost::unit_test_framework 
     Boost::filesystem
     Boost::system)
src/library/CMakeLists.txt
@@ -7,7 +7,7 @@
    licensecc.cpp
    LicenseReader.cpp
    limits/license_verifier.cpp
    ini/ConvertUTF.c
    ini/ConvertUTF.cpp
    $<TARGET_OBJECTS:hw_identifier>
    $<TARGET_OBJECTS:locate>
    $<TARGET_OBJECTS:os>
src/library/base/CMakeLists.txt
@@ -3,7 +3,7 @@
    StringUtils.cpp
    file_utils.cpp
    base64.cpp
    logger.c
    logger.cpp
)
if(CODE_COVERAGE AND UNIX)
src/library/base/logger.cpp
File was renamed from src/library/base/logger.c
@@ -5,6 +5,8 @@
#include <stdarg.h>
#include <time.h>
#ifndef LOG_DISABLED
#ifdef __unix__
#include <unistd.h>
#define MAX_PATH 255
@@ -69,3 +71,4 @@
        logFile = NULL;
    }
}
#endif
src/library/base/logger.h
@@ -1,12 +1,13 @@
#ifndef logger_INCLUDED
#define logger_INCLUDED
#ifdef __cplusplus
extern "C" {
#endif
#define LOG_DISABLED 1
#ifndef LOG_DISABLED
#include <errno.h>
#include <string.h>
#ifdef __cplusplus
extern "C" {
#endif
#define clean_errno() (errno == 0 ? "None" : strerror(errno))
src/library/ini/ConvertUTF.cpp
src/library/os/CMakeLists.txt
@@ -7,7 +7,9 @@
            cpu_info_common.cpp
            linux/cpu_info.cpp
            linux/network.cpp
            linux/os-linux.c)
            linux/os-linux.cpp)
        target_link_libraries(os PUBLIC OpenSSL::Crypto)
    ELSE(UNIX)
          add_library(os OBJECT 
          cpu_info_common.cpp windows/cpu_info.cpp 
@@ -15,8 +17,10 @@
        execution_environment_common.cpp windows/execution_environment.cpp
          windows/isvm/Native.cpp
        windows/isvm/BIOSReader.cpp
          windows/os-win.c
          windows/os-win.cpp
          windows/network.cpp)
          target_link_libraries(os PUBLIC OpenSSL::Crypto)
    ENDIF(UNIX)
ELSE(UNIX OR OPENSSL_FOUND)
#windows no openssl
@@ -27,7 +31,7 @@
        execution_environment_common.cpp windows/execution_environment.cpp
        windows/isvm/Native.cpp
        windows/isvm/BIOSReader.cpp
        windows/os-win.c
        windows/os-win.cpp
        windows/network.cpp)
ENDIF(UNIX OR OPENSSL_FOUND)
@@ -35,6 +39,5 @@
add_dependencies( os project_initialize )
if(CODE_COVERAGE AND UNIX)
      MESSAGE(STATUS "Enabling code coverage")
      target_compile_options(os PUBLIC -O0 -g --coverage)
endif(CODE_COVERAGE AND UNIX)
src/library/os/linux/network.cpp
@@ -25,6 +25,8 @@
#include <netpacket/packet.h>
#include <stdio.h>
#include <unordered_map>
#include <string.h>
#include <memory.h>
#include "../../base/StringUtils.h"
#include "../../base/logger.h"
src/library/os/linux/os-linux.cpp
src/library/os/openssl/signature_verifier.cpp
@@ -10,9 +10,9 @@
#include <stdlib.h>
#include <errno.h>
#ifdef _WIN32
#include <windows.h>
#endif
//#ifdef _WIN32
//#include <windows.h>
//#endif
#include <public_key.h>
src/library/os/windows/isvm/BIOSReader.cpp
@@ -34,7 +34,7 @@
//
//    Windows
//
#include <Windows.h>
#include <windows.h>
#include <tchar.h>
int8_t *parse_smbiod_content(int8_t *addr, int8_t **indexes, int32_t *count) {
src/library/os/windows/isvm/Native.h
@@ -1,7 +1,7 @@
#pragma once
#include <stdint.h>
#include <Windows.h>
#include <windows.h>
struct RawSMBIOSData
{
src/library/os/windows/network.cpp
@@ -15,7 +15,7 @@
#include <iphlpapi.h>
#include <unordered_map>
#include <stdio.h>
#pragma comment(lib, "IPHLPAPI.lib")
//#pragma comment(lib, "IPHLPAPI.lib")
#include "../../base/StringUtils.h"
#include "../../base/logger.h"
@@ -52,7 +52,7 @@
    DWORD dwStatus;
    int adapter_info_size;
    PIP_ADAPTER_INFO pAdapterInfo;
    DWORD dwBufLen = sizeof(IP_ADAPTER_INFO);
    DWORD dwBufLen = sizeof(IP_ADAPTER_INFO);
    unsigned int i = 3;
    do {
@@ -82,7 +82,7 @@
    while (pAdapter) {
        OsAdapterInfo ai = {};
        strncpy(ai.description, pAdapter->Description,
                min(sizeof(ai.description), MAX_ADAPTER_DESCRIPTION_LENGTH));
                min((int)sizeof(ai.description), MAX_ADAPTER_DESCRIPTION_LENGTH));
        memcpy(ai.mac_address, pAdapter->Address, 8);
        translate(pAdapter->IpAddressList.IpAddress.String, ai.ipv4_address);
        ai.type = IFACE_TYPE_ETHERNET;
src/library/os/windows/os-win.cpp
File was renamed from src/library/os/windows/os-win.c
@@ -7,7 +7,7 @@
#include <licensecc/datatypes.h>
#include <iphlpapi.h>
#include <stdio.h>
#pragma comment(lib, "IPHLPAPI.lib")
//#pragma comment(lib, "IPHLPAPI.lib")
unsigned char* unbase64(const char* ascii, int len, int *flen);
@@ -64,8 +64,9 @@
                    if (diskInfos != NULL) {
                        if (ndrives < (int)*disk_info_size) {
                            diskInfos[ndrives].id = ndrives;
                            strncpy(diskInfos[ndrives].device, volName, min(MAX_PATH,sizeof(volName))-1);
                            strncpy(diskInfos[ndrives].label, fileSysName,min(sizeof(diskInfos[ndrives].label), sizeof(fileSysName)) - 1);
                            strncpy(diskInfos[ndrives].device, volName, cmin(MAX_PATH, sizeof(volName)) - 1);
                            strncpy(diskInfos[ndrives].label, fileSysName,
                                    cmin(sizeof(diskInfos[ndrives].label), sizeof(fileSysName)) - 1);
                            memcpy(diskInfos[ndrives].disk_sn, &volSerial, sizeof(DWORD));
                            diskInfos[ndrives].preferred = (szSingleDrive[0] == 'C');
                        } else {
@@ -91,7 +92,7 @@
        }
        *disk_info_size = ndrives;
    } else {
        *disk_info_size = min(ndrives, *disk_info_size);
        *disk_info_size = cmin(ndrives, *disk_info_size);
    }
    return return_value;
}
@@ -105,5 +106,4 @@
    }
    return result;
}
src/library/os/windows/signature_verifier.cpp
@@ -15,7 +15,7 @@
#include <wincrypt.h>
#include <iphlpapi.h>
#include <windows.h>
#pragma comment(lib, "bcrypt.lib")
//#pragma comment(lib, "bcrypt.lib")
#include <public_key.h>
#include "../../base/logger.h"
@@ -140,8 +140,8 @@
    vector<uint8_t> signatureBlob = unbase64(signatureBuffer);
    DWORD dwSigLen = (DWORD) signatureBlob.size();
    BYTE* sigBlob = &signatureBlob[0];
    BYTE* sigBlob = &signatureBlob[0];
    if (NT_SUCCESS(status = BCryptOpenAlgorithmProvider(&hSignAlg, BCRYPT_RSA_ALGORITHM, NULL, 0))) {
        if ((result = readPublicKey(hSignAlg, &phKey)) == FUNC_RET_OK) {
            BCRYPT_PKCS1_PADDING_INFO paddingInfo;
test/CMakeLists.txt
@@ -1,8 +1,5 @@
#if we're here boost has been found
add_definitions(-DBOOST_ALL_NO_LIB) #Disable Boost Microsoft magic, all dependencies are handled by cmake
add_definitions(-DBOOST_LIB_DIAGNOSTIC) #Check it is really disabled
include_directories(${Boost_INCLUDE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
link_directories ( ${Boost_LIBRARY_DIR} )
configure_file (
    "${CMAKE_CURRENT_SOURCE_DIR}/../src/templates/licensecc_properties_test.h.in" 
@@ -11,7 +8,6 @@
file(GENERATE OUTPUT "${CMAKE_BINARY_DIR}/include/$<CONFIG>/licensecc_properties_test.h" 
        INPUT "${CMAKE_BINARY_DIR}/licensecc_properties_test.h.tmp")
include_directories ( ${CMAKE_BINARY_DIR}/include/$<CONFIG> )
add_subdirectory(library)
add_subdirectory(functional)
test/library/CMakeLists.txt
@@ -50,9 +50,8 @@
target_link_libraries(
 test_event_registry
 licensecc_static
 base
 Boost::unit_test_framework 
 Boost::filesystem
 Boost::system
)