#define SASL_SEC_PASS_CREDENTIALS 0x0020
#define SASL_SEC_MUTUAL_AUTH 0x0040
#define SASL_SEC_CHANNEL_BINDINGS 0x0080
-#define SASL_SEC_GSS_FRAMING 0x0100
-#define SASL_SEC_MAXIMUM 0x01FF
+#define SASL_SEC_MAXIMUM 0x00FF
typedef struct sasl_security_properties
{
void *gss_creds;
void *chanbindingstype;
void *chanbindingsdata;
- void *spare_ptr4;
+ struct sasl_client_plug *plug;
/* Canonicalize a user name from on-wire to internal format
* added rjs3 2001-05-23
/* This plugin allows proxying */
#define SASL_FEAT_ALLOWS_PROXY 0x0020
+/* Underlying mechanism uses GSS framing */
+#define SASL_FEAT_GSS_FRAMING 0x0040
/* client plug-in features */
#define SASL_FEAT_NEEDSERVERFQDN 0x0001
/* log message formatting routine */
typedef void sasl_logmsg_p(sasl_conn_t *conn, const char *fmt, ...);
+struct sasl_server_plug;
+
/*
* input parameters to server SASL plugin
*
void *gss_creds;
void *chanbindingstype;
void *chanbindingsdata;
- void *spare_ptr4;
+ struct sasl_server_plug *plug;
int (*spare_fptr1)();
int (*spare_fptr2)();
int chanbindingslen;
if(clientoutlen) *clientoutlen = 0;
/* do a step */
+ c_conn->cparams->plug = c_conn->mech->m.plug;
result = c_conn->mech->m.plug->mech_step(conn->context,
c_conn->cparams,
serverin,
clientout, clientoutlen,
&conn->oparams);
+ c_conn->cparams->plug = NULL;
if (result == SASL_OK) {
/* So we're done on this end, but if both
* 1. the mech does server-send-last
if(serverout) *serverout = NULL;
if(serveroutlen) *serveroutlen = 0;
+ s_conn->sparams->plug = s_conn->mech->m.plug;
ret = s_conn->mech->m.plug->mech_step(conn->context,
s_conn->sparams,
clientin,
serveroutlen,
&conn->oparams);
+ s_conn->sparams->plug = NULL;
if (ret == SASL_OK) {
ret = do_authorization(s_conn);
}
+
if (ret == SASL_OK) {
/* if we're done, we need to watch out for the following:
* 1. the mech does server-send-last