examples/test-lm.c
author hallski <hallski>
Sun, 10 Sep 2006 22:09:45 +0000
changeset 175 5e665ffe3e9c
parent 121 612603ba6d90
child 140 103227122f45
permissions -rw-r--r--
2006-09-11 Mikael Hallendal <micke@imendio.com> * Release 1.0.5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
83
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
     1
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
     2
/*
99
81e9d035de02 2004-10-05 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 83
diff changeset
     3
 * Copyright (C) 2003 Imendio AB
83
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
     4
 * Copyright (C) 2003 Mikael Hallendal <micke@imendio.com>
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
     5
 *
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
     6
 * This program is free software; you can redistribute it and/or
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
     7
 * modify it under the terms of the GNU Lesser General Public License as
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
     8
 * published by the Free Software Foundation; either version 2 of the
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
     9
 * License, or (at your option) any later version.
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    10
 *
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    11
 * This program is distributed in the hope that it will be useful,
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    14
 * Lesser General Public License for more details.
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    15
 *
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    16
 * You should have received a copy of the GNU Lesser General Public
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    17
 * License along with this program; if not, write to the
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    18
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    19
 * Boston, MA 02111-1307, USA.
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    20
 */
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    21
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    22
#include <config.h>
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    23
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    24
#include <glib.h>
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    25
#include <string.h>
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    26
#include <stdlib.h>
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    27
#include <loudmouth/loudmouth.h>
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    28
#ifdef __WIN32__
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    29
#include <winsock2.h>
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    30
#endif
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    31
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    32
typedef struct {
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    33
	gchar *name;
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    34
	gchar *passwd;
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    35
} UserInfo;
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    36
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    37
static void 
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    38
free_user_info (UserInfo *info)
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    39
{
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    40
	g_free (info->name);
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    41
	g_free (info->passwd);
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    42
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    43
	g_free (info);
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    44
}
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    45
121
612603ba6d90 2005-05-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 99
diff changeset
    46
static char expected_fingerprint[20];
83
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    47
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    48
static void
121
612603ba6d90 2005-05-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 99
diff changeset
    49
print_finger (const char *fpr, unsigned int size)
83
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    50
{
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    51
	gint i;
121
612603ba6d90 2005-05-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 99
diff changeset
    52
	
612603ba6d90 2005-05-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 99
diff changeset
    53
	for (i = 0; i < size-1; i++) {
612603ba6d90 2005-05-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 99
diff changeset
    54
		g_print ("%02X:", fpr[i]);
612603ba6d90 2005-05-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 99
diff changeset
    55
	}
612603ba6d90 2005-05-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 99
diff changeset
    56
	
612603ba6d90 2005-05-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 99
diff changeset
    57
	g_print ("%02X", fpr[size-1]);
83
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    58
}
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    59
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    60
static LmSSLResponse
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    61
ssl_cb (LmSSL *ssl, LmSSLStatus status, gpointer ud)
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    62
{
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    63
	g_print ("SSL status: %d\n", status);
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    64
	switch (status) {
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    65
	case LM_SSL_STATUS_NO_CERT_FOUND:
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    66
		g_print ("No certificate found!\n");
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    67
		break;
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    68
	case LM_SSL_STATUS_UNTRUSTED_CERT:
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    69
		g_print ("Certificate is not trusted!\n"); 
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    70
		break;
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    71
	case LM_SSL_STATUS_CERT_EXPIRED:
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    72
		g_print ("Certificate has expired!\n"); 
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    73
		break;
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    74
	case LM_SSL_STATUS_CERT_NOT_ACTIVATED:
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    75
		g_print ("Certificate has not been activated!\n"); 
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    76
		break;
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    77
	case LM_SSL_STATUS_CERT_HOSTNAME_MISMATCH:
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    78
		g_print ("Certificate hostname does not match expected hostname!\n"); 
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    79
		break;
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    80
	case LM_SSL_STATUS_CERT_FINGERPRINT_MISMATCH: {
121
612603ba6d90 2005-05-17 Mikael Hallendal <micke@imendio.com>
hallski <hallski>
parents: 99
diff changeset
    81
		const char *fpr = lm_ssl_get_fingerprint (ssl);
83
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    82
		g_print ("Certificate fingerprint does not match expected fingerprint!\n"); 
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    83
		g_print ("Remote fingerprint: ");
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    84
		print_finger (fpr, 16);
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    85
		g_print ("\nExpected fingerprint: ");
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    86
		print_finger (expected_fingerprint, 16);
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    87
		g_print ("\n");
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    88
		break;
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    89
	}
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    90
	case LM_SSL_STATUS_GENERIC_ERROR:
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    91
		g_print ("Generic SSL error!\n"); 
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    92
		break;
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    93
	}
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    94
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    95
	return LM_SSL_RESPONSE_CONTINUE;
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    96
}
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    97
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    98
static void
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
    99
