浏览代码

Cedar: Add "BLAKE2" submodule

OpenSSL provides BLAKE2s, but it only supports an output of 32 bytes. For WireGuard we need a 16 bytes output as well.

The minimum CMake version is bumped to 3.10 because it adds HAS_SSE2 to cmake_host_system_information(): https://cmake.org/cmake/help/v3.10/command/cmake_host_system_information.html
Davide Beatrici 4 年之前
父节点
当前提交
b339104f4f
共有 4 个文件被更改,包括 12 次插入1 次删除
  1. 3 0
      .gitmodules
  2. 1 0
      3rdparty/BLAKE2
  3. 1 1
      CMakeLists.txt
  4. 7 0
      src/Cedar/CMakeLists.txt

+ 3 - 0
.gitmodules

@@ -4,3 +4,6 @@
 [submodule "3rdparty/tinydir"]
 	path = 3rdparty/tinydir
 	url = https://github.com/cxong/tinydir.git
+[submodule "3rdparty/BLAKE2"]
+	path = 3rdparty/BLAKE2
+	url = https://github.com/BLAKE2/BLAKE2.git

+ 1 - 0
3rdparty/BLAKE2

@@ -0,0 +1 @@
+Subproject commit b52178a376ca85a8ffe50492263c2a5bc0fa4f46

+ 1 - 1
CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.7)
+cmake_minimum_required(VERSION 3.10)
 
 set(BUILD_NUMBER CACHE STRING "The number of the current build.")
 

+ 7 - 0
src/Cedar/CMakeLists.txt

@@ -19,6 +19,13 @@ set_target_properties(cedar
   RUNTIME_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}"
 )
 
+cmake_host_system_information(RESULT HAS_SSE2 QUERY HAS_SSE2)
+
+set(BLAKE2_SRC_PATH $<IF:$<BOOL:HAS_SSE2>,${TOP_DIRECTORY}/3rdparty/BLAKE2/sse,${TOP_DIRECTORY}/3rdparty/BLAKE2/ref>)
+
+target_include_directories(cedar PUBLIC ${BLAKE2_SRC_PATH})
+target_sources(cedar PRIVATE "${BLAKE2_SRC_PATH}/blake2s.c")
+
 if(WIN32)
   set_target_properties(cedar
     PROPERTIES