summaryrefslogblamecommitdiffstats
path: root/builder/modules.d/slx-tpm/module-setup.sh
blob: f9a239e0a4b6c6a59a8f33f69ff6d2266f717c78 (plain) (tree)
1
2
3
4
5
6
7


                                                                                                                           
                                                                  

                                                                                                     
                                




                                                             

                                                                       













                                                             
                             


                    




                                                            







                                                             


                                                                                                                  
                         
                                                                                          










                                                               
                                           
          
                                                      

                                                                
                                
                                   
                                                                    
                                                                          
                                                            


                               
                                                                       


                                                      
                                                        
                                       


                                                                                        

           
                                   

                                  

                


                                  
#!/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
}