# travodds-shangmi-plugin **Repository Path**: agiros/travodds-shangmi-plugin ## Basic Information - **Project Name**: travodds-shangmi-plugin - **Description**: travodds国家商用密码加密插件 - **Primary Language**: C++ - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2026-01-13 - **Last Updated**: 2026-01-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # travoDDS国家商用密码加密插件 本项目为基于OMG DDS Security 1.2规范的travoDDS安全框架实现的国家商用密码算法(SM2/SM3/SM4等)安全插件,支持DDS安全认证、访问控制、加密、数据完整性等安全功能。 ## 主要特性 - 遵循DDS Security 1.2标准 - 插件化支持商密算法(SM2/SM3/SM4) - 与travoDDS安全框架集成 - 支持DDS安全认证、访问控制、加密、数据完整性等安全功能 ## 目录结构 ``` shangmi/include/ # 插件接口与类型定义 shangmi/src/ # 插件实现 shangmi/src/accesscontrol/ # 访问控制插件实现 shangmi/src/auth/ # 身份认证插件实现 shangmi/src/cryptography/ # 加密插件实现 shangmi/test/ # 单元测试 shangmi/docs/ # 文档 ``` ## 准备工作 需要安装以下依赖的程序、模块或库 - ubuntu22.04 ```bash sudo apt install cmake sudo apt install build-essential sudo apt install libasio-dev sudo apt install libgtest-dev sudo apt install libtinyxml2-dev # 安装 OpenSSL 3.2+ (必需,用于支持 SM4-GCM) # Ubuntu 22.04 默认 OpenSSL 版本较低,需手动编译安装 wget https://github.com/openssl/openssl/releases/download/openssl-3.2.3/openssl-3.2.3.tar.gz tar -zxvf openssl-3.2.3.tar.gz cd openssl-3.2.3 # 配置为静态库安装到 /opt/openssl-3.2-static-modules (项目CMake默认搜索路径) ./config --prefix=/opt/openssl-3.2-static-modules --openssldir=/opt/openssl-3.2-static-modules no-shared make -j$(nproc) sudo make install # 覆盖率测试需要安装 sudo apt install lcov ``` - openEuler24.03 ```bash sudo yum install cmake sudo yum install gcc gcc-c++ make sudo yum install asio-devel sudo yum install gtest-devel sudo yum install tinyxml2-devel # 覆盖率测试需要安装 sudo apt install lcov ``` ## 快速开始 1. 安装依赖 参考上述“准备工作”章节安装环境依赖。 2. 配置CMake并编译 ```bash mkdir -p build && cd build cmake .. cmake --build . -j$(nproc) ``` 3. 参考`test/`目录进行代码测试 ```bash ctest --output-on-failure ``` 4. 运行hello_world示例 请参考 `example/cpp/hello_world/helloworld.sh` 脚本运行hello_world示例。 ```bash # 回到项目根目录 cd .. mkdir run && cd run cp ../shangmi/example/cpp/hello_world/helloworld.sh ./ bash ./helloworld.sh ``` ## 单元测试 ```bash mkdir -p build && cd build cmake .. cmake --build . make test ``` ## 覆盖率测试 ```bash # 使用 COVERAGE=ON 打开覆盖率,重新编译代码。 cmake -DCOVERAGE=ON .. # 在build目录下可以执行如下一条龙脚本: rm -rf ../build/* ; cmake -DCOVERAGE=ON .. ; cmake --build . ; make test # 编译完成后,进行覆盖率数据初始化、运行测试、生成覆盖率数据及报表。一条龙脚本如下 $$$ bash << EOF # 创建原始代码覆盖率数据 lcov -d . -z lcov -d . -b $(dirname `pwd`) --no-external --initial -c -o initCoverage.info # 运行代码或执行测试 ctest # 生成新代码覆盖率数据 lcov -d . -b $(dirname `pwd`) --no-external -c -o testCoverage.info # 生成代码覆盖率报表(html格式) mkdir -p html genhtml -o html --prefix=$(dirname `pwd`) initCoverage.info testCoverage.info EOF # $$$ 一条龙脚本结束 ``` ## 参考文档 - [OMG DDS Security 1.2](https://www.omg.org/spec/DDS-SECURITY/1.2)