authentication_cb (LmConnection *connection, gboolean result, gpointer ud)
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   100
{
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   101
	g_print ("Auth: %d\n", result);
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   102
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   103
	if (result == TRUE) {
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   104
		LmMessage *m;
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   105
		
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   106
		m = lm_message_new_with_sub_type (NULL,
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   107
						  LM_MESSAGE_TYPE_PRESENCE,
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   108
						  LM_MESSAGE_SUB_TYPE_AVAILABLE);
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   109
		g_print (":: %s\n", lm_message_node_to_string (m->node));
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   110
		
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   111
		lm_connection_send (connection, m, NULL);
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   112
		lm_message_unref (m);
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   113
	}
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   114
}
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   115
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   116
static void
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   117
connection_open_cb (LmConnection *connection, gboolean result, UserInfo *info)
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   118
{
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   119
	g_print ("Connected callback\n");
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   120
	lm_connection_authenticate (connection,
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   121
				    info->name, info->passwd, "TestLM",
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   122
				    authentication_cb, NULL,FALSE,  NULL);
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   123
	g_print ("Sent auth message\n");
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   124
}
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   125
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   126
static LmHandlerResult
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   127
handle_messages (LmMessageHandler *handler,
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   128
		 LmConnection     *connection,
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   129
		 LmMessage        *m,
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   130
		 gpointer          user_data)
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   131
{
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   132
	g_print ("Incoming message from: %s\n",
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   133
		 lm_message_node_get_attribute (m->node, "from"));
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   134
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   135
	return LM_HANDLER_RESULT_REMOVE_MESSAGE;
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   136
}
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   137
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   138
int 
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   139
main (int argc, char **argv)
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   140
{
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   141
	GMainLoop        *main_loop;
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   142
	LmConnection     *connection;
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   143
	LmMessageHandler *handler;
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   144
	gboolean          result;
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   145
	UserInfo         *info;
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   146
#ifdef __WIN32__
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   147
	WORD wVersionRequested;
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   148
	WSADATA wsaData;
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   149
	int err;
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   150
#endif
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   151
	
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   152
	if (argc < 4) {
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   153
		g_print ("Usage: test-lm <server> <username> <password>\n"
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   154
			 "       test-lm <server> <username> <password> <fingerprint>\n");
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   155
		return 1;
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   156
	}
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   157
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   158
/* Needed to build on Win32. */
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   159
#ifdef __WIN32__
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   160
	wVersionRequested = MAKEWORD( 2, 2 );
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   161
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   162
	err = WSAStartup( wVersionRequested, &wsaData );
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   163
	if ( err != 0 ) {
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   164
		/* Tell the user that we could not find a usable */
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   165
		/* WinSock DLL.                                  */
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   166
		return;
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   167
	}
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   168
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   169
	/* Confirm that the WinSock DLL supports 2.2.*/
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   170
	/* Note that if the DLL supports versions greater    */
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   171
	/* than 2.2 in addition to 2.2, it will still return */
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   172
	/* 2.2 in wVersion since that is the version we      */
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   173
	/* requested.                                        */
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   174
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   175
	if ( LOBYTE( wsaData.wVersion ) != 2 ||
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   176
			HIBYTE( wsaData.wVersion ) != 2 ) {
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   177
		/* Tell the user that we could not find a usable */
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   178
		/* WinSock DLL.                                  */
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   179
		WSACleanup( );
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   180
		return;
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   181
	}
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   182
#endif
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   183
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   184
        connection = lm_connection_new (argv[1]);
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   185
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   186
	if (argc > 4 && !lm_ssl_is_supported ()) {
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   187
		g_error ("No SSL support!");
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   188
		exit (1);
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   189
	}
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   190
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   191
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   192
	handler = lm_message_handler_new (handle_messages, NULL, NULL);
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   193
	lm_connection_register_message_handler (connection, handler, 
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   194
						LM_MESSAGE_TYPE_MESSAGE, 
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   195
						LM_HANDLER_PRIORITY_NORMAL);
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   196
	
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   197
	lm_message_handler_unref (handler);
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   198
	
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   199
	info = g_new0 (UserInfo, 1);
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   200
	info->name = g_strdup (argv[2]);
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   201
	info->passwd = g_strdup (argv[3]);
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   202
	
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   203
	if (argc > 4) {
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   204
		int    i;
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   205
		char  *p;
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   206
		LmSSL *ssl;
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   207
		
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   208
		lm_connection_set_port (connection,
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   209
					LM_CONNECTION_DEFAULT_PORT_SSL);
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   210
		
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   211
		for (i = 0, p = argv[4]; *p && *(p+1); i++, p += 3)
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   212
			expected_fingerprint[i] = (unsigned char) g_ascii_strtoull (p, NULL, 16);
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   213
		
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   214
		ssl = lm_ssl_new (expected_fingerprint,
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   215
				  (LmSSLFunction) ssl_cb,
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   216
				  info, 
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   217
				  (GDestroyNotify) free_user_info);
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   218
		
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   219
		lm_connection_set_ssl (connection, ssl);
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   220
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   221
		lm_ssl_unref (ssl);
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   222
	}
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   223
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   224
	result = lm_connection_open (connection,
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   225
				     (LmResultFunction) connection_open_cb,
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   226
				     info, NULL, NULL);
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   227
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   228
	if (!result) {
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   229
		g_print ("Opening connection failed: %d\n", result);
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   230
	} else {
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   231
		g_print ("Returned from the connection_open\n");
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   232
	}
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   233
	
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   234
	main_loop = g_main_loop_new (NULL, FALSE);
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   235
	g_main_loop_run (main_loop);
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   236
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   237
	return 0;
9c89653e79a1 added files
hallski <hallski>
parents:
diff changeset
   238
}