diff options
author | Stefan Hajnoczi | 2020-02-21 12:25:19 +0100 |
---|---|---|
committer | Max Reitz | 2020-03-11 12:42:29 +0100 |
commit | 6d49d3a859b0f19226dbb0df5e7f50267b42f45c (patch) | |
tree | 2e11ce7bd094fc8e3cd71e6a672a162d37d1a088 /include/crypto/block.h | |
parent | Merge remote-tracking branch 'remotes/borntraeger/tags/s390x-20200310' into s... (diff) | |
download | qemu-6d49d3a859b0f19226dbb0df5e7f50267b42f45c.tar.gz qemu-6d49d3a859b0f19226dbb0df5e7f50267b42f45c.tar.xz qemu-6d49d3a859b0f19226dbb0df5e7f50267b42f45c.zip |
luks: extract qcrypto_block_calculate_payload_offset()
The qcow2 .bdrv_measure() code calculates the crypto payload offset.
This logic really belongs in crypto/block.c where it can be reused by
other image formats.
The "luks" block driver will need this same logic in order to implement
.bdrv_measure(), so extract the qcrypto_block_calculate_payload_offset()
function now.
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Message-Id: <20200221112522.1497712-2-stefanha@redhat.com>
Signed-off-by: Max Reitz <mreitz@redhat.com>
Diffstat (limited to 'include/crypto/block.h')
-rw-r--r-- | include/crypto/block.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/include/crypto/block.h b/include/crypto/block.h index d49d2c2da9..c77ccaf9c0 100644 --- a/include/crypto/block.h +++ b/include/crypto/block.h @@ -146,6 +146,26 @@ QCryptoBlock *qcrypto_block_create(QCryptoBlockCreateOptions *options, /** + * qcrypto_block_calculate_payload_offset: + * @create_opts: the encryption options + * @optprefix: name prefix for options + * @len: output for number of header bytes before payload + * @errp: pointer to a NULL-initialized error object + * + * Calculate the number of header bytes before the payload in an encrypted + * storage volume. The header is an area before the payload that is reserved + * for encryption metadata. + * + * Returns: true on success, false on error + */ +bool +qcrypto_block_calculate_payload_offset(QCryptoBlockCreateOptions *create_opts, + const char *optprefix, + size_t *len, + Error **errp); + + +/** * qcrypto_block_get_info: * @block: the block encryption object * @errp: pointer to a NULL-initialized error object @@ -269,5 +289,7 @@ uint64_t qcrypto_block_get_sector_size(QCryptoBlock *block); void qcrypto_block_free(QCryptoBlock *block); G_DEFINE_AUTOPTR_CLEANUP_FUNC(QCryptoBlock, qcrypto_block_free) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(QCryptoBlockCreateOptions, + qapi_free_QCryptoBlockCreateOptions) #endif /* QCRYPTO_BLOCK_H */ |