summary refs log tree commit diff
path: root/tpm2-sys
diff options
context:
space:
mode:
authorDavid Tolnay <dtolnay@chromium.org>2018-12-20 11:49:46 -0800
committerchrome-bot <chrome-bot@chromium.org>2019-01-24 07:43:30 -0800
commitde6b29ab9d1a90a56874e6b33d35b5bf077acbfc (patch)
treee513ca66f2c91366007925419ccf7a934a91b7c8 /tpm2-sys
parent5c8dae6ad7829b2db5317e0431d0ab2de5a9d725 (diff)
downloadcrosvm-de6b29ab9d1a90a56874e6b33d35b5bf077acbfc.tar
crosvm-de6b29ab9d1a90a56874e6b33d35b5bf077acbfc.tar.gz
crosvm-de6b29ab9d1a90a56874e6b33d35b5bf077acbfc.tar.bz2
crosvm-de6b29ab9d1a90a56874e6b33d35b5bf077acbfc.tar.lz
crosvm-de6b29ab9d1a90a56874e6b33d35b5bf077acbfc.tar.xz
crosvm-de6b29ab9d1a90a56874e6b33d35b5bf077acbfc.tar.zst
crosvm-de6b29ab9d1a90a56874e6b33d35b5bf077acbfc.zip
tpm: Virtio tpm device
This CL adds a "tpm" Cargo cfg to crosvm which enables a TPM device
backed by libtpm2 simulator.

Tested by running the following inside cros_sdk:

    LIBRARY_PATH=~/src/minijail LD_LIBRARY_PATH=~/src/minijail \
        cargo run --release \
        --features tpm \
        -- \
        run \
        -r rootfs.ext4 \
        --seccomp-policy-dir seccomp/x86_64/ \
        -p init=/bin/bash \
        -p panic=-1 \
        --disable-sandbox \
        vmlinux.bin

with a Linux image built from CL:1387655.

The TPM self test completes successfully with the following output:

    https://paste.googleplex.com/5996075978588160?raw

Justin's TPM playground runs with the following trace output.

    https://paste.googleplex.com/4909751007707136?raw

Design doc: go/vtpm-for-glinux

TEST=ran TPM playground program inside crosvm
TEST=local kokoro
BUG=chromium:911799

Change-Id: I2feb24a3e38cba91f62c6d2cd1f378de4dd03ecf
Reviewed-on: https://chromium-review.googlesource.com/1387624
Commit-Ready: David Tolnay <dtolnay@chromium.org>
Tested-by: David Tolnay <dtolnay@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Dylan Reid <dgreid@chromium.org>
Diffstat (limited to 'tpm2-sys')
-rw-r--r--tpm2-sys/Cargo.toml2
-rw-r--r--tpm2-sys/build.rs11
2 files changed, 7 insertions, 6 deletions
diff --git a/tpm2-sys/Cargo.toml b/tpm2-sys/Cargo.toml
index 0297bf0..12dc5ac 100644
--- a/tpm2-sys/Cargo.toml
+++ b/tpm2-sys/Cargo.toml
@@ -8,5 +8,3 @@ links = "tpm2"
 [build-dependencies]
 num_cpus = "*"
 pkg-config = "*"
-
-[workspace]
diff --git a/tpm2-sys/build.rs b/tpm2-sys/build.rs
index f1abd4a..604d936 100644
--- a/tpm2-sys/build.rs
+++ b/tpm2-sys/build.rs
@@ -8,10 +8,11 @@ use std::path::Path;
 use std::process::{self, Command};
 
 fn main() -> io::Result<()> {
-    println!("cargo:rustc-link-lib=ssl");
-    println!("cargo:rustc-link-lib=crypto");
-
-    if pkg_config::probe_library("libtpm2").is_ok() {
+    if pkg_config::Config::new()
+        .statik(true)
+        .probe("libtpm2")
+        .is_ok()
+    {
         // Use tpm2 package from the standard system location if available.
         return Ok(());
     }
@@ -44,5 +45,7 @@ fn main() -> io::Result<()> {
     let dir = env::var("CARGO_MANIFEST_DIR").unwrap();
     println!("cargo:rustc-link-search={}/libtpm2/build", dir);
     println!("cargo:rustc-link-lib=static=tpm2");
+    println!("cargo:rustc-link-lib=ssl");
+    println!("cargo:rustc-link-lib=crypto");
     Ok(())
 }