Initial checking of what was revision 56 on http://luks.endorphin.org/svn/cryptsetup
[platform/upstream/cryptsetup.git] / luks / Makefile.am
1 moduledir = $(libdir)/cryptsetup
2
3 noinst_LTLIBRARIES = libluks.la
4
5 libluks_la_CFLAGS = -I sha
6
7 libluks_la_SOURCES = \
8         af.c \
9         pbkdf.c \
10         keymanage.c \
11         keyencryption.c \
12         hexprint.c \
13         random.c \
14         sha/sha1.c \
15         sha/hmac_sha1.h \
16         sha/hmac.h \
17         sha/hmac_sha1.c \
18         sha/sha1.h \
19         XORblock.h \
20         pbkdf.h \
21         random.h \
22         af.h \
23         luks.h
24
25 INCLUDES = -D_GNU_SOURCE                        \
26         -D_LARGEFILE64_SOURCE                   \
27         -D_FILE_OFFSET_BITS=64                  \
28         -I$(top_srcdir)/lib
29
30 EXTRA_DIST = sha/hmac.c testing/fileDiffer.py testing/compatimage.bz2
31
32 ORIG_IMG = /tmp/luks-test-orig
33 IMG = /tmp/luks-test
34 IMG1 = /tmp/luks-test1
35
36
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
38
39 KEY_SLOT0 = S208-211 S212-215 R216-247 S248-251 S251-255
40 KEY_MATERIAL0 = R4096-68096
41 KEY_MATERIAL0_EXT = R4096-68096
42
43 KEY_SLOT1 = S256-259 S260-263 R264-295 S296-299 S300-303 
44 KEY_MATERIAL1 = R69632-133632
45 KEY_MATERIAL1_EXT = S69632-133632
46
47 LOOPDEV = /dev/loop/5
48
49 test:
50         (cd ..; make clean; make CFLAGS=-Werror)
51         @if [ `id -u` != 0 ]; then      \
52                 echo Not root; \
53         fi
54         @if [ ! -e /tmp/key1 ]; then    \
55                 dd if=/dev/urandom of=/tmp/key1 count=1 bs=32; \
56         fi
57         @bzip2 -cd testing/compatimage.bz2 > $(IMG)
58         @-/sbin/losetup -d $(LOOPDEV)
59         @/sbin/losetup $(LOOPDEV) $(IMG)
60
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
65         @sync
66         testing/fileDiffer.py $(IMG) $(ORIG_IMG) 
67         @-ls -l /dev/mapper/dummy > /dev/null
68         @../src/cryptsetup remove dummy
69         @echo "success"
70
71
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
76         @sync
77         testing/fileDiffer.py $(IMG) $(ORIG_IMG) 
78         @echo "success"
79
80         @echo Case: format
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)
84         @sync
85         testing/fileDiffer.py $(IMG) $(ORIG_IMG) $(LUKS_HEADER) $(KEY_SLOT0) $(KEY_MATERIAL0)
86
87         @echo Case: open 
88 # Image must not change
89         @cp $(IMG) $(ORIG_IMG)
90         echo "key0" | ../src/cryptsetup -v luksOpen $(LOOPDEV) dummy
91         @sync
92         testing/fileDiffer.py $(IMG) $(ORIG_IMG) 
93         @-ls -l /dev/mapper/dummy > /dev/null
94         @../src/cryptsetup remove dummy
95         @echo "success"
96
97         @echo Case: add key
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)
101         @sync
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
106         @echo "success"
107
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
112         @sync
113         testing/fileDiffer.py $(IMG) $(ORIG_IMG)
114         @echo "success"
115
116 # Delete Key Test
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
121         @sync
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
126         @echo "success"
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         testing/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         testing/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 # Format test for ESSIV, and some other parameters. 
151         @echo Case: parameter variation test
152         @dd if=/dev/zero of=$(IMG) count=20000
153         @cp $(IMG) $(ORIG_IMG)
154         @../src/cryptsetup -q -v -i 1000 -c aes-cbc-essiv:sha256 luksFormat $(LOOPDEV) /tmp/key1
155         @sync
156         testing/fileDiffer.py $(IMG) $(ORIG_IMG) $(LUKS_HEADER) $(KEY_SLOT0) $(KEY_MATERIAL0)
157         @../src/cryptsetup -d /tmp/key1 -v luksOpen $(LOOPDEV) dummy
158         @-ls -l /dev/mapper/dummy > /dev/null && echo "success"
159         @../src/cryptsetup -v remove dummy