You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
3.8 KiB
133 lines
3.8 KiB
diff --git a/home/salahx/Downloads/run-with-simulator b/home/salahx/Downloads/run-with-simulator
|
|
new file mode 100755
|
|
index 000000000000..e29b591f8d8b
|
|
--- /dev/null
|
|
+++ b/test/run-with-simulator
|
|
@@ -0,0 +1,126 @@
|
|
+#!/bin/bash
|
|
+# SPDX-License-Identifier: BSD-3-Clause
|
|
+
|
|
+SIM_PORT_DATA=2321
|
|
+SIM_PORT_CMD=$((SIM_PORT_DATA+1))
|
|
+
|
|
+# Run from top dir of this repository
|
|
+SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
|
+TOP_DIR="$(realpath "$SCRIPT_DIR/..")"
|
|
+cd "$TOP_DIR" || { echo "Error: cd to cd $TOP_DIR failed"; exit 1; }
|
|
+
|
|
+
|
|
+verify_simulator_is_running() {
|
|
+ local pid_tpm=$1
|
|
+
|
|
+ sleep 1
|
|
+ ss -lntp4 2> /dev/null | grep "${pid_tpm}" | grep -q "${SIM_PORT_DATA}"
|
|
+ ret_data=$?
|
|
+ ss -lntp4 2> /dev/null | grep "${pid_tpm}" | grep -q "${SIM_PORT_CMD}"
|
|
+ ret_cmd=$?
|
|
+ if [ $ret_data -eq 0 ] && [ $ret_cmd -eq 0 ]; then
|
|
+ echo "Simulator with PID ${pid_tpm} bound to port ${SIM_PORT_DATA} and ${SIM_PORT_CMD} successfully."
|
|
+ return 0
|
|
+ else
|
|
+ echo "Error: Port conflict? Cleaning up PID: ${pid_tpm}"
|
|
+ return 1
|
|
+ fi
|
|
+}
|
|
+
|
|
+build_tpm2_simulator_ibm() (
|
|
+ test -d ibmtpm && return
|
|
+ echo "---> compiling IBM tpm simulator"
|
|
+ mkdir ibmtpm
|
|
+ curl -Ls https://downloads.sourceforge.net/project/ibmswtpm2/ibmtpm1682.tar.gz | tar xz -C ibmtpm
|
|
+ cd ibmtpm/src && make
|
|
+)
|
|
+
|
|
+start_tpm2_simulator_ibm () {
|
|
+ build_tpm2_simulator_ibm || return 1
|
|
+
|
|
+ echo "---> starting IBM tpm simulator"
|
|
+ ibmtpm/src/tpm_server &
|
|
+ pid_tpm=$!
|
|
+ verify_simulator_is_running $pid_tpm
|
|
+}
|
|
+
|
|
+start_tpm2_simulator_swtpm () {
|
|
+ echo "---> starting swtpm simulator"
|
|
+ swtpm socket --tpm2 \
|
|
+ --server port=$SIM_PORT_DATA \
|
|
+ --ctrl type=tcp,port=$SIM_PORT_CMD \
|
|
+ --flags not-need-init \
|
|
+ --tpmstate dir="$PWD" \
|
|
+ --seccomp action=none &
|
|
+ pid_tpm=$!
|
|
+ verify_simulator_is_running $pid_tpm
|
|
+}
|
|
+
|
|
+start_dbusd () {
|
|
+ echo "---> starting dbus daemon"
|
|
+ dbus-daemon --session --print-address > /tmp/bus-socket-path.txt &
|
|
+ sleep 1
|
|
+ DBUS_SESSION_BUS_ADDRESS="$(tail -n1 /tmp/bus-socket-path.txt)"
|
|
+ export DBUS_SESSION_BUS_ADDRESS
|
|
+}
|
|
+
|
|
+start_tpm2_abrmd() {
|
|
+ local tabrmd_tcti=$1
|
|
+
|
|
+ echo "---> starting abrmd"
|
|
+ local tabrmd_name="com.intel.tss2.Tabrmd${SIM_PORT_DATA}"
|
|
+ tpm2-abrmd --session --dbus-name="${tabrmd_name}" --tcti "${tabrmd_tcti}:host=localhost,port=${SIM_PORT_DATA}" &
|
|
+ TCTI_ADDRESS="tabrmd:bus_name=${tabrmd_name},bus_type=session"
|
|
+ TPM2TOOLS_TCTI="$TCTI_ADDRESS"
|
|
+ TPM2OPENSSL_TCTI="$TCTI_ADDRESS"
|
|
+ export TPM2TOOLS_TCTI
|
|
+ export TPM2OPENSSL_TCTI
|
|
+ sleep 1
|
|
+# busctl --address="${DBUS_SESSION_BUS_ADDRESS}" list | grep "$tabrmd_name"
|
|
+}
|
|
+
|
|
+start_tpm2_sim_env() {
|
|
+ local sim_type=$1
|
|
+
|
|
+ start_dbusd
|
|
+
|
|
+ if [ "$sim_type" = "swtpm" ]; then
|
|
+ start_tpm2_simulator_swtpm || return 1
|
|
+ start_tpm2_abrmd swtpm || return 1
|
|
+ elif [ "$sim_type" = "ibm" ]; then
|
|
+ start_tpm2_simulator_ibm || return 1
|
|
+ start_tpm2_abrmd mssim || return 1
|
|
+ else
|
|
+ echo "invalid tpm simulator typ"
|
|
+ return 1
|
|
+ fi
|
|
+}
|
|
+
|
|
+make_check () {
|
|
+ echo "Running make check"
|
|
+ openssl version
|
|
+ tpm2_getcap properties-fixed | head -n 20
|
|
+ make check
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ pkill -P $$
|
|
+}
|
|
+trap cleanup EXIT
|
|
+
|
|
+build_tpm2_openssl() {
|
|
+ ./bootstrap
|
|
+ ./configure CC=gcc --enable-op-digest --enable-op-cipher
|
|
+ make
|
|
+}
|
|
+
|
|
+SIM_TYPE=${1:-swtpm}
|
|
+SKIP_BUILD=${2:-build}
|
|
+if [ "$SKIP_BUILD" = "skip-build" ]; then
|
|
+ echo "Skipping the build"
|
|
+else
|
|
+ build_tpm2_openssl || { echo "Compiling tpm2-openssl failed"; exit 1; }
|
|
+fi
|
|
+start_tpm2_sim_env "${SIM_TYPE}" || { echo "Starting tpm2 simulator failed ($SIM_TYPE)"; exit 1; }
|
|
+make_check || { echo "tpm2-openssl make check failed"; exit 1; }
|