From f0084cd2a35cd5987ae5d0f1e827e28430cd27a4 Mon Sep 17 00:00:00 2001 From: Aidan Garske Date: Thu, 31 Jul 2025 14:38:03 -0700 Subject: [PATCH 1/7] Add tpm2-tools github workflow --- .github/workflows/tpm2-tools.yml | 103 +++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 .github/workflows/tpm2-tools.yml diff --git a/.github/workflows/tpm2-tools.yml b/.github/workflows/tpm2-tools.yml new file mode 100644 index 00000000..4200861d --- /dev/null +++ b/.github/workflows/tpm2-tools.yml @@ -0,0 +1,103 @@ +name: tpm2-tools Tests + +# START OF COMMON SECTION +on: + push: + branches: [ 'master', 'main', 'release/**' ] + pull_request: + branches: [ '*' ] + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true +# END OF COMMON SECTION + +jobs: + build_wolfprovider: + uses: ./.github/workflows/build-wolfprovider.yml + with: + wolfssl_ref: ${{ matrix.wolfssl_ref }} + openssl_ref: ${{ matrix.openssl_ref }} + strategy: + matrix: + wolfssl_ref: [ 'master', 'v5.8.0-stable' ] + openssl_ref: [ 'openssl-3.5.0' ] + + test_tpm2_tools: + runs-on: ubuntu-22.04 + needs: build_wolfprovider + # This should be a safe limit for the tests to run. + timeout-minutes: 20 + strategy: + fail-fast: false + matrix: + tpm2_tools_ref: [ '5.7' ] + wolfssl_ref: [ 'master', 'v5.8.0-stable' ] + openssl_ref: [ 'openssl-3.5.0' ] + force_fail: [ 'WOLFPROV_FORCE_FAIL=1', '' ] + steps: + - name: Checkout wolfProvider + uses: actions/checkout@v4 + with: + fetch-depth: 1 + + - name: Retrieving wolfSSL/wolfProvider from cache + uses: actions/cache/restore@v4 + id: wolfprov-cache + with: + path: | + wolfssl-install + wolfprov-install + openssl-install/lib64 + openssl-install/include + openssl-install/bin + + key: wolfprov-${{ matrix.wolfssl_ref }}-${{ matrix.openssl_ref }}-${{ github.sha }} + fail-on-cache-miss: true + + - name: Install tpm2-tools test dependencies + run: | + sudo apt-get update + sudo apt-get install -y git sudo autoconf expect vim dbus vim-common \ + autoconf-archive python3 python3-yaml python3-pip libefivar-dev \ + libcmocka-dev automake libtool pkg-config build-essential \ + libtss2-dev tpm2-abrmd swtpm tpm2-tools iproute2 + + - name: Download tpm2-tools + uses: actions/checkout@v4 + with: + repository: tpm2-software/tpm2-tools + ref: ${{ matrix.tpm2_tools_ref }} + path: tpm2-tools + fetch-depth: 1 + + - name: Build tpm2-tools + working-directory: tpm2-tools + run: | + ./bootstrap + ./configure \ + --prefix="$GITHUB_WORKSPACE/tpm2-tools-install" \ + --with-openssl="$GITHUB_WORKSPACE/openssl-install" \ + --enable-unit \ + make -j$(nproc) + + - name: Run tpm2-tools tests + working-directory: tpm2-tools + run: | + # Set up the environment for wolfProvider + source $GITHUB_WORKSPACE/scripts/env-setup + export ${{ matrix.force_fail }} + + # Run only unit tests and integration tests that dont need TPM2 hardware/simulator + make check TESTS="test/unit/test_string_bytes test/unit/test_files \ + test/unit/test_tpm2_header test/unit/test_tpm2_attr_util test/unit/test_tpm2_alg_util \ + test/unit/test_pcr test/unit/test_tpm2_auth_util test/unit/test_tpm2_errata \ + test/unit/test_tpm2_session test/unit/test_tpm2_policy test/unit/test_tpm2_util \ + test/unit/test_options test/unit/test_cc_util test/unit/test_tpm2_eventlog \ + test/unit/test_tpm2_eventlog_yaml test/unit/test_object \ + test/integration/tests/X509certutil test/integration/tests/toggle_options \ + test/integration/tests/rc_decode test/integration/tests/X509certutil" + + # Capture result + TEST_RESULT=$(grep -q "# FAIL: 2" tpm2-tools-test.log && echo "1" || echo "0") + $GITHUB_WORKSPACE/.github/scripts/check-workflow-result.sh $TEST_RESULT ${{ matrix.force_fail }} tpm2-tools From 829722a0685e6ccfe5b17253ecceab4638ea64bf Mon Sep 17 00:00:00 2001 From: Aidan Garske Date: Thu, 31 Jul 2025 15:10:35 -0700 Subject: [PATCH 2/7] Fix newline error --- .github/workflows/tpm2-tools.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tpm2-tools.yml b/.github/workflows/tpm2-tools.yml index 4200861d..f8840457 100644 --- a/.github/workflows/tpm2-tools.yml +++ b/.github/workflows/tpm2-tools.yml @@ -78,7 +78,7 @@ jobs: ./configure \ --prefix="$GITHUB_WORKSPACE/tpm2-tools-install" \ --with-openssl="$GITHUB_WORKSPACE/openssl-install" \ - --enable-unit \ + --enable-unit make -j$(nproc) - name: Run tpm2-tools tests From 164bf3f2bf8a7e98099309f496b6fbe495dba505 Mon Sep 17 00:00:00 2001 From: Aidan Garske Date: Thu, 31 Jul 2025 15:24:52 -0700 Subject: [PATCH 3/7] Add libcurl4-openssl-dev --- .github/workflows/tpm2-tools.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tpm2-tools.yml b/.github/workflows/tpm2-tools.yml index f8840457..8b134b87 100644 --- a/.github/workflows/tpm2-tools.yml +++ b/.github/workflows/tpm2-tools.yml @@ -61,7 +61,7 @@ jobs: sudo apt-get install -y git sudo autoconf expect vim dbus vim-common \ autoconf-archive python3 python3-yaml python3-pip libefivar-dev \ libcmocka-dev automake libtool pkg-config build-essential \ - libtss2-dev tpm2-abrmd swtpm tpm2-tools iproute2 + libtss2-dev tpm2-abrmd swtpm tpm2-tools iproute2 libcurl4-openssl-dev - name: Download tpm2-tools uses: actions/checkout@v4 From 96713d9b78f4ceee78df12cd69927d053ca54fac Mon Sep 17 00:00:00 2001 From: Aidan Garske Date: Thu, 31 Jul 2025 15:41:07 -0700 Subject: [PATCH 4/7] Add pandoc --- .github/workflows/tpm2-tools.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tpm2-tools.yml b/.github/workflows/tpm2-tools.yml index 8b134b87..22001a37 100644 --- a/.github/workflows/tpm2-tools.yml +++ b/.github/workflows/tpm2-tools.yml @@ -60,7 +60,7 @@ jobs: sudo apt-get update sudo apt-get install -y git sudo autoconf expect vim dbus vim-common \ autoconf-archive python3 python3-yaml python3-pip libefivar-dev \ - libcmocka-dev automake libtool pkg-config build-essential \ + libcmocka-dev automake libtool pkg-config build-essential pandoc \ libtss2-dev tpm2-abrmd swtpm tpm2-tools iproute2 libcurl4-openssl-dev - name: Download tpm2-tools From 0bee35fcd893744dd1fa4700e2da3e788b546db5 Mon Sep 17 00:00:00 2001 From: Aidan Garske Date: Thu, 31 Jul 2025 15:49:43 -0700 Subject: [PATCH 5/7] Tee to log to grep --- .github/workflows/tpm2-tools.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tpm2-tools.yml b/.github/workflows/tpm2-tools.yml index 22001a37..8a831db1 100644 --- a/.github/workflows/tpm2-tools.yml +++ b/.github/workflows/tpm2-tools.yml @@ -96,7 +96,7 @@ jobs: test/unit/test_options test/unit/test_cc_util test/unit/test_tpm2_eventlog \ test/unit/test_tpm2_eventlog_yaml test/unit/test_object \ test/integration/tests/X509certutil test/integration/tests/toggle_options \ - test/integration/tests/rc_decode test/integration/tests/X509certutil" + test/integration/tests/rc_decode test/integration/tests/X509certutil" 2>&1 | tee tpm2-tools-test.log # Capture result TEST_RESULT=$(grep -q "# FAIL: 2" tpm2-tools-test.log && echo "1" || echo "0") From 4f6bdce9c70c476c7c1bdf974a8ca6228c2151d5 Mon Sep 17 00:00:00 2001 From: Aidan Garske Date: Fri, 1 Aug 2025 11:47:36 -0700 Subject: [PATCH 6/7] Add exact test failures --- .github/workflows/tpm2-tools.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tpm2-tools.yml b/.github/workflows/tpm2-tools.yml index 8a831db1..faa00cd0 100644 --- a/.github/workflows/tpm2-tools.yml +++ b/.github/workflows/tpm2-tools.yml @@ -98,6 +98,6 @@ jobs: test/integration/tests/X509certutil test/integration/tests/toggle_options \ test/integration/tests/rc_decode test/integration/tests/X509certutil" 2>&1 | tee tpm2-tools-test.log - # Capture result + # Capture result - Fails test/unit/test_tpm2_policy and test/unit/test_tpm2_eventlog with WPFF TEST_RESULT=$(grep -q "# FAIL: 2" tpm2-tools-test.log && echo "1" || echo "0") $GITHUB_WORKSPACE/.github/scripts/check-workflow-result.sh $TEST_RESULT ${{ matrix.force_fail }} tpm2-tools From a6525aee4d4a0339eae7c69579b534cb674acc13 Mon Sep 17 00:00:00 2001 From: Aidan Garske Date: Fri, 1 Aug 2025 12:06:22 -0700 Subject: [PATCH 7/7] Check for pos passes --- .github/workflows/tpm2-tools.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tpm2-tools.yml b/.github/workflows/tpm2-tools.yml index faa00cd0..de17608f 100644 --- a/.github/workflows/tpm2-tools.yml +++ b/.github/workflows/tpm2-tools.yml @@ -99,5 +99,5 @@ jobs: test/integration/tests/rc_decode test/integration/tests/X509certutil" 2>&1 | tee tpm2-tools-test.log # Capture result - Fails test/unit/test_tpm2_policy and test/unit/test_tpm2_eventlog with WPFF - TEST_RESULT=$(grep -q "# FAIL: 2" tpm2-tools-test.log && echo "1" || echo "0") + TEST_RESULT=$(grep -q "# PASS: 20" tpm2-tools-test.log && echo "0" || echo "1") $GITHUB_WORKSPACE/.github/scripts/check-workflow-result.sh $TEST_RESULT ${{ matrix.force_fail }} tpm2-tools