1 moduledir = $(libdir)/cryptsetup
3 noinst_LTLIBRARIES = libluks.la
5 libluks_la_CFLAGS = -I $(top_srcdir)/luks/sha -Wall
25 INCLUDES = -D_GNU_SOURCE \
26 -D_LARGEFILE64_SOURCE \
27 -D_FILE_OFFSET_BITS=64 \
30 EXTRA_DIST = sha/hmac.c testing/fileDiffer.py testing/compatimage.bz2
32 ORIG_IMG = /tmp/luks-test-orig
34 IMG1 = /tmp/luks-test1
37 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
39 KEY_SLOT0 = S208-211 S212-215 R216-247 S248-251 S251-255
40 KEY_MATERIAL0 = R4096-68096
41 KEY_MATERIAL0_EXT = R4096-68096
43 KEY_SLOT1 = S256-259 S260-263 R264-295 S296-299 S300-303
44 KEY_MATERIAL1 = R69632-133632
45 KEY_MATERIAL1_EXT = S69632-133632
50 (cd ..; make clean; make CFLAGS=-Werror)
51 @if [ `id -u` != 0 ]; then \
54 @if [ ! -e /tmp/key1 ]; then \
55 dd if=/dev/urandom of=/tmp/key1 count=1 bs=32; \
57 @bzip2 -cd testing/compatimage.bz2 > $(IMG)
58 @-/sbin/losetup -d $(LOOPDEV)
59 @/sbin/losetup $(LOOPDEV) $(IMG)
61 @echo Case: open - compat image - acceptance check
62 # Image must not change
63 @cp $(IMG) $(ORIG_IMG)
64 echo "compatkey" | ../src/cryptsetup -v luksOpen $(LOOPDEV) dummy
66 testing/fileDiffer.py $(IMG) $(ORIG_IMG)
67 @-ls -l /dev/mapper/dummy > /dev/null
68 @../src/cryptsetup remove dummy
72 @echo Case: open - compat image - denial check
73 # Image must not change
74 @cp $(IMG) $(ORIG_IMG)
75 echo "wrongkey" | ../src/cryptsetup -v luksOpen $(LOOPDEV) dummy || true
77 testing/fileDiffer.py $(IMG) $(ORIG_IMG)
81 # All headers items and first key material section must change
82 @cp $(IMG) $(ORIG_IMG)
83 echo "key0" | ../src/cryptsetup -v -i 1000 -c aes-cbc-essiv:sha256 luksFormat $(LOOPDEV)
85 testing/fileDiffer.py $(IMG) $(ORIG_IMG) $(LUKS_HEADER) $(KEY_SLOT0) $(KEY_MATERIAL0)
88 # Image must not change
89 @cp $(IMG) $(ORIG_IMG)
90 echo "key0" | ../src/cryptsetup -v luksOpen $(LOOPDEV) dummy
92 testing/fileDiffer.py $(IMG) $(ORIG_IMG)
93 @-ls -l /dev/mapper/dummy > /dev/null
94 @../src/cryptsetup remove dummy
98 # Key Slot 1 and key material section 1 must change, the rest must not.
99 @cp $(IMG) $(ORIG_IMG)
100 echo -e "key0\nkey1" | ../src/cryptsetup -v luksAddKey $(LOOPDEV)
102 testing/fileDiffer.py $(IMG) $(ORIG_IMG) $(KEY_SLOT1) $(KEY_MATERIAL1)
103 echo "key1" | ../src/cryptsetup -v luksOpen $(LOOPDEV) dummy
104 @-ls -l /dev/mapper/dummy > /dev/null
105 @../src/cryptsetup -v remove dummy
108 # Unsuccessful Key Delete - nothing may change
109 @echo Case: unsuccessful delete
110 @cp $(IMG) $(ORIG_IMG)
111 echo "invalid" | ../src/cryptsetup -v luksDelKey $(LOOPDEV) 1 || true
113 testing/fileDiffer.py $(IMG) $(ORIG_IMG)
117 # Key Slot 1 and key material section 1 must change, the rest must not
118 @echo Case: successful delete
119 @cp $(IMG) $(ORIG_IMG)
120 ../src/cryptsetup -v -q luksDelKey $(LOOPDEV) 1
122 testing/fileDiffer.py $(IMG) $(ORIG_IMG) $(KEY_SLOT1) $(KEY_MATERIAL1_EXT)
123 echo "key1" | ../src/cryptsetup -v luksOpen $(LOOPDEV) dummy 2>/dev/null || true
124 echo "key0" | ../src/cryptsetup -v luksOpen $(LOOPDEV) dummy 2>/dev/null
125 @../src/cryptsetup -v remove dummy
128 # Non-Exclusive Open test
129 @echo Case: Non-Exclusive Open
130 echo "key0" | ../src/cryptsetup -v --readonly luksOpen $(LOOPDEV) dummy1 2>/dev/null
132 echo "key0" | ../src/cryptsetup -v --readonly luksOpen $(LOOPDEV) dummy2 2>/dev/null || true
133 echo "key0" | ../src/cryptsetup -v --non-exclusive --readonly luksOpen $(LOOPDEV) dummy2 2>/dev/null
134 @../src/cryptsetup -v remove dummy1
135 @../src/cryptsetup -v remove dummy2
138 # Key Slot 1 and key material section 1 must change, the rest must not
139 @echo Case: add key test for key files
140 @cp $(IMG) $(ORIG_IMG)
141 echo "key0" | ../src/cryptsetup -v luksAddKey $(LOOPDEV) /tmp/key1
143 testing/fileDiffer.py $(IMG) $(ORIG_IMG) $(KEY_SLOT1) $(KEY_MATERIAL1)
144 ../src/cryptsetup -d /tmp/key1 -v luksOpen $(LOOPDEV) dummy
145 @-ls -l /dev/mapper/dummy > /dev/null
146 @../src/cryptsetup -v remove dummy
149 @echo Case: delete key test with /tmp/key1 as remaining key
150 # Key Slot 1 and key material section 1 must change, the rest must not
151 @cp $(IMG) $(ORIG_IMG)
152 ../src/cryptsetup -v -d /tmp/key1 luksDelKey $(LOOPDEV) 0
154 testing/fileDiffer.py $(IMG) $(ORIG_IMG) $(KEY_SLOT0) $(KEY_MATERIAL0_EXT)
155 echo "key0" | ../src/cryptsetup -v luksOpen $(LOOPDEV) dummy 2>/dev/null || true
156 ../src/cryptsetup -v luksOpen -d /tmp/key1 $(LOOPDEV) dummy 2>/dev/null
157 @../src/cryptsetup -v remove dummy
160 # Format test for ESSIV, and some other parameters.
161 @echo Case: parameter variation test
162 @dd if=/dev/zero of=$(IMG) count=20000
163 @cp $(IMG) $(ORIG_IMG)
164 @../src/cryptsetup -q -v -i 1000 -c aes-cbc-essiv:sha256 luksFormat $(LOOPDEV) /tmp/key1
166 testing/fileDiffer.py $(IMG) $(ORIG_IMG) $(LUKS_HEADER) $(KEY_SLOT0) $(KEY_MATERIAL0)
167 @../src/cryptsetup -d /tmp/key1 -v luksOpen $(LOOPDEV) dummy
168 @-ls -l /dev/mapper/dummy > /dev/null && echo "success"
169 @../src/cryptsetup -v remove dummy