Utilities for Intel TDX attestation collection and serving, plus infra automation to build and deploy a Google Cloud Confidential VM image.
app/– Rust binarytdx-utilsthat:- Collects attestation via
gotpmand prints pretty JSON - Runs an HTTP server at
/attest,/attest.bin, and/metrics - Optionally integrates process data when started with
--pid <PID>
- Collects attestation via
infra/– Packer template and scripts to build and deploy a GCP CVM (Intel TDX)- Packer installs
gotpm,op-rbuilder, and thetdx-utilsrelease artifact - Scripts to deploy a Spot TDX VM and run startup flavors (test/stage/prod)
- Packer installs
Requirements:
- Rust toolchain
gotpminstalled and available in PATH
Build the binary:
cd app
cargo build --releaseRun once and print JSON:
./target/release/tdx-utilsServe HTTP (pretty JSON page at /attest):
./target/release/tdx-utils serveIntegrate process data (PID):
./target/release/tdx-utils serve --pid 1234HTTP endpoints:
GET /attest?nonce=<hex>– HTML page with pretty JSON; nonce is hex up to 32 charsGET /attest.bin?nonce=<hex>– raw attestation protobuf bytesGET /metrics– OpenMetrics with process data details when--pidis set
For details, see app/README.md.
Build GCP CVM image with Packer (needs GCP WIF setup and GITHUB_TOKEN): see infra/README.md.
Deploy an instance from the latest image and run startup flavor:
export PROJECT_ID=<your-project>
export IMAGE_NAME=<gce-image-name>
export STARTUP_SCRIPT=infra/scripts/startup/stage.sh
./infra/scripts/deploy-cvm.sh- App build and release:
.github/workflows/app-build.yml - Packer build (image):
.github/workflows/packer-build.yml - CD Deploy CVM:
.github/workflows/cd-deploy.yml
These use Workload Identity Federation to access GCP.