loudmouth/lm-ssl-generic.c
author Senko Rasic <senko.rasic@collabora.co.uk>
Sun, 30 Nov 2008 10:20:08 +0100
changeset 575 daad23d59b56
parent 555 695c909d0c45
permissions -rw-r--r--
Don't check for sync dns problems when using asyncns [#33] lm_socket_create() checks for sync DNS failure, but the check is executed even if Loudmouth is using asyncns, in which case Loudmouth crashes. committer: Mikael Hallendal <micke@imendio.com>
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
555
695c909d0c45 Fixed up the documentation for 1.4.3 [#27]
Mikael Hallendal <micke@imendio.com>
parents: 286
diff changeset
   175
 * @use_starttls: #TRUE if STARTTLS should be used.
695c909d0c45 Fixed up the documentation for 1.4.3 [#27]
Mikael Hallendal <micke@imendio.com>
parents: 286
diff changeset
   176
 * @require_starttls: #TRUE if STARTTLS should be required.
286
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
 * 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
   179
 **/
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   180
void
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   181
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
   182
		     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
   183
		     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
   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
	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
   186
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 = 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
   188
	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
   189
	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
   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
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
 * lm_ssl_get_use_starttls:
555
695c909d0c45 Fixed up the documentation for 1.4.3 [#27]
Mikael Hallendal <micke@imendio.com>
parents: 286
diff changeset
   194
 * @ssl: an #LmSSL
286
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   195
 *
555
695c909d0c45 Fixed up the documentation for 1.4.3 [#27]
Mikael Hallendal <micke@imendio.com>
parents: 286
diff changeset
   196
 * Fetches whether STARTTLS is used.
695c909d0c45 Fixed up the documentation for 1.4.3 [#27]
Mikael Hallendal <micke@imendio.com>
parents: 286
diff changeset
   197
 *
695c909d0c45 Fixed up the documentation for 1.4.3 [#27]
Mikael Hallendal <micke@imendio.com>
parents: 286
diff changeset
   198
 * Return value: #TRUE is @ssl is configured to use STARTTLS.
286
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
gboolean
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   201
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
   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
	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
   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
	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
   206
	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
   207
}
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
/**
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:
555
695c909d0c45 Fixed up the documentation for 1.4.3 [#27]
Mikael Hallendal <micke@imendio.com>
parents: 286
diff changeset
   211
 * @ssl: an #LmSSL
286
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   212
 *
555
695c909d0c45 Fixed up the documentation for 1.4.3 [#27]
Mikael Hallendal <micke@imendio.com>
parents: 286
diff changeset
   213
 * Fetches whether STARTTLS is required.
695c909d0c45 Fixed up the documentation for 1.4.3 [#27]
Mikael Hallendal <micke@imendio.com>
parents: 286
diff changeset
   214
 *
695c909d0c45 Fixed up the documentation for 1.4.3 [#27]
Mikael Hallendal <micke@imendio.com>
parents: 286
diff changeset
   215
 * Return value: #TRUE if @ssl requires that STARTTLS succeed.
286
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
gboolean
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   218
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
   219
{
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   220
	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
   221
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   222
	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
   223
	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
   224
}
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   225
e0bcf40cbf5e add use_starttls and require_starttls members to LmSSLBase, plus corresponding access functions
Dafydd Harries <daf@rhydd.org>
parents: 137
diff changeset
   226
/**
137
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   227
 * lm_ssl_unref
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   228
 * @ssl: an #LmSSL
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
 * 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
   231
 * @ssl is freed.
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   232
 **/
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   233
void 
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   234
lm_ssl_unref (LmSSL *ssl)
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
	LmSSLBase *base;
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   237
	
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   238
	g_return_if_fail (ssl != NULL);
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
	base = LM_SSL_BASE (ssl);
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   241
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   242
	base->ref_count --;
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
        if (base->ref_count == 0) {
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   245
		if (base->data_notify) {
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   246
			(* base->data_notify) (base->func_data);
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   247
		}
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   248
             
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   249
		_lm_ssl_free (ssl);
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   250
        }
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   251
}
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   252
18785575aa7a 2006-04-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents:
diff changeset
   253