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.
110 lines
2.4 KiB
110 lines
2.4 KiB
# Copyright 1999-2023 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=8
|
|
|
|
inherit autotools
|
|
|
|
DESCRIPTION="OpenSSL Provider for TPM2 integration"
|
|
HOMEPAGE="https://github.com/tpm2-software/tpm2-openssl"
|
|
SRC_URI="https://github.com/tpm2-software/tpm2-openssl/releases/download/${PV}/${P}.tar.gz"
|
|
|
|
LICENSE="BSD"
|
|
SLOT="0/${PV}"
|
|
KEYWORDS="~amd64"
|
|
IUSE="test"
|
|
RESTRICT="!test? ( test )"
|
|
|
|
RDEPEND="
|
|
>=app-crypt/tpm2-tss-3.2.0:=
|
|
>=dev-libs/openssl-3:="
|
|
DEPEND="${RDEPEND}
|
|
test? (
|
|
app-crypt/swtpm[gnutls(+)]
|
|
app-crypt/tpm2-abrmd
|
|
app-crypt/tpm2-tools
|
|
)"
|
|
BDEPEND="
|
|
sys-devel/autoconf-archive
|
|
virtual/pkgconfig"
|
|
|
|
PATCHES=(
|
|
"${FILESDIR}/${P}-tests-include-base-provider-required-to-load-ecparam.patch"
|
|
"${FILESDIR}/${P}-build-Fix-undefined-references-when-using-slibtool.patch"
|
|
)
|
|
|
|
src_prepare() {
|
|
eautoreconf
|
|
default
|
|
}
|
|
|
|
src_test() {
|
|
dbus_run() {
|
|
(
|
|
# start isolated dbus session bus
|
|
local dbus_data=$(dbus-launch --sh-syntax) || exit
|
|
eval "${dbus_data}"
|
|
|
|
$@
|
|
ret=${?}
|
|
|
|
kill "${DBUS_SESSION_BUS_PID}"
|
|
exit "${ret}"
|
|
) || die
|
|
}
|
|
|
|
tpm2_run_with_emulator() {
|
|
local -x XDG_CONFIG_HOME="${T}"/.config/swtpm
|
|
"${BROOT}"/usr/share/swtpm/swtpm-create-user-config-files || die
|
|
|
|
mkdir -p "${XDG_CONFIG_HOME}"/mytpm1 || die
|
|
local swtpm_setup_args=(
|
|
--tpm2
|
|
--tpmstate "${XDG_CONFIG_HOME}"/mytpm1
|
|
--createek
|
|
--allow-signing
|
|
--decryption
|
|
--create-ek-cert
|
|
--create-platform-cert
|
|
--lock-nvram
|
|
--overwrite
|
|
--display
|
|
)
|
|
swtpm_setup "${swtpm_setup_args[@]}" || die
|
|
|
|
local swtpm_socket_args=(
|
|
--tpm2
|
|
--tpmstate dir="${XDG_CONFIG_HOME}"/mytpm1
|
|
--flags startup-clear
|
|
--ctrl type=unixio,path="${XDG_CONFIG_HOME}"/mytpm1/swtpm.socket.ctrl
|
|
--server type=unixio,path="${XDG_CONFIG_HOME}"/mytpm1/swtpm.socket
|
|
--pid file="${XDG_CONFIG_HOME}"/mytpm1/swtpm.pid
|
|
--daemon
|
|
)
|
|
swtpm socket "${swtpm_socket_args[@]}" || die
|
|
|
|
local tpm2_abrmd_args=(
|
|
--logger=stdout
|
|
--tcti=swtpm:path="${XDG_CONFIG_HOME}"/mytpm1/swtpm.socket
|
|
--session
|
|
--flush-all
|
|
)
|
|
tpm2-abrmd "${tpm2_abrmd_args[@]}" &
|
|
|
|
local -x TPM2OPENSSL_TCTI="tabrmd:bus_type=session"
|
|
local -x TPM2TOOLS_TCTI="tabrmd:bus_type=session"
|
|
|
|
$@ || die
|
|
|
|
# When swtpm dies, tmp2-abrmd will exit
|
|
kill $(< "${XDG_CONFIG_HOME}"/mytpm1/swtpm.pid) || die
|
|
}
|
|
|
|
dbus_run tpm2_run_with_emulator make check
|
|
}
|
|
|
|
src_install() {
|
|
default
|
|
find "${ED}" -iname '*.la' -delete || die
|
|
}
|