blob: 9059eb26b3bc969400018fd30abe2aa28b52f572 [file] [log] [blame]
Vladimir Sementsov-Ogievskiy92a476e2021-01-16 16:44:18 +03001#!/usr/bin/env bash
Vladimir Sementsov-Ogievskiy9dd003a2021-01-16 16:44:19 +03002# group: rw quick
Maxim Levitsky11d80bf2020-06-25 14:55:44 +02003#
4# Copyright (C) 2019 Red Hat, Inc.
5#
6# This program is free software; you can redistribute it and/or modify
7# it under the terms of the GNU General Public License as published by
8# the Free Software Foundation; either version 2 of the License, or
9# (at your option) any later version.
10#
11# This program is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14# GNU General Public License for more details.
15#
16# You should have received a copy of the GNU General Public License
17# along with this program. If not, see <http://www.gnu.org/licenses/>.
18#
19
20# creator
21owner=mlevitsk@redhat.com
22
23seq=`basename $0`
24echo "QA output created by $seq"
25
26status=1 # failure is the default!
27
28_cleanup()
29{
30 _cleanup_test_img
31}
32trap "_cleanup; exit \$status" 0 1 2 3 15
33
34# get standard environment, filters and checks
35. ./common.rc
36. ./common.filter
37
38_supported_fmt luks
Max Reitz57284d22020-10-27 20:05:59 +010039_supported_proto file fuse #TODO
Maxim Levitsky11d80bf2020-06-25 14:55:44 +020040
41QEMU_IO_OPTIONS=$QEMU_IO_OPTIONS_NO_FMT
42
43# you are supposed to see the password as *******, see :-)
44S0="--object secret,id=sec0,data=hunter0"
45S1="--object secret,id=sec1,data=hunter1"
46SECRETS="$S0 $S1"
47
48
49IMGS0="--image-opts driver=$IMGFMT,file.filename=$TEST_IMG,key-secret=sec0"
50IMGS1="--image-opts driver=$IMGFMT,file.filename=$TEST_IMG,key-secret=sec1"
51
52echo "== creating a test image =="
53_make_test_img $S0 -o "key-secret=sec0,iter-time=10" 32M
54
55echo
56echo "== test that key 0 opens the image =="
57$QEMU_IO $S0 -c "read 0 4096" $IMGS0 | _filter_qemu_io | _filter_testdir
58
59echo
60echo "== adding a password to slot 1 =="
61$QEMU_IMG amend $SECRETS $IMGS0 -o state=active,new-secret=sec1,keyslot=1,iter-time=10
62
63echo
64echo "== 'backup' the image header =="
65dd if=$TEST_IMG_FILE of=${TEST_IMG_FILE}.bk bs=4K skip=0 count=1
66
67echo
68echo "== erase slot 0 =="
69$QEMU_IMG amend $SECRETS $IMGS1 -o state=inactive,keyslot=0 | _filter_img_create
70
71echo
72echo "== test that key 0 doesn't open the image =="
73$QEMU_IO $S0 -c "read 0 4096" $IMGS0 | _filter_qemu_io | _filter_testdir
74
75echo
76echo "== 'restore' the image header =="
77dd if=${TEST_IMG_FILE}.bk of=${TEST_IMG_FILE} bs=4K skip=0 count=1 conv=notrunc
78
79echo
80echo "== test that key 0 still doesn't open the image (key material is erased) =="
81$QEMU_IO $SECRETS -c "read 0 4096" $IMGS0 | _filter_qemu_io | _filter_testdir
82
83echo
84echo "== test that key 1 still works =="
85$QEMU_IO $SECRETS -c "read 0 4096" $IMGS1 | _filter_qemu_io | _filter_testdir
86
87echo "*** done"
88rm -f $seq.full
89status=0
90
91
92exit 0