# xtee-rust-sdk **Repository Path**: openkylin/xtee-rust-sdk ## Basic Information - **Project Name**: xtee-rust-sdk - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2026-04-13 - **Last Updated**: 2026-04-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # xtee-rust-sdk `xtee-rust-sdk` 是 xTEE 的 Rust SDK 仓库,包含 TA/CA 开发所需的示例与组件。 ## 仓库内容 - `examples/hello-world`:最小化 TA / 宿主(`host`)示例 - `xtee-utee`:TA 侧运行时与接口 ## 运行说明 `vsock-manager` 的实际运行与部署不在本仓库内完成,需要在 `x-kernel` 环境中操作。 在 `x-kernel` 环境中请按顺序启动: 1. 先运行 `vsock-manager` 2. 再运行 TA ## TA 编译后签名(xtee-sdk-cli) 本仓库使用 `xtee-sdk-cli` 在 TA 编译完成后执行签名,不在 `build.rs` 中做后置签名动作。 ### tasign 安装说明 - 生产环境(使用 BJCA 证书): 安装 tasign ```bash # 编译链接时给出 BJCA 库目录(包含 libsvscc.so) export BJCA_LIB_DIR=your-bjca-lib-path export BJCA_LIB_NAME=svscc # 运行时动态库搜索路径 export LD_LIBRARY_PATH=/data/work/x1/xtee-bjca:$LD_LIBRARY_PATH cargo install tasign --features bjca --force ``` 安装 xtee-sdk-cli ```bash cargo install xtee-sdk-cli --force ``` - 测试环境(使用 TEST 证书): ```bash cargo install tasign --force ``` - 在 examples 目录执行: `make all` - 在仓库根目录执行: - `cargo run -p xtee-sdk-cli -- build-and-sign-ta --manifest-path examples/hello-world/ta/Cargo.toml` - 在 `examples/hello-world` 目录执行(使用默认 `ta/Cargo.toml`): - `cargo run -p xtee-sdk-cli -- build-and-sign-ta` - `xtee-sdk-cli` 会按 TA target 自动选择 `OBJCOPY=-objcopy`(如 `aarch64-linux-musl-objcopy`、`x86_64-linux-musl-objcopy`),请确保对应工具在 `PATH` 中。 - 默认输出路径:若不传 `--out`,签名产物输出到输入 ELF 同目录(`/.ta`)。 - 链模式通过受限枚举参数指定: - `--chain-mode ca-intermediate-leaf`(默认) - `--chain-mode ca-leaf` ### 指定 target 编译并签名 可以在执行时覆盖 target: ```bash cd /data/work/x1/xtee-rust-sdk/examples/hello-world make all CARGO_BUILD_TARGET=x86_64-unknown-linux-musl ``` 或只跑签名流程: ```bash make ta_sign CARGO_BUILD_TARGET=x86_64-unknown-linux-musl ``` 也可以直接调用 `xtee-sdk-cli` 并显式传 `--target`: ```bash cargo run -p xtee-sdk-cli -- build-and-sign-ta \ --manifest-path examples/hello-world/ta/Cargo.toml \ --target x86_64-unknown-linux-musl ``` ## TA 实现原理、`xtee_ta!` 用法、`TaConfig::emit_main_entry` 与 `user_ta_header.rs` 说明见 **[docs/ta.md](docs/ta.md)**。 ### TA 的 `main.rs` 里如何定义 `main` 默认推荐保持 `emit_main_entry=true`,此时 `main.rs` 不要再手写 `fn main`,只需在 `xtee_ta! { ... }` 之后、文件末尾 `include!(concat!(env!("OUT_DIR"), "/user_ta_header.rs"))`,由生成入口调用 `TAManager::new(Ta, uuid).run_ta()`。如果要自定义初始化或错误处理,请在 `build.rs` 将 `TaConfig` 设为 `emit_main_entry(false)`,再在 `main.rs` 自己实现 `fn main`;两种方式不要同时启用。