xref: /openbmc/qemu/tests/qemu-iotests/263 (revision 9dd003a99842d1d82c336e45c5cce656149de382)
11825cc07SMaxim Levitsky#!/usr/bin/env bash
2*9dd003a9SVladimir 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
371825cc07SMaxim Levitsky# get standard environment, filters and checks
381825cc07SMaxim Levitsky. ./common.rc
391825cc07SMaxim Levitsky. ./common.filter
401825cc07SMaxim Levitsky
411825cc07SMaxim Levitsky_supported_fmt qcow2
421825cc07SMaxim Levitsky_supported_proto generic
431825cc07SMaxim Levitsky_supported_os Linux
44d2a839edSMax Reitz_require_working_luks
451825cc07SMaxim Levitsky
461825cc07SMaxim Levitsky
471825cc07SMaxim Levitskysize=1M
481825cc07SMaxim Levitsky
491825cc07SMaxim LevitskySECRET="secret,id=sec0,data=astrochicken"
501825cc07SMaxim LevitskyQEMU_IO_OPTIONS=$QEMU_IO_OPTIONS_NO_FMT
511825cc07SMaxim Levitsky
521825cc07SMaxim Levitsky
531825cc07SMaxim Levitsky_run_test()
541825cc07SMaxim Levitsky{
551825cc07SMaxim Levitsky	echo "== reading the whole image =="
561825cc07SMaxim Levitsky	$QEMU_IO --object $SECRET -c "read -P 0 0 $size" --image-opts "$1" | _filter_qemu_io | _filter_testdir
571825cc07SMaxim Levitsky
581825cc07SMaxim Levitsky	echo
591825cc07SMaxim Levitsky	echo "== write two 512 byte sectors on a cluster boundary =="
601825cc07SMaxim Levitsky	$QEMU_IO --object $SECRET -c "write -P 0xAA 0xFE00 0x400" --image-opts "$1" | _filter_qemu_io | _filter_testdir
611825cc07SMaxim Levitsky
621825cc07SMaxim Levitsky	echo
631825cc07SMaxim Levitsky	echo "== verify that the rest of the image is not changed =="
641825cc07SMaxim Levitsky	$QEMU_IO --object $SECRET -c "read -P 0x00 0x00000 0xFE00" --image-opts "$1" | _filter_qemu_io | _filter_testdir
651825cc07SMaxim Levitsky	$QEMU_IO --object $SECRET -c "read -P 0xAA 0x0FE00 0x400" --image-opts "$1" | _filter_qemu_io | _filter_testdir
661825cc07SMaxim Levitsky	$QEMU_IO --object $SECRET -c "read -P 0x00 0x10200 0xEFE00" --image-opts "$1" | _filter_qemu_io | _filter_testdir
671825cc07SMaxim Levitsky
681825cc07SMaxim Levitsky}
691825cc07SMaxim Levitsky
701825cc07SMaxim Levitsky
711825cc07SMaxim Levitskyecho
721825cc07SMaxim Levitskyecho "testing LUKS qcow2 encryption"
731825cc07SMaxim Levitskyecho
741825cc07SMaxim Levitsky
751825cc07SMaxim Levitsky_make_test_img --object $SECRET -o "encrypt.format=luks,encrypt.key-secret=sec0,encrypt.iter-time=10,cluster_size=64K" $size
761825cc07SMaxim Levitsky_run_test "driver=$IMGFMT,encrypt.key-secret=sec0,file.filename=$TEST_IMG"
771825cc07SMaxim Levitsky_cleanup_test_img
781825cc07SMaxim Levitsky
791825cc07SMaxim Levitskyecho
801825cc07SMaxim Levitskyecho "testing legacy AES qcow2 encryption"
811825cc07SMaxim Levitskyecho
821825cc07SMaxim Levitsky
831825cc07SMaxim Levitsky
841825cc07SMaxim Levitsky_make_test_img --object $SECRET -o "encrypt.format=aes,encrypt.key-secret=sec0,cluster_size=64K" $size
851825cc07SMaxim Levitsky_run_test "driver=$IMGFMT,encrypt.key-secret=sec0,file.filename=$TEST_IMG"
861825cc07SMaxim Levitsky_cleanup_test_img
871825cc07SMaxim Levitsky
881825cc07SMaxim Levitsky
891825cc07SMaxim Levitsky
901825cc07SMaxim Levitsky# success, all done
911825cc07SMaxim Levitskyecho "*** done"
921825cc07SMaxim Levitskyrm -f $seq.full
931825cc07SMaxim Levitskystatus=0
94