xref: /openbmc/qemu/tests/qemu-iotests/263 (revision 4511400fb78e72d4d9916ed60e04f4e99e594f65)
11825cc07SMaxim Levitsky#!/usr/bin/env bash
29dd003a9SVladimir Sementsov-Ogievskiy# group: rw quick
31825cc07SMaxim Levitsky#
41825cc07SMaxim Levitsky# Test encrypted write that crosses cluster boundary of two unallocated clusters
51825cc07SMaxim Levitsky# Based on 188
61825cc07SMaxim Levitsky#
71825cc07SMaxim Levitsky# Copyright (C) 2019 Red Hat, Inc.
81825cc07SMaxim Levitsky#
91825cc07SMaxim Levitsky# This program is free software; you can redistribute it and/or modify
101825cc07SMaxim Levitsky# it under the terms of the GNU General Public License as published by
111825cc07SMaxim Levitsky# the Free Software Foundation; either version 2 of the License, or
121825cc07SMaxim Levitsky# (at your option) any later version.
131825cc07SMaxim Levitsky#
141825cc07SMaxim Levitsky# This program is distributed in the hope that it will be useful,
151825cc07SMaxim Levitsky# but WITHOUT ANY WARRANTY; without even the implied warranty of
161825cc07SMaxim Levitsky# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
171825cc07SMaxim Levitsky# GNU General Public License for more details.
181825cc07SMaxim Levitsky#
191825cc07SMaxim Levitsky# You should have received a copy of the GNU General Public License
201825cc07SMaxim Levitsky# along with this program.  If not, see <http://www.gnu.org/licenses/>.
211825cc07SMaxim Levitsky#
221825cc07SMaxim Levitsky
231825cc07SMaxim Levitsky# creator
241825cc07SMaxim Levitskyowner=mlevitsk@redhat.com
251825cc07SMaxim Levitsky
261825cc07SMaxim Levitskyseq=`basename $0`
271825cc07SMaxim Levitskyecho "QA output created by $seq"
281825cc07SMaxim Levitsky
291825cc07SMaxim Levitskystatus=1	# failure is the default!
301825cc07SMaxim Levitsky
311825cc07SMaxim Levitsky_cleanup()
321825cc07SMaxim Levitsky{
331825cc07SMaxim Levitsky	_cleanup_test_img
341825cc07SMaxim Levitsky}
351825cc07SMaxim Levitskytrap "_cleanup; exit \$status" 0 1 2 3 15
361825cc07SMaxim Levitsky
37*cff61408SThomas HuthIMGOPTSSYNTAX=true
38*cff61408SThomas Huth
391825cc07SMaxim Levitsky# get standard environment, filters and checks
401825cc07SMaxim Levitsky. ./common.rc
411825cc07SMaxim Levitsky. ./common.filter
421825cc07SMaxim Levitsky
431825cc07SMaxim Levitsky_supported_fmt qcow2
441825cc07SMaxim Levitsky_supported_proto generic
451825cc07SMaxim Levitsky_supported_os Linux
46d2a839edSMax Reitz_require_working_luks
471825cc07SMaxim Levitsky
481825cc07SMaxim Levitsky
491825cc07SMaxim Levitskysize=1M
501825cc07SMaxim Levitsky
511825cc07SMaxim LevitskySECRET="secret,id=sec0,data=astrochicken"
521825cc07SMaxim LevitskyQEMU_IO_OPTIONS=$QEMU_IO_OPTIONS_NO_FMT
531825cc07SMaxim Levitsky
541825cc07SMaxim Levitsky
551825cc07SMaxim Levitsky_run_test()
561825cc07SMaxim Levitsky{
571825cc07SMaxim Levitsky	echo "== reading the whole image =="
581825cc07SMaxim Levitsky	$QEMU_IO --object $SECRET -c "read -P 0 0 $size" --image-opts "$1" | _filter_qemu_io | _filter_testdir
591825cc07SMaxim Levitsky
601825cc07SMaxim Levitsky	echo
611825cc07SMaxim Levitsky	echo "== write two 512 byte sectors on a cluster boundary =="
621825cc07SMaxim Levitsky	$QEMU_IO --object $SECRET -c "write -P 0xAA 0xFE00 0x400" --image-opts "$1" | _filter_qemu_io | _filter_testdir
631825cc07SMaxim Levitsky
641825cc07SMaxim Levitsky	echo
651825cc07SMaxim Levitsky	echo "== verify that the rest of the image is not changed =="
661825cc07SMaxim Levitsky	$QEMU_IO --object $SECRET -c "read -P 0x00 0x00000 0xFE00" --image-opts "$1" | _filter_qemu_io | _filter_testdir
671825cc07SMaxim Levitsky	$QEMU_IO --object $SECRET -c "read -P 0xAA 0x0FE00 0x400" --image-opts "$1" | _filter_qemu_io | _filter_testdir
681825cc07SMaxim Levitsky	$QEMU_IO --object $SECRET -c "read -P 0x00 0x10200 0xEFE00" --image-opts "$1" | _filter_qemu_io | _filter_testdir
691825cc07SMaxim Levitsky
701825cc07SMaxim Levitsky}
711825cc07SMaxim Levitsky
721825cc07SMaxim Levitsky
731825cc07SMaxim Levitskyecho
741825cc07SMaxim Levitskyecho "testing LUKS qcow2 encryption"
751825cc07SMaxim Levitskyecho
761825cc07SMaxim Levitsky
771825cc07SMaxim Levitsky_make_test_img --object $SECRET -o "encrypt.format=luks,encrypt.key-secret=sec0,encrypt.iter-time=10,cluster_size=64K" $size
78*cff61408SThomas Huth_run_test "$TEST_IMG,encrypt.key-secret=sec0"
791825cc07SMaxim Levitsky_cleanup_test_img
801825cc07SMaxim Levitsky
811825cc07SMaxim Levitskyecho
821825cc07SMaxim Levitskyecho "testing legacy AES qcow2 encryption"
831825cc07SMaxim Levitskyecho
841825cc07SMaxim Levitsky
851825cc07SMaxim Levitsky
861825cc07SMaxim Levitsky_make_test_img --object $SECRET -o "encrypt.format=aes,encrypt.key-secret=sec0,cluster_size=64K" $size
87*cff61408SThomas Huth_run_test "$TEST_IMG,encrypt.key-secret=sec0"
881825cc07SMaxim Levitsky_cleanup_test_img
891825cc07SMaxim Levitsky
901825cc07SMaxim Levitsky
911825cc07SMaxim Levitsky
921825cc07SMaxim Levitsky# success, all done
931825cc07SMaxim Levitskyecho "*** done"
941825cc07SMaxim Levitskyrm -f $seq.full
951825cc07SMaxim Levitskystatus=0
96