summaryrefslogtreecommitdiff
path: root/package/cryptinit/src/cryptinitsc
blob: f8d101877988aad8281b208871656d105bd75d27 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/bin/sh

load_modules() {
	(sed "s,^[^#][^[:space:]]*,insmod /lib/modules/$(uname -r)/&.ko," $* | sh 2>&- || :)
}

echo -n "Kernel currently running: "
uname -rsmo
echo -n "Kernel parameters: "; cat /proc/cmdline
for word in $(cat /proc/cmdline) ; do
    case $word in
         [a-z]*=*)
             eval "export $word"
             ;;
    esac
done

echo 0 > /proc/sys/kernel/printk

load_modules /etc/modules
for f in /etc/modules.d/*; do
	[[ -e $f ]] && load_modules /etc/modules.d/*
	break
done

mount /dev/sda1 /boot
mkdir -p /var/run/openct
openct-control init
pcscd -f &
sleep 2

fail=0
count=0
while true; do
	pkcs15-crypt --decipher --input /boot/key  --pkcs1 --raw >/tmp/skey
	cryptsetup -d /tmp/skey --batch-mode luksOpen $swap swapcrypt
	if [ $? = 0 ];then
		break
	fi
	if [ $count = 2 ];then
		echo "You are not allowed"
		sleep 3
		fail=1
		break
	fi
	count=$(($count+1))
done

if [ $fail -eq 1 ];then
	echo "Poweroff."
	p
fi

echo "Try to resume from hibernation"
echo "254:0" > /sys/power/resume

cryptsetup -d /tmp/skey --batch-mode luksOpen $root rootcrypt
swapon /dev/mapper/swapcrypt
mount /dev/mapper/rootcrypt /mnt
umount /proc
umount /sys
umount /dev/pts
rm /tmp/skey
pkill pcscd
umount /tmp