mirror of
https://git.code.sf.net/p/linux-ima/ima-evm-utils
synced 2025-04-28 06:33:36 +02:00
Merge branch 'docker-travis'
Support docker based travis to test on different distro releases.
This commit is contained in:
commit
7fd8c13b64
78
.travis.yml
Normal file
78
.travis.yml
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
dist: bionic
|
||||||
|
language: C
|
||||||
|
services:
|
||||||
|
- docker
|
||||||
|
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
# 32 bit build
|
||||||
|
- os: linux
|
||||||
|
env: DISTRO=debian:stable VARIANT=i386 ARCH=i386 TSS=tpm2-tss
|
||||||
|
compiler: gcc
|
||||||
|
|
||||||
|
# cross compilation builds
|
||||||
|
- os: linux
|
||||||
|
env: DISTRO=debian:stable VARIANT=cross-compile ARCH=ppc64el TSS=ibmtss
|
||||||
|
compiler: powerpc64le-linux-gnu-gcc
|
||||||
|
|
||||||
|
- os: linux
|
||||||
|
env: DISTRO=debian:stable VARIANT=cross-compile ARCH=arm64 TSS=tpm2-tss
|
||||||
|
compiler: aarch64-linux-gnu-gcc
|
||||||
|
|
||||||
|
- os: linux
|
||||||
|
env: DISTRO=debian:stable VARIANT=cross-compile ARCH=s390x TSS=ibmtss
|
||||||
|
compiler: s390x-linux-gnu-gcc
|
||||||
|
|
||||||
|
# musl
|
||||||
|
- os: linux
|
||||||
|
env: DISTRO=alpine:latest TSS=tpm2-tss
|
||||||
|
compiler: gcc
|
||||||
|
|
||||||
|
# glibc (gcc/clang)
|
||||||
|
- os: linux
|
||||||
|
env: DISTRO=opensuse/tumbleweed TSS=ibmtss
|
||||||
|
compiler: clang
|
||||||
|
|
||||||
|
- os: linux
|
||||||
|
env: DISTRO=opensuse/leap TSS=tpm2-tss
|
||||||
|
compiler: gcc
|
||||||
|
|
||||||
|
- os: linux
|
||||||
|
env: DISTRO=ubuntu:eoan TSS=ibmtss
|
||||||
|
compiler: gcc
|
||||||
|
|
||||||
|
- os: linux
|
||||||
|
env: DISTRO=ubuntu:xenial TSS=tpm2-tss
|
||||||
|
compiler: clang
|
||||||
|
|
||||||
|
- os: linux
|
||||||
|
env: DISTRO=fedora:latest TSS=ibmtss
|
||||||
|
compiler: clang
|
||||||
|
|
||||||
|
- os: linux
|
||||||
|
env: DISTRO=centos:7 TSS=tpm2-tss
|
||||||
|
compiler: gcc
|
||||||
|
|
||||||
|
- os: linux
|
||||||
|
env: DISTRO=centos:latest TSS=tpm2-tss
|
||||||
|
compiler: clang
|
||||||
|
|
||||||
|
- os: linux
|
||||||
|
env: DISTRO=debian:testing TSS=tpm2-tss
|
||||||
|
compiler: clang
|
||||||
|
|
||||||
|
- os: linux
|
||||||
|
env: DISTRO=debian:stable TSS=ibmtss
|
||||||
|
compiler: gcc
|
||||||
|
|
||||||
|
before_install:
|
||||||
|
- df -hT
|
||||||
|
- DIR="/usr/src/ima-evm-utils"
|
||||||
|
- printf "FROM $DISTRO\nRUN mkdir -p $DIR\nWORKDIR $DIR\nCOPY . $DIR\n" > Dockerfile
|
||||||
|
- cat Dockerfile
|
||||||
|
- docker build -t ima-evm-utils .
|
||||||
|
|
||||||
|
script:
|
||||||
|
- INSTALL="${DISTRO%%:*}"
|
||||||
|
- INSTALL="${INSTALL%%/*}"
|
||||||
|
- docker run -t ima-evm-utils /bin/sh -c "cd travis && if [ \"$VARIANT\" ]; then ARCH=\"$ARCH\" ./$INSTALL.$VARIANT.sh; fi && ARCH=\"$ARCH\" CC=\"$CC\" TSS=\"$TSS\" ./$INSTALL.sh && if [ ! \"$VARIANT\" ]; then which tpm_server || which swtpm || ../tests/install-swtpm.sh; fi && CC=\"$CC\" VARIANT=\"$VARIANT\" ../build.sh"
|
@ -1,5 +1,7 @@
|
|||||||
SUBDIRS = src tests
|
SUBDIRS = src tests
|
||||||
|
if MANPAGE_DOCBOOK_XSL
|
||||||
dist_man_MANS = evmctl.1
|
dist_man_MANS = evmctl.1
|
||||||
|
endif
|
||||||
|
|
||||||
doc_DATA = examples/ima-genkey-self.sh examples/ima-genkey.sh examples/ima-gen-local-ca.sh
|
doc_DATA = examples/ima-genkey-self.sh examples/ima-genkey.sh examples/ima-gen-local-ca.sh
|
||||||
EXTRA_DIST = autogen.sh $(doc_DATA)
|
EXTRA_DIST = autogen.sh $(doc_DATA)
|
||||||
@ -23,6 +25,7 @@ rpm: $(tarname)
|
|||||||
cp $(tarname) $(SRCS)/
|
cp $(tarname) $(SRCS)/
|
||||||
rpmbuild -ba --nodeps $(SPEC)
|
rpmbuild -ba --nodeps $(SPEC)
|
||||||
|
|
||||||
|
if MANPAGE_DOCBOOK_XSL
|
||||||
evmctl.1.html: README
|
evmctl.1.html: README
|
||||||
@asciidoc -o $@ $<
|
@asciidoc -o $@ $<
|
||||||
|
|
||||||
@ -35,5 +38,6 @@ rmman:
|
|||||||
rm -f evmctl.1
|
rm -f evmctl.1
|
||||||
|
|
||||||
doc: evmctl.1.html rmman evmctl.1
|
doc: evmctl.1.html rmman evmctl.1
|
||||||
|
endif
|
||||||
|
|
||||||
.PHONY: $(tarname)
|
.PHONY: $(tarname)
|
||||||
|
1
README
1
README
@ -28,6 +28,7 @@ COMMANDS
|
|||||||
import [--rsa] pubkey keyring
|
import [--rsa] pubkey keyring
|
||||||
sign [-r] [--imahash | --imasig ] [--portable] [--key key] [--pass password] file
|
sign [-r] [--imahash | --imasig ] [--portable] [--key key] [--pass password] file
|
||||||
verify file
|
verify file
|
||||||
|
ima_boot_aggregate [--pcrs hash-algorithm,file] [TPM 1.2 BIOS event log]
|
||||||
ima_sign [--sigfile] [--key key] [--pass password] file
|
ima_sign [--sigfile] [--key key] [--pass password] file
|
||||||
ima_verify file
|
ima_verify file
|
||||||
ima_hash file
|
ima_hash file
|
||||||
|
14
autogen.sh
14
autogen.sh
@ -1,16 +1,4 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
# new way
|
autoreconf -i
|
||||||
# strange, but need this for Makefile.am, because it has -I m4
|
|
||||||
test -d m4 || mkdir m4
|
|
||||||
autoreconf -f -i
|
|
||||||
|
|
||||||
# old way
|
|
||||||
#libtoolize --automake --copy --force
|
|
||||||
#aclocal
|
|
||||||
#autoconf --force
|
|
||||||
#autoheader --force
|
|
||||||
#automake --add-missing --copy --force-missing --gnu
|
|
||||||
|
|
||||||
|
97
build.sh
Executable file
97
build.sh
Executable file
@ -0,0 +1,97 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Copyright (c) 2020 Petr Vorel <pvorel@suse.cz>
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
CC="${CC:-gcc}"
|
||||||
|
CFLAGS="${CFLAGS:--Wformat -Werror=format-security -Werror=implicit-function-declaration -Werror=return-type -fno-common}"
|
||||||
|
PREFIX="${PREFIX:-$HOME/ima-evm-utils-install}"
|
||||||
|
|
||||||
|
export LD_LIBRARY_PATH="$PREFIX/lib64:$PREFIX/lib:/usr/local/lib64:/usr/local/lib"
|
||||||
|
export PATH="$PREFIX/bin:/usr/local/bin:$PATH"
|
||||||
|
|
||||||
|
title()
|
||||||
|
{
|
||||||
|
echo "===== $1 ====="
|
||||||
|
}
|
||||||
|
|
||||||
|
log_exit()
|
||||||
|
{
|
||||||
|
local ret="${3:-$?}"
|
||||||
|
local log="$1"
|
||||||
|
local msg="$2"
|
||||||
|
local prefix
|
||||||
|
|
||||||
|
echo "=== $log ==="
|
||||||
|
[ $ret -eq 0 ] || prefix="FAIL: "
|
||||||
|
cat $log
|
||||||
|
echo
|
||||||
|
echo "$prefix$msg, see output of $log above"
|
||||||
|
exit $ret
|
||||||
|
}
|
||||||
|
|
||||||
|
cd `dirname $0`
|
||||||
|
|
||||||
|
case "$VARIANT" in
|
||||||
|
i386)
|
||||||
|
echo "32-bit compilation"
|
||||||
|
export CFLAGS="-m32 $CFLAGS" LDFLAGS="-m32 $LDFLAGS"
|
||||||
|
export PKG_CONFIG_LIBDIR=/usr/lib/i386-linux-gnu/pkgconfig
|
||||||
|
;;
|
||||||
|
cross-compile)
|
||||||
|
host="${CC%-gcc}"
|
||||||
|
export CROSS_COMPILE="${host}-"
|
||||||
|
host="--host=$host"
|
||||||
|
echo "cross compilation: $host"
|
||||||
|
echo "CROSS_COMPILE: '$CROSS_COMPILE'"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if [ "$VARIANT" ]; then
|
||||||
|
echo "Wrong VARIANT: '$VARIANT'" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "native build"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
title "compiler version"
|
||||||
|
$CC --version
|
||||||
|
echo "CFLAGS: '$CFLAGS'"
|
||||||
|
echo "LDFLAGS: '$LDFLAGS'"
|
||||||
|
echo "PREFIX: '$PREFIX'"
|
||||||
|
|
||||||
|
title "configure"
|
||||||
|
./autogen.sh
|
||||||
|
./configure --prefix=$PREFIX $host || log_exit config.log "configure failed"
|
||||||
|
|
||||||
|
title "make"
|
||||||
|
make -j$(nproc)
|
||||||
|
make install
|
||||||
|
|
||||||
|
title "test"
|
||||||
|
if [ "$VARIANT" = "cross-compile" ]; then
|
||||||
|
echo "skip make check on cross compilation"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
ret=0
|
||||||
|
VERBOSE=1 make check || ret=$?
|
||||||
|
|
||||||
|
title "logs"
|
||||||
|
if [ $ret -eq 0 ]; then
|
||||||
|
tail -3 tests/ima_hash.log
|
||||||
|
tail -3 tests/sign_verify.log
|
||||||
|
tail -20 tests/boot_aggregate.log
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat tests/test-suite.log
|
||||||
|
|
||||||
|
if [ $ret -eq 77 ]; then
|
||||||
|
msg="WARN: some tests skipped"
|
||||||
|
ret=0
|
||||||
|
else
|
||||||
|
msg="FAIL: tests exited: $ret"
|
||||||
|
fi
|
||||||
|
|
||||||
|
log_exit tests/test-suite.log "$msg" $ret
|
@ -30,9 +30,9 @@ AC_SUBST(KERNEL_HEADERS)
|
|||||||
AC_CHECK_HEADER(unistd.h)
|
AC_CHECK_HEADER(unistd.h)
|
||||||
AC_CHECK_HEADERS(openssl/conf.h)
|
AC_CHECK_HEADERS(openssl/conf.h)
|
||||||
|
|
||||||
AC_CHECK_LIB([tss2-esys], [Esys_PCR_Read])
|
AC_CHECK_LIB([tss2-esys], [Esys_Free])
|
||||||
AC_CHECK_LIB([tss2-rc], [Tss2_RC_Decode])
|
AC_CHECK_LIB([tss2-rc], [Tss2_RC_Decode])
|
||||||
AM_CONDITIONAL([USE_PCRTSS], [test "x$ac_cv_lib_tss2_esys_Esys_PCR_Read" = "xyes"])
|
AM_CONDITIONAL([USE_PCRTSS], [test "x$ac_cv_lib_tss2_esys_Esys_Free" = "xyes"])
|
||||||
|
|
||||||
AC_CHECK_HEADERS(sys/xattr.h, , [AC_MSG_ERROR([sys/xattr.h header not found. You need the c-library development package.])])
|
AC_CHECK_HEADERS(sys/xattr.h, , [AC_MSG_ERROR([sys/xattr.h header not found. You need the c-library development package.])])
|
||||||
AC_CHECK_HEADERS(keyutils.h, , [AC_MSG_ERROR([keyutils.h header not found. You need the libkeyutils development package.])])
|
AC_CHECK_HEADERS(keyutils.h, , [AC_MSG_ERROR([keyutils.h header not found. You need the libkeyutils development package.])])
|
||||||
@ -77,6 +77,7 @@ echo
|
|||||||
echo "Configuration:"
|
echo "Configuration:"
|
||||||
echo " debug: $pkg_cv_enable_debug"
|
echo " debug: $pkg_cv_enable_debug"
|
||||||
echo " openssl-conf: $enable_openssl_conf"
|
echo " openssl-conf: $enable_openssl_conf"
|
||||||
echo " tss2-esys: $ac_cv_lib_tss2_esys_Esys_PCR_Read"
|
echo " tss2-esys: $ac_cv_lib_tss2_esys_Esys_Free"
|
||||||
echo " tss2-rc-decode: $ac_cv_lib_tss2_rc_Tss2_RC_Decode"
|
echo " tss2-rc-decode: $ac_cv_lib_tss2_rc_Tss2_RC_Decode"
|
||||||
|
echo " doc: $have_doc"
|
||||||
echo
|
echo
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
dnl Copyright (c) 2018 Petr Vorel <pvorel@suse.cz>
|
dnl Copyright (c) 2018-2020 Petr Vorel <pvorel@suse.cz>
|
||||||
dnl Find docbook manpage stylesheet
|
dnl Find docbook manpage stylesheet
|
||||||
|
|
||||||
AC_DEFUN([EVMCTL_MANPAGE_DOCBOOK_XSL], [
|
AC_DEFUN([EVMCTL_MANPAGE_DOCBOOK_XSL], [
|
||||||
|
DOCBOOK_XSL_URI="http://docbook.sourceforge.net/release/xsl/current"
|
||||||
|
DOCBOOK_XSL_PATH="manpages/docbook.xsl"
|
||||||
|
|
||||||
AC_PATH_PROGS(XMLCATALOG, xmlcatalog)
|
AC_PATH_PROGS(XMLCATALOG, xmlcatalog)
|
||||||
AC_ARG_WITH([xml-catalog],
|
AC_ARG_WITH([xml-catalog],
|
||||||
AC_HELP_STRING([--with-xml-catalog=CATALOG],
|
AC_HELP_STRING([--with-xml-catalog=CATALOG],
|
||||||
@ -9,20 +12,37 @@ AC_DEFUN([EVMCTL_MANPAGE_DOCBOOK_XSL], [
|
|||||||
[with_xml_catalog=/etc/xml/catalog])
|
[with_xml_catalog=/etc/xml/catalog])
|
||||||
XML_CATALOG_FILE="$with_xml_catalog"
|
XML_CATALOG_FILE="$with_xml_catalog"
|
||||||
AC_SUBST([XML_CATALOG_FILE])
|
AC_SUBST([XML_CATALOG_FILE])
|
||||||
AC_MSG_CHECKING([for XML catalog ($XML_CATALOG_FILE)])
|
|
||||||
if test -f "$XML_CATALOG_FILE"; then
|
if test "x${XMLCATALOG}" = "x"; then
|
||||||
have_xmlcatalog_file=yes
|
AC_MSG_WARN([xmlcatalog not found, cannot search for $DOCBOOK_XSL_PATH])
|
||||||
AC_MSG_RESULT([found])
|
|
||||||
else
|
else
|
||||||
AC_MSG_RESULT([not found])
|
AC_MSG_CHECKING([for XML catalog ($XML_CATALOG_FILE)])
|
||||||
|
if test -f "$XML_CATALOG_FILE"; then
|
||||||
|
have_xmlcatalog_file=yes
|
||||||
|
AC_MSG_RESULT([found])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([not found, cannot search for $DOCBOOK_XSL_PATH])
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "x${XMLCATALOG}" != "x" -a "x$have_xmlcatalog_file" = "xyes"; then
|
if test "x${XMLCATALOG}" != "x" -a "x$have_xmlcatalog_file" = "xyes"; then
|
||||||
DOCBOOK_XSL_URI="http://docbook.sourceforge.net/release/xsl/current"
|
MANPAGE_DOCBOOK_XSL=$(${XMLCATALOG} ${XML_CATALOG_FILE} ${DOCBOOK_XSL_URI}/${DOCBOOK_XSL_PATH} | sed 's|^file:/\+|/|')
|
||||||
DOCBOOK_XSL_PATH="manpages/docbook.xsl"
|
|
||||||
MANPAGE_DOCBOOK_XSL=$(${XMLCATALOG} ${XML_CATALOG_FILE} ${DOCBOOK_XSL_URI}/${DOCBOOK_XSL_PATH} | sed -n 's|^file:/\+|/|p;q')
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "x${MANPAGE_DOCBOOK_XSL}" = "x"; then
|
if test "x${MANPAGE_DOCBOOK_XSL}" = "x"; then
|
||||||
MANPAGE_DOCBOOK_XSL="/usr/share/xml/docbook/stylesheet/docbook-xsl/manpages/docbook.xsl"
|
MANPAGE_DOCBOOK_XSL="/usr/share/xml/docbook/stylesheet/docbook-xsl/manpages/docbook.xsl"
|
||||||
|
AC_MSG_WARN([trying a default path for $DOCBOOK_XSL_PATH])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test -f "$MANPAGE_DOCBOOK_XSL"; then
|
||||||
|
have_doc=yes
|
||||||
|
AC_MSG_NOTICE([using $MANPAGE_DOCBOOK_XSL for generating doc])
|
||||||
|
else
|
||||||
|
AC_MSG_WARN([$DOCBOOK_XSL_PATH not found, generating doc will be skipped])
|
||||||
|
MANPAGE_DOCBOOK_XSL=
|
||||||
|
have_doc=no
|
||||||
|
fi
|
||||||
|
AM_CONDITIONAL(MANPAGE_DOCBOOK_XSL, test "x$have_doc" = xyes)
|
||||||
|
|
||||||
AC_SUBST(MANPAGE_DOCBOOK_XSL)
|
AC_SUBST(MANPAGE_DOCBOOK_XSL)
|
||||||
])
|
])
|
||||||
|
@ -2485,7 +2485,7 @@ struct command cmds[] = {
|
|||||||
{"ima_setxattr", cmd_setxattr_ima, 0, "[--sigfile file]", "Set IMA signature from sigfile\n"},
|
{"ima_setxattr", cmd_setxattr_ima, 0, "[--sigfile file]", "Set IMA signature from sigfile\n"},
|
||||||
{"ima_hash", cmd_hash_ima, 0, "file", "Make file content hash.\n"},
|
{"ima_hash", cmd_hash_ima, 0, "file", "Make file content hash.\n"},
|
||||||
{"ima_measurement", cmd_ima_measurement, 0, "[--ignore-violations] [--verify-sig [--key key1, key2, ...]] [--pcrs [hash-algorithm,]file [--pcrs hash-algorithm,file] ...] file", "Verify measurement list (experimental).\n"},
|
{"ima_measurement", cmd_ima_measurement, 0, "[--ignore-violations] [--verify-sig [--key key1, key2, ...]] [--pcrs [hash-algorithm,]file [--pcrs hash-algorithm,file] ...] file", "Verify measurement list (experimental).\n"},
|
||||||
{"ima_boot_aggregate", cmd_ima_bootaggr, 0, "[file]", "Calculate per TPM bank boot_aggregate digests\n"},
|
{"ima_boot_aggregate", cmd_ima_bootaggr, 0, "[--pcrs hash-algorithm,file] [TPM 1.2 BIOS event log]", "Calculate per TPM bank boot_aggregate digests\n"},
|
||||||
{"ima_fix", cmd_ima_fix, 0, "[-t fdsxm] path", "Recursively fix IMA/EVM xattrs in fix mode.\n"},
|
{"ima_fix", cmd_ima_fix, 0, "[-t fdsxm] path", "Recursively fix IMA/EVM xattrs in fix mode.\n"},
|
||||||
{"ima_clear", cmd_ima_clear, 0, "[-t fdsxm] path", "Recursively remove IMA/EVM xattrs.\n"},
|
{"ima_clear", cmd_ima_clear, 0, "[-t fdsxm] path", "Recursively remove IMA/EVM xattrs.\n"},
|
||||||
{"sign_hash", cmd_sign_hash, 0, "[--key key] [--pass [password]", "Sign hashes from shaXsum output.\n"},
|
{"sign_hash", cmd_sign_hash, 0, "[--key key] [--pass [password]", "Sign hashes from shaXsum output.\n"},
|
||||||
|
@ -33,11 +33,15 @@ else
|
|||||||
ASCII_RUNTIME_MEASUREMENTS="./sample-ascii_runtime_measurements-pcrs-8-9"
|
ASCII_RUNTIME_MEASUREMENTS="./sample-ascii_runtime_measurements-pcrs-8-9"
|
||||||
export TPM_INTERFACE_TYPE="socsim"
|
export TPM_INTERFACE_TYPE="socsim"
|
||||||
export TPM_COMMAND_PORT=2321
|
export TPM_COMMAND_PORT=2321
|
||||||
|
export TPM_PLATFORM_PORT=2322
|
||||||
|
export TPM_SERVER_NAME="localhost"
|
||||||
|
export TPM_SERVER_TYPE="raw"
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Only stop this test's software TPM. Preferred method: "tsstpmcmd -stop"
|
# Only stop this test's software TPM. Preferred method: "tsstpmcmd -stop"
|
||||||
cleanup() {
|
cleanup() {
|
||||||
if [ ! -z "${SWTPM_PPID}" ]; then
|
if [ -n "${SWTPM_PPID}" ]; then
|
||||||
if [ -f "${TSSDIR}/tsstpmcmd" ]; then
|
if [ -f "${TSSDIR}/tsstpmcmd" ]; then
|
||||||
"${TSSDIR}/tsstpmcmd" -stop
|
"${TSSDIR}/tsstpmcmd" -stop
|
||||||
else
|
else
|
||||||
@ -48,22 +52,36 @@ cleanup() {
|
|||||||
|
|
||||||
# Try to start a software TPM if needed.
|
# Try to start a software TPM if needed.
|
||||||
swtpm_start() {
|
swtpm_start() {
|
||||||
local swtpm
|
local swtpm swtpm1
|
||||||
|
|
||||||
swtpm="$(which tpm_server)"
|
swtpm="$(which tpm_server)"
|
||||||
if [ -z "${swtpm}" ]; then
|
swtpm1="$(which swtpm)"
|
||||||
echo "${CYAN}SKIP: Softare TPM (tpm_server) not found${NORM}"
|
if [ -z "${swtpm}" ] && [ -z "${swtpm1}" ]; then
|
||||||
|
echo "${CYAN}SKIP: Softare TPM (tpm_server and swtpm) not found${NORM}"
|
||||||
return "$SKIP"
|
return "$SKIP"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
pgrep tpm_server
|
if [ -n "${swtpm1}" ]; then
|
||||||
if [ $? -eq 0 ]; then
|
pgrep swtpm1
|
||||||
echo "INFO: Software TPM (tpm_server) already running"
|
if [ $? -eq 0 ]; then
|
||||||
return 114
|
echo "INFO: Software TPM (swtpm) already running"
|
||||||
else
|
return 114
|
||||||
echo "INFO: Starting software TPM: ${swtpm}"
|
else
|
||||||
${swtpm} > /dev/null 2>&1 &
|
echo "INFO: Starting software TPM: ${swtpm1}"
|
||||||
SWTPM_PPID=$!
|
mkdir ./myvtpm
|
||||||
|
${swtpm1} socket --tpmstate dir=./myvtpm --tpm2 --ctrl type=tcp,port=2322 --server type=tcp,port=2321 --flags not-need-init > /dev/null 2>&1 &
|
||||||
|
SWTPM_PPID=$!
|
||||||
|
fi
|
||||||
|
elif [ -n "${swtpm}" ]; then
|
||||||
|
pgrep swtpm
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "INFO: Software TPM (tpm_server) already running"
|
||||||
|
return 114
|
||||||
|
else
|
||||||
|
echo "INFO: Starting software TPM: ${swtpm}"
|
||||||
|
${swtpm} > /dev/null 2>&1 &
|
||||||
|
SWTPM_PPID=$!
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
13
tests/install-swtpm.sh
Executable file
13
tests/install-swtpm.sh
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
version=1637
|
||||||
|
|
||||||
|
wget --no-check-certificate https://sourceforge.net/projects/ibmswtpm2/files/ibmtpm${version}.tar.gz/download
|
||||||
|
mkdir ibmtpm$version
|
||||||
|
cd ibmtpm$version
|
||||||
|
tar -xvzf ../download
|
||||||
|
cd src
|
||||||
|
make -j$(nproc)
|
||||||
|
sudo cp tpm_server /usr/local/bin/
|
||||||
|
cd ../..
|
8
tests/install-tss.sh
Executable file
8
tests/install-tss.sh
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
git clone https://git.code.sf.net/p/ibmtpm20tss/tss
|
||||||
|
cd tss
|
||||||
|
autoreconf -i && ./configure --disable-tpm-1.2 --disable-hwtpm && make -j$(nproc) && sudo make install
|
||||||
|
cd ..
|
||||||
|
rm -rf tss
|
@ -18,7 +18,14 @@
|
|||||||
cd "$(dirname "$0")" || exit 1
|
cd "$(dirname "$0")" || exit 1
|
||||||
PATH=../src:$PATH
|
PATH=../src:$PATH
|
||||||
source ./functions.sh
|
source ./functions.sh
|
||||||
_require evmctl openssl xxd getfattr
|
|
||||||
|
_require cmp evmctl getfattr openssl xxd
|
||||||
|
|
||||||
|
if cmp -b 2>&1 | grep -q "invalid option"; then
|
||||||
|
echo "cmp does not support -b (cmp from busybox?) Use cmp from diffutils"
|
||||||
|
exit "$HARDFAIL"
|
||||||
|
fi
|
||||||
|
|
||||||
./gen-keys.sh >/dev/null 2>&1
|
./gen-keys.sh >/dev/null 2>&1
|
||||||
|
|
||||||
trap _report_exit EXIT
|
trap _report_exit EXIT
|
||||||
|
50
travis/alpine.sh
Executable file
50
travis/alpine.sh
Executable file
@ -0,0 +1,50 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Copyright (c) 2020 Petr Vorel <pvorel@suse.cz>
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
if [ -z "$CC" ]; then
|
||||||
|
echo "missing \$CC!" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$TSS" in
|
||||||
|
ibmtss) echo "No IBM TSS package, will be installed from git" >&2; TSS=;;
|
||||||
|
tpm2-tss) TSS="tpm2-tss-dev";;
|
||||||
|
'') echo "Missing TSS!" >&2; exit 1;;
|
||||||
|
*) echo "Unsupported TSS: '$TSS'!" >&2; exit 1;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# ibmswtpm2 requires gcc
|
||||||
|
[ "$CC" = "gcc" ] || CC="gcc $CC"
|
||||||
|
|
||||||
|
apk update
|
||||||
|
|
||||||
|
apk add \
|
||||||
|
$CC $TSS \
|
||||||
|
asciidoc \
|
||||||
|
attr \
|
||||||
|
attr-dev \
|
||||||
|
autoconf \
|
||||||
|
automake \
|
||||||
|
diffutils \
|
||||||
|
docbook-xml \
|
||||||
|
docbook-xsl \
|
||||||
|
keyutils-dev \
|
||||||
|
libtool \
|
||||||
|
libxslt \
|
||||||
|
linux-headers \
|
||||||
|
make \
|
||||||
|
musl-dev \
|
||||||
|
openssl \
|
||||||
|
openssl-dev \
|
||||||
|
pkgconfig \
|
||||||
|
procps \
|
||||||
|
sudo \
|
||||||
|
wget \
|
||||||
|
which \
|
||||||
|
xxd
|
||||||
|
|
||||||
|
if [ ! "$TSS" ]; then
|
||||||
|
apk add git
|
||||||
|
../tests/install-tss.sh
|
||||||
|
fi
|
1
travis/centos.sh
Symbolic link
1
travis/centos.sh
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
fedora.sh
|
23
travis/debian.cross-compile.sh
Executable file
23
travis/debian.cross-compile.sh
Executable file
@ -0,0 +1,23 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Copyright (c) 2020 Petr Vorel <pvorel@suse.cz>
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
if [ -z "$ARCH" ]; then
|
||||||
|
echo "missing \$ARCH!" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$ARCH" in
|
||||||
|
arm64) gcc_arch="aarch64";;
|
||||||
|
ppc64el) gcc_arch="powerpc64le";;
|
||||||
|
s390x) gcc_arch="$ARCH";;
|
||||||
|
*) echo "unsupported arch: '$ARCH'!" >&2; exit 1;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
dpkg --add-architecture $ARCH
|
||||||
|
apt update
|
||||||
|
|
||||||
|
apt install -y --no-install-recommends \
|
||||||
|
dpkg-dev \
|
||||||
|
gcc-${gcc_arch}-linux-gnu \
|
||||||
|
libc6-dev-${ARCH}-cross
|
11
travis/debian.i386.sh
Executable file
11
travis/debian.i386.sh
Executable file
@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Copyright (c) 2020 Petr Vorel <pvorel@suse.cz>
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
dpkg --add-architecture i386
|
||||||
|
apt update
|
||||||
|
|
||||||
|
apt install -y --no-install-recommends \
|
||||||
|
linux-libc-dev:i386 \
|
||||||
|
gcc-multilib \
|
||||||
|
pkg-config:i386
|
54
travis/debian.sh
Executable file
54
travis/debian.sh
Executable file
@ -0,0 +1,54 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Copyright (c) 2020 Petr Vorel <pvorel@suse.cz>
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
if [ -z "$CC" ]; then
|
||||||
|
echo "missing \$CC!" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# debian.*.sh must be run first
|
||||||
|
if [ "$ARCH" ]; then
|
||||||
|
ARCH=":$ARCH"
|
||||||
|
unset CC
|
||||||
|
else
|
||||||
|
apt update
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ibmswtpm2 requires gcc
|
||||||
|
[ "$CC" = "gcc" ] || CC="gcc $CC"
|
||||||
|
|
||||||
|
case "$TSS" in
|
||||||
|
ibmtss) TSS="libtss-dev";;
|
||||||
|
tpm2-tss) TSS="libtss2-dev";;
|
||||||
|
'') echo "Missing TSS!" >&2; exit 1;;
|
||||||
|
*) [ "$TSS" ] && echo "Unsupported TSS: '$TSS'!" >&2; exit 1;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
apt="apt install -y --no-install-recommends"
|
||||||
|
|
||||||
|
$apt \
|
||||||
|
$CC $TSS \
|
||||||
|
asciidoc \
|
||||||
|
attr \
|
||||||
|
autoconf \
|
||||||
|
automake \
|
||||||
|
diffutils \
|
||||||
|
debianutils \
|
||||||
|
docbook-xml \
|
||||||
|
docbook-xsl \
|
||||||
|
gzip \
|
||||||
|
libattr1-dev$ARCH \
|
||||||
|
libkeyutils-dev$ARCH \
|
||||||
|
libssl-dev$ARCH \
|
||||||
|
libtool \
|
||||||
|
make \
|
||||||
|
openssl \
|
||||||
|
pkg-config \
|
||||||
|
procps \
|
||||||
|
sudo \
|
||||||
|
wget \
|
||||||
|
xsltproc \
|
||||||
|
|
||||||
|
$apt xxd || $apt vim-common
|
||||||
|
$apt libengine-gost-openssl1.1$ARCH || true
|
44
travis/fedora.sh
Executable file
44
travis/fedora.sh
Executable file
@ -0,0 +1,44 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Copyright (c) 2020 Petr Vorel <pvorel@suse.cz>
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if [ -z "$CC" ]; then
|
||||||
|
echo "missing \$CC!" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$TSS" in
|
||||||
|
ibmtss) TSS="tss2-devel";;
|
||||||
|
tpm2-tss) TSS="tpm2-tss-devel";;
|
||||||
|
'') echo "Missing TSS!" >&2; exit 1;;
|
||||||
|
*) echo "Unsupported TSS: '$TSS'!" >&2; exit 1;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# ibmswtpm2 requires gcc
|
||||||
|
[ "$CC" = "gcc" ] || CC="gcc $CC"
|
||||||
|
|
||||||
|
yum -y install \
|
||||||
|
$CC $TSS \
|
||||||
|
asciidoc \
|
||||||
|
attr \
|
||||||
|
autoconf \
|
||||||
|
automake \
|
||||||
|
diffutils \
|
||||||
|
docbook-xsl \
|
||||||
|
gzip \
|
||||||
|
keyutils-libs-devel \
|
||||||
|
libattr-devel \
|
||||||
|
libtool \
|
||||||
|
libxslt \
|
||||||
|
make \
|
||||||
|
openssl \
|
||||||
|
openssl-devel \
|
||||||
|
pkg-config \
|
||||||
|
procps \
|
||||||
|
sudo \
|
||||||
|
vim-common \
|
||||||
|
wget \
|
||||||
|
which
|
||||||
|
|
||||||
|
yum -y install docbook5-style-xsl || true
|
||||||
|
yum -y install swtpm || true
|
1
travis/opensuse.sh
Symbolic link
1
travis/opensuse.sh
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
tumbleweed.sh
|
45
travis/tumbleweed.sh
Executable file
45
travis/tumbleweed.sh
Executable file
@ -0,0 +1,45 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Copyright (c) 2020 Petr Vorel <pvorel@suse.cz>
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
if [ -z "$CC" ]; then
|
||||||
|
echo "missing \$CC!" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$TSS" in
|
||||||
|
ibmtss) TSS="ibmtss-devel";;
|
||||||
|
tpm2-tss) TSS="tpm2-0-tss-devel";;
|
||||||
|
'') echo "Missing TSS!" >&2; exit 1;;
|
||||||
|
*) echo "Unsupported TSS: '$TSS'!" >&2; exit 1;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# clang has some gcc dependency
|
||||||
|
[ "$CC" = "gcc" ] || CC="gcc $CC"
|
||||||
|
|
||||||
|
zypper --non-interactive install --force-resolution --no-recommends \
|
||||||
|
$CC $TSS \
|
||||||
|
asciidoc \
|
||||||
|
attr \
|
||||||
|
autoconf \
|
||||||
|
automake \
|
||||||
|
diffutils \
|
||||||
|
docbook_5 \
|
||||||
|
docbook5-xsl-stylesheets \
|
||||||
|
gzip \
|
||||||
|
ibmswtpm2 \
|
||||||
|
keyutils-devel \
|
||||||
|
libattr-devel \
|
||||||
|
libopenssl-devel \
|
||||||
|
libtool \
|
||||||
|
make \
|
||||||
|
openssl \
|
||||||
|
pkg-config \
|
||||||
|
procps \
|
||||||
|
sudo \
|
||||||
|
vim \
|
||||||
|
wget \
|
||||||
|
which \
|
||||||
|
xsltproc
|
||||||
|
|
||||||
|
[ -f /usr/lib/ibmtss/tpm_server ] && ln -s /usr/lib/ibmtss/tpm_server /usr/local/bin
|
1
travis/ubuntu.sh
Symbolic link
1
travis/ubuntu.sh
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
debian.sh
|
Loading…
x
Reference in New Issue
Block a user