Hi!
Another request for information on your requirements for the C stub library.
First, Alberto has pointed out that "stub" can mean code that you will
directly include (cut and paste) into projects, while library of course
means the opposite. Are you after a libmoonshot shared library in its
own package, or something else?
Secondly, I don't know if you're aware but access to D-Bus from C is
generally done bound to a specific platform library - ie. GLib, Qt etc.
This is because D-Bus requires a message processing system - ie. an
event-driven main loop. If you'll be making D-Bus calls from mech_eap,
or linking to a library that does, this essentially adds a dependency on
GLib, and a requirement that a GMainLoop is running while the DBus calls
are being processed. Using libdbus directly is discouraged[1] and would
be much more work.
Attached is a draft of the API. Currently I've exposed a few GLib
primitives, but it would be possible to wrap these so that GLib is not a
dependency on Windows.
Thanks for your help
Sam
[1] http://www.freedesktop.org/wiki/Software/dbus
"Keep in mind that libdbus is a low-level library, intended to be the
backend for a language binding and with extra complexity needed to
implement dbus-daemon. You will save yourself a lot of pain if you use a
higher-level wrapper or a reimplementation."
/* libmoonshot - Moonshot client library
* Copyright (c) 2011, JANET(UK)
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* 3. Neither the name of JANET(UK) nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* Author: Sam Thursfield <[log in to unmask]>
*/
#ifndef __LIBMOONSHOT_GLIB2_H
#define __LIBMOONSHOT_GLIB2_H
#include <gio/gio.h>
#define MOONSHOT_ERROR moonshot_error_quark()
typedef enum {
MOONSHOT_ERROR_NO_IDENTITY_SELECTED,
MOONSHOT_ERROR_DBUS_ERROR,
MOONSHOT_ERROR_SERVICE_NOT_FOUND
} MoonshotError;
GQuark moonshot_error_quark (void);
void moonshot_get_identity (GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data,
const char *nai,
const char *password,
const char *service);
gboolean moonshot_get_identity_finish (GAsyncResult *result,
char **nai,
char **password,
char **server_certificate_hash,
char **ca_certificate,
char **subject_name_constraint,
char **subject_alt_name_constraint,
GError **error);
#endif
|