xref: /openbmc/qemu/tests/qemu-iotests/263 (revision 1825cc0783ccf0ec5d9f0b225a99b340bdd4c68f)
1*1825cc07SMaxim Levitsky#!/usr/bin/env bash
2*1825cc07SMaxim Levitsky#
3*1825cc07SMaxim Levitsky# Test encrypted write that crosses cluster boundary of two unallocated clusters
4*1825cc07SMaxim Levitsky# Based on 188
5*1825cc07SMaxim Levitsky#
6*1825cc07SMaxim Levitsky# Copyright (C) 2019 Red Hat, Inc.
7*1825cc07SMaxim Levitsky#
8*1825cc07SMaxim Levitsky# This program is free software; you can redistribute it and/or modify
9*1825cc07SMaxim Levitsky# it under the terms of the GNU General Public License as published by
10*1825cc07SMaxim Levitsky# the Free Software Foundation; either version 2 of the License, or
11*1825cc07SMaxim Levitsky# (at your option) any later version.
12*1825cc07SMaxim Levitsky#
13*1825cc07SMaxim Levitsky# This program is distributed in the hope that it will be useful,
14*1825cc07SMaxim Levitsky# but WITHOUT ANY WARRANTY; without even the implied warranty of
15*1825cc07SMaxim Levitsky# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16*1825cc07SMaxim Levitsky# GNU General Public License for more details.
17*1825cc07SMaxim Levitsky#
18*1825cc07SMaxim Levitsky# You should have received a copy of the GNU General Public License
19*1825cc07SMaxim Levitsky# along with this program.  If not, see <http://www.gnu.org/licenses/>.
20*1825cc07SMaxim Levitsky#
21*1825cc07SMaxim Levitsky
22*1825cc07SMaxim Levitsky# creator
23*1825cc07SMaxim Levitskyowner=mlevitsk@redhat.com
24*1825cc07SMaxim Levitsky
25*1825cc07SMaxim Levitskyseq=`basename $0`
26*1825cc07SMaxim Levitskyecho "QA output created by $seq"
27*1825cc07SMaxim Levitsky
28*1825cc07SMaxim Levitskystatus=1	# failure is the default!
29*1825cc07SMaxim Levitsky
30*1825cc07SMaxim Levitsky_cleanup()
31*1825cc07SMaxim Levitsky{
32*1825cc07SMaxim Levitsky	_cleanup_test_img
33*1825cc07SMaxim Levitsky}
34*1825cc07SMaxim Levitskytrap "_cleanup; exit \$status" 0 1 2 3 15
35*1825cc07SMaxim Levitsky
36*1825cc07SMaxim Levitsky# get standard environment, filters and checks
37*1825cc07SMaxim Levitsky. ./common.rc
38*1825cc07SMaxim Levitsky. ./common.filter
39*1825cc07SMaxim Levitsky
40*1825cc07SMaxim Levitsky_supported_fmt qcow2
41*1825cc07SMaxim Levitsky_supported_proto generic
42*1825cc07SMaxim Levitsky_supported_os Linux
43*1825cc07SMaxim Levitsky
44*1825cc07SMaxim Levitsky
45*1825cc07SMaxim Levitskysize=1M
46*1825cc07SMaxim Levitsky
47*1825cc07SMaxim LevitskySECRET="secret,id=sec0,data=astrochicken"
48*1825cc07SMaxim LevitskyQEMU_IO_OPTIONS=$QEMU_IO_OPTIONS_NO_FMT
49*1825cc07SMaxim Levitsky
50*1825cc07SMaxim Levitsky
51*1825cc07SMaxim Levitsky_run_test()
52*1825cc07SMaxim Levitsky{
53*1825cc07SMaxim Levitsky	echo "== reading the whole image =="
54*1825cc07SMaxim Levitsky	$QEMU_IO --object $SECRET -c "read -P 0 0 $size" --image-opts "$1" | _filter_qemu_io | _filter_testdir
55*1825cc07SMaxim Levitsky
56*1825cc07SMaxim Levitsky	echo
57*1825cc07SMaxim Levitsky	echo "== write two 512 byte sectors on a cluster boundary =="
58*1825cc07SMaxim Levitsky	$QEMU_IO --object $SECRET -c "write -P 0xAA 0xFE00 0x400" --image-opts "$1" | _filter_qemu_io | _filter_testdir
59*1825cc07SMaxim Levitsky
60*1825cc07SMaxim Levitsky	echo
61*1825cc07SMaxim Levitsky	echo "== verify that the rest of the image is not changed =="
62*1825cc07SMaxim Levitsky	$QEMU_IO --object $SECRET -c "read -P 0x00 0x00000 0xFE00" --image-opts "$1" | _filter_qemu_io | _filter_testdir
63*1825cc07SMaxim Levitsky	$QEMU_IO --object $SECRET -c "read -P 0xAA 0x0FE00 0x400" --image-opts "$1" | _filter_qemu_io | _filter_testdir
64*1825cc07SMaxim Levitsky	$QEMU_IO --object $SECRET -c "read -P 0x00 0x10200 0xEFE00" --image-opts "$1" | _filter_qemu_io | _filter_testdir
65*1825cc07SMaxim Levitsky
66*1825cc07SMaxim Levitsky}
67*1825cc07SMaxim Levitsky
68*1825cc07SMaxim Levitsky
69*1825cc07SMaxim Levitskyecho
70*1825cc07SMaxim Levitskyecho "testing LUKS qcow2 encryption"
71*1825cc07SMaxim Levitskyecho
72*1825cc07SMaxim Levitsky
73*1825cc07SMaxim Levitsky_make_test_img --object $SECRET -o "encrypt.format=luks,encrypt.key-secret=sec0,encrypt.iter-time=10,cluster_size=64K" $size
74*1825cc07SMaxim Levitsky_run_test "driver=$IMGFMT,encrypt.key-secret=sec0,file.filename=$TEST_IMG"
75*1825cc07SMaxim Levitsky_cleanup_test_img
76*1825cc07SMaxim Levitsky
77*1825cc07SMaxim Levitskyecho
78*1825cc07SMaxim Levitskyecho "testing legacy AES qcow2 encryption"
79*1825cc07SMaxim Levitskyecho
80*1825cc07SMaxim Levitsky
81*1825cc07SMaxim Levitsky
82*1825cc07SMaxim Levitsky_make_test_img --object $SECRET -o "encrypt.format=aes,encrypt.key-secret=sec0,cluster_size=64K" $size
83*1825cc07SMaxim Levitsky_run_test "driver=$IMGFMT,encrypt.key-secret=sec0,file.filename=$TEST_IMG"
84*1825cc07SMaxim Levitsky_cleanup_test_img
85*1825cc07SMaxim Levitsky
86*1825cc07SMaxim Levitsky
87*1825cc07SMaxim Levitsky
88*1825cc07SMaxim Levitsky# success, all done
89*1825cc07SMaxim Levitskyecho "*** done"
90*1825cc07SMaxim Levitskyrm -f $seq.full
91*1825cc07SMaxim Levitskystatus=0
92