From 4321d72d9ba3e58e4ab05a75dc4beeb16246a392 Mon Sep 17 00:00:00 2001 From: Jeffrey Stedfast Date: Wed, 28 Feb 2001 18:16:02 +0000 Subject: Added camel-sasl*.[c,h] to the build. 2001-02-28 Jeffrey Stedfast * Makefile.am: Added camel-sasl*.[c,h] to the build. * camel-sasl.[c,h]: new "abstract" SASL class * camel-sasl-kerberos4.[c,h]: new SASL class for KERBEROS_V4 * camel-sasl-cram-md5.[c,h]: new SASL class for CRAM-MD5 * camel-sasl-plain.[c,h]: new SASL class for PLAIN * providers/imap/camel-imap-auth.c: Removed the base64 functions. * camel-mime-utils.c (base64_encode_simple): Moved here from camel-imap-auth.c (base64_decode_simple): Same. svn path=/trunk/; revision=8428 --- camel/camel-sasl.c | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 camel/camel-sasl.c (limited to 'camel/camel-sasl.c') diff --git a/camel/camel-sasl.c b/camel/camel-sasl.c new file mode 100644 index 0000000000..a5aebe737c --- /dev/null +++ b/camel/camel-sasl.c @@ -0,0 +1,87 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * Authors: Jeffrey Stedfast + * + * Copyright 2001 Ximian, Inc. (www.ximian.com) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA. + * + */ + +#include +#include "camel-sasl.h" + +static CamelObjectClass *parent_class = NULL; + +/* Returns the class for a CamelSasl */ +#define CS_CLASS(so) CAMEL_SASL_CLASS (CAMEL_OBJECT_GET_CLASS (so)) + +static GByteArray *sasl_challenge (CamelSasl *sasl, const char *token, CamelException *ex); + +static void +camel_sasl_class_init (CamelSaslClass *camel_sasl_class) +{ + parent_class = camel_type_get_global_classfuncs (CAMEL_OBJECT_TYPE); + + /* virtual method definition */ + camel_sasl_class->challenge = sasl_challenge; +} + +CamelType +camel_sasl_get_type (void) +{ + static CamelType type = CAMEL_INVALID_TYPE; + + if (type == CAMEL_INVALID_TYPE) { + type = camel_type_register (CAMEL_OBJECT_TYPE, + "CamelSasl", + sizeof (CamelSasl), + sizeof (CamelSaslClass), + (CamelObjectClassInitFunc) camel_sasl_class_init, + NULL, + NULL, + NULL ); + } + + return type; +} + + +static GByteArray * +sasl_challenge (CamelSasl *sasl, const char *token, CamelException *ex) +{ + g_warning ("sasl_challenge: Using default implementation!"); + return NULL; +} + +/** + * camel_sasl_challenge: + * @sasl: a sasl object + * @token: a token + * @ex: exception + * + * Generate the next sasl challenge to send to the server. + * + * Return value: a string containing the base64 encoded sasl challenge + * or NULL on either an error or if the negotiation is complete. If an + * error has occured, @ex will also be set. + **/ +GByteArray * +camel_sasl_challenge (CamelSasl *sasl, const char *token, CamelException *ex) +{ + g_return_val_if_fail (CAMEL_IS_SASL (sasl), NULL); + + return CS_CLASS (sasl)->challenge (sasl, token, ex); +} -- cgit v1.2.3