blob: 186ebd864b6fc74ba7a13dcc3551895f4274aa94 [file] [log] [blame] [view]
# TPM Tool
The `tpm_tool` is a development only tool intended to test and diagnose issues
with Trusted Platform Module or CR50 devices. It works by launching itself
inside the /core/ffx-laboratory collection and attempting to connect to to the
first available `fuchsia.tpm.TpmDevice` in the `/dev/class/tpm/` directory.
This tool is still very much a work in progress that will be added to as the
TPM stack is built for Fuchsia. This is intended for non-production
enviroments only mostly to assist in the development of the TPM stack.
## Getting Started
If you are wanting to test the tool in an emulated environment first setup your
build to utilize `x64` which will bring in the `tpm-lpc` driver.
```
fx set core.x64 --with //src/security/tools/tpm_tool
```
Next you will want to setup `swtpm` setup to passthrough to QEMU. This will
launch an emulated TPM that will be accessible via the `swtpm-sock`.
```
mkdir /tmp/emulated_tpm
swtpm socket --tpmstate dir=/tmp/emulated_tpm --ctrl type=unixio,path=/tmp/emulated_tpm/swtpm-sock --log level=20 --tpm2
```
Then you will want to setup QEMU to passthrough the `swtpm-sock` into the
guest fuchsia image. This will present itself as a LPC device that the
`tpm-lpc` driver can connect to.
```
fx qemu -N -- -chardev socket,id=chrtpm,path=/tmp/emulated_tpm/swtpm-sock -tpmdev emulator,id=tpm0,chardev=chrtpm -device tpm-tis,tpmdev=tpm0 ~
```
Next you will want to make sure you are serving package for the device:
```
fx serve
```
Finally you can run `tpm_tool` with the following command:
```
ffx component run /core/ffx-laboratory:tpm fuchsia-pkg://fuchsia.com/tpm_tool#meta/tpm-tool.cm --recreate
```
You should be able to search for results by running:
```
fx log | grep tpm_tool
```