Skip to contentSkip to conversation

Add swtpm to host packages

RFC PATCH In review Jarkko Sakkinen 3 participants 13 messages Mar 21, 2024 – Mar 26, 2024 4 messages not in the archive

lore
Share & tools
lore
#0 lore raw

cover Add swtpm to host packages

This work originates from my test sandbox for linux-tpmdd korg tree. I'm not sure how to refine this as mainline BuildRoot patch set so I just dump what I've used for long time with RFC stamp :-) Please instruct me and I'll try to follow the steps.

Cc Stefan Berger <[email protected]>
Cc Peter Korsgaard <[email protected]>

References:
- https://gitlab.com/jarkkojs/linux-tpmdd-test/-/blob/main/board/qemu/run-qemu.sh.in?ref_type=heads
- https://git.kernel.org/pub/scm/linux/kernel/git/jarkko/linux-tpmdd.git

Jarkko Sakkinen (2):
package/json-glib: add host build
package/swtpm: add host package

 package/json-glib/json-glib.mk                |  1 +
 package/libtpms/Config.in                     |  9 ++++
 package/libtpms/libtpms.hash                  |  1 +
 package/libtpms/libtpms.mk                    | 15 ++++++
 .../0001-comment-out-expect-and-socat.patch   | 46 +++++++++++++++++++
 package/swtpm/Config.host.in                  |  8 ++++
 package/swtpm/swtpm.hash                      |  1 +
 package/swtpm/swtpm.mk                        | 17 +++++++
 8 files changed, 98 insertions(+)
 create mode 100644 package/libtpms/Config.in
 create mode 100644 package/libtpms/libtpms.hash
 create mode 100644 package/libtpms/libtpms.mk
 create mode 100644 package/swtpm/0001-comment-out-expect-and-socat.patch
 create mode 100644 package/swtpm/Config.host.in
 create mode 100644 package/swtpm/swtpm.hash
 create mode 100644 package/swtpm/swtpm.mk

--
2.43.0

_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot

#1 lore raw

RFC PATCH 1/2 package/json-glib: add host build

---
 package/json-glib/json-glib.mk | 1 +
 1 file changed, 1 insertion(+)
package/json-glib/json-glib.mk +1 -0
index cd53f24cee..c42506993b 100644
@@ -34,3 +34,4 @@ endif
 JSON_GLIB_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)
 
 $(eval $(meson-package))
+$(eval $(host-meson-package))
Signature · 6 lines
2.43.0

_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
#2 lore raw

RFC PATCH 2/2 package/swtpm: add host package

In reply to Jarkko Sakkinen

Add swtpm and its dependency libtpms to host packages. These are useful for emulating TPM in QEMU environment.

---
 package/libtpms/Config.in                     |  9 ++++
 package/libtpms/libtpms.hash                  |  1 +
 package/libtpms/libtpms.mk                    | 15 ++++++
 .../0001-comment-out-expect-and-socat.patch   | 46 +++++++++++++++++++
 package/swtpm/Config.host.in                  |  8 ++++
 package/swtpm/swtpm.hash                      |  1 +
 package/swtpm/swtpm.mk                        | 17 +++++++
 7 files changed, 97 insertions(+)
 create mode 100644 package/libtpms/Config.in
 create mode 100644 package/libtpms/libtpms.hash
 create mode 100644 package/libtpms/libtpms.mk
 create mode 100644 package/swtpm/0001-comment-out-expect-and-socat.patch
 create mode 100644 package/swtpm/Config.host.in
 create mode 100644 package/swtpm/swtpm.hash
 create mode 100644 package/swtpm/swtpm.mk
package/libtpms/Config.in new file +9 -0
new file mode 100644
index 0000000000..7ef61cf53c
@@ -0,0 +1,9 @@
+config BR2_PACKAGE_LIBTPMS
+	bool "libtpms"
+        depends on BR2_USE_WCHAR # glib2
+        depends on BR2_TOOLCHAIN_HAS_THREADS # glib2
+        depends on BR2_USE_MMU # glib2
+	help
+	  TPM emulation library
+
+	  https://github.com/stefanberger/libtpms
package/libtpms/libtpms.hash new file +1 -0
new file mode 100644
index 0000000000..c31d824af6
@@ -0,0 +1 @@
+sha256  2807466f1563ebe45fdd12dd26e501e8a0c4fbb99c7c428fbb508789efd221c0  v0.9.6.tar.gz
package/libtpms/libtpms.mk new file +15 -0
new file mode 100644
index 0000000000..5b1151baff
@@ -0,0 +1,15 @@
+################################################################################
+#
+# libtpms
+#
+################################################################################
+
+LIBTPMS_VERSION = v0.9.6
+LIBTPMS_SOURCE = $(LIBTPMS_VERSION).tar.gz
+LIBTPMS_SITE = $(call github,stefanberger,libtpms,$(LIBTPMS_VERSION))
+LIBTPMS_LICENSE = BSD-3-Clause
+LIBTPMS_INSTALL_STAGING = YES
+LIBTPMS_AUTORECONF = YES
+
+$(eval $(autotools-package))
+$(eval $(host-autotools-package))
package/swtpm/0001-comment-out-expect-and-socat.patch new file +46 -0

46 lines not on this page · raw message

package/swtpm/Config.host.in new file +8 -0
new file mode 100644
index 0000000000..e77eea2aa5
@@ -0,0 +1,8 @@
+config BR2_PACKAGE_HOST_SWTPM
+	bool "swtpm-host"
+	depends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS # gobject-introspection
+	select BR2_PACKAGE_GOBJECT_INTROSPECTION
+	help
+	  Compiles SWTPM software TPM emulator for the host.
+
+	  https://github.com/stefanberger/swtpm
package/swtpm/swtpm.hash new file +1 -0
new file mode 100644
index 0000000000..882f06d7a5
@@ -0,0 +1 @@
+sha256 7bba52aa41090f75087034fac5fe8daed10c3e7e7234df7c9558849318927f41  v0.8.1.tar.gz
package/swtpm/swtpm.mk new file +17 -0
new file mode 100644
index 0000000000..79fbf1f420
@@ -0,0 +1,17 @@
+################################################################################
+#
+# swtpm
+#
+################################################################################
+
+SWTPM_VERSION = v0.8.1
+SWTPM_SOURCE = $(SWTPM_VERSION).tar.gz
+SWTPM_SITE = $(call github,stefanberger,swtpm,$(SWTPM_VERSION))
+SWTPM_LICENSE = BSD-3-Clause
+SWTPM_AUTORECONF = YES
+
+HOST_SWTPM_DEPENDENCIES = host-libtasn1 host-openssl host-pkgconf host-json-glib host-libtpms
+HOST_SWTPM_CONF_ENV = PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)"
+HOST_SWTPM_CONF_OPTS = --without-seccomp
+
+$(eval $(host-autotools-package))
Signature · 6 lines
2.43.0

