| 
									
										
										
										
											2009-12-21 20:50:32 +01:00
										 |  |  | /* GIO - GLib Input, Output and Streaming Library
 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Copyright (C) 2010 Red Hat, Inc. | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2022-05-18 09:12:45 +01:00
										 |  |  |  * SPDX-License-Identifier: LGPL-2.1-or-later | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2009-12-21 20:50:32 +01:00
										 |  |  |  * This library is free software; you can redistribute it and/or | 
					
						
							|  |  |  |  * modify it under the terms of the GNU Lesser General Public | 
					
						
							|  |  |  |  * License as published by the Free Software Foundation; either | 
					
						
							| 
									
										
										
										
											2017-05-27 18:21:30 +02:00
										 |  |  |  * version 2.1 of the License, or (at your option) any later version. | 
					
						
							| 
									
										
										
										
											2009-12-21 20:50:32 +01:00
										 |  |  |  * | 
					
						
							|  |  |  |  * This library is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
					
						
							|  |  |  |  * Lesser General Public License for more details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * You should have received a copy of the GNU Lesser General | 
					
						
							| 
									
										
										
										
											2014-01-23 12:58:29 +01:00
										 |  |  |  * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
 | 
					
						
							| 
									
										
										
										
											2009-12-21 20:50:32 +01:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-12-27 23:43:14 -05:00
										 |  |  | #ifndef __G_TLS_CONNECTION_H__
 | 
					
						
							|  |  |  | #define __G_TLS_CONNECTION_H__
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-21 20:50:32 +01:00
										 |  |  | #if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
 | 
					
						
							|  |  |  | #error "Only <gio/gio.h> can be included directly."
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <gio/giostream.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | G_BEGIN_DECLS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define G_TYPE_TLS_CONNECTION            (g_tls_connection_get_type ())
 | 
					
						
							|  |  |  | #define G_TLS_CONNECTION(inst)           (G_TYPE_CHECK_INSTANCE_CAST ((inst), G_TYPE_TLS_CONNECTION, GTlsConnection))
 | 
					
						
							|  |  |  | #define G_TLS_CONNECTION_CLASS(class)    (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_TLS_CONNECTION, GTlsConnectionClass))
 | 
					
						
							|  |  |  | #define G_IS_TLS_CONNECTION(inst)        (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_TLS_CONNECTION))
 | 
					
						
							|  |  |  | #define G_IS_TLS_CONNECTION_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_TLS_CONNECTION))
 | 
					
						
							|  |  |  | #define G_TLS_CONNECTION_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), G_TYPE_TLS_CONNECTION, GTlsConnectionClass))
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | typedef struct _GTlsConnectionClass   GTlsConnectionClass; | 
					
						
							|  |  |  | typedef struct _GTlsConnectionPrivate GTlsConnectionPrivate; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct _GTlsConnection { | 
					
						
							|  |  |  |   GIOStream parent_instance; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   GTlsConnectionPrivate *priv; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-30 10:43:22 -05:00
										 |  |  | /**
 | 
					
						
							|  |  |  |  * GTlsConnectionClass: | 
					
						
							|  |  |  |  * @parent_class: The parent class. | 
					
						
							|  |  |  |  * @accept_certificate: Check whether to accept a certificate. | 
					
						
							|  |  |  |  * @handshake: Perform a handshake operation. | 
					
						
							|  |  |  |  * @handshake_async: Start an asynchronous handshake operation. | 
					
						
							|  |  |  |  * @handshake_finish: Finish an asynchronous handshake operation. | 
					
						
							| 
									
										
										
										
											2021-06-21 09:31:17 -05:00
										 |  |  |  * @get_binding_data: Retrieve TLS channel binding data (Since: 2.66) | 
					
						
							|  |  |  |  * @get_negotiated_protocol: Get ALPN-negotiated protocol (Since: 2.70) | 
					
						
							| 
									
										
										
										
											2021-04-30 10:43:22 -05:00
										 |  |  |  * | 
					
						
							|  |  |  |  * The class structure for the #GTlsConnection type. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Since: 2.28 | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2009-12-21 20:50:32 +01:00
										 |  |  | struct _GTlsConnectionClass | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   GIOStreamClass parent_class; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /* signals */ | 
					
						
							|  |  |  |   gboolean          ( *accept_certificate) (GTlsConnection       *connection, | 
					
						
							|  |  |  | 					    GTlsCertificate      *peer_cert, | 
					
						
							|  |  |  | 					    GTlsCertificateFlags  errors); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /* methods */ | 
					
						
							|  |  |  |   gboolean ( *handshake )        (GTlsConnection       *conn, | 
					
						
							|  |  |  | 				  GCancellable         *cancellable, | 
					
						
							|  |  |  | 				  GError              **error); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   void     ( *handshake_async )  (GTlsConnection       *conn, | 
					
						
							|  |  |  | 				  int                   io_priority, | 
					
						
							|  |  |  | 				  GCancellable         *cancellable, | 
					
						
							|  |  |  | 				  GAsyncReadyCallback   callback, | 
					
						
							|  |  |  | 				  gpointer              user_data); | 
					
						
							|  |  |  |   gboolean ( *handshake_finish ) (GTlsConnection       *conn, | 
					
						
							|  |  |  | 				  GAsyncResult         *result, | 
					
						
							|  |  |  | 				  GError              **error); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-25 12:40:34 +00:00
										 |  |  | G_GNUC_BEGIN_IGNORE_DEPRECATIONS | 
					
						
							|  |  |  |   gboolean ( *get_binding_data)  (GTlsConnection          *conn, | 
					
						
							|  |  |  |                                   GTlsChannelBindingType   type, | 
					
						
							|  |  |  |                                   GByteArray              *data, | 
					
						
							|  |  |  |                                   GError                 **error); | 
					
						
							|  |  |  | G_GNUC_END_IGNORE_DEPRECATIONS | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-29 13:47:40 -05:00
										 |  |  |   const gchar *(*get_negotiated_protocol) (GTlsConnection *conn); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-21 20:50:32 +01:00
										 |  |  |   /*< private >*/ | 
					
						
							|  |  |  |   /* Padding for future expansion */ | 
					
						
							| 
									
										
										
										
											2021-04-29 13:47:40 -05:00
										 |  |  |   gpointer padding[6]; | 
					
						
							| 
									
										
										
										
											2009-12-21 20:50:32 +01:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-05 13:39:21 -04:00
										 |  |  | GIO_AVAILABLE_IN_ALL | 
					
						
							| 
									
										
										
										
											2010-12-07 14:58:42 +01:00
										 |  |  | GType                 g_tls_connection_get_type                    (void) G_GNUC_CONST; | 
					
						
							| 
									
										
										
										
											2009-12-21 20:50:32 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-05 13:39:21 -04:00
										 |  |  | GIO_DEPRECATED | 
					
						
							| 
									
										
										
										
											2010-12-07 14:58:42 +01:00
										 |  |  | void                  g_tls_connection_set_use_system_certdb       (GTlsConnection       *conn, | 
					
						
							| 
									
										
										
										
											2011-10-11 14:34:59 +08:00
										 |  |  |                                                                     gboolean              use_system_certdb); | 
					
						
							| 
									
										
										
										
											2022-10-05 13:39:21 -04:00
										 |  |  | GIO_DEPRECATED | 
					
						
							| 
									
										
										
										
											2011-11-03 00:16:41 -04:00
										 |  |  | gboolean              g_tls_connection_get_use_system_certdb       (GTlsConnection       *conn); | 
					
						
							| 
									
										
										
										
											2011-08-04 08:54:55 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-05 13:39:21 -04:00
										 |  |  | GIO_AVAILABLE_IN_ALL | 
					
						
							| 
									
										
										
										
											2011-08-04 08:54:55 +02:00
										 |  |  | void                  g_tls_connection_set_database                (GTlsConnection       *conn, | 
					
						
							|  |  |  | 								    GTlsDatabase         *database); | 
					
						
							| 
									
										
										
										
											2022-10-05 13:39:21 -04:00
										 |  |  | GIO_AVAILABLE_IN_ALL | 
					
						
							| 
									
										
										
										
											2011-08-04 08:54:55 +02:00
										 |  |  | GTlsDatabase *        g_tls_connection_get_database                (GTlsConnection       *conn); | 
					
						
							| 
									
										
										
										
											2010-12-01 13:49:39 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-05 13:39:21 -04:00
										 |  |  | GIO_AVAILABLE_IN_ALL | 
					
						
							| 
									
										
										
										
											2010-12-07 14:58:42 +01:00
										 |  |  | void                  g_tls_connection_set_certificate             (GTlsConnection       *conn, | 
					
						
							| 
									
										
										
										
											2011-08-04 08:54:55 +02:00
										 |  |  |                                                                     GTlsCertificate      *certificate); | 
					
						
							| 
									
										
										
										
											2022-10-05 13:39:21 -04:00
										 |  |  | GIO_AVAILABLE_IN_ALL | 
					
						
							| 
									
										
										
										
											2010-12-07 14:58:42 +01:00
										 |  |  | GTlsCertificate      *g_tls_connection_get_certificate             (GTlsConnection       *conn); | 
					
						
							| 
									
										
										
										
											2009-12-21 20:50:32 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-05 13:39:21 -04:00
										 |  |  | GIO_AVAILABLE_IN_ALL | 
					
						
							| 
									
										
										
										
											2011-08-04 08:54:55 +02:00
										 |  |  | void                  g_tls_connection_set_interaction             (GTlsConnection       *conn, | 
					
						
							|  |  |  |                                                                     GTlsInteraction      *interaction); | 
					
						
							| 
									
										
										
										
											2022-10-05 13:39:21 -04:00
										 |  |  | GIO_AVAILABLE_IN_ALL | 
					
						
							| 
									
										
										
										
											2011-08-04 08:54:55 +02:00
										 |  |  | GTlsInteraction *     g_tls_connection_get_interaction             (GTlsConnection       *conn); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-05 13:39:21 -04:00
										 |  |  | GIO_AVAILABLE_IN_ALL | 
					
						
							| 
									
										
										
										
											2010-12-07 14:58:42 +01:00
										 |  |  | GTlsCertificate      *g_tls_connection_get_peer_certificate        (GTlsConnection       *conn); | 
					
						
							| 
									
										
										
										
											2022-10-05 13:39:21 -04:00
										 |  |  | GIO_AVAILABLE_IN_ALL | 
					
						
							| 
									
										
										
										
											2010-12-07 14:58:42 +01:00
										 |  |  | GTlsCertificateFlags  g_tls_connection_get_peer_certificate_errors (GTlsConnection       *conn); | 
					
						
							| 
									
										
										
										
											2009-12-21 20:50:32 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-05 13:39:21 -04:00
										 |  |  | GIO_AVAILABLE_IN_ALL | 
					
						
							| 
									
										
										
										
											2010-12-07 14:58:42 +01:00
										 |  |  | void                  g_tls_connection_set_require_close_notify    (GTlsConnection       *conn, | 
					
						
							|  |  |  | 								    gboolean              require_close_notify); | 
					
						
							| 
									
										
										
										
											2022-10-05 13:39:21 -04:00
										 |  |  | GIO_AVAILABLE_IN_ALL | 
					
						
							| 
									
										
										
										
											2010-12-07 14:58:42 +01:00
										 |  |  | gboolean              g_tls_connection_get_require_close_notify    (GTlsConnection       *conn); | 
					
						
							| 
									
										
										
										
											2009-12-21 20:50:32 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-27 19:50:09 +01:00
										 |  |  | G_GNUC_BEGIN_IGNORE_DEPRECATIONS | 
					
						
							| 
									
										
										
										
											2022-10-05 13:39:21 -04:00
										 |  |  | GIO_DEPRECATED_IN_2_60 | 
					
						
							| 
									
										
										
										
											2010-12-07 14:58:42 +01:00
										 |  |  | void                  g_tls_connection_set_rehandshake_mode        (GTlsConnection       *conn, | 
					
						
							|  |  |  | 								    GTlsRehandshakeMode   mode); | 
					
						
							| 
									
										
										
										
											2022-10-05 13:39:21 -04:00
										 |  |  | GIO_DEPRECATED_IN_2_60 | 
					
						
							| 
									
										
										
										
											2010-12-07 14:58:42 +01:00
										 |  |  | GTlsRehandshakeMode   g_tls_connection_get_rehandshake_mode        (GTlsConnection       *conn); | 
					
						
							| 
									
										
										
										
											2019-05-27 19:50:09 +01:00
										 |  |  | G_GNUC_END_IGNORE_DEPRECATIONS | 
					
						
							| 
									
										
										
										
											2009-12-21 20:50:32 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-05 13:39:21 -04:00
										 |  |  | GIO_AVAILABLE_IN_2_60 | 
					
						
							| 
									
										
										
										
											2018-12-18 16:32:55 -08:00
										 |  |  | void                  g_tls_connection_set_advertised_protocols    (GTlsConnection       *conn, | 
					
						
							|  |  |  |                                                                     const gchar * const  *protocols); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-05 13:39:21 -04:00
										 |  |  | GIO_AVAILABLE_IN_2_60 | 
					
						
							| 
									
										
										
										
											2018-12-18 16:32:55 -08:00
										 |  |  | const gchar *         g_tls_connection_get_negotiated_protocol     (GTlsConnection       *conn); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-25 12:40:34 +00:00
										 |  |  | G_GNUC_BEGIN_IGNORE_DEPRECATIONS | 
					
						
							| 
									
										
										
										
											2022-10-05 13:39:21 -04:00
										 |  |  | GIO_AVAILABLE_IN_2_66 | 
					
						
							| 
									
										
										
										
											2020-06-25 12:40:34 +00:00
										 |  |  | gboolean              g_tls_connection_get_channel_binding_data    (GTlsConnection          *conn, | 
					
						
							|  |  |  |                                                                     GTlsChannelBindingType   type, | 
					
						
							|  |  |  |                                                                     GByteArray              *data, | 
					
						
							|  |  |  |                                                                     GError                 **error); | 
					
						
							|  |  |  | G_GNUC_END_IGNORE_DEPRECATIONS | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-05 13:39:21 -04:00
										 |  |  | GIO_AVAILABLE_IN_ALL | 
					
						
							| 
									
										
										
										
											2010-12-07 14:58:42 +01:00
										 |  |  | gboolean              g_tls_connection_handshake                   (GTlsConnection       *conn, | 
					
						
							|  |  |  | 								    GCancellable         *cancellable, | 
					
						
							|  |  |  | 								    GError              **error); | 
					
						
							| 
									
										
										
										
											2009-12-21 20:50:32 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-05 13:39:21 -04:00
										 |  |  | GIO_AVAILABLE_IN_ALL | 
					
						
							| 
									
										
										
										
											2010-12-07 14:58:42 +01:00
										 |  |  | void                  g_tls_connection_handshake_async             (GTlsConnection       *conn, | 
					
						
							|  |  |  | 								    int                   io_priority, | 
					
						
							|  |  |  | 								    GCancellable         *cancellable, | 
					
						
							|  |  |  | 								    GAsyncReadyCallback   callback, | 
					
						
							|  |  |  | 								    gpointer              user_data); | 
					
						
							| 
									
										
										
										
											2022-10-05 13:39:21 -04:00
										 |  |  | GIO_AVAILABLE_IN_ALL | 
					
						
							| 
									
										
										
										
											2010-12-07 14:58:42 +01:00
										 |  |  | gboolean              g_tls_connection_handshake_finish            (GTlsConnection       *conn, | 
					
						
							|  |  |  | 								    GAsyncResult         *result, | 
					
						
							|  |  |  | 								    GError              **error); | 
					
						
							| 
									
										
										
										
											2009-12-21 20:50:32 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-05 13:39:21 -04:00
										 |  |  | GIO_AVAILABLE_IN_2_70 | 
					
						
							| 
									
										
										
										
											2021-04-28 16:08:00 -05:00
										 |  |  | GTlsProtocolVersion   g_tls_connection_get_protocol_version        (GTlsConnection       *conn); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-05 13:39:21 -04:00
										 |  |  | GIO_AVAILABLE_IN_2_70 | 
					
						
							| 
									
										
										
										
											2021-04-28 16:08:00 -05:00
										 |  |  | gchar *               g_tls_connection_get_ciphersuite_name        (GTlsConnection       *conn); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-21 20:50:32 +01:00
										 |  |  | /**
 | 
					
						
							|  |  |  |  * G_TLS_ERROR: | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Error domain for TLS. Errors in this domain will be from the | 
					
						
							|  |  |  |  * #GTlsError enumeration. See #GError for more information on error | 
					
						
							|  |  |  |  * domains. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #define G_TLS_ERROR (g_tls_error_quark ())
 | 
					
						
							| 
									
										
										
										
											2022-10-05 13:39:21 -04:00
										 |  |  | GIO_AVAILABLE_IN_ALL | 
					
						
							| 
									
										
										
										
											2009-12-21 20:50:32 +01:00
										 |  |  | GQuark g_tls_error_quark (void); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-25 12:40:34 +00:00
										 |  |  | /**
 | 
					
						
							|  |  |  |  * G_TLS_CHANNEL_BINDING_ERROR: | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Error domain for TLS channel binding. Errors in this domain will be from the | 
					
						
							|  |  |  |  * #GTlsChannelBindingError enumeration. See #GError for more information on error | 
					
						
							|  |  |  |  * domains. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Since: 2.66 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #define G_TLS_CHANNEL_BINDING_ERROR (g_tls_channel_binding_error_quark ())
 | 
					
						
							| 
									
										
										
										
											2022-10-05 13:39:21 -04:00
										 |  |  | GIO_AVAILABLE_IN_2_66 | 
					
						
							| 
									
										
										
										
											2020-06-25 12:40:34 +00:00
										 |  |  | GQuark g_tls_channel_binding_error_quark (void); | 
					
						
							| 
									
										
										
										
											2009-12-21 20:50:32 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | /*< protected >*/ | 
					
						
							| 
									
										
										
										
											2022-10-05 13:39:21 -04:00
										 |  |  | GIO_AVAILABLE_IN_ALL | 
					
						
							| 
									
										
										
										
											2010-12-07 14:58:42 +01:00
										 |  |  | gboolean              g_tls_connection_emit_accept_certificate     (GTlsConnection       *conn, | 
					
						
							|  |  |  | 								    GTlsCertificate      *peer_cert, | 
					
						
							|  |  |  | 								    GTlsCertificateFlags  errors); | 
					
						
							| 
									
										
										
										
											2009-12-21 20:50:32 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | G_END_DECLS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif /* __G_TLS_CONNECTION_H__ */
 |