#!/usr/bin/env bash declare -rg openssl_tpm2_engine_url="https://git.kernel.org/pub/scm/linux/kernel/git/jejb/openssl_tpm2_engine.git/snapshot" declare -rg openssl_tpm2_engine_target="openssl_tpm2_engine-1.2.1" declare -rg ibm_tss_target="ibmtss1234.tar.gz" declare -rg ibm_tss_url="https://sourceforge.net/projects/ibmtpm20tss/files/$ibm_tss_target/download" # TODO download in "$moddir/src" check() { if ! hash help2man 2>&1 /dev/null; then echo "Missing help2man, please install it..." return 1 fi mkdir -p "$moddir/build" if [ ! -d "$moddir/build/${openssl_tpm2_engine_target}" ]; then compile_openssl_tpm2_engine || return 1 fi return 255 } depends() { : } compile_ibm_tss() { ( set -o errexit wget -O "$ibm_tss_target" "$ibm_tss_url" local build_dir="$moddir/build/${ibm_tss_target%%.*}" mkdir -p "$build_dir" tar xvf "$ibm_tss_target" -C "$build_dir" cd "$build_dir/utils" make ) local ret=$? if [ $ret -ne 0 ]; then echo "Failed to compile IBM TSS" rm -rf "$moddir/build/${ibm_tss_target%%.*}" fi return $ret } compile_openssl_tpm2_engine() { if [ -d "$moddir/build/${ibm_tss_target%%.*}" ]; then compile_ibm_tss || return 1 fi install_ibm_tss "/" ( set -o errexit wget -O "$openssl_tpm2_engine_target.tar.gz" "$openssl_tpm2_engine_url/$openssl_tpm2_engine_target.tar.gz" tar xvf "$openssl_tpm2_engine_target.tar.gz" -C "$moddir/build" cd "$moddir/build/$openssl_tpm2_engine_target" bash bootstrap.sh CFLAGS="-I$moddir/build/${ibm_tss_target%%.*}/utils -Wno-pointer-sign" ./configure # cause help2man suck... sed -i '/^HELP2MAN/ s/$/ --no-discard-stderr/' Makefile make ) } install_ibm_tss() { if [ "$#" -ne 1 ]; then echo "Failed: Needs one arg." return 1 fi if [ ! -d "$moddir/build/${ibm_tss_target%%.*}" ]; then compile_ibm_tss || return 1 fi cd "$moddir/build/${ibm_tss_target%%.*}/utils" mkdir -p "$1/usr/local/bin" # this is hacky, TODO better with /etc/ld.cache.conf.d ? cp -a *.so* "$1/usr/lib" mkdir -p "$1/usr/local/bin" find . -perm /a+x -type f -exec cp {} "$1/usr/local/bin/" \; # only needed to compile some tpm binary (not needed in initramfs) # tar cvf - tss2 | tar xvf - -C "$1/usr/local/include" cd - } install_openssl_tpm2_engine() { if [ ! -d "$moddir/build/${openssl_tpm2_engine_target}" ]; then echo "no build of openssl tpm2 engine" return 1 fi cd "$moddir/build/${openssl_tpm2_engine_target}" make DESTDIR="$initdir" install mkdir -p "$initdir/usr/lib/x86_64-linux-gnu/" cp -r /usr/lib/x86_64-linux-gnu/engines-1.1 "$initdir/usr/lib/x86_64-linux-gnu/" ln -s "libtpm2.so" "$initdir/usr/lib/x86_64-linux-gnu/engines-1.1/tpm2.so" } install() { install_openssl_tpm2_engine install_ibm_tss "$initdir" inst_multiple openssl return 0 } installkernel() { instmods =drivers/char/tpm }