文档
注册

新增自定义签名

为了实现构建的软件包的安全性和完整性校验,开发者需要按照本章节指导,实现软件包的自定义签名。

本章节将介绍如何新增自定义签名的操作步骤,具体代码需要由开发者实现。

开发示例中涉及到的文件路径为“{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                  // 替换签名工具的脚本

操作步骤

以下步骤中涉及到的代码样例仅作参考,无具体功能,不能直接使用。开发者需要根据操作步骤指导实现相关代码。

  1. 在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;
    }
  2. 在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)
  3. 在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
  4. 在build_signature.sh实现生成软件包的cms签名文件与crl吊销列表的代码。
    #!/bin/bash
    function signature() {
        # 生成cms签名文件
        echo "build  cms file success"
    
        # 生成crl吊销列表文件
        echo "build crl file success"
    }
    signature
  5. 在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
  6. “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"
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词