cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

284 (2541B)


      1#!/usr/bin/env bash
      2# group: rw
      3#
      4# Test ref count checks on encrypted images
      5#
      6# Copyright (C) 2019 Red Hat, Inc.
      7#
      8# This program is free software; you can redistribute it and/or modify
      9# it under the terms of the GNU General Public License as published by
     10# the Free Software Foundation; either version 2 of the License, or
     11# (at your option) any later version.
     12#
     13# This program is distributed in the hope that it will be useful,
     14# but WITHOUT ANY WARRANTY; without even the implied warranty of
     15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     16# GNU General Public License for more details.
     17#
     18# You should have received a copy of the GNU General Public License
     19# along with this program.  If not, see <http://www.gnu.org/licenses/>.
     20#
     21
     22# creator
     23owner=berrange@redhat.com
     24
     25seq=`basename $0`
     26echo "QA output created by $seq"
     27
     28status=1        # failure is the default!
     29
     30_cleanup()
     31{
     32        _cleanup_test_img
     33}
     34trap "_cleanup; exit \$status" 0 1 2 3 15
     35
     36# get standard environment, filters and checks
     37. ./common.rc
     38. ./common.filter
     39
     40_supported_fmt qcow2
     41_supported_proto generic
     42_supported_os Linux
     43_require_working_luks
     44
     45
     46size=1M
     47
     48SECRET="secret,id=sec0,data=astrochicken"
     49
     50IMGSPEC="driver=$IMGFMT,file.filename=$TEST_IMG,encrypt.key-secret=sec0"
     51QEMU_IO_OPTIONS=$QEMU_IO_OPTIONS_NO_FMT
     52
     53_run_test()
     54{
     55        IMGOPTSSYNTAX=true
     56        OLD_TEST_IMG="$TEST_IMG"
     57        TEST_IMG="driver=$IMGFMT,file.filename=$TEST_IMG,encrypt.key-secret=sec0"
     58        QEMU_IMG_EXTRA_ARGS="--image-opts --object $SECRET"
     59
     60        echo
     61        echo "== cluster size $csize"
     62        echo "== checking image refcounts =="
     63        _check_test_img
     64
     65        echo
     66        echo "== writing some data =="
     67        $QEMU_IO -c "write -P 0x9 0 1"  $QEMU_IMG_EXTRA_ARGS $TEST_IMG | _filter_qemu_io | _filter_testdir
     68        echo
     69        echo "== rechecking image refcounts =="
     70        _check_test_img
     71
     72        echo
     73        echo "== writing some more data =="
     74        $QEMU_IO -c "write -P 0x9 $csize 1" $QEMU_IMG_EXTRA_ARGS $TEST_IMG | _filter_qemu_io | _filter_testdir
     75        echo
     76        echo "== rechecking image refcounts =="
     77        _check_test_img
     78
     79        TEST_IMG="$OLD_TEST_IMG"
     80        QEMU_IMG_EXTRA_ARGS=
     81        IMGOPTSSYNTAX=
     82}
     83
     84
     85echo
     86echo "testing LUKS qcow2 encryption"
     87echo
     88
     89for csize in 512 2048 32768
     90do
     91  _make_test_img --object $SECRET -o "encrypt.format=luks,encrypt.key-secret=sec0,encrypt.iter-time=10,cluster_size=$csize" $size
     92  _run_test
     93  _cleanup_test_img
     94done
     95
     96# success, all done
     97echo "*** done"
     98rm -f $seq.full
     99status=0