mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 16:23:55 -06:00
qcow2: convert QCow2 to use QCryptoBlock for encryption
This converts the qcow2 driver to make use of the QCryptoBlock APIs for encrypting image content, using the legacy QCow2 AES scheme. With this change it is now required to use the QCryptoSecret object for providing passwords, instead of the current block password APIs / interactive prompting. $QEMU \ -object secret,id=sec0,file=/home/berrange/encrypted.pw \ -drive file=/home/berrange/encrypted.qcow2,encrypt.key-secret=sec0 The test 087 could be simplified since there is no longer a difference in behaviour when using blockdev_add with encrypted images for the running vs stopped CPU state. Signed-off-by: Daniel P. Berrange <berrange@redhat.com> Message-id: 20170623162419.26068-12-berrange@redhat.com Reviewed-by: Alberto Garcia <berto@igalia.com> Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
parent
446d306d23
commit
b25b387fa5
14 changed files with 265 additions and 188 deletions
|
@ -106,7 +106,7 @@ test_qemu_img create -f $IMGFMT -o preallocation=1234 "$TEST_IMG" 64M
|
|||
echo "== Check encryption option =="
|
||||
echo
|
||||
test_qemu_img create -f $IMGFMT -o encryption=off "$TEST_IMG" 64M
|
||||
test_qemu_img create -f $IMGFMT -o encryption=on "$TEST_IMG" 64M
|
||||
test_qemu_img create -f $IMGFMT --object secret,id=sec0,data=123456 -o encryption=on,encrypt.key-secret=sec0 "$TEST_IMG" 64M
|
||||
|
||||
echo "== Check lazy_refcounts option (only with v3) =="
|
||||
echo
|
||||
|
|
|
@ -190,8 +190,8 @@ Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 cluster_size=65536 preall
|
|||
qemu-img create -f qcow2 -o encryption=off TEST_DIR/t.qcow2 64M
|
||||
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 encryption=off cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
qemu-img create -f qcow2 -o encryption=on TEST_DIR/t.qcow2 64M
|
||||
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 encryption=on cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||
qemu-img create -f qcow2 --object secret,id=sec0,data=123456 -o encryption=on,encrypt.key-secret=sec0 TEST_DIR/t.qcow2 64M
|
||||
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 encryption=on encrypt.key-secret=sec0 cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
== Check lazy_refcounts option (only with v3) ==
|
||||
|
||||
|
|
|
@ -50,6 +50,7 @@ backing_file File name of a base image
|
|||
backing_fmt Image format of the base image
|
||||
encryption Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
encrypt.format Encrypt the image, format choices: 'aes'
|
||||
encrypt.key-secret ID of the secret that provides the AES encryption key
|
||||
cluster_size qcow2 cluster size
|
||||
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
lazy_refcounts Postpone refcount updates
|
||||
|
@ -64,6 +65,7 @@ backing_file File name of a base image
|
|||
backing_fmt Image format of the base image
|
||||
encryption Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
encrypt.format Encrypt the image, format choices: 'aes'
|
||||
encrypt.key-secret ID of the secret that provides the AES encryption key
|
||||
cluster_size qcow2 cluster size
|
||||
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
lazy_refcounts Postpone refcount updates
|
||||
|
@ -78,6 +80,7 @@ backing_file File name of a base image
|
|||
backing_fmt Image format of the base image
|
||||
encryption Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
encrypt.format Encrypt the image, format choices: 'aes'
|
||||
encrypt.key-secret ID of the secret that provides the AES encryption key
|
||||
cluster_size qcow2 cluster size
|
||||
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
lazy_refcounts Postpone refcount updates
|
||||
|
@ -92,6 +95,7 @@ backing_file File name of a base image
|
|||
backing_fmt Image format of the base image
|
||||
encryption Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
encrypt.format Encrypt the image, format choices: 'aes'
|
||||
encrypt.key-secret ID of the secret that provides the AES encryption key
|
||||
cluster_size qcow2 cluster size
|
||||
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
lazy_refcounts Postpone refcount updates
|
||||
|
@ -106,6 +110,7 @@ backing_file File name of a base image
|
|||
backing_fmt Image format of the base image
|
||||
encryption Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
encrypt.format Encrypt the image, format choices: 'aes'
|
||||
encrypt.key-secret ID of the secret that provides the AES encryption key
|
||||
cluster_size qcow2 cluster size
|
||||
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
lazy_refcounts Postpone refcount updates
|
||||
|
@ -120,6 +125,7 @@ backing_file File name of a base image
|
|||
backing_fmt Image format of the base image
|
||||
encryption Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
encrypt.format Encrypt the image, format choices: 'aes'
|
||||
encrypt.key-secret ID of the secret that provides the AES encryption key
|
||||
cluster_size qcow2 cluster size
|
||||
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
lazy_refcounts Postpone refcount updates
|
||||
|
@ -134,6 +140,7 @@ backing_file File name of a base image
|
|||
backing_fmt Image format of the base image
|
||||
encryption Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
encrypt.format Encrypt the image, format choices: 'aes'
|
||||
encrypt.key-secret ID of the secret that provides the AES encryption key
|
||||
cluster_size qcow2 cluster size
|
||||
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
lazy_refcounts Postpone refcount updates
|
||||
|
@ -148,6 +155,7 @@ backing_file File name of a base image
|
|||
backing_fmt Image format of the base image
|
||||
encryption Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
encrypt.format Encrypt the image, format choices: 'aes'
|
||||
encrypt.key-secret ID of the secret that provides the AES encryption key
|
||||
cluster_size qcow2 cluster size
|
||||
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
lazy_refcounts Postpone refcount updates
|
||||
|
@ -177,6 +185,7 @@ backing_file File name of a base image
|
|||
backing_fmt Image format of the base image
|
||||
encryption Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
encrypt.format Encrypt the image, format choices: 'aes'
|
||||
encrypt.key-secret ID of the secret that provides the AES encryption key
|
||||
cluster_size qcow2 cluster size
|
||||
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
lazy_refcounts Postpone refcount updates
|
||||
|
@ -240,6 +249,7 @@ backing_file File name of a base image
|
|||
backing_fmt Image format of the base image
|
||||
encryption Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
encrypt.format Encrypt the image, format choices: 'aes'
|
||||
encrypt.key-secret ID of the secret that provides the AES encryption key
|
||||
cluster_size qcow2 cluster size
|
||||
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
lazy_refcounts Postpone refcount updates
|
||||
|
@ -254,6 +264,7 @@ backing_file File name of a base image
|
|||
backing_fmt Image format of the base image
|
||||
encryption Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
encrypt.format Encrypt the image, format choices: 'aes'
|
||||
encrypt.key-secret ID of the secret that provides the AES encryption key
|
||||
cluster_size qcow2 cluster size
|
||||
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
lazy_refcounts Postpone refcount updates
|
||||
|
@ -268,6 +279,7 @@ backing_file File name of a base image
|
|||
backing_fmt Image format of the base image
|
||||
encryption Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
encrypt.format Encrypt the image, format choices: 'aes'
|
||||
encrypt.key-secret ID of the secret that provides the AES encryption key
|
||||
cluster_size qcow2 cluster size
|
||||
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
lazy_refcounts Postpone refcount updates
|
||||
|
@ -282,6 +294,7 @@ backing_file File name of a base image
|
|||
backing_fmt Image format of the base image
|
||||
encryption Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
encrypt.format Encrypt the image, format choices: 'aes'
|
||||
encrypt.key-secret ID of the secret that provides the AES encryption key
|
||||
cluster_size qcow2 cluster size
|
||||
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
lazy_refcounts Postpone refcount updates
|
||||
|
@ -296,6 +309,7 @@ backing_file File name of a base image
|
|||
backing_fmt Image format of the base image
|
||||
encryption Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
encrypt.format Encrypt the image, format choices: 'aes'
|
||||
encrypt.key-secret ID of the secret that provides the AES encryption key
|
||||
cluster_size qcow2 cluster size
|
||||
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
lazy_refcounts Postpone refcount updates
|
||||
|
@ -310,6 +324,7 @@ backing_file File name of a base image
|
|||
backing_fmt Image format of the base image
|
||||
encryption Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
encrypt.format Encrypt the image, format choices: 'aes'
|
||||
encrypt.key-secret ID of the secret that provides the AES encryption key
|
||||
cluster_size qcow2 cluster size
|
||||
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
lazy_refcounts Postpone refcount updates
|
||||
|
@ -324,6 +339,7 @@ backing_file File name of a base image
|
|||
backing_fmt Image format of the base image
|
||||
encryption Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
encrypt.format Encrypt the image, format choices: 'aes'
|
||||
encrypt.key-secret ID of the secret that provides the AES encryption key
|
||||
cluster_size qcow2 cluster size
|
||||
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
lazy_refcounts Postpone refcount updates
|
||||
|
@ -338,6 +354,7 @@ backing_file File name of a base image
|
|||
backing_fmt Image format of the base image
|
||||
encryption Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
encrypt.format Encrypt the image, format choices: 'aes'
|
||||
encrypt.key-secret ID of the secret that provides the AES encryption key
|
||||
cluster_size qcow2 cluster size
|
||||
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
lazy_refcounts Postpone refcount updates
|
||||
|
@ -367,6 +384,7 @@ backing_file File name of a base image
|
|||
backing_fmt Image format of the base image
|
||||
encryption Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
encrypt.format Encrypt the image, format choices: 'aes'
|
||||
encrypt.key-secret ID of the secret that provides the AES encryption key
|
||||
cluster_size qcow2 cluster size
|
||||
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
lazy_refcounts Postpone refcount updates
|
||||
|
@ -427,6 +445,7 @@ backing_file File name of a base image
|
|||
backing_fmt Image format of the base image
|
||||
encryption Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
encrypt.format Encrypt the image, format choices: 'aes'
|
||||
encrypt.key-secret ID of the secret that provides the AES encryption key
|
||||
cluster_size qcow2 cluster size
|
||||
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
lazy_refcounts Postpone refcount updates
|
||||
|
@ -441,6 +460,7 @@ backing_file File name of a base image
|
|||
backing_fmt Image format of the base image
|
||||
encryption Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
encrypt.format Encrypt the image, format choices: 'aes'
|
||||
encrypt.key-secret ID of the secret that provides the AES encryption key
|
||||
cluster_size qcow2 cluster size
|
||||
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
lazy_refcounts Postpone refcount updates
|
||||
|
@ -455,6 +475,7 @@ backing_file File name of a base image
|
|||
backing_fmt Image format of the base image
|
||||
encryption Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
encrypt.format Encrypt the image, format choices: 'aes'
|
||||
encrypt.key-secret ID of the secret that provides the AES encryption key
|
||||
cluster_size qcow2 cluster size
|
||||
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
lazy_refcounts Postpone refcount updates
|
||||
|
@ -469,6 +490,7 @@ backing_file File name of a base image
|
|||
backing_fmt Image format of the base image
|
||||
encryption Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
encrypt.format Encrypt the image, format choices: 'aes'
|
||||
encrypt.key-secret ID of the secret that provides the AES encryption key
|
||||
cluster_size qcow2 cluster size
|
||||
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
lazy_refcounts Postpone refcount updates
|
||||
|
@ -483,6 +505,7 @@ backing_file File name of a base image
|
|||
backing_fmt Image format of the base image
|
||||
encryption Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
encrypt.format Encrypt the image, format choices: 'aes'
|
||||
encrypt.key-secret ID of the secret that provides the AES encryption key
|
||||
cluster_size qcow2 cluster size
|
||||
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
lazy_refcounts Postpone refcount updates
|
||||
|
@ -497,6 +520,7 @@ backing_file File name of a base image
|
|||
backing_fmt Image format of the base image
|
||||
encryption Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
encrypt.format Encrypt the image, format choices: 'aes'
|
||||
encrypt.key-secret ID of the secret that provides the AES encryption key
|
||||
cluster_size qcow2 cluster size
|
||||
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
lazy_refcounts Postpone refcount updates
|
||||
|
@ -511,6 +535,7 @@ backing_file File name of a base image
|
|||
backing_fmt Image format of the base image
|
||||
encryption Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
encrypt.format Encrypt the image, format choices: 'aes'
|
||||
encrypt.key-secret ID of the secret that provides the AES encryption key
|
||||
cluster_size qcow2 cluster size
|
||||
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
lazy_refcounts Postpone refcount updates
|
||||
|
@ -525,6 +550,7 @@ backing_file File name of a base image
|
|||
backing_fmt Image format of the base image
|
||||
encryption Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
encrypt.format Encrypt the image, format choices: 'aes'
|
||||
encrypt.key-secret ID of the secret that provides the AES encryption key
|
||||
cluster_size qcow2 cluster size
|
||||
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
lazy_refcounts Postpone refcount updates
|
||||
|
@ -556,6 +582,7 @@ backing_file File name of a base image
|
|||
backing_fmt Image format of the base image
|
||||
encryption Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
encrypt.format Encrypt the image, format choices: 'aes'
|
||||
encrypt.key-secret ID of the secret that provides the AES encryption key
|
||||
cluster_size qcow2 cluster size
|
||||
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
lazy_refcounts Postpone refcount updates
|
||||
|
|
|
@ -122,24 +122,18 @@ echo
|
|||
echo === Encrypted image ===
|
||||
echo
|
||||
|
||||
_make_test_img -o encryption=on $size
|
||||
run_qemu -S <<EOF
|
||||
{ "execute": "qmp_capabilities" }
|
||||
{ "execute": "blockdev-add",
|
||||
"arguments": {
|
||||
"driver": "$IMGFMT",
|
||||
"node-name": "disk",
|
||||
"file": {
|
||||
"driver": "file",
|
||||
"filename": "$TEST_IMG"
|
||||
}
|
||||
}
|
||||
}
|
||||
{ "execute": "quit" }
|
||||
EOF
|
||||
|
||||
_make_test_img --object secret,id=sec0,data=123456 -o encryption=on,encrypt.key-secret=sec0 $size
|
||||
run_qemu <<EOF
|
||||
{ "execute": "qmp_capabilities" }
|
||||
{ "execute": "object-add",
|
||||
"arguments": {
|
||||
"qom-type": "secret",
|
||||
"id": "sec0",
|
||||
"props": {
|
||||
"data": "123456"
|
||||
}
|
||||
}
|
||||
}
|
||||
{ "execute": "blockdev-add",
|
||||
"arguments": {
|
||||
"driver": "$IMGFMT",
|
||||
|
@ -147,6 +141,10 @@ run_qemu <<EOF
|
|||
"file": {
|
||||
"driver": "file",
|
||||
"filename": "$TEST_IMG"
|
||||
},
|
||||
"encrypt": {
|
||||
"format": "aes",
|
||||
"key-secret": "sec0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -157,7 +155,7 @@ echo
|
|||
echo === Missing driver ===
|
||||
echo
|
||||
|
||||
_make_test_img -o encryption=on $size
|
||||
_make_test_img --object secret,id=sec0,data=123456 -o encryption=on,encrypt.key-secret=sec0 $size
|
||||
run_qemu -S <<EOF
|
||||
{ "execute": "qmp_capabilities" }
|
||||
{ "execute": "blockdev-add",
|
||||
|
|
|
@ -34,17 +34,11 @@ QMP_VERSION
|
|||
|
||||
=== Encrypted image ===
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 encryption=on
|
||||
Testing: -S
|
||||
QMP_VERSION
|
||||
{"return": {}}
|
||||
{"error": {"class": "GenericError", "desc": "Use of AES-CBC encrypted IMGFMT images is no longer supported in system emulators"}}
|
||||
{"return": {}}
|
||||
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 encryption=on encrypt.key-secret=sec0
|
||||
Testing:
|
||||
QMP_VERSION
|
||||
{"return": {}}
|
||||
{"return": {}}
|
||||
{"error": {"class": "GenericError", "desc": "Use of AES-CBC encrypted IMGFMT images is no longer supported in system emulators"}}
|
||||
{"return": {}}
|
||||
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
|
||||
|
@ -52,7 +46,7 @@ QMP_VERSION
|
|||
|
||||
=== Missing driver ===
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 encryption=on
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 encryption=on encrypt.key-secret=sec0
|
||||
Testing: -S
|
||||
QMP_VERSION
|
||||
{"return": {}}
|
||||
|
|
|
@ -44,23 +44,31 @@ _supported_os Linux
|
|||
|
||||
|
||||
size=128M
|
||||
IMGOPTS="encryption=on" _make_test_img $size
|
||||
|
||||
SECRET="secret,id=sec0,data=astrochicken"
|
||||
SECRETALT="secret,id=sec0,data=platypus"
|
||||
|
||||
_make_test_img --object $SECRET -o "encryption=on,encrypt.key-secret=sec0" $size
|
||||
|
||||
IMGSPEC="driver=$IMGFMT,file.filename=$TEST_IMG,encrypt.key-secret=sec0"
|
||||
|
||||
QEMU_IO_OPTIONS=$QEMU_IO_OPTIONS_NO_FMT
|
||||
|
||||
echo
|
||||
echo "== reading whole image =="
|
||||
echo "astrochicken" | $QEMU_IO -c "read 0 $size" "$TEST_IMG" | _filter_qemu_io | _filter_testdir
|
||||
$QEMU_IO --object $SECRET -c "read 0 $size" --image-opts $IMGSPEC | _filter_qemu_io | _filter_testdir
|
||||
|
||||
echo
|
||||
echo "== rewriting whole image =="
|
||||
echo "astrochicken" | $QEMU_IO -c "write -P 0xa 0 $size" "$TEST_IMG" | _filter_qemu_io | _filter_testdir
|
||||
$QEMU_IO --object $SECRET -c "write -P 0xa 0 $size" --image-opts $IMGSPEC | _filter_qemu_io | _filter_testdir
|
||||
|
||||
echo
|
||||
echo "== verify pattern =="
|
||||
echo "astrochicken" | $QEMU_IO -c "read -P 0xa 0 $size" "$TEST_IMG" | _filter_qemu_io | _filter_testdir
|
||||
$QEMU_IO --object $SECRET -c "read -P 0xa 0 $size" --image-opts $IMGSPEC | _filter_qemu_io | _filter_testdir
|
||||
|
||||
echo
|
||||
echo "== verify pattern failure with wrong password =="
|
||||
echo "platypus" | $QEMU_IO -c "read -P 0xa 0 $size" "$TEST_IMG" | _filter_qemu_io | _filter_testdir
|
||||
$QEMU_IO --object $SECRETALT -c "read -P 0xa 0 $size" --image-opts $IMGSPEC | _filter_qemu_io | _filter_testdir
|
||||
|
||||
|
||||
# success, all done
|
||||
|
|
|
@ -1,27 +1,19 @@
|
|||
QA output created by 134
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 encryption=on
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 encryption=on encrypt.key-secret=sec0
|
||||
|
||||
== reading whole image ==
|
||||
Disk image 'TEST_DIR/t.qcow2' is encrypted.
|
||||
password:
|
||||
read 134217728/134217728 bytes at offset 0
|
||||
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
== rewriting whole image ==
|
||||
Disk image 'TEST_DIR/t.qcow2' is encrypted.
|
||||
password:
|
||||
wrote 134217728/134217728 bytes at offset 0
|
||||
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
== verify pattern ==
|
||||
Disk image 'TEST_DIR/t.qcow2' is encrypted.
|
||||
password:
|
||||
read 134217728/134217728 bytes at offset 0
|
||||
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
== verify pattern failure with wrong password ==
|
||||
Disk image 'TEST_DIR/t.qcow2' is encrypted.
|
||||
password:
|
||||
Pattern verification failed at offset 0, 134217728 bytes
|
||||
read 134217728/134217728 bytes at offset 0
|
||||
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
|
|
@ -45,34 +45,39 @@ _supported_os Linux
|
|||
|
||||
size=128M
|
||||
TEST_IMG_BASE=$TEST_IMG.base
|
||||
SECRET="secret,id=sec0,data=astrochicken"
|
||||
|
||||
TEST_IMG_SAVE=$TEST_IMG
|
||||
TEST_IMG=$TEST_IMG_BASE
|
||||
echo "== create base =="
|
||||
IMGOPTS="encryption=on" _make_test_img $size
|
||||
_make_test_img --object $SECRET -o "encryption=on,encrypt.key-secret=sec0" $size
|
||||
TEST_IMG=$TEST_IMG_SAVE
|
||||
|
||||
IMGSPECBASE="driver=$IMGFMT,file.filename=$TEST_IMG_BASE,encrypt.key-secret=sec0"
|
||||
IMGSPEC="driver=$IMGFMT,file.filename=$TEST_IMG,backing.driver=$IMGFMT,backing.file.filename=$TEST_IMG_BASE,backing.encrypt.key-secret=sec0,encrypt.key-secret=sec0"
|
||||
QEMU_IO_OPTIONS=$QEMU_IO_OPTIONS_NO_FMT
|
||||
|
||||
echo
|
||||
echo "== writing whole image =="
|
||||
echo "astrochicken" | $QEMU_IO -c "write -P 0xa 0 $size" "$TEST_IMG_BASE" | _filter_qemu_io | _filter_testdir
|
||||
$QEMU_IO --object $SECRET -c "write -P 0xa 0 $size" --image-opts $IMGSPECBASE | _filter_qemu_io | _filter_testdir
|
||||
|
||||
echo
|
||||
echo "== verify pattern =="
|
||||
echo "astrochicken" | $QEMU_IO -c "read -P 0xa 0 $size" "$TEST_IMG_BASE" | _filter_qemu_io | _filter_testdir
|
||||
$QEMU_IO --object $SECRET -c "read -P 0xa 0 $size" --image-opts $IMGSPECBASE | _filter_qemu_io | _filter_testdir
|
||||
|
||||
echo "== create overlay =="
|
||||
IMGOPTS="encryption=on" _make_test_img -b "$TEST_IMG_BASE" $size
|
||||
_make_test_img --object $SECRET -o "encryption=on,encrypt.key-secret=sec0" -b "$TEST_IMG_BASE" $size
|
||||
|
||||
echo
|
||||
echo "== writing part of a cluster =="
|
||||
echo "astrochicken" | $QEMU_IO -c "write -P 0xe 0 1024" "$TEST_IMG" | _filter_qemu_io | _filter_testdir
|
||||
$QEMU_IO --object $SECRET -c "write -P 0xe 0 1024" --image-opts $IMGSPEC | _filter_qemu_io | _filter_testdir
|
||||
|
||||
echo
|
||||
echo "== verify pattern =="
|
||||
echo "astrochicken" | $QEMU_IO -c "read -P 0xe 0 1024" "$TEST_IMG" | _filter_qemu_io | _filter_testdir
|
||||
$QEMU_IO --object $SECRET -c "read -P 0xe 0 1024" --image-opts $IMGSPEC | _filter_qemu_io | _filter_testdir
|
||||
echo
|
||||
echo "== verify pattern =="
|
||||
echo "astrochicken" | $QEMU_IO -c "read -P 0xa 1024 64512" "$TEST_IMG" | _filter_qemu_io | _filter_testdir
|
||||
$QEMU_IO --object $SECRET -c "read -P 0xa 1024 64512" --image-opts $IMGSPEC | _filter_qemu_io | _filter_testdir
|
||||
|
||||
|
||||
# success, all done
|
||||
|
|
|
@ -1,36 +1,26 @@
|
|||
QA output created by 158
|
||||
== create base ==
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728 encryption=on
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728 encryption=on encrypt.key-secret=sec0
|
||||
|
||||
== writing whole image ==
|
||||
Disk image 'TEST_DIR/t.qcow2.base' is encrypted.
|
||||
password:
|
||||
wrote 134217728/134217728 bytes at offset 0
|
||||
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
== verify pattern ==
|
||||
Disk image 'TEST_DIR/t.qcow2.base' is encrypted.
|
||||
password:
|
||||
read 134217728/134217728 bytes at offset 0
|
||||
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
== create overlay ==
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base encryption=on
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base encryption=on encrypt.key-secret=sec0
|
||||
|
||||
== writing part of a cluster ==
|
||||
Disk image 'TEST_DIR/t.qcow2' is encrypted.
|
||||
password:
|
||||
wrote 1024/1024 bytes at offset 0
|
||||
1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
== verify pattern ==
|
||||
Disk image 'TEST_DIR/t.qcow2' is encrypted.
|
||||
password:
|
||||
read 1024/1024 bytes at offset 0
|
||||
1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
== verify pattern ==
|
||||
Disk image 'TEST_DIR/t.qcow2' is encrypted.
|
||||
password:
|
||||
read 64512/64512 bytes at offset 1024
|
||||
63 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
*** done
|
||||
|
|
|
@ -50,6 +50,7 @@ export IMGPROTO=file
|
|||
export IMGOPTS=""
|
||||
export CACHEMODE="writeback"
|
||||
export QEMU_IO_OPTIONS=""
|
||||
export QEMU_IO_OPTIONS_NO_FMT=""
|
||||
export CACHEMODE_IS_DEFAULT=true
|
||||
export QEMU_OPTIONS="-nodefaults -machine accel=qtest"
|
||||
export VALGRIND_QEMU=
|
||||
|
@ -413,10 +414,11 @@ BEGIN { for (t='$start'; t<='$end'; t++) printf "%03d\n",t }' \
|
|||
done
|
||||
|
||||
# Set qemu-io cache mode with $CACHEMODE we have
|
||||
if [ "$IMGOPTSSYNTAX" = "true" ]; then
|
||||
QEMU_IO_OPTIONS="$QEMU_IO_OPTIONS --cache $CACHEMODE"
|
||||
else
|
||||
QEMU_IO_OPTIONS="$QEMU_IO_OPTIONS -f $IMGFMT --cache $CACHEMODE"
|
||||
QEMU_IO_OPTIONS="$QEMU_IO_OPTIONS --cache $CACHEMODE"
|
||||
|
||||
QEMU_IO_OPTIONS_NO_FMT="$QEMU_IO_OPTIONS"
|
||||
if [ "$IMGOPTSSYNTAX" != "true" ]; then
|
||||
QEMU_IO_OPTIONS="$QEMU_IO_OPTIONS -f $IMGFMT"
|
||||
fi
|
||||
|
||||
# Set default options for qemu-img create -o if they were not specified
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue