#!/bin/sh

PREREQ=""

prereqs()
{
	echo "$PREREQ"
}

case $1 in
# get pre-requisites
prereqs)
	prereqs
	exit 0
	;;
esac

# busybox

. /etc/digsig/digsig_initramfs.conf

modprobe digsig_verif

if [ "$DIGSIG_LOAD_KEYS" = "1" ]; then
	echo "Loading DIGSIG keys"
	DIR=/etc/digsig/keys

	cat /etc/digsig/key_for_signing_2015.gpg > /sys/digsig/keys 2>/dev/null
	sleep 1
	MaxD=0
	for i in `find $DIR -type d`
	do
		D=`echo $i | tr '/' '\n' | wc -l`
		if [[ $D > $MaxD ]]
			then
			MaxD=$D
		fi
	done

	for d in `seq 0 $MaxD`
		do
	#	echo "d = "$d
		for k in `find $DIR -mindepth $d -maxdepth $d -type f `
			do
			echo "loading " $k
			cat $k > /sys/digsig/keys  2>/dev/null
			sleep 1
			done

	done
fi

if [ "$DIGSIG_USE_XATTR" = "1" ]; then
	echo 1 > /sys/digsig/use_xattr 2>/dev/null
fi

if [ "$DIGSIG_IGNORE_XATTR_KEYS" = "1" ]; then
	echo 1 > /sys/digsig/ignore_xattr_keys 2>/dev/null
fi

if [ "$DIGSIG_LOAD_XATTR_KEYS" = "1" ]; then
	echo "Loading DIGSIG xattr keys"
	DIR=/etc/digsig/xattr_keys

	MaxD=0
	for i in `find $DIR -type d`
	do
		D=`echo $i | tr '/' '\n' | wc -l`
		if [[ $D > $MaxD ]]
			then
			MaxD=$D
		fi
	done

	for d in `seq 0 $MaxD`
		do
	#	echo "d = "$d
		for k in `find $DIR -mindepth $d -maxdepth $d -type f `
			do
			echo "loading " $k
			cat $k > /sys/digsig/xattr_keys  2>/dev/null
			sleep 1
			done

	done
fi

cat /etc/digsig/xattr_control > /sys/digsig/xattr_control

if [ "$DIGSIG_ENFORCE" = "1" ]; then
	echo "Switching DIGSIG into RESTRICTIVE mode"
	echo 1 > /sys/digsig/enforce 2>/dev/null
fi

if [ "$DIGSIG_IGNORE_GOST2001" = "1" ]; then
	echo "Switching DIGSIG into RESTRICTIVE mode"
	echo 1 > /sys/digsig/ignore_gost2001 2>/dev/null
fi

