libsodium、minisign交叉编译和使用minisign对文件签名及验签
libsodium
下载
git clone https://github.com/jedisct1/libsodium
配置
cd libsodium
./autogen.sh -s
./configure CC=交叉编译器 --host=arm-linux --prefix=`pwd`/_install
编译和安装
make -j8
make install
#拷贝动态库到开发板
cp _install/lib/libsodium.so.* /usr/lib/
minisign
下载
git clone https://github.com/jedisct1/minisign.git
配置
给CMakeLists.txt打补丁
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7157da4..14a96f1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -9,6 +9,11 @@ set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
set(CPACK_PACKAGE_VERSION_MAJOR "0")
set(CPACK_PACKAGE_VERSION_MINOR "11")
set(CPACK_PACKAGE_VERSION_PATCH "0")
+set(CMAKE_C_COMPILER_PREFIX arm-linux-gnueabihf-)
+set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
+set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)
+set(CMAKE_STRIP arm-linux-gnueabihf-strip)
+
set(
CPACK_SOURCE_PACKAGE_FILE_NAME
"${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}"
@@ -67,9 +72,10 @@ if(STATIC_LIBSODIUM)
set(LIBSODIUM_LDFLAGS_OTHER ${LIBSODIUM_STATIC_LDFLAGS_OTHER})
endif()
-target_include_directories(minisign PUBLIC ${SODIUM_INCLUDE_DIR})
+target_include_directories(minisign PUBLIC ${SODIUM_INCLUDE_DIR} libsodium/_install/include)
+target_link_directories(minisign PUBLIC libsodium/_install/lib)
target_compile_options(minisign PUBLIC ${LIBSODIUM_CFLAGS} ${LIBSODIUM_CFLAGS_OTHER})
-target_link_libraries(minisign ${SODIUM_LIBRARY} ${LIBSODIUM_LDFLAGS_OTHER})
+target_link_libraries(minisign libsodium/_install/lib/libsodium.so ${LIBSODIUM_LDFLAGS_OTHER})
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
执行cmake生成Makefile
mkdir build.arm
cd build.arm
cmake ..
编译和安装
make -j8
#把minisign拷贝到开发板
cp minisign /usr/bin/
使用
生成证书
#执行该命令后需要设置私钥的使用密码
minisign -Sm public.key -s private.key
签名文件
echo 私钥使用密码 | minisign -Sm 待签名文件 -s private.key -x a.sign
验证签名
minisign -Vm 待验签文件 -P 公钥 -x a.sign