mirror of
https://github.com/mii443/qemu.git
synced 2025-12-16 17:18:49 +00:00
crypto: Allocate QCryptoCipher with the subclass
Merge the allocation of "opaque" into the allocation of "cipher". This is step one in reducing the indirection in these classes. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
committed by
Daniel P. Berrangé
parent
7b5dbfb777
commit
3eedf5cc9d
@@ -58,7 +58,7 @@ qcrypto_afalg_cipher_format_name(QCryptoCipherAlgorithm alg,
|
||||
return name;
|
||||
}
|
||||
|
||||
QCryptoAFAlg *
|
||||
QCryptoCipher *
|
||||
qcrypto_afalg_cipher_ctx_new(QCryptoCipherAlgorithm alg,
|
||||
QCryptoCipherMode mode,
|
||||
const uint8_t *key,
|
||||
@@ -109,7 +109,7 @@ qcrypto_afalg_cipher_ctx_new(QCryptoCipherAlgorithm alg,
|
||||
}
|
||||
afalg->cmsg = CMSG_FIRSTHDR(afalg->msg);
|
||||
|
||||
return afalg;
|
||||
return &afalg->base;
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -117,9 +117,9 @@ qcrypto_afalg_cipher_setiv(QCryptoCipher *cipher,
|
||||
const uint8_t *iv,
|
||||
size_t niv, Error **errp)
|
||||
{
|
||||
QCryptoAFAlg *afalg = container_of(cipher, QCryptoAFAlg, base);
|
||||
struct af_alg_iv *alg_iv;
|
||||
size_t expect_niv;
|
||||
QCryptoAFAlg *afalg = cipher->opaque;
|
||||
|
||||
expect_niv = qcrypto_cipher_get_iv_len(cipher->alg, cipher->mode);
|
||||
if (niv != expect_niv) {
|
||||
@@ -200,8 +200,9 @@ qcrypto_afalg_cipher_encrypt(QCryptoCipher *cipher,
|
||||
const void *in, void *out,
|
||||
size_t len, Error **errp)
|
||||
{
|
||||
return qcrypto_afalg_cipher_op(cipher->opaque, in, out,
|
||||
len, true, errp);
|
||||
QCryptoAFAlg *afalg = container_of(cipher, QCryptoAFAlg, base);
|
||||
|
||||
return qcrypto_afalg_cipher_op(afalg, in, out, len, true, errp);
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -209,13 +210,16 @@ qcrypto_afalg_cipher_decrypt(QCryptoCipher *cipher,
|
||||
const void *in, void *out,
|
||||
size_t len, Error **errp)
|
||||
{
|
||||
return qcrypto_afalg_cipher_op(cipher->opaque, in, out,
|
||||
len, false, errp);
|
||||
QCryptoAFAlg *afalg = container_of(cipher, QCryptoAFAlg, base);
|
||||
|
||||
return qcrypto_afalg_cipher_op(afalg, in, out, len, false, errp);
|
||||
}
|
||||
|
||||
static void qcrypto_afalg_comm_ctx_free(QCryptoCipher *cipher)
|
||||
{
|
||||
qcrypto_afalg_comm_free(cipher->opaque);
|
||||
QCryptoAFAlg *afalg = container_of(cipher, QCryptoAFAlg, base);
|
||||
|
||||
qcrypto_afalg_comm_free(afalg);
|
||||
}
|
||||
|
||||
const struct QCryptoCipherDriver qcrypto_cipher_afalg_driver = {
|
||||
|
||||
Reference in New Issue
Block a user