patch 1.patch
[platform/upstream/cryptsetup.git] / tests / Makefile.am
1 TESTS = apitest
2
3 EXTRA_DIST = fileDiffer.py compatimage.img.bz2
4
5 apitest_SOURCES = apitest.c
6 apitest_LDADD = ../lib/libcryptsetup.la
7 apitest_LDFLAGS = -static
8 apitest_CFLAGS = -g -O0 -I$(top_srcdir)/lib/
9
10 check_PROGRAMS = apitest
11
12 compatimage.img:
13         @bzip2 -k -d compatimage.img.bz2
14
15 # LUKS tests
16 ORIG_IMG = /tmp/luks-test-orig
17 IMG = /tmp/luks-test
18 IMG1 = /tmp/luks-test1
19
20
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
22
23 KEY_SLOT0 = S208-211 S212-215 R216-247 S248-251 S251-255
24 KEY_MATERIAL0 = R4096-68096
25 KEY_MATERIAL0_EXT = R4096-68096
26
27 KEY_SLOT1 = S256-259 S260-263 R264-295 S296-299 S300-303 
28 KEY_MATERIAL1 = R69632-133632
29 KEY_MATERIAL1_EXT = S69632-133632
30
31 LOOPDEV = /dev/loop5
32
33 test:
34 #       (cd ..; make clean; make CFLAGS=-Werror)
35         @if [ `id -u` != 0 ]; then      \
36                 echo Not root; \
37         fi
38         @if [ ! -e /tmp/key1 ]; then    \
39                 dd if=/dev/urandom of=/tmp/key1 count=1 bs=32; \
40         fi
41         @bzip2 -cd compatimage.img.bz2 > $(IMG)
42         @-/sbin/losetup -d $(LOOPDEV)
43         @/sbin/losetup $(LOOPDEV) $(IMG)
44
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
49         @sync
50         ./fileDiffer.py $(IMG) $(ORIG_IMG) 
51         @-ls -l /dev/mapper/dummy > /dev/null
52         @../src/cryptsetup remove dummy
53         @echo "success"
54
55
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
60         @sync
61         ./fileDiffer.py $(IMG) $(ORIG_IMG) 
62         @echo "success"
63
64         @echo Case: format
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)
68         @sync
69         ./fileDiffer.py $(IMG) $(ORIG_IMG) $(LUKS_HEADER) $(KEY_SLOT0) $(KEY_MATERIAL0)
70
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)
74         @sync
75         ./fileDiffer.py $(IMG) $(ORIG_IMG) $(LUKS_HEADER) $(KEY_SLOT0) $(KEY_MATERIAL0)
76
77         @echo Case: open 
78 # Image must not change
79         @cp $(IMG) $(ORIG_IMG)
80         echo "key0" | ../src/cryptsetup -v luksOpen $(LOOPDEV) dummy
81         @sync
82         ./fileDiffer.py $(IMG) $(ORIG_IMG) 
83         @-ls -l /dev/mapper/dummy > /dev/null
84         @../src/cryptsetup remove dummy
85         @echo "success"
86
87         @echo Case: add key
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)
91         @sync
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
96         @echo "success"
97
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
102         @sync
103         ./fileDiffer.py $(IMG) $(ORIG_IMG)
104         @echo "success"
105
106 # Delete Key Test
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
111         @sync
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
116         @echo "success"
117
118 # Non-Exclusive Open test
119 #       @echo Case: Non-Exclusive Open
120 #       echo "key0" | ../src/cryptsetup -v --readonly luksOpen $(LOOPDEV) dummy1 2>/dev/null
121 # must fail
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
126
127
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
132         @sync
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
137         @echo "success"
138
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
143         @sync
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
148         @echo "success"
149
150 # Delete last slot
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
155         @sync
156         echo "key0" | ../src/cryptsetup -v luksOpen $(LOOPDEV) dummy 2>/dev/null || true
157         @echo "success"
158
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
164         @sync
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
169
170         @-/sbin/losetup -d $(LOOPDEV)