[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH v2 01/11] qcrypto: add suport for amend options
From: |
Maxim Levitsky |
Subject: |
[Qemu-block] [PATCH v2 01/11] qcrypto: add suport for amend options |
Date: |
Fri, 13 Sep 2019 01:30:18 +0300 |
This adds the qcrypto_amend_options and corresponding
crypto driver callbacks for the for encrypted
key managedment
Signed-off-by: Maxim Levitsky <address@hidden>
Reviewed-by: Daniel P. Berrangé <address@hidden>
---
crypto/block.c | 31 +++++++++++++++++++++++++++++++
crypto/blockpriv.h | 8 ++++++++
include/crypto/block.h | 22 ++++++++++++++++++++++
3 files changed, 61 insertions(+)
diff --git a/crypto/block.c b/crypto/block.c
index 325752871c..14b684de7f 100644
--- a/crypto/block.c
+++ b/crypto/block.c
@@ -115,6 +115,37 @@ QCryptoBlock
*qcrypto_block_create(QCryptoBlockCreateOptions *options,
}
+int qcrypto_block_amend_options(QCryptoBlock *block,
+ QCryptoBlockReadFunc readfunc,
+ QCryptoBlockWriteFunc writefunc,
+ void *opaque,
+ QCryptoBlockCreateOptions *options,
+ bool force,
+ Error **errp)
+{
+ if (options->format != block->format) {
+ error_setg(errp,
+ "Its not possible to change encryption format with amend
interface");
+ return -1;
+ }
+
+ if (!block->driver->amend) {
+ error_setg(errp,
+ "Crypto format %s doesn't support format options amendment",
+ QCryptoBlockFormat_str(block->format));
+ return -1;
+ }
+
+ return block->driver->amend(block,
+ readfunc,
+ writefunc,
+ opaque,
+ options,
+ force,
+ errp);
+}
+
+
QCryptoBlockInfo *qcrypto_block_get_info(QCryptoBlock *block,
Error **errp)
{
diff --git a/crypto/blockpriv.h b/crypto/blockpriv.h
index 71c59cb542..c18a4e0b43 100644
--- a/crypto/blockpriv.h
+++ b/crypto/blockpriv.h
@@ -62,6 +62,14 @@ struct QCryptoBlockDriver {
void *opaque,
Error **errp);
+ int (*amend)(QCryptoBlock *block,
+ QCryptoBlockReadFunc readfunc,
+ QCryptoBlockWriteFunc writefunc,
+ void *opaque,
+ QCryptoBlockCreateOptions *options,
+ bool force,
+ Error **errp);
+
int (*get_info)(QCryptoBlock *block,
QCryptoBlockInfo *info,
Error **errp);
diff --git a/include/crypto/block.h b/include/crypto/block.h
index d49d2c2da9..777fd51ebe 100644
--- a/include/crypto/block.h
+++ b/include/crypto/block.h
@@ -144,6 +144,28 @@ QCryptoBlock
*qcrypto_block_create(QCryptoBlockCreateOptions *options,
void *opaque,
Error **errp);
+/**
+ * qcrypto_block_amend_options:
+ * @block: the block encryption object
+ *
+ * @readfunc: callback for reading data from the volume header
+ * @writefunc: callback for writing data to the volume header
+ * @opaque: data to pass to @readfunc and @writefunc
+ * @options: the new/amended encryption options
+ * @force: hint for the driver to allow unsafe operation
+ * @errp: error pointer
+ *
+ * Changes the crypto options of the encryption format
+ *
+ */
+int qcrypto_block_amend_options(QCryptoBlock *block,
+ QCryptoBlockReadFunc readfunc,
+ QCryptoBlockWriteFunc writefunc,
+ void *opaque,
+ QCryptoBlockCreateOptions *options,
+ bool force,
+ Error **errp);
+
/**
* qcrypto_block_get_info:
--
2.17.2
- [Qemu-block] [PATCH v2 00/11] RFC crypto/luks: encryption key managment using amend interface, Maxim Levitsky, 2019/09/12
- [Qemu-block] [PATCH v2 01/11] qcrypto: add suport for amend options,
Maxim Levitsky <=
- [Qemu-block] [PATCH v2 03/11] qcrypto-luks: implement the encryption key management, Maxim Levitsky, 2019/09/12
- [Qemu-block] [PATCH v2 04/11] block: amend: add 'force' option, Maxim Levitsky, 2019/09/12
- [Qemu-block] [PATCH v2 02/11] qcrypto-luks: extend the create options for upcoming encryption key management, Maxim Levitsky, 2019/09/12
- [Qemu-block] [PATCH v2 05/11] block/crypto: implement the encryption key management, Maxim Levitsky, 2019/09/12
- [Qemu-block] [PATCH v2 06/11] qcow2: implement crypto amend options, Maxim Levitsky, 2019/09/12
- [Qemu-block] [PATCH v2 07/11] block: add x-blockdev-amend qmp command, Maxim Levitsky, 2019/09/12
- [Qemu-block] [PATCH v2 08/11] block/crypto: implement blockdev-amend, Maxim Levitsky, 2019/09/12
- [Qemu-block] [PATCH v2 09/11] block/qcow2: implement blockdev-amend, Maxim Levitsky, 2019/09/12