#ifndef _GSSAPIP_EAP_H_
#define _GSSAPIP_EAP_H_ 1
+#include "config.h"
#include <assert.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <stdlib.h>
#include <time.h>
+#include <sys/param.h>
/* GSS includes */
#include <gssapi/gssapi.h>
/* Kerberos includes */
#include <krb5.h>
-/* EAP includes */
+/* EAP includes (not C++ clean) */
#ifndef __cplusplus
#include <common.h>
#include <eap_peer/eap.h>
#include <wpabuf.h>
#endif
-#include <freeradius-client.h>
+/* Workaround for FreeRADIUS not being C++ clean */
+#ifdef __cplusplus
+extern "C" {
+#define operator fr_operator
+#endif
+#include <freeradius/libradius.h>
#include <freeradius/radius.h>
+#include <radsec/radsec.h>
+#include <radsec/request.h>
+#ifdef __cplusplus
+#undef operator
+}
+#endif
+#include "gsseap_err.h"
+#include "radsec_err.h"
#include "util.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/* These name flags are informative and not actually used by anything yet */
#define NAME_FLAG_NAI 0x00000001
#define NAME_FLAG_SERVICE 0x00000002
#define CRED_FLAG_ACCEPT 0x00020000
#define CRED_FLAG_DEFAULT_IDENTITY 0x00040000
#define CRED_FLAG_PASSWORD 0x00080000
+#define CRED_FLAG_DEFAULT_CCACHE 0x00100000
#define CRED_FLAG_PUBLIC_MASK 0x0000FFFF
struct gss_cred_id_struct {
gss_OID_set mechanisms;
time_t expiryTime;
char *radiusConfigFile;
+ char *radiusConfigStanza;
#ifdef GSSEAP_ENABLE_REAUTH
krb5_ccache krbCredCache;
gss_cred_id_t krbCred;
EAP_STATE_EXTENSIONS_REQ,
EAP_STATE_EXTENSIONS_RESP,
EAP_STATE_ESTABLISHED,
+ EAP_STATE_ERROR,
#ifdef GSSEAP_ENABLE_REAUTH
EAP_STATE_KRB_REAUTH_GSS
#endif
#define CTX_FLAG_EAP_MASK 0xFFFF0000
struct gss_eap_initiator_ctx {
+ gss_cred_id_t defaultCred;
unsigned int idleWhile;
#ifndef __cplusplus
struct eap_peer_config eapPeerConfig;
};
struct gss_eap_acceptor_ctx {
- rc_handle *radHandle;
- int lastStatus;
- VALUE_PAIR *avps;
+ struct rs_context *radContext;
+ struct rs_connection *radConn;
+ char *radServer;
gss_buffer_desc state;
+ VALUE_PAIR *vps;
};
struct gss_ctx_id_struct {
#define KEY_USAGE_ACCEPTOR_SIGN 23
#define KEY_USAGE_INITIATOR_SEAL 24
#define KEY_USAGE_INITIATOR_SIGN 25
-#define KEY_USAGE_CHANNEL_BINDINGS 64
/* wrap_iov.c */
OM_uint32
unsigned char
rfc4121Flags(gss_ctx_id_t ctx, int receiving);
+/* display_status.c */
+void
+gssEapSaveStatusInfo(OM_uint32 minor, const char *format, ...);
+
+#ifdef __cplusplus
+}
+#endif
+
#endif /* _GSSAPIP_EAP_H_ */