Skip to content

Commit 63702b2

Browse files
authored
Merge pull request #44 from gasbytes/tmp2-tools
TPM2-tools workflows
2 parents a980daa + d80d9c6 commit 63702b2

1 file changed

Lines changed: 154 additions & 0 deletions

File tree

.github/workflows/tpm2-tools.yml

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
name: tpm2-tools • wolfSSL / GnuTLS CI
2+
3+
on:
4+
push:
5+
branches: [ master ]
6+
pull_request:
7+
branches: [ '*' ]
8+
concurrency:
9+
group: ${{ github.workflow }}-${{ github.ref }}
10+
cancel-in-progress: true
11+
12+
jobs:
13+
tpm2-wolfssl-gnutls-integration:
14+
runs-on: ubuntu-22.04
15+
timeout-minutes: 60
16+
strategy:
17+
matrix:
18+
tpm2_tools_version: [master, "5.7"]
19+
fail-fast: false
20+
name: TPM2 wolfSSL/GnuTLS Integration (tpm2-tools ${{ matrix.tpm2_tools_version }})
21+
22+
steps:
23+
- name: Checkout current repository
24+
uses: actions/checkout@v4
25+
with:
26+
fetch-depth: 0
27+
28+
- name: Install build dependencies
29+
run: |
30+
sudo apt-get update -qq
31+
sudo apt-get install --yes --no-install-recommends \
32+
autoconf automake libtool m4 pkg-config build-essential git \
33+
meson ninja-build gettext clang gperf gnulib autopoint \
34+
gtk-doc-tools nettle-dev libtasn1-bin libtasn1-6-dev \
35+
libunistring-dev libp11-kit-dev libunbound-dev bison python3-yaml \
36+
libcurl4-openssl-dev libdbus-1-dev libcmocka-dev expect xxd pandoc \
37+
libssl-dev libgmp-dev libjson-c-dev libtss2-dev swtpm autoconf-archive
38+
39+
- name: Build wolfSSL, wrapper and GnuTLS
40+
run: |
41+
GNUTLS_INSTALL=/opt/gnutls WOLFSSL_INSTALL=/opt/wolfssl ./setup.sh
42+
43+
- name: Check setup.sh output directories
44+
run: |
45+
echo "Check for wolfSSL installation..."
46+
if [ ! -d /opt/wolfssl ]; then
47+
echo "/opt/wolfssl not found after setup"
48+
exit 1
49+
fi
50+
echo "Check for GnuTLS installation..."
51+
if [ ! -d /opt/gnutls ]; then
52+
echo "/opt/gnutls not found after setup"
53+
exit 1
54+
fi
55+
echo "Check for wrapper installation..."
56+
if [ ! -d /opt/wolfssl-gnutls-wrapper/lib ]; then
57+
echo "/opt/wolfssl-gnutls-wrapper/lib not found after setup"
58+
exit 1
59+
fi
60+
61+
- name: Build curl (GnuTLS backend)
62+
run: |
63+
export MAKEFLAGS="-j$(nproc)"
64+
git clone --branch curl-8_4_0 https://github.com/curl/curl
65+
cd curl
66+
autoreconf -fi
67+
./configure --with-gnutls=/opt/gnutls --prefix=/usr/local
68+
make
69+
sudo make install
70+
sudo ldconfig
71+
72+
- name: Build tpm2-tss
73+
run: |
74+
export MAKEFLAGS="-j$(nproc)"
75+
git clone https://github.com/tpm2-software/tpm2-tss
76+
cd tpm2-tss
77+
git submodule update --init --recursive
78+
./bootstrap
79+
export PKG_CONFIG_PATH=/opt/gnutls/lib/pkgconfig:$PKG_CONFIG_PATH
80+
export CPPFLAGS="-I/opt/gnutls/include $CPPFLAGS"
81+
export LDFLAGS="-L/opt/gnutls/lib -Wl,-rpath,/opt/gnutls/lib $LDFLAGS"
82+
./configure --prefix=/usr/local --disable-hardening
83+
make
84+
sudo make install
85+
sudo ldconfig
86+
87+
- name: Build tpm2-abrmd
88+
run: |
89+
export MAKEFLAGS="-j$(nproc)"
90+
git clone https://github.com/tpm2-software/tpm2-abrmd
91+
cd tpm2-abrmd
92+
./bootstrap
93+
export PKG_CONFIG_PATH=/opt/gnutls/lib/pkgconfig:$PKG_CONFIG_PATH
94+
export CPPFLAGS="-I/opt/gnutls/include $CPPFLAGS"
95+
export LDFLAGS="-L/opt/gnutls/lib -Wl,-rpath,/opt/gnutls/lib $LDFLAGS"
96+
./configure --prefix=/usr/local \
97+
--with-dbuspolicydir=/etc/dbus-1/system.d \
98+
--with-systemdsystemunitdir=/lib/systemd/system
99+
make
100+
sudo make install
101+
sudo ldconfig
102+
103+
- name: Build IBM swtpm2 simulator
104+
run: |
105+
git clone https://github.com/kgoldman/ibmswtpm2.git
106+
make -C ibmswtpm2/src -j"$(nproc)"
107+
sudo install -m755 ibmswtpm2/src/tpm_server /usr/local/bin
108+
echo "/usr/local/bin" >> $GITHUB_PATH
109+
110+
- name: Build tpm2-tools
111+
run: |
112+
export MAKEFLAGS="-j$(nproc)"
113+
git clone https://github.com/tpm2-software/tpm2-tools
114+
cd tpm2-tools
115+
116+
# Checkout the appropriate version
117+
if [ "${{ matrix.tpm2_tools_version }}" != "master" ]; then
118+
echo "Checking out tag ${{ matrix.tpm2_tools_version }}"
119+
git checkout ${{ matrix.tpm2_tools_version }}
120+
else
121+
echo "Using master branch"
122+
fi
123+
124+
./bootstrap
125+
export PKG_CONFIG_PATH=/opt/gnutls/lib/pkgconfig:$PKG_CONFIG_PATH
126+
export CPPFLAGS="-I/opt/gnutls/include $CPPFLAGS"
127+
export LDFLAGS="-L/opt/gnutls/lib -Wl,-rpath,/opt/gnutls/lib $LDFLAGS"
128+
./configure --prefix=/usr/local --enable-unit=abrmd
129+
make
130+
sudo make install
131+
sudo ldconfig
132+
133+
- name: Verify linkage
134+
run: |
135+
for bin in /usr/local/bin/tpm2_getcap /usr/local/bin/tss2 /usr/local/lib/libtss2-fapi.so; do
136+
echo "::group::ldd $bin"
137+
ldd "$bin" | grep -E "lib(curl|gnutls)"
138+
echo "::endgroup::"
139+
ldd "$bin" | grep -q "libcurl.so.4 => /usr/local/lib/libcurl.so.4" &&
140+
ldd "$bin" | grep -q "libgnutls.so.30 => /opt/gnutls/lib/libgnutls.so.30" ||
141+
{ echo "❌ Wrong linkage detected in $bin"; exit 1; }
142+
done
143+
144+
- name: Run complete test-suite
145+
run: |
146+
cd tpm2-tools
147+
export PKG_CONFIG_PATH=/opt/gnutls/lib/pkgconfig:$PKG_CONFIG_PATH
148+
export CPPFLAGS="-I/opt/gnutls/include $CPPFLAGS"
149+
export LDFLAGS="-L/opt/gnutls/lib -Wl,-rpath,/opt/gnutls/lib $LDFLAGS"
150+
export GNUTLS_DEBUG_LEVEL=5
151+
export WGW_LOGGING=1
152+
export TEST_REGENERATE_OUTPUT=1
153+
154+
make check

0 commit comments

Comments
 (0)