diff --git a/3rdparty/CMakeLists.txt b/3rdparty/CMakeLists.txt index 4511e4358..dca4bd76b 100644 --- a/3rdparty/CMakeLists.txt +++ b/3rdparty/CMakeLists.txt @@ -1,6 +1,11 @@ +list (APPEND thirdparty_src) +list (APPEND thirdparty_lib) +list (APPEND thirdparty_inc) +list (APPEND thirdparty_def) + add_subdirectory(everest) -set(src_thirdparty - ${src_everest} - PARENT_SCOPE -) +set(thirdparty_src ${thirdparty_src} PARENT_SCOPE) +set(thirdparty_lib ${thirdparty_lib} PARENT_SCOPE) +set(thirdparty_inc ${thirdparty_inc} PARENT_SCOPE) +set(thirdparty_def ${thirdparty_def} PARENT_SCOPE) diff --git a/3rdparty/everest/CMakeLists.txt b/3rdparty/everest/CMakeLists.txt index 84e2763c8..5b0a078dd 100644 --- a/3rdparty/everest/CMakeLists.txt +++ b/3rdparty/everest/CMakeLists.txt @@ -1,10 +1,40 @@ -include_directories(include include/everest include/everest/kremlib) +list (APPEND everest_src) +list (APPEND everest_inc) +list (APPEND everest_def) -set(src_everest - ${CMAKE_CURRENT_SOURCE_DIR}/library/everest.c - ${CMAKE_CURRENT_SOURCE_DIR}/library/Hacl_Curve25519.c - ${CMAKE_CURRENT_SOURCE_DIR}/library/x25519.c - ${CMAKE_CURRENT_SOURCE_DIR}/library/kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.c - PARENT_SCOPE -) +execute_process(COMMAND ${PERL_EXECUTABLE} scripts/config.pl -f include/mbedtls/config.h get MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED RESULT_VARIABLE result) +if(${result} EQUAL 0) + set(everest_src + ${CMAKE_CURRENT_SOURCE_DIR}/library/everest.c + ${CMAKE_CURRENT_SOURCE_DIR}/library/x25519.c + ${CMAKE_CURRENT_SOURCE_DIR}/library/kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.c + ) + + if (${CMAKE_LIBRARY_ARCHITECTURE} STREQUAL "x86_64-linux-gnu") + list(APPEND everest_src ${CMAKE_CURRENT_SOURCE_DIR}/library/Hacl_Curve25519.c) + else() + list(APPEND everest_def -DKRML_VERIFIED_UINT128) + list(APPEND everest_src + ${CMAKE_CURRENT_SOURCE_DIR}/library/legacy/Hacl_Curve25519.c + ${CMAKE_CURRENT_SOURCE_DIR}/library/kremlib/FStar_UInt128_extracted.c + ) + endif() + + list(APPEND everest_inc ${CMAKE_CURRENT_SOURCE_DIR}/../../include ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/include/everest ${CMAKE_CURRENT_SOURCE_DIR}/include/everest/kremlib) + + if(INSTALL_MBEDTLS_HEADERS) + + file(GLOB_RECURSE headers "${CMAKE_CURRENT_SOURCE_DIR}/include/everest/*.h") + + install(FILES ${headers} + DESTINATION include/everest + PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ) + + endif(INSTALL_MBEDTLS_HEADERS) + +endif() + +set(thirdparty_src ${thirdparty_src} ${everest_src} PARENT_SCOPE) +set(thirdparty_inc ${thirdparty_inc} ${everest_inc} PARENT_SCOPE) +set(thirdparty_def ${thirdparty_def} ${everest_def} PARENT_SCOPE) diff --git a/3rdparty/everest/Makefile.inc b/3rdparty/everest/Makefile.inc index bbdba56a3..0b71e2a9f 100755 --- a/3rdparty/everest/Makefile.inc +++ b/3rdparty/everest/Makefile.inc @@ -1,7 +1,18 @@ -THIRDPARTY_INCLUDES+=-I../3rdparty/everest/include -I../3rdparty/everest/include/everest -I../3rdparty/everest/include/everest/kremlib - -THIRDPARTY_OBJECTS+= \ - ../3rdparty/everest/library/everest.o \ - ../3rdparty/everest/library/Hacl_Curve25519.o \ - ../3rdparty/everest/library/x25519.o \ - ../3rdparty/everest/library/kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.o \ No newline at end of file +EVEREST_ENABLED=$(shell perl ../scripts/config.pl -f ../include/mbedtls/config.h get MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED; echo $$?) + +ifeq ($(EVEREST_ENABLED),0) +THIRDPARTY_INCLUDES+=-I../3rdparty/everest/include -I../3rdparty/everest/include/everest -I../3rdparty/everest/include/everest/kremlib + +THIRDPARTY_OBJECTS+= \ + ../3rdparty/everest/library/everest.o \ + ../3rdparty/everest/library/x25519.o \ + ../3rdparty/everest/library/kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.o + +ifeq ($(shell getconf LONG_BIT),64) +THIRDPARTY_OBJECTS+=../3rdparty/everest/library/Hacl_Curve25519.o +else +CFLAGS+="-DKRML_VERIFIED_UINT128" +THIRDPARTY_OBJECTS+=../3rdparty/everest/library/legacy/Hacl_Curve25519.o \ + ../3rdparty/everest/library/kremlib/FStar_UInt128_extracted.o +endif +endif diff --git a/3rdparty/everest/library/vs2010/Hacl_Curve25519.c b/3rdparty/everest/library/legacy/Hacl_Curve25519.c similarity index 100% rename from 3rdparty/everest/library/vs2010/Hacl_Curve25519.c rename to 3rdparty/everest/library/legacy/Hacl_Curve25519.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 044ddc281..5a0921926 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -176,10 +176,14 @@ else() set(LIB_INSTALL_DIR lib) endif() -include_directories(include/ 3rdparty/everest/include/ 3rdparty/everest/include/everest/ 3rdparty/everest/include/everest/kremlin/ 3rdparty/everest/include/everest/kremlib/) +include_directories(include/) include_directories(library/) add_subdirectory(3rdparty) +include_directories(${thirdparty_inc}) +list(APPEND libs ${thirdparty_lib}) +add_definitions(${thirdparty_def}) + add_subdirectory(library) add_subdirectory(include) diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt index 727fa210c..02f924df4 100644 --- a/include/CMakeLists.txt +++ b/include/CMakeLists.txt @@ -4,9 +4,8 @@ if(INSTALL_MBEDTLS_HEADERS) file(GLOB headers "mbedtls/*.h") file(GLOB psa_headers "psa/*.h") - file(GLOB everest_headers "../3rdparty/everest/include/*.h") - install(FILES ${headers} ${everest_headers} + install(FILES ${headers} DESTINATION include/mbedtls PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ) diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index a6eb1ed06..f4bb4725c 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -74,7 +74,6 @@ set(src_crypto threading.c timing.c xtea.c - ${src_thirdparty} ) # For files generated by the parent project (Mbed TLS) when building Mbed @@ -95,6 +94,8 @@ set(src_crypto ) endif() +list(APPEND src_crypto ${thirdparty_src}) + if(CMAKE_COMPILER_IS_GNUCC) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wmissing-declarations -Wmissing-prototypes") endif(CMAKE_COMPILER_IS_GNUCC) diff --git a/programs/Makefile b/programs/Makefile index 871b75b77..add1a8649 100644 --- a/programs/Makefile +++ b/programs/Makefile @@ -11,7 +11,8 @@ LOCAL_CXXFLAGS = $(WARNING_CXXFLAGS) -I../include -D_FILE_OFFSET_BITS=64 LOCAL_LDFLAGS = -L../library \ -lmbedcrypto$(SHARED_SUFFIX) -LOCAL_CFLAGS+=-I../3rdparty/everest/include +include ../3rdparty/Makefile.inc +LOCAL_CFLAGS+=$(THIRDPARTY_INCLUDES) ifndef SHARED DEP=../library/libmbedcrypto.a diff --git a/scripts/generate_visualc_files.pl b/scripts/generate_visualc_files.pl index 5d07b885c..2134f53a6 100755 --- a/scripts/generate_visualc_files.pl +++ b/scripts/generate_visualc_files.pl @@ -23,7 +23,7 @@ my $mbedtls_header_dir = 'include/mbedtls'; my $psa_header_dir = 'include/psa'; my $source_dir = 'library'; my $everest_header_dir = '3rdparty/everest/include/everest'; -my @everest_source_dirs = ('3rdparty/everest/library', '3rdparty/everest/library/kremlib', '3rdparty/everest/library/vs2010'); +my @everest_source_dirs = ('3rdparty/everest/library', '3rdparty/everest/library/kremlib', '3rdparty/everest/library/legacy'); # Need windows line endings! my $vsx_hdr_tpl = < - +