3 EXTRA_DIST = fileDiffer.py compatimage.img.bz2
5 apitest_SOURCES = apitest.c
6 apitest_LDADD = ../lib/libcryptsetup.la
7 apitest_LDFLAGS = -static
8 apitest_CFLAGS = -g -O0 -I$(top_srcdir)/lib/
10 check_PROGRAMS = apitest
13 @bzip2 -k -d compatimage.img.bz2
16 ORIG_IMG = /tmp/luks-test-orig
18 IMG1 = /tmp/luks-test1
21 LUKS_HEADER = S0-5 S6-7 S8-39 S40-71 S72-103 S104-107 S108-111 R112-131 R132-163 S164-167 S168-207 A0-591
23 KEY_SLOT0 = S208-211 S212-215 R216-247 S248-251 S251-255
24 KEY_MATERIAL0 = R4096-68096
25 KEY_MATERIAL0_EXT = R4096-68096
27 KEY_SLOT1 = S256-259 S260-263 R264-295 S296-299 S300-303
28 KEY_MATERIAL1 = R69632-133632
29 KEY_MATERIAL1_EXT = S69632-133632
34 # (cd ..; make clean; make CFLAGS=-Werror)
35 @if [ `id -u` != 0 ]; then \
38 @if [ ! -e /tmp/key1 ]; then \
39 dd if=/dev/urandom of=/tmp/key1 count=1 bs=32; \
41 @bzip2 -cd compatimage.img.bz2 > $(IMG)
42 @-/sbin/losetup -d $(LOOPDEV)
43 @/sbin/losetup $(LOOPDEV) $(IMG)
45 @echo Case: open - compat image - acceptance check
46 # Image must not change
47 @cp $(IMG) $(ORIG_IMG)
48 echo "compatkey" | ../src/cryptsetup -v luksOpen $(LOOPDEV) dummy
50 ./fileDiffer.py $(IMG) $(ORIG_IMG)
51 @-ls -l /dev/mapper/dummy > /dev/null
52 @../src/cryptsetup remove dummy
56 @echo Case: open - compat image - denial check
57 # Image must not change
58 @cp $(IMG) $(ORIG_IMG)
59 echo "wrongkey" | ../src/cryptsetup -v luksOpen $(LOOPDEV) dummy || true
61 ./fileDiffer.py $(IMG) $(ORIG_IMG)
65 # All headers items and first key material section must change
66 @cp $(IMG) $(ORIG_IMG)
67 echo "key0" | ../src/cryptsetup -v -i 1000 -c aes-cbc-essiv:sha256 luksFormat $(LOOPDEV)
69 ./fileDiffer.py $(IMG) $(ORIG_IMG) $(LUKS_HEADER) $(KEY_SLOT0) $(KEY_MATERIAL0)
71 @echo Case: format using hash sha512
72 @cp $(IMG) $(ORIG_IMG)
73 echo "key0" | ../src/cryptsetup -v -i 1000 -h sha512 -c aes-cbc-essiv:sha256 luksFormat $(LOOPDEV)
75 ./fileDiffer.py $(IMG) $(ORIG_IMG) $(LUKS_HEADER) $(KEY_SLOT0) $(KEY_MATERIAL0)
78 # Image must not change
79 @cp $(IMG) $(ORIG_IMG)
80 echo "key0" | ../src/cryptsetup -v luksOpen $(LOOPDEV) dummy
82 ./fileDiffer.py $(IMG) $(ORIG_IMG)
83 @-ls -l /dev/mapper/dummy > /dev/null
84 @../src/cryptsetup remove dummy
88 # Key Slot 1 and key material section 1 must change, the rest must not.
89 @cp $(IMG) $(ORIG_IMG)
90 echo -e "key0\nkey1" | ../src/cryptsetup -v luksAddKey $(LOOPDEV)
92 ./fileDiffer.py $(IMG) $(ORIG_IMG) $(KEY_SLOT1) $(KEY_MATERIAL1)
93 echo "key1" | ../src/cryptsetup -v luksOpen $(LOOPDEV) dummy
94 @-ls -l /dev/mapper/dummy > /dev/null
95 @../src/cryptsetup -v remove dummy
98 # Unsuccessful Key Delete - nothing may change
99 @echo Case: unsuccessful delete
100 @cp $(IMG) $(ORIG_IMG)
101 echo "invalid" | ../src/cryptsetup -v luksDelKey $(LOOPDEV) 1 || true
103 ./fileDiffer.py $(IMG) $(ORIG_IMG)
107 # Key Slot 1 and key material section 1 must change, the rest must not
108 @echo Case: successful delete
109 @cp $(IMG) $(ORIG_IMG)
110 ../src/cryptsetup -v -q luksDelKey $(LOOPDEV) 1
112 ./fileDiffer.py $(IMG) $(ORIG_IMG) $(KEY_SLOT1) $(KEY_MATERIAL1_EXT)
113 echo "key1" | ../src/cryptsetup -v luksOpen $(LOOPDEV) dummy 2>/dev/null || true
114 echo "key0" | ../src/cryptsetup -v luksOpen $(LOOPDEV) dummy 2>/dev/null
115 @../src/cryptsetup -v remove dummy
118 # Non-Exclusive Open test
119 # @echo Case: Non-Exclusive Open
120 # echo "key0" | ../src/cryptsetup -v --readonly luksOpen $(LOOPDEV) dummy1 2>/dev/null
122 # echo "key0" | ../src/cryptsetup -v --readonly luksOpen $(LOOPDEV) dummy2 2>/dev/null || true
123 # echo "key0" | ../src/cryptsetup -v --non-exclusive --readonly luksOpen $(LOOPDEV) dummy2 2>/dev/null
124 # @../src/cryptsetup -v remove dummy1
125 # @../src/cryptsetup -v remove dummy2
128 # Key Slot 1 and key material section 1 must change, the rest must not
129 @echo Case: add key test for key files
130 @cp $(IMG) $(ORIG_IMG)
131 echo "key0" | ../src/cryptsetup -v luksAddKey $(LOOPDEV) /tmp/key1
133 ./fileDiffer.py $(IMG) $(ORIG_IMG) $(KEY_SLOT1) $(KEY_MATERIAL1)
134 ../src/cryptsetup -d /tmp/key1 -v luksOpen $(LOOPDEV) dummy
135 @-ls -l /dev/mapper/dummy > /dev/null
136 @../src/cryptsetup -v remove dummy
139 @echo Case: delete key test with /tmp/key1 as remaining key
140 # Key Slot 1 and key material section 1 must change, the rest must not
141 @cp $(IMG) $(ORIG_IMG)
142 ../src/cryptsetup -v -d /tmp/key1 luksDelKey $(LOOPDEV) 0
144 ./fileDiffer.py $(IMG) $(ORIG_IMG) $(KEY_SLOT0) $(KEY_MATERIAL0_EXT)
145 echo "key0" | ../src/cryptsetup -v luksOpen $(LOOPDEV) dummy 2>/dev/null || true
146 ../src/cryptsetup -v luksOpen -d /tmp/key1 $(LOOPDEV) dummy 2>/dev/null
147 @../src/cryptsetup -v remove dummy
151 @echo Case: delete last key
152 @cp $(IMG) $(ORIG_IMG)
153 @echo "key0" | ../src/cryptsetup -v luksFormat $(LOOPDEV)
154 echo "key0" | ../src/cryptsetup -v luksKillSlot $(LOOPDEV) 0
156 echo "key0" | ../src/cryptsetup -v luksOpen $(LOOPDEV) dummy 2>/dev/null || true
159 # Format test for ESSIV, and some other parameters.
160 @echo Case: parameter variation test
161 @dd if=/dev/zero of=$(IMG) count=20000
162 @cp $(IMG) $(ORIG_IMG)
163 @../src/cryptsetup -q -v -i 1000 -c aes-cbc-essiv:sha256 luksFormat $(LOOPDEV) /tmp/key1
165 ./fileDiffer.py $(IMG) $(ORIG_IMG) $(LUKS_HEADER) $(KEY_SLOT0) $(KEY_MATERIAL0)
166 @../src/cryptsetup -d /tmp/key1 -v luksOpen $(LOOPDEV) dummy
167 @-ls -l /dev/mapper/dummy > /dev/null && echo "success"
168 @../src/cryptsetup -v remove dummy
170 @-/sbin/losetup -d $(LOOPDEV)