From: "Daniel P. Berrangé" <berrange@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Paolo Bonzini" <pbonzini@redhat.com>,
"Daniel P. Berrangé" <berrange@redhat.com>,
"Eduardo Habkost" <ehabkost@redhat.com>
Subject: [PATCH 4/4] crypto: use QOM macros for declaration/definition of TLS creds types
Date: Thu, 23 Jul 2020 19:14:10 +0100 [thread overview]
Message-ID: <20200723181410.3145233-5-berrange@redhat.com> (raw)
In-Reply-To: <20200723181410.3145233-1-berrange@redhat.com>
This introduces the use of the OBJECT_DEFINE and OBJECT_DECLARE macro
families in the TLS creds types, in order to eliminate boilerplate code.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
crypto/tlscreds.c | 25 +++----------------------
crypto/tlscredsanon.c | 23 ++++-------------------
crypto/tlscredspsk.c | 25 +++++--------------------
crypto/tlscredsx509.c | 29 ++++-------------------------
include/crypto/tlscreds.h | 13 ++-----------
include/crypto/tlscredsanon.h | 14 ++------------
include/crypto/tlscredspsk.h | 13 ++-----------
include/crypto/tlscredsx509.h | 13 ++-----------
8 files changed, 24 insertions(+), 131 deletions(-)
diff --git a/crypto/tlscreds.c b/crypto/tlscreds.c
index b68735f06f..c238ff7d4b 100644
--- a/crypto/tlscreds.c
+++ b/crypto/tlscreds.c
@@ -24,6 +24,9 @@
#include "tlscredspriv.h"
#include "trace.h"
+OBJECT_DEFINE_ABSTRACT_TYPE(QCryptoTLSCreds, qcrypto_tls_creds,
+ QCRYPTO_TLS_CREDS, OBJECT)
+
#define DH_BITS 2048
#ifdef CONFIG_GNUTLS
@@ -258,25 +261,3 @@ qcrypto_tls_creds_finalize(Object *obj)
g_free(creds->dir);
g_free(creds->priority);
}
-
-
-static const TypeInfo qcrypto_tls_creds_info = {
- .parent = TYPE_OBJECT,
- .name = TYPE_QCRYPTO_TLS_CREDS,
- .instance_size = sizeof(QCryptoTLSCreds),
- .instance_init = qcrypto_tls_creds_init,
- .instance_finalize = qcrypto_tls_creds_finalize,
- .class_init = qcrypto_tls_creds_class_init,
- .class_size = sizeof(QCryptoTLSCredsClass),
- .abstract = true,
-};
-
-
-static void
-qcrypto_tls_creds_register_types(void)
-{
- type_register_static(&qcrypto_tls_creds_info);
-}
-
-
-type_init(qcrypto_tls_creds_register_types);
diff --git a/crypto/tlscredsanon.c b/crypto/tlscredsanon.c
index 30275b6847..dc1b77e37c 100644
--- a/crypto/tlscredsanon.c
+++ b/crypto/tlscredsanon.c
@@ -26,6 +26,9 @@
#include "qom/object_interfaces.h"
#include "trace.h"
+OBJECT_DEFINE_TYPE_WITH_INTERFACES(QCryptoTLSCredsAnon, qcrypto_tls_creds_anon,
+ QCRYPTO_TLS_CREDS_ANON, QCRYPTO_TLS_CREDS,
+ { TYPE_USER_CREATABLE }, { NULL })
#ifdef CONFIG_GNUTLS
@@ -191,25 +194,7 @@ qcrypto_tls_creds_anon_class_init(ObjectClass *oc, void *data)
}
-static const TypeInfo qcrypto_tls_creds_anon_info = {
- .parent = TYPE_QCRYPTO_TLS_CREDS,
- .name = TYPE_QCRYPTO_TLS_CREDS_ANON,
- .instance_size = sizeof(QCryptoTLSCredsAnon),
- .instance_finalize = qcrypto_tls_creds_anon_finalize,
- .class_size = sizeof(QCryptoTLSCredsAnonClass),
- .class_init = qcrypto_tls_creds_anon_class_init,
- .interfaces = (InterfaceInfo[]) {
- { TYPE_USER_CREATABLE },
- { }
- }
-};
-
-
static void
-qcrypto_tls_creds_anon_register_types(void)
+qcrypto_tls_creds_anon_init(Object *obj)
{
- type_register_static(&qcrypto_tls_creds_anon_info);
}
-
-
-type_init(qcrypto_tls_creds_anon_register_types);
diff --git a/crypto/tlscredspsk.c b/crypto/tlscredspsk.c
index e26807b899..0c66be3647 100644
--- a/crypto/tlscredspsk.c
+++ b/crypto/tlscredspsk.c
@@ -27,6 +27,10 @@
#include "trace.h"
+OBJECT_DEFINE_TYPE_WITH_INTERFACES(QCryptoTLSCredsPSK, qcrypto_tls_creds_psk,
+ QCRYPTO_TLS_CREDS_PSK, QCRYPTO_TLS_CREDS,
+ { TYPE_USER_CREATABLE }, { NULL })
+
#ifdef CONFIG_GNUTLS
static int
@@ -281,26 +285,7 @@ qcrypto_tls_creds_psk_class_init(ObjectClass *oc, void *data)
qcrypto_tls_creds_psk_prop_set_username);
}
-
-static const TypeInfo qcrypto_tls_creds_psk_info = {
- .parent = TYPE_QCRYPTO_TLS_CREDS,
- .name = TYPE_QCRYPTO_TLS_CREDS_PSK,
- .instance_size = sizeof(QCryptoTLSCredsPSK),
- .instance_finalize = qcrypto_tls_creds_psk_finalize,
- .class_size = sizeof(QCryptoTLSCredsPSKClass),
- .class_init = qcrypto_tls_creds_psk_class_init,
- .interfaces = (InterfaceInfo[]) {
- { TYPE_USER_CREATABLE },
- { }
- }
-};
-
-
static void
-qcrypto_tls_creds_psk_register_types(void)
+qcrypto_tls_creds_psk_init(Object *obj)
{
- type_register_static(&qcrypto_tls_creds_psk_info);
}
-
-
-type_init(qcrypto_tls_creds_psk_register_types);
diff --git a/crypto/tlscredsx509.c b/crypto/tlscredsx509.c
index dd7267ccdb..a39555e5e6 100644
--- a/crypto/tlscredsx509.c
+++ b/crypto/tlscredsx509.c
@@ -28,6 +28,10 @@
#include "trace.h"
+OBJECT_DEFINE_TYPE_WITH_INTERFACES(QCryptoTLSCredsX509, qcrypto_tls_creds_x509,
+ QCRYPTO_TLS_CREDS_X509, QCRYPTO_TLS_CREDS,
+ { TYPE_USER_CREATABLE }, { NULL })
+
#ifdef CONFIG_GNUTLS
#include <gnutls/x509.h>
@@ -814,28 +818,3 @@ qcrypto_tls_creds_x509_class_init(ObjectClass *oc, void *data)
qcrypto_tls_creds_x509_prop_get_passwordid,
qcrypto_tls_creds_x509_prop_set_passwordid);
}
-
-
-static const TypeInfo qcrypto_tls_creds_x509_info = {
- .parent = TYPE_QCRYPTO_TLS_CREDS,
- .name = TYPE_QCRYPTO_TLS_CREDS_X509,
- .instance_size = sizeof(QCryptoTLSCredsX509),
- .instance_init = qcrypto_tls_creds_x509_init,
- .instance_finalize = qcrypto_tls_creds_x509_finalize,
- .class_size = sizeof(QCryptoTLSCredsX509Class),
- .class_init = qcrypto_tls_creds_x509_class_init,
- .interfaces = (InterfaceInfo[]) {
- { TYPE_USER_CREATABLE },
- { }
- }
-};
-
-
-static void
-qcrypto_tls_creds_x509_register_types(void)
-{
- type_register_static(&qcrypto_tls_creds_x509_info);
-}
-
-
-type_init(qcrypto_tls_creds_x509_register_types);
diff --git a/include/crypto/tlscreds.h b/include/crypto/tlscreds.h
index fd7a284aa2..e9b9b8c20a 100644
--- a/include/crypto/tlscreds.h
+++ b/include/crypto/tlscreds.h
@@ -29,11 +29,8 @@
#endif
#define TYPE_QCRYPTO_TLS_CREDS "tls-creds"
-#define QCRYPTO_TLS_CREDS(obj) \
- OBJECT_CHECK(QCryptoTLSCreds, (obj), TYPE_QCRYPTO_TLS_CREDS)
-
-typedef struct QCryptoTLSCreds QCryptoTLSCreds;
-typedef struct QCryptoTLSCredsClass QCryptoTLSCredsClass;
+OBJECT_DECLARE_SIMPLE_TYPE(QCryptoTLSCreds, qcrypto_tls_creds,
+ QCRYPTO_TLS_CREDS, Object)
#define QCRYPTO_TLS_CREDS_DH_PARAMS "dh-params.pem"
@@ -58,10 +55,4 @@ struct QCryptoTLSCreds {
char *priority;
};
-
-struct QCryptoTLSCredsClass {
- ObjectClass parent_class;
-};
-
-
#endif /* QCRYPTO_TLSCREDS_H */
diff --git a/include/crypto/tlscredsanon.h b/include/crypto/tlscredsanon.h
index 9e9a5ce1a8..e366132b6b 100644
--- a/include/crypto/tlscredsanon.h
+++ b/include/crypto/tlscredsanon.h
@@ -24,12 +24,8 @@
#include "crypto/tlscreds.h"
#define TYPE_QCRYPTO_TLS_CREDS_ANON "tls-creds-anon"
-#define QCRYPTO_TLS_CREDS_ANON(obj) \
- OBJECT_CHECK(QCryptoTLSCredsAnon, (obj), TYPE_QCRYPTO_TLS_CREDS_ANON)
-
-
-typedef struct QCryptoTLSCredsAnon QCryptoTLSCredsAnon;
-typedef struct QCryptoTLSCredsAnonClass QCryptoTLSCredsAnonClass;
+OBJECT_DECLARE_SIMPLE_TYPE(QCryptoTLSCredsAnon, qcrypto_tls_creds_anon,
+ QCRYPTO_TLS_CREDS_ANON, QCryptoTLSCreds)
/**
* QCryptoTLSCredsAnon:
@@ -102,10 +98,4 @@ struct QCryptoTLSCredsAnon {
#endif
};
-
-struct QCryptoTLSCredsAnonClass {
- QCryptoTLSCredsClass parent_class;
-};
-
-
#endif /* QCRYPTO_TLSCREDSANON_H */
diff --git a/include/crypto/tlscredspsk.h b/include/crypto/tlscredspsk.h
index 907035a29b..0754c6c2d5 100644
--- a/include/crypto/tlscredspsk.h
+++ b/include/crypto/tlscredspsk.h
@@ -24,11 +24,8 @@
#include "crypto/tlscreds.h"
#define TYPE_QCRYPTO_TLS_CREDS_PSK "tls-creds-psk"
-#define QCRYPTO_TLS_CREDS_PSK(obj) \
- OBJECT_CHECK(QCryptoTLSCredsPSK, (obj), TYPE_QCRYPTO_TLS_CREDS_PSK)
-
-typedef struct QCryptoTLSCredsPSK QCryptoTLSCredsPSK;
-typedef struct QCryptoTLSCredsPSKClass QCryptoTLSCredsPSKClass;
+OBJECT_DECLARE_SIMPLE_TYPE(QCryptoTLSCredsPSK, qcrypto_tls_creds_psk,
+ QCRYPTO_TLS_CREDS_PSK, QCryptoTLSCreds)
#define QCRYPTO_TLS_CREDS_PSKFILE "keys.psk"
@@ -97,10 +94,4 @@ struct QCryptoTLSCredsPSK {
#endif
};
-
-struct QCryptoTLSCredsPSKClass {
- QCryptoTLSCredsClass parent_class;
-};
-
-
#endif /* QCRYPTO_TLSCREDSPSK_H */
diff --git a/include/crypto/tlscredsx509.h b/include/crypto/tlscredsx509.h
index e1542e5c8c..307b169710 100644
--- a/include/crypto/tlscredsx509.h
+++ b/include/crypto/tlscredsx509.h
@@ -24,11 +24,8 @@
#include "crypto/tlscreds.h"
#define TYPE_QCRYPTO_TLS_CREDS_X509 "tls-creds-x509"
-#define QCRYPTO_TLS_CREDS_X509(obj) \
- OBJECT_CHECK(QCryptoTLSCredsX509, (obj), TYPE_QCRYPTO_TLS_CREDS_X509)
-
-typedef struct QCryptoTLSCredsX509 QCryptoTLSCredsX509;
-typedef struct QCryptoTLSCredsX509Class QCryptoTLSCredsX509Class;
+OBJECT_DECLARE_SIMPLE_TYPE(QCryptoTLSCredsX509, qcrypto_tls_creds_x509,
+ QCRYPTO_TLS_CREDS_X509, QCryptoTLSCreds)
#define QCRYPTO_TLS_CREDS_X509_CA_CERT "ca-cert.pem"
#define QCRYPTO_TLS_CREDS_X509_CA_CRL "ca-crl.pem"
@@ -104,10 +101,4 @@ struct QCryptoTLSCredsX509 {
char *passwordid;
};
-
-struct QCryptoTLSCredsX509Class {
- QCryptoTLSCredsClass parent_class;
-};
-
-
#endif /* QCRYPTO_TLSCREDSX509_H */
--
2.26.2
next prev parent reply other threads:[~2020-07-23 18:15 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-23 18:14 [PATCH 0/4] qom: reduce boilerplate required for declaring and defining objects Daniel P. Berrangé
2020-07-23 18:14 ` [PATCH 1/4] qom: make object_ref/unref use a void * instead of Object * Daniel P. Berrangé
2020-07-23 19:04 ` Eric Blake
2020-07-24 9:06 ` Daniel P. Berrangé
2020-07-23 18:14 ` [PATCH 2/4] qom: provide convenient macros for declaring and defining types Daniel P. Berrangé
2020-07-23 19:23 ` Eric Blake
2020-07-24 9:11 ` Daniel P. Berrangé
2020-08-09 4:21 ` Eduardo Habkost
2020-08-11 18:22 ` Eduardo Habkost
2020-07-23 18:14 ` [PATCH 3/4] crypto: use QOM macros for declaration/definition of secret types Daniel P. Berrangé
2020-07-23 18:50 ` Eduardo Habkost
2020-07-24 9:12 ` Daniel P. Berrangé
2020-08-06 18:01 ` Eduardo Habkost
2020-08-07 11:11 ` Daniel P. Berrangé
2020-08-08 1:38 ` Eduardo Habkost
2020-07-23 19:25 ` Eric Blake
2020-07-23 18:14 ` Daniel P. Berrangé [this message]
2020-07-23 19:26 ` [PATCH 4/4] crypto: use QOM macros for declaration/definition of TLS creds types Eric Blake
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200723181410.3145233-5-berrange@redhat.com \
--to=berrange@redhat.com \
--cc=ehabkost@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.