* 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 <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include "gtlsbackend.h"
#include "gtlscertificate.h"
#include "gtlsclientconnection.h"
+#include "gtlsdatabase.h"
+#include "gtlsfiledatabase.h"
#include "gtlsserverconnection.h"
#include "gsimpleasyncresult.h"
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);
-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
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 */
{
PROP_CERTIFICATE_0,
- PROP_CERTIFICATE,
- PROP_CERTIFICATE_PEM,
- PROP_PRIVATE_KEY,
- PROP_PRIVATE_KEY_PEM,
- PROP_ISSUER
+ 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);
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_ISSUER, "issuer");
+ 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
{
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);
*/
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
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;
+}