新增自定义签名
为了实现构建的软件包的安全性和完整性校验,开发者需要按照本章节指导,实现软件包的自定义签名。
本章节将介绍如何新增自定义签名的操作步骤,具体代码需要由开发者实现。
开发示例中涉及到的文件路径为“{project_dir}/src/app/add_custom_define_cms_verify”,文件目录结构如下。
├── cms_verify.c // 实现签名工具的代码
├── CMakeLists.txt // CMake构建文件
├── build_cms_verify.sh // 实现生成生成签名工具.so脚本件
└── build_signature.sh // 生成cms签名文件与crl吊销列表的脚本
└── replace_cms_so.sh // 替换签名工具的脚本
操作步骤
以下步骤中涉及到的代码样例仅作参考,无具体功能,不能直接使用。开发者需要根据操作步骤指导实现相关代码。
- 在cms_verify.c实现签名工具的代码。
int prepareUpgradeImageCms(const char *pathname_cms, const char *pathname_crl, const char *pathname_tar) { // pathname_cms:签名文件的绝对路径 // pathname_crl:吊销列表的绝对路径 // pathname_tar:待校验文件的绝对路径 return 0; }
- 在CMakeLists.txt中实现构建CMake的代码。
#设置CMake的最低版本 cmake_minimum_required(VERSION 3.16) #交叉编译选项 if (CROSSCOMPILE_ENABLED) set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR aarch64) set(target_arch aarch64-linux-gnu) set(CMAKE_C_COMPILER /usr/bin/aarch64-linux-gnu-gcc) set(CMAKE_CXX_COMPILER /usr/bin/aarch64-linux-gnu-g++) set(CMAKE_LIBRARY_ARCHITECTURE ${target_arch} CACHE STRING "" FORCE) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) endif() add_library(verify SHARED cms_verify.c)
- 在build_cms_verify.sh中实现生成签名工具.so文件的代码。
#!/bin/bash CUR_DIR=$(dirname "$(readlink -f "$0")") function main() { echo "build cms_verify lib..." if [ ! -d "${CUR_DIR}/build" ];then mkdir -p "${CUR_DIR}/build" else rm -rf "${CUR_DIR}/build"/* fi cd "${CUR_DIR}/build" # CMakeLists.txt需要与该示例脚本在同一级目录下运行 # 注意x86编译环境需要安装Arm64编译工具后,开启该选项 cmake -DCROSSCOMPILE_ENABLED=ON .. make echo "build cms_verify lib success" return 0 } main
- 在build_signature.sh实现生成软件包的cms签名文件与crl吊销列表的代码。
#!/bin/bash function signature() { # 生成cms签名文件 echo "build cms file success" # 生成crl吊销列表文件 echo "build crl file success" } signature
- 在replace_cms_so.sh将OM SDK软件包自带的签名工具({omsdk 根目录}/lib/libverify.so)文件替换为开发者生成的签名工具(libverify.so)。
#!/bin/bash CUR_DIR=$(dirname "$(readlink -f "$0")") OMSDK_TAR_PATH="${CUR_DIR}/../../../platform/omsdk" # 构建工程OM SDK软件包的解压目录 function replace_cms_verify() { # 将OM SDK自带的的签名工具(libverify.so)替换为开发者构建的签名工具(libverify.so) cp -f "${CUR_DIR}/build/libverify.so" "${OMSDK_TAR_PATH}/lib/libverify.so" cp -f "${CUR_DIR}/build/libverify.so" "${OMSDK_TAR_PATH}/software/RedfishServer/lib/c/libverify.so" } replace_cms_verify
- 在“product_dir/build/build.sh”中实现调用自定义签名的编译脚本。
# 添加自定义签名工具 # build_cms_verify.sh、replace_cms_so.sh具体实现可参考对应章节实现 # PRODUCT_SCRIPT_PATH="{product_dir}/src/app" bash "${PRODUCT_SCRIPT_PATH}/add_custom_define_cms_verify/build_cms_verify.sh" bash "${PRODUCT_SCRIPT_PATH}/add_custom_define_cms_verify/replace_cms_so.sh"
父主题: 构建软件包