Message ID | 0866d2a1e7011831570a377e02cddb5db4b7d855.1703482349.git.yong.huang@smartx.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Support generic Luks encryption | expand |
On Mon, Dec 25, 2023 at 01:45:10PM +0800, Hyman Huang wrote: > When querying the LUKS disk with the qemu-img tool or other APIs, > add information about whether the LUKS header is detached. > > Additionally, update the test case with the appropriate > modification. > > Signed-off-by: Hyman Huang <yong.huang@smartx.com> > --- > crypto/block-luks.c | 2 ++ > qapi/crypto.json | 3 +++ > tests/qemu-iotests/210.out | 4 ++++ > 3 files changed, 9 insertions(+) > > diff --git a/crypto/block-luks.c b/crypto/block-luks.c > index 474c7aee2e..c5e53b4ee4 100644 > --- a/crypto/block-luks.c > +++ b/crypto/block-luks.c > @@ -1266,6 +1266,7 @@ qcrypto_block_luks_open(QCryptoBlock *block, > block->sector_size = QCRYPTO_BLOCK_LUKS_SECTOR_SIZE; > block->payload_offset = > qcrypto_block_luks_payload_offset(luks->header.payload_offset_sector); > + block->detached_header = (block->payload_offset == 0) ? true : false; We shouldn't be looking at payload_offset for this - when we pass in an enum flag to indicate detached header, we'll know directly. > > return 0; > > @@ -1892,6 +1893,7 @@ static int qcrypto_block_luks_get_info(QCryptoBlock *block, > info->u.luks.master_key_iters = luks->header.master_key_iterations; > info->u.luks.uuid = g_strndup((const char *)luks->header.uuid, > sizeof(luks->header.uuid)); > + info->u.luks.detached_header = block->detached_header; > > for (i = 0; i < QCRYPTO_BLOCK_LUKS_NUM_KEY_SLOTS; i++) { > slot = g_new0(QCryptoBlockInfoLUKSSlot, 1); > diff --git a/qapi/crypto.json b/qapi/crypto.json > index 8e81aa8454..336c880b5d 100644 > --- a/qapi/crypto.json > +++ b/qapi/crypto.json > @@ -317,6 +317,8 @@ > # > # @hash-alg: the master key hash algorithm > # > +# @detached-header: whether the LUKS header is detached (Since 9.0) > +# > # @payload-offset: offset to the payload data in bytes > # > # @master-key-iters: number of PBKDF2 iterations for key material x> @@ -333,6 +335,7 @@ > 'ivgen-alg': 'QCryptoIVGenAlgorithm', > '*ivgen-hash-alg': 'QCryptoHashAlgorithm', > 'hash-alg': 'QCryptoHashAlgorithm', > + 'detached-header': 'bool', > 'payload-offset': 'int', > 'master-key-iters': 'int', > 'uuid': 'str', > diff --git a/tests/qemu-iotests/210.out b/tests/qemu-iotests/210.out > index 96d9f749dd..94b29b2120 100644 > --- a/tests/qemu-iotests/210.out > +++ b/tests/qemu-iotests/210.out > @@ -18,6 +18,7 @@ virtual size: 128 MiB (134217728 bytes) > encrypted: yes > Format specific information: > ivgen alg: plain64 > + detached header: false > hash alg: sha256 > cipher alg: aes-256 > uuid: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX > @@ -70,6 +71,7 @@ virtual size: 64 MiB (67108864 bytes) > encrypted: yes > Format specific information: > ivgen alg: plain64 > + detached header: false > hash alg: sha1 > cipher alg: aes-128 > uuid: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX > @@ -125,6 +127,7 @@ virtual size: 0 B (0 bytes) > encrypted: yes > Format specific information: > ivgen alg: plain64 > + detached header: false > hash alg: sha256 > cipher alg: aes-256 > uuid: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX > @@ -195,6 +198,7 @@ virtual size: 0 B (0 bytes) > encrypted: yes > Format specific information: > ivgen alg: plain64 > + detached header: false > hash alg: sha256 > cipher alg: aes-256 > uuid: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX > -- > 2.39.1 > With regards, Daniel
diff --git a/crypto/block-luks.c b/crypto/block-luks.c index 474c7aee2e..c5e53b4ee4 100644 --- a/crypto/block-luks.c +++ b/crypto/block-luks.c @@ -1266,6 +1266,7 @@ qcrypto_block_luks_open(QCryptoBlock *block, block->sector_size = QCRYPTO_BLOCK_LUKS_SECTOR_SIZE; block->payload_offset = qcrypto_block_luks_payload_offset(luks->header.payload_offset_sector); + block->detached_header = (block->payload_offset == 0) ? true : false; return 0; @@ -1892,6 +1893,7 @@ static int qcrypto_block_luks_get_info(QCryptoBlock *block, info->u.luks.master_key_iters = luks->header.master_key_iterations; info->u.luks.uuid = g_strndup((const char *)luks->header.uuid, sizeof(luks->header.uuid)); + info->u.luks.detached_header = block->detached_header; for (i = 0; i < QCRYPTO_BLOCK_LUKS_NUM_KEY_SLOTS; i++) { slot = g_new0(QCryptoBlockInfoLUKSSlot, 1); diff --git a/qapi/crypto.json b/qapi/crypto.json index 8e81aa8454..336c880b5d 100644 --- a/qapi/crypto.json +++ b/qapi/crypto.json @@ -317,6 +317,8 @@ # # @hash-alg: the master key hash algorithm # +# @detached-header: whether the LUKS header is detached (Since 9.0) +# # @payload-offset: offset to the payload data in bytes # # @master-key-iters: number of PBKDF2 iterations for key material @@ -333,6 +335,7 @@ 'ivgen-alg': 'QCryptoIVGenAlgorithm', '*ivgen-hash-alg': 'QCryptoHashAlgorithm', 'hash-alg': 'QCryptoHashAlgorithm', + 'detached-header': 'bool', 'payload-offset': 'int', 'master-key-iters': 'int', 'uuid': 'str', diff --git a/tests/qemu-iotests/210.out b/tests/qemu-iotests/210.out index 96d9f749dd..94b29b2120 100644 --- a/tests/qemu-iotests/210.out +++ b/tests/qemu-iotests/210.out @@ -18,6 +18,7 @@ virtual size: 128 MiB (134217728 bytes) encrypted: yes Format specific information: ivgen alg: plain64 + detached header: false hash alg: sha256 cipher alg: aes-256 uuid: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX @@ -70,6 +71,7 @@ virtual size: 64 MiB (67108864 bytes) encrypted: yes Format specific information: ivgen alg: plain64 + detached header: false hash alg: sha1 cipher alg: aes-128 uuid: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX @@ -125,6 +127,7 @@ virtual size: 0 B (0 bytes) encrypted: yes Format specific information: ivgen alg: plain64 + detached header: false hash alg: sha256 cipher alg: aes-256 uuid: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX @@ -195,6 +198,7 @@ virtual size: 0 B (0 bytes) encrypted: yes Format specific information: ivgen alg: plain64 + detached header: false hash alg: sha256 cipher alg: aes-256 uuid: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
When querying the LUKS disk with the qemu-img tool or other APIs, add information about whether the LUKS header is detached. Additionally, update the test case with the appropriate modification. Signed-off-by: Hyman Huang <yong.huang@smartx.com> --- crypto/block-luks.c | 2 ++ qapi/crypto.json | 3 +++ tests/qemu-iotests/210.out | 4 ++++ 3 files changed, 9 insertions(+)