crypto/block: introduce qcrypto_block_*crypt_helper functions
Introduce QCryptoBlock-based functions and use them where possible. This is needed to implement thread-safe encrypt/decrypt operations. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Reviewed-by: Alberto Garcia <berto@igalia.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
0270417c87
commit
0f0d596cb1
@ -1409,8 +1409,7 @@ qcrypto_block_luks_decrypt(QCryptoBlock *block,
|
||||
{
|
||||
assert(QEMU_IS_ALIGNED(offset, QCRYPTO_BLOCK_LUKS_SECTOR_SIZE));
|
||||
assert(QEMU_IS_ALIGNED(len, QCRYPTO_BLOCK_LUKS_SECTOR_SIZE));
|
||||
return qcrypto_block_cipher_decrypt_helper(block->cipher,
|
||||
block->niv, block->ivgen,
|
||||
return qcrypto_block_decrypt_helper(block,
|
||||
QCRYPTO_BLOCK_LUKS_SECTOR_SIZE,
|
||||
offset, buf, len, errp);
|
||||
}
|
||||
@ -1425,8 +1424,7 @@ qcrypto_block_luks_encrypt(QCryptoBlock *block,
|
||||
{
|
||||
assert(QEMU_IS_ALIGNED(offset, QCRYPTO_BLOCK_LUKS_SECTOR_SIZE));
|
||||
assert(QEMU_IS_ALIGNED(len, QCRYPTO_BLOCK_LUKS_SECTOR_SIZE));
|
||||
return qcrypto_block_cipher_encrypt_helper(block->cipher,
|
||||
block->niv, block->ivgen,
|
||||
return qcrypto_block_encrypt_helper(block,
|
||||
QCRYPTO_BLOCK_LUKS_SECTOR_SIZE,
|
||||
offset, buf, len, errp);
|
||||
}
|
||||
|
@ -152,8 +152,7 @@ qcrypto_block_qcow_decrypt(QCryptoBlock *block,
|
||||
{
|
||||
assert(QEMU_IS_ALIGNED(offset, QCRYPTO_BLOCK_QCOW_SECTOR_SIZE));
|
||||
assert(QEMU_IS_ALIGNED(len, QCRYPTO_BLOCK_QCOW_SECTOR_SIZE));
|
||||
return qcrypto_block_cipher_decrypt_helper(block->cipher,
|
||||
block->niv, block->ivgen,
|
||||
return qcrypto_block_decrypt_helper(block,
|
||||
QCRYPTO_BLOCK_QCOW_SECTOR_SIZE,
|
||||
offset, buf, len, errp);
|
||||
}
|
||||
@ -168,8 +167,7 @@ qcrypto_block_qcow_encrypt(QCryptoBlock *block,
|
||||
{
|
||||
assert(QEMU_IS_ALIGNED(offset, QCRYPTO_BLOCK_QCOW_SECTOR_SIZE));
|
||||
assert(QEMU_IS_ALIGNED(len, QCRYPTO_BLOCK_QCOW_SECTOR_SIZE));
|
||||
return qcrypto_block_cipher_encrypt_helper(block->cipher,
|
||||
block->niv, block->ivgen,
|
||||
return qcrypto_block_encrypt_helper(block,
|
||||
QCRYPTO_BLOCK_QCOW_SECTOR_SIZE,
|
||||
offset, buf, len, errp);
|
||||
}
|
||||
|
@ -277,3 +277,31 @@ int qcrypto_block_cipher_encrypt_helper(QCryptoCipher *cipher,
|
||||
offset, buf, len,
|
||||
qcrypto_cipher_encrypt, errp);
|
||||
}
|
||||
|
||||
|
||||
int qcrypto_block_decrypt_helper(QCryptoBlock *block,
|
||||
int sectorsize,
|
||||
uint64_t offset,
|
||||
uint8_t *buf,
|
||||
size_t len,
|
||||
Error **errp)
|
||||
{
|
||||
return do_qcrypto_block_cipher_encdec(block->cipher, block->niv,
|
||||
block->ivgen,
|
||||
sectorsize, offset, buf, len,
|
||||
qcrypto_cipher_decrypt, errp);
|
||||
}
|
||||
|
||||
|
||||
int qcrypto_block_encrypt_helper(QCryptoBlock *block,
|
||||
int sectorsize,
|
||||
uint64_t offset,
|
||||
uint8_t *buf,
|
||||
size_t len,
|
||||
Error **errp)
|
||||
{
|
||||
return do_qcrypto_block_cipher_encdec(block->cipher, block->niv,
|
||||
block->ivgen,
|
||||
sectorsize, offset, buf, len,
|
||||
qcrypto_cipher_encrypt, errp);
|
||||
}
|
||||
|
@ -96,4 +96,18 @@ int qcrypto_block_cipher_encrypt_helper(QCryptoCipher *cipher,
|
||||
size_t len,
|
||||
Error **errp);
|
||||
|
||||
int qcrypto_block_decrypt_helper(QCryptoBlock *block,
|
||||
int sectorsize,
|
||||
uint64_t offset,
|
||||
uint8_t *buf,
|
||||
size_t len,
|
||||
Error **errp);
|
||||
|
||||
int qcrypto_block_encrypt_helper(QCryptoBlock *block,
|
||||
int sectorsize,
|
||||
uint64_t offset,
|
||||
uint8_t *buf,
|
||||
size_t len,
|
||||
Error **errp);
|
||||
|
||||
#endif /* QCRYPTO_BLOCKPRIV_H */
|
||||
|
Loading…
Reference in New Issue
Block a user