X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gio%2Fgdummytlsbackend.c;h=9b390965e48ed150b2870c3b54fa6c9d9066a4cb;hb=2a2b11b1bb6c702d6b2ef1c37524a57688a94a4e;hp=6a6b8a205421d05a498426a758184c2cc5f7cc94;hpb=68a3d6b27fec3bdbba27b414c0ed10396c79d3c6;p=platform%2Fupstream%2Fglib.git diff --git a/gio/gdummytlsbackend.c b/gio/gdummytlsbackend.c index 6a6b8a2..9b39096 100644 --- a/gio/gdummytlsbackend.c +++ b/gio/gdummytlsbackend.c @@ -13,9 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General - * Public License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307, USA. + * Public License along with this library; if not, see . */ #include "config.h" @@ -30,6 +28,8 @@ #include "gtlsbackend.h" #include "gtlscertificate.h" #include "gtlsclientconnection.h" +#include "gtlsdatabase.h" +#include "gtlsfiledatabase.h" #include "gtlsserverconnection.h" #include "gsimpleasyncresult.h" @@ -40,9 +40,11 @@ static GType _g_dummy_tls_certificate_get_type (void); static GType _g_dummy_tls_connection_get_type (void); +static GType _g_dummy_tls_database_get_type (void); struct _GDummyTlsBackend { - GObject parent_instance; + GObject parent_instance; + GTlsDatabase *database; }; static void g_dummy_tls_backend_iface_init (GTlsBackendInterface *iface); @@ -58,13 +60,42 @@ G_DEFINE_TYPE_WITH_CODE (GDummyTlsBackend, g_dummy_tls_backend, G_TYPE_OBJECT, -100)) static void -g_dummy_tls_backend_init (GDummyTlsBackend *backend) +g_dummy_tls_backend_init (GDummyTlsBackend *dummy) { } static void +g_dummy_tls_backend_finalize (GObject *object) +{ + GDummyTlsBackend *dummy = G_DUMMY_TLS_BACKEND (object); + + g_clear_object (&dummy->database); + + G_OBJECT_CLASS (g_dummy_tls_backend_parent_class)->finalize (object); +} + +static void g_dummy_tls_backend_class_init (GDummyTlsBackendClass *backend_class) { + GObjectClass *object_class = G_OBJECT_CLASS (backend_class); + + object_class->finalize = g_dummy_tls_backend_finalize; +} + +static GTlsDatabase * +g_dummy_tls_backend_get_default_database (GTlsBackend *backend) +{ + GDummyTlsBackend *dummy = G_DUMMY_TLS_BACKEND (backend); + + if (g_once_init_enter (&dummy->database)) + { + GTlsDatabase *tlsdb; + + tlsdb = g_object_new (_g_dummy_tls_database_get_type (), NULL); + g_once_init_leave (&dummy->database, tlsdb); + } + + return g_object_ref (dummy->database); } static void @@ -73,6 +104,8 @@ g_dummy_tls_backend_iface_init (GTlsBackendInterface *iface) iface->get_certificate_type = _g_dummy_tls_certificate_get_type; iface->get_client_connection_type = _g_dummy_tls_connection_get_type; iface->get_server_connection_type = _g_dummy_tls_connection_get_type; + iface->get_file_database_type = _g_dummy_tls_database_get_type; + iface->get_default_database = g_dummy_tls_backend_get_default_database; } /* Dummy certificate type */ @@ -92,10 +125,11 @@ enum { PROP_CERTIFICATE_0, - PROP_CERTIFICATE, - PROP_CERTIFICATE_PEM, - PROP_PRIVATE_KEY, - PROP_PRIVATE_KEY_PEM + PROP_CERT_CERTIFICATE, + PROP_CERT_CERTIFICATE_PEM, + PROP_CERT_PRIVATE_KEY, + PROP_CERT_PRIVATE_KEY_PEM, + PROP_CERT_ISSUER }; static void g_dummy_tls_certificate_initable_iface_init (GInitableIface *iface); @@ -134,10 +168,11 @@ g_dummy_tls_certificate_class_init (GDummyTlsCertificateClass *certificate_class gobject_class->get_property = g_dummy_tls_certificate_get_property; gobject_class->set_property = g_dummy_tls_certificate_set_property; - g_object_class_override_property (gobject_class, PROP_CERTIFICATE, "certificate"); - g_object_class_override_property (gobject_class, PROP_CERTIFICATE_PEM, "certificate-pem"); - g_object_class_override_property (gobject_class, PROP_PRIVATE_KEY, "private-key"); - g_object_class_override_property (gobject_class, PROP_PRIVATE_KEY_PEM, "private-key-pem"); + g_object_class_override_property (gobject_class, PROP_CERT_CERTIFICATE, "certificate"); + g_object_class_override_property (gobject_class, PROP_CERT_CERTIFICATE_PEM, "certificate-pem"); + g_object_class_override_property (gobject_class, PROP_CERT_PRIVATE_KEY, "private-key"); + g_object_class_override_property (gobject_class, PROP_CERT_PRIVATE_KEY_PEM, "private-key-pem"); + g_object_class_override_property (gobject_class, PROP_CERT_ISSUER, "issuer"); } static void @@ -181,15 +216,20 @@ enum { PROP_CONNECTION_0, - PROP_BASE_IO_STREAM, - PROP_REQUIRE_CLOSE_NOTIFY, - PROP_REHANDSHAKE_MODE, - PROP_USE_SYSTEM_CERTDB, - PROP_VALIDATION_FLAGS, - PROP_SERVER_IDENTITY, - PROP_USE_SSL3, - PROP_ACCEPTED_CAS, - PROP_AUTHENTICATION_MODE + PROP_CONN_BASE_IO_STREAM, + PROP_CONN_USE_SYSTEM_CERTDB, + PROP_CONN_REQUIRE_CLOSE_NOTIFY, + PROP_CONN_REHANDSHAKE_MODE, + PROP_CONN_CERTIFICATE, + PROP_CONN_DATABASE, + PROP_CONN_INTERACTION, + PROP_CONN_PEER_CERTIFICATE, + PROP_CONN_PEER_CERTIFICATE_ERRORS, + PROP_CONN_VALIDATION_FLAGS, + PROP_CONN_SERVER_IDENTITY, + PROP_CONN_USE_SSL3, + PROP_CONN_ACCEPTED_CAS, + PROP_CONN_AUTHENTICATION_MODE }; static void g_dummy_tls_connection_initable_iface_init (GInitableIface *iface); @@ -241,15 +281,20 @@ g_dummy_tls_connection_class_init (GDummyTlsConnectionClass *connection_class) */ io_stream_class->close_fn = g_dummy_tls_connection_close; - g_object_class_override_property (gobject_class, PROP_BASE_IO_STREAM, "base-io-stream"); - g_object_class_override_property (gobject_class, PROP_REQUIRE_CLOSE_NOTIFY, "require-close-notify"); - g_object_class_override_property (gobject_class, PROP_REHANDSHAKE_MODE, "rehandshake-mode"); - g_object_class_override_property (gobject_class, PROP_USE_SYSTEM_CERTDB, "use-system-certdb"); - g_object_class_override_property (gobject_class, PROP_VALIDATION_FLAGS, "validation-flags"); - g_object_class_override_property (gobject_class, PROP_SERVER_IDENTITY, "server-identity"); - g_object_class_override_property (gobject_class, PROP_USE_SSL3, "use-ssl3"); - g_object_class_override_property (gobject_class, PROP_ACCEPTED_CAS, "accepted-cas"); - g_object_class_override_property (gobject_class, PROP_AUTHENTICATION_MODE, "authentication-mode"); + g_object_class_override_property (gobject_class, PROP_CONN_BASE_IO_STREAM, "base-io-stream"); + g_object_class_override_property (gobject_class, PROP_CONN_USE_SYSTEM_CERTDB, "use-system-certdb"); + g_object_class_override_property (gobject_class, PROP_CONN_REQUIRE_CLOSE_NOTIFY, "require-close-notify"); + g_object_class_override_property (gobject_class, PROP_CONN_REHANDSHAKE_MODE, "rehandshake-mode"); + g_object_class_override_property (gobject_class, PROP_CONN_CERTIFICATE, "certificate"); + g_object_class_override_property (gobject_class, PROP_CONN_DATABASE, "database"); + g_object_class_override_property (gobject_class, PROP_CONN_INTERACTION, "interaction"); + g_object_class_override_property (gobject_class, PROP_CONN_PEER_CERTIFICATE, "peer-certificate"); + g_object_class_override_property (gobject_class, PROP_CONN_PEER_CERTIFICATE_ERRORS, "peer-certificate-errors"); + g_object_class_override_property (gobject_class, PROP_CONN_VALIDATION_FLAGS, "validation-flags"); + g_object_class_override_property (gobject_class, PROP_CONN_SERVER_IDENTITY, "server-identity"); + g_object_class_override_property (gobject_class, PROP_CONN_USE_SSL3, "use-ssl3"); + g_object_class_override_property (gobject_class, PROP_CONN_ACCEPTED_CAS, "accepted-cas"); + g_object_class_override_property (gobject_class, PROP_CONN_AUTHENTICATION_MODE, "authentication-mode"); } static void @@ -273,3 +318,92 @@ g_dummy_tls_connection_initable_iface_init (GInitableIface *iface) iface->init = g_dummy_tls_connection_initable_init; } +/* Dummy database type. + */ + +typedef struct _GDummyTlsDatabase GDummyTlsDatabase; +typedef struct _GDummyTlsDatabaseClass GDummyTlsDatabaseClass; + +struct _GDummyTlsDatabase { + GTlsDatabase parent_instance; +}; + +struct _GDummyTlsDatabaseClass { + GTlsDatabaseClass parent_class; +}; + +enum +{ + PROP_DATABASE_0, + + PROP_ANCHORS, +}; + +static void g_dummy_tls_database_file_database_iface_init (GTlsFileDatabaseInterface *iface); +static void g_dummy_tls_database_initable_iface_init (GInitableIface *iface); + +#define g_dummy_tls_database_get_type _g_dummy_tls_database_get_type +G_DEFINE_TYPE_WITH_CODE (GDummyTlsDatabase, g_dummy_tls_database, G_TYPE_TLS_DATABASE, + G_IMPLEMENT_INTERFACE (G_TYPE_TLS_FILE_DATABASE, + g_dummy_tls_database_file_database_iface_init); + G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, + g_dummy_tls_database_initable_iface_init);) + + +static void +g_dummy_tls_database_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + /* We need to define this method to make GObject happy, but it will + * never be possible to construct a working GDummyTlsDatabase, so + * it doesn't have to do anything useful. + */ +} + +static void +g_dummy_tls_database_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + /* Just ignore all attempts to set properties. */ +} + +static void +g_dummy_tls_database_class_init (GDummyTlsDatabaseClass *database_class) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (database_class); + + gobject_class->get_property = g_dummy_tls_database_get_property; + gobject_class->set_property = g_dummy_tls_database_set_property; + + g_object_class_override_property (gobject_class, PROP_ANCHORS, "anchors"); +} + +static void +g_dummy_tls_database_init (GDummyTlsDatabase *database) +{ +} + +static void +g_dummy_tls_database_file_database_iface_init (GTlsFileDatabaseInterface *iface) +{ +} + +static gboolean +g_dummy_tls_database_initable_init (GInitable *initable, + GCancellable *cancellable, + GError **error) +{ + g_set_error_literal (error, G_TLS_ERROR, G_TLS_ERROR_UNAVAILABLE, + _("TLS support is not available")); + return FALSE; +} + +static void +g_dummy_tls_database_initable_iface_init (GInitableIface *iface) +{ + iface->init = g_dummy_tls_database_initable_init; +}