_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot

A message that is not in the archive (sent off-list or not yet received): [email protected]

#4 lore raw

Re: [Buildroot] [PATCH RFC 2/2] package/swtpm: add host package

Quoted 58 lines · Stefan Berger
Quoted 33 lines · Jarkko Sakkinen

Add swtpm and its dependency libtpms to host packages. These are useful
for emulating TPM in QEMU environment.

---

+---
+ configure.ac | 16 ++++++++--------

+ 1 file changed, 8 insertions(+), 8 deletions(-)

package/swtpm/0001-comment-out-expect-and-socat.patch new file +6 -0
+
+diff --git a/configure.ac b/configure.ac
+index 49caf96..4acc763 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -394,20 +394,20 @@ AS_IF([test "x$enable_default_pcr_banks" !=

"x"],[
+ pcr_bank_checks
+ AC_SUBST([DEFAULT_PCR_BANKS])

package/swtpm/0001-comment-out-expect-and-socat.patch new file +13 -0
+
+-AC_PATH_PROG([EXPECT], expect)
+-if test "x$EXPECT" = "x"; then
+-	AC_MSG_ERROR([expect is required: expect package])
+-fi
++# AC_PATH_PROG([EXPECT], expect)
++# if test "x$EXPECT" = "x"; then
++# 	AC_MSG_ERROR([expect is required: expect package])
++# fi
+
+ AC_PATH_PROG([GAWK], gawk)
+ if test "x$GAWK" = "x"; then
+ 	AC_MSG_ERROR([gawk is required: gawk package])

package/swtpm/0001-comment-out-expect-and-socat.patch line 40

Quoted 10 lines
package/swtpm/0001-comment-out-expect-and-socat.patch new file +10 -0
+ fi
+
+-AC_PATH_PROG([SOCAT], socat)
+-if test "x$SOCAT" = "x"; then
+-	AC_MSG_ERROR([socat is required: socat package])
+-fi
++# AC_PATH_PROG([SOCAT], socat)
++# if test "x$SOCAT" = "x"; then
++# 	AC_MSG_ERROR([socat is required: socat package])
++# fi

socat and expect are used for running the test cases. When not running
the tests then an alternative to commenting the above out may be to do
the following before running autogen.sh:

tmpdir=$(mktemp -d) || exit 1
cp /usr/bin/true "${tmpdir}/socat"
cp /usr/bin/true "${tmpdir}/expect"

Quoted 5 lines

PATH=$PATH:${tmpdir}
./autogen --prefix=...
rm -rf "${tmpdir}"

     Stefan

... which would be more tedious than simply commenting them out because then you would have to tweak the build itself with manual steps instead of using autotools build command.

Up until this is fixed in the upstream project, we are better off simply commenting them out, as they are test dependency, not a build dependency for building e.g. initramfs image or some other type of OS image.

BR, Jarkko
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot

#5 lore raw

Re: [Buildroot] [PATCH RFC 2/2] package/swtpm: add host package

Quoted 66 lines · Jarkko Sakkinen
Quoted 59 lines · Stefan Berger
Quoted 34 lines · Jarkko Sakkinen

Add swtpm and its dependency libtpms to host packages. These are useful
for emulating TPM in QEMU environment.

---

+---
+ configure.ac | 16 ++++++++--------

+ 1 file changed, 8 insertions(+), 8 deletions(-)

package/swtpm/0001-comment-out-expect-and-socat.patch new file +6 -0
+
+diff --git a/configure.ac b/configure.ac
+index 49caf96..4acc763 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -394,20 +394,20 @@ AS_IF([test "x$enable_default_pcr_banks"

!=
"x"],[
+ pcr_bank_checks
+ AC_SUBST([DEFAULT_PCR_BANKS])

package/swtpm/0001-comment-out-expect-and-socat.patch new file +13 -0
+
+-AC_PATH_PROG([EXPECT], expect)
+-if test "x$EXPECT" = "x"; then
+-	AC_MSG_ERROR([expect is required: expect package])
+-fi
++# AC_PATH_PROG([EXPECT], expect)
++# if test "x$EXPECT" = "x"; then
++# 	AC_MSG_ERROR([expect is required: expect package])
++# fi
+
+ AC_PATH_PROG([GAWK], gawk)
+ if test "x$GAWK" = "x"; then
+ 	AC_MSG_ERROR([gawk is required: gawk package])

package/swtpm/0001-comment-out-expect-and-socat.patch line 40

Quoted 10 lines
package/swtpm/0001-comment-out-expect-and-socat.patch new file +10 -0
+ fi
+
+-AC_PATH_PROG([SOCAT], socat)
+-if test "x$SOCAT" = "x"; then
+-	AC_MSG_ERROR([socat is required: socat package])
+-fi
++# AC_PATH_PROG([SOCAT], socat)
++# if test "x$SOCAT" = "x"; then
++# 	AC_MSG_ERROR([socat is required: socat package])
++# fi

cat and expect are used for running the test cases. When not running
the tests then an alternative to commenting the above out may be to do
the following before running autogen.sh:

tmpdir=$(mktemp -d) || exit 1
cp /usr/bin/true "${tmpdir}/socat"
cp /usr/bin/true "${tmpdir}/expect"

Quoted 5 lines

PATH=$PATH:${tmpdir}
./autogen --prefix=...
rm -rf "${tmpdir}"

     Stefan

Quoted 8 lines

... which would be more tedious than simply commenting them out because then you would have to tweak the build itself with manual steps instead of using autotools build command.

Up until this is fixed in the upstream project, we are better off simply commenting them out, as they are test dependency, not a build dependency for building e.g. initramfs image or some other type of OS image.

And there's a lot of shenanigans related to the cross-compilation environment, which render out the suggestion anyway in that form.

It's a bug because neither socat nor expect are actua build dependencies, and the patch works around the bug.

BR, Jarkko
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot

#6 lore raw

Re: [Buildroot] [PATCH RFC 2/2] package/swtpm: add host package

Quoted 76 lines · Jarkko Sakkinen
Quoted 66 lines · Jarkko Sakkinen
Quoted 59 lines · Stefan Berger
Quoted 34 lines · Jarkko Sakkinen

Add swtpm and its dependency libtpms to host packages. These are useful
for emulating TPM in QEMU environment.

---

+---
+ configure.ac | 16 ++++++++--------

+ 1 file changed, 8 insertions(+), 8 deletions(-)

package/swtpm/0001-comment-out-expect-and-socat.patch new file +6 -0
+
+diff --git a/configure.ac b/configure.ac
+index 49caf96..4acc763 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -394,20 +394,20 @@ AS_IF([test "x$enable_default_pcr_banks"

!=
"x"],[
+ pcr_bank_checks
+ AC_SUBST([DEFAULT_PCR_BANKS])

package/swtpm/0001-comment-out-expect-and-socat.patch new file +13 -0
+
+-AC_PATH_PROG([EXPECT], expect)
+-if test "x$EXPECT" = "x"; then
+-	AC_MSG_ERROR([expect is required: expect package])
+-fi
++# AC_PATH_PROG([EXPECT], expect)
++# if test "x$EXPECT" = "x"; then
++# 	AC_MSG_ERROR([expect is required: expect package])
++# fi
+
+ AC_PATH_PROG([GAWK], gawk)
+ if test "x$GAWK" = "x"; then
+ 	AC_MSG_ERROR([gawk is required: gawk package])

package/swtpm/0001-comment-out-expect-and-socat.patch line 40

Quoted 10 lines
package/swtpm/0001-comment-out-expect-and-socat.patch new file +10 -0
+ fi
+
+-AC_PATH_PROG([SOCAT], socat)
+-if test "x$SOCAT" = "x"; then
+-	AC_MSG_ERROR([socat is required: socat package])
+-fi
++# AC_PATH_PROG([SOCAT], socat)
++# if test "x$SOCAT" = "x"; then
++# 	AC_MSG_ERROR([socat is required: socat package])
++# fi

cat and expect are used for running the test cases. When not running
the tests then an alternative to commenting the above out may be to do
the following before running autogen.sh:

tmpdir=$(mktemp -d) || exit 1
cp /usr/bin/true "${tmpdir}/socat"
cp /usr/bin/true "${tmpdir}/expect"

Quoted 5 lines

PATH=$PATH:${tmpdir}
./autogen --prefix=...
rm -rf "${tmpdir}"

     Stefan

Quoted 8 lines

... which would be more tedious than simply commenting them out because then you would have to tweak the build itself with manual steps instead of using autotools build command.

Up until this is fixed in the upstream project, we are better off simply commenting them out, as they are test dependency, not a build dependency for building e.g. initramfs image or some other type of OS image.

Quoted 5 lines

And there's a lot of shenanigans related to the cross-compilation environment, which render out the suggestion anyway in that form.

It's a bug because neither socat nor expect are actua build dependencies, and the patch works around the bug.

I put out an issue:

https://github.com/stefanberger/swtpm/issues/843

It's not a huge problem for BuildRoot as the build version is always fixed. We can update the version in BuildRoot and remove the patch when the time comes.

This is a bigger issue than swtpm in autotools projects. Most of them have test suites that are not compatible with cross-compilation but instead assume implicitly that the machine which builds is also the one that runs the tests, which does not hold when building full OS images.

BR, Jarkko
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot

A message that is not in the archive (sent off-list or not yet received): [email protected]

#8 lore raw

Re: [Buildroot] [PATCH RFC 2/2] package/swtpm: add host package

Quoted 86 lines · Stefan Berger
Quoted 83 lines · Jarkko Sakkinen
Quoted 81 lines · Jarkko Sakkinen
Quoted 66 lines · Jarkko Sakkinen
Quoted 59 lines · Stefan Berger
Quoted 34 lines · Jarkko Sakkinen

Add swtpm and its dependency libtpms to host packages. These are useful
for emulating TPM in QEMU environment.

---

+---
+ configure.ac | 16 ++++++++--------

+ 1 file changed, 8 insertions(+), 8 deletions(-)

package/swtpm/0001-comment-out-expect-and-socat.patch new file +6 -0
+
+diff --git a/configure.ac b/configure.ac
+index 49caf96..4acc763 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -394,20 +394,20 @@ AS_IF([test "x$enable_default_pcr_banks"

!=
"x"],[
+ pcr_bank_checks
+ AC_SUBST([DEFAULT_PCR_BANKS])

package/swtpm/0001-comment-out-expect-and-socat.patch new file +13 -0
+
+-AC_PATH_PROG([EXPECT], expect)
+-if test "x$EXPECT" = "x"; then
+-	AC_MSG_ERROR([expect is required: expect package])
+-fi
++# AC_PATH_PROG([EXPECT], expect)
++# if test "x$EXPECT" = "x"; then
++# 	AC_MSG_ERROR([expect is required: expect package])
++# fi
+
+ AC_PATH_PROG([GAWK], gawk)
+ if test "x$GAWK" = "x"; then
+ 	AC_MSG_ERROR([gawk is required: gawk package])

package/swtpm/0001-comment-out-expect-and-socat.patch line 40

Quoted 10 lines
package/swtpm/0001-comment-out-expect-and-socat.patch new file +10 -0
+ fi
+
+-AC_PATH_PROG([SOCAT], socat)
+-if test "x$SOCAT" = "x"; then
+-	AC_MSG_ERROR([socat is required: socat package])
+-fi
++# AC_PATH_PROG([SOCAT], socat)
++# if test "x$SOCAT" = "x"; then
++# 	AC_MSG_ERROR([socat is required: socat package])
++# fi

cat and expect are used for running the test cases. When not running
the tests then an alternative to commenting the above out may be to do
the following before running autogen.sh:

tmpdir=$(mktemp -d) || exit 1
cp /usr/bin/true "${tmpdir}/socat"
cp /usr/bin/true "${tmpdir}/expect"

Quoted 5 lines

PATH=$PATH:${tmpdir}
./autogen --prefix=...
rm -rf "${tmpdir}"

     Stefan

Quoted 8 lines

... which would be more tedious than simply commenting them out because then you would have to tweak the build itself with manual steps instead of using autotools build command.

Up until this is fixed in the upstream project, we are better off simply commenting them out, as they are test dependency, not a build dependency for building e.g. initramfs image or some other type of OS image.

And there's a lot of shenanigans related to the cross-compilation environment, which render out the suggestion anyway in that form.

It's a bug because neither socat nor expect are actua build dependencies, and the patch works around the bug.

Quoted 6 lines
Quoted 3 lines

I put out an issue:

https://github.com/stefanberger/swtpm/issues/843

This PR should help resolve the issue:

https://github.com/stefanberger/swtpm/pull/844

It does thanks!

As commented to the PR I was successfully able to run full TPM2 kselftest:

https://gitlab.com/jarkkojs/linux-tpmdd-test/-/commits/swtpm-fix

Possible to tag a version with the fix? Alternatively I can export your patch from your tree and include it to the next revision of this patch set.

BR, Jarkko
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot

A message that is not in the archive (sent off-list or not yet received): [email protected]

#10 lore raw

Re: [Buildroot] [PATCH RFC 2/2] package/swtpm: add host package

Quoted 99 lines · Stefan Berger
Quoted 96 lines · Jarkko Sakkinen
Quoted 86 lines · Stefan Berger
Quoted 83 lines · Jarkko Sakkinen
Quoted 81 lines · Jarkko Sakkinen
Quoted 66 lines · Jarkko Sakkinen
Quoted 59 lines · Stefan Berger
Quoted 34 lines · Jarkko Sakkinen

Add swtpm and its dependency libtpms to host packages. These are useful
for emulating TPM in QEMU environment.

---

+---
+ configure.ac | 16 ++++++++--------

+ 1 file changed, 8 insertions(+), 8 deletions(-)

(quoted diff) +6 -0
+
+diff --git a/configure.ac b/configure.ac
+index 49caf96..4acc763 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -394,20 +394,20 @@ AS_IF([test "x$enable_default_pcr_banks"

!=
"x"],[
+ pcr_bank_checks
+ AC_SUBST([DEFAULT_PCR_BANKS])

(quoted diff) +13 -0
+
+-AC_PATH_PROG([EXPECT], expect)
+-if test "x$EXPECT" = "x"; then
+-	AC_MSG_ERROR([expect is required: expect package])
+-fi
++# AC_PATH_PROG([EXPECT], expect)
++# if test "x$EXPECT" = "x"; then
++# 	AC_MSG_ERROR([expect is required: expect package])
++# fi
+
+ AC_PATH_PROG([GAWK], gawk)
+ if test "x$GAWK" = "x"; then
+ 	AC_MSG_ERROR([gawk is required: gawk package])

Review

Quoted 10 lines
(quoted diff) +10 -0
+ fi
+
+-AC_PATH_PROG([SOCAT], socat)
+-if test "x$SOCAT" = "x"; then
+-	AC_MSG_ERROR([socat is required: socat package])
+-fi
++# AC_PATH_PROG([SOCAT], socat)
++# if test "x$SOCAT" = "x"; then
++# 	AC_MSG_ERROR([socat is required: socat package])
++# fi

cat and expect are used for running the test cases. When not running
the tests then an alternative to commenting the above out may be to do
the following before running autogen.sh:

tmpdir=$(mktemp -d) || exit 1
cp /usr/bin/true "${tmpdir}/socat"
cp /usr/bin/true "${tmpdir}/expect"

Quoted 5 lines

PATH=$PATH:${tmpdir}
./autogen --prefix=...
rm -rf "${tmpdir}"

     Stefan

Quoted 8 lines

... which would be more tedious than simply commenting them out because then you would have to tweak the build itself with manual steps instead of using autotools build command.

Up until this is fixed in the upstream project, we are better off simply commenting them out, as they are test dependency, not a build dependency for building e.g. initramfs image or some other type of OS image.

And there's a lot of shenanigans related to the cross-compilation environment, which render out the suggestion anyway in that form.

It's a bug because neither socat nor expect are actua build dependencies, and the patch works around the bug.

Quoted 6 lines
Quoted 3 lines

I put out an issue:

https://github.com/stefanberger/swtpm/issues/843

This PR should help resolve the issue:

https://github.com/stefanberger/swtpm/pull/844

It does thanks!

Quoted 8 lines
Quoted 6 lines

As commented to the PR I was successfully able to run full TPM2 kselftest:

https://gitlab.com/jarkkojs/linux-tpmdd-test/-/commits/swtpm-fix

Possible to tag a version with the fix? Alternatively I can export

I'll create v0.8.2 with only this patch.

OK, cool, thanks!

BR, Jarkko
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot

A message that is not in the archive (sent off-list or not yet received): [email protected]

#12 lore raw

Re: [Buildroot] [PATCH RFC 2/2] package/swtpm: add host package

Quoted 11 lines · Stefan Berger
Quoted 6 lines · Jarkko Sakkinen
Quoted 2 lines · Stefan Berger

I'll create v0.8.2 with only this patch.

OK, cool, thanks!

I tagged it now.

I'll address the remarks from Arnout and bump the version, thanks.

BR, Jarkko
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot

#13 lore raw

Re: [Buildroot] [PATCH RFC 2/2] package/swtpm: add host package

In reply to Jarkko Sakkinen

Hi Jarkko.

Quoted 2 lines · Jarkko Sakkinen

Add swtpm and its dependency libtpms to host packages. These are useful for emulating TPM in QEMU environment.

I don't understand... Does it mean that you run host-swtpm next to host-qemu
and you somehow connect them so it gets exposed as a TPM2 device inside the qemu VM?

Quoted 7 lines
---
  package/libtpms/Config.in                     |  9 ++++
  package/libtpms/libtpms.hash                  |  1 +
  package/libtpms/libtpms.mk                    | 15 ++++++

Please split this in a separate patch for libtpms (so 3 patches in the series).

You also need package/Config.in to source package/libtpms/Config.in

Also, please run make check-package. There will undoubtedly be some coding
style issues.

Finally, please add yourself to the DEVELOPERS file for this package. This
way, you'll get an e-mail if the package fails in the autobuilders, or when a new version is released if the package is registered on release-monitoring.org. See https://nightly.buildroot.org/#DEVELOPERS

Quoted 2 lines
  .../0001-comment-out-expect-and-socat.patch   | 46 +++++++++++++++++++
  package/swtpm/Config.host.in                  |  8 ++++

You also need to add this to package/Config.in.host

Quoted 17 lines
  package/swtpm/swtpm.hash                      |  1 +
  package/swtpm/swtpm.mk                        | 17 +++++++
  7 files changed, 97 insertions(+)

create mode 100644 package/libtpms/Config.in
create mode 100644 package/libtpms/libtpms.hash
create mode 100644 package/libtpms/libtpms.mk
create mode 100644 package/swtpm/0001-comment-out-expect-and-socat.patch create mode 100644 package/swtpm/Config.host.in
create mode 100644 package/swtpm/swtpm.hash
create mode 100644 package/swtpm/swtpm.mk

package/libtpms/Config.in new file +0 -0
new file mode 100644
index 0000000000..7ef61cf53c

package/libtpms/Config.in line 5

Quoted 5 lines
package/libtpms/Config.in new file +5 -0
@@ -0,0 +1,9 @@
+config BR2_PACKAGE_LIBTPMS
+	bool "libtpms"
+        depends on BR2_USE_WCHAR # glib2
+        depends on BR2_TOOLCHAIN_HAS_THREADS # glib2
+        depends on BR2_USE_MMU # glib2

If you have those dependencies, I'd expect a corresponding `select
BR2_PACKAGE_GLIB2`. However, there isn't any dependency at all in the .mk file, so I guess this is in fact not needed.

package/libtpms/libtpms.hash line 1

Quoted 11 lines
package/libtpms/Config.in new file +4 -0
+	help
+	  TPM emulation library
+
+	  https://github.com/stefanberger/libtpms
package/libtpms/libtpms.hash new file +1 -0
new file mode 100644
index 0000000000..c31d824af6
@@ -0,0 +1 @@
+sha256  2807466f1563ebe45fdd12dd26e501e8a0c4fbb99c7c428fbb508789efd221c0  v0.9.6.tar.gz

Please make sure that the license file is also in the .hash file. You can
check this with make legal-info.

package/libtpms/libtpms.mk line 7

Quoted 13 lines
package/libtpms/libtpms.mk new file +7 -0
new file mode 100644
index 0000000000..5b1151baff
@@ -0,0 +1,15 @@
+################################################################################
+#
+# libtpms
+#
+################################################################################
+
+LIBTPMS_VERSION = v0.9.6

Drop the v from the version, otherwise release-monitoring and CPE/CVE checks
don't work. You can add the v below.

package/libtpms/libtpms.mk line 8

Quoted 1 line
package/libtpms/libtpms.mk new file +1 -0
+LIBTPMS_SOURCE = $(LIBTPMS_VERSION).tar.gz

Don't override LIBTPMS_SOURCE, there's no need for that, the default
(libtpms-0.9.6.tar.gz) is better. The github URL will still work. Note that the hash will change if you change the filename.

package/libtpms/libtpms.mk line 9

Quoted 1 line
package/libtpms/libtpms.mk new file +1 -0
+LIBTPMS_SITE = $(call github,stefanberger,libtpms,$(LIBTPMS_VERSION))

This is where the v should be added:

LIBTPMS_SITE = $(call github,stefanberger,libtpms,v$(LIBTPMS_VERSION))

package/libtpms/libtpms.mk line 10

Quoted 1 line
package/libtpms/libtpms.mk new file +1 -0
+LIBTPMS_LICENSE = BSD-3-Clause

It's actually BSD-4-Clause. And unfortunately, it also contains file which
seem to be covered with a modified BSD-2-Clause instead, but let's ignore that :-)

Please add the license file as well:

LIBTPMS_LICENSE_FILES = LICENSE

package/libtpms/libtpms.mk line 12

Quoted 2 lines
package/libtpms/libtpms.mk new file +2 -0
+LIBTPMS_INSTALL_STAGING = YES
+LIBTPMS_AUTORECONF = YES

You should add a comment explaining why autoreconf is needed - in this case,
because we get the source from git. It's also good to mention in the commit message that upstream doesn't create release tarballs that include the configure script.

package/swtpm/0001-comment-out-expect-and-socat.patch line 4

Quoted 13 lines
package/libtpms/libtpms.mk new file +3 -0
+
+$(eval $(autotools-package))
+$(eval $(host-autotools-package))
package/swtpm/0001-comment-out-expect-and-socat.patch new file +4 -0
new file mode 100644
index 0000000000..09dcc49a7b
@@ -0,0 +1,46 @@
+From 067c32ba93774b273de9af872b5587798dcabb15 Mon Sep 17 00:00:00 2001
+From: Jarkko Sakkinen <[email protected]>
+Date: Tue, 19 Dec 2023 05:21:20 +0200
+Subject: [PATCH] configure.ac: comment out "expect" and "socat"

Please replace this with the patch from PR 844 (and add --disable-tests). Or
wait until Stefan releases v0.8.2 (probably very soon).

Quoted 48 lines
package/swtpm/0001-comment-out-expect-and-socat.patch new file +42 -0
+
+Signed-off-by: Jarkko Sakkinen <[email protected]>
+---
+ configure.ac | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 49caf96..4acc763 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -394,20 +394,20 @@ AS_IF([test "x$enable_default_pcr_banks" != "x"],[
+ pcr_bank_checks
+ AC_SUBST([DEFAULT_PCR_BANKS])
+
+-AC_PATH_PROG([EXPECT], expect)
+-if test "x$EXPECT" = "x"; then
+-	AC_MSG_ERROR([expect is required: expect package])
+-fi
++# AC_PATH_PROG([EXPECT], expect)
++# if test "x$EXPECT" = "x"; then
++# 	AC_MSG_ERROR([expect is required: expect package])
++# fi
+
+ AC_PATH_PROG([GAWK], gawk)
+ if test "x$GAWK" = "x"; then
+ 	AC_MSG_ERROR([gawk is required: gawk package])
+ fi
+
+-AC_PATH_PROG([SOCAT], socat)
+-if test "x$SOCAT" = "x"; then
+-	AC_MSG_ERROR([socat is required: socat package])
+-fi
++# AC_PATH_PROG([SOCAT], socat)
++# if test "x$SOCAT" = "x"; then
++# 	AC_MSG_ERROR([socat is required: socat package])
++# fi
+
+ AC_PATH_PROG([BASE64], base64)
+ if test "x$BASE64" = "x"; then
+--
+2.40.1
+
package/swtpm/Config.host.in new file +0 -0
new file mode 100644
index 0000000000..e77eea2aa5

package/swtpm/Config.host.in line 2

Quoted 2 lines
package/swtpm/Config.host.in new file +2 -0
@@ -0,0 +1,8 @@
+config BR2_PACKAGE_HOST_SWTPM
+	bool "swtpm-host"

Should be "host swtpm"

package/swtpm/Config.host.in line 4

Quoted 2 lines
package/swtpm/Config.host.in new file +2 -0
+	depends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS # gobject-introspection
+	select BR2_PACKAGE_GOBJECT_INTROSPECTION

This is selecting the _target_ gobject-introspection, which makes no sense for
a host package.

package/swtpm/Config.host.in line 8

Quoted 4 lines
package/swtpm/Config.host.in new file +4 -0
+	help
+	  Compiles SWTPM software TPM emulator for the host.
+
+	  https://github.com/stefanberger/swtpm

We want to point to something like documentation, which in this case is the
wiki: https://github.com/stefanberger/swtpm/wiki

Quoted 14 lines
package/swtpm/swtpm.hash new file +1 -0
new file mode 100644
index 0000000000..882f06d7a5
@@ -0,0 +1 @@
+sha256 7bba52aa41090f75087034fac5fe8daed10c3e7e7234df7c9558849318927f41  v0.8.1.tar.gz
package/swtpm/swtpm.mk new file +1 -0
new file mode 100644
index 0000000000..79fbf1f420
@@ -0,0 +1,17 @@
+################################################################################

package/swtpm/swtpm.mk line 11

Quoted 10 lines
package/swtpm/swtpm.mk new file +10 -0
+#
+# swtpm
+#
+################################################################################
+
+SWTPM_VERSION = v0.8.1
+SWTPM_SOURCE = $(SWTPM_VERSION).tar.gz
+SWTPM_SITE = $(call github,stefanberger,swtpm,$(SWTPM_VERSION))
+SWTPM_LICENSE = BSD-3-Clause
+SWTPM_AUTORECONF = YES

Same comments as for libtpms for the above 5 lines.

package/swtpm/swtpm.mk line 13

Quoted 2 lines
package/swtpm/swtpm.mk new file +2 -0
+
+HOST_SWTPM_DEPENDENCIES = host-libtasn1 host-openssl host-pkgconf host-json-glib host-libtpms

Can you try inside a container (e.g. using utils/docker-run) if this is really
sufficient?

package/swtpm/swtpm.mk line 14

Quoted 1 line
package/swtpm/swtpm.mk new file +1 -0
+HOST_SWTPM_CONF_ENV = PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)"

This should already be part of the default configure environment, are you sure
it is needed?

Regards,
Arnout

package/swtpm/swtpm.mk line 17

Quoted 3 lines
package/swtpm/swtpm.mk new file +3 -0
+HOST_SWTPM_CONF_OPTS = --without-seccomp
+
+$(eval $(host-autotools-package))

_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot

#14 lore raw

Re: [Buildroot] [PATCH RFC 2/2] package/swtpm: add host package

Quoted 8 lines · Arnout Vandecappelle

Hi Jarkko.

Quoted 2 lines · Jarkko Sakkinen

Add swtpm and its dependency libtpms to host packages. These are useful for emulating TPM in QEMU environment.

I don't understand... Does it mean that you run host-swtpm next to host-qemu
and you somehow connect them so it gets exposed as a TPM2 device inside the qemu VM?

Yes:

https://gitlab.com/jarkkojs/linux-tpmdd-test/-/blob/main/board/qemu/run-qemu.sh.in?ref_type=heads

Quoted 13 lines
Quoted 8 lines
---
  package/libtpms/Config.in                     |  9 ++++
  package/libtpms/libtpms.hash                  |  1 +
  package/libtpms/libtpms.mk                    | 15 ++++++

Please split this in a separate patch for libtpms (so 3 patches in the series).

You also need package/Config.in to source package/libtpms/Config.in

Quoted 7 lines

Also, please run make check-package. There will undoubtedly be some coding
style issues.

Finally, please add yourself to the DEVELOPERS file for this package. This
way, you'll get an e-mail if the package fails in the autobuilders, or when a new version is released if the package is registered on release-monitoring.org. See https://nightly.buildroot.org/#DEVELOPERS

OK, got it. I'll follow the steps.

Yeah, these used to be lying in BR2_EXTERNAL and I was not exactly sure how to proceed so I thought that better not to over-engineer.

Quoted 5 lines
Quoted 3 lines
  .../0001-comment-out-expect-and-socat.patch   | 46 +++++++++++++++++++
  package/swtpm/Config.host.in                  |  8 ++++

You also need to add this to package/Config.in.host

+1

Quoted 11 lines
Quoted 11 lines
  package/swtpm/swtpm.hash                      |  1 +
  package/swtpm/swtpm.mk                        | 17 +++++++
  7 files changed, 97 insertions(+)

create mode 100644 package/libtpms/Config.in
create mode 100644 package/libtpms/libtpms.hash
create mode 100644 package/libtpms/libtpms.mk
create mode 100644 package/swtpm/0001-comment-out-expect-and-socat.patch create mode 100644 package/swtpm/Config.host.in
create mode 100644 package/swtpm/swtpm.hash
create mode 100644 package/swtpm/swtpm.mk

Quoted 15 lines

package/libtpms/Config.in line 5

Quoted 11 lines
package/libtpms/Config.in new file +5 -0
new file mode 100644
index 0000000000..7ef61cf53c
@@ -0,0 +1,9 @@
+config BR2_PACKAGE_LIBTPMS
+	bool "libtpms"
+        depends on BR2_USE_WCHAR # glib2
+        depends on BR2_TOOLCHAIN_HAS_THREADS # glib2
+        depends on BR2_USE_MMU # glib2

If you have those dependencies, I'd expect a corresponding `select
BR2_PACKAGE_GLIB2`. However, there isn't any dependency at all in the .mk file, so I guess this is in fact not needed.

+1

Quoted 15 lines

package/libtpms/libtpms.hash line 1

Quoted 12 lines
package/libtpms/Config.in new file +4 -0
+	help
+	  TPM emulation library
+
+	  https://github.com/stefanberger/libtpms
package/libtpms/libtpms.hash new file +1 -0
new file mode 100644
index 0000000000..c31d824af6
@@ -0,0 +1 @@
+sha256  2807466f1563ebe45fdd12dd26e501e8a0c4fbb99c7c428fbb508789efd221c0  v0.9.6.tar.gz

Please make sure that the license file is also in the .hash file. You can
check this with make legal-info.

+1

Quoted 17 lines
Quoted 7 lines
package/libtpms/libtpms.mk new file +0 -0
new file mode 100644
index 0000000000..5b1151baff

package/libtpms/libtpms.mk line 7

Quoted 7 lines
package/libtpms/libtpms.mk new file +7 -0
@@ -0,0 +1,15 @@
+################################################################################
+#
+# libtpms
+#
+################################################################################
+
+LIBTPMS_VERSION = v0.9.6

Drop the v from the version, otherwise release-monitoring and CPE/CVE checks
don't work. You can add the v below.

+1

Quoted 6 lines

package/libtpms/libtpms.mk line 8

Quoted 2 lines
package/libtpms/libtpms.mk new file +1 -0
+LIBTPMS_SOURCE = $(LIBTPMS_VERSION).tar.gz

Don't override LIBTPMS_SOURCE, there's no need for that, the default
(libtpms-0.9.6.tar.gz) is better. The github URL will still work. Note that the hash will change if you change the filename.

+1

Quoted 6 lines

package/libtpms/libtpms.mk line 9

Quoted 2 lines
package/libtpms/libtpms.mk new file +1 -0
+LIBTPMS_SITE = $(call github,stefanberger,libtpms,$(LIBTPMS_VERSION))

This is where the v should be added:

LIBTPMS_SITE = $(call github,stefanberger,libtpms,v$(LIBTPMS_VERSION))

+1

Quoted 9 lines

package/libtpms/libtpms.mk line 10

Quoted 2 lines
package/libtpms/libtpms.mk new file +1 -0
+LIBTPMS_LICENSE = BSD-3-Clause

It's actually BSD-4-Clause. And unfortunately, it also contains file which
seem to be covered with a modified BSD-2-Clause instead, but let's ignore that :-)

Please add the license file as well:

LIBTPMS_LICENSE_FILES = LICENSE

+1

Quoted 8 lines

package/libtpms/libtpms.mk line 12

Quoted 3 lines
package/libtpms/libtpms.mk new file +2 -0
+LIBTPMS_INSTALL_STAGING = YES
+LIBTPMS_AUTORECONF = YES

You should add a comment explaining why autoreconf is needed - in this case,
because we get the source from git. It's also good to mention in the commit message that upstream doesn't create release tarballs that include the configure script.

+1

Quoted 17 lines
Quoted 10 lines
package/libtpms/libtpms.mk new file +3 -0
+
+$(eval $(autotools-package))
+$(eval $(host-autotools-package))
package/swtpm/0001-comment-out-expect-and-socat.patch new file +0 -0
new file mode 100644
index 0000000000..09dcc49a7b

package/swtpm/0001-comment-out-expect-and-socat.patch line 4

Quoted 4 lines
package/swtpm/0001-comment-out-expect-and-socat.patch new file +4 -0
@@ -0,0 +1,46 @@
+From 067c32ba93774b273de9af872b5587798dcabb15 Mon Sep 17 00:00:00 2001
+From: Jarkko Sakkinen <[email protected]>
+Date: Tue, 19 Dec 2023 05:21:20 +0200
+Subject: [PATCH] configure.ac: comment out "expect" and "socat"

Please replace this with the patch from PR 844 (and add --disable-tests). Or
wait until Stefan releases v0.8.2 (probably very soon).

Yeah, this happened after I sent this (had a short discussion and I tested and ack'd the fix).

Anyway:

+1

Quoted 45 lines
Quoted 45 lines
package/swtpm/0001-comment-out-expect-and-socat.patch new file +42 -0
+
+Signed-off-by: Jarkko Sakkinen <[email protected]>
+---
+ configure.ac | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 49caf96..4acc763 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -394,20 +394,20 @@ AS_IF([test "x$enable_default_pcr_banks" != "x"],[
+ pcr_bank_checks
+ AC_SUBST([DEFAULT_PCR_BANKS])
+
+-AC_PATH_PROG([EXPECT], expect)
+-if test "x$EXPECT" = "x"; then
+-	AC_MSG_ERROR([expect is required: expect package])
+-fi
++# AC_PATH_PROG([EXPECT], expect)
++# if test "x$EXPECT" = "x"; then
++# 	AC_MSG_ERROR([expect is required: expect package])
++# fi
+
+ AC_PATH_PROG([GAWK], gawk)
+ if test "x$GAWK" = "x"; then
+ 	AC_MSG_ERROR([gawk is required: gawk package])
+ fi
+
+-AC_PATH_PROG([SOCAT], socat)
+-if test "x$SOCAT" = "x"; then
+-	AC_MSG_ERROR([socat is required: socat package])
+-fi
++# AC_PATH_PROG([SOCAT], socat)
++# if test "x$SOCAT" = "x"; then
++# 	AC_MSG_ERROR([socat is required: socat package])
++# fi
+
+ AC_PATH_PROG([BASE64], base64)
+ if test "x$BASE64" = "x"; then
+--
+2.40.1
+
package/swtpm/Config.host.in new file +0 -0
new file mode 100644
Quoted 8 lines

package/swtpm/Config.host.in line 2

Quoted 6 lines

index 0000000000..e77eea2aa5

package/swtpm/Config.host.in new file +2 -0
@@ -0,0 +1,8 @@
+config BR2_PACKAGE_HOST_SWTPM
+	bool "swtpm-host"

Should be "host swtpm"

+1

Quoted 6 lines

package/swtpm/Config.host.in line 4

Quoted 3 lines
package/swtpm/Config.host.in new file +2 -0
+	depends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS # gobject-introspection
+	select BR2_PACKAGE_GOBJECT_INTROSPECTION

This is selecting the _target_ gobject-introspection, which makes no sense for
a host package.

Hmm... do not want to say anything just yet because tbh cannot recall why it is there but I'll look into this.

Quoted 8 lines

package/swtpm/Config.host.in line 8

Quoted 5 lines
package/swtpm/Config.host.in new file +4 -0
+	help
+	  Compiles SWTPM software TPM emulator for the host.
+
+	  https://github.com/stefanberger/swtpm

We want to point to something like documentation, which in this case is the
wiki: https://github.com/stefanberger/swtpm/wiki

+1

Quoted 19 lines
Quoted 19 lines
package/swtpm/swtpm.hash new file +1 -0
new file mode 100644
index 0000000000..882f06d7a5
@@ -0,0 +1 @@
+sha256 7bba52aa41090f75087034fac5fe8daed10c3e7e7234df7c9558849318927f41  v0.8.1.tar.gz
package/swtpm/swtpm.mk new file +5 -0
new file mode 100644
index 0000000000..79fbf1f420
@@ -0,0 +1,17 @@
+################################################################################
+#
+# swtpm
+#
+################################################################################
Quoted 8 lines

package/swtpm/swtpm.mk line 11

Quoted 6 lines
package/swtpm/swtpm.mk new file +6 -0
+
+SWTPM_VERSION = v0.8.1
+SWTPM_SOURCE = $(SWTPM_VERSION).tar.gz
+SWTPM_SITE = $(call github,stefanberger,swtpm,$(SWTPM_VERSION))
+SWTPM_LICENSE = BSD-3-Clause
+SWTPM_AUTORECONF = YES

Same comments as for libtpms for the above 5 lines.

+1

Quoted 6 lines

package/swtpm/swtpm.mk line 13

Quoted 3 lines
package/swtpm/swtpm.mk new file +2 -0
+
+HOST_SWTPM_DEPENDENCIES = host-libtasn1 host-openssl host-pkgconf host-json-glib host-libtpms

Can you try inside a container (e.g. using utils/docker-run) if this is really
sufficient?

Does it work with podman?

Quoted 5 lines

package/swtpm/swtpm.mk line 14

Quoted 2 lines
package/swtpm/swtpm.mk new file +1 -0
+HOST_SWTPM_CONF_ENV = PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)"

This should already be part of the default configure environment, are you sure
it is needed?

Tbh, no I'm not sure :-) I'll try to remove it and see what happens!

Quoted 7 lines

Regards,
Arnout

package/swtpm/swtpm.mk line 17

Quoted 3 lines
package/swtpm/swtpm.mk new file +3 -0
+HOST_SWTPM_CONF_OPTS = --without-seccomp
+
+$(eval $(host-autotools-package))

OK, thanks for the throughout and sane remarks!

BR, Jarkko
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot

#15 lore raw

Re: [Buildroot] [PATCH RFC 2/2] package/swtpm: add host package

In reply to Arnout Vandecappelle via buildroot
Quoted 10 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Arnout" == Arnout Vandecappelle via buildroot <[email protected]> writes:

Hi Jarkko.

Quoted 2 lines · Jarkko Sakkinen

Add swtpm and its dependency libtpms to host packages. These are useful for emulating TPM in QEMU environment.

I don't understand... Does it mean that you run host-swtpm next to host-qemu and you somehow connect them so it gets exposed as a TPM2
device inside the qemu VM?

yes, swtpm listens on a unix socket and you can configure qemu to expose that to the VM with the tpm-tis driver:

https://www.qemu.org/docs/master/specs/tpm.html

Quite handy for doing TPM stuff (E.G. CI) without having to mess with real HW.

Signature · 5 lines
Bye, Peter Korsgaard
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
#16 lore raw

Re: [Buildroot] [PATCH RFC 2/2] package/swtpm: add host package

Quoted 11 lines · Peter Korsgaard
Quoted 10 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Arnout" == Arnout Vandecappelle via buildroot <[email protected]> writes:

Hi Jarkko.

Quoted 2 lines · Jarkko Sakkinen

Add swtpm and its dependency libtpms to host packages. These are useful for emulating TPM in QEMU environment.

I don't understand... Does it mean that you run host-swtpm next to host-qemu and you somehow connect them so it gets exposed as a TPM2
device inside the qemu VM?

Quoted 7 lines

yes, swtpm listens on a unix socket and you can configure qemu to expose that to the VM with the tpm-tis driver:

https://www.qemu.org/docs/master/specs/tpm.html

Quite handy for doing TPM stuff (E.G. CI) without having to mess with real HW.

Yeah, for instance Linux based operating systems have started to use TPM2 chips for encrypted boot. And it is pretty generic passive smart card like chip so you have bunch of ways to realize that. BuildRoot is a great tool for prototyping such things.

And I don't see it totally unimaginable that someone would might want to do similar e.g. in a home router some day.

BR, Jarkko
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot