wolfTPM/docs/SWTPM.md

1.8 KiB

Using wolfTPM with SWTPM

wolfTPM is to be able to interface with SW TPM interfaces defined by section D.3 of TPM-Rev-2.0-Part-4-Supporting-Routines-01.38-code

Using the socket connection for SWTPM is exclusive and not compatible with TIS or devtpm.

Only a subset of functionality is implemented to support testing of wolfTPM. The platform requests are not used by wolfTPM.

Two implementations were used in testing:

Building with SW TPM support

./configure --enable-swtpm
make

SWTPM simulator setup

ibmswtpm2

Checkout and Build

git clone https://github.com/kgoldman/ibmswtpm2.git
cd ibmswtpm2/src/
make

Running:

./tpm_server -rm

The rm switch is optional and remove the cache file NVChip. Alternately you can rm NVChip

swtpm

Build libtpms

git clone git@github.com:stefanberger/libtpms.git
(cd libtpms && ./autogen.sh --with-tpm2 --with-openssl --prefix=/usr && make install)

Build swtpm

git clone git@github.com:stefanberger/swtpm.git
(cd swtpm && ./autogen.sh && make install)

Note: On Mac OS X had to do the following first:

brew install openssl socat
pip3 install cryptography

export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib"
export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include"

# libtpms had to use --prefix=/usr/local

Running swtpm

mkdir -p /tmp/myvtpm
swtpm socket --tpmstate dir=/tmp/myvtpm --tpm2 --ctrl type=tcp,port=2322 --server type=tcp,port=2321 --flags not-need-init

Running examples

./examples/pcr/extend
./examples/wrap/wrap_test

See README.md for more examples