loudmouth/lm-ssl-generic.c
author Senko Rasic <senko.rasic@collabora.co.uk>
Thu, 03 Jan 2008 18:03:35 +0100
changeset 326 33e5f0c5ba10
parent 286 e0bcf40cbf5e
child 515 fb0f1adfa271
child 555 695c909d0c45
permissions -rw-r--r--
Bumped version to 1.3.3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
137
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
     1
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
     2
/*
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
     3
 * Copyright (C) 2003-2006 Imendio AB
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
     4
 *
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
     6
 * modify it under the terms of the GNU Lesser General Public License as
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
     7
 * published by the Free Software Foundation; either version 2 of the
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
     8
 * License, or (at your option) any later version.
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
     9
 *
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    10
 * This program is distributed in the hope that it will be useful,
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    13
 * Lesser General Public License for more details.
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    14
 *
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    15
 * You should have received a copy of the GNU Lesser General Public
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    16
 * License along with this program; if not, write to the
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    17
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    18
 * Boston, MA 02111-1307, USA.
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    19
 */
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    20
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    21
#include <config.h>
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    22
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    23
#include "lm-ssl.h"
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    24
#include "lm-ssl-base.h"
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    25
#include "lm-ssl-internals.h"
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    26
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    27
LmSSLResponse  
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    28
_lm_ssl_func_always_continue (LmSSL       *ssl,
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    29
			      LmSSLStatus  status,
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    30
			      gpointer     user_data)
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    31
{
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    32
	return LM_SSL_RESPONSE_CONTINUE;;
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    33
}
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    34
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    35
/* Define the SSL functions as noops if we compile without support */
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    36
#ifndef HAVE_SSL
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    37
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    38
LmSSL *
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    39
_lm_ssl_new (const gchar    *expected_fingerprint,
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    40
	     LmSSLFunction   ssl_function,
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    41
	     gpointer        user_data,
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    42
	     GDestroyNotify  notify)
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    43
{
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    44
	return NULL;
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    45
}
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    46
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    47
void
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    48
_lm_ssl_initialize (LmSSL *ssl)
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    49
{
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    50
	/* NOOP */
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    51
}
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    52
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    53
gboolean
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    54
_lm_ssl_begin (LmSSL        *ssl,
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    55
	       gint          fd,
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    56
	       const gchar  *server,
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    57
	       GError      **error)
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    58
{
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    59
	return TRUE;
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    60
}
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    61
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    62
GIOStatus
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    63
_lm_ssl_read (LmSSL *ssl,
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    64
	      gchar *buf,
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    65
	      gint   len,
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    66
	      gsize  *bytes_read)
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    67
{
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    68
	/* NOOP */
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    69
	*bytes_read = 0;
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    70
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    71
	return G_IO_STATUS_EOF;
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    72
}
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    73
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    74
gboolean 
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    75
_lm_ssl_send (LmSSL *ssl, const gchar *str, gint len)
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    76
{
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    77
	/* NOOP */
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    78
	return TRUE;
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    79
}
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    80
void 
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    81
_lm_ssl_close (LmSSL *ssl)
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    82
{
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    83
	/* NOOP */
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    84
}
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    85
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    86
void
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    87
_lm_ssl_free (LmSSL *ssl)
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    88
{
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    89
	/* NOOP */
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    90
}
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    91
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    92
#endif /* HAVE_SSL */
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    93
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    94
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    95
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    96
/**
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    97
 * lm_ssl_new:
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    98
 * @expected_fingerprint: The expected fingerprint. @ssl_function will be called if there is a mismatch. %NULL if you are not interested in this check.
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
    99
 * @ssl_function: Callback called to inform the user of a problem during setting up the SSL connection and how to proceed. If %NULL is passed the default function that always continues will be used.
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   100
 * @user_data: Data sent with the callback.
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   101
 * @notify: Function to free @user_dataa when the connection is finished. %NULL if @user_data should not be freed.
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   102
 *
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   103
 * Creates a new SSL struct, call #lm_connection_set_ssl to use it. 
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   104
 *
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   105
 * Return value: A new #LmSSL struct.
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   106
 **/
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   107
LmSSL *
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   108
lm_ssl_new (const gchar    *expected_fingerprint,
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   109
	    LmSSLFunction   ssl_function,
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   110
	    gpointer        user_data,
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   111
	    GDestroyNotify  notify)
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   112
{
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   113
	/* The implementation of this function will be different depending
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   114
	 * on which implementation is used 
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   115
	 */
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   116
	return _lm_ssl_new (expected_fingerprint,
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   117
			    ssl_function, user_data, notify);
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   118
}
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   119
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   120
/**
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   121
 * lm_ssl_is_supported:
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   122
 *
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   123
 * Checks whether Loudmouth supports SSL or not.
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   124
 *
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   125
 * Return value: #TRUE if this installation of Loudmouth supports SSL, otherwise returns #FALSE.
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   126
 **/
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   127
gboolean
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   128
lm_ssl_is_supported (void)
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   129
{
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   130
#ifdef HAVE_SSL
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   131
	return TRUE;
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   132
#else
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   133
	return FALSE;
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   134
#endif
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   135
}
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   136
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   137
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   138
/**
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   139
 * lm_ssl_get_fingerprint: 
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   140
 * @ssl: an #LmSSL
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   141
 *
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   142
 * Returns the MD5 fingerprint of the remote server's certificate.
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   143
 * 
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   144
 * Return value: A 16-byte array representing the fingerprint or %NULL if unknown.
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   145
 **/
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   146
const gchar *
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   147
lm_ssl_get_fingerprint (LmSSL *ssl)
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   148
{
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   149
	g_return_val_if_fail (ssl != NULL, NULL);
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   150
	
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   151
	return LM_SSL_BASE(ssl)->fingerprint;
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   152
}
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   153
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   154
/**
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   155
 * lm_ssl_ref:
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   156
 * @ssl: an #LmSSL
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   157
 * 
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   158
 * Adds a reference to @ssl.
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   159
 * 
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   160
 * Return value: the ssl
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   161
 **/
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   162
LmSSL *
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   163
lm_ssl_ref (LmSSL *ssl)
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   164
{
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   165
	g_return_val_if_fail (ssl != NULL, NULL);
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   166
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   167
	LM_SSL_BASE(ssl)->ref_count++;
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   168
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   169
	return ssl;
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   170
}
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   171
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   172
/**
286
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   173
 * lm_ssl_use_starttls:
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   174
 * @ssl: an #LmSSL
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   175
 *
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   176
 * Set whether STARTTLS should be used.
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   177
 **/
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   178
void
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   179
lm_ssl_use_starttls (LmSSL *ssl,
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   180
		     gboolean use_starttls,
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   181
		     gboolean require_starttls)
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   182
{
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   183
	LmSSLBase *base;
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   184
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   185
	base = LM_SSL_BASE (ssl);
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   186
	base->use_starttls = use_starttls;
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   187
	base->require_starttls = require_starttls;
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   188
}
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   189
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   190
/**
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   191
 * lm_ssl_get_use_starttls:
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   192
 *
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   193
 * Return value: TRUE is @ssl is configured to use STARTTLS.
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   194
 **/
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   195
gboolean
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   196
lm_ssl_get_use_starttls (LmSSL *ssl)
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   197
{
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   198
	LmSSLBase *base;
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   199
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   200
	base = LM_SSL_BASE (ssl);
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   201
	return base->use_starttls;
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   202
}
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   203
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   204
/**
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   205
 * lm_ssl_get_require_starttls:
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   206
 *
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   207
 * Return value: TRUE if @ssl requires that STARTTLS succeed.
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   208
 **/
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   209
gboolean
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   210
lm_ssl_get_require_starttls (LmSSL *ssl)
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   211
{
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   212
	LmSSLBase *base;
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   213
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   214
	base = LM_SSL_BASE (ssl);
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   215
	return base->require_starttls;
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   216
}
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   217
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   218
/**
137
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   219
 * lm_ssl_unref
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   220
 * @ssl: an #LmSSL
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   221
 * 
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   222
 * Removes a reference from @ssl. When no more references are present
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   223
 * @ssl is freed.
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   224
 **/
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   225
void 
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   226
lm_ssl_unref (LmSSL *ssl)
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   227
{
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   228
	LmSSLBase *base;
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   229
	
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   230
	g_return_if_fail (ssl != NULL);
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   231
        
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   232
	base = LM_SSL_BASE (ssl);
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   233
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   234
	base->ref_count --;
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   235
        
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   236
        if (base->ref_count == 0) {
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   237
		if (base->data_notify) {
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   238
			(* base->data_notify) (base->func_data);
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   239
		}
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   240
             
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   241
		_lm_ssl_free (ssl);
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   242
        }
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   243
}
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   244
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   245